CrownyForge 품질 지표 + 의존성 + 릴리즈 + 트렌드
개요
CrownyForge(fab.crowny.org, 포트 8200)에 코드 품질 지표, 의존성 그래프, 릴리즈 관리, 트렌드 스냅샷을 추가하고 대시보드를 전면 리라이트했다. 모든 신규 셀이 core(7731)로 흘러들어간다 — fab 510셀 / core 679셀.
무엇을 했는지
1. DB 스키마 확장 (forge/db.py)
releases— 리포별 태그/제목/작성자/시각dependencies— source→target 엣지 + 타입 + 컨텍스트trend_snapshots— 메트릭별 시계열 (repo_id, metric, value, created_at)
2. 신규 메소드
code_quality()— 리뷰 커버리지 35% + CI 안정성 25% + 엄격도 20% + 해결시간 20% 가중 점수trend_deltas(metric)— 현재 vs 1일전 비교, up/down/flatdependency_graph()— 노드+엣지 반환save_release() / list_releases()add_dependency() / list_dependencies()save_trend() / get_trends() / take_trend_snapshot()
3. API 엔드포인트
GET/POST /api/deps— 의존성 그래프 + 추가GET/POST /api/repos/{id}/releases— 릴리즈 CRUDGET /api/trends— 시계열 조회POST /api/trends/snapshot— 스냅샷 생성GET /api/trends/deltas— 델타 계산GET /api/stats/quality— 품질 지표
4. Cross-ref 자동 감지
이슈/PR 생성 시_detect_cross_refs()가 본문에서 다른 리포 이름을 스캔해 의존성 엣지 자동 생성. 예: "crownyc로 컴파일" → source→crownyc reference 엣지.5. 시드 데이터
- 7개 릴리즈 (crownycell-factory v0.3.0, crownyc v10.0.0 등)
- 5개 의존성 엣지 (factory→crownyc imports, factory→gateway deploys 등)
- 첫 트렌드 스냅샷
6. 대시보드 리라이트 (forge/web/index.html)
- 사이드바 네비게이션 (Dashboard/Repos/Reviews/Activity/Webhooks)
- KPI 4장 (Repos/Issues/PRs/Core Sync)
- Repo Health 게이지 (SVG 링, 점수별 색)
- Review Pipeline (승인율·턴어라운드·리뷰어별 배지)
- Contributors 리더보드
- Activity Feed (상대시간)
- Code Quality 카드 (리포별 막대 + 메트릭)
- Dependency Graph 카드 (source→target 엣지 + 타입 배지)
- Health Trend 스파크라인 (SVG polyline, 상승/하락 색)
- Recent Releases 카드
sparkline()헬퍼 함수
7. user/cells 확장
신규 셀 타입:release (7), dependency (5), dependency-graph (1), code-quality (5), trend-delta (누적 후).8. 한선씨 동반 파일 (forge/server.한선)
316줄 → 470줄. 3함수 추가:
코드품질()— py 메소드 1:1 매핑트렌드델타()— 방향 계산교차참조검출()— cross-ref 감지
관련 파일
/Users/ef/Downloads/crownycell-factory/forge/db.py— 스키마 + 메소드/Users/ef/Downloads/crownycell-factory/forge/server.py— 엔드포인트 + 시드 + cross-ref + user/cells/Users/ef/Downloads/crownycell-factory/forge/server.한선— 동반 파일/Users/ef/Downloads/crownycell-factory/forge/web/index.html— 대시보드 (21KB→26KB)
잔여 이슈
- 트렌드 델타: 스냅샷이 1일 이상 누적돼야 델타가 생성됨. 크론으로 매일
POST /api/trends/snapshot호출 필요. - 의존성 자동 감지: 현재 단순 substring 매칭. 더 정확한 검출을 위해
<org>/<repo>패턴만 매칭하도록 개선 여지. - 품질 점수 튜닝: 가중치 35/25/20/20이 임의값. 실사용 데이터로 조정 필요.
- 스파크라인 데이터: 2개 이상 스냅샷 필요. 현재 10개 누적됨(health 메트릭).
- 릴리즈 UI: CRUD 인풋 폼 없음. 현재는 API로만 생성 가능.