# SPRINT-009: 관리자 단순화 + 프로젝트 진행률 정상화 + 프로필 사진 수정 ## 목표 관리자 전용 서비스에 맞게 회원가입 제거, 프로젝트 진행률 계산 정상화, 자매 프로필 사진 표시 버그 수정 ## 태스크 ### TASK-032: 회원가입 제거 - `/register` 페이지 제거 - `POST /api/auth/register` 엔드포인트 제거 또는 비활성화 - `INVITE_CODE` 환경변수 및 초대코드 기반 가입 로직 제거 - 로그인 전용 플로우로 단순화 - FE: 로그인 페이지에서 회원가입 링크 제거 - UX: 비로그인 시 `/login`으로만 이동 ### TASK-033: 프로젝트 Sprint 동기화 - 각 프로젝트 repo의 `.plans/sprints/` 디렉토리를 읽어 Sprint DB 레코드 생성/업데이트 - Gitea API로 repo tree 조회 또는 raw 파일 fetch - 동기화 대상: - `SPRINT-001.md` ~ `SPRINT-XXX.md` - Sprint number, name, status(기본 pending) 추출 - API: - `POST /api/admin/projects/:id/sync-sprints` - `POST /api/admin/projects/sync-all-sprints` - Gitea sync 시 Sprint 동기화도 함께 수행 가능하도록 확장 ### TASK-034: 프로젝트 진행률 계산 수정 - 현재 “스프린트 없음” 문제 해결 - 진행률 계산 방식: - 기본: `완료 Sprint 수 / 전체 Sprint 수` - 가능하면 `.qa/` 또는 상태 기반으로 `done/review/in_progress` 반영 - 프로젝트 목록 페이지(`/projects`): 진행률 바/퍼센트 표시 - 프로젝트 상세 페이지(`/projects/[id]`): Sprint 목록 + 상태 표시 - “No sprint data” fallback 제거 ### TASK-035: 프로필 사진 버그 수정 - 현재 아이콘 fallback만 보이는 문제 원인 파악 - 점검 항목: - avatar API 경로 연결 여부 - FE 이미지 src 설정 - 캐시(5분 TTL) fallback 지속 문제 - 실제 서버 파일 경로 (`~/.openclaw/avatar.png|jpg|webp`) 확인 - 수정 목표: - 실제 사진 있으면 항상 우선 표시 - 실패 시에만 SVG fallback - 반영 위치: - 대시보드 자매 카드 - `/sisters` - `/sisters/[name]` ## 의존성 - TASK-032는 독립적 - TASK-033 → TASK-034 순서 필수 - TASK-035는 독립적, 병렬 가능 ## 검증 기준 - `/register` 접근 불가 또는 로그인으로 리다이렉트 - 회원가입 API 제거/비활성화 확인 - 프로젝트별 Sprint 동기화 후 진행률 표시 정상 - 프로젝트 목록/상세에서 Sprint 데이터 렌더링 - 자매 프로필 사진 실제 이미지 표시 확인 - npm run build 성공 + 테스트 통과 - 외부 URL QA 필수