refactor(api): 统一API响应格式规范

重构营养成分分析相关接口,统一使用base.dto.ts中定义的通用响应结构体ApiResponseDto,规范所有接口返回格式。更新AI模型prompt以返回标准化的code、msg、data结构,并添加相应的验证装饰器确保数据完整性。
This commit is contained in:
richarjiang
2025-10-16 11:16:33 +08:00
parent 2f2901a0bf
commit 91cac3134e
8 changed files with 138 additions and 66 deletions

View File

@@ -185,22 +185,7 @@ export class DietRecordsController {
this.logger.log(`分析营养成分表 - 用户ID: ${user.sub}, 图片URL: ${requestDto.imageUrl}`);
if (!requestDto.imageUrl) {
return {
success: false,
data: [],
message: '请提供图片URL'
};
}
// 验证URL格式
try {
new URL(requestDto.imageUrl);
} catch (error) {
return {
success: false,
data: [],
message: '图片URL格式不正确'
};
return NutritionAnalysisResponseDto.createError('请提供图片URL');
}
try {
@@ -208,14 +193,15 @@ export class DietRecordsController {
this.logger.log(`营养成分表分析完成 - 用户ID: ${user.sub}, 成功: ${result.success}, 营养素数量: ${result.data.length}`);
return result;
// 转换旧的响应格式到新的通用格式
if (result.success) {
return NutritionAnalysisResponseDto.createSuccess(result.data, result.message || '分析成功');
} else {
return NutritionAnalysisResponseDto.createError(result.message || '分析失败');
}
} catch (error) {
this.logger.error(`营养成分表分析失败 - 用户ID: ${user.sub}, 错误: ${error instanceof Error ? error.message : String(error)}`);
return {
success: false,
data: [],
message: '营养成分表分析失败,请稍后重试'
};
return NutritionAnalysisResponseDto.createError('营养成分表分析失败,请稍后重试');
}
}
}