feat: 添加食物识别功能,支持根据图片URL识别食物并转换为饮食记录格式
This commit is contained in:
@@ -15,7 +15,7 @@ import {
|
||||
} from '@nestjs/common';
|
||||
import { ApiOperation, ApiBody, ApiResponse, ApiTags, ApiQuery } from '@nestjs/swagger';
|
||||
import { DietRecordsService } from './diet-records.service';
|
||||
import { CreateDietRecordDto, UpdateDietRecordDto, GetDietHistoryQueryDto, DietRecordResponseDto, DietHistoryResponseDto, NutritionSummaryDto } from '../users/dto/diet-record.dto';
|
||||
import { CreateDietRecordDto, UpdateDietRecordDto, GetDietHistoryQueryDto, DietRecordResponseDto, DietHistoryResponseDto, NutritionSummaryDto, FoodRecognitionRequestDto, FoodRecognitionResponseDto, FoodRecognitionToDietRecordsResponseDto } from '../users/dto/diet-record.dto';
|
||||
import { JwtAuthGuard } from '../common/guards/jwt-auth.guard';
|
||||
import { CurrentUser } from '../common/decorators/current-user.decorator';
|
||||
import { AccessTokenPayload } from '../users/services/apple-auth.service';
|
||||
@@ -121,4 +121,44 @@ export class DietRecordsController {
|
||||
const count = mealCount ? parseInt(mealCount) : 10;
|
||||
return this.dietRecordsService.getRecentNutritionSummary(user.sub, count);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据图片URL识别食物并转换为饮食记录格式
|
||||
*/
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Post('recognize-food-to-records')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: '根据图片URL识别食物并转换为饮食记录格式' })
|
||||
@ApiBody({ type: FoodRecognitionRequestDto })
|
||||
@ApiResponse({ status: 200, description: '成功识别食物并转换为饮食记录格式', type: FoodRecognitionToDietRecordsResponseDto })
|
||||
async recognizeFoodToDietRecords(
|
||||
@Body() requestDto: FoodRecognitionRequestDto,
|
||||
@CurrentUser() user: AccessTokenPayload,
|
||||
): Promise<FoodRecognitionToDietRecordsResponseDto> {
|
||||
this.logger.log(`识别食物转饮食记录 - 用户ID: ${user.sub}, 图片URL: ${requestDto.imageUrl}`);
|
||||
return this.dietRecordsService.recognizeFoodToDietRecords(
|
||||
requestDto.imageUrl,
|
||||
requestDto.mealType
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据图片URL识别食物(原始格式)
|
||||
*/
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Post('recognize-food')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: '根据图片URL识别食物' })
|
||||
@ApiBody({ type: FoodRecognitionRequestDto })
|
||||
@ApiResponse({ status: 200, description: '成功识别食物', type: FoodRecognitionResponseDto })
|
||||
async recognizeFood(
|
||||
@Body() requestDto: FoodRecognitionRequestDto,
|
||||
@CurrentUser() user: AccessTokenPayload,
|
||||
): Promise<FoodRecognitionResponseDto> {
|
||||
this.logger.log(`识别食物 - 用户ID: ${user.sub}, 图片URL: ${requestDto.imageUrl}`);
|
||||
return this.dietRecordsService.recognizeFood(
|
||||
requestDto.imageUrl,
|
||||
requestDto.mealType
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user