Commit Graph

6 Commits

Author SHA1 Message Date
ttipo a8069aa72b docs: 진행현황 갱신 — 생성폼 보강(소유자/설명/템플릿) 반영
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 00:29:27 +09:00
ttipo 7f432a0013 feat: 저장소 생성 시 설명 필수화 + 템플릿 복제 생성
- 프로젝트 설명을 생성 필수 항목으로 변경(CreateRepoDto.description required + 프론트 검증)
- 템플릿 복제: useTemplate=true 면 Gitea generate API 로 GITEA_TEMPLATE_OWNER/REPO
  (기본 TtiPo/project-base) 저장소를 복제 생성(브랜치는 템플릿을 따름)
- GET /repos/owner → /repos/meta 로 확장({ owner, template }) — 생성폼 메타 일괄 제공
- 프론트 생성폼: 가짜 템플릿 목록 제거 → 실제 템플릿 옵션, 설명 필수 UI
- env.example/ api-contract/ 진행현황 문서 갱신

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 00:20:21 +09:00
ttipo 6652e79768 feat: 저장소 소유자(조직)를 백엔드 설정값으로 표시
생성 폼/목록의 하드코딩된 'marketing-team' 을 실제 설정값으로 교체한다.
- 백엔드: GET /repos/owner ({ owner }) — GITEA_ORG(미연동 시 기본 상수) 반환
- 프론트: useRepo.owner() + repo.store owner/fetchOwner(캐시)
- RepoCreatePage 소유자 고정 표시, RepoListPage 배너를 실제 조직명으로

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 23:53:39 +09:00
ttipo efe7b29581 feat: 저장소 멤버 관리 API 추가 (3단계)
저장소별 멤버 초대/역할변경/제거 엔드포인트를 추가한다.
- MemberService/MemberController: GET/POST/PATCH/DELETE /repos/:repoId/members
- 권한: 목록=멤버+, 변경=admin, 소유자(owner) 역할변경·제거 불가
- 초대는 가입된 사용자만(이메일 조회), 미가입/중복 시 BIZ_001
- InviteMemberDto/UpdateMemberDto, member.service.spec(가드 단위 테스트)
- 멤버는 Gitea 미동기화(조직 토큰 단일 모델), api-contract/진행현황 갱신

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 23:41:44 +09:00
ttipo 6027856cbb feat: 저장소 생성 시 Gitea 조직 연동 추가
외부 Gitea 인스턴스의 조직에 저장소를 자동 동기화한다.
- GiteaService: /api/v1 클라이언트(내장 fetch, 새 의존성 없음), enabled 게이트
- Repo 엔티티에 연동 컬럼(giteaRepoId/giteaFullName/cloneUrl/htmlUrl) 추가
- RepoService 생성/수정/삭제에 Gitea 동기화 와이어링(생성 우선·실패 시 롤백)
- GITEA_* env 문서화(.env.example), api-contract/진행현황 문서 갱신

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 22:17:33 +09:00
ttipo e1bc5a1dfc first commit 2026-06-16 17:12:08 +09:00