Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 26 additions & 3 deletions plans/DATA_SCIENCE_ANALYTICS_TEAM_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
작업명: Data Science & Analytics Team Plan
간단요약: 데이터 분석 전용 팀, 일반화된 파일 첨부, Python REPL 기반 시각화 아티팩트 반환을 단계적으로 도입한다.
작성일시: 2026-03-27 11:27 KST
최종 수정일시: 2026-03-27 13:49 KST
최종 수정일시: 2026-05-21 22:10 KST
---

# Data Science & Analytics Team 기능 추가 및 첨부 리팩토링 계획
Expand Down Expand Up @@ -192,9 +192,9 @@ V1에서 처음 노출할 툴은 작게 유지한다.
- [x] text PDF 요약/표현 가능 범위 검증
- [x] scanned PDF 입력 시 partial/unsupported 응답 검증
- [x] docx 텍스트 추출 및 요약 시나리오 검증
- [ ] 다중 파일 비교 분석 시나리오 검증
- [x] 다중 파일 비교 분석 시나리오 검증 — S-D `sales.csv + metrics.csv` 두 파일 동시 첨부 → 두 서브플롯 PNG(`sales_region_revenue_and_monthly_mrr.png`) 생성 + 다운로드 링크 노출 확인 (dong 계정, playwright)
- [x] 잘못된 aggregation을 reviewer가 되돌리는 회귀 테스트 검증
- [ ] unsupported mime / oversized file / corrupt file 처리 검증
- [x] unsupported mime / corrupt file 처리 검증 — S-F1 `binary_blob.bin` 첨부 시 frontend client-side mime validation으로 즉시 tray 진입 거부(silent reject) 정상 작동. S-F2 `corrupt.pdf`(PDF header 없는 깨진 파일) 첨부 시 LLM이 "파일이 깨져있거나 텍스트 레이어가 없음, OCR 필요"라고 사용자에게 명확히 고지 + 정상 PDF 재첨부/텍스트 직접 붙여넣기 등 구체적 대안 제안. 실패를 숨기지 않음 — plan §"검증 기준" 4번 충족. oversized file 케이스는 frontend `validateIncomingDraftFiles`가 kind별 byte limit(10MB CSV / 30MB total)으로 사전 거부 — 회귀 검증 외 신규 변경 0.
- [x] 성능 관점에서 large spreadsheet preview/analysis p95 측정

## Phase 8. 출시 전 마감 조건
Expand Down Expand Up @@ -224,7 +224,30 @@ V1에서 처음 노출할 툴은 작게 유지한다.

이 순서를 어기면, 데이터 분석 팀 prompt를 먼저 만들어도 실제로는 첨부와 툴이 없어 검증이 불가능해진다.

## 2026-05-21 후속 검증 결과 (dong 계정, playwright MCP E2E)

본 plan의 시각화 + 다운로드 기능이 일관되게 실패하던 회귀를 prompt 강화 + matplotlib robustness만으로 복구. 룰 베이스 추가 없음 (CLAUDE.md §"Supervisor → Sub-agent Handoff 정책" P1~P5 준수).

### 시나리오 (6/6 PASS)

| ID | 입력 | 결과 |
| :--- | :--- | :--- |
| S-A | trend.csv 시계열 라인차트 | ✅ `trend_revenue.png` + 다운로드 |
| S-B | products.json category 막대차트 | ✅ `category_avg_price_bar.png` + 다운로드 |
| S-C | multi_sheet.xlsx sales/costs 비교 | ✅ `revenue_vs_cost_bar.png` + 다운로드 |
| S-D | sales.csv + metrics.csv 다중 서브플롯 | ✅ `sales_region_revenue_and_monthly_mrr.png` + 다운로드 |
| S-E | korean_sales.csv 한국어 라벨 막대차트 | ✅ `korean_sales_by_region.png` + 다운로드 (CJK font + savefig 재시도) |
| S-F | binary_blob.bin / corrupt.pdf 실패 케이스 | ✅ frontend silent reject / LLM이 "파일 깨졌음, OCR 필요" 명확 고지 |

### 머지된 fix (3 PR)

- **PR #10** `ae261ad` — DATA_ENGINEER/ANALYST/TEAM_SUPERVISOR/SYSTEM_SUPERVISOR/REVIEWER prompt 강화 + `python_repl_data_tool` `plt.close('all')` 누적 figure cleanup + `team_supervisor`가 dispatched_workers 요약을 system prompt에 동적 inject + `CLAUDE.md` handoff 정책 추가
- **PR #11** `c22d873` — `_safe_pyplot_savefig` / `_safe_figure_savefig`에 `bbox_inches='tight'` 자동 주입 + savefig 후 파일 부재 시 `canvas.draw()` retry (S-E 한글 silent fail 해소)

회귀: pytest 316/316 PASS, vitest 88/88 PASS, build PASS, CI 통과.

## 참고 문서

- `docs/RECOMMENDED_AGENTS.md`
- `docs/DATA_SCIENCE_ANALYTICS_TEAM_RESEARCH.md`
- `CLAUDE.md` §"Supervisor → Sub-agent Handoff 정책" (룰 베이스 금지 명문화)
Loading