# Absorption Tracker 대시보드 UI

## 한정승인

## 작업 목표
대시보드 스킬 뷰 탭에 "Absorption Tracker" 섹션을 추가하여, 외부 소스에서 흡수한 기능들의 현황을 실시간으로 파악할 수 있게 한다.

## 선행 작업
- absorption-registry.yaml + absorption-health-check.py가 별도 팀에서 동시 구현 중
- 이 작업은 API 엔드포인트 + 프론트엔드 UI를 구현
- health check 스크립트의 JSON 출력 형식을 기준으로 API/UI 설계 (아래 형식 참조)

## health check JSON 출력 형식 (API 응답으로 사용)
```json
{
  "timestamp": "2026-04-11T...",
  "summary": {"total": 45, "active": 30, "implemented": 8, "recommended": 5, "degraded": 2},
  "by_source": {
    "fireauto": {"total": 12, "active": 10, "implemented": 2, "repo": "imgompanda/fireauto"},
    "gstack": {"total": 7, "active": 5, "implemented": 1, "recommended": 1},
    "moai-adk": {"total": 9, "active": 6, "implemented": 2, "recommended": 1},
    "superpowers": {"total": 8, "active": 5, "implemented": 2, "recommended": 1},
    "pm-skills": {"total": 5, "active": 2, "implemented": 2, "recommended": 1},
    "synode": {"total": 2, "active": 1, "implemented": 1},
    "taste-skill": {"total": 2, "active": 1, "recommended": 1}
  },
  "duplicates": [
    {"items": ["fireauto-f7", "gstack-a3"], "description": "에러 재시도 로직"}
  ],
  "items": [
    {
      "id": "fireauto-f1",
      "source": "fireauto",
      "name": "audit-trail task_id 추적",
      "priority": "★★★",
      "status": "active",
      "implemented_in": ["hooks/post-tool-use.sh"],
      "last_active": "2026-04-11T12:35:00"
    }
  ]
}
```

## 작업 내용

### 1. 서버 API 엔드포인트

파일: `/home/jay/workspace/dashboard/server.py`

**`GET /api/absorption/status`**
- `absorption-health-check.py`를 subprocess로 실행하여 JSON 결과 반환
- 캐싱: 10분 TTL (health check가 무거울 수 있으므로)
- 스크립트 경로: `/home/jay/workspace/scripts/absorption-health-check.py`
- 에러 시: registry 파일 직접 읽어서 static 데이터만 반환 (health check 없이)

**`GET /api/absorption/details?source={source_name}`**
- 특정 소스의 상세 항목 리스트 반환

### 2. 프론트엔드 UI

파일: `/home/jay/workspace/dashboard/components/` 하위

**SkillView 탭에 "Absorption Tracker" 섹션 추가**

#### 2.1 요약 영역
- 전체 통계 바: total / active / implemented / recommended / degraded
- 각 status별 색상: active=녹색, implemented=파랑, recommended=황색, degraded=적색

#### 2.2 소스별 카드
- 7개 소스 카드 (fireauto, gstack, MoAI-ADK, superpowers, PM skills, Synode, taste-skill)
- 각 카드:
  - 소스 이름 + GitHub 레포 링크
  - 진행률 바 (active 비율)
  - 숫자: "10/12 active"
  - 클릭 시 상세 항목 리스트 펼침

#### 2.3 상세 항목 리스트 (카드 클릭 시)
- 항목별: 이름 | priority(★) | status 배지 | 구현 위치 | 마지막 활성 시간
- status별 필터 토글 (active/implemented/recommended/degraded)
- degraded 항목: 빨간 경고 아이콘 + "왜 안 되는지" 메시지

#### 2.4 중복 알림
- duplicates 배열이 있으면 상단에 경고 배너
- "fireauto-f7과 gstack-a3이 같은 기능(에러 재시도)입니다" 형태

#### 2.5 인사이트 영역
- "미구현 권장 항목 Top 5" 리스트 (priority ★★★인데 recommended인 것)
- "최근 비활성화된 항목" (active → degraded 전환된 것)

## 참고 파일
- 대시보드 서버: `/home/jay/workspace/dashboard/server.py`
- 기존 스킬 뷰: 대시보드 components 디렉토리 확인
- registry 경로: `/home/jay/workspace/config/absorption-registry.yaml`
- health check 경로: `/home/jay/workspace/scripts/absorption-health-check.py`

## 테스트
1. `GET /api/absorption/status` → JSON 응답 확인
2. health check 스크립트 미존재 시 → registry 직접 읽어서 static 반환
3. 대시보드에서 Absorption Tracker 섹션 렌더링 확인
4. 소스 카드 클릭 → 상세 항목 펼침 동작

## 보고서
`/home/jay/workspace/memory/reports/task-{TASK_ID}.md`
