import { Controller, Post, Get, Body, Param } from '@nestjs/common'; import { ApiTags, ApiOperation } from '@nestjs/swagger'; import { AiAnalysisService } from './ai-analysis.service'; import { CurrentUser } from '../../common/decorators/current-user.decorator'; import { AiAnalysisRateLimit } from '../../common/decorators/rate-limit.decorator'; import type { UserPayload } from '../../common/types'; @ApiTags('ai-analysis') @Controller('ai-analysis') export class AiAnalysisController { constructor(private readonly service: AiAnalysisService) {} @Post() @AiAnalysisRateLimit() @ApiOperation({ summary: '提交主动回忆分析(异步)' }) async analyze( @CurrentUser() user: UserPayload, @Body() body: { questionText: string; knowledgeItemContent: string; userAnswer: string; sessionId?: string; answerId?: string; }, ) { return this.service.analyze(String(user?.id || 'anonymous'), body); } @Post('feynman') @AiAnalysisRateLimit() @ApiOperation({ summary: '提交费曼解释评估(异步)' }) async evaluateFeynman( @CurrentUser() user: UserPayload, @Body() body: { knowledgeItemTitle: string; knowledgeItemContent: string; userExplanation: string; sessionId?: string; answerId?: string; }, ) { return this.service.evaluateFeynman(String(user?.id || 'anonymous'), body); } @Get('jobs/:id') @ApiOperation({ summary: '查询 AI 分析任务状态' }) async getJobStatus(@Param('id') id: string) { return this.service.getJobStatus(id); } @Get(':id') @ApiOperation({ summary: '获取分析结果' }) async findOne(@Param('id') id: string) { return this.service.getResult(id); } }