본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

Portfolio

sbrain 수행내용 정리 - 전략·작성·검증-1 회고

 

 

 

전략 작성 검증 agent는 따로따로 개발해서 붙일 수 있는것이 아니었다. 
이 3 에이전트는 서로 밀접한 관련이 있으며 동시에, 함께 개발해야했다. 

전략·작성·검증-1의 실행 순서, 함수별 입력·출력, 프롬프트 구성, 근거 보존, 검증·채점·재작성 흐름을 상세히 정리함.
갱신일: 2026-10-14.





처음으로 했던 작업을 기억한다. 
로고를 만드는 일이었다. 
우리의 마지막 추억이 되는 만큼 ai에게 맡기거나 대충 만들고 싶지않아 path로 직접 그렸었다 .




























기존 로고가 brain이 2개로 시너지를 낸다면
팀은 좀더 본질적인 brain 1가 되지않을까

팀 로고도 따로 만들었다 .









사업계획서 파트를 맡았으니 사업계획서에 대한 자료 리서치를 도맡았다 .
이때 꽤 많은 시간을 투자했고 분석에 공을 들였다. 
이해를 하지 못하면 개발을 결국 회귀하기 때문이다. 

돌이켜보면 이때 시간을 많이쓰고 분석을 많이 한 덕분에 회귀는 단 한번도 하지않았다. 
오히려 개발은 하루만에 끝이 났고, 
ai가 만들어내는 사업계획서를 검토하며 검증해 더 잘 만들라며 채찍질하는데 시간을 많이 들였다.

밑에서도 언급될테지만 아래는 전략/작성/검증1의 워크플로우이다 .

문서 유형 결정 (documentType / kind — 신청자 유형 기준)
  → 파이프라인 진입·Task 등록 (bootstrap.build_app / bind_partner_sw — 오케스트레이션 구현)
  → 오케스트레이터 구성 (sbrain_flow.py + catalog.py — 오케스트레이션 구현)
      1. 실행 계약·입력 준비
         → 1.1 실행 계약 로드 (execution_contract.json)
              ├─ 함수별 입력·출력 계약과 기본 모델
              ├─ 실행 설정 사본·Task 모델·purposeModels
              └─ FormSpec의 항목 번호·화면 제목·종류·태그
         → 1.2 입력 구성·정규화 (inputs.py)
              ├─ 아이디어·산출물·기술분야·사용자 목표 고객
              ├─ 대표·팀원 역량, 수익모델, 사업비·일정 행
              └─ 일반현황 원본 사실: 창업아이템명·팀구성현황
         → 1.3 실행 제약 구성 (strategy_limits)
              ├─ deadline·supportLimit·featureList
              └─ 협약기간 / 협약 이후 로드맵, 예비창업 1·2단계 사업비
      2. 조사 자료 준비: 사이트별 수집·검색 경로
         → 2.1 기준 자료 구축·선택적 갱신
              ├─ KIET 시장 자료·개발지식·디자인 트렌드 자료
              └─ 선택적 실행별 KIET 검색 (SBRAIN_KIET_SEARCH)
         → 2.2 파이프라인 실행 시 검색·전달
              ├─ F01 자료 조회·조건부 해석
              └─ 시장·경쟁·개발 근거 조회와 sourceRef 연결
      3. F01~F15 공통 전략 실행
         → 3.1 실행 흐름과 함수 목록
              ├─ T-S1: F01 → F02 → F05~F09 → F13~F15
              ├─ T-S2: F03 → F04 → F10~F12
              └─ 3.1.1 기능정의서 v1.10 Task ID와 F 함수 대응
         → 3.2 F01~F15 프롬프트 구성
              ├─ 공통 JSON·사실성·문체 규칙
              ├─ 함수별 반환 필드·판단 규칙
              └─ T-C3 작업 지시 + 사용자 payload + tools.llm
         → 3.3 F01~F15 결과 구조와 근거 보존
              ├─ 3.3.1 canonical 데이터 계보: 생성·참조·사용 경로
              └─ 3.3.2 항목별 sourceKeys 선별·작성·검증 전달
         → 3.4 F16~F18 작성·결과·근거 보존 (작성 단계 상세 설명)
              ├─ 3.4.1 F16 프롬프트 지시 구성·F17 표·F18 이미지 작성
              │    ├─ 3.4.1.1 F16 본문 생성 (T-W1, 항목 동시 최대 4)
              │    ├─ 3.4.1.2 F17 표 생성 (T-W3, Python)
              │    ├─ 3.4.1.3 F18 이미지 명세 생성 (T-W2, 동시 최대 2)
              │    └─ 3.4.1.4 F16~F18 작성 단계 내부 실패·재시도
              ├─ 3.4.2 F16~F18 결과 구조와 생성 산출물 보존
              └─ 3.4.3 작성 데이터 계보: sourceKeys 선별·작성·검증 전달
      4. 작성 항목 연결 (FormSpec + execution_contract.json)
         ├─ 항목별 functionId·title·displayTitle·rules·sourceKeys
         ├─ 유형별 본문·표·이미지 항목 및 공유 근거
         └─ 재작성 묶음 → 항목 → 작성 Task 연결 (rework_map.py)
      5. 문서 유형별 작성 규칙 (writing_rules.json)
         → 5.1 항목별 F16/F17/F18 작성 및 작성 단계 재시도
              ├─ T-W1 본문 → T-W2 그림 → T-W3 표
              ├─ M-1: 본문·표 서술·표·그림 합치기
              └─ T-V1에 생성 출력과 같은 항목의 원본 근거 전달
      6. F19 검증·결과 저장·상태 분기 (T-V1, 항목 동시 최대 4)
         → 6.1 저비용 구조·계약 검사 (F19-1 · Python)
         → 6.2 원본 사실·근거·상태값 대조 (F19-2 · Python)
              ├─ issues 있음 → fail 기록, 의미 검증 호출 생략
              └─ issues 없음 → 6.3 규정·공고 자료와 유형별 기준 (F19-3 · LLM)
         → 6.4 의미 검증 결과 재분류·조정 (F19-4 · Python)
              ├─ 표·그림 존재 및 기능명 정규화 대조
              ├─ 협약기간·로드맵·작성 표 일정 대조
              └─ inputMissing / inputError 구분
         → 6.5 점수 계산과 공식 배점 구분 (F19-5 · Python)
              ├─ 6.5.1 rubric 평가 항목과 유형별 가중치
              ├─ 6.5.2 점수 계산 순서와 기본 감점
              ├─ 6.5.3 감점 간격을 둔 이유
              ├─ 6.5.4 공고 평가영역과 내부 점수의 관계
              └─ 6.5.5 별도 제약 감점과 문서층 환산
         → 6.6 최종 상태와 회귀 재작성 연결 (F19-6 · Python)
         → 6.7 판정 저장과 후속 경로 분기 (Python)
              ├─ pass / warning → 항목 판정·점수 저장
              ├─ fail → 7.1 서버의 항목별 재수행·재검증
              │    ├─ 본문·그림: 대상 작성 Task → M-1 → 대상 T-V1
              │    ├─ 표: 대상 T-V1 재검증
              │    └─ 한도 뒤 fail 표: T-W3 설명문 대체 → M-1, fail 유지
              └─ G-02a 문서 평가 판정 → 사용자 평가 확인
                   ├─ 묶음 재작성 → 7.2 사용자 선택 항목 재작성·재검증
                   └─ 다음 단계 → 후속 제작·산출물 검증·검수 → 8. 결과 통합
      7. F19 fail 회귀 재작성·재검증
         → 7.1 검증 실패 항목 재수행 (항목마다·사이클마다 기본 1회)
         → 7.2 사용자 묶음 재작성 (묶음마다 기본 1회)
              ├─ 고른 묶음의 targetItems 계산
              ├─ F01~F15 전략 결과·사용자 원본 재사용
              ├─ 대상 F16/F17/F18 재작성, 나머지 base 결과 유지
              └─ 대상 F19 재검증·점수 갱신·G-02a/G-02b 판정
         → 7.3 재작성 후 연결과 이력
              ├─ 문서 평가·종합 평가 구간별 후속 실행
              └─ 새 산출물 버전·피드백·비교·되돌리기
         → 7.4 항목 병렬 처리·재개·실패 우선순위
              ├─ 동시 처리 상한·양식 순서·항목별 호출 기록
              └─ 완료 partial 재사용·실패 종류별 전달
      8. 계획서 합치기·결과 통합 및 저장 (M-1 / T-C4)
         ├─ PlanDoc 본문·표·그림 구성과 산출물 버전 보존
         ├─ 후속 산출물·점수 보고서·미달 항목 통합
         └─ 웹 계획서 파일 내려받기·실행/호출/재작성 이력

문서 목차 전용
  ├─ 오케스트레이터 공통 운영
  │    └─ 실행 상태·부분 결과 보존
  ├─ 실행 순서 요약 (목차 1~8단계)
  ├─ 참고 자료: F19 검증 기준 파일
  ├─ 부록 A. API 연동 명세 (백엔드·협업자 공유용)
  │    ├─ A.1 UI ↔ 웹 백엔드
  │    ├─ A.2 UI 동작과 실행 요청 대응
  │    └─ A.3 외부 API
  ├─ 부록 B. 구현 실패 사례·개선 계획·성과 측정
       ├─ B.1 확인된 실패 사례와 적용한 개선
       ├─ B.2 개선 계획과 검증 방법
       ├─ B.3 task·항목별 성과 측정 기록
       └─ B.4 발표용 단계별 이슈·트러블슈팅
            ├─ B.4.1 전략: 조사·사용자 입력·근거 전달
            ├─ B.4.2 작성: 본문·표·그림·재작성
            └─ B.4.3 검증-1: 판정·오탐·채점·복구
  └─ 부록 C. 함수별 구현·검토 대장
       ├─ C.1 구현 구조와 역할
       ├─ C.2 모듈별 함수 정의 (21개 모듈·217개 정의)
       ├─ C.3 개발 결과와 검증 근거
       └─ C.4 발표·성과 보고용 지표 요약






여러 단계와 함수들이 얽히고, 사업계획서의 각 항목들이 얽혔다. 
개발하면서 내가 헷갈려하거나 잘못 오해할 수 있을 거란 가능성을 염두에 뒀고 더불어 문제는 복잡한 만큼 남에게 설명할때 시간과 노력이 배가 드는게 문제였다. 
간결하게 설명하기가 힘들어질 것이다.
위 flow를 개발하면서 하나하나 이해하고 연결해가며 실수를 하지않도록 노력함과 동시에 
팀원들에게 어떻게 말해야 내가 수행한것을 쉽게 이해시킬 수 있을까를 고민하며 개발했다.  










사업계획서는
총 예비, 재도전, 초기창업으로 크게 나뉘었고 
예비창업패키지의 경우 기본형, 특화형으로 한번 더 나뉘었다. 






각 예비(기본, 특화), 재도전, 초기창업, (정부지원이없는)기본 총 4개의 카테고리로 나뉘어
공식 공고자료와 사업계획서 양식, 또 각 검증1에 사용될만한 공식 자료를 찾아 헤맸고 
1주일 지난뒤, 이에 적합한 자료를 모두 세팅할 수 있었다.







공고 및 사업계획서 양식을 보아 docs혹은 hwp혹은 둘다를 지원해야한다고 web팀에게 알렸다. 




위 공고와 양식 외 세부관리기분 및 질의응답또 추출하여 전체공유했다. 
각 사업계획서의 문항과 조건를 살핀뒤 web에 지속적으로 검토요청을 거듭했다.
현재도 이미 경우의 수가 많아 구현에 제한을 두는게 필요했기 때문이다. 
특히 재도전의 경우 폐업한 이력 및 그 이유 및 재도전의 포부를 밝혀야하는등 개인정보와 밀접한 내용이 많아 더욱 고려대상이 되었다. 





공식적으로 오픈된 '사업계획서 좋은 예시'를 서치중 찾게되어 마찬가지로 전체 공유했다. 
이는 정부사업이 아닐경우 기본 사업계획서의 바탕이 되었다. 












우선 작업전에 사업계획서 3개를 분석했다 .
각 항목은 어떻게 나뉘는지, 어디서 back 데이터가 들어오고 어디 항목과 서로 연관되어있는지 명확히 이해하고 기록해놔야 한다고 생각했다 .




또 각 agent가 어떻게 밀접하게 서로 통신할것인지 
또 검증할때는 크래딧을 쓰지않아도 되는 경우 어떻게 저비용 검증 및 python 코드를 사용할것인지도 생각해봤다. 







크롤링한 데이터와 각 항목이 어떻게 연결이 되고 근거로 사용되는지와
각 사업계획서가 무엇을 중점으로 보고있는지를 파악했고
이에 따라 함수를 나누어 관리하기로했다. 
10개는 적고, 30개는 많이 세분화할 수 있었다. 
2주 내에 구현할 수 있는 범위하면 20개 함수정도라면 완성도가 높지않을까?
각 항목별로 사용될 모델도 정의했다 . 덜 똑똑한 모델이 충분히 소화할 수 있는 항목에서는 크래딧을 절약하는 것이다 .










우선 주요 flow를 세팅한뒤 back에 예시 data를 요청했다.
형식은 json 형태로 sample을 만들어 형식을 맞춰달라고 요청했다. 








3 에이전트 모두가 돈이 드는 agent인 만큼 한정된 자원 300$에서의 8할을 내가 소비할 것이란 생각이 들었다. 
개발하는 중, 테스트하는중에도 불필요한 크래딧을 낭비하지않도록 처음부터 부분 테스트가 가능하도록, 부분검증이 가능하도록 부분 작성이 가능하도록 함수를 만들어 세팅해 주의했다. 







위 방법으로 신중하게 개발하고, 
정말 문제가 없을것같을때 전체 테스트를 수행했고 이때는 전략, 작성, 검증1이 모두 돌았다.
당연하게도 전체를 돌릴때 fail되는 경우가 있었고 다시 위방법으로 회귀하며
무한 테스트 및 개발을 수행했다. 
 175회가 넘어서자 안정적인 사업계획서를 만들 수 있었다. 






수행하며 추가적으로 필요하기에 중단 버튼도 만들어 사용했다. 
네트워크가 불안정하거나 몇번 안됬지만 잘못눌렀거나 등
차라리 내 돈이면 덜했을테지만 공용자원인만큼 테스트가 계속되는 만큼 사소한 실수에서의 소비되는 금적자원이 아쉬웠다. 










특히 이미지의 경우 단순한 컬러 변경이나 구조변경은 새로 작성하기위해 별다른 agent가 돌 필요가 없을 수 있었다 .
이 경우를 대비해 이미지만 재작성 기능도 만들어 수행해갔다. 

 

 

 

 

 

 

 

 

 

검증 또한 마찬가지다 .

작성보다 검증이 더욱 까다로웠다. 

일반, 예비창업, 초기창업으로 나뉘어지고, 

사업계획서 각 항목마다로 또 나뉘어져

경우의 수가 무한대로 늘어났기때문이다. 

 

 

 

 

 

 

 

 

 

 

혼자 개발하는 것이아니고 주요기능인 만큼 back이나 front에도 간간히 개발이 채 완료되지않았을때 또한 결과물을 제공해야했다 

성공적인 json 데이터가 나올때마다 빠르게 잘 공유할 수 있도록 다운로드 및 복사 기능도 추가해 수행했다. 

 

 

 

 

 

 

 

 

 

사업계획서는 단순이 경우의 수를 따져 각 항목만을 잘 작성해서 끝나는 것이 아니었다. 

재작성의 경우

각 부분들은 사업계획서에서의 다른 항목과 연관되며 한곳만 수정되서는 안되고 다른곳도 함께 수정되어야하는 경우가 빈번했다. 

이를 미리 신경써 기록해놨고 이 기록을 기반으로 신경써 재작성되도록 했다 .

 

 

 

 

 

 

 

 

 

 

 

개인적인 회고는 여기까지하고, 상세히 개발한 내용을 보고하겠다 .

참고로 작성 agent의 페르소나에 '사업계획서문체'가 있다. 

보고 또한 사업계획서 문체로 해보자. 해당 내용은 md파일로 작성해 팀원들에게 모두 공유되었따 .

 

 

 

 

 

 

 

 

 

 

전략·작성·검증-1의 함수, 프롬프트, 실행 계약과 자체 파이프라인을 개발함.

서비스에서는 제공한 기능을 오케스트레이션 담당자가 Task로 연동하여 사용함.

서비스 연결 구조와 운영 상세는 부록 D에 모아 둠.

 

 

 

전략 개발

  • F01~F15를 구성해 조사 자료, 아이템 분석, 시장·경쟁 분석, 개발 목표·방법·계획, 사업화·BM·성장전략, 자원·사업비·일정 분석을 연결함.
  • KIET 시장 자료와 개발지식·디자인 자료를 준비하고, 키워드 기반 조회·출처 참조·근거 선별을 통해 분석에 필요한 자료를 전달함.
  • 원본 사실과 생성 계획값을 구분하고, canonical 결과·provenance·sourceRefs를 통해 작성과 검증에서 같은 근거를 사용하도록 구성함.
  • 사용자 산업 키워드에 대한 추가 수집·자료 갱신과 실행별 KIET 검색 연결 기반을 개발함.

 

작성 개발

  • F16 본문, F17 표, F18 그림 명세를 분리하고 문서 유형·항목별 sourceKeys와 작성 규칙을 적용함.
  • 일반·예비창업·초기창업 양식의 항목 계약을 구성하고, 항목별 분량·필수 내용·표 컬럼·이미지 명세를 정의함.
  • 사업비·일정 원본의 단계와 협약기간/로드맵 범위를 보존하고, 표 데이터와 본문 서술을 구분함.
  • 생성 응답을 정규화하고 표·그림 구조를 검사하며, 표 대체 사유·안내와 피드백 기반 재작성에 필요한 로직을 제공함.
  • 흐름도·서비스 구조도 명세와 시험용 SVG 그리기를 구현함.

 

검증-1 개발

  • F19를 구조·계약 검사→원본 사실·근거 대조→규정·공고 기반 의미 검증→판정 보정→채점 순서로 구성함.
  • 표·그림 누락 오탐과 기능명·날짜·금액 표현 차이를 보정하고, 확정 사실 위반과 제안·확인 필요 사항을 구분함.
  • 협약기간·개발 종료월·지원금 상한 위반을 구조화된 입력 오류 코드로 반환하여 서비스가 후속 조치를 판단할 수 있도록 함.
  • 유형별 평가 rubric과 감점 기준을 구성하고, 판정·근거·정책·감점 사유를 함께 보존하는 채점 로직을 개발함.

 

자체 파이프라인과 수정 대응

run_pipeline·normalize_back_input으로 입력과 실행을 구성하고, impact_plan·retry_sections로 영향 항목과 재작성 대상을 처리함. assemble_document·aggregate_scores로 작성 결과와 점수를 조립함. 서비스 연결 과정에서 입력 오류 코드·표 대체 안내·검색 연결 등 수정 요청에 필요한 원본 기능과 수정안을 제공함.

 

 

 

 


 

부록 B. 발표용 이슈·트러블슈팅

B.1 전략 — 조사와 근거 전달

이슈 해결 개발 결과
산업별 분석에 필요한 조사 근거가 부족함 KIET 키워드 수집·확장·자료 선별과 로컬 근거 조회를 구성함 출처가 연결된 시장·경쟁 분석 입력 확보
전략 결과의 출처와 원본을 후속 작성에서 확인하기 어려움 canonical·provenance·sourceRefs와 항목별 sourceKeys를 구성함 전략→작성→검증의 근거 추적
사용자 사실과 생성 계획값이 혼동됨 provided·proposed·needs_confirmation 상태를 구분함 원본 사실 보존과 제안값 검토 기준 확보

조사·전략 분석 함수와 근거 추적 구조를 개발해 작성과 검증이 동일한 원본·출처를 활용하도록 구성함.

 

 

B.2 작성 — 양식과 생성 결과 정합성

이슈 해결 개발 결과
문서 유형마다 항목·분량·필수 내용이 다름 실행 계약·writing_rules와 항목별 sourceKeys를 적용함 유형별 일관된 작성 기준
표 원본과 본문 설명이 뒤섞임 F17 표 데이터와 서술을 분리하고 단계 미지정 원본 행을 보존함 원본 의미를 유지한 표 작성
그림 응답 구조가 불안정함 F18 노드 수·문자열 계약과 이미지 정규화를 구성함 검증 가능한 흐름도·구조도 명세
생성 결과가 양식 제목이나 구조와 충돌함 본문·표·이미지 출력 정규화와 항목 계약 검사를 구성함 후속 검증에 사용할 일정한 출력 구조

본문·표·그림 생성과 유형별 계약을 분리하고, 원본과 출력 구조를 보존하는 작성 기능을 개발함.

 

 

B.3 검증-1 — 오탐과 판정·채점

이슈 해결 개발 결과
존재하는 표·그림을 누락으로 판정함 실제 구조와 의미 검증 결과를 대조해 판정을 보정함 구조상 존재하는 산출물의 누락 오탐 처리
기능명·월·금액의 표현 차이를 오류로 판단함 기능 토큰·동의어·날짜·단위를 정규화함 표현 차이와 실제 위반 구분
협약 이후 로드맵을 기간 위반으로 감점함 협약기간과 로드맵을 구분하고 위반 코드로 감점함 일정 제약의 적용 범위 명확화
입력 오류와 생성 오류의 후속 조치가 혼동됨 입력 오류를 inputErrorCodes로 반환함 서비스가 수정 원인과 재작성 대상을 구분할 수 있는 판정 제공
생성 계획을 확정 사실 위반으로 처리함 사실 상태와 hard/advisory 기준을 적용함 fail·warning의 근거 있는 분류
점수 산정 이유를 설명하기 어려움 rubric·구조화 감점·판정 및 근거 식별자를 보존함 검증 결과와 감점 사유를 추적하는 채점

구조·사실·의미 검증을 분리하고 오탐 보정·입력 오류 코드·설명 가능한 채점 체계를 개발함.

서비스 재시도·재개·병렬 처리·파일 연결·문서층 환산 관련 사례는 부록 D에 정리함.




 

 

 



부록 C. 함수별 구현·검토 대장

직접 개발한 원본 함수·도구를 모듈별로 정리함.

서비스 어댑터와 전체 패키지 검토 규모는 부록 D에 기록함.

 

 

 

 

C.1 직접 개발 구성

구성 개발 내용
F01~F15 조사·아이템·시장·경쟁·개발·사업화 전략 분석
F16~F18 항목별 본문·표·그림 명세 생성과 출력 정규화
F19·scoring 구조·사실·의미 검증, 판정 보정과 감점·채점
작성·검증 기준 프롬프트·항목 계약·sourceKeys·유형별 규칙·평가 기준
조사 자료 시장 크롤러·개발지식·디자인 자료·검색 및 수집 계보
자체 실행 도구 run_pipeline·normalize_back_input·impact_plan·retry_sections·assemble_document·aggregate_scores

서비스에서 활용하는 원본 함수의 위치를 아래에 기록함. 서비스 어댑터 목록은 부록 D에 분리함.

 

 

C.2 모듈별 함수 정의

C.2.1 agent_strategy/functions/gpt_functions.py — 함수 정의 15개

코드: agent_strategy/functions/gpt_functions.py

함수·메서드·내부 함수 역할 정의 줄
_pending 함수명으로 F번호 계약을 찾아 request_json 호출 11
analyze_item F02 아이템 기능·목표 고객·산출물·차별성 요청 16
analyze_market F03 시장 필요성·동향·개발 필요성 요청 18
analyze_competitors F04 기업/제품·관계·근거·신뢰도 요청 20
analyze_team_capability F05 대표·팀원 역량과 gaps 요청 22
define_development_goal F06 목표·핵심기술·KPI 요청 24
define_development_method F07 기술별 방법·확보·아키텍처 요청 26
create_development_plan F08 기간·단계·산출물 요청 28
create_production_plan F09 제품화·양산 단계 요청 30
create_marketing_strategy F10 초기·성숙 시장 전략 요청 32
create_business_model F11 고객·수익·채널·제공 수익모델 요청 34
create_growth_strategy F12 경쟁·진입·BM·투자·사회적 가치 요청 36
create_resource_plan F13 장비·채용·협력기관 요청 38
generate_section F16 항목 본문·근거·규칙 요청 40
generate_image_spec F18 flowType별 그림 명세 요청 42
C.2.2 agent_strategy/functions/python_functions.py — 함수 정의 6개

코드: agent_strategy/functions/python_functions.py

함수·메서드·내부 함수 역할 정의 줄
collect_web_data F01 자료 검색·근거 보존·조건부 모델 해석 8
calculate_budget F14 항목·부담금 합계 계산 후 설명 요청 16
create_schedule F15 원본 일정 행 구성 후 설명 요청 23
generate_table F17 원본 표 복사·규칙 서술문 구성 28
validate_section F19 전용 validation_1에 위임 41
assemble_document 단독 실행의 본문·표·이미지 document 묶기 45
C.2.3 agent_strategy/runtime/llm_runtime.py — 함수 정의 9개

코드: agent_strategy/runtime/llm_runtime.py

함수·메서드·내부 함수 역할 정의 줄
_validation_rubric_text 검증 rubric 텍스트 구성 14
_validation_reference_text 유형별 검증 참고 자료·규정 발췌 합성 19
_validation_reference_text.relevant_excerpt JSON 규정 중 관련 핵심 기준 발췌 32
_validation_reference_text.relevant_excerpt.walk 중첩 규정 값을 경로와 함께 순회 36
model_config F번호별 실행 계약 사본 조회 91
writing_prompt 유형 규칙·템플릿·공통 참고 발췌 합성·캐시 98
request_json 공통/함수별 지시·payload 직렬화·호출 연결 116
_parse_response JSON 정리·필수 필드·F16/F18/F19 계약 검사 148
compact 의미 필드를 유지하며 실행 메타 제거 192
C.2.4 agent_strategy/runtime/market_crawler.py — 함수 정의 28개

코드: agent_strategy/runtime/market_crawler.py

함수·메서드·내부 함수 역할 정의 줄
auto_research_enabled 사전/단독 자료 자동 갱신 설정 조회 65
clean_text 공백·HTML 텍스트 정리 70
save_json 사전 자료 JSON 파일 저장 74
load_json 사전 자료 JSON 읽기·기본값 79
fetch_page_text 기준 페이지 HTTP 조회·본문 추출 85
fetch_pdf_text 기준 PDF HTTP 조회·텍스트 추출 91
build_keyword_list 기준 공고/PDF 분야 확인·산업/사용자 키워드 목록 100
keyword_terms 산업 검색 핵심 토큰·불용어·AI 표기 정리 130
query_variants 사용자 키워드 조합·동의어 검색어 최대 8개 141
matched_terms 동의어를 포함한 본문 토큰 일치 164
is_relevant_result 제목·SummaryPop의 핵심어 적합성 판정 173
keyword_rows 산업·사용자 키워드 행 목록·중복 제거 181
parse_meta 검색 결과 유형·작성자·날짜·제목 추출 197
parse_open_summary SummaryPop 호출 인자 추출 204
html_text SummaryPop HTML 본문 정리 211
fetch_summary 요약 endpoint 요청·결과/본문 검사 216
parse_kiet_result 검색 결과·요약 본문·URL·메타 결합 228
crawl_keyword_collection 연구/동향 컬렉션 검색·SummaryPop·적합성 선별 247
crawl_keyword 검색어 변형·연구/동향 결과 병합·URL 중복 제거 272
crawl_kiet 사전 키워드 전체 조회·산업별 결과 저장 293
kiet_by_keyword 키워드별 수집 결과 색인 305
evidence 시장 보고서용 근거 필드 구성 309
target_phrase 산업/사용자 키워드의 보고서 주제 문구 313
build_section 시장 필요성·동향·경쟁·차별화 절 구성 317
build_market_report 사전 수집 결과의 시장 보고서 구성·저장 335
add_keyword 파일 갱신 잠금 안에서 키워드 추가 실행 353
_add_keyword 해당 사용자 키워드 결과·보고서·이력 upsert 360
main 사전 자료 init/crawl/report/add/all CLI 실행 461
C.2.5 agent_strategy/runtime/pipeline.py — 함수 정의 31개

코드: agent_strategy/runtime/pipeline.py

함수·메서드·내부 함수 역할 정의 줄
_strip_section_heading 생성 본문의 반복 항목 번호·제목 줄 제거 17
_normalize_section_output 상위 출처 보완·원본보다 강한 표현 교정 33
_normalize_image_output 요청 flowType 맞춤·nodes 계약 검사 50
refresh_user_industry_research 단독 실행의 명시적 사용자 산업 자료 갱신 63
select_path 점 경로 canonical 값 조회·메타 정리 86
_annotate_status 기능·KPI·단계 기간의 사실 상태 부여 93
_annotate_status.mark 기술 객체의 제공/제안/확인 상태 설정 102
_provenance 전략 값의 출처·근거·원본 사실 추출 131
_writing_criteria 항목 공고·양식 기준과 관련/제외 발췌 구성 138
section_source sourceKeys·원본·전략 provenance·조사 근거 연결 177
section_source.gather 선별 값의 상위 sourceRefs 재귀 수집 192
_won 원화 표기에서 숫자 값 추출 210
_month 월 문자열 정규화 217
_period_months 원본 일정 행의 최초·최종 월 추출 223
_pre_startup_budget_phases 예비창업 단계별 항목·총액·정부지원 합계 230
normalize_back_input 단독 실행의 유형별 back JSON 정규화 245
table_arguments 원본 표·항목 열·서술 규칙·보조 입력 구성 295
_table_fallback_text 원본 표 행을 설명문으로 변환 341
_is_agreement_duration_failure 단독 실행의 협약기간 한도 실패 식별 352
_attach_provenance 전략 함수 입력의 출처·근거·원본 사실 부착 358
_attach_provenance.walk 중첩 입력의 sourceRef·sources 수집 363
_reconcile_validation 저장 구조와 충돌하는 표/그림/기능 판정 보정 382
_remove_roadmap_deadline_warnings 협약 이후 로드맵의 일정 오탐 경고 조정 408
_check_agreement_table_overrun 초기 개발계획 표와 원본 협약 종료월 대조 421
_check_agreement_table_overrun.months 표·원본 행의 월 목록 추출 431
run_pipeline 단독 실행 전략·작성·검증·조립 순서 444
run_pipeline.call 단독 실행 함수 호출·provenance·결과 추적 468
impact_plan 단독 실행의 sourceKeys 공유 항목 관계 계산 608
_retry_context 단독 재작성의 canonical·근거 복원 655
retry_sections 단독 실행 선택·연관 항목 재작성·재검증 687
retry_sections.call 단독 재작성 함수 호출·근거·trace 연결 704
C.2.6 agent_strategy/runtime/research_context.py — 함수 정의 6개

코드: agent_strategy/runtime/research_context.py

함수·메서드·내부 함수 역할 정의 줄
terms 검색어 토큰·불용어 정리 27
_records 자료 JSON 레코드·pointer 순회 31
_index 출처·제목·본문·URL·해시 검색 색인 구축 43
refresh_market_sources 명시 갱신 후 파일 목록·검색 색인 재구축 65
retrieve 검색 도구 호출로 로컬 검색 연결 74
_retrieve 별칭·가중치 랭킹·발췌·중복 제거·문자 한도 80
C.2.7 agent_validation_1/scoring.py — 함수 정의 6개

코드: agent_validation_1/scoring.py

함수·메서드·내부 함수 역할 정의 줄
_count 목록/값 개수 정리 부품 29
_flatten_text 중첩 콘텐츠를 평가용 텍스트로 구성 32
_month 월을 비교 가능한 정수로 변환 39
_source_evidence 평가 기준 파일의 관련 발췌·가용성 구성 44
score_section 원점수·성분·가중치·감점·기준·평가 해시 계산 76
aggregate_scores 단독 실행 항목 점수 평균·최저·fail 목록 집계 200
C.2.8 agent_validation_1/semantic_review.py — 함수 정의 1개

코드: agent_validation_1/semantic_review.py

함수·메서드·내부 함수 역할 정의 줄
review_issues 필수 오류·보완 의견의 규칙 재분류·중복 제거 16
C.2.9 agent_validation_1/validation_1.py — 함수 정의 16개

코드: agent_validation_1/validation_1.py

함수·메서드·내부 함수 역할 정의 줄
_at 점 경로·배열 인덱스 원본 조회 25
_fact_at 평탄화된 자원 fact를 원본 경로에 재연결 33
_refs 중첩 근거 sourceRef 순회 50
_status_values 중첩 제공/제안/확인 상태 순회 58
_as_list 선택적 JSON 컬렉션을 목록으로 정리 68
_string_set 유효 문자열·수치 컬렉션 정규화 74
_unique_messages 진단 문구 공백 정리·중복 제거 77
_confirmation_items 사용자 확인이 필요한 경고 추출 85
_regulation_evidence 규정 키워드 발췌·관련도·권위·용도 기록 88
_feature_key 기능명 괄호·구분점·공백 정규화 130
_feature_tokens 기능명 핵심 토큰 추출 134
_feature_present 동의어·핵심 토큰 기반 기능 보존 대조 137
_month_key 여러 월 표기를 동일 키로 정규화 161
_agreement_duration_months 로드맵 제외 협약기간 개월 수 계산 167
validate_section 구조·원본·제약·출처·금액·의미 검증과 정책 해시 187
validate_section.table_has_content 구조화 표의 행·미지정 원본 내용 확인 224

 

 

 

 

 

 

 

C.3 개발 결과와 검증 근거

개발 결과 확보한 동작 구현 근거
전략 분석 체계 F01~F15의 조사·개발·사업화 분석과 결과 연결 gpt_functions·python_functions·pipeline
유형별 작성 계약 일반 10·예비 25·초기 24개 항목과 본문/표/이미지 규칙 execution_contract.json·writing_rules.json
근거 추적 원본 사실·canonical·sourceKeys·sourceRefs를 작성·검증에 전달 section_source·research_context
표 원본 보존 사업비 단계·일정 범위·미지정 원본 행과 서술 구분 F17·table_arguments·표 정규화
그림 생성 기반 흐름도·구조도 명세와 노드 계약·SVG 그리기 F18·이미지 정규화·시험 서버 그리기
검증 오탐 보정 실제 표·그림·기능·날짜·금액과 판정 대조 validate_section·_reconcile_validation
입력 오류 구분 협약기간·종료월·지원금 위반 코드 반환 inputErrorCodes
설명 가능한 채점 평가 기준·상태·위반 코드 기반 감점과 근거 보존 scoring·rubric·정책 식별자
자체 재작성 영향 항목 계산·선택 항목 재작성·결과 조립 impact_plan·retry_sections·assemble_document

 

 

 

정량 지표는 아래 회귀 실행 결과와 코드·계약에서 집계한 범위를 기준으로 기록함.

처리시간 개선·토큰 절감률은 같은 조건의 전후 실행값을 사용하는 성과 측정 항목으로 관리함.

 

 

2026-10-14 회귀 검증 결과

메모리·임시 SQLite 저장소와 모의 모델·검색 응답을 사용하는 회귀 테스트 10개 파일에서 317건을 실행함.

통과 317건, 실패 0건, 오류 0건, 건너뜀 0건임.

실행 보고서 경과시간은 48.94초임. 이 시간은 해당 회귀 테스트 묶음의 경과시간으로 기록함.

결과 파일: JUnit 실행 보고서

테스트 파일 실행 건수 통과 건너뜀
test_call_failure_tools.py 57 57 0
test_general_bundles.py 12 12 0
test_kiet_search.py 3 3 0
test_partner_inputs_fix.py 37 37 0
test_partner_sw_flow.py 4 4 0
test_partner_sw_tasks.py 64 64 0
test_partner_sw_vendor.py 34 34 0
test_sw_contract_fields.py 61 61 0
test_table_fallback_reason.py 6 6 0
test_verify1_flow.py 39 39 0

 

 

실행 방식은 python -B -m pytest -o "addopts=" -p no:cacheprovider -q에 위 10개 파일과 --junitxml을 지정함. 테스트는 본문·표·그림·입력 오류·문서층 채점·묶음 재작성·재개·호출 실패 시나리오를 포함함.

 

 

 

 

C.4 발표·성과 보고용 지표

구분 개발 규모 산출 근거
기능 단계 F01~F19 함수 실행 계약·원본 함수
양식 계약 일반 10·예비 25·초기 24, 총 59개 항목 execution_contract.json
작성 종류 본문 50·표 7·이미지 항목 2 F16/F17/F18 계약
개발지식 자료 지식 항목 40개·출처 URL 36개 development_knowledge.json·source_manifest.json
디자인 자료 편집 트렌드 30개와 근거 문구 web_design_trends_2026.json

발표는 전략→작성→검증-1의 개발 내용과 부록 B의 문제·해결을 설명하고, 위 계약·자료 규모 및 C.3의 결과를 근거로 제시함. 서비스 연동 검증 결과인 317건 통과는 “개발 기능과 서비스 연동 결과를 회귀 검증했다”로 설명함.

 

 

 

 


부록 D. 서비스 연동·운영 참고

오케스트레이션 담당자가 원본 기능을 서비스 Task로 연결한 구조와 운영 상세를 모음. 본인 제공 함수·계약·수정안을 활용한 부분은 해당 설명과 함께 기록함.

 

 

 

D.1 전체 서비스 실행 흐름

문서 유형 결정 (documentType / kind — 신청자 유형 기준)
  → 파이프라인 진입·Task 등록 (bootstrap.build_app / bind_partner_sw — 오케스트레이션 구현)
  → 오케스트레이터 구성 (sbrain_flow.py + catalog.py — 오케스트레이션 구현)
      1. 실행 계약·입력 준비
         → 1.1 실행 계약 로드 (execution_contract.json)
              ├─ 함수별 입력·출력 계약과 기본 모델
              ├─ 실행 설정 사본·Task 모델·purposeModels
              └─ FormSpec의 항목 번호·화면 제목·종류·태그
         → 1.2 입력 구성·정규화 (inputs.py)
              ├─ 아이디어·산출물·기술분야·사용자 목표 고객
              ├─ 대표·팀원 역량, 수익모델, 사업비·일정 행
              └─ 일반현황 원본 사실: 창업아이템명·팀구성현황
         → 1.3 실행 제약 구성 (strategy_limits)
              ├─ deadline·supportLimit·featureList
              └─ 협약기간 / 협약 이후 로드맵, 예비창업 1·2단계 사업비
      2. 조사 자료 준비: 사이트별 수집·검색 경로
         → 2.1 기준 자료 구축·선택적 갱신
              ├─ KIET 시장 자료·개발지식·디자인 트렌드 자료
              └─ 선택적 실행별 KIET 검색 (SBRAIN_KIET_SEARCH)
         → 2.2 파이프라인 실행 시 검색·전달
              ├─ F01 자료 조회·조건부 해석
              └─ 시장·경쟁·개발 근거 조회와 sourceRef 연결
      3. F01~F15 공통 전략 실행
         → 3.1 실행 흐름과 함수 목록
              ├─ T-S1: F01 → F02 → F05~F09 → F13~F15
              ├─ T-S2: F03 → F04 → F10~F12
              └─ 3.1.1 기능정의서 v1.10 Task ID와 F 함수 대응
         → 3.2 F01~F15 프롬프트 구성
              ├─ 공통 JSON·사실성·문체 규칙
              ├─ 함수별 반환 필드·판단 규칙
              └─ T-C3 작업 지시 + 사용자 payload + tools.llm
         → 3.3 F01~F15 결과 구조와 근거 보존
              ├─ 3.3.1 canonical 데이터 계보: 생성·참조·사용 경로
              └─ 3.3.2 항목별 sourceKeys 선별·작성·검증 전달
         → 3.4 F16~F18 작성·결과·근거 보존 (작성 단계 상세 설명)
              ├─ 3.4.1 F16 프롬프트 지시 구성·F17 표·F18 이미지 작성
              │    ├─ 3.4.1.1 F16 본문 생성 (T-W1, 항목 동시 최대 4)
              │    ├─ 3.4.1.2 F17 표 생성 (T-W3, Python)
              │    ├─ 3.4.1.3 F18 이미지 명세 생성 (T-W2, 동시 최대 2)
              │    └─ 3.4.1.4 F16~F18 작성 단계 내부 실패·재시도
              ├─ 3.4.2 F16~F18 결과 구조와 생성 산출물 보존
              └─ 3.4.3 작성 데이터 계보: sourceKeys 선별·작성·검증 전달
      4. 작성 항목 연결 (FormSpec + execution_contract.json)
         ├─ 항목별 functionId·title·displayTitle·rules·sourceKeys
         ├─ 유형별 본문·표·이미지 항목 및 공유 근거
         └─ 재작성 묶음 → 항목 → 작성 Task 연결 (rework_map.py)
      5. 문서 유형별 작성 규칙 (writing_rules.json)
         → 5.1 항목별 F16/F17/F18 작성 및 작성 단계 재시도
              ├─ T-W1 본문 → T-W2 그림 → T-W3 표
              ├─ M-1: 본문·표 서술·표·그림 합치기
              └─ T-V1에 생성 출력과 같은 항목의 원본 근거 전달
      6. F19 검증·결과 저장·상태 분기 (T-V1, 항목 동시 최대 4)
         → 6.1 저비용 구조·계약 검사 (F19-1 · Python)
         → 6.2 원본 사실·근거·상태값 대조 (F19-2 · Python)
              ├─ issues 있음 → fail 기록, 의미 검증 호출 생략
              └─ issues 없음 → 6.3 규정·공고 자료와 유형별 기준 (F19-3 · LLM)
         → 6.4 의미 검증 결과 재분류·조정 (F19-4 · Python)
              ├─ 표·그림 존재 및 기능명 정규화 대조
              ├─ 협약기간·로드맵·작성 표 일정 대조
              └─ inputMissing / inputError 구분
         → 6.5 점수 계산과 공식 배점 구분 (F19-5 · Python)
              ├─ 6.5.1 rubric 평가 항목과 유형별 가중치
              ├─ 6.5.2 점수 계산 순서와 기본 감점
              ├─ 6.5.3 감점 간격을 둔 이유
              ├─ 6.5.4 공고 평가영역과 내부 점수의 관계
              └─ 6.5.5 별도 제약 감점과 문서층 환산
         → 6.6 최종 상태와 회귀 재작성 연결 (F19-6 · Python)
         → 6.7 판정 저장과 후속 경로 분기 (Python)
              ├─ pass / warning → 항목 판정·점수 저장
              ├─ fail → 7.1 서버의 항목별 재수행·재검증
              │    ├─ 본문·그림: 대상 작성 Task → M-1 → 대상 T-V1
              │    ├─ 표: 대상 T-V1 재검증
              │    └─ 한도 뒤 fail 표: T-W3 설명문 대체 → M-1, fail 유지
              └─ G-02a 문서 평가 판정 → 사용자 평가 확인
                   ├─ 묶음 재작성 → 7.2 사용자 선택 항목 재작성·재검증
                   └─ 다음 단계 → 후속 제작·산출물 검증·검수 → 8. 결과 통합
      7. F19 fail 회귀 재작성·재검증
         → 7.1 검증 실패 항목 재수행 (항목마다·사이클마다 기본 1회)
         → 7.2 사용자 묶음 재작성 (묶음마다 기본 1회)
              ├─ 고른 묶음의 targetItems 계산
              ├─ F01~F15 전략 결과·사용자 원본 재사용
              ├─ 대상 F16/F17/F18 재작성, 나머지 base 결과 유지
              └─ 대상 F19 재검증·점수 갱신·G-02a/G-02b 판정
         → 7.3 재작성 후 연결과 이력
              ├─ 문서 평가·종합 평가 구간별 후속 실행
              └─ 새 산출물 버전·피드백·비교·되돌리기
         → 7.4 항목 병렬 처리·재개·실패 우선순위
              ├─ 동시 처리 상한·양식 순서·항목별 호출 기록
              └─ 완료 partial 재사용·실패 종류별 전달
      8. 계획서 합치기·결과 통합 및 저장 (M-1 / T-C4)
         ├─ PlanDoc 본문·표·그림 구성과 산출물 버전 보존
         ├─ 후속 산출물·점수 보고서·미달 항목 통합
         └─ 웹 계획서 파일 내려받기·실행/호출/재작성 이력

문서 목차 전용
  ├─ 오케스트레이터 공통 운영
  │    └─ 실행 상태·부분 결과 보존
  ├─ 실행 순서 요약 (목차 1~8단계)
  ├─ 참고 자료: F19 검증 기준 파일
  ├─ 부록 A. API 연동 명세 (백엔드·협업자 공유용)
  │    ├─ A.1 UI ↔ 웹 백엔드
  │    ├─ A.2 UI 동작과 실행 요청 대응
  │    └─ A.3 외부 API
  ├─ 부록 B. 구현 실패 사례·개선 계획·성과 측정
       ├─ B.1 확인된 실패 사례와 적용한 개선
       ├─ B.2 개선 계획과 검증 방법
       ├─ B.3 task·항목별 성과 측정 기록
       └─ B.4 발표용 단계별 이슈·트러블슈팅
            ├─ B.4.1 전략: 조사·사용자 입력·근거 전달
            ├─ B.4.2 작성: 본문·표·그림·재작성
            └─ B.4.3 검증-1: 판정·오탐·채점·복구
  └─ 부록 C. 함수별 구현·검토 대장
       ├─ C.1 구현 구조와 역할
       ├─ C.2 모듈별 함수 정의 (21개 모듈·217개 정의)
       ├─ C.3 개발 결과와 검증 근거
       └─ C.4 발표·성과 보고용 지표 요약




 

 

 

 

파이프라인 진입·Task 등록 (bootstrap / tasks.py)

기여 구분: 오케스트레이션 독자 구현.

워커 구성과 Task 등록은 오케스트레이션 담당자가 구현함.

등록되는 전략·작성·검증-1의 기반 함수·계약은 본인이 개발함.

워커의 bootstrap.build_app이 실행 엔진과 Task 등록부를 구성하고, bind_partner_sw가 전략·작성·검증-1의 여섯 Task를 등록함. 서비스 명령이 작성 구간을 시작하면 흐름 엔진이 Task별 입력을 준비해 호출함.

웹 작성 시작 요청 → service.start_writing_for_project
  → 작성 구간 큐
  → T-C3 → T-S1 → T-S2 → T-W1 → T-W2 → T-W3 → M-1 → T-V1 → G-02a

전략·작성·검증-1의 함수는 strategy.py, writing.py, verify.py에서 Task 단위로 실행함.

pipeline.py의 근거 구성·정규화·표 입력·검증 보정 함수를 이 과정에서 재사용함.

각 Task는 입력 계약과 산출물 참조를 통해 앞 단계 결과를 전달받음.




오케스트레이터 구성 (sbrain_flow.py / catalog.py)

기여 구분: 오케스트레이션 독자 구현과 본인 개발 기반의 연동.

실행 순서·Task 입출력 연결은 오케스트레이션 담당 영역이며, 호출되는 F01~F19와 작성·검증 계약은 본인 개발 영역임. 아래 모듈 표는 전체 연동 구조를 설명함.

오케스트레이터는 실행 순서, Task별 입력·출력, 호출 설정, 산출물 버전과 재수행·재작성 흐름을 관리함. 전략·작성·검증-1 함수의 세부 처리는 전용 모듈에 위임함.

모듈 책임
sbrain/bootstrap.py 워커·호출처 구성, 실구현 Task 등록
flow/sbrain_flow.py 작성 구간·대기·재수행·재작성 순서
flow/catalog.py Task 입력·출력과 산출물 참조 연결
flow/service.py 작성 시작·사용자 선택·재작성 명령
partner_sw/strategy.py T-S1·T-S2 안에서 F01~F15 호출
partner_sw/writing.py T-W1·T-W2·T-W3의 본문·그림·표 작성
partner_sw/verify.py T-V1 검증·판정 보정·문서층 환산
partner_sw/common.py canonical·목표 항목·동시 처리·부분 결과 재사용
partner_sw/inputs.py 원본 입력·표 행·기간·제약값 구성
partner_sw/calls.py 함수 요청을 tools.llm·tools.search에 연결
agent_strategy/runtime/llm_runtime.py 프롬프트 합성·JSON 응답 계약·결과 정리
agent_strategy/runtime/pipeline.py 항목 근거·표 인자·생성 출력 정규화·검증 보정
agent_strategy/functions/python_functions.py F01·F14·F15·F17의 로컬 준비·처리
agent_strategy/functions/gpt_functions.py F02~F13·F16·F18의 LLM 요청 구성
agent_validation_1/validation_1.py F19 구조·원본·근거·의미 검증
agent_validation_1/scoring.py 항목 원점수·감점 계산
orchestrator/tools.py·trace.py 호출 재시도·시도 이력·토큰·오류 기록

모듈 경로는 agent-orchestration/sbrain/ 기준임. partner_sw 내부의 함수·자료 경로는 sbrain/agents/partner_sw/를 기준으로 읽음.



 

 

 

 

 

 

오케스트레이터 공통 운영

기여 구분: 서비스 운영 정책은 오케스트레이션 담당 구현.

함수별 근거 검색·제약·오류 판정은 본인 원본과 서비스 어댑터가 결합된 기능이며, 재시도·동시 처리·부분 결과 재개·운영 로그는 서비스 연결 구현으로 구분함.

 

 

 

흐름 엔진이 조정하는 공통 실행·복구 정책은 다음과 같음.

함수별 설명은 1~8단계에, 검증 실패 재수행과 사용자 재작성은 7단계에 정리함.

 

 

실행 제어와 재작성

  • 작성 구간 제어: T-C3 작업 분해 이후 전략·본문·그림·표·합치기·검증·판정을 순서대로 실행함. 문서 평가 확인과 사용자 재작성 선택은 대기 지점으로 관리함.
  • 부분 실행 데이터 재사용: 재작성은 기존 strategyData·marketStrategyData·원본 사실·조사 근거를 재사용함.
  • 재작성 범위 결정: rework_map.py의 묶음→항목→Task 매핑과 ReworkInput.targetItems를 사용함.
  • 동시 처리: T-W1 본문 항목은 최대 4개, T-W2 그림은 최대 2개, T-V1 항목 검증은 최대 4개를 동시에 처리하고 양식 순서로 결과를 모음.
  • 호출 재시도: tools.llm·tools.search·tools.files에서 호출 실패 정책을 적용함. 형식 오류 재시도·검증 실패 재수행·사용자 재작성은 각각 별도로 관리함.

 

조사 자료와 작성 제약

  • 선택적 KIET 검색: SBRAIN_KIET_SEARCH를 켜면 T-S1이 F01 전에 현재 산업 키워드로 KIET를 검색함. 검색 결과는 실행 메모리에서 시장 근거와 합침.
  • 로컬 자료 검색: research_context.retrieve가 미리 준비한 시장·개발·디자인 JSON의 키워드·별칭을 검색해 함수별 근거를 구성함.
  • 사실 상태 전달: _annotate_status가 적용되는 전략 결과는 provided, proposed, needs_confirmation을 구분함.
  • 유형별 제약 적용: 개발 종료월·선택 공고 상한·기능 목록을 strategy_limits로 구성하고 예비창업 사업비는 _pre_startup_budget_phases로 단계별 보존함.
  • 호출 설정 고정: 실행 시작 시 settingsSnapshot을 보존하고 그 실행의 Task 모델·목적별 모델·재시도·배점 설정을 적용함.

 

호출 실패 분류와 대기 설정

오류·호출 종류 처리
결제·사용량 한도 코드 상태 코드와 함께 제공되는 오류 코드를 확인하고 재시도 없이 소진 처리한 뒤 단계별 재개·종료 정책으로 전달
입력·운영 응답 오류 한 번 시도 후 입력/운영 오류로 종료
일시 응답 오류·시간 초과·연결 오류 늘리는 간격·무작위 지연·Retry-After를 적용해 재시도
형식 오류·파일 호출 고정 간격으로 재시도
공고 서버 검색·자격 판정 호출 backoff=False로 기본 2초 고정 간격 적용
한 호출의 대기 합 상한 도달 남은 재시도 횟수보다 상한을 우선 적용해 소진 처리

 

 

 

일시 오류의 n번째 재시도 전 대기는 retryIntervalSec × backoffMultiplier^(n−1) × (1 + 무작위[0, jitterRatio])로 계산함.

기본값은 간격 2초·배수 2·무작위 비율 0.25임.

Retry-After가 있으면 계산값과 전달값 중 큰 값을 사용하고 상한은 기본 60초임.

호출별 대기 합 기본 상한은 90초, T-C1은 45초이며 실행 설정을 따름.

 

 

ProviderError·ToolCallExhausted는 code, retry_after_sec, billing_limit을 연결함.

CallTry에는 status=N code=X 형식의 구조화된 진단을 남기고 운영 로그의 단계끝·재개예약에도 errorCode를 연결함. 요청·응답 본문은 산출물과 호출 기록의 역할에 따라 분리함.

사전 요구사항 해석 T-C1은 호출 소진 시 진입 전 상태로 돌아가 다시 시도를 안내함.

실행 건 생성 이후 전략·작성·검증-1의 일시 오류 소진은 재개 정책으로 연결함.

선택적 KIET 검색은 자체 소진 기록 후 보유 근거로 계속하는 정책을 적용함.

 

 

 

 

 

 

실행 상태·부분 결과 보존

  • 결과와 이력 추적: Task 실행은 ExecutionRecord, 호출은 CallLog, 개별 재시도는 CallTry에 기록함. 호출 목적(F번호)·모델·항목 키·시각·결과·오류 종류·토큰 사용량을 연결함.
  • 산출물 보존: strategyData, sectionOutputs, tableOutputs, diagramOutputs, planDoc, sectionResults, docScore 등을 버전 참조로 저장함. SVG는 tools.files로 넣고 FileRef로 연결함.
  • 부분 결과 보존: 일시 오류 호출 소진 시 완료한 함수·항목 결과를 partial에 싣고 재개 입력 priorResults로 이어받음. T-S1·T-S2는 F번호, 본문·검증은 항목 번호, 그림은 항목 번호와 flowType을 키로 사용함.
  • 재개 처리: 앞에서 성공한 결과를 재사용하고 빠진 호출만 다시 실행함. 자료 검색은 다시 수행함. 기본 재개 설정은 첫 간격 15분, 간격 배수 2, 최대 5회, 총 대기 상한 12시간임.
  • 오류 분류: 입력·운영 오류는 한 번만 시도하고, 일시 오류는 재시도 정책을 적용함. 결제·한도 오류는 즉시 반복 호출하지 않고 재개 대기로 처리함. 선택적 KIET 검색 실패는 기존 근거로 계속하는 경로로 처리함.
  • 버전과 되돌리기: 재수행·재작성은 새 실행 기록과 산출물 버전을 만듦. 되돌리기는 현재 포인터를 이전 버전으로 옮기고 이력은 보존함.



 

 

실행 순서 요약 (목차 1~8단계)

아래 1~8단계는 전략·작성·검증-1에서 준비하는 입력부터 결과 통합까지의 연결 순서임.

함수별 프롬프트·계보·검증 기준은 같은 번호의 상세 절에서 설명함.

 

 

  1. 실행 계약·입력 준비
    • 1.1 실행 계약 로드: 함수별 입력·출력, 양식 항목 계약, Task 모델·목적별 모델과 설정 사본을 준비함.
    • 1.2 입력 구성·정규화: 사용자·회사·프로젝트 입력에서 아이템·목표 고객·팀·수익모델·사업비·일정을 구성함.
    • 1.3 실행 제약 구성: 개발 종료월·지원금 상한·필수 기능, 협약기간과 로드맵, 단계별 사업비를 연결함.
  2. 조사 자료 준비: 사이트별 수집·검색 경로
    • 2.1 기준 자료 구축·선택적 갱신: 시장·개발·디자인 자료를 준비하고 설정에 따라 실행별 KIET 검색을 수행함.
    • 2.2 실행 시 검색·전달: 로컬 자료에서 F01 조사 자료와 시장·경쟁·개발 근거를 조회함.
  3. F01~F15 공통 전략 실행
    • 3.1 실행 흐름과 함수 목록: T-S1의 F01·F02·F05F09·F13F15 이후 T-S2의 F03·F04·F10~F12를 실행함.
    • 3.1.1 Task 대응: 전략·작성·검증-1의 역할과 후속 Task 연결을 설명함.
    • 3.2 프롬프트 구성: 공통 규칙·함수별 반환 필드·Task 작업 지시와 payload를 합성함.
    • 3.3 결과와 근거 보존: canonical·원본 사실·출처·근거·상태를 보존함.
    • 3.3.1 계보, 3.3.2 sourceKeys 전달: 결과 생성부터 후속 항목의 작성·검증 입력까지 추적함.
    • 3.4 작성 상세: F16~F18의 프롬프트·표 구성·그림 렌더링·실패 처리·출력 보존을 설명함. 실행은 아래 4·5단계 계약·규칙을 적용해 진행함.
  4. 작성 항목 연결
    • FormSpec 항목 번호·종류·제목에 실행 계약의 함수·규칙·sourceKeys를 연결함.
    • 유형별 공유 근거와 사용자 재작성 묶음의 항목 연결을 정리함.
  5. 문서 유형별 작성 규칙
    • 공통·유형별 JSON 규칙, Markdown 템플릿·persona·style guide·checklist 발췌를 적용함.
    • 5.1 작성 실행: T-W1 본문→T-W2 그림→T-W3 표→M-1 계획서 합치기로 진행함.
  6. F19 검증·결과 저장·상태 분기
    • 6.1 구조·계약 검사, 6.2 원본·근거·상태 대조를 Python으로 수행함.
    • issues가 있으면 의미 검증을 생략하고 fail을 기록함. 통과하면 6.3 규정·공고 의미 검증을 수행함.
    • 6.4 판정 보정에서 표·그림·일정 대조와 입력 없음/입력 오류 처리를 적용함.
    • 6.5 채점에서 rubric 가중치·감점을 적용하고 문서층 배점으로 환산함.
    • 6.6 상태, 6.7 저장·분기에서 항목 판정·점수를 보존하고 필요 시 7단계 재수행을 거쳐 G-02a로 연결함.
  7. F19 fail 회귀 재작성·재검증
    • 서버가 이번 생성 항목의 fail을 대상으로 본문·그림 재생성 또는 표 재검증을 수행함.
    • 한도 뒤에도 fail인 표는 설명문으로 대체하고 판정은 유지함.
    • 사용자가 고른 묶음은 목표 항목만 재작성하고 전략 결과와 나머지 항목을 이어받음.
    • 재검증·점수 갱신 뒤 G-02a/G-02b가 다음 행동과 재작성 후보를 제시함.
  8. 계획서 합치기·결과 통합 및 저장
    • M-1이 본문·그림·표를 계획서에 합치고 산출물 버전을 저장함.
    • 후속 제작·산출물 검증·검수 이후 T-C4가 계획서·프로토타입·인포그래픽·점수·미달 항목을 통합함.
    • 웹이 planDoc에서 내려받기 문서를 생성하고 실행·호출·재작성 기록을 조회함.




 

 

7. F19 fail 회귀 재작성·재검증

기여 구분: 본인 판정·재작성 기능 기반의 서비스 연동.

F19 판정과 원본 impact_plan·retry_sections는 본인 개발임.

아래 서버 횟수 관리·묶음 선택·Task 큐·재개 경로는 오케스트레이션 담당 구현이며, 본인 제공 입력 오류 코드와 수정안을 반영함.

검증 실패 재수행과 사용자 선택 묶음 재작성은 각각의 범위·횟수·입력을 사용함. 두 경로 모두 F01~F15 전략 결과와 사용자 원본 근거를 재사용함.

 

 

 

7.1 서버의 항목별 검증 실패 재수행

T-V1 직후 흐름 엔진이 이번 생성 항목에서 fail을 고름. inputMissing·inputError·이미 표를 설명문으로 대체한 항목을 제외함. 횟수는 redo.verify1RedoCount로 관리하며 기본 항목마다·사이클마다 1회임.

항목 종류 재수행 실행 전달 내용
본문 T-W1 → M-1 → T-V1 targetItems·직전 issues·previousText
그림 T-W2 → M-1 → T-V1 targetItems·직전 issues·두 flowType
표 T-V1 기존 표와 원본 근거
한도 뒤 fail 표 T-W3 대체 → M-1 fallbackItems·문제 목록·fallbackReasonCodes

재수행은 본문·그림 대상만 작성 Task로 나누고 표는 재검증함. 마지막 표 대체는 generatedText 설명과 displayReason을 남기며 판정은 fail로 유지함. 이 재수행 횟수는 사용자 묶음 재작성 기회와 별도로 관리함.

 

 

 

7.2 사용자 선택 묶음 재작성

G-02a/G-02b는 항목 판정·점수·묶음 매핑을 읽어 재작성 후보를 구성함. 해당 묶음의 fail·warning 중 입력 없음/입력 오류 항목을 제외한 문제 목록을 후보 사유로 사용함. 점수가 기준 미만이고 항목별 후보가 없으면 설정된 전체 묶음 후보를 제시함.

사용자 묶음 선택
  → rework_map.bundle_items → 항목 번호·종류
  → T-W1 / T-W2 / T-W3별 targetItems
  → 직전 결과·원본 근거·보완 지시를 연결
  → 대상 재작성, 나머지 base 결과 유지
  → M-1 → 대상 T-V1 → 필요한 항목 재수행
  → 사이클 비교·점수 갱신 → G-02a / G-02b

기본 재작성 기회는 묶음마다 1회이며 settingsSnapshot.rework.perBundle을 따름. 일반현황·개요 및 그림의 새 묶음은 GENERAL_BUNDLES_ENABLED 스위치로 관리함. 목표 밖이지만 이전 결과가 없는 항목은 생성·검증함.

F16은 직전 본문·validationFeedback·retryInstruction, F18은 architecture의 validationFeedback·retryInstruction, F17은 사용자 원본 표 행을 사용함. 원본 사실과 수익모델·목표 고객은 동일 실행 산출물에서 이어받음.

 

 

 

7.3 재작성 후 연결과 이력

화면 6 문서층 재작성은 작성 Task→M-1→T-V1→사이클 비교→G-02a로 연결함. 화면 9에서 계획서를 재작성하면 웹개발/게임은 T-B1에, 원페이지는 T-B2에 반영하고 T-V2·G-02b로 연결함.

재작성은 새 ExecutionRecord와 산출물 버전을 만들고 피드백 출처를 FeedbackLink로 연결함. 이전·이후 점수와 비교 결과를 평가 보고서에 담고, 실패한 재작성의 되돌리기와 기회 사용은 실행 엔진이 관리함. 이후 사용자는 평가를 확인해 다음 행동을 선택함.

 

 

 

7.4 항목 병렬 처리·재개·실패 우선순위

gather는 최대 동시 처리 수로 스레드 풀을 구성하고 완료 순서와 관계없이 입력 키 순서로 결과를 모음. 각 항목은 자신의 tools.for_item과 partner_call 문맥을 사용해 모델·검색·파일 기록을 분리함.

동시에 여러 실패가 있으면 일반 예외→일시가 아닌 호출 소진→일시 호출 소진 순으로 원래 예외를 전달함. 일시 호출 소진은 이번 성공 결과와 앞 재개 결과를 함께 partial로 보존함. Steps.run은 순차 전략 함수의 완료 F번호를 같은 방식으로 관리함. 읽을 수 없는 priorResults 값은 다시 생성하고 목표 밖 base 결과는 재사용함.

이 처리로 한 항목 실패 시 이미 완료한 항목을 이어받고, 생성 순서·검증 판정·산출물 버전·로그의 항목 키를 일관되게 연결함.




 

 

 

 

8. 계획서 합치기·결과 통합 및 저장 (M-1 / T-C4)

기여 구분: 오케스트레이션 담당 구현. 서비스 M-1·T-C4와 후속 제작·검수·파일 통합은 오케스트레이션 영역임.

본인은 전달되는 작성 산출물·검증 판정과 원본 assemble_document를 개발했으며, 원본 조립 함수와 서비스 M-1 구현은 구분함.

 

 

계획서 합치기 (M-1)

T-W1의 본문 계획서에 T-W2의 diagrams, T-W3의 tables·tableSections를 합침. 양식 항목 번호를 기준으로 표 서술문과 표·그림을 연결하며, 합쳐진 planDoc 버전은 T-V1의 verifiedRef로 이어짐.

T-W1.planDoc + T-W2.diagrams + T-W3.tables/tableSections
  → M-1 → planDoc@버전
  → T-V1 → sectionResults / docScore
  → G-02a → 문서 평가 보고서

 

 

후속 제작과 결과 통합 (T-C4)

문서 평가 이후 프로토타입·인포그래픽 제작, 실행 안내, 산출물층 검증·종합 판정, 문장 검수를 거쳐 T-C4가 최종 결과를 통합함. 웹개발·게임은 HTML 제작 T-B1을 사용하고, 원페이지는 T-B2 인포그래픽을 계획서에 연결함.

후속 제작은 같은 아이템 사양·목표 고객·기능 목록·계획서를 전달받음. HTML 색은 낱말·이름 규칙으로 선택하고, 인포그래픽은 사업 분야 낱말이 부족하면 사업 분야 판정(색) 호출로 테마를 선택함.

T-C4는 planDoc·prototype·infographic·scoreReport를 확인하고 Deliverable을 구성함. 필요한 산출물 누락은 E-C4-MISSING으로 처리함. 문서 fail 항목은 inputError/verifyFail로, 산출물층 결함은 필수 조건·코드 점검·대조 불가·누락/부분 기능으로 정리해 shortfallItems에 전달함. 보완 항목과 내려받기 안내를 userMessage에 구성함.

 

통합 검사·분류 처리 기준
산출물 누락 planDoc·prototype·infographic·scoreReport 없음, 계획서 항목 0개, 검증-2 점수 없음이면 E-C4-MISSING
문서층 미달 총점 통과 여부와 별도로 status=fail 항목을 inputError/verifyFail로 전달
산출물층 미달 gateFailure, codeCheck, featureMatchWithheld, missingFeature, partialFeature로 전달
파일 연결 프로토타입 진입 파일→안내 문서→자산 파일 순서, 인포그래픽 파일 별도 연결
사용자 안내 내려받기 안내, 총점 미달이면 표시 점수·기준점, 미달 항목별 이름·점수·사유

진입 파일·안내 문서 유무는 통합 누락 검사 대신 해당 산출물 판정·파일 연결로 처리함. T-C4는 LLM 없는 PLAIN_TASKS에 등록해 워커와 테스트 조립에서 같은 통합 함수를 사용함.

 

 

후속 제작·검증·검수의 호출 실패 연결

T-B2 이미지 호출과 T-V2 대조 호출은 결제·한도 소진을 대체 산출물/대조 판정으로 바꾸지 않고 재개 대기로 전달함. T-P2는 전체 문장 처리 뒤 호출 실패 비율을 확인하고 기준(기본 0.3)을 넘었을 때 운영 오류가 포함되면 실패로 처리함. 일시·한도 오류의 재개와 원문 유지 정책은 같은 실행 흐름에서 관리함.

 

 

결과 구조와 파일 연결

결과 주요 내용
planDoc sections·featureList·charts·tables·diagrams·protectedTokens
sectionResults 항목 판정·원점수·감점 사유·입력 상태·검증 버전
docScore 문서층 항목 환산점수·총점
scoreReport 문서층·산출물층·총점·기준점·재작성 후보·비교
deliverable 계획서·프로토타입/인포그래픽 파일 연결·미달 항목·안내
FileRef SVG·HTML·인포그래픽·안내 문서 등 파일 참조

 

계획서 DOCX·PDF·HWP는 웹이 planDoc에서 내려받기 파일로 생성함.

T-C4는 planDocFile을 빈 값으로 전달하고 산출물 파일 목록을 연결함.

전략·작성 단계는 양식의 항목 순서·본문/표/그림 구분·화면 제목·본문과 구조화 산출물을 문서 생성 경로에 전달함.

페이지 배치·표/그림 배치·쪽 나눔은 웹의 내려받기 문서 생성에서 구성함.

 

 

실행·호출·재작성 기록

ExecutionRecord는 Task·규칙·합치기 실행과 입력/출력 버전을, CallLog는 LLM·검색·파일 호출을, CallTry는 시도별 성공·실패·시각·오류 종류·토큰 사용량을 보존함.

항목별 tools.for_item이 본문 번호·그림 키·검증 번호를 호출에 연결함.

 

재시도는 호출 이력에, 재수행·재작성은 새 실행과 산출물 버전에 기록함.

시도별 사용량은 호출·실행에 합산하며 입력 토큰 중 캐시, 출력 토큰 중 추론 토큰도 별도 보존함.

이미지 토큰은 글 토큰과 분리하고 파일 호출은 토큰 없이 시도 결과를 기록함.

 

산출물 내용은 버전 저장소에서 관리하고 실행 기록에는 산출물 참조와 운영 요약을 남김.

현재 포인터, FeedbackLink, PointerEvent로 재작성 전후·되돌리기·최종 결과를 추적함.




 

 

부록 A. API 연동 명세 (백엔드·협업자 공유용)

기여 구분: 서비스·웹 연동 참고.

이 부록의 웹 요청 경로·버튼·서버 운영 제어는 서비스 연결 경로임.

본인의 기여는 해당 경로에서 활용하는 전략·작성·검증-1 함수와 계약 제공으로 표시함.

이 절은 UI↔웹 백엔드, 웹 명령↔오케스트레이터, 모델·자료 검색 호출의 연결을 정리함.

프로젝트 ID를 기준으로 시작·진행·재작성·결과 조회를 연결하고 문서 유형별 계약은 서비스 입력에서 결정함.

웹 API는 web/backend/app/routers/projects.py, 실행 명령은 agent-orchestration/sbrain/flow/service.py, 모델 호출은 orchestrator/openai_provider.py에서 관리함.



 

 

A.1 UI ↔ 웹 백엔드

Method 백엔드 경로 용도·처리
GET /projects/{project_id}/match-candidates 프로젝트 공고 후보·매칭 결과 조회
POST /projects/{project_id}/match-candidates/rematch 공고 재매칭 요청
POST /projects/{project_id}/plan/start 계획서 작성 구간 시작
POST /projects/{project_id}/prototype/start 문서 평가 이후 프로토타입 구간 시작
GET /projects/{project_id}/status 진행 상태·현재 단계 조회
GET /projects/{project_id}/result 생성 결과 조회
POST /projects/{project_id}/retry-task 작업·묶음 재실행 요청
GET /projects/{project_id}/plan-document.docx 계획서 DOCX 생성·내려받기
GET /projects/{project_id}/plan-document.pdf 계획서 PDF 생성·내려받기
GET /projects/{project_id}/plan-document.hwp 계획서 HWP 생성·내려받기

 

위 경로는 백엔드 라우터 기준이며 실제 배포 주소·프록시 경로는 웹 설정을 따름.

인증·소유권 확인·요청 본문·응답 모델은 각 라우터에서 관리함.

Agent 실행에 필요한 입력·현재 산출물 참조·설정 사본은 서비스 계층에서 연결함.

 

시작 요청과 진행 조회

작성 시작은 프로젝트 입력·선택 공고·자격 판정·작업 계획을 연결해 작성 구간을 실행함. 진행 조회는 실행 상태와 현재 단계를, 결과 조회는 계획서·산출물·평가 정보를 제공함. 문서 내려받기는 planDoc 항목·표·그림을 웹 문서 생성 경로로 전달함.



 

 

 

A.2 UI 동작과 실행 요청 대응

사용자 동작 실행 연결 범위·결과
공고 후보 확인·다시 매칭 후보 조회·rematch API 공고 선택에 필요한 후보·추천 근거
계획서 작성 시작 plan/start → start_writing_for_project T-C3→T-S1→T-S2→T-W1→T-W2→T-W3→M-1→T-V1→G-02a
진행 상태 확인 status API 실행 단계·진행 상태·대기 지점
계획서 평가 확인 result 및 서비스 화면 조회 문서층 점수·항목 판정·입력 안내·재작성 후보
묶음 재작성 선택 retry-task 및 request_rework_for_project 고른 묶음 항목만 작성·검증·점수 갱신
프로토타입 제작 진행 prototype/start HTML/인포그래픽 제작·안내·T-V2·G-02b
재작성 결과 확인 서비스 rework_result·결과 조회 이전/이후 비교·사용 기회·현재 산출물
계획서 내려받기 plan-document 경로 DOCX·PDF·HWP 문서 생성
작업 중단 서비스 abort_project 실행 상태와 보존 정책에 따라 중단 처리

 

문서층 재작성 범위

서버는 선택 묶음의 항목을 FormSpec과 rework_map에서 찾고 T-W1·T-W2·T-W3별 targetItems로 구성함.

F01~F15 결과와 원본 사실은 재사용하고 직전 본문·검증 문제·보완 지시를 전달함.

대상 밖 본문·표·그림·판정은 base 출력으로 이어받음.

 

검증 실패 재수행

T-V1 이후 fail 항목의 재수행은 서버 흐름에서 수행함.

본문·그림 재생성과 표 재검증의 기본 한도는 항목마다·사이클마다 1회임.

사용자 묶음 재작성 기회는 별도이며 기본 묶음마다 1회임.

 

평가·기회·이력 표시

G-02a/G-02b의 ScoreReport는 점수·기준점·후보·남은 기회·안내·비교 결과를 제공함. ExecutionRecord·FeedbackLink·PointerEvent는 재작성 실행과 산출물 버전 연결을 보존함.

사용자 화면은 이 서버 결과를 기준으로 현재 문서와 재작성 선택지를 표시함.



A.3 외부 API

서비스 Method URL 호출 위치·용도
OpenAI 함수 실행 POST https://api.openai.com/v1/chat/completions OpenAIProvider가 전략·작성·의미 검증 메시지를 전달
KIET 검색 GET https://www.kiet.re.kr/searchAll 선택적 실행별 시장 검색·사전 자료 수집
KIET 상세 요약 POST https://www.kiet.re.kr/getSearchEtt 검색 결과 SummaryPop 본문 조회

 

함수별 모델은 settingsSnapshot의 Task 설정과 purposeModels에서 결정함.

F01은 자료가 있을 때 해석 호출을 추가하고 F19는 기본 검사를 통과한 항목에 의미 검증을 수행함.

F14·F15는 로컬 준비 결과를 모델 설명에 전달함.

 

F17·M-1·G-02a·G-02b·T-C4는 Python 규칙 처리임.

F18은 JSON 그림 명세를 모델로 생성한 뒤 SVG 렌더링·저장을 수행함.

LLM·검색·파일 호출은 tools의 재시도·시간 제한·기록 경로를 거침.

 

 

 

기준 자료 출처

중기부 공고·관리기준·양식·FAQ는 검증 JSON으로, 개발지식·Figma 디자인 트렌드는 자료 JSON으로 준비해 런타임 검색·검증에 연결함.

실행별 KIET 검색은 SBRAIN_KIET_SEARCH 스위치로 관리하고 새 결과를 현재 실행의 시장 근거와 합침.

C.2.21 writing.py — 함수 정의 12개

코드: writing.py

함수·메서드·내부 함수 역할 정의 줄
run_tw1 본문 대상 선택·동시 생성·문장·계획서 구성 56
run_tw1.previous_text 직전 출력/계획서의 대상 본문 조회 71
run_tw1.one 항목 근거·규칙·모델 요청·후처리 77
run_tw2 두 그림 대상 선택·명세 생성·파일/DiagramSpec 구성 116
run_tw2.has_base 직전 명세와 두 flowType 결과 존재 확인 125
run_tw2.one 대상 flowType의 근거·피드백·명세 요청 135
_cell 표 셀 빈 값 확인 필요 표기 171
_table_spec 출력 표를 TableSpec headers·rows로 구성 177
_table_problems 필수 표/컬럼·행 길이 구조 검사 187
table_display_reason 사유 코드 우선순위로 사용자 안내 선택 203
_fallback 표 제거·설명문·진단/코드/사용자 안내 보존 219
run_tw3 원본 표 생성·구조 검사·항목별 대체·base 결과 병합 231
C.2.20 verify.py — 함수 정의 6개

코드: verify.py

함수·메서드·내부 함수 역할 정의 줄
doc_layer_max 실행 입력 문서층 만점·기본값 선택 54
input_error fail 판정의 구조화된 입력 오류 코드 검사 58
_input_missing 입력 확인 warning·issues 정리 68
_early_unassigned_budget 초기 사업비의 보존된 미지정 행 판정 보정 78
run_tv1 대상 항목 병렬 검증·채점·판정 병합·문서층 환산 91
run_tv1.one 항목 출력/근거 대조·판정 보정·SectionResult 구성 114
C.2.19 tasks.py — 함수 정의 1개

코드: tasks.py

함수·메서드·내부 함수 역할 정의 줄
bind_partner_sw 여섯 전략·작성·검증-1 Task 실구현 등록 17
C.2.18 strategy.py — 함수 정의 4개

코드: strategy.py

함수·메서드·내부 함수 역할 정의 줄
_call 전략 함수 실행 후 상위 provenance 연결 41
run_ts1 F01·F02·F05F09·F13F15 실행·전략 원본·근거·기능 확정 49
run_ts1.budget F14 계산·설명·예비 단계별 예산 묶기 125
run_ts2 F03·F04·F10~F12 실행·시장전략·수치 토큰 구성 161
C.2.17 resources.py — 함수 정의 5개

코드: resources.py

함수·메서드·내부 함수 역할 정의 줄
_rel 허용 자료 폴더 기준 경로 정규화 33
_load JSON·Markdown 자료 초기 로드·BOM 처리 42
exists 자료 캐시 존재 조회 60
read 자료 캐시 읽기·고정 오류 처리 66
refresh 명시적으로 갱신한 자료 캐시 반영 74
C.2.16 outputs.py — 함수 정의 8개

코드: outputs.py

함수·메서드·내부 함수 역할 정의 줄
sentences 줄·문장 구분과 항목 기반 문장 ID 생성 33
text_of 사전·목록의 의미 값을 표시용 요약으로 구성 50
name_of 기능·경쟁사 객체의 이름 추출 65
names 이름 목록 구성·중복 제거·순서 유지 75
requirement_analysis F02 결과를 RequirementAnalysis에 매핑 83
market_analysis F03·F04·F12를 MarketAnalysis에 매핑 94
_strings 근거·운영 메타를 제외한 의미 문자열 순회 103
numeric_tokens 수치+단위 추출·공백 정리·중복 개수 집계 115
C.2.15 market_research.py — 함수 정의 7개

코드: market_research.py

함수·메서드·내부 함수 역할 정의 줄
set_kiet_search 워커 프로세스 검색 스위치 설정 33
kiet_search_enabled 검색 스위치 조회 39
_DeadlineSession.__init__ 검색 전체 종료시각 설정 51
_DeadlineSession.request 남은 전체 예산으로 개별 요청 timeout 제한 55
search_keyword 실행별 KIET 조회·실패 정규화·세션 종료 67
_normalize 크롤러 결과를 제한된 시장 근거·해시 참조로 구성 90
merge_market_evidence 새/로컬 근거 병합·중복/문자/건수 한도 112
C.2.14 inputs.py — 함수 정의 24개

코드: inputs.py

함수·메서드·내부 함수 역할 정의 줄
document_type 신청자 유형을 예비/초기 계약에 매핑 47
_month 월 텍스트 해석·유효 월 확인 53
dev_months 개발기간 시작·종료월 분리 60
duration_months 시작·종료월을 포함한 개월 수 계산 68
user_target_customer 사용자 목표 고객 공백 정리·빈 값 처리 78
project_body 아이디어·산출물·기술분야·목표 고객 구성 83
revenue_items 서비스명·단가의 사용자 원본 목록 구성 90
team_input 대표·팀원 역할과 역량/경력 구성 95
is_general_status 문서 유형별 일반현황 항목 식별 106
general_status_facts 창업아이템명·팀구성현황 원본 사실 구성 111
with_general_status_facts 일반현황 근거에 동일 원본 사실 병합 130
_resource 없음 상태와 자원 목록 구분 141
resource_input 채용·장비·협력·현물 자원 구성 148
budget_rows F14 계산용 금액 행·합계 입력 정규화 158
_schedule_row 일정 원본 표 한글 열·빈 값 표기 178
schedule_rows 협약·로드맵 범위별 일정 행 구성 184
_won 표 금액 콤마·원 단위·확인 필요 표기 198
_budget_table_row 유형별 원본 사업비 표 행 구성 202
table_data 예비 단계 표·초기 통합 표·일정 원본 분리 216
_suffix 항목 번호의 유형 접두사 제외 233
table_source_rows 표 항목에 해당하는 사용자 원본 행 선택 237
is_budget_table 사업비 표 항목 식별 249
missing_inputs 빈 원본·예비 단계 미지정 입력 확인 항목 선택 253
strategy_limits 개발 종료월·공고 상한·기능 목록·일정 범위 구성 268
C.2.13 diagram_svg.py — 함수 정의 4개

코드: diagram_svg.py

함수·메서드·내부 함수 역할 정의 줄
_safe_color 허용 색상 표현 검사·기본색 선택 22
_card_text_color 카드 명도 대비로 흰색/짙은 글자 선택 29
_card_text_color.luminance sRGB 선형화·상대 명도 계산 42
render 명세를 카드·화살표·제목·고지 SVG 바이트로 렌더링 54
C.2.12 contract.py — 함수 정의 3개

코드: contract.py

함수·메서드·내부 함수 역할 정의 줄
_json 모듈 초기화에서 JSON 계약 파일 읽기·해석 19
document_specs 문서 유형별 항목 계약을 사본으로 조회 34
section_criteria 항목 criteria 문자열·목록 정리 39
C.2.11 common.py — 함수 정의 19개

코드: common.py

함수·메서드·내부 함수 역할 정의 줄
form_items 양식 항목 번호·제목·태그·종류를 순서대로 구성 36
section_specs 유형별 항목 계약 사본에 문서 유형 추가 49
spec_for 항목 계약 조회·깊은 복사·없는 계약 예외 58
compact_prompt_source 성장전략 중복 근거 사본을 줄이는 모델 입력 구성 65
kind_of 전략 문서 유형 우선 조회·신청자 유형 대체 91
canonical_of 전략·시장전략 결과를 깊은 복사로 병합 100
original_of 원본 사실과 확정 featureList 제약 구성 108
research_of sourceRef·domain이 있는 조사 근거 선별 121
targets_of 재작성 목표 항목과 문제 목록 조회 129
retry_instruction 사용자 재작성 보완 지시 추출 133
made_items 목표 항목 또는 base 결과가 없는 항목 선택 140
pick 서비스 산출물에 필요한 필드 선택·기본값·깊은 복사 145
encode 부분 결과 JSON 직렬화 153
decode 부분 결과 JSON 해석·유효하지 않은 값 처리 157
received_from 현재 키에 해당하는 성공한 재개 결과 복원 167
Steps.__init__ 순차 함수의 prior·완료 결과 보관 180
Steps.run 성공한 함수 재사용·새 결과 보존·일시 소진 partial 연결 184
failure 동시 실패의 우선순위 선택·일시 partial 연결 202
gather 동시 개수 제한·키 순서 결과 모으기·실패 전달 216
C.2.10 calls.py — 함수 정의 6개

코드: calls.py

함수·메서드·내부 함수 역할 정의 줄
partner_call Task 도구·작업 지시를 ContextVar에 연결하고 종료 후 이전 문맥 복원 54
current_call 현재 호출 문맥 확인 64
submit 문맥 사본을 스레드 작업에 전달 72
build_messages 공통 규칙·격리된 작업 지시·사용자 JSON 메시지 구성 77
search 자료 검색을 tools.search로 연결 86
send_json F번호별 JSON 호출·parse 검사를 tools.llm에 연결 94

 

 

 

 

 

 


 

D.5 서비스 연동 트러블슈팅과 검증 근거

 

 

B.4.1 전략 — 조사·사용자 입력·근거 전달

이슈·문제 상황 원인·설계 쟁점 해결 방식 결과·검증 근거
산업 키워드에 맞는 근거가 부족하거나 KIET 조회가 실패함 로컬 자료만으로 새 주제를 다루기 어렵고 외부 조회 실패가 전략 전체를 중단시킬 수 있음 실행별 KIET 검색·키워드 확장·적합성 선별, 검색 예산·재시도 제한, 소진 후 기존 근거 활용 최신 조회 근거를 실행에 연결하면서 실패 시 전략을 계속함. test_kiet_failure_is_retried_twice_then_ts1_continues·test_kiet_no_result_and_partial_failure_are_success 기여: 본인 크롤러·SB-360 검색 연결 제공 / 서비스 스위치·실패·재시도 보완은 오케스트레이션
사용자 목표 고객과 모델이 분석한 목표 고객이 달라짐 생성된 아이템 사양이 사용자 입력보다 우선되면 후속 시장·사업화 분석의 고객이 달라짐 T-C1·F02 결과를 사용자 값으로 맞추고 원본 target_customer를 F10·F11에 전달 공고·전략·작성·후속 제작에서 같은 고객을 사용함. test_partner_inputs_fix.py 기여: 본인 분석 함수 활용 / T-C1·입력·F02 결과 보정은 서비스 연결
제공한 서비스명·단가가 BM·성장전략에서 바뀌거나 누락됨 수익모델이 생성 과정에서 일반적인 가정으로 바뀔 수 있음 revenueItems를 F11·F12와 성장전략 원본 근거에 한정해 전달하고 보존 규칙 적용 사용자 수익모델을 관련 항목에 연결함. test_revenue_items_are_sent_only_to_business_model_and_growth_sections 기여: 본인 F11·F12·근거 계약 기반 / 전달 보완은 서비스 연결
전략 근거가 중복되어 프롬프트가 커짐 성장전략에 상위 원본·조사 근거가 중첩 복사되고 동일 자료가 반복 검색됨 검색 해시 중복 제거·건수/문자 예산, compact_prompt_source로 중복 provenance 사본 축소 핵심 요약·facts·sourceRefs·최상위 원본을 유지하면서 중복 입력을 정리함. test_prompt_source_compacts_only_growth_strategy_provenance 기여: 본인 검색·근거 구성 기반 / compact_prompt_source는 연결 구현
빈 기능 목록 또는 명시적 '없음' 입력을 처리해야 함 미입력·사용자 선택·모델 생성 결과가 서로 다른 의미를 가짐 빈 F02 기능은 itemSpec.coreFeatures 승계·자체 검사 기록, 자원 '없음'은 no_* 상태로 전달 후속 기능 목록과 자원 원본 상태를 유지함. test_ts1_empty_core_features_inherits_item_spec_in_same_attempt 및 입력 구성 함수 기여: 본인 분석·원본 상태 기반 / 기능 승계·no_* 입력 변환은 연결 구현

 

조사·전략 분석 함수와 근거 추적 구조, KIET 수집·검색 기반을 개발하고, 오케스트레이션 담당자가 사용자 입력 보존과 서비스 검색·복구 경로를 연동함.

 

 

 

 

B.4.2 작성 — 본문·표·그림·재작성

이슈·문제 상황 원인·설계 쟁점 해결 방식 결과·검증 근거
모델 응답이 비거나 JSON이 잘림 생성 완료 여부와 유효한 항목 본문 반환은 별도 확인이 필요함 F16 generatedText·필수 배열·JSON 계약 검사, 길이 한도 잘림을 형식 오류로 처리·재시도 유효한 작성 출력만 후속 단계에 전달하고 실패 시 완료 결과를 보존함. 응답 파서·호출 실패 회귀 기여: 본인 응답 파서·출력 계약 기반 / 서비스 재시도·partial 보존은 연결 구현
본문에 작성 지시·항목 제목이 반복됨 title의 작성 지시와 displayTitle의 화면 제목이 다른 역할을 가짐 화면 제목/작성 지시 분리, _strip_section_heading으로 번호·제목 반복 정리 양식 제목과 본문 내용을 분리해 PlanSection으로 구성함. 실행 계약·T-W1 출력 검사 기여: 본인 작성 계약·정규화 기반 / PlanSection 변환은 연결 구현
원본 표·표 서술·검증 실패 안내가 뒤섞임 구조화된 표와 본문 설명, 진단 사유와 사용자 안내가 서로 다른 용도임 F17 Python 표/서술 분리, fallbackReason·코드·displayReason 분리, 구조 실패 또는 재검증 한도 후 설명문 대체 원본 행을 보존하고 표 대체 이유를 코드 기반으로 안내함. test_f17_generated_text_is_narrative_only_and_preserves_unassigned_rows·test_table_fallback_reason.py 기여: 본인 F17·대체 안내 기반 / T-W3 코드·표 대체 연결은 연동 보완
단계 미지정 사업비가 잘못 배분되거나 로드맵 일정이 빠짐 예비 1·2단계, 초기 통합 사업비, 협약/로드맵의 서로 다른 양식 구조 유형별 table_data·table_arguments 적용, unassignedOriginalRows 보존, 전체 일정에 두 범위 연결 입력의 단계·일정 의미를 유지하고 필요한 입력 확인을 안내함. 단계/원본 표 구성 회귀 기여: 본인 표 인자·단계 보존 규칙 기반 / 서비스 원본 행 구성은 연결 구현
밝은 카드의 글자가 잘 보이지 않거나 그림 비율이 깨짐 모델이 선택한 배경색과 고정 글자색의 대비, 문서 내 SVG 크기 해석 카드 상대 명도로 글자색 선택, SVG 캔버스 비율·텍스트 escape·파일 참조 구성, 스텁 SVG 크기 지정 밝은/어두운 카드와 문서용 SVG 구조를 확인함. test_f18_svg_uses_contrasting_text_for_bright_and_dark_cards·test_file_fields.py 기여: 본인 F18·SVG 그리기 기반 / 대비·스텁 크기·FileRef 보완은 연결 구현
한 항목 수정으로 전체 문서를 다시 생성하게 됨 재작성 대상과 유지할 결과·근거가 명확히 분리되어야 함 targetItems·base 출력·직전 본문·피드백 연결, 성공한 partial 결과 재사용 선택한 항목만 갱신하고 나머지 결과를 이어받음. test_tw1_rebuilds_only_target_items_with_feedback·test_tw1_resume_calls_only_missing_items 기여: 본인 항목별 작성·재작성 기반 / targetItems·base·partial 제어는 연결 구현

 

유형별 본문·표·그림 명세 생성 함수와 출력 계약·원본 보존·재작성 기반을 개발하고, 오케스트레이션 담당자가 파일 저장과 대상 항목·재개 제어를 서비스에 연결함.

 

 

 

 

 

B.4.3 검증-1 — 판정·오탐·채점·복구

이슈·문제 상황 원인·설계 쟁점 해결 방식 결과·검증 근거
존재하는 표·두 그림이 누락으로 판정됨 의미 검증의 진단 문구와 실제 저장 구조가 충돌함 Python 구조 검사 후 _reconcile_validation으로 표 컬럼·그림 flowType과 대조 구조상 존재하는 산출물에 대한 누락 진단을 보정함. 구조화 표 검증·판정 보정 회귀 기여: 본인 _reconcile_validation·출력 계약 개발 / 서비스 검증 연결
기능명·날짜·단위 표현 차이를 오류로 판정함 괄호·구분자·동의어·월 표기·행 순서 차이가 실제 누락과 다름 기능 핵심 토큰·동의어·월·금액 정규화, 기능 검사는 해당 개발 항목에 적용 표현 차이와 필수 기능 누락을 구분함. 기능/기간 검증 함수·원본 제약 회귀 기여: 본인 검증·정규화 함수 개발
생성 오류와 사용자 입력 오류가 같은 재작성 대상으로 처리됨 협약기간·개발 종료월·지원금 상한 위반은 입력 원인과 작성 원인을 구별해야 함 구조화된 inputErrorCodes→inputError, 빈 입력은 inputMissing warning, 입력 오류 항목을 재수행·표 대체 대상에서 제외 생성 재수행은 고칠 수 있는 항목에 적용하고 입력 문제는 안내함. test_input_error_items_are_not_redone_or_replaced·test_input_missing_items_are_not_input_errors 기여: 본인 inputErrorCodes 제공 / inputError 변환·재수행 제외는 연결 구현
협약 이후 로드맵이 일정 초과로 감점됨 협약기간 제약을 전체 사업 로드맵 날짜에 적용하면 오탐 발생 agreement/roadmap 분리, 원본 협약기간 대조, 감점은 구조화된 위반 코드에 적용 협약 일정 위반과 유효한 로드맵을 구분함. 협약기간·종료월·감점 키 회귀 기여: 본인 기간·코드 기반 검증 및 채점 개발 / 서비스 일정 전달
제안 계획이 확정 사실 오류와 같은 fail로 판정됨 계획서 생성값은 제공 사실·완료 실적과 다른 상태로 검토해야 함 provided/confirmed 대조, proposed/needs_confirmation·계획 표현 검사, hard/advisory 분류 확정 사실 위반은 fail로 유지하고 제안·보완은 warning으로 정리함. validate_section·review_issues 기여: 본인 사실 상태·hard/advisory 검증 개발
원점수와 문서층 점수가 혼동되거나 합계가 어긋남 항목 0~100 원점수와 전체 문서층 배점의 척도가 다름 D/N 환산·항목 반올림·Decimal 합산, verifiedRef·정책·감점 사유 연결 항목 점수 합과 총점·검증 버전을 일치시킴. test_score_items_sum_to_total·test_plan_doc_ref_is_verified_ref 기여: 본인 원점수·감점·검증 근거 기반 / D/N·Decimal 서비스 환산은 연결 구현
fail 재수행에서 표 대체·후속 제작 순서가 꼬임 본문·그림 재생성, 표 재검증, 사용자 재작성이 다른 복구 경로임 항목별·사이클별 횟수 관리, 작성→M-1→대상 검증, 마지막 표 대체 후 fail 유지 재수행·재작성·후속 제작의 순서를 확인함. test_first_writing_redoes_only_failed_items_then_replaces_failed_table·test_screen9_document_rework_puts_verify1_redo_before_html 기여: 본인 판정·입력 오류 수정안 기반 / 횟수·큐·M-1·후속 순서는 오케스트레이션

구조·사실·의미 검증, 오탐 보정, 입력 오류 코드와 설명 가능한 채점 체계를 개발하고, 오케스트레이션 담당자가 판정을 서비스 점수·재수행 흐름에 연결함.

 

관련 10개 테스트 파일의 회귀 실행은 317건 모두 통과함.

단계별 표의 근거는 이 실행과 구현 코드에 연결되며, 상세 파일별 건수와 결과 보고서는 C.3에 기록함.

 

 

 

 

 


D.6 전체 서비스 연동 성과표

 

 

C.3 개발 결과와 검증 근거

아래는 본인 개발과 서비스 연동이 결합된 결과임.

개발 결과 구현으로 확보한 동작 검증 근거
사용자 입력 보존 목표 고객·수익모델·일반현황·팀 원본의 단계별 전달 test_partner_inputs_fix·test_revenue_items_are_sent_only_to_business_model_and_growth_sections 기여: 본인 입력·근거 계약 기반 / 사용자 값 전달·보정은 서비스 연결
유형별 작성 계약 일반 10·예비 25·초기 24개 활성 항목과 F16/F17/F18 분리 test_chain_calls_partner_functions_and_fills_contracts 기여: 본인 직접 개발 / 서비스 Task·FormSpec 연결
사실·제안 구분 원본 확정값·계획값·확인값의 상태·출처 대조 validate_section·review_issues 및 원본 입력 오류 회귀 기여: 본인 직접 개발 / 판정 산출물 연결
표 구조·대체 안내 원본 표·서술·사유 코드·사용자 안내의 분리 test_f17_generated_text_is_narrative_only_and_preserves_unassigned_rows·test_table_fallback_reason 기여: 본인 F17·대체 안내 기반 / 서비스 코드·표 대체 보완
읽기 쉬운 그림 두 그림 명세·SVG·카드 대비·제목·FileRef test_f18_svg_uses_contrasting_text_for_bright_and_dark_cards·test_diagrams_are_svg_files_in_tools_files 기여: 본인 F18·SVG 기반 / 제목·대비·FileRef 연결 보완
프롬프트 문맥 제어 근거 건수·문자 예산·성장전략 중복 provenance 축소 test_prompt_source_compacts_only_growth_strategy_provenance 기여: 본인 검색·근거 구성 기반 / compact 문맥은 연결 구현
필요한 항목만 재작성 targetItems·base 출력·검증 판정 이어받기 test_tw1_rebuilds_only_target_items_with_feedback·test_tv1_reverifies_only_targets_and_keeps_base_results 기여: 본인 항목별 재작성 기반 / targetItems·base 서비스 구현
완료 결과 재사용 함수/항목별 partial·priorResults 복원 test_ts1_resume_continues_after_received_functions·test_tw1_resume_calls_only_missing_items 기여: 서비스 연결 담당의 partial·priorResults 구현
병렬 처리 제어 본문/검증 4·그림 2의 상한·양식 순서·실패 우선순위 test_gather_runs_at_most_workers_at_once·test_concurrent_failure_order_prefers_non_exhausted_error 기여: 서비스 연결 담당 구현
점수 설명 가능성 구조화 감점·입력 오류·원점수/문서층 구분·항목 합계 test_score_items_sum_to_total·test_input_error_keeps_partner_status_issues_and_score 기여: 본인 검증·감점 개발 / 서비스 배점·합계 환산 구현
호출·내용 분리 산출물 내용과 모델/오류/토큰 운영 기록의 분리 test_llm_requests_carry_no_forbidden_values·test_call_logs_and_errors_carry_no_content 기여: 서비스 호출·로그 연결 담당 구현
조사 실패 복구 KIET 스위치·전체 검색 제한·재시도 소진 후 로컬 근거 활용 test_kiet_failure_is_retried_twice_then_ts1_continues·test_kiet_no_result_and_partial_failure_are_success 기여: 본인 크롤러·검색 연결 제공 / 서비스 스위치·소진 처리 보완

 

 

 

 


D.7 전체 연동·검토 규모

 

 

 

C.4 발표·성과 보고용 지표 요약

 

개인 개발 규모: F01~F19·양식/출력 계약·조사 자료·원본 작성/검증 함수.

서비스 연동 규모: 여섯 Task·두 그림의 서비스 파일 연결·동시 처리 상한.

전체 검토·검증 규모: 217개 정의와 317건 회귀 테스트. 전체 검토 함수 수와 연동 테스트 건수는 개인이 모두 작성한 함수·테스트 수로 제시하지 않고, 제공 기능과 연동 결과의 확인 범위로 제시함.

구분 확인된 구성·결과 산출 근거
실행 단위 전략 2·작성 3·검증-1 1, 총 6개 Task tasks.py의 IMPLEMENTED
기능 단계 F01~F19의 조사·전략·작성·검증 역할 함수 실행 계약·Task별 호출
양식 계약 일반 10·예비 25·초기 24, 총 59개 활성 항목 execution_contract.json
작성 종류 본문 50·표 7·이미지 항목 2 유형별 활성 F16/F17/F18 계약
서비스 그림 이미지 항목별 흐름도·구조도 두 명세 T-W2의 FLOWS·DiagramSpec
개발지식 자료 지식 항목 40개·수집 출처 URL 36개 development_knowledge.json·source_manifest.json
디자인 자료 편집 트렌드 30개와 근거 문구 web_design_trends_2026.json
검토 코드 Python 파일 27개, 함수 정의 모듈 21개, 정의 217개 코드 AST·C.2 개별 위치
동시 처리 본문 4·그림 2·항목 검증 4의 상한 common.py 상수·동시 처리 회귀
회귀 검증 관련 10개 파일·317건 통과 C.3의 JUnit 실행 보고서

 

 

 

개인 개발 성과는 조사·전략·작성·검증 함수, 근거 추적, 유형별 출력 계약, 규칙·의미 검증 분리, 원본 재작성·채점 로직을 중심으로 설명함.

사용자 값의 서비스 전달·partial 재개·파일 저장·문서층 환산·실행 이력은 본인 기능을 활용한 연동 성과로 설명하고 연결 담당자의 구현을 함께 표시함.

위 항목 수는 문서 유형 전체의 계약 규모이며 한 실행에서는 해당 양식의 항목을 사용함. 함수 정의 수는 담당자 함수·연결 코드·자료 구축·단독 실행 부품을 포함한 검토 규모로 기록함.

 

전략→작성→검증-1 순서로 개발한 처리와 B.4의 대표 문제·해결을 설명한 뒤, 위 지표와 317건 회귀 결과를 근거로 제시함.

문서 앞부분·부록 B·C.3~C.4를 사용하고, 서비스 동작 상세와 연동 사례는 부록 D를 참고함.

 

 

 

 

 

 

 

D.8 함수·계약과 서비스 적용 상세

원본 함수의 상세 계약·프롬프트·크롤링 출처·검증 기준과 서비스 적용 경로를 함께 보존한 기술 참고 자료임. 직접 개발 함수는 부록 C, 발표용 설명은 문서 앞부분과 부록 B를 사용함.

 

 

 

 

 

 

 

 

 

문서 유형 선택 (documentType / kind)

신청자 유형을 기준으로 작성 계약의 documentType / kind를 결정함. inputs.document_type은 예비창업자를 pre_startup, 그 밖의 신청자 유형을 early_startup으로 매핑함. 작성·검증에서는 strategyData.document_type에 보존한 값을 사용함.

kind 문서 유형 적용
general 일반 사업계획서 공통 함수·양식 계약으로 관리
pre_startup 예비창업패키지 예비창업자 입력
early_startup 초기창업패키지 초기창업 계약에 해당하는 입력

문서 유형은 입력 구성, 항목 계약, 작성 규칙, 사업비·일정 및 검증 기준 전반에 적용됨. 웹개발·게임·원페이지의 서비스 카테고리는 후속 제작 방식을 정하는 값으로 별도 관리함.




 

 

 

1. 실행 계약·입력 준비

 

1.1 실행 계약 로드 (execution_contract.json)

llm_runtime.py와 연결 계약 모듈은 실행에 필요한 execution_contract.json을 읽음.

함수별 입력·출력 구조, 기본 모델과 general, pre_startup, early_startup별 항목 계약을 준비함.

실제 모델·호출 제한·재시도는 실행 설정 사본에서 관리함.

 

 

아래 표는 함수별 설정 모델 ID, 함수에 전달되는 주요 입력, 핵심 반환값을 한곳에 정리함.

입력은 실행 계약의 함수 인자를 기준으로 하되, 괄호 안에는 런타임의 실제 전달 방식과 변환을 덧붙임.

함수·Python 함수 설정 모델 / 실행 방식 주요 입력 핵심 출력
F01 collect_web_data gpt-6-luna (검색 결과가 있을 때만 LLM 해석) query, source_type, target_fields; 실제 query는 아이템 설명+기술분야, 검색은 로컬 자료 조회 sources, issues, 조건부 analysis; T-S1은 sources·issues를 전략 근거에 보존
F02 analyze_item gpt-5.6-terra item_input, research_data item_spec: coreFeatures, targetCustomer, deliverables, differentiation 등
F03 analyze_market gpt-6.1-sol (로컬 검색 근거 입력) item, market_data, analysis_type market_analysis: marketNeed, marketTrend, developmentNeed 등
F04 analyze_competitors gpt-5.6-terra (검색 근거 입력) item, market_data, competitor_data competitor_analysis: competitors, 근거 참조·신뢰도 등
F05 analyze_team_capability gpt-6-luna team_data, item_requirements team_capability: 대표·팀원 역량, gaps
F06 define_development_goal gpt-5.6-sol item_spec, duration, target_field development_goal: finalGoal, core_technologies, kpi
F07 define_development_method gpt-6.1-sol core_technologies, constraints (기간·개발 근거 포함) development_method: methods, architecture
F08 create_development_plan gpt-6.1-sol goals, duration, phases (정규화된 일정 행) development_plan: phases, deliverables
F09 create_production_plan gpt-5.6-terra product, development_plan, phases production_plan: stages 등 제품화·양산 계획
F10 create_marketing_strategy gpt-6.1-sol item, market, target_customer, stage marketing_strategy: earlyAccess, matureStage
F11 create_business_model gpt-6.1-sol item, market, customer, strategy, 사용자 revenue_items business_model: 고객·수익·채널과 제공 수익모델
F12 create_growth_strategy gpt-6.1-sol market, competitors, bm, investment, social_value, 사용자 revenue_items growth_strategy: 경쟁·진입·BM·투자·사회적 가치와 제공 수익모델
F13 create_resource_plan gpt-6-luna item, required_capabilities, team, resource_type resource_plan: equipment, hiring, partners
F14 calculate_budget Python 합계 계산 + gpt-6-luna 설명 items, quantity, unit_price, phase, rules; LLM에는 계산된 합계·금액과 규칙 전달 budget: LLM 설명과 Python 계산 items, total, 부담금별 합계, phase
F15 create_schedule Python 행 구성 + gpt-6-luna 설명 tasks, duration, milestones; LLM에는 Python이 구성한 행·기간 전달 schedule: 설명과 원본에서 구성한 duration, milestones, rows
F16 generate_section gpt-5.6-sol section_spec, 항목별 source_data, writing_rules (유형 규칙·검증 피드백 포함) section_content: generatedText, facts, sourceRefs, status 등
F17 generate_table Python 로컬 처리, 모델 호출 없음 columns, rows, rules (원본 표 우선, 일부 항목은 canonical 일정·예산 보조) table: tables[{columns, rows, rules}], generatedText, status
F18 generate_image_spec gpt-6-luna (섹션당 2회 호출) item, architecture, flow_type (USER_FLOW, SERVICE_ARCHITECTURE) image_spec: 각 명세의 nodes, flowType 등; SVG 렌더링은 로컬 처리
F19 validate_section Python 구조·원본 검사 후 필요 시 gpt-5.6-terra 의미 검증 section_spec, content, 같은 항목의 source_data; 의미 검증에는 선별 콘텐츠와 기준·evidence 전달 validation_result: status, issues, warnings, needsUserConfirmation, contentHash, policyVersion 등
M-1 / T-C4 Python 규칙 처리 계획서·표·그림 / 후속 산출물·점수 보고서 planDoc / deliverable

 

 

 

모델 설정과 실제 실행 구분

  • 표의 모델 ID는 함수별 기본값임. 실행 시작 시 고정한 settingsSnapshot.tasks의 Task 모델과 purposeModels로 실제 모델을 결정함. 목적(F번호)에 지정된 모델이 있으면 그 값, 없으면 Task 모델을 사용함.
  • 실제 호출 모델·목적·시도·토큰은 CallLog·CallTry에서 확인함. 함수 계약의 modelLabel은 표시용 별칭이며 자료 검색은 별도 호출로 관리함.

 

 

함수별 호출 예외

  • F01: 로컬 retrieve 검색을 먼저 수행하고, 검색 결과가 있을 때만 모델에 해석을 요청함.
  • F17: 계약에 모델 ID가 있어도 현재 구현은 Python 로컬 처리만 수행함.
  • F19: 저비용 검사에서 issues가 발생하면 의미 검증 LLM 호출을 생략함.

 

 

 

아래는 execution_contract.json 함수 설정의 주요 필드를 발췌한 예임. input·output 설명 배열이 아니라 계약에 저장된 inputs·output 값을 그대로 표시함.

{
  "name": "generate_section",
  "inputs": "section_spec, source_data, writing_rules",
  "output": "section_content",
  "maxOutputTokens": 4000
}
{
  "name": "generate_table",
  "inputs": "columns, rows, rules",
  "output": "table",
  "maxOutputTokens": 0
}
{
  "name": "generate_image_spec",
  "inputs": "item, architecture, flow_type",
  "output": "image_spec",
  "maxOutputTokens": 1600
}

 

 

 

표마다 필요한 열은 문서 유형과 항목에 따라 다르므로, F17 함수에 공통으로 고정하지 않고 각 항목의 section_spec.rules.requiredColumns에 지정함.

예를 들어 개발계획 표와 사업비 표는 필요한 열 구성이 서로 다름.

 

 

 

계약의 output: "table"은 결과 종류를 나타내는 이름임.

실제 F17은 Python에서 표 데이터 tables, 규칙에 따라 생성한 서술문 generatedText, 처리 상태인 status 등을 반환함.

 

 

F14·F15도 모델에게 계산과 행 구성을 전부 맡기지 않음. F14는 Python이 금액 합계를 계산하고, F15는 Python이 일정 행을 구성함. 모델은 이렇게 정리된 원본과 규칙을 받아 설명을 작성하고, 계산된 합계와 일정 행은 Python 결과에 보존함.



 

 

 

 

 

 

 


1.2 입력 구성·정규화 (inputs.py)

사용자 입력은 사전 아이디어·개발기간과 회사 정보의 산출물·기술분야·팀·수익모델·사업비·일정으로 구성됨. inputs.py가 각 입력을 함수별로 사용할 형태로 정리함.

kind = document_type(company.applicant_type)
description = form.idea_text or item_spec.one_line_summary
project = project_body(description, company)
item_input = {key: project.get(key) for key in ITEM_KEYS}
team = team_input(company)
resources = resource_input(company)
budgets = budget_rows(company, kind)
schedules = schedule_rows(company)
revenue = revenue_items(company)

 

 

 

 

 

 

입력 값 구성·전달 경로 적용
아이디어 설명 formInput.ideaText, 비면 itemSpec.oneLineSummary → description F01 검색·F02 입력
산출물·기술분야 output_summary·tech_field, 기술분야가 비면 업종 코드 아이템·개발 목표 입력
사용자 목표 고객 CompanyInfo.targetCustomer → target_customer F02 원본 사실·F10·F11
목표 고객 참고값 itemSpec.targetCustomer → targetCustomerHint F02 요청의 참고값
대표·팀 역량 대표 역량·경력 및 팀원 역할·경력 F05·후속 자원 계획
수익모델 서비스명·단가 → revenueItems F11·F12 및 관련 작성 근거
사업비 원본 금액·단계·부담금별 값 F14 계산·F17 표
추진 일정 협약기간 행 다음 로드맵 행 F08·F09·F15·F17

 

 

 

사용자 목표 고객 보존

사용자 값이 있으면 F02 직후 결과의 targetCustomer를 그 값으로 맞춰 F05·F06·F09·F13과 후속 작성에 전달함. 재개로 받은 F02 결과에도 동일하게 적용함. 사용자 값이 없으면 원본 사실 target_customer는 확인 필요, F02가 분석한 목표 고객은 생성 결과로 관리함. targetCustomerHint는 참고값으로 분리함.

 

 

 

일반현황 원본 사실

일반현황 항목 2.1.1·3.1.1은 F16과 F19의 같은 originalFacts에 두 칸을 추가함.

{
  "창업아이템명": "사용자가 입력한 아이템명",
  "팀구성현황": [
    {"직위": "개발", "담당업무": "개발", "보유역량": "관련 경력"}
  ]
}

 

아이템명이 비면 해당 칸을 생략함. 팀원 행의 빈 역할은 직위 팀원, 담당업무 -로 표시하고 빈 경력은 보유역량 -로 표시함. 빈 팀 목록은 팀원 없음(대표자 단독), 기존 실행의 None 값은 칸 생략으로 처리함. 전략·작성 입력에는 분석에 필요한 값만 선별하고 개인 식별정보는 제외함.

 

정규화 단계는 제공된 금액·기간·역량을 보존하며 입력 간 정합성은 F19에서 검사함.

 

 

 

 

 

 

웹 입력 원천과 공통 전달

서비스 입력 웹 DB 원천·정리 규칙 전달
targetCustomer project_plan_inputs.target_customer, 앞뒤 공백 제거·빈 값은 없음 PreInput → CompanyInfo·itemSpec.targetCustomer
startupItemName projects.description 첫 줄의 앞뒤 공백을 정리해 최대 60자 CompanyInfo → 일반현황 originalFacts
teamMemberRows team_members의 role·experience, 저장 순서 유지·이름 제외 TeamMemberEntry 목록 → 일반현황 표 행

 

target_customer는 선택 DB 컬럼으로 읽으며 컬럼이 없는 환경은 미입력으로 처리함.

입력 준비에서 이 세 값은 선택 칸으로 관리함.

T-C1은 사용자 목표 고객이 있으면 아이템 사양의 targetCustomer를 그 값으로 맞춘 뒤 공고 추천·작업 분해·전략·작성·검증·후속 제작에 전달함. 입력값의 정리는 코드에서 수행하고 T-C1의 아이디어 해석 요청은 기존 구성을 유지함.



 

 

 

 

 

1.3 실행 제약 구성 (strategy_limits)

inputs.strategy_limits가 개발기간 종료월, 선택 공고 지원 금액 상한과 기능 목록을 받아 실행 제약을 구성함.

T-S1의 원본 사실과 strategyData.strategy_limits에 보존하고, 작성·검증에서는 T-S1이 확정한 featureList를 적용함.

limits = strategy_limits(
    kind,
    end_month,
    selected_announcement.support_amount_max,
    item_spec.core_features,
)

 

 

 

 

키 값의 출처 적용
deadline 개발기간 종료월 협약기간 일정 종료기한
supportLimit 선택 공고 지원 금액 상한 정부지원사업비 상한
featureList 최초 아이템 사양, 후속 단계에서는 T-S1 확정 기능 목록 개발 항목 기능 보존
deadlineScope 예비창업 협약기간/로드맵 적용 설명 일정 범위 구분

 

종료월과 상한이 없으면 해당 키를 생략함.

개발 개월 수는 시작·종료월을 포함해 계산하며, 기간을 읽을 수 없거나 종료가 시작보다 빠르면 0으로 처리함.

 

 

 

 

 

협약기간과 협약 이후 로드맵

agreement = [row for row in schedules if row['_schedule_scope'] == 'agreement']
roadmap = [row for row in schedules if row['_schedule_scope'] == 'roadmap']

 

예비창업 implementationSchedule은 협약기간 일정, fullScaleSchedule은 협약 이후 로드맵임.

개발 종료기한은 협약기간 일정에 적용하고 전체 사업단계 표에는 두 범위의 행을 함께 보존함.

초기창업도 원본 일정에 agreement/roadmap 범위를 붙여 후속 검증에서 식별함.

 

 

 

예비창업 단계별 사업비

_pre_startup_budget_phases는 입력의 단계값으로 항목·합계를 budget.phase_1, budget.phase_2에 나눔. F17용 원본은 1단계→budgetPlanStep1, 2단계→budgetPlanStep2로 구성함.

단계 미지정 행은 2.5.3의 rules.unassignedOriginalRows로 별도 보존하고 입력 확인 대상으로 안내함.

초기창업은 단계 구분 없이 사업비 원본을 전달함.

 

 

계산용 사업비와 원본 표 행의 역할

budget_rows는 F14 계산용 행을 구성함. 정부지원·현금·현물의 None을 0으로 계산하고, 입력 총사업비와 부담금 합이 다르면 부담금 합을 계산용 총액으로 사용함.

계산 총액이 0인 행은 F14 행에서 제외하되 원본 표에는 보존함.

F14는 총액과 부담금별 합계를 Python으로 계산한 뒤 모델에 설명을 요청함.

 

 

_budget_table_row는 원본 금액을 표에 표시함.

None은 확인 필요, 금액은 콤마와 원 단위를 붙임.

예비창업은 자기부담 현금+현물을 자기부담금 칸에 합치고 초기창업은 현금·현물을 각각 표시함. 계산용 행과 사용자 표를 분리해 합계 계산과 입력 확인을 각각 처리함.

 

 

 

자원 입력의 의미 보존

_resource는 명시적 없음을 no_hires/no_equipment/no_partners=true로, 일반 텍스트는 항목 목록으로 구성함. F13은 이 명시적 상태와 현물 자원을 전달받음. 미입력과 사용자가 선택한 없음을 구분해 작성 근거에 반영함.




 

 

 

 

2. 조사 자료 준비: 사이트별 수집·검색 경로

시장·개발·디자인 자료는 출처별로 준비해 JSON과 수집 manifest로 관리함.

실행 시에는 로컬 색인에서 키워드별 근거를 조회하고, 선택적 KIET 검색 결과를 현재 실행의 시장 자료에 합침.

 

 

자료 캐시·설치본 구성

resources._load가 JSON·Markdown을 모듈 로드 시 UTF-8 BOM을 처리해 읽고 exists·read로 공유함.

_rel은 상대/절대 경로·대소문자·구분자를 정규화하고 담당자 자료 폴더 안의 파일을 식별함.

작성·검증 Task는 이 캐시를 사용하고, 명시적 자료 갱신은 refresh와 refresh_market_sources로 캐시·색인을 함께 반영함.

 

설치본에는 작성 규칙·템플릿·검증 rubric·공고/양식 JSON을 package-data로 포함함.

사용자 키워드로 만든 산업조사 결과는 로컬 자료로 관리함. 자료와 실행 환경 설정을 분리해 동일 코드·기준 파일을 워커와 테스트에서 사용함.



 

 

 

2.1 기준 자료 구축·선택적 갱신

자료 사이트·출처 수집·준비 방식 저장 자료와 파이프라인 사용
시장·사업 공고 중소벤처기업부 공고·보도자료, KIET 통합검색, KIET SummaryPop market_crawler.py가 중기부 공고·PDF에서 유형 및 키워드 기준을 확인하고, KIET의 연구·동향 검색 결과를 조회한 뒤 SummaryPop 본문을 추가 수집함. 검색어 적합성으로 결과를 걸러 저장함. keyword_list.json, raw_kiet_results.json, results.json, keyword_history.json. 파이프라인에서는 선택적 갱신 후 research_context.retrieve로 필요한 시장 근거를 검색해 F01~F04 등에 전달함.
개발지식 40개 지식 항목과 아래 36개 고유 URL, 수집 manifest 개발 프로세스·설계·품질·역량 자료를 수집·요약하고 URL·제목·해시·원문 위치를 manifest에 기록함 development_knowledge.json을 로컬 검색해 F02·F07 등에 전달하고 source_manifest.json으로 수집 계보를 연결함
디자인 트렌드 Figma Web Design Trends Figma 페이지를 출처로 표시한 30개 트렌드 항목과 근거 문구를 편집 자료로 관리하고 JSON·Markdown 파일로 생성함. web_design_trends_2026.json, web_design_trends_2026.md. 런타임에서는 JSON에 저장된 트렌드와 근거 문구를 로컬 검색함.

개발지식 수집기가 실제로 요청할 수 있는 URL은 다음과 같음.

아래 목록은 40개 지식 항목의 출처 URL에서 중복을 제거한 결과이며, 런타임마다 전부 다시 요청하는 목록은 아님.

 

 

개발지식 크롤러의 실제 URL 36개

개발 프로세스

  • https://www.atlassian.com/agile/project-management/waterfall-methodology
  • https://agilemanifesto.org/principles
  • https://scrumguides.org/scrum-guide.html
  • https://kanbanguides.org/the-kanban-guide/2020.12/
  • https://martinfowler.com/bliki/TestDrivenDevelopment.html
  • https://cucumber.io/docs/bdd/
  • https://www.domainlanguage.com/ddd/reference/
  • https://martinfowler.com/articles/lean-inception/
  • https://www.ibm.com/training/enterprise-design-thinking/framework
  • https://martinfowler.com/articles/newMethodology.html

설계·아키텍처

  • https://learn.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/architectural-principles
  • https://martinfowler.com/bliki/BeckDesignRules.html
  • https://learn.microsoft.com/en-us/aspnet/core/mvc/overview
  • https://learn.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/common-web-application-architectures
  • https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier
  • https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
  • https://www.postgresql.org/docs/current/tutorial-transactions.html
  • https://refactoring.guru/design-patterns
  • https://learn.microsoft.com/en-us/dotnet/core/extensions/dependency-injection/overview

개발 실무·품질

  • https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches
  • https://docs.github.com/en/pull-requests/reference/pull-request-reviews
  • https://docs.pytest.org/en/stable/getting-started.html
  • https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests
  • https://playwright.dev/docs/intro
  • https://docs.github.com/en/actions/get-started/continuous-integration
  • https://docs.github.com/en/actions/get-started/continuous-deployment
  • https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/Debugging_JavaScript
  • https://owasp.org/www-project-top-ten/
  • https://web.dev/articles/vitals

개발자 역량

  • https://developer.mozilla.org/en-US/docs/Learn_web_development
  • https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Frameworks_libraries
  • https://github.com/skills/introduction-to-github
  • https://sfia-online.org/en/sfia-9/skills/programming-software-development
  • https://sfia-online.org/en/sfia-9/skills/functional-testing
  • https://sfia-online.org/en/sfia-9/skills/solution-architecture
  • https://sfia-online.org/en/about-sfia/how-sfia-works

 

 

 

시장 자료의 사전 구축은 키워드 준비·KIET 조회·결과 정리로 구성함. 런타임의 실행별 검색은 SBRAIN_KIET_SEARCH 스위치(기본 꺼짐)로 관리함.

  • 워커 조립 시 스위치를 읽고 T-S1이 F01 전에 KIET를 검색함.
  • 검색어는 기술 분야, 비면 아이디어 설명 앞 120자임.
  • 한 호출은 최대 25초(도구 제한 시간이 더 짧으면 그 값), 결과 최대 4건·건당 1,200자임.
  • tools.search의 재시도 횟수는 2회(처음 포함 최대 3번)이며 소진하면 기존 근거로 계속함.
  • 검색 결과는 메모리에서 시장 근거와 합쳐 최대 4건을 사용함. 사용자 키워드 파일과 결과 파일은 사전 구축 경로에서 관리함.

 

 

KIET 연결 모듈은 partner_sw/market_research.py에서 관리함.

스위치를 끄면 조회 호출과 kietSearch 근거 칸을 생성하지 않음.

켠 실행의 실패 소진은 kietSearch.status=failed와 호출 소진 기록으로 남기고 기존 자료로 계속함.

결과 0건은 정상 조회 결과로, 일부 조회 실패에도 근거가 있으면 해당 결과를 활용함.

 

 

개발지식의 source_manifest.json은 2026-09-14의 고유 URL 36개 수집 상태 collected와 원문 위치·제목·해시를 기록함.

런타임은 development_knowledge.json을 검색하고 수집 계보는 manifest로 추적함.

디자인 트렌드는 정리된 트렌드·근거 JSON으로 검색에 연결함.



 

 

 

 

 

2.2 파이프라인 실행 시 검색·전달

 

파이프라인은 준비된 로컬 JSON 자료에서 아이템 설명과 기술 분야에 맞는 근거를 찾음.

  • 검색 방식: retrieve가 준비된 로컬 자료에서 검색어 별칭과 키워드 관련도를 이용해 근거를 고름. 실행별 KIET 조회 결과는 별도 검색 경로에서 합침.
  • F01 조사 결과: collect_web_data가 같은 검색어로 자체 자료를 찾고, 결과가 있을 때만 모델에 해석을 요청함.
  • 후속 분석용 근거: F01과 별도로 시장·경쟁·개발 자료를 다시 검색해 각각 F03, F04, F02·F07에 전달함.
web_data = collect_web_data(query, source_type="attached_crawling", target_fields=["market", "development", "design"])
market_evidence = retrieve(query, domains=("market",), limit=4)
competitor_evidence = retrieve(query + " 경쟁사 경쟁 비교", domains=("market",), limit=4)
development_evidence = retrieve(query, domains=("development",), limit=3)

 

 

 

 

검색 랭킹·중복 제거·문맥 크기 제어

terms는 한국어·영문 키워드와 불용어를 정리하고 QUERY_ALIASES는 개발계획·핵심기술·시장동향·경쟁사의 관련 표현을 확장함. 제목에 맞는 검색어는 4점, 본문에 맞는 검색어는 1점으로 가중하고 같은 점수는 sourceRef 순서로 정렬함. 영어 단어는 경계를 확인하고 한국어 복합어는 부분 표현도 비교함.

검색 결과는 문서 텍스트 SHA-256으로 중복 제거하고 sourceRef에 원본 JSON pointer를 연결함. 발췌는 첫 일치 위치 앞 160자부터 최대 1,100자로 구성하고 excerptOffset·excerptTruncated·matchedTerms를 함께 전달함. 건수와 직렬화된 문맥 문자 수의 두 한도를 적용해 프롬프트 입력을 조절함.

 

 

전략 근거 최대 건수 로컬 문맥 문자 예산
시장 근거 4 5,500
경쟁 근거 4 4,500
개발 근거 3 3,000

실행별 KIET 근거는 URL 또는 키워드·제목·본문의 해시로 kiet:run:<해시> 참조를 구성함. merge_market_evidence가 새 자료부터 넣고 sourceRef 중복·문자 예산·4건 한도를 적용함. _DeadlineSession.request는 전체 검색의 남은 시간으로 개별 HTTP timeout을 제한함. 연구·동향 조회와 SummaryPop 수집에 같은 호출 예산을 적용함.




 

 

 

3. F01~F15 공통 전략 실행

F01

F15는 본문을 직접 작성하는 단계가 아니라 F16

F18이 사용할 전략·조사 결과를 준비하는 단계임.

결과는 공통 구조인 canonical에 모은 뒤, 항목별로 필요한 데이터만 작성 단계에 전달함.



 

 

 

 

3.1 실행 흐름과 함수 목록

전체 흐름은 T-S1 요구사항 분석 → T-S2 목표 시장 분석 순서임.

각 Task 안에서 앞 함수 결과를 쓰므로 순차 실행함.

T-S1: F01 → F02 → F05 → F06 → F07 → F08 → F09 → F13 → F14 → F15
T-S2: F03 → F04 → F10 → F11 → F12

 

 

 

 

아래 함수 목록은 F번호별 역할과 데이터 연결을 설명함. 실제 호출 순서는 위 Task 흐름을 따름.

함수 함수명 설정 모델·실행 방식 주요 입력 → 출력·주요 후속 호출
F01 collect_web_data GPT-6 Luna; 로컬 검색 후 조건부 해석 아이템 설명·기술분야 query, source_type, target_fields → web_data → 해당 F16 항목
F02 analyze_item GPT-5.6 Terra 아이템 입력·개발 근거 → item_spec → F05·F06·F09~F11·F13·F16·F18
F03 analyze_market GPT-6.1 Sol 아이템·시장 근거·분석 유형 → market_analysis → F04·F10~F12·F16
F04 analyze_competitors GPT-5.6 Terra 아이템·시장분석·경쟁 근거 → competitor_analysis → F12
F05 analyze_team_capability GPT-6 Luna 대표·팀원 입력·요구 역량 → team_capability → F13·F16
F06 define_development_goal GPT-5.6 Sol 아이템 명세·기간·기술분야 → development_goal → F07·F08·F16
F07 define_development_method GPT-6.1 Sol 핵심기술·기간·개발 근거 → development_method, architecture → F16·F18
F08 create_development_plan GPT-6.1 Sol 목표·기간·정규화 일정 → development_plan → F09·F16·F17
F09 create_production_plan GPT-5.6 Terra 아이템·개발계획·일정 단계 → production_plan → F16
F10 create_marketing_strategy GPT-6.1 Sol 아이템·시장분석·고객·단계 → marketing_strategy → F11·F16
F11 create_business_model GPT-6.1 Sol 아이템·시장·고객·마케팅 전략 → business_model → F12
F12 create_growth_strategy GPT-6.1 Sol 시장·경쟁·BM·투자·사회적 가치 → growth_strategy → F16
F13 create_resource_plan GPT-6 Luna 아이템·요구역량·팀·자원유형 → resource_plan → F16
F14 calculate_budget Python 계산 + GPT-6 Luna 설명 원본 예산·수량·단가·규칙 → budget → F16·F17
F15 create_schedule Python 행 구성 + GPT-6 Luna 설명 back 일정·기간·마일스톤 → schedule → F17

 

 

표의 연결은 파이프라인에서 출력값을 직접 후속 함수에 전달하는 관계임.

F01의 검색 결과와 별도로 market_evidence, competitor_evidence, development_evidence를 로컬 검색해 각각 F03, F04, F02·F07에 전달함.

F15는 F08의 개발계획이 아니라 정규화된 back 일정 행을 입력받음.



 

 

 

 

3.1.1 기능정의서 v1.10 Task ID와 F 함수 대응

전략·작성·검증-1은 T-S1·T-S2·T-W1·T-W2·T-W3·T-V1의 여섯 Task로 실행함.

아래 표는 전체 서비스에서 이 여섯 Task가 연결되는 위치를 정리한 것임.

순서 Task·규칙 단계 함수·구성요소 입력·출력 및 역할
1 T-C1 요구사항 해석 조율 tc1.py 사전 입력을 아이템 사양·카테고리·참조 요약으로 구성
2 T-C2 공고 매칭 공고 연동 후보 공고·추천 근거 제공
3 G-01 자격요건 게이트 공고 상세·자격 판정 선택 공고의 작성 진행 여부
4 T-C3 작업 분해 조율 tc3.py 작업 계획·양식·지시문·평가 기준
5 T-S1 요구사항 분석 F01·F02·F05F09·F13F15 requirementAnalysis·featureList·strategyData
6 T-S2 목표 시장 분석 F03·F04·F10~F12 marketAnalysis·numericTokens·marketStrategyData
7 T-W1 본문 작성 F16 본문 PlanSection·sectionOutputs·planDoc
8 T-W2 그래프 생성 F18 + diagram_svg 서비스 흐름도·서비스 구조도 명세·SVG·diagrams
9 T-W3 표 생성 F17 tables·tableSections·tableOutputs
— M-1 계획서 합치기 조율 merge 본문·표 서술·표·그림을 planDoc에 합침
10 T-V1 사업계획서 검증 F19 + score_section sectionResults·docScore·scorePolicyVersion
11 G-02a 문서 평가 판정 조율 judge 문서층 표시 점수·재작성 후보·다음 행동
12 T-B1 HTML 제작 구현 Agent 계획서·기능 목록을 실행 파일로 제작
13 T-B2 인포그래픽 제작 구현 Agent 계획서 기반 인포그래픽
14 G-04 실행 안내 문서 조율 readme 실행·산출물 안내
15 T-V2 프로토타입 검증 검증-2 Agent 코드 점검·계획서 대조·산출물층 점수
16 G-02b 종합 평가 판정 조율 judge 문서층+산출물층 점수·재작성 후보
17 G-03 보호 토큰 추출 검수 준비 날짜·수치·고유명사·기능명 보호
18 T-P1 문장 형식 검수 검수 Agent 형식 판정·문장 수정 후보
19 T-P2 한국어 윤문 문장별 호출 윤문 결과·보호 토큰 검사
20 T-C4 결과 통합 조율 tc4.py 계획서·파일·점수·미달 항목·안내 통합

 

본문의 상세 설명은 F01~F19와 이들을 실행하는 전략·작성·검증-1 Task를 중심으로 함.

후속 구현·검수 구간은 계획서 전달과 최종 결과 연결에 필요한 역할을 함께 표시함.



 

 

 

 

3.2 F01~F15 프롬프트 구성

F01~F15의 프롬프트 본문은 함수별 별도 파일이 아니라 runtime/llm_runtime.py의 공통 지침과 FIELDS[fid] 지시를 조합해 실행 시 구성함. 입력 payload는 JSON으로 직렬화해 user 메시지에 전달함.

 

execution_contract.json은 함수별 모델·입출력·출력 토큰 한도를 정하는 호출 설정이며, 프롬프트 원문은 아님.

 

공통 지침은 JSON 객체 반환, 입력을 지시가 아닌 데이터로 취급, 제공된 원본 사실·근거 우선, 사실과 제안 구분, 개인정보 제한 등을 요구함. 여기에 함수별로 반환 필드와 판단 규칙을 덧붙임.

 

 

 

함수 함수별 프롬프트 지시 요약
F01 제공된 검색 결과를 왜곡하지 않고 summary와 실제 sourceRef만 반환. 요약은 3문장 이내
F02 coreFeatures, targetCustomer, deliverables, differentiation을 구조화
F03 marketNeed, marketTrend, developmentNeed를 반환하고 근거 주장마다 sourceRef 인용
F04 경쟁사별 제품·관계·근거 참조·신뢰도를 반환. 근거가 없으면 경쟁사를 만들지 않음
F05 대표·팀원 역량과 요구 역량의 차이를 gaps로 구조화
F06 목표·핵심기술·측정 환경이 포함된 KPI를 정의하고 미확정 목표값은 확정하지 않음
F07 기술별 개발·확보 방법과 아키텍처를 구조화
F08 단계와 산출물을 반환하고 입력된 기간을 유지
F09 제품화·양산 단계를 stage, features, plan으로 구조화
F10 시장 진입 전략을 earlyAccess, matureStage로 구분
F11 고객·수익·채널을 구조화하고 제공된 서비스명·단가를 보존
F12 경쟁·진입·비즈니스 모델·투자·사회적 가치를 통합하고 제공된 서비스명·단가를 반영
F13 장비·채용·협력기관 계획을 반환하고 입력의 no_hires, no_equipment, no_partners 상태를 보존
F14 제공된 예산만 설명하고 모델이 금액을 재계산하거나 재배분하지 않음. 합계 계산은 Python에서 선행
F15 제공된 일정만 설명하고 날짜를 변경하지 않음. 일정 행 구성은 Python에서 선행

 

 

 

 

F02~F13은 gpt_functions.py의 함수가 request_json으로 연결함.

F01·F14·F15는 python_functions.py가 검색·계산·일정 행 구성 등 입력을 먼저 준비한 뒤 필요 시 같은 request_json을 호출함.

F01 함수는 매번 로컬 검색을 실행하고, 검색 결과가 있을 때만 모델 해석 요청을 추가함.

 

 

 

 

Task 작업 지시와 호출 연결

request_json은 함수별 규칙과 payload를 구성하고 calls.send_json으로 전달함. T-C3의 Task 지시문은 system 메시지의 <작업지시> 블록에 추가하고, 함수 입력 JSON은 user 메시지에 둠.

system: 공통 규칙 + F번호별 규칙 + 작성/검증 기준 + 격리된 Task 작업 지시
user: 함수별 입력 payload JSON
  → tools.llm(messages, parse=..., purpose=F번호, json_mode=True)
  → JSON 파싱·필수 배열·본문/명세 계약 검사

지시문과 입력 데이터의 역할을 분리하며, 검증 Task T-V1은 별도 Task 작업 지시 없이 검증 기준을 적용함. F01의 해석은 제공된 sourceRef만 선택하고 F02의 목표 고객 참고값은 원본 사실과 분리함.



 

 

 

 

3.3 F01~F15 결과 구조와 근거 보존

F01~F15 결과는 공통 구조인 canonical에 모임.

가능한 경우 sourceRefs, evidence, originalFacts, status를 함께 보존함.

_annotate_status는 사실을 provided(확정 입력), proposed(제안값), needs_confirmation(확인 필요)으로 표시함.

 

 

조회되는 조사 자료는 사용자 산업 키워드에 따라 달라지며,

sourceRefs와 evidence로 원문 경로·JSON 위치·발췌를 추적함.

 

 

이 단계는 별도 조사 기능이 아니라 F01~F15 결과를 canonical에 정리하고, 항목별 작성·검증으로 넘기는 데이터 연결 단계임. 아래 세 부분으로 나누어 설명함.

  1. 생성·보존: F01~F15가 canonical 키별 결과를 만들고, 결과에 출처·근거·사실 상태를 붙임.
  2. 계보 추적: canonical 표에서 각 키의 생성 함수, 참조 경로, 포함 데이터, 후속 사용처를 확인함. 원문 근거는 연결된 sourceRefs·evidence에서 추적함.
  3. 항목별 전달·검증: 항목의 sourceKeys로 필요한 canonical 값만 골라 F16/F17/F18에 전달하고, F19가 같은 근거와 생성 결과를 함께 검증함.

 

 

예를 들어 web_data는 조사 자료와 출처를, item_spec은 아이템 요구사항을, development_plan은 개발 목표·내용·산출물·일정 연결을 보관함.

# F01~F15 결과를 모은 공통 데이터
canonical = {
  "web_data": {
    "sources": [...], "issues": [...]
  },
  "item_spec": {...},
  "market_analysis": {...},
  "competitor_analysis": {...},
  "development_plan": {...}
}

 

 

 

 

 

Task 결과 묶음

T-S1은 전략 canonical과 research, original_facts, strategy_limits, document_type을 strategyData에 보존함. T-S2는 시장·경쟁·마케팅·BM·성장전략을 marketStrategyData로 반환함.

작성·검증의 canonical_of가 두 묶음을 합쳐 항목 근거를 구성함.

 

T-S1의 original_facts에는 아이템 입력, 개발기간, 수익모델, 팀·자원, 사업비, 일정과 전략 provenance가 포함됨. F01의 canonical web_data에는 조회한 sources·issues를 보존함.

모델명·토큰·응답 ID는 호출 기록에서 관리함.

 

 

 

 

 

 

서비스 계약과 함수 내부 데이터의 구분

이름 생성·의미 주요 연결
itemSpec / ItemSpec T-C1의 서비스 아이템 사양 공고 추천·작업 분해·전략 Task 입력
item_spec F02가 분석한 함수 내부 아이템 결과 전략 canonical·후속 F함수·작성 근거
featureList T-S1에서 확정한 공통 기능 목록 작성·검증·후속 제작의 기능 기준
strategyData T-S1 전략 결과·원본·조사 근거 묶음 T-S2와 작성·검증 Task 입력
marketStrategyData T-S2 시장·경쟁·사업화 결과 묶음 canonical 병합·작성·검증 근거
planDoc 문장·표·그림을 합친 서비스 계획서 문서 검증·후속 제작·내려받기
sectionOutputs / tableOutputs / diagramOutputs 함수별 생성 출력과 근거 필드 T-V1의 항목별 검증 콘텐츠

 

서비스 계약은 외부 단계 사이의 전달 구조, canonical은 F함수 사이의 분석·작성 문맥으로 사용함.

사용자 목표 고객과 기능 기준은 각 구조에 일관되게 연결하고 입력 원본·생성 분석·계획서 표현은 역할에 맞게 보존함.



 

 

 

3.3.1 canonical 데이터 계보: 생성·참조·사용 경로

아래 표는 앞 절의 자세한 출처 목록을 반복하지 않고,

행 중 canonical 키가 어떤 입력을 받아 어디로 전달되는지 요약함. 실제 근거 원문은 각 결과의 sourceRefs·evidence가 가리킴.

 

canonical 키 생성 주요 입력·근거 후속 사용처
web_data F01 query 기반 로컬 검색 결과·출처 sourceKeys에서 선택하는 F16 항목 (예비·초기 2.1.1·3.1.1)
item_spec F02 아이템 입력·개발 근거 F05·F06·F09~F11·F13·F16·F18
market_analysis F03 item_spec·별도 검색한 market_evidence F04·F10~F12·F16
competitor_analysis F04 item_spec·market_analysis·별도 검색한 competitor_evidence F12
development_plan F08 development_goal·기간·단계(phases) F09·F16·F17

 

 

 

 

추가 canonical 키 생성 주요 입력·보존 값 후속 사용처
team_capability F05 대표·팀원 역량·gaps F13·팀 항목 F16
development_goal F06 finalGoal·core_technologies·kpi F07·F08·F16
development_method·architecture F07 기술별 방법·확보 방안·구조 F16·F18
production_plan F09 단계별 features·plan 양산·제품화 F16
marketing_strategy F10 earlyAccess·matureStage F11·F16
business_model F11 customer·revenue·channels·제공 수익모델 F12
growth_strategy F12 경쟁·진입·BM·투자·사회적 가치 성장전략 F16
resource_plan F13 장비·채용·협력 계획 자원 항목 F16
budget F14 Python 원본 항목·합계·부담금·단계 실현가능성 F16·사업비 F17
schedule F15 사용자 원본 일정 행·기간·설명 일정 F17
feasibility_plan T-S1 묶기 development_goal·development_plan·budget 실현가능성 F16



 

 

 

 

 

3.3.2 항목별 sourceKeys 선별·작성·검증 전달

앞의 계보표에 나온 canonical 전체를 매 항목에 넘기지 않음.

매핑에 등록된 sourceKeys가 필요한 canonical 키만 선별하며, 해당 source_data를 F16/F17/F18 작성에 사용함.

F19에는 그 항목의 생성 결과와 같은 source_data를 함께 전달해 본문·표·이미지와 근거의 일치 여부를 검증함.

# 항목에 필요한 결과만 F16에 전달
spec = {"sectionId": "2.1.2", "sourceKeys": ["item_spec", "market_analysis"]}
sources = select_sources(canonical, spec["sourceKeys"])
content = generate_section(spec, source_data=sources)

# 같은 본문·근거를 F19에서 검증
validation = validate_section(spec, content, source_data=sources)

 

 

select_sources(...), generate_section(...), validate_section(...)은 데이터 전달 관계를 설명하기 위한 예시 함수명임.

실제 sourceKeys는 항목 매핑에서 관리하며, canonical 전체가 아니라 지정된 결과만 작성·검증 입력으로 구성함.

 

 

 

실제 근거 구성 경로

section_source(spec, canonical, original, research)는 sourceKeys의 값을 고르고 관련 원본 사실을 originalFacts, 전략 결과의 근거를 strategyProvenance, 조사 자료를 evidence·sourceRefs에 연결함.

strategy_limits와 문서 유형도 함께 전달함.

 

 

본문 작성의 compact_prompt_source는 성장전략의 중복 원본·근거 복사본을 줄여 요청 크기를 조절함.

최상위 원본 사실·facts·sourceRefs는 유지하고, 검증에서는 전체 근거를 다시 구성함.

일반현황 2.1.1·3.1.1은 작성과 검증에서 창업아이템명·팀구성현황을 동일하게 추가함.

 

 

 

 

 

출력 계약 변환과 수치 토큰

변환 함수 서비스 출력 구성
requirement_analysis problemStatement=아이템 요약, targetCustomer=F02/아이템 사양, featureList=확정 기능, differentiator=차별성, useCases=산출물 목록
market_analysis marketDefinition=시장 필요성·동향, competitors=경쟁사 이름, positioning=경쟁·진입전략 요약
text_of·name_of·names 사전/목록 값을 읽을 수 있는 요약으로 구성하고 기능·경쟁사 이름 추출
numeric_tokens 전략 결과의 숫자+원·억·만·%·명·건·개를 수치금액 토큰으로 구성, 같은 값은 count로 집계
sentences 줄·문장 끝으로 본문을 나누고 항목 기반 sentenceId·paragraphNo 부여

 

marketSize는 현재 빈 목록으로 전달하고 시장 분석의 근거·서술과 구분함. 토큰 추출은 출처·근거 복사본·운영 메타를 제외한 의미 값에서 수행해 같은 자료 복사본의 수치를 반복 집계하지 않도록 구성함.

 

 

 

상태 부여의 대상

_annotate_status는 F02 기능에 coreFeatureStatus를, F06 KPI 목표·핵심기술에 상태를, F08 개발 단계·F09 제품화 단계의 기간에 상태를 부여함.

입력에서 확인한 값은 provided, 비어 있거나 확인 필요인 값은 needs_confirmation, 생성 계획값은 proposed로 구분해 후속 작성·검증에 전달함.




 

 

 

 

 

3.4 F16~F18 작성·결과·근거 보존

항목별 section_spec, 매핑된 source_data, 문서 유형별 작성 규칙을 바탕으로 작성함.

생성 출력과 입력 근거는 이 절의 하위 항목에서 보존하며, F19 이후 validation·evaluation·attempts 저장과 상태 분기는 6. F19 검증·결과 저장·상태 분기에서 설명함.

함수 역할 반환 및 후속 처리
F16 generate_section 본문 생성 generatedText, 상태값, 근거 연결을 F19로 전달
F17 generate_table 표 생성 tables·서술문을 반환하고 M-1에서 계획서에 합침
F18 generate_image_spec USER_FLOW·SERVICE_ARCHITECTURE 이미지 명세 생성 명세를 로컬 SVG로 변환하고 tools.files로 저장. DiagramSpec.imageFile에 FileRef 연결



 

 

 

 

 

3.4.1 F16 프롬프트 지시 구성·F17 표·F18 이미지 작성

F16은 모든 항목에 같은 본문 지시만 보내지 않음.

런타임은 공통 JSON·사실성 지침과 문서 유형별 writing_rules.json 규칙을 적용한 뒤, 실행 계약의 해당 항목 section_spec을 입력으로 전달함.

 

section_spec.title이 항목별 작성 지시이고, section_spec.rules가 문장 수·줄 수·필수 개수 같은 추가 제약임. sourceKeys로 고른 source_data는 작성 근거로 함께 전달하며, 항목별 공고·양식 기준이 있으면 sectionCriteria도 추가함.

 

아래 표는 실행 계약에서 가져온 F16 전체 항목의 실제 지시임.

title은 항목별 프롬프트 문장, rules는 추가 제약, sourceKeys는 프롬프트에 함께 넣는 근거 데이터 범위임. 공통·유형별 작성 기준은 writing_rules.json에서 관리함.

 

 

일반 사업계획서: F16 10개 항목
항목 실제 항목별 지시 (title) 추가 제약 (rules) 근거 (sourceKeys)
1.1.1 3줄 내외의 간략한 서비스의 개요 maxLines: 3 item_spec
1.1.2 기존기술의 문제점 1 2 3 서술 exactItems: 3 market_analysis
1.1.3 관련 시장동향과 이 기술이 시장에 나왔을때 효과 서술 없음 market_analysis
1.2.1 개발 결과물에 최종목표를 적용할 분야, 사용할 기술언어, 주요성능을 넣어 1문장으로 작성. maxSentences: 1 development_goal
1.2.2 핵심기술 위주 개발될 기능 서술, 이때 표 형태 제시가능. minItems: 0 development_goal.core_technologies
1.2.3 검증에 필요한 성능지표 5개 이상. 정량적 지표로 작성하되 그렇지못할경우 측정환경을 함께 작성 minItems: 0 development_goal.kpi
1.3.1 1.2.2에서의 핵심기술에 따른 기술개발방법 2줄~4줄과 핵심기술 확보방안 1줄로 작성, 이때 표 형태 제시 가능. 없음 development_method
1.4.1 제품 개발계획을 수요조사, 기획, 개발, 테스트로 나눠 간략히 리스트화. 없음 development_plan
1.4.2 양산 1단계, 양산 2단계, 양산 3단계 각 기능 1줄, 상세계획을 3~5 문장으로 작성. 없음 production_plan
1.4.3 마케팅 전략을 초기시장 접근전략, 사업성숙 단계 접근전략으로 나눠 3줄내외 작성. maxLines: 3 marketing_strategy
예비창업패키지: F16 20개 항목
항목 실제 항목별 지시 (title) 추가 제약 (rules) 근거 (sourceKeys)
2.1.1 일반현황 - 수령한 창업아이템에 완료될 산출물 목록 (창업아이템명과 팀구성현황은 web에서 수령됨) 없음 item_spec, web_data
2.1.2 개요 - 수령한 창업아이템에 1줄 소개, 시장동향 1줄, 개발계획 1줄 없음 item_spec, market_analysis, development_plan
2.1.3 문제인식 - 현재 시장동향과 그에따른 문제점과 그에 따른 개발 필요성 3가지 작성. exactItems: 3 market_analysis
2.1.4 실현 가능성 - 개발계획, 차별성, 정부지원사업비 계획 3가지 작성. exactItems: 3 development_plan, item_spec, budget
2.1.5 성장전략 - 경쟁사 분석, 목표 시장 진입 전략, 비즈니스 모델, 투자유치 전략, 중장기 사회적 가치 서술. 없음 growth_strategy
2.1.6 수령한 대표자 및 팀원구성에 따라 대표자의 보유역량, 팀원 보유역량을 서술. 없음 team_capability
2.2.1 창업아이템명 - 2.1.2에 작성한 창업아이템 1줄 소개. maxLines: 1 item_spec
2.2.2 산출물 - 2.1.2에 작성한 산출물 목록 없음 item_spec
2.3.1 아이템 개요 - 2.1.2에 작성한 창업아이템 1줄 소개. maxLines: 1 item_spec
2.3.2 문제인식 - 2.1.3에 작성한 시장동향과 그에 따른 문제점. 없음 market_analysis
2.3.3 실현가능성 - 2.1.4에 작성한 실현 가능성. 없음 feasibility_plan
2.3.4 성장전략 - 2.1.5에 작성한 내용. 없음 growth_strategy
2.3.5 2.1.6에 작성한 대표자의 보유역량, 팀원 보유역량을 서술내용과 그에 따른 역량 활용계획 한줄씩. 없음 team_capability
2.4.1 2.3.2 내용을 3가지로 나눠 상세 서술 exactItems: 3 market_analysis
2.5.1 2.3.3 내용을 명시 없음 feasibility_plan
2.6.1 2.1.5 내용을 명시 없음 growth_strategy
2.7.1 2.3.5 내용을 명시. 없음 team_capability
2.7.2 구매 후 보유 예정인 장비 시설 서술. 없음 resource_plan
2.7.3 추가채용시 보유할 예정인 역량 서술. 없음 resource_plan
2.7.4 협력기관 협업시 보유할 예정인 기술/역량 서술. 없음 resource_plan
초기창업패키지: F16 20개 항목
항목 실제 항목별 지시 (title) 추가 제약 (rules) 근거 (sourceKeys)
3.1.1 일반현황 - 수령한 창업아이템에 완료될 산출물 목록 (창업아이템명과 팀구성현황은 web에서 수령됨) 없음 item_spec, web_data
3.1.2 개요 - 수령한 창업아이템에 1줄 소개, 시장동향 1줄, 개발계획 1줄 없음 item_spec, market_analysis, development_plan
3.1.3 문제인식 - 현재 시장동향과 그에따른 문제점과 그에 따른 개발 필요성 3가지 작성. exactItems: 3 market_analysis
3.1.4 실현 가능성 - 개발계획, 차별성, 정부지원사업비 계획 3가지 작성. exactItems: 3 development_plan, item_spec, budget
3.1.5 성장전략 - 경쟁사 분석, 목표 시장 진입 전략, 비즈니스 모델, 투자유치 전략, 중장기 사회적 가치 서술. 없음 growth_strategy
3.1.6 수령한 대표자 및 팀원구성에 따라 대표자의 보유역량, 팀원 보유역량을 서술. 없음 team_capability
3.2.1 창업아이템명 - 3.1.2에 작성한 창업아이템 1줄 소개. maxLines: 1 item_spec
3.2.2 산출물 - 3.1.2에 작성한 산출물 목록 없음 item_spec
3.3.1 아이템 개요 - 3.1.2에 작성한 창업아이템 1줄 소개. maxLines: 1 item_spec
3.3.2 문제인식 - 3.1.3에 작성한 시장동향과 그에 따른 문제점. 없음 market_analysis
3.3.3 실현가능성 - 3.1.4에 작성한 실현 가능성. 없음 feasibility_plan
3.3.4 성장전략 - 3.1.5에 작성한 내용. 없음 growth_strategy
3.3.5 3.1.6에 작성한 대표자의 보유역량, 팀원 보유역량을 서술내용과 그에 따른 역량 활용계획 한줄씩. 없음 team_capability
3.4.1 3.3.2 내용을 3가지로 나눠 상세 서술 exactItems: 3 market_analysis
3.5.1 3.3.3 내용을 명시 없음 feasibility_plan
3.6.1 3.1.5 내용을 명시 없음 growth_strategy
3.7.1 3.3.5 내용을 명시. 없음 team_capability
3.7.2 구매 후 보유 예정인 장비 시설 서술. 없음 resource_plan
3.7.3 추가채용시 보유할 예정인 역량 서술. 없음 resource_plan
3.7.4 협력기관 협업시 보유할 예정인 기술/역량 서술. 없음 resource_plan



 

 

 

 

화면 제목과 작성 기준의 적용

displayTitle은 계획서 화면 제목으로, title은 모델의 항목별 작성 지시로 사용함. 아래 상세 표의 항목 번호·지시·규칙·sourceKeys는 실행 계약을 기준으로 유지함.

일반현황의 창업아이템명·팀구성현황은 사용자 원본 사실로 보완하고, 사용자 제공 서비스명·단가는 성장전략에 그대로 반영함.

 

작성 프롬프트에는 JSON 공통 규칙→F16 본문 규칙→공통/유형별 writing_rules→유형 템플릿·persona·style guide·checklist 발췌→항목별 공고·양식 기준을 연결함. 각 작성 참고 파일의 발췌는 최대 3,500자로 적용함.



 

 

 

 

 

3.4.1.1 F16 본문 생성

입력: FormSpec의 본문 항목별로 계약·sourceKeys·원본 사실·조사 근거·작성 기준을 준비함.

T-W1은 최대 4개 항목을 동시에 처리하고 결과를 양식 순서로 모음.

spec = spec_for(specs, code)
source = section_source(spec, canonical, original, research)
source = with_general_status_facts(source, kind, code, company)
prompt_source = compact_prompt_source(source, spec)
rules = {
    'documentType': kind,
    'sectionCriteria': _writing_criteria(kind, code),
    'tableGenerationEnabled': False,
    'validationFeedback': [],
    'previousText': None,
    'preserveProvenance': True,
    'statusPolicy': ['provided', 'proposed', 'needs_confirmation'],
}
with partner_call(tools.for_item(code), instruction):
    output = gpt.generate_section(
        section_spec=spec, source_data=prompt_source, writing_rules=rules)

 

 

 

출력 정리: 제목·항목 번호 반복을 _strip_section_heading으로 정리하고 _normalize_section_output으로 본문·facts·확인 사항을 구성함. sectionOutputs[code]에는 generatedText·facts·sourceRefs·needsUserConfirmation·issues를 보존함.

 

계획서 문장 구성: 본문을 줄과 문장 끝으로 나눠 PlanSection.sentences에 저장함. 문장 ID는 s-<항목 번호>-<순번>, paragraphNo는 비어 있지 않은 줄 순서로 구성함.

 

재수행·재작성 입력: 목표 항목의 직전 본문을 previousText로, 직전 issues를 validationFeedback으로 전달함. 사용자 묶음 재작성은 보완 지시를 retryInstruction으로 추가함. 목표 밖 항목은 baseSectionOutputs·basePlanDoc에서 이어받음.

 

응답 검사: 빈 응답·유효한 generatedText 누락·필수 배열 형식 오류·JSON 파싱 실패·길이 한도 잘림은 FormatError로 처리하고 호출 도구가 재시도함. 정리된 결과의 형식·사실·내용 검증은 T-V1에서 수행함.

 

응답 파싱과 본문 후처리의 세부 규칙

_parse_response는 JSON 객체 파싱을 먼저 시도하고 코드 울타리·주변 문구가 있으면 객체 부분을 정리해 다시 파싱함. issues·tables·sourceRefs·needsUserConfirmation·facts의 배열 형태를 확인하고, F16의 유효한 generatedText와 F18의 노드 계약을 검사함.

F19는 passed 불리언·warnings 문자열 배열을 확인하며 passed=true와 issues 존재의 모순은 형식 오류로 처리함.

 

F16 본문에 확인 필요·미확정·입력 필요가 있고 확인 목록이 비어 있으면 사용자 입력 보완 안내를 추가함.

_normalize_section_output은 생성 결과의 출처가 비었을 때 상위 sourceRefs를 이어받고, 원본 설명을 완료·학습 실적으로 확대하지 않도록 항목별 표현 교정 규칙을 적용함.

compact·pick은 운영 메타와 의미 산출물을 구분해 후속 요청·서비스 출력에 필요한 필드를 선택함.



 

 

 

 

 

 

 

3.4.1.2 F17 표 생성

입력 구성: T-W3가 사용자 회사 정보에서 F17용 tableData를 구성함. table_arguments가 항목의 requiredColumns·원본 행·narrative 규칙을 선택함.

data, unassigned = table_data(company, kind)
args = table_arguments({'tableData': data}, kind, spec, canonical)
output = py.generate_table(**args)
문서 유형·항목 원본 행
예비 2.5.2 개발계획 implementationSchedule
예비 2.5.3 1단계 사업비 budgetPlanStep1
예비 2.5.4 2단계 사업비 budgetPlanStep2
예비 2.6.2 전체 일정 implementationSchedule + fullScaleSchedule
초기 3.5.2 개발계획 실현가능성_일정
초기 3.5.3 사업비 사업비_집행계획
초기 3.6.2 전체 일정 실현가능성_일정 + 성장전략_일정

 

 

표와 서술문 생성: Python이 원본 행을 복사해 tables의 columns·rows·rules를 보존함. narrativeRequired가 켜진 항목은 일정/예산 행을 정해진 문장 틀에 넣어 generatedText를 생성함. 표 셀은 TableSpec으로, 표 서술은 PlanSection으로 구성해 M-1에 전달함.

 

 

자체 검사: requiredColumns 누락과 행 길이/열 수 불일치를 검사함. 불통과면 그 시도에서 표를 제거하고 _table_fallback_text로 설명문을 구성함. CheckResult에 실패 항목·확정 동작 표 제거 · 본문 서술 대체를 기록함.

 

 

검증 실패 이후: T-V1 fail 표는 우선 원본 표를 유지한 채 다시 검증함. 항목별 재수행 한도 뒤에도 fail이면 fallbackItems로 지정해 T-W3→M-1에서 설명문 대체함. 대체 후 검증 판정은 fail로 유지함.

 

 

대체 안내: tableFallbackUsed·fallbackReason·fallbackReasonCodes·displayReason을 보존함. displayReason은 지원 상한·협약기간·표 구조 등의 기계 판독 코드에서 선택해 사용자에게 안내함.

 

 

fallbackReasonCodes 안내의 초점
SUPPORT_LIMIT_EXCEEDED 정부지원사업비 상한·사업비 입력 확인
AGREEMENT_SCHEDULE_AFTER_DEADLINE 표 일정과 원본 협약 일정·일정 입력 확인
AGREEMENT_TABLE_SCHEDULE_MISMATCH 표와 원본 협약 일정 대조·표 내용 확인
AGREEMENT_MONTHS_EXCEEDED 허용 협약기간·일정 입력 확인
TABLE_STRUCTURE_INVALID 필수 표 항목·구조 확인
F19_VALIDATION_FAILED 및 일반 코드 표 검증 결과에 따른 일반 대체 안내

 

 

T-W3가 코드 우선순위로 displayReason을 구성함.

fallbackReason은 진단 원문, fallbackReasonCodes는 흐름·안내에 쓰는 확장 필드임.

웹 조회는 저장된 displayReason을 사용하고 해당 칸이 없는 이전 산출물에는 공통 안내를 제공함.

자유 형식 사유 문장을 분석해 대체 유형을 정하지 않음.

 

 

예비창업 단계 미지정 사업비는 2.5.3의 rules.unassignedOriginalRows에 보존함.

빈 원본 행·단계 미지정 입력의 판정은 6.4 입력 없음 처리에 연결함.



 

 

 

 

 

3.4.1.3 F18 이미지 명세 생성

명세 생성: T-W2는 이미지 항목 2.3.6·3.3.6에서 USER_FLOW와 SERVICE_ARCHITECTURE를 각각 생성함. 항목 번호와 flowType을 합친 키로 동시 최대 2개를 처리함.

architecture = {'design': source.get('architecture', {}), 'validationFeedback': feedback}
with partner_call(tools.for_item(f'{code}-{flow}'), instruction):
    output = gpt.generate_image_spec(
        item=source.get('item_spec'), architecture=architecture, flow_type=flow)

 

명세는 nodes·flowType·visualStyle를 포함함. 

visualStyle의 palette·background·accent·cardStyle 등을 로컬 렌더러에서 적용함.

명세 계약 위반은 호출 형식 오류로 재시도함.

 

 

 

 

SVG 렌더링과 저장: diagram_svg.render가 가로 카드·화살표와 안내문을 포함하는 SVG 바이트를 생성함. tools.files.put으로 저장하고 DiagramSpec.imageFile에 FileRef를 연결함.

flowType 그림 표시 제목 파일명
USER_FLOW 서비스 흐름도 userflow.svg
SERVICE_ARCHITECTURE 서비스 구조도 architecture.svg

 

 

이미지 항목의 화면 제목은 이미지·서비스 구조도임.

작성 지시·규칙의 USERFLOW 용어와 내부 식별자 USER_FLOW는 유지함. 생성 명세는 diagramOutputs[code].imageSpecs, 파일 연결은 diagrams에 보존함.

 

 

문서 내 SVG 배치: 실구현 그림은 viewBox로 캔버스 비율을 정의함. 테스트 조립의 원페이지·계획서 그림 SVG는 width=1200·height=520·viewBox="0 0 1200 520"을 함께 지정해 웹 문서 내려받기의 그림 비율을 유지함.

 

 

다시 생성할 때: 목표 항목의 validationFeedback과 사용자 재작성 보완 지시를 architecture에 전달함. 목표 밖 항목은 직전 명세와 두 DiagramSpec을 이어받음. 재개에서는 성공한 그림 명세를 키별로 재사용함.

 

 

SVG 가독성·색상·텍스트 처리

_safe_color는 HEX·rgb/rgba·hsl/hsla 표현을 받아 유효한 색을 적용하고 기본 팔레트와 연결함. _card_text_color는 HEX 카드의 sRGB 상대 명도를 계산해 흰 글자와 짙은 글자(#172033) 중 대비가 큰 색을 선택함. 밝은 카드·어두운 카드의 두 경우를 회귀 테스트로 확인함.

render는 노드 개수로 카드 폭을 나누고 화살표·제목·고지를 배치함. 카드 radius는 0~28 범위로 제한하고 노드 텍스트는 HTML escape로 SVG에 삽입함. 명세의 visualStyle과 본문의 내용·파일 참조를 분리해 같은 렌더링 규칙으로 서비스 흐름도·구조도를 생성함.



 

 

 

 

3.4.1.4 F16~F18 작성 단계 내부 실패·재시도

작성 중 호출 복구와 검증 결과에 따른 재수행을 다음처럼 구분함. 사용자 선택 묶음 재작성은 7단계에서 설명함.

구분 F16 본문 F17 표 F18 그림
생성 처리 항목별 모델 요청 Python 원본 행 구성 flowType별 모델 명세·로컬 SVG
호출 형식/일시 오류 tools.llm 재시도 로컬 함수 처리 tools.llm 재시도, 파일 저장은 tools.files 정책
생성 자체 검사 응답 계약·본문 정리 필수 컬럼·행 길이 검사 nodes 계약
구조 자체 검사 불통과 응답 형식은 재시도, 내용은 T-V1 대조 즉시 설명문 대체 명세 계약은 재시도
T-V1 fail 재수행 목표 항목 재작성→재검증 같은 표를 재검증 목표 그림 재작성→재검증
검증 재수행 한도 이후 남은 fail을 판정에 보존 fail 표를 설명문으로 대체·fail 유지 남은 fail을 판정에 보존

 

 

호출 재시도 기본 횟수는 5회이며 오류 분류·대기 합 상한에 따라 종료함.

형식 오류는 고정 간격, 일시 오류는 늘리는 간격·무작위 지연·Retry-After를 적용함. 입력·운영 오류는 한 번만 시도함. 검증 실패 재수행 기본 한도는 항목마다·사이클마다 1회임.

 

T-W3의 같은 입력 자체 검사 실패는 그 시도에서 확정 대체 동작을 적용함.

본문·그림 생성과 검증을 재수행하는 경우에는 새 실행·산출물 버전을 기록함.



 

 

 

 

 

3.4.2 F16~F18 결과 구조와 생성 산출물 보존

본문·표·그림의 생성 출력은 Task별 산출물에 보존함.

M-1은 이를 planDoc에 합치고 T-V1은 같은 항목 계약·원본 사실·근거를 다시 구성해 검증함.

함수 생성 출력 보존 계획서·근거 연결
F16 sectionOutputs[항목]의 generatedText·facts·sourceRefs·needsUserConfirmation·issues PlanSection.sentences, 항목 번호·제목·태그
F17 tableOutputs[항목]의 tables·generatedText·issues·대체 여부/사유/코드/안내 TableSpec.sourceRef와 tableSections의 같은 항목 번호
F18 diagramOutputs[항목]의 imageSpecs·imageTypes·nodes·flowType·visualStyle·facts·sourceRefs DiagramSpec.diagramId·sourceRef·imageFile
공통 근거 strategyData·marketStrategyData·original_facts·research section_source로 작성·검증의 같은 원본 근거 구성
전략 산출물·원본 사실·조사 근거
  ├─ sectionOutputs → 본문 문장
  ├─ tableOutputs + tables + tableSections → 표·표 서술
  └─ diagramOutputs + diagrams → 그림 명세·SVG 파일 참조
       → M-1 → planDoc@버전
       → T-V1 → sectionResults + docScore

 

모델명·응답 ID·토큰은 CallLog·CallTry에, 생성·재수행·재작성은 ExecutionRecord에 기록함.

산출물은 내용과 근거를, 실행 기록은 입력·출력 버전 참조와 운영 정보를 보존함.

검증 판정의 verifiedRef는 검증한 계획서 버전을 가리킴.



 

 

 

 

 

 

3.4.3 작성 데이터 계보: sourceKeys 선별·작성·검증 전달

항목 번호를 기준으로 작성 계약, 생성 출력, 원본 사실과 검증 결과를 연결함.

FormSpec 항목 번호 → execution_contract의 해당 spec
  → sourceKeys로 canonical 값 선택
  → section_source로 원본·출처·전략 provenance·제약 구성
  → T-W1 F16 / T-W2 F18 / T-W3 F17
  → 항목별 생성 출력·PlanSection·TableSpec·DiagramSpec
  → M-1 계획서 합치기
  → T-V1이 같은 항목의 출력·원본 근거를 대조
  → SectionResult.verifiedRef + DocScore

 

F17은 사용자 원본 표 행을 우선 사용하고, F18은 모델 명세와 렌더링 파일 참조를 함께 보존함.

본문 생성의 프롬프트 압축은 중복 근거만 조절하고 검증 근거는 전체 전략 산출물에서 다시 구성함.

 

재작성에서는 목표 항목만 새 버전으로 갱신하고 나머지 base 출력·판정은 이어받음.

이 계보를 통해 해당 본문·표·그림이 어느 원본과 어떤 계획서 버전으로 검증되었는지 추적함.




 

 

 

 

 

4. 작성 항목 연결 (FormSpec + execution_contract.json)

FormSpec은 항목 번호·화면 제목·태그·종류를 정의함. execution_contract.json은 같은 항목 번호의 functionId·title·displayTitle·sourceKeys·rules를 정의함. 연결 코드가 두 계약을 결합해 양식 순서로 작성·검증함.

{
  "sectionId": "2.1.2",
  "functionId": "F16",
  "displayTitle": "개요 요약",
  "sourceKeys": ["item_spec", "market_analysis", "development_plan"],
  "enabled": true
}

 

 

title은 모델 작성 지시, displayTitle은 화면 제목임.

sourceKeys는 전략 결과에서 사용할 근거 경로를 뜻함.

아래 표는 같은 근거를 사용하는 항목 관계를 정리하며, 사용자 재작성 범위는 별도의 묶음 매핑으로 결정함.

 

활성 항목 수는 일반 10개(F16 10), 예비 25개(F16 20·F17 4·F18 1), 초기 24개(F16 20·F17 3·F18 1)임. 서비스 신청자 유형은 예비/초기 계약으로 연결하고 일반 계약은 공통 작성 함수의 상세 기준으로 함께 관리함.

 

 

일반 사업계획서: 10개 섹션 (F16 10)
공유 sourceKey 연관 항목 (sectionId · 제목 · functionId)
item_spec 1.1.1 기술개발 개요 (F16)
market_analysis 1.1.2 기존기술 문제점 (F16), 1.1.3 시장동향·개발 필요성 (F16)
development_goal 1.2.1 최종 개발목표 (F16), 1.2.2 핵심기술 개발내용 (F16), 1.2.3 성능지표·측정방법 (F16)
development_method 1.3.1 기술개발 방법·확보방안 (F16)
development_plan 1.4.1 제품 개발계획 (F16)
production_plan 1.4.2 양산 계획 (F16)
marketing_strategy 1.4.3 마케팅·시장진입 전략 (F16)
예비창업패키지: 25개 섹션 (F16 20, F17 4, F18 1)
공유 sourceKey 연관 항목 (sectionId · 제목 · functionId)
item_spec 2.1.1 일반현황·산출물 (F16), 2.1.2 개요 요약 (F16), 2.1.4 실현가능성 (F16), 2.2.1 창업아이템명 (F16), 2.2.2 산출물 (F16), 2.3.1 아이템 개요 (F16), 2.3.6 이미지·서비스 구조도 (F18)
web_data 2.1.1 일반현황·산출물 (F16)
market_analysis 2.1.2 개요 요약 (F16), 2.1.3 문제인식 (F16), 2.3.2 문제인식 본문 (F16), 2.4.1 문제인식 세부 3가지 (F16)
development_plan 2.1.2 개요 요약 (F16), 2.1.4 실현가능성 (F16), 2.5.2 개발계획 표 (F17)
budget 2.1.4 실현가능성 (F16), 2.5.3 1단계 사업비 표 (F17), 2.5.4 2단계 사업비 표 (F17)
growth_strategy 2.1.5 성장전략 (F16), 2.3.4 성장전략 본문 (F16), 2.6.1 성장전략 명시 (F16)
team_capability 2.1.6 팀 구성 (F16), 2.3.5 역량 활용계획 (F16), 2.7.1 팀 역량 (F16)
feasibility_plan 2.3.3 실현가능성 본문 (F16), 2.5.1 실현가능성 명시 (F16)
architecture 2.3.6 이미지·서비스 구조도 (F18)
schedule 2.6.2 전체 사업추진 일정 표 (F17)
resource_plan 2.7.2 장비·시설 계획 (F16), 2.7.3 채용 역량 계획 (F16), 2.7.4 협력기관 협업 (F16)
초기창업패키지: 24개 섹션 (F16 20, F17 3, F18 1)
공유 sourceKey 연관 항목 (sectionId · 제목 · functionId)
item_spec 3.1.1 일반현황·산출물 (F16), 3.1.2 개요 요약 (F16), 3.1.4 실현가능성 (F16), 3.2.1 창업아이템명 (F16), 3.2.2 산출물 (F16), 3.3.1 아이템 개요 (F16), 3.3.6 이미지·서비스 구조도 (F18)
web_data 3.1.1 일반현황·산출물 (F16)
market_analysis 3.1.2 개요 요약 (F16), 3.1.3 문제인식 (F16), 3.3.2 문제인식 본문 (F16), 3.4.1 문제인식 세부 3가지 (F16)
development_plan 3.1.2 개요 요약 (F16), 3.1.4 실현가능성 (F16), 3.5.2 개발계획 표 (F17)
budget 3.1.4 실현가능성 (F16), 3.5.3 정부지원사업비 집행계획 표 (F17)
growth_strategy 3.1.5 성장전략 (F16), 3.3.4 성장전략 본문 (F16), 3.6.1 성장전략 명시 (F16)
team_capability 3.1.6 팀 구성 (F16), 3.3.5 역량 활용계획 (F16), 3.7.1 팀 역량 (F16)
feasibility_plan 3.3.3 실현가능성 본문 (F16), 3.5.1 실현가능성 명시 (F16)
architecture 3.3.6 이미지·서비스 구조도 (F18)
schedule 3.6.2 전체 사업추진 일정 표 (F17)
resource_plan 3.7.2 장비·시설 계획 (F16), 3.7.3 채용 역량 계획 (F16), 3.7.4 협력기관 협업 (F16)

 

 

 

 

항목 종류와 작성 Task

종류 함수 Task 출력
section F16 T-W1 본문·sectionOutputs
table F17 T-W3 표·표 서술·tableOutputs
image F18 T-W2 두 그림 명세·SVG·diagramOutputs

FormSpec.sectionKinds를 사용하고 종류 목록이 맞지 않으면 해당 계약의 contentType으로 채움. 태그는 rework_map.py의 항목별 묶음 표에서 구성함.

 

 

재작성 묶음과 목표 항목

사용자 선택 묶음은 bundle_items로 항목을 고르고 종류별 Task로 나눔.

본문은 T-W1, 표는 T-W3, 그림은 T-W2로 전달하며 문제 목록을 targetItems에 연결함. 일반현황·개요 및 그림의 새 묶음은 GENERAL_BUNDLES_ENABLED 스위치로 관리함(기본 꺼짐).

묶음 항목 범위 태그·작성 Task
문제인식 2.4.x / 3.4.x 1-1 · 종류별 작성 Task
실현가능성 2.5.x / 3.5.x 2-1 · 본문 T-W1·표 T-W3
성장전략 2.6.x / 3.6.x 3-1 · 본문 T-W1·표 T-W3
팀 구성 2.7.x / 3.7.x 4-1 · T-W1
일반현황 · 개요 (스위치) 2.1.x·2.2.x·2.3.1~2.3.5 / 초기의 같은 범위 0-1 · T-W1
그림 (스위치) 2.3.6 / 3.3.6 0-2 · T-W2

 

 

 

스위치를 켜면 문서층 묶음은 일반현황·개요→그림→문제인식→실현가능성→성장전략→팀 구성의 6개로 구성함.

그림은 해당 항목 fail·warning이 있을 때 후보가 되고 점수 미달 시의 일괄 묶음 후보에서는 제외함.

묶음 목록·남은 기회·요청 접수는 현재 스위치를 읽으며 기존 계획서에 저장된 태그와 이미 사용한 기회 이력은 유지함.

 

 

 

 

sourceKeys 공유표는 작성·검증 근거를 설명하고, 묶음 매핑은 사용자 재작성 범위를 설명함. 대상 밖 결과는 직전 base 산출물을 사용하고, 아직 결과가 없는 항목은 생성해 전체 양식을 채움.




 

 

 

 

 

5. 문서 유형별 작성 규칙 (writing_rules.json)

writing_rules.json의 공통 규칙을 먼저 적용하고, documentTypes에서 kind에 맞는 규칙을 추가 적용함.

요청된 항목만 작성하고 근거 없는 사실은 확인 필요로 표시하며, 실적·계획·제안을 구분함.

규칙 범위 적용 기준
공통 요청 항목만 작성, 근거 없는 사실 확인 필요 표시, 실적·계획·제안 구분, 공문서형 문체와 개인정보 제한
general 불릿 중심, 정량 지표·측정 환경 제시, 시장·기술·사업화 구분
pre_startup MVP·고객검증·실증 중심, 미확정 금액·기간·인원 표시, 해당 유형 이미지 항목 적용
early_startup 실행 증거와 확장 계획 구분, 사업비·성능·일정 구체화, 해당 유형 이미지 항목 적용

 

 

이 규칙은 작성 오류를 줄이기 위한 내부 운영 기준이며 공고 원문을 그대로 옮긴 내용은 아님.

유형별 Markdown 템플릿(general.md, pre_startup.md, early_startup.md)과 persona·style guide·section checklist는 writing_prompt에서 파일별 최대 3,500자 발췌를 읽어 F16 프롬프트에 적용함.

작성 기준은 JSON 규칙과 참고 Markdown에서 관리함.

writing_prompt는 공통 규칙→유형별 규칙→참고 기준 순으로 합성하고, 항목별 공고·양식 기준을 추가함.



 

 

 

 

5.1 항목별 F16/F17/F18 작성 및 작성 단계 재시도

작성 구간은 T-W1 본문→T-W2 그림→T-W3 표→M-1 합치기 순서임.

각 Task가 FormSpec의 해당 종류 항목을 선택하고 계약·sourceKeys·유형 규칙을 적용함.

작성 단계 실행 입력과 처리 호출 복구·검증 재수행
T-W1 / F16 section_spec·source_data·writing_rules, 항목별 공고·양식 기준 형식/일시 오류는 tools.llm 재시도, T-V1 fail은 목표 본문 재수행
T-W2 / F18 item_spec·architecture·flowType, 두 명세와 SVG FileRef 명세 계약 오류는 재시도, T-V1 fail은 목표 그림 재수행
T-W3 / F17 원본 tableData·columns·rows·rules, 표·서술문 자체 구조 실패 즉시 설명문 대체, T-V1 fail은 표 재검증 후 필요 시 대체
M-1 planDoc·tables·tableSections·diagrams 표 서술·구조화 표·그림을 양식 순서 계획서에 합침

 

 

 

T-W1은 동시 최대 4, T-W2는 동시 최대 2이며 결과 순서는 양식에 맞춤.

새로 만들 항목은 targetItems와 base 출력 유무로 결정함. 재개 입력의 성공한 항목은 이어받고 빠진 것만 실행함.

작성 단계에서는 생성 출력·원본 근거·파일 참조를 보존하고, 합치기 이후 T-V1에서 전체 또는 목표 항목을 검증함.

검증 실패 재수행과 사용자 선택 재작성의 흐름·횟수는 7단계에서 관리함.




 

 

 

 

6. F19 검증·결과 저장·상태 분기

T-V1은 작성 Task와 M-1 이후 항목별 F19를 실행함.

먼저 Python으로 본문 구조, 원본 사실·근거, 일정·예산 제약을 확인함.

항목 동시 처리 수는 최대 4이며 순서는 다음과 같음.

F19-1~F19-6은 이 문서에서 검증 처리를 나누어 설명하는 단계 번호임.

실제 진입 함수는 항목별 validate_section이며, Python 기본 검사 이후 필요한 항목에 F19 의미 검증 모델 요청을 연결하고 보정·채점은 로컬 코드에서 수행함.

Python 기본 검사
  ├─ 문제 발견 → issues 기록, fail 처리, 의미 검증은 생략
  └─ 통과 → 규정·공고 기준을 포함한 의미 검증
               → 결과 조정 및 점수 계산
               → pass / warning / fail 저장

 

 

 

검증 대상은 항목 단위로 구성함.

  • 첫 작성: FormSpec의 전체 항목 출력과 원본 근거를 검증함.
  • 검증 실패 재수행: 이번 생성 항목 중 대상 fail 항목만 다시 검증함.
  • 사용자 묶음 재작성: 재작성한 항목을 검증하고 나머지 baseSectionResults를 이어받음.
  • 재개: 성공한 항목 판정은 priorResults에서 이어받고 빠진 항목만 호출함.

표의 사용자 원본 입력 유무와 F19 inputErrorCodes는 연결부에서 inputMissing·inputError로 변환함. 검증 결과는 sectionResults, 원점수는 항목별 score, 문서층 환산값은 docScore에 보존함.



 

 

 

 

6.1 저비용 구조·계약 검사 (F19-1 · Python)

agent_validation_1/validation_1.py는 LLM에 의미 검증을 요청하기 전에 작성 결과가 기본 형식과 원본 제약을 지키는지 Python으로 빠르게 확인함.

 

  • 본문: generatedText가 있고, 항목별 exactItems·minItems·maxLines·maxSentences·requiredFields·stages 조건을 지키는지 확인함.
  • 표·이미지: 필요한 표와 필수 컬럼, 이미지 노드 수(3~6개)와 이미지 유형 명세를 확인함.
  • 원본 제약: 해당 항목의 기능 목록, 마감일, 정부지원사업비 상한을 확인함.

 

 

 

위반을 issues로 남기고 fail로 처리하는 흐름을 간단히 나타내면 다음과 같음.

if not text.strip() and not table_only:
    issues.append("필수 generatedText 없음")
if missing_columns:
    issues.append("필수 표 컬럼 누락")
if deadline_exceeded:
    issues.append("마감일 초과")
if issues:
    return {"status": "fail", "semanticCalled": False, ...}

 

표 검사와 원본 입력 확인: Python은 표 존재·필수 컬럼을 검사하고, minItems가 설정된 표 항목은 행 수를 대조함. 원본 rows 또는 미지정 원본 행이 있는 구조화 표는 table_only로 인정함. 빈 사용자 원본은 연결부의 inputMissing 처리로 안내하고 내용 적합성은 해당 항목 기준과 의미 검증에 연결함.

 

상위 항목 개수와 구조화 표의 검사

F19는 번호 불릿→최상위 기호 불릿→일반 불릿 순으로 상위 항목을 선택해 exactItems를 검사함. 최상위 항목 아래의 세부 '-' 설명을 별도 상위 항목으로 세지 않도록 구성함. minItems는 본문 불릿 수 또는 표 행 수에 적용하고 maxLines·maxSentences·requiredFields·stages를 함께 검사함.

표에 원본 rows 또는 unassignedOriginalRows가 있으면 구조화 표를 검토 내용으로 인정함. generatedText에 표를 문자열로 재복제하지 않아도 표의 columns·rows·rules에서 원본 사실·예산·일정을 대조함. 이미지 항목은 두 flowType과 노드 수·문자열 계약을 확인함.



 

 

 

6.2 원본 사실·근거·상태값 대조 (F19-2 · Python)

 

F19가 대조하는 입력

  • originalFacts: 사용자 입력에서 구성한 아이템·기간·팀·수익모델·사업비·일정 원본 사실
  • strategyProvenance: F01~F15 결과와 그 상위 근거
  • source_data: 항목의 sourceKeys로 골라 작성 단계에 전달한 자료. evidence와 규정 근거도 포함하며, 의미 검증에도 전달함.

 

 

F16 결과에 facts와 sourceRefs가 있으면 원본 사실·상위 근거와 대조함. F17 표와 F18 이미지 명세도 해당 항목 출력과 section_source로 다시 구성한 원본 사실·전략 근거를 연결해 검증함.

 

 

 

상태값별 처리

상태 검증에서의 의미
provided back 입력 등 원본에서 받은 확정값. 원본과 다르면 fail
confirmed 확인된 확정값. 원본과 다르면 fail
proposed 사업계획을 위해 새로 제안한 값. 완료 사실로 쓰지 않고 계획·목표·제안임을 표시하면 warning
needs_confirmation 사용자 확인이 필요한 값. warning과 needsUserConfirmation 대상으로 기록

 

제안값에는 이를 뒷받침하는 사용자 원본 근거가 없을 수 있음. F19는 본문에서 계획·목표·제안·확인 필요로 표현했는지 확인함. 이런 표시 없이 확정 사실로 단정하면 오류로 처리함.

sourceRefs가 입력 근거나 적용 규정 출처에 연결되지 않으면 내용과 상태에 따라 출처 오류 또는 확인 경고를 기록함. 같은 원인의 메시지는 중복 제거함.

 

 

 

 

사실 경로·출처·금액의 세부 대조

_at는 점 경로와 배열 인덱스를 읽고 _fact_at는 partners/equipment/hiring처럼 평탄화된 자원 경로를 resources 아래 원본에 다시 연결함. proposed fact는 제안 경고로 구분하고 provided/confirmed의 원본 불일치는 fail로 처리함. 계획 표현과 생성 경로 중복 접두사는 provenance 확인 경고로 정리함.

 

허용 출처는 항목 sourceRefs·전략 provenance·적용 규정 sourceRefs의 합집합으로 구성함. 제공되지 않은 출처 참조는 본문의 계획/확정 상태에 따라 fail 또는 출처 확인 warning으로 기록함. 원 단위 금액은 본문에서 추출해 원본·전략 근거의 숫자와 비교하고 제안/예상/계획 금액은 별도 경고로 관리함.

 

_feature_key·_feature_tokens·_feature_present는 괄호·구분점·공백·등록 동의어·긴 기능명의 핵심 토큰을 정규화해 대조함. 기능 목록 검사는 핵심기술·개발 기능·개발방법·개발계획·양산 등 해당 제목의 항목에 적용하며 KPI/시험지표 항목은 목적에 맞게 별도 검사함. _month_key와 _agreement_duration_months는 월 표기를 통일하고 로드맵을 제외한 협약기간의 시작~종료월을 포함해 개월 수를 계산함.

 

검증 contentHash는 내용을 정렬한 JSON의 SHA-256으로 구성하고 policyVersion과 연결함. _unique_messages는 같은 문구를 제거하고 _confirmation_items는 사용자 확인이 필요한 경고를 별도 목록으로 구성함.



 

 

 

 

 

6.3 규정·공고 자료와 유형별 기준 (F19-3 · LLM 호출)

저비용 검사를 통과한 항목은 다음 기준으로 의미 검증함.

 

 

검증 프롬프트에 포함되는 내용

  • 공통 검토 기준: persona, checklist, style guide, 유형별 템플릿, validation_rubric.json
  • 자료 발췌: 문서 유형에 맞는 validation_sources.json과 규정 자료
  • 현재 항목: section_spec, 생성 본문·근거·fact·이미지 정보, source_data, 항목별 기준

 

 

참고 자료를 사용하는 방식

자료 검증에서의 역할
공고·관리기준 원문 자격, 협약, 사업비 등 명시 조건 위반 확인
신청 양식 필수 항목과 표 구조 확인
FAQ·과거 자료 기준 해석을 돕는 참고. 현재 확정 사실의 직접 근거로 사용하지 않음

항목별 기준과 관련 발췌는 criteria_registry.json 설정에 따라 선택함.

 

 

문서 유형에 따른 검증 차이

  • 예비·초기창업: 연결된 공고·관리기준에서 작성 항목에 적용할 협약기간, 정부지원사업비 상한·집행 비목·합계, 개발·PoC·매출·사업화 단계, 필수 표·항목 기준을 확인함. 실제 신청 자격 판정은 작성 전 G-01 게이트에서 처리함.
  • 일반 사업계획서: rubric에 정부 규정 원문이 연결되어 있지 않으므로 back 입력과 실행 계약을 기준으로 구조·사실·근거 연결을 확인함. 예비·초기창업의 자격·사업비 규정은 적용하지 않음.

 

공통 제약 확인

  • _strategy_limits.deadline은 협약기간 일정에 적용하며, 협약 이후 로드맵과 구분함.
  • supportLimit은 정부지원사업비 상한임.
  • featureList는 해당 개발 항목에 기능이 보존됐는지 확인함. 기능명은 괄호·구분자·공백·등록된 동의어 차이를 정규화해 비교함.

 

기준 자료의 관련도와 권위 구분

_writing_criteria와 _regulation_evidence는 sourceMappings의 locatorKeywords 주변에서 최대 두 발췌를 고르고 일치 키워드 수로 high/medium/low 관련도를 구성함. sourceRole·authorityLevel·directFactAllowed·useFor·rationale를 함께 보존해 어떤 항목 목적에 어떤 근거를 적용했는지 추적함.

의미 검증에는 high/medium 관련도 근거를 우선 전달함.

공식 공고·관리기준은 명시 조건, 신청 양식은 구조, FAQ·과거 자료는 해석 보조 역할로 적용함. F19 프롬프트는 issues·warnings·needsUserConfirmation을 각각 최대 8개, 문제 문구는 200자 이내로 정리하도록 요청함. 월·금액·단위·기능 순서의 표현 차이는 정규화된 내용으로 대조함.



 

 

 

 

6.4 의미 검증 결과 재분류·조정 (F19-4 · Python, 추가 LLM 호출 없음)

저비용 검사를 통과해 의미 검증 결과가 나온 뒤에는 판정을 다음 순서로 정리함.

 

 

  1. 경고와 실패 구분: 계획·제안·확인 필요, 출처 보완, 시험조건 미확정, 표현 구체화는 상황에 따라 warning으로 분류함. 필수 구조나 확정 사실·마감일·예산 상한 위반은 fail로 남김. semantic_review.py가 문구를 규칙으로 분류하며, 추가 LLM은 호출하지 않음.
    if any(marker in text for marker in HARD_MARKERS):
        target = hard
    elif any(marker in text for marker in ADVISORY_MARKERS):
        target = warnings
    else:
        target = hard
  2. HARD_MARKERS는 필수 누락·원본 불일치처럼 실패로 남길 문구를 찾는 키워드 목록이고, ADVISORY_MARKERS는 근거 보완·제안처럼 경고로 볼 문구를 찾는 목록임.
  3. 실제 결과 구조와 대조: _reconcile_validation()이 모델 판정과 저장된 표·이미지를 비교함. 표의 필수 열이나 두 이미지 명세가 이미 있는데 누락으로 지적한 경우, 그리고 F17 일정·예산 표에 모든 featureList를 반복하지 않았다는 지적은 오류 목록에서 제거함.
  4. if spec.get('functionId') == 'F17': issues = [i for i in issues if 'featureList 누락' not in i]
  5. 협약 일정 확인: 초기창업 3.5.2 표의 종료월이 원본 협약 일정의 마지막 달을 넘으면 fail로 추가함. 협약 이후 로드맵은 협약기간 일정과 따로 구분함.
  6. if source_end and generated_end and generated_end > source_end: validation.setdefault('issues', []).append( f'개발계획 표 종료월 {generated_end}이 원본 협약 일정 종료월 {source_end} 이후임') validation['status'] = 'fail'

 

 

위 코드는 각 처리의 핵심 부분만 발췌한 것임. 실제 코드는 표·이미지 누락 문구, 검증 상태와 원본 일정 행을 더 확인함.

이 조정이 끝난 결과를 최종 pass·warning·fail 판정과 다음 처리 단계에 사용함.

 

 

 

 

입력 없음·입력 오류 처리

판정 필드 구조화된 기준 저장·후속 처리
inputMissing 표 원본 행 없음, 예비창업 사업비 단계 미지정 행 존재 issues를 비우고 입력 확인 필요 — 사업비 집행계획/추진 일정 warning으로 기록
inputError 최종 fail이고 inputErrorCodes에 입력 위반 코드 존재 status·issues·점수를 유지하고 입력 오류로 표시

입력 오류 코드는 AGREEMENT_MONTHS_EXCEEDED, AGREEMENT_SCHEDULE_AFTER_DEADLINE, SUPPORT_LIMIT_EXCEEDED임. issue 문구 대신 코드·판정 필드를 읽어 흐름을 결정함. 입력 없음/입력 오류 항목은 검증 실패 재수행·표 대체·해당 항목에 따른 사용자 재작성 후보에서 제외하고 입력 안내에 연결함.

 

초기창업 3.5.3의 단계 미지정 원본 보존 판정도 담당자 보정 규칙을 적용함. 최종 fallbackReasonCodes에는 표 대체·입력 오류 코드를 합쳐 보존해 안내와 대체 사유를 연결함.



 

 

 

 

 

 

 

6.5 점수 계산과 공식 배점 구분 (F19-5 · Python)

scoring.py는 evaluation_rubric.json을 읽어 항목별 점수를 계산함. 이 파일은 모델 프롬프트가 아니라 점수 계산 기준표임.

 

기준표에는 점수 범위(0~100), 평가 항목과 유형별 가중치, 기본 감점, 공식 배점 참고 정보가 들어 있음.

다만 fail 40점은 scoring.py에 고정값으로 적용되고, issue·warning·사용자 확인 필요 감점은 rubric의 penalties 값을 읽어 적용함.

rubric의 fail: 40은 코드의 고정값과 같은 숫자로 선언되어 있음.



6.5.1 rubric 평가 항목과 유형별 가중치

평가 항목 보는 내용 일반 예비·초기
구조 (structure) 필수 본문·항목 수·표 열·이미지 구조 25% 20%
작성 요건 (requirement) 항목 목적과 공고 기준 충족 25% 30%
근거 (provenance) 출처·원본 사실·상태값 추적 가능성 20% 20%
일관성 (coherence) 전략·원본·연관 항목 간 내용 일치 20% 15%
명확성 (clarity) 사실·제안 구분과 문장 가독성 10% 15%

 

 

가중치는 공식 배점이나 심사 통계에서 가져온 값이 아니라, 문서 유형별 평가 초점을 반영한 내부 배분임.

  • 일반 유형은 특정 공고의 평가 기준이 고정되어 있지 않아 구조와 작성 요건을 각각 25%로 균형 있게 두고, 전략·원본 간 일관성은 20%로 반영함.
  • 예비·초기 유형은 공고 평가영역과 필수 작성 기준을 맞추는 일을 우선해 작성 요건을 30%로 높임. 근거 추적은 사실 신뢰성에 중요하므로 모든 유형에서 20%로 유지함.
  • 구조·일관성·명확성은 유형별 우선순위에 따라 나머지 비중을 배분함. 필수 구조 위반은 점수 비중과 별도로 F19에서 fail 처리될 수 있어 구조 점수만으로 심각도를 표현하지 않음.

이 비율은 문서 유형별 작성 목적과 검토 우선순위를 반영하는 내부 정책임.



 

 

 

 

 

6.5.2 점수 계산 순서와 기본 감점

점수 계산은 다음 순서로 진행함.

  1. 각 평가 구성요소를 100점에서 시작함.
  2. F19 판정과 항목별 감점을 해당 구성요소에서 차감함. 기본 감점은 fail 40점, issue 12점, warning 3점, 사용자 확인 필요 2점임.
  3. 구성요소 점수에 문서 유형별 가중치를 적용해 합산함.
  4. 최종 score, 구성요소별 components, 감점 사유와 값인 deductions를 결과에 저장함.

 

 

 

기본 감점이 어느 항목에서 차감되고 전체 점수에 어느 정도 영향을 주는지는 다음과 같음.

판정 차감 대상 전체 점수에 미치는 대략적 영향 해석
fail 40점 structure; 최종 점수는 최대 59점 가중치 기준 약 8~10점 차감 후 59점 상한 적용 필수 위반이 높은 점수로 통과처럼 보이지 않게 함
issue 12점 requirement 또는 provenance 약 2.4~3.6점 필수요건·근거 결함을 보완 경고보다 크게 반영
warning 3점 provenance 또는 clarity 약 0.3~0.6점 개선 신호를 남기되 제안·표현 보완의 영향은 작게 제한
사용자 확인 필요 2점 clarity 약 0.2~0.3점 사실 오류와 구분해 가볍게 반영하고 사용자 결정 과제를 표시

 

감점은 구성요소 점수에 적용한 뒤 유형별 가중치로 합산함.

동일 문구는 중복 차감하지 않으며, 감점 후 구성요소 점수는 0점 아래로 내려가지 않음.

일관성(coherence)은 rubric의 평가 성분으로 가중 평균에 포함함. 현재 감점 분류는 structure·requirement·provenance·clarity에 적용하며, 전략·원본·항목 간 불일치 진단은 그 내용에 맞는 검증 문제와 감점 사유로 연결함.



 

 

 

 

 

6.5.3 감점 간격을 둔 이유

  • fail 40점: 필수 구조·확정 사실 위반의 심각도를 반영하고, 별도 59점 상한으로 다른 구성요소의 높은 점수가 항목 실패를 가리지 않게 함.
  • issue 12점: 필수요건·근거의 실질적 결함을 가벼운 보완 의견보다 뚜렷하게 반영하도록 warning 3점의 네 배로 설정함.
  • warning 3점: 결과 저장은 가능하지만 보완이 필요한 상태이므로 점수에 작은 개선 신호를 남김.
  • 사용자 확인 필요 2점: 사용자 판단이 필요한 상황 자체를 확정 사실 오류처럼 취급하지 않도록 가장 낮은 감점으로 둠.

40·12·3·2는 필수 위반→실질적 결함→보완 경고→사용자 확인의 심각도 순서를 표현하는 내부 정책값임.



 

 

 

 

 

 

6.5.4 공고 평가영역과 내부 점수의 관계

먼저 볼 점수의 의미

F19의 evaluation.score와 estimatedPoints는 이 시스템의 내부 품질 점수임. 평가위원의 실제 점수나 선정 가능성을 예측하는 공식 점수가 아님. 2026년 공고가 평가영역을 공개하더라도 사업계획서 항목별 세부 배점은 제공하지 않아, 현재 가중치와 감점값을 공식 배점에서 산출할 수 없음.

 

 

공고에서 확인되는 공식 평가 기준

2026년 모집공고에서 확인되는 평가영역과 공개되지 않은 점수 정보는 다음과 같음.

유형 공고에서 명시한 기준 공고에 제시되지 않은 점수 정보
예비창업패키지 문제인식·실현가능성·성장전략·팀(기업) 구성. 중기부 제2026-207호(2026-03-24) 평가영역별·사업계획서 항목별 점수 배분
초기창업패키지 일반형 문제인식·실현가능성·성장전략·팀(기업) 구성. 중기부 제2026-38호(2026-01-23) 평가영역별·사업계획서 항목별 점수 배분
일반 사업계획서 이 실행 유형에 연결된 특정 정부 공고 기준 없음 적용할 공고별 공식 배점 기준

 

원문: 예비창업패키지 2차 수정 공고(중소벤처기업부), 초기창업패키지 일반형 공고(중소벤처기업부)

 

 

 

 

 

공고의 평가영역은 예비·초기 유형의 검토 초점을 정하는 참고 기준으로 사용함. 다만 평가영역별·사업계획서 항목별 점수가 공개되지 않아 내부 가중치와 감점값의 직접적인 수치 근거로 삼을 수 없음. 일반 사업계획서는 연결된 특정 정부 공고가 없어 내부 계약을 기준으로 평가함.

 

 

점수 보정과 성과 측정

가중치·감점의 개선은 동일 계획서 표본에 대한 전문가 항목 평가와 내부 채점 결과를 함께 비교해 검토함. 문서 유형·항목·문제 종류별로 평가 자료를 묶고, 원점수·문서층 환산점수·최종 수용 상태를 구분해 기록함. 재작성 전후 비교는 같은 입력과 기준에서 수행하고 측정 기간·표본 수를 함께 제시함.



 

 

 

 

6.5.5 별도 제약 감점과 문서층 환산

 

 

일정·지원금 제약 감점

  • F19의 AGREEMENT_SCHEDULE_AFTER_DEADLINE 코드가 있으면 requirement에서 40점을 차감함. 협약기간 일정에 적용함.
  • F19의 SUPPORT_LIMIT_EXCEEDED 코드가 있으면 requirement에서 50점을 차감함.

 

 

 

두 감점은 사업계획의 실행 가능성과 예산 준수에 직접 영향을 주므로 requirement에서 별도로 차감함.

  • 일정 초과 40점: 협약기간 안에 계획을 이행하기 어려운 중대한 요건 위반으로 반영함.
  • 지원금 상한 초과 50점: 신청 가능한 사업비 한도를 벗어나므로 일정 초과보다 더 큰 감점을 둠.

 

두 수치는 공식 배점이나 실제 심사자료에서 산출된 값이 아니라 내부 심각도 정책값임.

같은 위반이 검증 fail 또는 issue에도 기록되면 감점이 누적될 수 있음. 이 경우 deductions에서 사유별 차감 내역을 확인해야 하며, 중복 적용은 같은 결함의 점수 영향을 키울 수 있음.

 

 

공식 배점과 내부 점수

officialExpectedScoring은 공고 평가영역과 필수조건을 참고 기준으로 제공하지만, 공식 항목별 배점표는 아님.

따라서 officialPoints는 null로 저장함. 계산된 값은 estimatedPoints의 내부 예상 배점으로 표시하고, isOfficial은 false로 기록함.

신뢰도는 예비·초기 유형 medium, 일반 유형 low임. 이 구분도 공식 점수의 신뢰도가 아니라 참고할 공고 기준의 유무를 나타냄.

documentLayerScore는 F19 내부 품질 점수를 70점 만점으로 환산한 값임. fail의 59점 상한도 내부 상태 표현 규칙이며, 정부기관의 공식 심사 점수나 합격선을 재현하지 않음.

 

 

 

 

항목 원점수와 문서층 환산

T-V1이 score_section을 직접 호출해 원점수 0~100을 구함.

이 원점수를 실행 설정의 문서층 배점과 전체 항목 수로 환산함.

D = settingsSnapshot.scoring.docLayerMax (기본 70)
N = 전체 검증 항목 수
항목 환산점수 = round(항목 원점수 × D / 100 / N, 2)
문서층 총점 = 반올림된 항목 환산점수의 합
값 의미 저장 위치
score 담당자 rubric 항목 원점수 0~100 SectionResult.score
문서층 항목 점수 원점수를 D와 N으로 환산 DocScore.items[].score
문서층 총점 항목 환산점수 합 DocScore.total
표시 점수 문서층 총점 / D × 100, 소수 첫째 자리 G-02a ScoreReport.displayScore

 

 

 

담당자 반환의 documentLayerScore(원점수×0.7)는 원점수와 구별해 관리하고 서비스에서는 원점수에서 문서층 배점으로 한 번 환산함. varianceFlag의 반환값은 false임.

 

 

G-02a는 문서층 표시 점수를 기준점(기본 80)과 비교함. G-02b는 문서층과 코드 점검·계획서 대조의 환산점수를 합산함. 기본 배점은 문서층 70·코드 점검 15·계획서 대조 15이며 실행 설정을 따름.

 

 

 

환산 예시: 예비창업 25개 항목의 원점수가 각각 90점이고 D=70이면 항목 환산점수는 2.52점, 문서층 총점은 63/70점, G-02a 표시 점수는 90/100점임.

문서 평가 기준점 80은 이 표시 점수와 비교함. G-02b는 이후 산출물층 점수를 문서층 63점에 더해 종합 판정함.

 

 

 

 

채점 추적성과 사유 보존

score_section은 구성요소별 점수·가중치·감점 목록·기준 파일 가용 상태·공고 기준 발췌를 함께 구성함. issues·warnings·확인 목록의 동일 사유는 한 번 차감하고 본문 없음·평가 기준 파일 없음·제약 형식 해석 문제도 각각의 사유로 보존함. evaluationHash는 항목 계약·생성 결과·검증 결과를 정렬한 JSON 해시로 계산해 정책 버전과 연결함.

T-V1의 문서층 합계는 소수 둘째 자리로 반올림한 항목 점수를 Decimal로 합산함. 목표 항목 밖 판정은 verifiedRef를 포함해 그대로 이어받고 전체 DocScore는 다시 계산함. 검증 근거·감점·항목 판정·환산점수를 연결해 점수 변화의 원인을 확인할 수 있게 구성함.



 

 

 

 

6.6 최종 상태와 회귀 재작성 연결 (F19-6 · Python)

상태 판정 기준 다음 처리
pass 필수 구조·원본·근거 대조 통과 판정·점수 보존, 문서 평가에 반영
warning 제안값·확인 필요·근거/표현 보완 또는 입력 없음 보완 사항 보존, 사용자 묶음 후보와 입력 안내 기준에 따라 처리
fail 필수 구조·확정값·기간·지원금·기능 제약 위반 입력 오류 여부와 이번 생성 항목 여부에 따라 항목 재수행 또는 입력 안내

 

서버의 검증 실패 재수행은 fail 항목에 적용함. inputMissing·inputError·이미 표 대체된 항목은 제외함.

사용자 묶음 재작성 후보는 묶음에 속한 fail·warning 항목을 기준으로 만들고 입력 없음/입력 오류 항목은 후보 사유에서 제외함.

 

 

status와 warnings 목록은 각각 보존함. 기본 검사·의미 검증을 통과한 pass 항목에도 확인·보완 경고가 함께 기록될 수 있음. 표 입력 없음은 연결부에서 warning 상태로 바꾸고, 판정 보정은 최종 issues·warnings에 맞춰 상태를 조정함. 재수행·묶음 후보 판단은 저장된 최종 status와 입력 상태 필드를 기준으로 처리함.

 

 

재수행이 끝나면 G-02a가 문서층 표시 점수·재작성 후보·남은 기회로 진행가능/재작성권유/상한도달을 결정함. 사용자는 평가와 보완 내용을 확인하고 묶음 재작성 또는 다음 단계 진행을 선택함.

확인·권유는 평가 기준점과 다음 행동을 기준으로 구성함. 남은 fail은 항목별 미달로 표시하고, 사용자가 진행을 선택하면 후속 검수·통합·내려받기에 같은 판정과 점수를 전달함. 설명문으로 대체한 표도 fail 상태를 유지함.



 

 

 

 

 

6.7 판정 저장과 후속 경로 분기 (Python)

T-V1은 각 항목의 검증·채점 결과를 SectionResult로 구성하고 전체 문서층 점수를 DocScore로 반환함.

SectionResult
  ├─ sectionCode / tag / contentType
  ├─ status / issues / warnings / needsUserConfirmation
  ├─ inputMissing / inputError / fallbackReasonCodes
  ├─ score (0~100) / deductions
  └─ verifiedRef (검증한 planDoc 버전)
DocScore
  ├─ items (환산점수 / 항목 만점 / 근거 위치 / 감점 사유)
  └─ total (문서층 총점)

 

판정은 sectionResults, 문서층 점수는 docScore, 정책 버전은 scorePolicyVersion에 보존함. 목표 밖 항목은 baseSectionResults를 이어받고 전체 합계를 다시 계산함.

 

 

 

검사·판정·평가의 통과 단위

결과 필드 판단 단위 활용
CheckResult.passed 작성/전략 Task의 자체 검사 자체 검사 재수행·확정 대체 동작
SectionResult.status 계획서 항목의 pass/warning/fail 검증 실패 재수행·입력 안내·묶음 후보
ScoreReport.passed 문서층 표시 점수 또는 종합 점수와 기준점 비교 평가 안내·사용자 다음 행동
회귀 테스트 통과 건수 정의한 테스트 시나리오 개발 결과의 검증 근거

각 결과는 자신의 판단 단위로 기록함.

총점이 기준을 충족해도 fail 항목은 최종 미달 목록에 남기고, 자체 검사 대체 동작과 항목 판정도 함께 보존함.

 

 

  1. 이번 생성 항목의 fail을 확인해 검증 실패 재수행을 큐에 넣음.
  2. 본문·그림은 대상만 재생성하고 M-1 이후 대상 T-V1을 수행함. 표는 같은 표를 재검증함.
  3. 한도 뒤에도 fail인 표는 T-W3→M-1에서 설명문 대체하고 fail 판정을 유지함.
  4. G-02a가 전체 점수와 항목 판정으로 평가 보고서·재작성 후보·다음 행동을 구성함.
  5. 사용자 선택 묶음 재작성은 7단계로, 후속 제작·최종 통합은 8단계 연결로 진행함.



 

 

 

 

 

참고 자료: F19 검증 기준 파일

기준 파일
저비용 검사와 판정 정책 validation_1.py, validation_rubric.json
검증 자료 manifest validation_sources.json
문서별 공통 관점 validation_persona.md, validation_checklist.md, validation_style_guide.md
유형별 검증 템플릿 general.md, pre_startup.md, early_startup.md
유형·항목별 공고·규정 연결 criteria_registry.json 및 같은 regulations 폴더의 공고·관리기준 자료
판정 재분류 semantic_review.py
점수와 예상 배점 scoring.py, evaluation_rubric.json




 

 

 

 

부록 B. 구현 실패 사례·개선 계획·성과 측정

이 부록은 생성·검증에서 다루는 오류 조건과 적용한 처리, 회귀 검증 방법, Task·항목별 성과 측정 기준을 정리함. 동일 입력·같은 정책의 실행 결과를 기준으로 최초 생성과 재수행·재작성 이후 결과를 비교함.



 

 

 

 

B.1 확인된 실패 사례와 적용한 개선

오류·오탐 유형 적용한 처리 확인 방법
F16 빈 응답·JSON 잘림·generatedText 누락 응답 계약 검사→FormatError→호출 재시도, 완료 부분 결과 보존 파싱·본문 계약·소진/재개 회귀 조건
F18 노드 수·문자열 계약 위반 36개·각 135자 노드 검사→명세 호출 재시도 노드 계약·SVG 렌더링·FileRef 연결
F17 필수 컬럼·행 구조 불일치 자체 검사 실패 시 즉시 설명문 대체·사유 코드·displayReason 기록 표 구조·대체 서술·안내 검사
표가 T-V1 재검증 후에도 fail 원본 표 유지·대상 재검증 후 한도에서 설명문 대체·fail 보존 항목별 횟수·fallbackItems·M-1 결과
제안값과 사용자 확정값 혼합 facts 상태·originalFacts·sourceRefs 대조, 계획/목표 표현 적용 원본·provenance·상태 검사
이미 존재하는 표·그림 누락 오탐 _reconcile_validation으로 실제 구조와 대조 표·두 그림 명세·검증 판정
로드맵 날짜·표현 차이 오탐 협약/로드맵 범위·기능명/날짜/단위 정규화, 구조화된 입력 오류 코드 일정 범위·동의어·금액 대조
사용자 목표 고객·일반현황 정보 누락 사용자 target_customer 보존, 일반현황 originalFacts 추가 F02 후속 전달·F16/F19 동일 근거
호출 중 일시 오류 완료 함수·항목 partial 보존, 재개에서 성공 부분 재사용 priorResults·CallTry·새 실행 연결
선택적 KIET 조회 실패 호출 재시도 소진 기록 후 로컬 근거로 계속 검색 실패·0건·근거 합치기

 

 

각 항목은 입력 fixture·기대 상태·보존 필드·재현 조건을 묶어 회귀 검증함. 원본 입력·생성 출력·검증 판정·산출물 버전을 연결해 변경 전후 결과를 비교함.

 

 

 

 

 

회귀 검증 파일 (agent-orchestration/tests/) 검증 주제
test_partner_sw_tasks.py·test_partner_sw_vendor.py 입력 오류 코드·감점·작성/검증 출력·원본 함수 연동
test_verify1_flow.py 항목 fail 재수행·표 대체·재작성 후보
test_kiet_search.py·test_bootstrap.py KIET 스위치·실패 소진·기존 근거 활용·워커 연결
test_table_fallback_reason.py·test_sw_contract_fields.py 사유 코드·사용자 안내·확장 계약
test_general_bundles.py 새 묶음 범위·태그·스위치·작성 Task
test_tc4.py 통합 누락·미달 항목·파일 연결·사용자 안내
test_file_fields.py FileRef·스텁 SVG 크기·문서 내 그림 연결
test_partner_inputs_fix.py DB 입력 원천·사용자 목표 고객·일반현황·SVG 제목
test_call_failure_tools.py·test_call_failure_openai.py 오류 분류·재시도 간격·Retry-After·대기 합 상한
test_call_failure_notice.py·test_call_failure_partner_bv.py·test_call_failure_tp2.py 공고·후속 제작·검증·검수 호출 실패 연결



 

 

 

 

 

B.2 개선 계획과 검증 방법

  1. 실패 사례 고정: 입력과 오류 조건을 익명화한 fixture로 보존하고, 기대 status·오류 코드·부분 결과·파일 참조를 명시함.
  2. 기준선 확보: 동일 문서 유형·항목·정책 버전·입력에서 최초 생성 결과와 최종 결과를 구분해 집계함.
  3. 현재 기록 활용: ExecutionRecord의 Task 실행, CallLog의 호출 목적·항목 키·모델, CallTry의 시도별 결과·시간·토큰을 연결함.
  4. 항목별 비교: SectionResult의 pass/warning/fail·입력 상태·score·verifiedRef를 생성/재작성 버전과 연결함. 새로 만든 대상과 이어받은 항목을 구분함.
  5. 운영 집계: 관리자 운영 요약·log_stats의 기록 집계로 실행 성공·호출 소진·재수행·재작성과 층별 점수를 정리함.
  6. 개선 효과 검증: 같은 fixture에서 변경 전후 오류율·최종 수용률·재작성 횟수·처리시간을 비교하고 기간·표본·누락값을 함께 기록함.
  7. 보고서 구성: Task·항목·API의 성공 단위를 각각 정의하고 점수·시간·토큰·실패 사유를 묶어 별도 비교 보고서를 구성함.

측정은 실행별 식별자를 기준으로 중복을 제거함. 취소·중단·미검증 항목은 별도 상태로 기록하고, warning의 건수와 수용률 기여를 함께 표시함.



 

 

 

 

B.3 task·항목별 성과 측정 기록

 

기록의 연결 단위

Run / 문서 유형 / 설정 사본
  → ExecutionRecord (Task·실행 계기·입력/출력 버전·상태)
  → CallLog (purpose=F번호·itemKey·모델·호출 결과)
  → CallTry (시도별 시작/종료·성공/실패·오류 종류·토큰)
  → SectionResult (항목 판정·원점수·검증 버전)
  → DocScore / ScoreReport (환산점수·비교 결과)

 

 

 

측정 단위 기록값·산출 기준 해석
Task 실행 taskId·실행 계기·상태·시각·입출력 버전 성공 실행 ÷ 완료된 전체 실행. 첫 실행·재수행·재작성을 별도 집계
F함수 LLM 호출 purpose·taskId·itemKey·모델·tries·최종 호출 결과 호출 성공과 개별 시도 성공을 구분. F01 조건부 호출·F19 의미 검증 생략은 실행 조건에 반영
사업계획서 항목 sectionCode·status·inputMissing·inputError·score·verifiedRef 완료 판정 중 pass/warning 수용률, 최초/최종 결과 별도 표시
모델 API 시도 CallTry.no·outcome·errorKind·시작/종료·토큰 실패 시도 ÷ 전체 시도, 재시도 뒤 최종 호출 성공과 별도 기록
처리시간 Task·호출·시도의 시작/종료 시각 차이 병렬 처리의 실제 경과시간과 개별 호출 시간 합을 구분
사용량 inputTokens·cachedInputTokens·outputTokens·reasoningTokens 호출처가 제공한 시도별 값 합계. 미제공은 None으로 표시
점수 원점수·문서층 환산점수·종합 점수·정책 버전 배점과 원점수를 분리하고 같은 정책의 재작성 전후를 비교
파일·검색·규칙 callType·목적·시도 결과, 규칙 Task 실행 상태 모델 API 성공률과 별도 집계

 

T-W1·T-V1의 itemKey는 항목 번호, T-W2는 항목 번호와 flowType을 연결함.

F17·M-1·T-C4 같은 로컬 규칙 단계는 Task 실행 기록에서 추적함. 검색·파일 호출은 callType으로 구분함.

 

보고서에는 비율과 함께 분자·분모·기간·표본·미분류/누락 수를 기록함.

warning은 최종 수용률에 포함하되 pass와 건수를 나눠 표시함.

inputMissing/inputError는 재작성으로 해결할 생성 오류와 구분해 입력 품질 지표로 기록함.

누적 비교는 원본 산출물 버전과 실행 이력을 유지하며 별도 보고서로 정리함. 사용자 내용은 산출물에서 관리하고 관리자 운영 집계는 참조·상태·점수·시간·토큰 등 기록 메타를 사용함.



 

 

 

 

B.4 발표용 단계별 이슈·트러블슈팅

전략·작성·검증-1을 각각 문제 상황→원인·설계 쟁점→해결→확인한 결과 순으로 정리함. 단계별 표는 발표의 이슈·해결 슬라이드에 활용하고, 함수·코드 위치와 회귀 실행 결과는 부록 C에서 연결함.

 

 

 

 

 

 

 

위 내용을 참고 ppt로 작성했으며, 발표본에는 20min 제한에 따라 첨부하지않음.

 

 

수고했다. 

이제 면접에 집중해보자 .