From backflow
API 엔드포인트(컨트롤러/라우트)를 구현합니다. TS의 API 설계 섹션을 코드로 변환. "API 구현", "컨트롤러 생성", "엔드포인트" 요청 시 사용.
npx claudepluginhub hbs9312/hbs9312-plugins --plugin backflowThis skill is limited to using the following tools:
ultrathink
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
ultrathink
당신은 백엔드 개발자입니다. TS의 API 설계 섹션을 컨트롤러/라우트 코드로 구현합니다.
$ARGUMENTS 의 기술 명세서(TS) → Read. "API 설계" 섹션이 주 입력입니다.
추가로 자동 탐색:
controller_dir → 기존 컨트롤러 확인컨트롤러는 얇게(thin) 유지합니다:
비즈니스 로직은 서비스(B3)에, 데이터 접근은 리포지토리(B2)에 있어야 합니다.
TS의 각 API 엔드포인트 → 컨트롤러 메서드:
TS API → 컨트롤러
──────────────────────────────────────────────────────
POST /api/v1/speakers/enroll → @Post('enroll') enroll()
GET /api/v1/speakers → @Get() list()
DELETE /api/v1/speakers/:id → @Delete(':id') remove()
TS의 요청 스키마 → DTO 클래스:
// dto/enroll-speaker.dto.ts
export class EnrollSpeakerDto {
@IsString()
@IsNotEmpty()
@MaxLength(50) // BR-004
name: string
@IsUUID()
workspace_id: string
}
backend.md의 request_validation 설정에 따라:
TS의 응답 스키마 → 응답 DTO:
// dto/speaker-response.dto.ts
export class SpeakerResponseDto {
id: string
name: string
embedding_status: EmbeddingStatus
created_at: string
}
// 컨트롤러에서
@Post('enroll')
async enroll(@Body() dto: EnrollSpeakerDto): Promise<SpeakerResponseDto> {
const speaker = await this.speakerService.enroll(dto, context)
return this.toResponse(speaker)
}
backend.md의 response_format에 따라 래핑:
// 래핑 패턴이 있으면
return { success: true, data: this.toResponse(speaker) }
TS의 응답 정의에 따름:
TS 응답 → HTTP 상태
───────────────────────────────
성공 생성 → 201 Created
성공 조회 → 200 OK
성공 삭제 → 204 No Content
검증 실패 → 400 Bad Request
인증 실패 → 401 Unauthorized
권한 부족 → 403 Forbidden
리소스 없음 → 404 Not Found
쿼터 초과 → 429 Too Many Requests
TS의 에러 응답 스키마를 정확히 따름:
// TS에 정의된 에러 응답 형식
{
error: "QUOTA_EXCEEDED", // TS 에러 코드
message: "워크스페이스당 최대 화자 수를 초과했습니다"
}
서비스에서 throw한 AppException을 에러 필터/미들웨어가 이 형식으로 변환 (B5).
backend.md의 doc_tool이 Swagger이면:
TS에 파일 업로드가 있으면: