feat: implement recipe analysis service and data models
Test Suite / test (24.15.0) (push) Has been cancelled

- Added RecipeAnalysisService to handle recipe ingredient analysis, including methods for checking ingredient availability and calculating quantities.
- Introduced new TypeScript definitions for recipe analysis results, including ingredient status and summary.
- Created corresponding Dart models for recipe analysis, including RecipeIngredientAnalysis, RecipeAnalysisSummary, and RecipeShoppingCandidate.
- Updated Flutter UI to reflect changes in ingredient availability status.
- Fixed color opacity issue in recipe image card.
This commit is contained in:
Nils-Johan Gynther
2026-05-06 07:54:03 +02:00
parent 969dafdbc6
commit 9fe85a719c
23 changed files with 1271 additions and 693 deletions
+16 -2
View File
@@ -22,6 +22,7 @@ const parse_markdown_dto_1 = require("./dto/parse-markdown.dto");
const current_user_decorator_1 = require("../auth/decorators/current-user.decorator");
const share_recipe_dto_1 = require("./dto/share-recipe.dto");
const set_recipe_visibility_dto_1 = require("./dto/set-recipe-visibility.dto");
const recipe_analysis_service_1 = require("./recipe-analysis.service");
class UpdateImageDto {
}
__decorate([
@@ -29,8 +30,9 @@ __decorate([
__metadata("design:type", String)
], UpdateImageDto.prototype, "sourceUrl", void 0);
let RecipesController = class RecipesController {
constructor(recipesService) {
constructor(recipesService, recipeAnalysisService) {
this.recipesService = recipesService;
this.recipeAnalysisService = recipeAnalysisService;
}
parseMarkdown(dto) {
return this.recipesService.parseMarkdown(dto);
@@ -44,6 +46,9 @@ let RecipesController = class RecipesController {
getInventoryPreview(id, user) {
return this.recipesService.getInventoryPreview(id, user.userId);
}
getRecipeAnalysis(id, user) {
return this.recipeAnalysisService.analyzeRecipeIngredients(id, user.userId);
}
findOne(id, user) {
return this.recipesService.findOne(id, user.userId);
}
@@ -102,6 +107,14 @@ __decorate([
__metadata("design:paramtypes", [Number, Object]),
__metadata("design:returntype", void 0)
], RecipesController.prototype, "getInventoryPreview", null);
__decorate([
(0, common_1.Get)(':id/analysis'),
__param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
__param(1, (0, current_user_decorator_1.CurrentUser)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number, Object]),
__metadata("design:returntype", void 0)
], RecipesController.prototype, "getRecipeAnalysis", null);
__decorate([
(0, common_1.Get)(':id'),
__param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
@@ -183,6 +196,7 @@ __decorate([
], RecipesController.prototype, "unshareRecipe", null);
exports.RecipesController = RecipesController = __decorate([
(0, common_1.Controller)('recipes'),
__metadata("design:paramtypes", [recipes_service_1.RecipesService])
__metadata("design:paramtypes", [recipes_service_1.RecipesService,
recipe_analysis_service_1.RecipeAnalysisService])
], RecipesController);
//# sourceMappingURL=recipes.controller.js.map