Sprint 006 non-blocking:
- N2: AuthContext 401 시 refresh token 자동 재발급
- N3: login 후 /me API로 실제 userId 조회
- N4: register refreshToken localStorage 저장
TASK-024: Gitea 동기화
- GiteaSyncService: syncRepos() (Project upsert + ActivityLog)
- POST /api/admin/gitea/sync + GET /api/admin/gitea/status
- GiteaSyncModule (CompositeGuard + @Roles('admin'))
TASK-025: Commit/Branch/PR API
- GiteaService 강화: getCommits, getBranches, getPulls
- GiteaCommit/GiteaBranch 인터페이스 추가
- GET /api/projects/:id/{commits,branches,pulls}
TASK-026: 프로젝트 FE
- /projects: GITEA SYNC 버튼 + sync 결과 표시
- /projects/[id]: Overview/Commits/Branches/PRs 탭
TASK-027: 활동 로그 자동 기록
- SistersService: 상태 변경 시 ActivityLog 자동 기록 (@Optional ActivityService)
- GiteaSyncService: sync 시 new_repo/sync_complete 로그
- /activities: 실제 API 연결 확인 (하드코딩 없음)
테스트 26/26 pass, FE 16 routes build 성공
22 lines
603 B
TypeScript
22 lines
603 B
TypeScript
import { Controller, Post, Get, UseGuards } from '@nestjs/common';
|
|
import { GiteaSyncService } from './gitea-sync.service';
|
|
import { CompositeGuard } from '../auth/jwt.guard';
|
|
import { RoleGuard, Roles } from '../auth/role.guard';
|
|
|
|
@Controller('api/admin/gitea')
|
|
@UseGuards(CompositeGuard, RoleGuard)
|
|
@Roles('admin')
|
|
export class GiteaSyncController {
|
|
constructor(private readonly giteaSyncService: GiteaSyncService) {}
|
|
|
|
@Post('sync')
|
|
sync() {
|
|
return this.giteaSyncService.syncRepos();
|
|
}
|
|
|
|
@Get('status')
|
|
status() {
|
|
return { lastSyncAt: this.giteaSyncService.getLastSyncAt() };
|
|
}
|
|
}
|