문서 작업 조종석
채팅, 옵션 카드, 보고서 미리보기, TablePanel, Table Library를 보여준다. 사용자가 방향을 고르는 화면이다.
실제 프로젝트 사례 02
Report Studio는 사용자의 말 한마디를 바로 문서로 찍어내지 않는다. 먼저 보고서 종류, 예시 문서, 분량 규칙, 현재 작성 상태를 컨텍스트로 조립하고, 역할별 Agent가 나눠 처리한 뒤 DOCX로 렌더링한다.
한 줄 지도
사용자의 대화 요청을 보고서 구조, 본문, 표, 렌더링 결과로 바꾸는 작업을 자동화한다.
채팅, 옵션 카드, 보고서 미리보기, TablePanel, Table Library를 보여준다. 사용자가 방향을 고르는 화면이다.
chat route, prompt builder, LLM runtime, table library, render worker가 단계별로 일한다.
세션, 보고서 JSON, 예시 chunk pool, Table Library, LLM 호출 로그가 저장된다.
Pipeline
보고서 생성은 “AI 한 번 호출”이 아니라 여러 작업자가 이어받는 제작 라인에 가깝다.
사용자 요청과 현재 보고서 상태를 받는다. 예: “인물 프로필 보고서로 정리해줘.”
역할 규칙, RAG 예시, preset, budget, 현재 report를 한 컨텍스트로 조립한다.
OutlineAgent, FullDraftAgent, PatchAgent, TableAgent가 기획자·작가·편집자처럼 나눠 일한다.
LLM이 만든 JSON을 renderer가 먹을 수 있는 깨끗한 구조로 정리한다.
정리된 구조를 DOCX, 미리보기 이미지, 다운로드 가능한 산출물로 바꾼다.
AI 기본 개념 연결
RAG는 참고자료를 AI 책상 위에 올리는 일이다. 여기서는 과거 보고서 예시가 참고자료다.
프롬프트는 한 파일이 아니라 여러 블록의 조립품이다. 역할, 예시, 분량, 현재 문서가 순서대로 붙는다.
LLM은 본문과 표 설명을 만든다. 하지만 최종 파일 배치는 renderer라는 코드가 맡는다.
보고서 JSON과 LLM 호출 기록이 남는다. 중간 저장이 있어야 수정과 재시도가 가능하다.
프론트가 백엔드에 “이 보고서 세션에 이 메시지를 처리해줘”라고 요청한다.
이전 초안과 사용자의 선택지가 다음 요청에 다시 붙는다. 그래서 대화가 이어진다.
Prompt Example
이 프로젝트에서 중요한 점은 “프롬프트를 길게 쓴다”가 아니라 “필요한 블록을 정해진 순서로 조립한다”는 것이다.
1. static invariant + role gate
- 지금 Agent의 역할과 절대 규칙
2. RAG examples
- preset과 slot이 맞는 예시 보고서 조각
3. preset_pack/{slug}.md
- 보고서 종류의 의미와 schema
4. budgets/{slug}.yaml
- 글자 수, 문단 수, 스타일 수치
5. current_outlines/current_report
- 지금까지 만든 보고서 상태
6. final_instruction_*_v2.md
- 마지막 출력 형식과 JSON 규칙
검색 질문:
"프로필 보고서 리드박스와 인적사항 표 구조"
후보 예시가 통과하려면:
- tag:common 이거나
- 현재 preset: profile 이거나
- 현재 family/tag가 맞거나
- 현재 slot이 맞아야 한다.
비유:
예시마다 출입증을 확인해서
다른 보고서 스타일이 섞이지 않게 한다.
Call → Result
프론트는 백엔드에 요청서를 보내고, 백엔드는 AI 호출과 렌더링 준비 결과를 응답으로 돌려준다.
{
"session_id": "session_42",
"target_preset": "profile",
"agent": "full_draft",
"message": "이 자료로 임원 프로필 보고서를 만들어줘",
"current_report": {
"outline_ready": true,
"selected_option": "B"
}
}
{
"draft_json": {
"title": "임원 프로필 보고서",
"sections": ["리드박스", "경력", "핵심 평가"],
"table_briefs": ["인적사항 표"]
},
"retrieved_examples": 6,
"render_job_id": "job_771",
"usage_log_id": "llm_call_903"
}
Context Stack
너는 지금 기획자인가, 초안 작성자인가, 표 담당자인가를 정한다.
현재 보고서 종류와 맞는 예시 조각을 넣는다. 복붙용이 아니라 스타일 학습용이다.
프로필, ER 동향, 조사 보고서처럼 보고서 타입별 의미와 구조를 설명한다.
지금까지 만든 outline, section, table brief를 다시 넣어 대화가 이어지게 한다.
마지막에 JSON schema와 금지 사항을 잠근다. 출력 형식이 흔들리지 않게 하는 안전벨트다.
DB View
| 장부 | 역할 | 초보자 비유 |
|---|---|---|
| chat_sessions | 작업 대화와 현재 상태 | 작업 폴더 |
| drafts / saved_reports | 보고서 JSON과 저장본 | 문서 원고 |
| example_chunk_pools | RAG용 예시 조각 | 참고문헌 서랍 |
| table_library | 사용자 표 템플릿 | 표 양식 보관함 |
| chat_llm_calls | 프롬프트와 응답 원문 로그 | 작업 녹화본 |
강의 포인트
AI는 원고를 만들고, renderer는 그 원고를 실제 DOCX 페이지로 찍어낸다. 둘을 섞어 생각하면 디버깅이 어렵다.
좋은 예시를 보여주면 AI가 스타일을 따라가기 쉽다. 단, 예시는 출입증 검사를 통과해야 한다.
큰 프롬프트 하나보다 역할, 예시, 예산, 현재 상태, 출력 규칙을 나눠 붙이는 구조가 운영하기 쉽다.