feat(sprint-003): sister detail + org chart + settings viewer
Sprint 002 non-blocking:
- API_URL/POLL_INTERVAL lib/config.ts 공통 추출
- 폴링 간격 NEXT_PUBLIC_POLL_INTERVAL_MS env화
Sprint 003 본문:
- TASK-008: SisterDetailService (config/sessions/subagents/activity 조회)
- TASK-008: GET /api/sisters/:name/{config,sessions,subagents,activity}
- TASK-008: GET /api/org → 조직도 + 파이프라인 데이터
- TASK-009: /sisters 목록 페이지 (카드 클릭 → 상세 이동)
- TASK-009: /sisters/[name] 상세 페이지 (탭: 개요/설정/세션/서브에이전트)
- TASK-009: SisterCard → /sisters/:name 링크 연결
- TASK-010: /org 조직도 페이지 (OrgTree 컴포넌트, 호버 팝업)
- TASK-011: /settings 설정 뷰어 페이지 (자매 선택 드롭다운)
- 테스트 16/16 pass, FE build 성공 (7 routes)
This commit is contained in:
@@ -1,12 +1,39 @@
|
||||
import { Controller, Get } from '@nestjs/common';
|
||||
import { Controller, Get, Param } from '@nestjs/common';
|
||||
import { SistersService } from './sisters.service';
|
||||
import { SisterDetailService } from './sister-detail.service';
|
||||
|
||||
const VALID_NAMES = ['harang', 'narang', 'darang', 'erang'] as const;
|
||||
type SisterName = (typeof VALID_NAMES)[number];
|
||||
|
||||
@Controller('api/sisters')
|
||||
export class SistersController {
|
||||
constructor(private readonly sistersService: SistersService) {}
|
||||
constructor(
|
||||
private readonly sistersService: SistersService,
|
||||
private readonly sisterDetail: SisterDetailService,
|
||||
) {}
|
||||
|
||||
@Get()
|
||||
async getSistersStatus() {
|
||||
return this.sistersService.getAllSistersStatus();
|
||||
}
|
||||
|
||||
@Get(':name/config')
|
||||
async getSisterConfig(@Param('name') name: string) {
|
||||
return this.sisterDetail.getSisterConfig(name as SisterName);
|
||||
}
|
||||
|
||||
@Get(':name/sessions')
|
||||
async getSisterSessions(@Param('name') name: string) {
|
||||
return this.sisterDetail.getSisterSessions(name as SisterName);
|
||||
}
|
||||
|
||||
@Get(':name/subagents')
|
||||
async getSisterSubagents(@Param('name') name: string) {
|
||||
return this.sisterDetail.getSisterSubagents(name as SisterName);
|
||||
}
|
||||
|
||||
@Get(':name/activity')
|
||||
async getSisterActivity(@Param('name') name: string) {
|
||||
return this.sisterDetail.getSisterActivityLog(name as SisterName);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user