VC Report Studio 사례 대화가 DOCX 보고서가 되기까지

실전 사례 02 · 보고서 제작 라인

Report Studio: 대화와 예시, 규칙을 조립해 DOCX 보고서를 찍어낸다

“보고서 만들어줘” 한마디를 바로 문서로 찍어내지 않는다. 보고서 종류, 예시 문서, 분량 규칙, 지금까지의 작성 상태를 블록처럼 조립해 AI 책상 위에 올리고, AI가 쓴 원고를 코드가 DOCX로 인쇄한다. AI는 작가, Renderer는 인쇄소다.

프롬프트 조립 RAG 예시 Agent 초안 Normalizer DOCX 렌더링
Report Studio · DOCX Preview
Report Studio가 렌더링한 샘플 보고서 페이지
실제 프로젝트의 샘플 보고서 렌더링 결과다. 최종 산출물은 채팅 답변이 아니라 이렇게 인쇄된 문서 파일이다.
한 줄 지도

이 앱은 “대화로 보고서 쓰기”를 자동화한다

부품은 수업에서 본 그대로다. 화면(매장), 주방(백엔드), 장부(DB)가 각자 역할을 맡는다.

화면 · Frontend

문서 작업 조종석

채팅, 방향을 고르는 옵션 카드, 보고서 미리보기, 표 양식 보관함을 보여준다. 손님이 주문하고 확인하는 매장이다.

주방 · Backend

보고서 제작 라인

채팅 접수 → 프롬프트 조립 → Agent 초안 → 정리 → 렌더링이 정해진 순서로 돌아가는 주방이다.

장부 · DB

작업 상태 저장소

작업 세션, 보고서 JSON, RAG 예시 조각, 표 템플릿, AI 호출 로그가 PostgreSQL 장부에 남는다.

Pipeline

한 문장 요청이 문서 파일이 되기까지 — 색을 읽어보자

보고서 생성은 “AI 한 번 호출”이 아니라 작업자가 이어받는 제작 라인이다. 수업의 색 약속 그대로, 파랑=자료, 주황=AI, 초록=저장, 회색=사람·코드다.

  1. 1 대화 (Chat)

    “이 자료로 임원 프로필 보고서를 만들어줘” 같은 요청과 현재 보고서 상태를 접수한다.

  2. 2 프롬프트 조립

    역할 규칙, 출입증 검사를 통과한 RAG 예시, 보고서 종류 설명, 분량 예산을 순서대로 붙인다.

  3. 3 Agent 초안

    기획자(Outline), 작가(FullDraft), 편집자(Patch), 표 담당(Table) Agent가 나눠서 초안 JSON을 쓴다.

  4. 4 정리 (Normalizer)

    AI가 쓴 JSON을 인쇄소가 읽을 수 있는 깨끗한 구조로 다듬는다. 오탈자 난 원고를 교정하는 손이다.

  5. 5 DOCX 렌더링·저장

    Renderer 코드가 DOCX와 미리보기를 찍어내고, 보고서 JSON과 호출 로그가 장부에 남는다.

개념 연결

수업에서 배운 단어가 여기서 하는 일

카드를 누르면 해당 교시로 돌아가 복습할 수 있다.

Prompt

AI에게 주는 작업지시서 — 한 덩어리가 아니라 조립품

이 프로젝트의 핵심은 “프롬프트를 길게 쓴다”가 아니라 “필요한 블록을 정해진 순서로 조립한다”는 것이다.

조립 순서

Prompt Builder가 블록을 붙이는 순서

1. 역할 규칙 (role gate)
   지금 Agent가 기획자인지 작가인지
   표 담당인지, 절대 규칙은 무엇인지.

2. RAG 예시 (retrieved examples)
   출입증 검사를 통과한
   과거 보고서 조각.

3. 보고서 종류 설명 (preset pack)
   프로필 보고서란 무엇이고
   어떤 구조를 갖는지.

4. 분량 예산 (budget)
   글자 수, 문단 수, 스타일 수치.

5. 현재 보고서 상태 (current report)
   지금까지 만든 outline과 본문.

6. 최종 출력 규칙 (final instruction)
   JSON 형식과 금지 사항을 마지막에 잠근다.
RAG 출입증 검사

예시는 아무거나 붙이지 않는다

검색 질문:
"프로필 보고서 리드박스와 인적사항 표 구조"

후보 예시가 붙으려면 하나는 통과해야 한다:
- 모든 보고서 공용 예시(tag: common)이거나
- 지금 만드는 종류(preset: profile)와 같거나
- 같은 계열(family/tag)이거나
- 같은 자리(slot)에 들어가는 예시여야 한다.

비유:
예시마다 출입증을 확인해서
다른 보고서 스타일이 섞여 들어오지 않게 한다.
검색만 믿으면 “비슷해 보이는” 엉뚱한
예시가 끼어든다.
호출 → 결과

주문서와 응답서는 이렇게 생겼다

5교시에서 본 API 주문 창구 그대로다. 화면이 주방에 주문서를 보내면, 주방이 AI 초안과 인쇄 준비 결과를 응답서로 돌려준다.

요청 · 주문서

사용자 메시지 처리 요청

{
  "session_id": "session_42",
  "target_preset": "profile",
  "agent": "full_draft",
  "message": "이 자료로 임원 프로필 보고서를 만들어줘",
  "current_report": {
    "outline_ready": true,
    "selected_option": "B"
  }
}
결과 · 응답서

AI 초안과 렌더링 준비

{
  "draft_json": {
    "title": "임원 프로필 보고서",
    "sections": ["리드박스", "경력", "핵심 평가"],
    "table_briefs": ["인적사항 표"]
  },
  "retrieved_examples": 6,
  "render_job_id": "job_771",
  "usage_log_id": "llm_call_903"
}
Context

초안을 쓰는 순간, AI의 책상 위에는 이게 올라가 있다

2교시의 책상 그대로다. 색을 보면 어떤 종이가 자료(파랑)이고 어떤 종이가 AI의 답(주황)인지 보인다.

역할 규칙

지금 Agent가 기획자인지 작가인지 정하고, 마지막에 JSON 출력 형식을 잠근다. 형식이 흔들리지 않게 하는 안전벨트다.

사용자 요청

“이 자료로 임원 프로필 보고서를 만들어줘”와 화면에서 고른 옵션 B.

RAG 예시 자료

출입증 검사를 통과한 과거 보고서 조각. 복붙용이 아니라 스타일 학습용이다.

종류·분량·현재 상태 자료

보고서 종류 설명, 글자 수 예산, 지금까지 만든 outline과 본문.

AI의 답

제목, 섹션, 표 브리프가 담긴 초안 JSON — 그리고 호출 로그 한 장.

DB 장부

Report Studio의 장부들

6교시에서 배운 “역할별 장부 나누기”가 실전에서는 이렇게 된다.

장부역할비유
chat_sessions작업 대화와 현재 상태 저장작업 폴더
drafts / saved_reports보고서 JSON과 저장본문서 원고
example_chunk_poolsRAG용 예시 보고서 조각참고문헌 서랍
table_library사용자 표 템플릿 저장표 양식 보관함
chat_llm_calls프롬프트와 응답 원문 로그작업 녹화본
기억할 것

이 사례에서 가져갈 세 가지

1. AI는 작가, Renderer는 인쇄소

AI는 원고(JSON)를 만들고, Renderer 코드가 그 원고를 실제 DOCX 페이지로 찍어낸다. 둘을 섞어 생각하면 어디가 고장났는지 찾기 어렵다.

2. 프롬프트는 블록 조립품이다

큰 프롬프트 하나보다 역할, 예시, 예산, 현재 상태, 출력 규칙을 나눠 붙이는 구조가 고치기도 운영하기도 쉽다.

3. RAG 예시는 출입증 검사를 통과해야 붙는다

검색으로 “비슷한 것”을 찾은 뒤에도 종류·계열·자리를 확인한다. 검사 없는 예시는 다른 스타일을 섞어 넣는 오염원이 된다.

복사했습니다