# task-1046.1 완료 보고서: 대시보드 기록 탭 제목 추출 실패 수정

**작업일:** 2026-03-25 | **팀:** dev2-team (오딘) | **검증 레벨:** normal

---

## SCQA

**S**: task-1044.1에서 기록 탭 제목 표시 로직(4단계 fallback: 콜론 뒤 제목 → description → SCQA → 메타필드)을 구현하여, 콜론 포맷(`# task-XXX 완료 보고서: 제목`)의 보고서는 정상 추출되고 있다.

**C**: 815개 보고서 중 170+건(약 21%)에서 여전히 `task-XXX 완료 보고서`만 표시되고 실제 제목이 추출되지 않는다. 원인: (1) 서버 프로세스가 21:22에 시작됐으나 코드가 21:29에 수정되어 구버전으로 구동 중, (2) em-dash(`—`) 구분자, 블록인용(`>`), task ID 뒤 직접 제목 패턴 미처리, (3) `**작업명:**`(콜론이 볼드 안) 등 메타필드 변형 미처리.

**Q**: 모든 815개 보고서에서 의미있는 제목을 추출할 수 있는가?

**A**: 6단계 fallback으로 확장하여 815/815(100%) 제목 추출 달성. Step 1a(콜론) + 1b(em-dash/en-dash) + 1c(task ID+보일러플레이트 제거) + 1.5(블록인용) + 2(description) + 3(SCQA) + 4(메타필드 확장). pyright 0에러, 전체 API 검증 완료.

---

## 수정 파일

- `/home/jay/workspace/dashboard/server.py` — `get_records_list()` 함수 (1952~2090행)

## 변경 내역

### Step 1 개선 (기존 1952~1966행 교체)

- **1a**: 콜론 분리 조건을 `보고서:` 패턴으로 한정 → `# task-93.1 대시보드 개선: 중간...` 에서 콜론이 제목 일부인 경우 오작동 방지
- **1b (신규)**: em-dash(`—`)/en-dash(`–`) 구분자 처리 → `task-1031.1 완료 보고서 — 광고 이미지 소재 V2` 패턴
- **1c (신규)**: task ID + 보일러플레이트(`완료 보고서`, `감사 보고서`) 제거 후 남는 텍스트를 제목으로 추출 + 선행 구두점(`:`, `—` 등) 제거

### Step 1.5 신규 삽입

- 블록인용(`>`) 부제목에서 제목 추출 → `> 개발팀 vs 마케팅팀 아웃풋 비교 분석 | 2026-03-25 | dev5-team` 에서 파이프 앞부분만 추출
- 메타 정보 라인(`작성일:` 등) 건너뜀, 80자 제한

### Step 2 개선

- description에서 task ID 접두사 제거 → `task-940.1: 아누시스템...` → `아누시스템...`

### Step 4 확장

- `**작업명:**`, `**작업 내용:**`, `**작업:**` (콜론이 볼드 안에 있는 변형) 추가
- `## 작업 내용`, `## 작업 개요`, `## 작업명` 헤딩 → 다음 줄 텍스트 추출 (4b)

---

## 발견 이슈 및 해결

### 자체 해결 (3건)

1. **서버 구버전 구동** — 코드 수정 후 서버 미재시작. 서버를 재시작하여 해결.
2. **Step 1c 선행 콜론 잔류** — `# task-99.1: 제목` 패턴에서 task ID 제거 후 `:` 잔류. `lstrip(":：;—–- ")` 추가.
3. **Step 4 볼드 내 콜론 변형 미매칭** — `**작업명:**` vs `**작업명**:` 차이. 양쪽 변형 모두 등록.

---

## 검증 결과

### 지시된 4개 실패 케이스

| task | 이전 | 이후 | 추출 방법 |
| --- | --- | --- | --- |
| task-1042.1 | "task-1042.1 완료 보고서" | "개발팀 vs 마케팅팀 아웃풋 비교 분석" | 블록인용(1.5) |
| task-1040.1 | "task-1040.1 완료 보고서" | "광고 크리에이티브 V4 — 마케팅팀 컨셉 기획 (Phase 1)" | 블록인용(1.5) |
| task-1038.1 | "task-1038.1 완료 보고서" | "광고 크리에이티브 V4 — 마케팅팀 컨셉 기획 (Phase 1)" | 블록인용(1.5) |
| task-1039.1 | "task-1039.1 완료 보고서" | "대시보드 토큰 사용량 자동 갱신" | description(2) |

### 기존 성공 케이스 회귀 확인

- task-1044.1: "대시보드 기록 탭 제목 통일 + 완료 시간 표시" ✅
- task-1043.1: "대시보드 토큰 탭 새로고침 시 즉시 갱신" ✅
- task-1041.1: "대시보드 논리적 팀 활동 추적 버그 수정" ✅

### 전체 결과

- **수정 전**: 815개 중 170+건 제목 미추출 (약 79% 성공)
- **수정 후**: 815/815 제목 추출 성공 (**100%**)
- pyright: 0 errors, 0 warnings
- 서버 API 응답 검증 완료 (localhost:8000/api/records)

---

## QC 자동 검증

- **Overall**: PASS (Gate PASS — .done 생성됨)
- file_check: PASS (149691 bytes)
- data_integrity: PASS
- test_runner: PASS (pytest 6 passed in 0.24s)
- pyright_check: PASS (0 errors, 0 warnings)
- style_check: WARN → black 실행 후 해결
- duplicate_check: PASS (최대 유사도 12.8%)
