# task-1044.1 완료 보고서: 대시보드 기록 탭 제목 통일 + 완료 시간 표시

**작업일:** 2026-03-25 | **팀:** dev8-team (라/Ra) | **검증 레벨:** normal

---

**S**: 대시보드 기록 탭에 815개 보고서/미팅 항목이 표시되며, 각 항목의 제목과 날짜를 통해 사용자가 기록을 식별한다.

**C**: 일부 항목에 제목이 누락되어 "task-1040.1 완료 보고서"처럼 파일명만 표시되고, 날짜는 "2026. 3. 25."만 표시되어 시간(HH:MM) 정보가 없었다.

**Q**: 모든 815개 항목에 유의미한 제목과 시간(HH:MM)을 표시할 수 있는가?

**A**: `get_records_list()` 함수에 4단계 제목 추출 로직(콜론 뒤 제목 → description → SCQA S항목 → 작업 메타 필드)과 `end_time` 필드를 추가하고, 프론트엔드(`ArchiveView.js`)에서 `toLocaleString`으로 날짜+시간 표시를 구현했다. 결과: 빈 제목 0건, 모든 항목에 end_time 포함, 14개 테스트 전체 통과.

---

## 수정 파일 목록

- `dashboard/server.py` — `get_records_list()` 제목/시간 추출 로직 전면 개편
- `dashboard/components/ArchiveView.js` — `r.title` 표시 + 날짜에 시간(HH:MM) 추가
- `tests/test_task_1044_1_archive_title_time.py` — 14개 테스트 (GLM 작성)

## 발견 이슈 및 해결

### 자체 해결 (4건)

1. **콜론 없는 헤딩 fallback 누락** — GLM이 콜론 없을 때 전체 헤딩을 제목으로 사용. 콜론 없으면 description으로 fallback하도록 수정 (`server.py:1957-1963`)
2. **콜론 뒤 task_id 추출 문제** — `# 작업 보고서: task-836.1` 형태에서 task_id 자체가 제목이 됨. `extracted != task_id` 조건 추가 (`server.py:1961`)
3. **SCQA 3번째 fallback 미구현 + 포맷 다양성** — `**S**:`, `**S:**`, `## S - Situation` 등 다양한 SCQA S-section 패턴 지원 추가 + 4번째 fallback(`**작업**:` 메타 필드) 추가 (`server.py:1974-2004`)
4. **날짜 포맷 불일치** — `month: 'long'`(3월) → `month: 'numeric'`(3.) + `hour12: false`로 변경하여 "2026. 3. 25. 20:50" 형태 달성 (`ArchiveView.js:103`)

### 범위 외 미해결 (1건)
1. **17개 구식 task 파일 제목** — 4단계 fallback 모두 소진 후에도 유의미한 제목을 추출할 수 없는 초기 보고서(task-131.1 등). 파일명 stem이 표시됨. 범위 외 사유: 소스 데이터 자체에 제목 정보 부재

## 검증 결과

- **테스트**: 14/14 통과 (task-specific), dashboard/tests/test_server.py 6/6 통과
- **기존 테스트 회귀**: 없음 (기존 42건 실패는 본 작업 무관 — test_qc_verify, test_task522 등)
- **pyright**: 0 errors, 0 warnings
- **black/isort**: PASS
- **제목 누락**: 빈 제목 0건 / 815건 전체에 title, end_time 필드 존재
- **시간 표시**: 모든 항목에 HH:MM 포함

## QC 자동 검증 결과

```json
{
  "task_id": "task-1044.1",
  "overall": "7 PASS, 1 FAIL (file_check: .done 미생성 시점), 4 SKIP",
  "pyright_check": "PASS (0 errors)",
  "style_check": "PASS (black OK, isort OK)",
  "test_runner": "PASS (6 passed in 0.23s)",
  "duplicate_check": "PASS (max 6.1%)"
}
```

⚠️ 기존 테스트 실패 42건 (본 작업 범위 외): test_qc_verify 5건, test_task522 2건 등
