feat: add rematch functionality for recipe ingredients and enhance inventory management
Test Suite / test (24.15.0) (push) Has been cancelled
Test Suite / test (24.15.0) (push) Has been cancelled
- Added a new API path for rematching recipe ingredients in `api_paths.dart`. - Implemented a manual product creation dialog in `inventory_screen.dart` to allow users to create new products directly. - Integrated the rematch functionality in `recipe_repository.dart` to handle rematching of recipe ingredients. - Updated the recipe detail screen to include a button for triggering the rematch process. - Introduced a new `RecipeMatchingService` in the backend to handle ingredient matching logic. - Added database migration to include `aiEngineEnabled` column in the User table. Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
+44
-1
@@ -1,8 +1,10 @@
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import { AiService } from '../ai/ai.service';
|
||||
type AnalysisStatus = 'exact_match' | 'covered_by_pantry' | 'substitutable' | 'missing';
|
||||
export declare class RecipeAnalysisService {
|
||||
private readonly prisma;
|
||||
constructor(prisma: PrismaService);
|
||||
private readonly aiService;
|
||||
constructor(prisma: PrismaService, aiService: AiService);
|
||||
private getAccessibleRecipe;
|
||||
private calculateAvailableQuantity;
|
||||
analyzeRecipeIngredients(id: number, userId: number): Promise<{
|
||||
@@ -46,5 +48,46 @@ export declare class RecipeAnalysisService {
|
||||
missingQuantity: number;
|
||||
}[];
|
||||
}>;
|
||||
rematchRecipeIngredients(id: number, userId: number): Promise<{
|
||||
recipeId: number;
|
||||
ingredients: ({
|
||||
ingredientId: any;
|
||||
rawName: any;
|
||||
quantity: number;
|
||||
unit: any;
|
||||
note: any;
|
||||
status: AnalysisStatus;
|
||||
matchedProductId: any;
|
||||
matchedProductName: any;
|
||||
source: string;
|
||||
availableQuantity: number;
|
||||
missingQuantity: number;
|
||||
} | {
|
||||
ingredientId: any;
|
||||
rawName: any;
|
||||
quantity: number;
|
||||
unit: any;
|
||||
note: any;
|
||||
status: AnalysisStatus;
|
||||
matchedProductId: any;
|
||||
matchedProductName: any;
|
||||
source: null;
|
||||
availableQuantity: number;
|
||||
missingQuantity: number;
|
||||
})[];
|
||||
summary: {
|
||||
exactCount: number;
|
||||
pantryCount: number;
|
||||
substituteCount: number;
|
||||
missingCount: number;
|
||||
};
|
||||
shoppingListCandidates: {
|
||||
ingredientId: any;
|
||||
rawName: any;
|
||||
quantity: number;
|
||||
unit: any;
|
||||
missingQuantity: number;
|
||||
}[];
|
||||
}>;
|
||||
}
|
||||
export {};
|
||||
|
||||
Reference in New Issue
Block a user