# task-431: 프로젝트별 안건(To-Do) 시스템 구현

## 목표
대시보드 프로젝트뷰에 프로젝트별 안건(To-Do) 관리 기능을 추가한다.
제이회장님과 아누가 대화하면서 나온 업무를 안건으로 등록하고, 완료되면 자동으로 사라지는 시스템.

## 데이터 구조

### memory/todo.json
```json
{
  "version": "1.0",
  "issues": [
    {
      "id": "issue-001",
      "project": "InsuRo",
      "title": "Lovable 독립",
      "description": "Lovable 의존성 전면 제거 (Auth, AI, Storage, Capacitor, 메타데이터, 배포, STT)",
      "priority": "high",
      "status": "in_progress",
      "created_at": "2026-03-10T10:00:00",
      "completed_at": null,
      "linked_tasks": ["task-415.1", "task-416.1"],
      "sub_items": [
        {"title": "Auth → Supabase 교체", "done": true, "task_id": "task-415.1"},
        {"title": "Phase J 구현", "done": true, "task_id": "task-416.1"},
        {"title": "AI 프로바이더 결정", "done": false, "task_id": null},
        {"title": "파일스토리지 → Google Drive", "done": false, "task_id": null},
        {"title": "Capacitor 설정", "done": false, "task_id": null},
        {"title": "메타데이터 정리", "done": false, "task_id": null},
        {"title": "배포 플랫폼 결정", "done": false, "task_id": null}
      ]
    }
  ]
}
```

**필드 설명:**
- `id`: 고유 ID (issue-NNN)
- `project`: 프로젝트명 (아누시스템, InsuRo, InsuWiki, InfoKeyword, ThreadAuto)
- `title`: 안건 제목
- `description`: 상세 설명 (선택)
- `priority`: high / medium / low
- `status`: pending (미착수) / in_progress (진행중) / completed (완료)
- `linked_tasks`: 연결된 task_id 배열
- `sub_items`: 세부 항목 (체크리스트). 각 항목에 task_id 매핑 가능
- `completed_at`: 모든 sub_items가 done이면 자동 설정

### 자동 완료 로직
- sub_items가 있는 경우: 모든 sub_items.done === true → status를 "completed"로 변경
- sub_items가 없는 경우: 수동으로 완료 처리 (대시보드 체크 또는 아누가 처리)
- task_id가 매핑된 sub_item: .done 감지 시 해당 sub_item.done = true로 자동 업데이트

## 대시보드 UI

### 프로젝트뷰 구조 변경
기존: 프로젝트 카드 → 작업 리스트
변경: 프로젝트 카드 → **안건 목록 + 작업 히스토리**

```
[프로젝트 카드 - InsuRo]

📋 안건 (2건 진행중)                     ← 완료 안건은 표시 안 함
┌──────────────────────────────────────┐
│ □ Lovable 독립           high  2/7   │  ← 클릭하면 sub_items 펼침
│   ✅ Auth → Supabase 교체            │
│   ✅ Phase J 구현                    │
│   ○ AI 프로바이더 결정               │
│   ○ 파일스토리지 → Google Drive      │
│   ○ ...                             │
│                                      │
│ □ 모바일 최적화          medium 0/3   │
└──────────────────────────────────────┘

📜 작업 히스토리 (3건)                   ← 기존과 동일
▼ 작업 3건 보기
  task-416.1: Phase J 구현 ✅  7분      ← 클릭 → 보고서 모달
  task-415.1: Auth 교체 ✅  4분
  ...
```

### 안건 표시 규칙
- **진행중/미착수 안건만** 표시 (status !== "completed")
- 완료 안건은 목록에서 사라짐 (데이터는 todo.json에 보존)
- priority별 색상: high=빨강, medium=노랑, low=회색
- 진행률 표시: "2/7" (완료/전체 sub_items)

## API

### GET /api/todo
전체 안건 목록 반환 (프로젝트별 그룹핑)
- 쿼리: ?project=InsuRo (선택적 필터)
- 쿼리: ?status=in_progress,pending (기본값, completed 제외)

### POST /api/todo
안건 추가
```json
{
  "project": "InsuRo",
  "title": "모바일 최적화",
  "priority": "medium",
  "sub_items": [
    {"title": "번들 사이즈 최적화"},
    {"title": "터치 타겟 확대"},
    {"title": "safe area 대응"}
  ]
}
```

### PUT /api/todo/<issue_id>
안건 수정 (sub_item 완료 처리 등)

### DELETE /api/todo/<issue_id>
안건 삭제 (수동)

## 아누 연동 (향후)
아누가 대화 중 안건을 등록할 때 사용할 헬퍼:
- `python3 memory/todo-manager.py add --project InsuRo --title "모바일 최적화" --priority medium`
- `python3 memory/todo-manager.py done --issue issue-001 --sub "Auth → Supabase 교체"`
- `python3 memory/todo-manager.py link --issue issue-001 --task task-415.1`
이 CLI는 아누가 직접 호출하거나, dispatch 완료 시 자동 연동할 수 있음.

## 기존 pending 파일 마이그레이션
현재 memory/tasks/pending-*.md 파일들의 내용을 todo.json 초기 데이터로 변환:
- pending-insuro-lovable-independence.md → InsuRo 안건들
- pending-insuro-mobile-optimization.md → InsuRo 모바일 안건
- pending-insuro-lovable-ai-removal.md → InsuRo AI 프로바이더 안건

## 파일 참조
- `/home/jay/workspace/dashboard/index.html` — 프로젝트뷰 UI 수정
- `/home/jay/workspace/dashboard/server.py` — todo API 추가
- 신규: `/home/jay/workspace/memory/todo.json` — 안건 데이터
- 신규: `/home/jay/workspace/memory/todo-manager.py` — 안건 관리 CLI
- 참조: `/home/jay/workspace/memory/tasks/pending-insuro-*.md` — 마이그레이션 대상

## 완료 조건
1. todo.json 생성 + 기존 pending 데이터 마이그레이션
2. /api/todo CRUD 엔드포인트 동작
3. 프로젝트뷰에 안건 목록 표시 (진행중/미착수만)
4. 안건 클릭 → sub_items 펼침
5. todo-manager.py CLI 동작
6. 모바일 반응형
7. 기존 작업 히스토리 + 보고서 모달 기능 유지
