Files
hanarang-dashboard/backend/src/gitea-sync/gitea-sync.controller.ts
narang-ai a942f4e62d feat(sprint-007): Gitea 연동 + 활동 로그 자동 기록
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 성공
2026-04-04 15:34:27 +09:00

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() };
}
}