4월 15일 합류 회의 → 4월 28일 용역계약 체결 (7주 · 4/20-6/7 · 1,600만원 세전 · 검수 후 5영업일 입금 · 3개월 무상 유지보수). 본 보고서는 W5 시점 — 본 계약 본체 100% 완료 단계입니다 (잔여 W6-7은 핸드오프·이식 검증).
L2 한국 공공 API 12개 작업분장 기준 12개 완료 (100%) —
MVP 5개(기상 6도구·에어 4도구·arXiv·Semantic Scholar·환율) · 생활 3개(도서관·전월세·사전) ·
공무원 2개(KOSIS·국회) · 백엔드 유틸 1개(국립국어원 우리말샘 — MCP 도구로 승격) + 보너스(국토부 매매).
L1 Composio 5종 100여 슬러그 자동 등록 ✓(Gmail·Calendar·Slack·Notion·GitHub · 부팅 시 카탈로그→ToolRegistry · 한국어 description override).
AI 스케줄러 풀체인 ✓(자연어 → cron 변환 → BullMQ Repeatable → 도구 호출 → Solar 자연어 요약 → 알림함 dispatch).
Productivity composite 2종 ✓(morning_briefing 미팅 사전 브리핑 + unanswered_reminder 미회신 리마인드 — 이호근 PM 카톡 요구 2026.05.15).
계약 본체 외에 W3-W5 단계에서 추가로 끝낸 항목 —
국토부 매매(데모 다양성 보너스) · 인프라 분산화(Throttler Redis · BullMQ Repeatable) ·
채팅 영속화(Postgres 18 · Conversation/Message + cid 세션 복원) ·
도구 등록 V3(@McpTool 데코레이터 자동등록 · Registrar 19개 제거 · 80 LOC만 이식) ·
친화 에러 i18n(category external/user/system · retry policy · raw allow-list — 3 surface 통일) ·
MCP hints vendor extension(tools/list 응답에 14 HintType — 프론트 폼 자동 라우팅) ·
참조 데이터 엔드포인트(/reference/lawd-codes 250개 · /reference/sido 17개 · 1일 cache) ·
커버리지 80%+ · E2E 42 시나리오 91.7% · Few-shot + temperature=0.
남은 작업은 핸드오프 단계입니다 — 이식 문서 3종 작성 완료 (HANDOFF.md 인간용 · llms.txt AI 네비 · llms-full.txt AI encyclopedia). Slack 통합 + Composio 다중 유저 OAuth 라우팅은 타임리 측 유저 시스템 붙은 후 후속 (카톡 합의 2026.05.15). L3 B2B 협약·Computer Use 폴백은 본 1,600만원 작업분장 외.
1,600만원 패키지 v1.3(2026.04.21) 작업분장 매핑 — 본 계약 본체 100% 완료. W6-7은 이식 핸드오프·검증.
| Week | 계약 작업 | 실제 진행 | 진행률 |
|---|---|---|---|
| W1 | 셋업 · 도메인 · Postgres · Redis | NestJS 11 + pnpm 셋업 ✓ · Redis 7 캐시 가동 ✓ · Postgres 18(railwayapp-templates/postgres-ssl) 가동 ✓ · Prisma 6 스키마 7 모델 push 완료(User·OAuthToken·Schedule·UsageLog·ToolConfig·Conversation·Message). | 100% |
| W2 | L1 · Composio 래핑 5개 | Composio SDK 래퍼 ✓(ComposioService · 5종 toolkit OAuth · Hosted Auth) · 부팅 시 카탈로그 자동 등록 ✓(ComposioToolBridge → ToolRegistry 동적 등록, 1176→102 슬러그 압축) · 한국어 description override(gmail/calendar/notion/github 7개 슬러그 강화) · 슬러그별 version 캐시(composite path version mismatch fix · 2026.05.15). |
5 / 5 ✓ |
| W3 | L2 · MVP 5개 — 기상 · 에어 · arXiv · Semantic Scholar · 환율 | 기상청 ✓ 6 도구(단기·초단기실황·초단기예보·중기육상·중기기온·중기개황) · 에어코리아 ✓ 4 도구(시도·예보·측정소·주간) · arXiv ✓ · Semantic Scholar ✓ · KEXIM 환율 ✓. 추가로 composite W3 데모 daily_briefing 구현(날씨+미세먼지+환율 Promise.all 병렬, 5초 timeout). |
5 / 5 |
| W4 | L2 · 공무원 2개 — KOSIS · 국회 | kosis_stat ✓ (통계청 orgId·tblId 직접 조회) · assembly_bill_list ✓ (열린국회 의안 목록). |
2 / 2 |
| W5 | L2 · 생활 3개 — 도서관 · 전월세 · 사전 | library_loan_popular ✓ (정보나루 인기대출도서) · 국토부 apartment_rent ✓ (전월세) · korean_dict_search ✓ (국립국어원 우리말샘 — 백엔드 유틸을 MCP 도구로 승격). 보너스: 국토부 apartment_trade ✓ (매매, 데모 다양성). |
3 / 3 + 보너스 1 |
| W6 | Scheduler — AI 기반 자연어 등록 | 풀체인 완료 ✓ — BullMQ Repeatable + Schedule/ScheduleRun/Notification 3 모델 + SchedulerWorker(도구 호출 → Solar 요약 → PUSH dispatch) + 자연어 등록(채팅 ⏰ 토글 → SCHEDULER_PROMPT 자연어→cron 변환표 → schedule_create/list/update/delete 4 도구) + /schedules 모달 wizard 4단계(도구→인자→시각→확인) + 드로어 즉시 실행 + /inbox 알림함 + 친화 실패 알림(ErrorChip category external/user/system). 2026.05.15 영상 v3 144초로 e2e 검증. |
100% ✓ |
| W7 | E2E 테스트 · Docker | SSE 러너 + 종합 42 시나리오 자동화 ✓ (단일 18 + 신규 24, 91.7% 통과) · docker-compose.yml(PG18+Redis7) ✓. | 100% |
| +α | 인프라 분산화 · 친화 에러 · MCP hints · 핸드오프 (계약 외 자체 발의) | Throttler Redis · BullMQ Repeatable · 도구 등록 V3(@McpTool 자동등록 · Registrar 19개 제거 · 80 LOC만 이식) · 채팅 영속화(Conversation/Message + cid 세션) · 친화 에러 i18n(0-dep pure TS · 17 ErrorCode → category external/user/system + retry policy + raw allow-list · 3 surface 통일) · MCP hints vendor extension(tools/list 응답에 14 HintType — 프론트 폼 자동 라우팅) · Productivity composite 2종(morning_briefing Calendar+Gmail+Solar · unanswered_reminder inbox vs sent threadId diff+Solar) · 이식 핸드오프 3종(HANDOFF.md 인간용 · llms.txt 5.9KB AI 네비 · llms-full.txt 14.6KB AI encyclopedia · llmstxt.org 스펙). |
100% |
v1.3 작업분장 외에 검증 폭·시연 다양성·이식성·운영 안정성 위해 추가 구현. 본 계약(100%)과 별개 보너스입니다.
apartment_trade) — v1.3 제거 항목이지만 데모 다양성 위해 구현korean_dict_search) — 백엔드 유틸을 MCP 도구로 승격daily_briefing — 날씨+미세먼지+환율 Promise.all 병렬, 5초/source timeoutmorning_briefing — Calendar 일정 → 참석자 emails → 24h Gmail thread → Solar Pro 종합 + 준비 아이템 (8am cron 권장)unanswered_reminder — Gmail in:inbox vs in:sent threadId diff → Solar 우선순위 분류 (8pm cron, 24h 윈도우 · 카톡 합의)@nest-lab/throttler-storage-redis로 멀티 인스턴스 안전@McpTool + DiscoveryService 자동등록 (Registrar 19개 제거, 80 LOC만 이식)Conversation/Message + cid 세션 복원hints vendor extension — tools/list 응답에 14 HintType (location-lat-lon-pair, lawd-cd, sido-name 등) · 프론트 폼 자동 라우팅/reference/lawd-codes 250개 · /reference/sido 17개 · Cache-Control: 1일preDeployCommand — pnpm prisma:deploy release-phase 정공법 (HOTFIX #4)/tools 도구함 카드 그리드/schedules 페이지 — 카드 리스트 + 새 스케줄 4단계 modal wizard (도구→인자→시각→확인) + 드로어 즉시 실행 + 최근 run 기록/inbox 페이지 — 알림함 카드 + 미확인 배지 + 원본 보기 토글 + 카테고리별 색칠 (실패 시 ErrorChip)SCHEDULER_PROMPT append + schedule_* 4 도구 노출 (보안 contract: 토글 OFF에선 write-action 호출 불가능)/connectors 페이지 — Composio 5종 OAuth connect 링크 + 연결 상태 카드--no-verify 금지specs/HANDOFF.md 인간용 5분 가이드(11.3KB) · /llms.txt AI 네비(5.9KB · llmstxt.org 스펙) · /llms-full.txt AI encyclopedia(14.6KB · 0~11 섹션 · FAQ Q1~Q5 코드 예시)Composio 카탈로그 자동 등록 1176→102 압축 후 Solar Pro 3가 한국어 자연어 한 줄에서 정확히 라우팅하는지 4 시나리오로 검증. 사전 검증 게이트로 실제 응답 받은 시나리오만 영상화 (거짓 시연 차단). 한국어 자막 토글 가능 (CC 버튼).
이호근 PM 카톡 합의(2026.05.15) 시나리오 — 자연어 입력으로 스케줄 등록 + 발화 후 Solar 종합 요약이 알림함에 도착하는 것까지. morning_briefing(Calendar+Gmail+Solar) / unanswered_reminder(Gmail inbox vs sent threadId diff+Solar) 두 composite 도구. Composio gmail/googlecalendar 실호출, Slack은 데모 환경에 워크스페이스 없어 코드 자리만(후속).
2026 정공법 agent loop (tool_choice='auto' + signature dedupe + MAX_TOOL_TURNS=6) 적용 후, 사용자 1번 입력으로 multi-step 의도를 자동 분해 → 도구 순차 호출 → 최종 종합 답변까지. 환각 방지 가드 강화 (도구 호출 안 한 작업은 '했다' 답변 금지 + 캘린더 분기 명시). 이제 등록된 25+ 도구 모두 자유롭게 체인 가능.
메일·회의·카톡 fact 기준만 기록.
김성훈 대표·김대환 대표·개발팀 자리. 방향성: Computer Use는 폴백, MCP First. 사이드 참여 여부는 기획안 후 확정.
UPSTAGE_API_KEY · COMPOSIO_API_KEY. Composio엔 Gmail만 연결된 상태로 시작, 추가 서비스는 요청 시 연결.
Node ≥ 24.14 / NestJS 11 / TypeScript 5.8 / pnpm / Postgres+Prisma / Redis / Qdrant / LangGraph + Langchain / DTO Zod v4 + nestjs-zod.
3-Phase 모델(글로벌 MCP / 한국 NPM / B2B 협약) + Scheduler + 인프라·프라이싱 미결정 3가지 명시. 후속 협의에서 7주 작업분장으로 합의.
data.go.kr 통합 키 + 별도 인증 1곳. 도구별 endpoint·인자·예상 사용량 명시.
NestJS 11 Hub + Next.js 15 Web + Solar Pro 3 + Redis 캐시 + OTel trace. V2 5-set 컨벤션(dto/service/controller/tool/module) — 추후 V3로 마이그레이션.
SSE 자동 호출 러너 + LLM follow-up 시뮬. 결과 마크다운 리포트 자동 산출.
W2.5 시점 작업분장 대비 진행률 + 시연영상. (본 문서의 직전 버전)
도구 19개의 수동 Registrar(*.tool.ts) 클래스를 모두 제거하고 @McpTool 데코레이터 + ToolDiscoveryService 자동등록으로 전환. Postgres 16 → 18(railwayapp-templates/postgres-ssl) 정렬, PGDATA 서브디렉토리 패턴 적용. CLAUDE.md에 Karpathy 4원칙(Think/Simplicity/Surgical/Goal-driven) 수록.
daily_briefing composite 도구 실구현(날씨·미세먼지·환율 Promise.all 병렬, per-source 5초 타임아웃). Throttler를 @nest-lab/throttler-storage-redis로 분산 storage 전환. BullMQ Repeatable connection 등록(Cron 인프라 선구축). 커버리지 38% → 80.39%.
모회사 합병 시 폐기 예정인 테스트 용이성용 채팅 저장 구축. Prisma 스키마에 Conversation·Message 추가, PrismaModule(@Global) + PrismaService로 NestJS DI 첫 등록. Hub /conversations REST 5종 + Web route.ts에서 cid 자동 발급·USER/ASSISTANT 메시지·tool_calls JSON 영속화.
기존 18 시나리오 + 신규 24(커버리지 갭 8 / 모호 default 5 / 도구 미호출 5 / 호출 트리거 3 / 다턴 3). 시스템 프롬프트에 11개 명시 예시 + temperature=0로 도구 선택 정확도 87.5% → 91.7%. 25개 도구 전부 라이브 검증.
W3 시점 갱신 — V3 컨벤션·인프라 분산화·채팅 영속화·E2E 종합 검증 반영.
ComposioService SDK 래퍼(Gmail · Calendar · Slack · Notion · GitHub Hosted Auth) + ComposioToolBridge 부팅 시 카탈로그 자동 등록(1176→102 슬러그 압축) + 한국어 description override 7건 + Composio v3 manual execute version 처리. /connectors 페이지 OAuth 카드. ※ prod에선 COMPOSIO_ENABLED=false로 본인 OAuth 노출 차단(다중 유저 라우팅 붙은 뒤 활성화).
/schedules + /inbox 페이지 + 사이드바Sidebar 메뉴 추가, /schedules 카드 리스트 + 드로어(최근 run + 즉시 실행 + 삭제), /inbox 알림함 + 미확인 배지 polling. UI e2e 통과.
도구 선택 → 인자 입력 → 시각 입력 → 확인. 도구별 Zod schema → 인자 폼 자동 렌더(이때 hint 메타 없으면 schema fallback). 모달 e2e.
채팅 헤더에 토글 1개. ON 시 시스템 프롬프트에 자연어→cron 변환표 + schedule_create/list/update/delete 4 도구 노출(보안 contract — OFF 상태에선 write-action 호출 불가능). 자연어 "매일 아침 7시 서울 날씨" → 즉시 등록 e2e.
BullMQ Repeatable 1분 cron으로 실제 발화 → Worker가 도구 호출 → Solar 자연어 요약 → NotificationDispatcher.deliver('PUSH') → /inbox 표시까지 풀스택 grep. 실패 케이스(존재하지 않는 도구)는 schedule_failure sentinel + ErrorChip로 친화 메시지.
Vercel 옵저버빌리티 alert 100% 에러율(/api/notifications/unread-count 500) — Railway prod DB에 Notification·Schedule migration 미적용. railway.json.deploy.preDeployCommand: ["pnpm prisma:deploy"] release-phase로 정공법. (LEARNINGS: buildCommand·startCommand에 박는 안티패턴 명시.)
"미팅 사전 브리핑(오전 8시)" + "미회신 리마인드(오후 8시, 24h 윈도우)" 영상에 포함 합의. Slack은 데모 환경 워크스페이스 없어 제외, 그쪽 유저 시스템 + Composio 다중 유저 OAuth 라우팅 붙은 뒤 후속.
morning_briefing(Calendar+Gmail+Solar 종합 + 준비 아이템) · unanswered_reminder(inbox vs sent threadId diff + Solar 우선순위). SCHEDULER_PROMPT 자연어 매핑 5건 추가. 핸드오프 3종 작성 — specs/HANDOFF.md(인간용 5분) + llms.txt(AI 네비 · llmstxt.org 스펙) + llms-full.txt(AI encyclopedia · FAQ 코드 예시). 영상 v3 144초 — 자연어 등록 → /schedules → 즉시 실행 × 2 → /inbox Solar 요약 도착까지. ComposioService에 versionBySlug 캐시 추가 (composite path version mismatch fix).
W5 시점 갱신 — Composio 5종 100% · Scheduler 풀체인 · Productivity composite 2종 · 핸드오프 3종 · 영상 v3 반영.
본 계약 본체는 끝났고, 타임리 측 유저 시스템 붙은 뒤 후속 진행 예정인 항목 (카톡 합의 2026.05.15).
DEMO_USER_ID 단일값 사용. prod에선 COMPOSIO_ENABLED=false로 본인 OAuth 노출 차단 중. 타임리 측 유저 시스템에 user별 OAuth 토큰 라우팅이 붙으면 prod 활성화.COMPOSIO_AUTH_CONFIG_SLACK, CONNECTOR_SLUGS에 slack 포함). 데모 환경에 워크스페이스 없어 영상엔 제외. unanswered_reminder.service.ts에 slack thread fetch 한 블록 추가하면 끝 (Solar 프롬프트 그대로).not-implemented.handlers.ts에 자리만. 채널 우선순위 합의 후 구현.계약 본체 두 축(Composio L1 · Scheduler) 모두 풀체인 완성. 남은 단계는 타임리 측 레포로의 이식 — 핸드오프 문서 3종 작성 완료.
ComposioService SDK 래퍼 + ComposioToolBridge 부팅 시 카탈로그 자동 등록 (1176→102 슬러그 압축)COMPOSIO_ENABLED=false로 본인 OAuth 노출 차단 (다중 유저 라우팅 붙은 뒤 활성화)schedule_create 호출SchedulerWorker 도구 호출 → Solar 요약 → NotificationDispatcher.deliver('PUSH')morning_briefing(Calendar+Gmail+Solar 종합) · unanswered_reminder(inbox vs sent diff+Solar 우선순위)schedule_failure sentinel + ErrorChip 카테고리 색칠 (external/user/system)specs/HANDOFF.md — 인간용 5분 핸드오프(11.3KB). 카톡 합의 + 이식 단위 표(백 통째 🟢 / 프론트 부분 🟡) + 환경변수 14개 + 5분 quickstart + 6 컴포넌트 부분 이식 가이드 + FAQ./llms.txt — AI 에이전트 네비(5.9KB). llmstxt.org 스펙대로 H1+blockquote+9 H2 markdown link list./llms-full.txt — AI encyclopedia(14.6KB). 메타 지시 + 폴더 구조 + 이식 4-Tier + tools/list shape + friendly error shape + FAQ Q1~Q5 코드 예시.unanswered_reminder.service.ts에 slack thread fetch 한 블록 추가5분 핸드오프 — 카톡 합의 + 이식 단위 표 + 환경변수 14개 + 5분 quickstart + 6 컴포넌트 부분 이식 가이드 + FAQ 6건.
Handoff · 05.15llmstxt.org 스펙. H1+blockquote+9개 H2 markdown link list. AI 에이전트가 이걸로 진입점 식별.
Handoff · 05.150~11 섹션 — 메타 지시 / 폴더 구조 / 이식 4-Tier / tools/list shape / friendly error / 환경변수 / FAQ Q1~Q5 코드 예시.
Verification · 05.03단일턴 18 + 종합 24 시나리오 — Solar Pro 3 실제 호출 91.7% 통과.
Retro7주차 누적 학습 — composite Composio+Solar 패턴, 핸드오프 3종, Railway preDeploy, friendly error i18n 등.
Reference19 atomic + 6 composite(daily_briefing + 🆕 morning_briefing + 🆕 unanswered_reminder + 3 stub) + 4 schedule_*. 각 도구의 input schema · required · default · enum · range.