# task-1717.1 완료 보고서

**작업 ID**: task-1717.1
**팀**: dev5-team (마르둑 팀장)
**작업일**: 2026-04-12
**작업 레벨**: Lv.1

---

**S**: 대시보드 기록(Archive) 탭에서 보고서 제목 앞 `[X팀]` 라벨이 1418개 보고서 중 일부(task-1713.1 등)에만 표시되고, task-1712.1, 1710.1, 1711.1, 1708.1, 1706.1, 1705.1 등 다수에는 누락된 상태였다.

**C**: `helpers.py`의 team_id 조회 fallback 체인이 불완전하여, `events/` 루트 디렉토리의 상태 변이 파일(`.done.clear`, `.done.notified` 등 394건)을 검색하지 않았다. 또한 task-1716.1에서 추가한 별도 배지 UI가 불필요하게 남아 있었다.

**Q**: events/ 루트의 상태 변이 파일과 보고서 본문 팀 정보를 fallback 체인에 추가하고, 배지 UI를 제거하여 모든 보고서에 `[X팀]` 라벨을 복원할 수 있는가?

**A**: 팀 라벨 적용률 개선: 수정 전 일부만 표시 → 수정 후 1283/1418 (90.5%) 보고서에 팀 라벨 적용. 누락된 135건은 어떤 데이터소스에도 팀 정보가 없는 태스크. 태스크에서 지목한 6건(1712.1, 1710.1, 1711.1, 1708.1, 1706.1, 1705.1) 모두 팀 라벨 복원 완료. 테스트 31건 전체 통과, 대시보드 재시작 완료.

---

## 수정 파일 목록

- `/home/jay/workspace/dashboard/helpers.py` — `get_records_list()` 함수에 Fallback 1.5 (events/ 루트 상태 변이 파일 검색) + Fallback 3 (보고서 본문 팀 정보 추출) 추가
- `/home/jay/workspace/dashboard/components/ArchiveView.js` — `getTeamBadgeStyle` 함수 및 배지 렌더링 UI 제거

## 변경 상세

### 1. helpers.py — Fallback 체인 확장

**Fallback 1.5** (line 341-353): `events/{task_id}.done.clear`, `.done.notified`, `.done.merging`, `.done.acked` 순으로 검색. events/ 루트 394개 `.done.clear` 파일의 team_id 활용.

**Fallback 3** (line 367-382): `rtype == "report"`일 때 보고서 본문 첫 30줄에서 `**팀**: dev6-team` 또는 `팀: dev3-team` 패턴 정규식 추출. 178개 보고서가 이 패턴 보유.

최종 fallback 체인: task-timers.json → events/.done → events/.done.* → archive/.done.* → 보고서 본문

### 2. ArchiveView.js — 배지 UI 제거

- `getTeamBadgeStyle` 함수 (11줄) 전체 삭제
- 기록 목록 배지 렌더링 (`r.team_display && <span>...`) 삭제
- 검색 결과 배지 렌더링 (`r.team_display && <span>...`) 삭제

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **task-timers.json 파싱 불가** — 현재 실행 중인 task-1717.1 엔트리 작성 중 파일 잘림(line 85 `task_file:` 값 없음). `get_records_list()`에서 `except Exception: pass`로 이미 방어됨, 기존 데이터(task-1714~1716)는 정상 조회 가능
2. **events/ 루트에 `.done.clear` 파일 미탐색** — 근본 원인. Fallback 1.5 추가로 해결
3. **일부 `.done.clear` 파일에 team_id 없음** — `task-1699.1.done.clear` 등 구형 포맷 파일은 `team_id` 필드 자체가 없음. Fallback 3(보고서 본문)으로 추가 복구 시도

## 검증 결과

- `test_records_api.py`: 16/16 passed
- `test_records_search.py`: 15/15 passed
- API 라이브 테스트: `/api/records?type=report` 응답에서 상위 10건 모두 `[X팀]` 확인
- 대시보드 재시작: `systemctl --user restart dashboard` → active (running)

## 셀프 QC 체크리스트

- [x] 1. 영향 파일: helpers.py (API 응답), ArchiveView.js (UI 렌더링) — 2개 파일만 수정
- [x] 2. 엣지 케이스: team_id 없는 태스크, 중복 접두사 방지, meeting/research 타입 제외 — 모두 기존 코드에서 처리
- [x] 3. 작업 지시 일치: 배지 제거 ✓, title에 [X팀] 포함 ✓, 기존 보고서 적용 ✓
- [x] 4. 에러 처리: 모든 파일 읽기에 try/except 적용
- [x] 5. 테스트 커버리지: 31/31 passed
- [x] 6. 이슈 모두 해결: 3건 자체 해결, 미해결 0건
- [x] 7. 코드 아키텍처: 기존 fallback 패턴을 일관되게 확장
- [x] 8. 인터페이스 변경 없음: API 응답 스키마 변경 없음

## 모델 사용 기록

- 팀원: 엔키(백엔드) / 작업: helpers.py fallback 체인 확장 / 사용 모델: sonnet
- 팀원: 이쉬타르(프론트엔드) / 작업: ArchiveView.js 배지 UI 제거 / 사용 모델: sonnet

## 세션 통계
- 총 도구 호출: 8회

### 수정 파일 목록
- /home/jay/workspace/dashboard/components/ArchiveView.js: 3회 (Edit)
- bash_cmd: 2회 (Bash)
- /home/jay/workspace/dashboard/helpers.py: 1회 (Edit)
- /home/jay/workspace/memory/reports/task-1717.1.md: 1회 (Write)
- /home/jay/workspace/memory/tasks/task-1717.1.md: 1회 (dispatch)

### 도구 사용 현황
- Edit: 4회
- Bash: 2회
- Write: 1회
- dispatch: 1회

