📋 Sprint 009~010 계획 추가
- SPRINT-009: 회원가입 제거 + Sprint 동기화 + 진행률 정상화 + 프로필 사진 수정 - SPRINT-010: 관리자 코드 정리 + JWT 단일화 + API Key 정리
This commit is contained in:
63
.plans/sprints/SPRINT-009.md
Normal file
63
.plans/sprints/SPRINT-009.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# 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 필수
|
||||
56
.plans/sprints/SPRINT-010.md
Normal file
56
.plans/sprints/SPRINT-010.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# SPRINT-010: 관리자 코드 정리 + 인증 단일화
|
||||
|
||||
## 목표
|
||||
JWT 로그인 기반으로 완전히 정리하고, 불필요한 API Key/초대코드/죽은 코드를 제거
|
||||
|
||||
## 태스크
|
||||
|
||||
### TASK-036: 관리 페이지 API Key UI 제거
|
||||
- 관리자 페이지에서 API Key 입력 필드/상태 제거
|
||||
- adminFetch가 JWT만 사용하도록 FE 정리
|
||||
- AuthContext 기반 인증 상태만 사용
|
||||
- 관련 안내 문구/placeholder 제거
|
||||
|
||||
### TASK-037: JWT 전용 FE 정리
|
||||
- 로그인/토큰 관리 흐름 단순화
|
||||
- CompositeGuard 하위호환 때문에 남긴 FE 분기 제거
|
||||
- refresh/login/logout 로직 정리
|
||||
- 불필요한 fallback 코드 제거
|
||||
- 에러 처리 UX 정리 (401 → 로그인 페이지 이동)
|
||||
|
||||
### TASK-038: API Key 하위호환 제거 또는 축소
|
||||
- 백엔드에서 API Key 지원 범위를 정리
|
||||
- 원칙:
|
||||
- 일반 웹 UI는 JWT만 사용
|
||||
- 필요한 내부 자동화가 없다면 API Key 완전 제거
|
||||
- 제거 대상 후보:
|
||||
- ApiKeyStrategy
|
||||
- CompositeGuard
|
||||
- ADMIN_API_KEYS env
|
||||
- 만약 완전 제거가 부담되면 “운영/내부 스크립트 전용 엔드포인트”만 남기고 UI 경로는 JWT 전용으로 제한
|
||||
|
||||
### TASK-039: 죽은 코드/불필요 코드 청소
|
||||
- invite/register 관련 unused code 제거
|
||||
- API Key 관련 사용 안 하는 util 제거
|
||||
- old fallback 코드 정리
|
||||
- 문서 업데이트:
|
||||
- `.plans/design/` 변경 필요 시 반영
|
||||
- README / 환경변수 설명 업데이트
|
||||
- grep 기반 점검:
|
||||
- `INVITE_CODE`
|
||||
- `register`
|
||||
- `API_KEY`
|
||||
- `CompositeGuard`
|
||||
- 사용 안 되는 state/props/components
|
||||
|
||||
## 의존성
|
||||
- Sprint 009 완료 후 진행 권장
|
||||
- TASK-036 → TASK-037 → TASK-038 → TASK-039 순서 권장
|
||||
|
||||
## 검증 기준
|
||||
- 관리 페이지에서 API Key 입력 UI 0건
|
||||
- 로그인 후 JWT만으로 관리자 기능 정상 동작
|
||||
- `/register` 관련 코드/엔드포인트 정리 확인
|
||||
- API Key 제거 또는 제한 후 기존 UI 정상 동작
|
||||
- unused code 정리 후 build/test 통과
|
||||
- 외부 URL QA 필수
|
||||
Reference in New Issue
Block a user