diff --git a/backend/MenuGreen.API/Controllers/FoodController.cs b/backend/MenuGreen.API/Controllers/FoodController.cs index 061e1f4f..16c84830 100644 --- a/backend/MenuGreen.API/Controllers/FoodController.cs +++ b/backend/MenuGreen.API/Controllers/FoodController.cs @@ -46,7 +46,9 @@ public async Task Search( [FromQuery] string? region, [FromQuery] bool? localOnly, [FromQuery] string? mealContext, - [FromQuery] string? sort) + [FromQuery] string? sort, + [FromQuery] int? page, + [FromQuery] int? pageSize) { if (!ModelState.IsValid) return BadRequest(ModelState); @@ -55,7 +57,7 @@ public async Task Search( var userId = TryGetUserId(); var result = await _foodService.SearchAsync( keyword, minCalories, maxCalories, proteinLevel, maxPriceVnd, maxPrepTimeMin, category, - userId, allergyMode, region, localOnly, mealContext, sort); + userId, allergyMode, region, localOnly, mealContext, sort, page, pageSize); return Ok(result); } catch (Exception ex) diff --git a/backend/MenuGreen.API/Controllers/IngredientController.cs b/backend/MenuGreen.API/Controllers/IngredientController.cs index 91bb67b9..b3fa482b 100644 --- a/backend/MenuGreen.API/Controllers/IngredientController.cs +++ b/backend/MenuGreen.API/Controllers/IngredientController.cs @@ -34,12 +34,14 @@ public async Task Search( [FromQuery] string? keyword, [FromQuery] string? category, [FromQuery] bool? isActive, - [FromQuery] string? allergyMode) + [FromQuery] string? allergyMode, + [FromQuery] int? page, + [FromQuery] int? pageSize) { try { return Ok(await _ingredientService.SearchAsync( - keyword, category, isActive, TryGetUserId(), allergyMode)); + keyword, category, isActive, TryGetUserId(), allergyMode, page, pageSize)); } catch (Exception ex) { diff --git a/backend/MenuGreen.API/Controllers/LuckyWheelController.cs b/backend/MenuGreen.API/Controllers/LuckyWheelController.cs index b228dc8e..1d5bc0a7 100644 --- a/backend/MenuGreen.API/Controllers/LuckyWheelController.cs +++ b/backend/MenuGreen.API/Controllers/LuckyWheelController.cs @@ -24,14 +24,19 @@ public LuckyWheelController(ILuckyWheelService luckyWheelService) /// Get 10 personalized non-duplicate foods for the lucky wheel display. /// [HttpGet("foods")] - public async Task GetWheelFoods() + public async Task GetWheelFoods([FromQuery] int? maxPriceVnd = null) { if (!Guid.TryParse(User.FindFirstValue(ClaimTypes.NameIdentifier), out var userId)) { return Unauthorized(); } - var result = await _luckyWheelService.GetWheelFoodsAsync(userId); + if (maxPriceVnd is <= 0) + { + return BadRequest(new { message = "Ngân sách phải lớn hơn 0." }); + } + + var result = await _luckyWheelService.GetWheelFoodsAsync(userId, maxPriceVnd); return Ok(result); } diff --git a/backend/MenuGreen.API/Controllers/NutritionTrackingController.cs b/backend/MenuGreen.API/Controllers/NutritionTrackingController.cs index e7f60f71..1f8de99d 100644 --- a/backend/MenuGreen.API/Controllers/NutritionTrackingController.cs +++ b/backend/MenuGreen.API/Controllers/NutritionTrackingController.cs @@ -35,6 +35,7 @@ public NutritionTrackingController( public async Task GetMealLogs([FromQuery] int page = 1, [FromQuery] int pageSize = 20) { if (!TryGetUserId(out var userId)) return Unauthorized(); + await _mealPlanService.SyncCompletedItemsToMealLogsAsync(userId); return Ok(await _service.GetMealLogsAsync(userId, page, pageSize)); } @@ -93,6 +94,10 @@ public async Task DeleteMealLog(Guid mealLogId) public async Task GetMealLogsByRange([FromQuery] DateOnly startDate, [FromQuery] DateOnly endDate) { if (!TryGetUserId(out var userId)) return Unauthorized(); + await _mealPlanService.SyncCompletedItemsToMealLogsAsync( + userId, + startDate, + endDate); return Ok(await _service.GetMealLogsByRangeAsync(userId, startDate, endDate)); } @@ -123,6 +128,10 @@ public async Task GetTrends([FromQuery] DateOnly startDate, [From public async Task GetDaily([FromQuery] DateOnly date) { if (!TryGetUserId(out var userId)) return Unauthorized(); + await _mealPlanService.SyncCompletedItemsToMealLogsAsync( + userId, + date, + date); return Ok(await _service.GetDailySummaryAsync(userId, date)); } @@ -133,6 +142,19 @@ public async Task GetDaily([FromQuery] DateOnly date) public async Task GetDashboard([FromQuery] string range = "day", [FromQuery] DateOnly? startDate = null, [FromQuery] DateOnly? endDate = null) { if (!TryGetUserId(out var userId)) return Unauthorized(); + var today = DateOnly.FromDateTime(DateTime.UtcNow.AddHours(7)); + var (syncFrom, syncTo) = startDate.HasValue && endDate.HasValue + ? (startDate.Value, endDate.Value) + : range.Trim().ToLowerInvariant() switch + { + "week" => (today.AddDays(-6), today), + "month" => (new DateOnly(today.Year, today.Month, 1), today), + _ => (today, today) + }; + await _mealPlanService.SyncCompletedItemsToMealLogsAsync( + userId, + syncFrom, + syncTo); return Ok(await _service.GetDashboardAsync(userId, range, startDate, endDate)); } diff --git a/backend/MenuGreen.API/Controllers/RecipeController.cs b/backend/MenuGreen.API/Controllers/RecipeController.cs index 082c69f2..3b014c60 100644 --- a/backend/MenuGreen.API/Controllers/RecipeController.cs +++ b/backend/MenuGreen.API/Controllers/RecipeController.cs @@ -35,12 +35,14 @@ public async Task Search( [FromQuery] string? mealType, [FromQuery] string? difficulty, [FromQuery] bool? isActive, - [FromQuery] string? allergyMode) + [FromQuery] string? allergyMode, + [FromQuery] int? page, + [FromQuery] int? pageSize) { try { return Ok(await _recipeService.SearchAsync( - keyword, mealType, difficulty, isActive, TryGetUserId(), allergyMode)); + keyword, mealType, difficulty, isActive, TryGetUserId(), allergyMode, page, pageSize)); } catch (Exception ex) { diff --git a/backend/MenuGreen.API/Controllers/UserMealPlanController.cs b/backend/MenuGreen.API/Controllers/UserMealPlanController.cs index a0aae92e..d6bc759a 100644 --- a/backend/MenuGreen.API/Controllers/UserMealPlanController.cs +++ b/backend/MenuGreen.API/Controllers/UserMealPlanController.cs @@ -22,10 +22,12 @@ public UserMealPlanController(IMealPlanService service) } [HttpGet] - public async Task GetByDate([FromQuery] DateOnly date) + public async Task GetByDate( + [FromQuery] DateOnly date, + [FromQuery] bool refresh = false) { if (!TryGetUserId(out var userId)) return Unauthorized(); - var plan = await _service.GetByDateAsync(userId, date); + var plan = await _service.GetByDateAsync(userId, date, refresh); if (plan == null) return NoContent(); return Ok(plan); } diff --git a/backend/MenuGreen.API/Program.cs b/backend/MenuGreen.API/Program.cs index 0f7c2792..6d86e85b 100644 --- a/backend/MenuGreen.API/Program.cs +++ b/backend/MenuGreen.API/Program.cs @@ -105,7 +105,7 @@ options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin")); options.AddPolicy( "UserOnly", - policy => policy.RequireRole("Admin", "User", "Free", "Casual", "Gymer", "Office", "Coach") + policy => policy.RequireRole("Admin", "Free", "Casual", "Gymer", "Office", "Coach") ); options.AddPolicy("CoachOnly", policy => policy.RequireRole("Coach", "Admin")); options.AddPolicy( diff --git a/backend/MenuGreen.BusinessLogicLayer/BackgroundJobs/SepayReconciliationBackgroundService.cs b/backend/MenuGreen.BusinessLogicLayer/BackgroundJobs/SepayReconciliationBackgroundService.cs index 1899b2d6..2b5848a8 100644 --- a/backend/MenuGreen.BusinessLogicLayer/BackgroundJobs/SepayReconciliationBackgroundService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/BackgroundJobs/SepayReconciliationBackgroundService.cs @@ -210,6 +210,23 @@ public async Task ReconcilePaymentsAsync(CancellationToken stoppingToken) }; await unitOfWork.SubscriptionTransactions.AddAsync(tx); + // Upgrade user role to Office when purchasing an Office plan + if (string.Equals(plan?.FeatureGroup, "office", StringComparison.OrdinalIgnoreCase) || + string.Equals(plan?.Name, "Office", StringComparison.OrdinalIgnoreCase)) + { + var user = await unitOfWork.Users.GetByIdAsync(subscription.UserId); + if (user != null) + { + var officeRole = (await unitOfWork.Roles.FindAsync(r => r.Name == "Office")).FirstOrDefault(); + if (officeRole != null && user.RoleId != officeRole.Id) + { + user.RoleId = officeRole.Id; + user.UpdatedAt = DateTime.UtcNow; + unitOfWork.Users.Update(user); + } + } + } + // Notify user var notifRequest = new NotificationSendRequest { diff --git a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/AssignRoleRequest.cs b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/AssignRoleRequest.cs index b9451759..57739d6f 100644 --- a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/AssignRoleRequest.cs +++ b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/AssignRoleRequest.cs @@ -5,6 +5,6 @@ namespace MenuGreen.BusinessLogicLayer.DTOs.Requests public class AssignRoleRequest { [Required] - public string Role { get; set; } = string.Empty; // e.g., "Admin", "User", "Manager" + public string Role { get; set; } = string.Empty; // e.g., "Admin", "Free", "Casual", "Gymer", "Office", "Coach" } } diff --git a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/BalanceMealPlanCaloriesRequest.cs b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/BalanceMealPlanCaloriesRequest.cs index 890616f0..29179487 100644 --- a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/BalanceMealPlanCaloriesRequest.cs +++ b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/BalanceMealPlanCaloriesRequest.cs @@ -13,5 +13,12 @@ public class BalanceMealPlanCaloriesRequest [MinLength(1)] public List ItemIds { get; set; } = new(); + + /// + /// Scale the selected portions without replacing the configured daily + /// nutrition target. Gymer uses this when choosing an intake below or + /// above the recommended target. + /// + public bool PreservePlanTarget { get; set; } } } diff --git a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/DailyStarterSelectMealRequest.cs b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/DailyStarterSelectMealRequest.cs index a5defc40..19853c44 100644 --- a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/DailyStarterSelectMealRequest.cs +++ b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/DailyStarterSelectMealRequest.cs @@ -4,14 +4,48 @@ namespace MenuGreen.BusinessLogicLayer.DTOs.Requests { - public class DailyStarterMealItem + public class DailyStarterMealItem : IValidatableObject { - [Required] - public Guid FoodId { get; set; } + public Guid? FoodId { get; set; } + + [StringLength(200)] + public string? CustomName { get; set; } + + [Range(typeof(decimal), "0", "10000")] + public decimal? CaloriesKcal { get; set; } + + [Range(typeof(decimal), "0", "1000")] + public decimal? ProteinG { get; set; } + + [Range(typeof(decimal), "0", "1000")] + public decimal? CarbsG { get; set; } + + [Range(typeof(decimal), "0", "1000")] + public decimal? FatG { get; set; } + + [Range(typeof(decimal), "0.01", "10000")] + public decimal? QuantityG { get; set; } [Required] [RegularExpression("^(Breakfast|Lunch|Dinner|Snack)$", ErrorMessage = "MealType must be Breakfast, Lunch, Dinner, or Snack.")] public string MealType { get; set; } = "Breakfast"; // Breakfast, Lunch, Dinner, Snack + + public IEnumerable Validate(ValidationContext validationContext) + { + if (!FoodId.HasValue && string.IsNullOrWhiteSpace(CustomName)) + { + yield return new ValidationResult( + "FoodId or CustomName is required.", + new[] { nameof(FoodId), nameof(CustomName) }); + } + + if (!FoodId.HasValue && !CaloriesKcal.HasValue) + { + yield return new ValidationResult( + "CaloriesKcal is required for a custom meal.", + new[] { nameof(CaloriesKcal) }); + } + } } public class DailyStarterSelectMealRequest diff --git a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/MealLogUpsertRequest.cs b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/MealLogUpsertRequest.cs index 7f12498c..325d79e8 100644 --- a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/MealLogUpsertRequest.cs +++ b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/MealLogUpsertRequest.cs @@ -24,6 +24,8 @@ public class MealLogUpsertRequest : IValidatableObject public string? Notes { get; set; } [MaxLength(200)] public string? CustomName { get; set; } + [MaxLength(50)] + public string? SourceType { get; set; } public DateTime? LoggedAt { get; set; } public Guid? MealPlanItemId { get; set; } diff --git a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/MealPlanItemUpsertRequest.cs b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/MealPlanItemUpsertRequest.cs index 0d66efb0..3ecb9099 100644 --- a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/MealPlanItemUpsertRequest.cs +++ b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/MealPlanItemUpsertRequest.cs @@ -25,6 +25,10 @@ public class MealPlanItemUpsertRequest public string? CustomName { get; set; } public double? QuantityG { get; set; } + public decimal? ProteinG { get; set; } + public decimal? CarbsG { get; set; } + public decimal? FatG { get; set; } + public string? SourceType { get; set; } public List? Ingredients { get; set; } } diff --git a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/RegisterRequest.cs b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/RegisterRequest.cs index 3509e634..80bc282d 100644 --- a/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/RegisterRequest.cs +++ b/backend/MenuGreen.BusinessLogicLayer/DTOs/Requests/RegisterRequest.cs @@ -17,7 +17,7 @@ public class RegisterRequest public string Password { get; set; } = string.Empty; [Required(ErrorMessage = "Account type is required.")] - [RegularExpression("(?i)^(User|PT)$", ErrorMessage = "Account type must be User or PT.")] - public string AccountType { get; set; } = "User"; + [RegularExpression("(?i)^(Free|PT)$", ErrorMessage = "Account type must be Free or PT.")] + public string AccountType { get; set; } = "Free"; } } diff --git a/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/FoodSearchResponse.cs b/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/FoodSearchResponse.cs index 4da5e4c0..01aa69a4 100644 --- a/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/FoodSearchResponse.cs +++ b/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/FoodSearchResponse.cs @@ -6,5 +6,10 @@ public class FoodSearchResponse { public List Items { get; set; } = new(); public int TotalCount { get; set; } + public int Page { get; set; } = 1; + public int PageSize { get; set; } + public int TotalPages => PageSize > 0 + ? (int)System.Math.Ceiling((double)TotalCount / PageSize) + : 0; } } diff --git a/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/IngredientSearchResponse.cs b/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/IngredientSearchResponse.cs index a042be20..d7039900 100644 --- a/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/IngredientSearchResponse.cs +++ b/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/IngredientSearchResponse.cs @@ -6,5 +6,10 @@ public class IngredientSearchResponse { public List Items { get; set; } = new(); public int TotalCount { get; set; } + public int Page { get; set; } = 1; + public int PageSize { get; set; } + public int TotalPages => PageSize > 0 + ? (int)System.Math.Ceiling((double)TotalCount / PageSize) + : 0; } } diff --git a/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/MealTemplateResponse.cs b/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/MealTemplateResponse.cs index 18268d6c..7353be05 100644 --- a/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/MealTemplateResponse.cs +++ b/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/MealTemplateResponse.cs @@ -26,6 +26,8 @@ public class MealTemplateItemResponse public Guid? RecipeId { get; set; } public string? CustomName { get; set; } public string? SourceType { get; set; } + public string? Name { get; set; } + public string MealType { get; set; } = "Snack"; public decimal QuantityG { get; set; } public List Ingredients { get; set; } = new(); public string? Notes { get; set; } diff --git a/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/RecipeResponse.cs b/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/RecipeResponse.cs index 3bc1c19d..f140e7f4 100644 --- a/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/RecipeResponse.cs +++ b/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/RecipeResponse.cs @@ -20,6 +20,8 @@ public class RecipeResponse public string? Instructions { get; set; } public string? ImageUrl { get; set; } public string? VideoUrl { get; set; } + public string? SourceName { get; set; } + public string? SourceUrl { get; set; } public bool? IsActive { get; set; } public List Ingredients { get; set; } = new(); public List MatchedAllergens { get; set; } = new(); diff --git a/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/RecipeSearchResponse.cs b/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/RecipeSearchResponse.cs index ec1e4d34..678344e8 100644 --- a/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/RecipeSearchResponse.cs +++ b/backend/MenuGreen.BusinessLogicLayer/DTOs/Responses/RecipeSearchResponse.cs @@ -6,5 +6,10 @@ public class RecipeSearchResponse { public List Items { get; set; } = new(); public int TotalCount { get; set; } + public int Page { get; set; } = 1; + public int PageSize { get; set; } + public int TotalPages => PageSize > 0 + ? (int)System.Math.Ceiling((double)TotalCount / PageSize) + : 0; } } diff --git a/backend/MenuGreen.BusinessLogicLayer/Helpers/CacheKeyBuilder.cs b/backend/MenuGreen.BusinessLogicLayer/Helpers/CacheKeyBuilder.cs index 572ad2bc..3354ef4f 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Helpers/CacheKeyBuilder.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Helpers/CacheKeyBuilder.cs @@ -5,6 +5,7 @@ namespace MenuGreen.BusinessLogicLayer.Helpers public static class CacheKeys { private const string Version = "v1"; + private const string MealPlanVersion = "v3"; public static string FoodCatalog(string? keyword, string? category, int? minCal, int? maxCal) => $"food:catalog:{Version}:{keyword ?? ""}:{category ?? ""}:{minCal}:{maxCal}"; @@ -41,10 +42,10 @@ public static string CaloriesRemaining(Guid userId, DateTime date) => $"user:{userId}:calories-remaining:{date:yyyy-MM-dd}:{Version}"; public static string MealPlan(Guid userId, DateTime date) - => $"user:{userId}:mealplan:{date:yyyy-MM-dd}:{Version}"; + => $"user:{userId}:mealplan:{date:yyyy-MM-dd}:{MealPlanVersion}"; public static string MealPlanByDate(Guid userId, DateOnly date) - => $"user:{userId}:mealplan:{date:yyyy-MM-dd}:{Version}"; + => $"user:{userId}:mealplan:{date:yyyy-MM-dd}:{MealPlanVersion}"; public static string UserAiContext(Guid userId) => $"user:{userId}:ai-context:{Version}"; diff --git a/backend/MenuGreen.BusinessLogicLayer/Helpers/VietnamTime.cs b/backend/MenuGreen.BusinessLogicLayer/Helpers/VietnamTime.cs new file mode 100644 index 00000000..078d92d0 --- /dev/null +++ b/backend/MenuGreen.BusinessLogicLayer/Helpers/VietnamTime.cs @@ -0,0 +1,32 @@ +using System; + +namespace MenuGreen.BusinessLogicLayer.Helpers +{ + internal static class VietnamTime + { + private const int UtcOffsetHours = 7; + + public static DateOnly ToDate(DateTime value) + { + // Npgsql legacy timestamp mode can materialize timestamptz as + // DateTimeKind.Local. Adding seven hours directly in that case + // double-applies the Vietnam offset and moves evening meals to the + // following day. Normalize the instant to UTC first. + var utc = value.Kind switch + { + DateTimeKind.Utc => value, + DateTimeKind.Local => value.ToUniversalTime(), + _ => DateTime.SpecifyKind(value, DateTimeKind.Utc) + }; + return DateOnly.FromDateTime(utc.AddHours(UtcOffsetHours)); + } + + public static DateTime RangeStartUtc(DateOnly date) => date + .ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc) + .AddHours(-UtcOffsetHours); + + public static DateTime RangeEndUtc(DateOnly date) => date + .ToDateTime(TimeOnly.MaxValue, DateTimeKind.Utc) + .AddHours(-UtcOffsetHours); + } +} diff --git a/backend/MenuGreen.BusinessLogicLayer/Interfaces/IFoodService.cs b/backend/MenuGreen.BusinessLogicLayer/Interfaces/IFoodService.cs index 62f84cc9..8d633529 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Interfaces/IFoodService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Interfaces/IFoodService.cs @@ -25,7 +25,9 @@ Task SearchAsync( string? region = null, bool? localOnly = null, string? mealContext = null, - string? sort = null); + string? sort = null, + int? page = null, + int? pageSize = null); Task> GetRecipesAsync(Guid foodId); Task> GetFavoritesAsync(Guid userId); Task FavoriteAsync(Guid userId, Guid foodId); diff --git a/backend/MenuGreen.BusinessLogicLayer/Interfaces/IGroceryListBuilderService.cs b/backend/MenuGreen.BusinessLogicLayer/Interfaces/IGroceryListBuilderService.cs index 8c4694c4..783a0079 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Interfaces/IGroceryListBuilderService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Interfaces/IGroceryListBuilderService.cs @@ -13,7 +13,9 @@ namespace MenuGreen.BusinessLogicLayer.Interfaces public interface IGroceryListBuilderService { /// - /// Group recipe ingredients by the planned date of each meal-plan item. + /// Group the effective ingredients of each meal-plan item by planned date. + /// Item snapshots take priority; legacy FoodId items can be supplied with + /// a linked RecipeId by the caller. /// Items with no PlannedDate are merged into a single entry whose /// PlannedDate is null and sorted to the end of the result. /// diff --git a/backend/MenuGreen.BusinessLogicLayer/Interfaces/IIngredientService.cs b/backend/MenuGreen.BusinessLogicLayer/Interfaces/IIngredientService.cs index 860b4caf..17cf49af 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Interfaces/IIngredientService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Interfaces/IIngredientService.cs @@ -12,7 +12,14 @@ public interface IIngredientService Task UpdateAsync(Guid id, IngredientUpsertRequest request); Task DeleteAsync(Guid id); Task GetByIdAsync(Guid id, Guid? userId = null, string? allergyMode = null); - Task SearchAsync(string? keyword, string? category, bool? isActive, Guid? userId = null, string? allergyMode = null); + Task SearchAsync( + string? keyword, + string? category, + bool? isActive, + Guid? userId = null, + string? allergyMode = null, + int? page = null, + int? pageSize = null); Task> GetRecipesAsync(Guid ingredientId); Task> GetCatalogAsync(); } diff --git a/backend/MenuGreen.BusinessLogicLayer/Interfaces/ILuckyWheelService.cs b/backend/MenuGreen.BusinessLogicLayer/Interfaces/ILuckyWheelService.cs index 261a9dbc..3ceb82eb 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Interfaces/ILuckyWheelService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Interfaces/ILuckyWheelService.cs @@ -7,7 +7,7 @@ namespace MenuGreen.BusinessLogicLayer.Interfaces { public interface ILuckyWheelService { - Task> GetWheelFoodsAsync(Guid userId); + Task> GetWheelFoodsAsync(Guid userId, int? maxPriceVnd = null); Task ApplyWheelSelectionAsync(Guid userId, Guid foodId, string mealType); } } diff --git a/backend/MenuGreen.BusinessLogicLayer/Interfaces/IMealPlanService.cs b/backend/MenuGreen.BusinessLogicLayer/Interfaces/IMealPlanService.cs index bd64f5e3..19441b6d 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Interfaces/IMealPlanService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Interfaces/IMealPlanService.cs @@ -40,10 +40,17 @@ public interface IMealPlanService Task GetGroceryListAsync(Guid planId, Guid userId); // Daily Meal Plan Methods - Task GetByDateAsync(Guid userId, DateOnly date); + Task GetByDateAsync( + Guid userId, + DateOnly date, + bool forceRefresh = false); Task CreateOrUpdateDailyAsync(Guid userId, UserMealPlanUpsertRequest request); Task CreateFromDailyMenuAsync(Guid userId, CreateMealPlanFromDailyMenuRequest request); Task LinkMealLogToDailyPlanAsync(Guid userId, Guid mealLogId); + Task SyncCompletedItemsToMealLogsAsync( + Guid userId, + DateOnly? startDate = null, + DateOnly? endDate = null); Task CompleteItemAsync(Guid userId, Guid itemId, CompleteMealPlanItemRequest request); Task GetAdherenceAsync(Guid userId, DateOnly date); Task ToggleItemAsync(Guid userId, Guid itemId, bool isCompleted); diff --git a/backend/MenuGreen.BusinessLogicLayer/Interfaces/IRecipeService.cs b/backend/MenuGreen.BusinessLogicLayer/Interfaces/IRecipeService.cs index 2a0791b6..ce4fd485 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Interfaces/IRecipeService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Interfaces/IRecipeService.cs @@ -18,7 +18,9 @@ Task SearchAsync( string? difficulty, bool? isActive, Guid? userId = null, - string? allergyMode = null); + string? allergyMode = null, + int? page = null, + int? pageSize = null); Task> GetIngredientsAsync(Guid recipeId); Task GetNutritionAsync(Guid recipeId); Task> GetRelatedAsync(Guid recipeId); diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/AuthService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/AuthService.cs index a3cac6fd..331f571c 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/AuthService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/AuthService.cs @@ -37,7 +37,7 @@ public async Task RegisterAsync(RegisterRequest request) if (existingUsers.Any()) throw new Exception("Email is already registered."); var isPtAccount = string.Equals(request.AccountType.Trim(), "PT", StringComparison.OrdinalIgnoreCase); - var roleName = isPtAccount ? "Coach" : "User"; + var roleName = isPtAccount ? "Coach" : "Free"; var userRole = (await _unitOfWork.Roles.FindAsync( r => r.Name.ToLower() == roleName.ToLower())).FirstOrDefault(); if (userRole == null) @@ -48,7 +48,7 @@ public async Task RegisterAsync(RegisterRequest request) Name = roleName, Description = isPtAccount ? "Personal trainer / Nutrition coach" - : "User Role", + : "Free tier user", CreatedAt = DateTime.UtcNow, UpdatedAt = DateTime.UtcNow }; @@ -134,7 +134,7 @@ public async Task LoginAsync(LoginRequest request) user.LastSignInAt = DateTime.UtcNow; _unitOfWork.Users.Update(user); - var roleName = (await _unitOfWork.Roles.FindAsync(r => r.Id == user.RoleId)).FirstOrDefault()?.Name ?? "User"; + var roleName = (await _unitOfWork.Roles.FindAsync(r => r.Id == user.RoleId)).FirstOrDefault()?.Name ?? "Free"; var profile = (await _unitOfWork.Profiles.FindAsync(p => p.UserId == user.Id)).FirstOrDefault(); var accessToken = GenerateJwtToken(user, roleName); var refreshToken = GenerateRefreshToken(); @@ -162,7 +162,7 @@ public async Task RefreshTokenAsync(string refreshToken) if (user == null || !user.IsActive) throw new Exception("Your account has been locked or does not exist."); - var roleName = (await _unitOfWork.Roles.FindAsync(r => r.Id == user.RoleId)).FirstOrDefault()?.Name ?? "User"; + var roleName = (await _unitOfWork.Roles.FindAsync(r => r.Id == user.RoleId)).FirstOrDefault()?.Name ?? "Free"; var profile = (await _unitOfWork.Profiles.FindAsync(p => p.UserId == user.Id)).FirstOrDefault(); var newAccessToken = GenerateJwtToken(user, roleName); var newRefreshToken = GenerateRefreshToken(); @@ -298,14 +298,14 @@ public async Task LoginWithGoogleAsync(string idToken) if (user == null) { - var userRole = (await _unitOfWork.Roles.FindAsync(r => r.Name == "User")).FirstOrDefault(); + var userRole = (await _unitOfWork.Roles.FindAsync(r => r.Name == "Free")).FirstOrDefault(); if (userRole == null) { userRole = new Role { Id = Guid.NewGuid(), - Name = "User", - Description = "User Role", + Name = "Free", + Description = "Free tier user", CreatedAt = DateTime.UtcNow, UpdatedAt = DateTime.UtcNow }; @@ -373,7 +373,7 @@ public async Task LoginWithGoogleAsync(string idToken) private async Task IssueAuthResponseAsync(User user, Profile? profile) { - var roleName = (await _unitOfWork.Roles.FindAsync(r => r.Id == user.RoleId)).FirstOrDefault()?.Name ?? "User"; + var roleName = (await _unitOfWork.Roles.FindAsync(r => r.Id == user.RoleId)).FirstOrDefault()?.Name ?? "Free"; profile ??= (await _unitOfWork.Profiles.FindAsync(p => p.UserId == user.Id)).FirstOrDefault(); var accessToken = GenerateJwtToken(user, roleName); diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/CatalogService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/CatalogService.cs index d1c105b4..eb9d7e35 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/CatalogService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/CatalogService.cs @@ -116,7 +116,7 @@ private async Task UpsertIngredients(Guid recipeId, List new() { Id=f.Id, NameVi=f.NameVi, NameEn=f.NameEn, Category=f.Category, Description=f.Description, CaloriesKcal=f.CaloriesKcal, ProteinG=f.ProteinG, CarbsG=f.CarbsG, FatG=f.FatG, FiberG=f.FiberG, EstimatedPriceVnd=f.EstimatedPriceVnd, DefaultServingG=f.DefaultServingG, ImageUrl=f.ImageUrl, IsActive=f.IsActive }; private static IngredientResponse Map(Ingredient e) => new() { Id=e.Id, NameVi=e.NameVi, NameEn=e.NameEn, Category=e.Category, CaloriesKcal=e.CaloriesKcal, ProteinG=e.ProteinG, CarbsG=e.CarbsG, FatG=e.FatG, EstimatedPriceVnd=e.EstimatedPriceVnd, UnitDefault=e.UnitDefault, ImageUrl=e.ImageUrl, IsActive=e.IsActive }; - private static RecipeResponse Map(Recipe r) => new() { Id=r.Id, FoodId=r.FoodId, Title=r.Title, Description=r.Description, PrepTimeMin=r.PrepTimeMin, CookTimeMin=r.CookTimeMin, TotalTimeMin=r.TotalTimeMin, Servings=r.Servings, Difficulty=r.Difficulty, MealType=r.MealType, EstimatedPriceVnd=r.EstimatedPriceVnd, Instructions=r.Instructions, ImageUrl=r.ImageUrl, VideoUrl=r.VideoUrl, IsActive=r.IsActive }; + private static RecipeResponse Map(Recipe r) => new() { Id=r.Id, FoodId=r.FoodId, Title=r.Title, Description=r.Description, PrepTimeMin=r.PrepTimeMin, CookTimeMin=r.CookTimeMin, TotalTimeMin=r.TotalTimeMin, Servings=r.Servings, Difficulty=r.Difficulty, MealType=r.MealType, EstimatedPriceVnd=r.EstimatedPriceVnd, Instructions=r.Instructions, ImageUrl=r.ImageUrl, VideoUrl=r.VideoUrl, SourceName=r.SourceName, SourceUrl=r.SourceUrl, IsActive=r.IsActive }; private async Task InvalidateFoodCacheAsync() { diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/CoachService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/CoachService.cs index 6b984ff7..c70b97f7 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/CoachService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/CoachService.cs @@ -2,10 +2,12 @@ using System.Collections.Generic; using System.Linq; using System.Text.Json; +using System.Text.Json.Nodes; using System.Threading.Tasks; using MenuGreen.BusinessLogicLayer.DTOs.Requests; using MenuGreen.BusinessLogicLayer.DTOs.Responses; using MenuGreen.BusinessLogicLayer.Interfaces; +using MenuGreen.BusinessLogicLayer.Helpers; using MenuGreen.DataAccessLayer.Entities; using MenuGreen.DataAccessLayer.Interfaces; @@ -306,7 +308,6 @@ public async Task ApproveConnectionAsync(Guid coachId, Guid clientId, bool connection.UpdatedAt = DateTime.UtcNow; _unitOfWork.CoachConnections.Update(connection); await _unitOfWork.CompleteAsync(); - // Send notification to Client var coachProfile = (await _unitOfWork.Profiles.FindAsync(p => p.UserId == coachId)).FirstOrDefault(); var coachName = coachProfile?.FullName ?? "Your coach"; @@ -551,11 +552,11 @@ public async Task> GetClientNutritio throw new ArgumentException("The start date must be before or equal to the end date."); } - var startUtc = rangeFrom + var startUtc = rangeFrom.AddDays(-1) .ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc) .AddHours(-VietnamUtcOffsetHours); var endUtcExclusive = rangeTo - .AddDays(1) + .AddDays(2) .ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc) .AddHours(-VietnamUtcOffsetHours); var logs = (await _unitOfWork.MealLogs.FindAsync(x => @@ -563,6 +564,9 @@ public async Task> GetClientNutritio x.LoggedAt.HasValue && x.LoggedAt.Value >= startUtc && x.LoggedAt.Value < endUtcExclusive)) + .Where(x => x.LoggedAt.HasValue + && VietnamTime.ToDate(x.LoggedAt.Value) >= rangeFrom + && VietnamTime.ToDate(x.LoggedAt.Value) <= rangeTo) .ToList(); var health = (await _unitOfWork.HealthProfiles.FindAsync(h => h.UserId == clientId)).FirstOrDefault(); var profile = (await _unitOfWork.Profiles.FindAsync(p => p.UserId == clientId)).FirstOrDefault(); @@ -595,8 +599,7 @@ public async Task> GetClientNutritio var grouped = logs .Where(x => x.LoggedAt.HasValue) - .GroupBy(x => DateOnly.FromDateTime( - x.LoggedAt!.Value.AddHours(VietnamUtcOffsetHours))) + .GroupBy(x => VietnamTime.ToDate(x.LoggedAt!.Value)) .Select(g => new ClientNutritionSummaryResponse { ClientId = clientId, @@ -687,7 +690,6 @@ public async Task AddFeedbackAsync(Guid coachId, Guid cli await _unitOfWork.CoachFeedbacks.AddAsync(feedback); await _unitOfWork.CompleteAsync(); - var coachProfile = (await _unitOfWork.Profiles.FindAsync(p => p.UserId == coachId)).FirstOrDefault(); var coachName = coachProfile?.FullName ?? "Your coach"; @@ -788,6 +790,7 @@ await _unitOfWork.MealPlanItems.AddAsync( } await _unitOfWork.CompleteAsync(); + await RefreshClientMealPlanCacheAsync(clientId, plan); // Send notification to Client var coachProfile = (await _unitOfWork.Profiles.FindAsync(p => p.UserId == coachId)).FirstOrDefault(); @@ -1317,10 +1320,13 @@ await _ptReviewService.CreatePersonalProgramAsync( { matchedRequest.SuggestedCalorieTarget = plan.TargetCalories; } + var currentPlan = await MapMealPlanAsync(plan); + RefreshRouteApprovalSnapshot(matchedRequest, currentPlan); _unitOfWork.PtReviewRequests.Update(matchedRequest); } await _unitOfWork.CompleteAsync(); + await RefreshClientMealPlanCacheAsync(clientId, plan); var coachProfile = (await _unitOfWork.Profiles.FindAsync(p => p.UserId == coachId)).FirstOrDefault(); var coachName = coachProfile?.FullName ?? "Coach"; @@ -1342,6 +1348,88 @@ await _notificationService.SendAsync(new NotificationSendRequest return await MapMealPlanAsync(plan); } + private static void RefreshRouteApprovalSnapshot( + PtReviewRequest request, + MealPlanResponse plan) + { + try + { + var root = JsonNode.Parse(request.ReportDataJson) as JsonObject + ?? new JsonObject(); + root["mealPlanId"] = plan.Id.ToString(); + if (plan.TargetCalories.HasValue) + { + root["targetCaloriesDaily"] = plan.TargetCalories.Value; + } + + var dailyMeals = root["dailyMeals"] as JsonArray; + if (dailyMeals == null) + { + dailyMeals = new JsonArray(); + root["dailyMeals"] = dailyMeals; + } + + var fallbackDate = plan.StartDate ?? request.WeekStartDate; + foreach (var group in plan.Items.GroupBy( + item => item.PlannedDate ?? fallbackDate)) + { + var dateKey = group.Key.ToString("yyyy-MM-dd"); + var day = dailyMeals + .OfType() + .FirstOrDefault(node => + string.Equals( + node["date"]?.GetValue(), + dateKey, + StringComparison.OrdinalIgnoreCase)); + if (day == null) + { + day = new JsonObject { ["date"] = dateKey }; + dailyMeals.Add(day); + } + + day["plannedItems"] = JsonSerializer.SerializeToNode( + group.Select(item => new + { + item.Id, + item.MealPlanId, + item.MealType, + item.FoodId, + FoodName = item.FoodName ?? item.CustomName, + item.RecipeId, + item.RecipeName, + item.PlannedDate, + item.ScheduledTime, + item.TargetCalories, + item.QuantityG, + item.ProteinG, + item.CarbsG, + item.FatG, + item.Ingredients, + item.IsCompleted + }), + new JsonSerializerOptions + { + PropertyNamingPolicy = JsonNamingPolicy.CamelCase + }); + } + + request.ReportDataJson = root.ToJsonString( + new JsonSerializerOptions + { + PropertyNamingPolicy = JsonNamingPolicy.CamelCase + }); + } + catch (JsonException) + { + // Keep legacy malformed snapshots readable through the live + // meal-plan endpoint instead of blocking PT approval. + } + catch (InvalidOperationException) + { + // A malformed node value must not make approval fail. + } + } + private static TimeOnly DefaultMealTime(string? mealType) { return (mealType ?? string.Empty).Trim().ToLowerInvariant() switch @@ -1404,9 +1492,15 @@ private async Task BuildCoachMealPlanItemAsync( } entity.QuantityG = calculation.QuantityG; - entity.TargetCalories = (int)Math.Round( - calculation.CaloriesKcal, - MidpointRounding.AwayFromZero); + // Preserve the explicit calorie value confirmed by the PT. The + // catalog calculation remains responsible for quantity/macros, + // but rounding or a different catalog basis must not undo an + // exact full-day balance chosen in the client. + entity.TargetCalories = request.TargetCalories is > 0 + ? request.TargetCalories.Value + : (int)Math.Round( + calculation.CaloriesKcal, + MidpointRounding.AwayFromZero); entity.ProteinG = calculation.ProteinG; entity.CarbsG = calculation.CarbsG; entity.FatG = calculation.FatG; @@ -1416,6 +1510,26 @@ private async Task BuildCoachMealPlanItemAsync( return entity; } + private async Task RefreshClientMealPlanCacheAsync( + Guid clientId, + MealPlanHeader plan) + { + if (!plan.StartDate.HasValue) return; + + var start = plan.StartDate.Value; + var end = plan.EndDate is { } candidate && candidate >= start + ? candidate + : start; + var lastDate = end <= start.AddDays(366) ? end : start.AddDays(366); + for (var date = start; date <= lastDate; date = date.AddDays(1)) + { + await _mealPlanService.GetByDateAsync( + clientId, + date, + forceRefresh: true); + } + } + private static bool IsApprovalOutdated(MealPlanHeader plan) { return string.Equals( diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/DailyStarterService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/DailyStarterService.cs index b5b93314..b07564e5 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/DailyStarterService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/DailyStarterService.cs @@ -211,7 +211,11 @@ public async Task SelectMealPlanAsync(Guid userId, DailyStarterSelectMealRequest throw new InvalidOperationException("Vui lòng chọn ít nhất một món ăn."); } - var requestedFoodIds = request.Meals.Select(x => x.FoodId).Distinct().ToList(); + var requestedFoodIds = request.Meals + .Where(x => x.FoodId.HasValue) + .Select(x => x.FoodId!.Value) + .Distinct() + .ToList(); var activeFoods = await _db .Foods.AsNoTracking() .Where(x => requestedFoodIds.Contains(x.Id) && x.IsActive != false) @@ -242,25 +246,67 @@ public async Task SelectMealPlanAsync(Guid userId, DailyStarterSelectMealRequest var health = await _healthProfileService.GetAsync(userId); var targetCalories = health?.TargetCalories ?? 2000; - var items = request - .Meals.Select(x => new DailyMenuPlanItemRequest + // Daily Starter is an additive quick action. Rebuilding an existing + // DAILY plan here would silently delete meals the user had already + // scheduled for today. + var existingDailyPlan = await _db + .MealPlanHeaders.AsNoTracking() + .Where(plan => + plan.UserId == userId + && plan.IsActive + && plan.Status != "Draft" + && (plan.PlanType == null || plan.PlanType.ToUpper() == "DAILY") + && plan.StartDate == today) + .OrderByDescending(plan => plan.UpdatedAt ?? plan.CreatedAt) + .FirstOrDefaultAsync(); + + if (existingDailyPlan == null) + { + existingDailyPlan = new MealPlanHeader { - MealType = x.MealType, - FoodId = x.FoodId, - RecipeId = null, - ScheduledTime = GetScheduledTime(x.MealType), - TargetCalories = null, - }) - .ToList(); + Id = Guid.NewGuid(), + UserId = userId, + Title = $"Kế hoạch ngày {today:dd/MM/yyyy}", + PlanType = "DAILY", + StartDate = today, + EndDate = today, + TargetCalories = targetCalories, + GeneratedBy = "USER", + Status = "Active", + IsActive = true, + CreatedAt = DateTime.UtcNow, + UpdatedAt = DateTime.UtcNow, + }; + await _unitOfWork.MealPlanHeaders.AddAsync(existingDailyPlan); + await _unitOfWork.CompleteAsync(); + } - var menuRequest = new CreateMealPlanFromDailyMenuRequest + foreach (var meal in request.Meals) { - PlannedDate = today, - TargetCalories = targetCalories, - Items = items, - }; - - await _mealPlanService.CreateFromDailyMenuAsync(userId, menuRequest); + await _mealPlanService.AddItemAsync( + existingDailyPlan.Id, + new MealPlanItemUpsertRequest + { + MealType = meal.MealType, + FoodId = meal.FoodId, + PlannedDate = today, + ScheduledTime = GetScheduledTime(meal.MealType), + TargetCalories = meal.CaloriesKcal.HasValue + ? (int)Math.Round(meal.CaloriesKcal.Value) + : null, + QuantityG = (double?)(meal.QuantityG ?? 100m), + ProteinG = meal.ProteinG, + CarbsG = meal.CarbsG, + FatG = meal.FatG, + CustomName = meal.CustomName?.Trim(), + SourceType = meal.FoodId.HasValue + ? "daily_starter" + : "mood_rescue", + IsCompleted = false, + Origin = "user", + }, + userId); + } } public async Task StartLogFlowAsync(Guid userId) diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/FoodService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/FoodService.cs index e2ed99b3..f57fc468 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/FoodService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/FoodService.cs @@ -113,7 +113,9 @@ public async Task SearchAsync( string? region = null, bool? localOnly = null, string? mealContext = null, - string? sort = null) + string? sort = null, + int? page = null, + int? pageSize = null) { var mode = NormalizeAllergyMode(allergyMode); var foods = (await _unitOfWork.Foods.GetAllAsync()).Where(f => f.IsActive != false); @@ -155,7 +157,29 @@ public async Task SearchAsync( foods = foods.Where(f => string.Equals(f.Region, dbRegion, StringComparison.OrdinalIgnoreCase)); } - var foodList = foods.ToList(); + var shouldSortLocalFriendly = ShouldSortLocalFriendly(sort, region, localOnly, mealContext); + var foodList = shouldSortLocalFriendly + ? foods + .OrderByDescending(f => GetLocalFriendlyScore( + f.NameVi, f.Category, f.Description, region, mealContext)) + .ThenBy(f => f.EstimatedPriceVnd ?? int.MaxValue) + .ThenBy(f => f.NameVi) + .ToList() + : foods.OrderBy(f => f.NameVi).ToList(); + var currentPage = pageSize.HasValue ? Math.Max(page ?? 1, 1) : 1; + var requestedPageSize = pageSize.HasValue + ? Math.Clamp(pageSize.Value, 1, 100) + : 0; + var unpagedTotalCount = foodList.Count; + + if (mode != AllergenCatalog.ModeHide && pageSize.HasValue) + { + foodList = foodList + .Skip((int)Math.Min((long)(currentPage - 1) * requestedPageSize, int.MaxValue)) + .Take(requestedPageSize) + .ToList(); + } + var userKeys = userId.HasValue ? await _allergenMatching.GetUserAllergenKeysAsync(userId.Value) : new HashSet(StringComparer.OrdinalIgnoreCase); @@ -174,16 +198,24 @@ public async Task SearchAsync( items.Add(dto); } - if (ShouldSortLocalFriendly(sort, region, localOnly, mealContext)) + var totalCount = mode == AllergenCatalog.ModeHide + ? items.Count + : unpagedTotalCount; + var currentPageSize = pageSize.HasValue ? requestedPageSize : totalCount; + var pageItems = mode == AllergenCatalog.ModeHide && pageSize.HasValue + ? items + .Skip((int)Math.Min((long)(currentPage - 1) * currentPageSize, int.MaxValue)) + .Take(currentPageSize) + .ToList() + : items; + + return new FoodSearchResponse { - items = items - .OrderByDescending(x => GetLocalFriendlyScore(x.NameVi, x.Category, x.Description, region, mealContext)) - .ThenBy(x => x.EstimatedPriceVnd ?? int.MaxValue) - .ThenBy(x => x.NameVi) - .ToList(); - } - - return new FoodSearchResponse { TotalCount = items.Count, Items = items }; + TotalCount = totalCount, + Items = pageItems, + Page = currentPage, + PageSize = currentPageSize + }; } public async Task> GetRecipesAsync(Guid foodId) @@ -212,6 +244,8 @@ public async Task> GetRecipesAsync(Guid foodId) Instructions = r.Instructions, ImageUrl = r.ImageUrl, VideoUrl = r.VideoUrl, + SourceName = r.SourceName, + SourceUrl = r.SourceUrl, IsActive = r.IsActive, Ingredients = r.RecipeIngredients.Select(ri => new RecipeIngredientResponse { diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/GroceryListBuilderService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/GroceryListBuilderService.cs index 5bfece75..2a44a6af 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/GroceryListBuilderService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/GroceryListBuilderService.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Threading.Tasks; using MenuGreen.BusinessLogicLayer.DTOs.Responses; +using MenuGreen.BusinessLogicLayer.Helpers; using MenuGreen.BusinessLogicLayer.Interfaces; using MenuGreen.DataAccessLayer.Entities; @@ -11,6 +12,13 @@ namespace MenuGreen.BusinessLogicLayer.Services /// public class GroceryListBuilderService : IGroceryListBuilderService { + private readonly IPortionNutritionCalculator _portionCalculator; + + public GroceryListBuilderService(IPortionNutritionCalculator portionCalculator) + { + _portionCalculator = portionCalculator; + } + /// public Task> BuildDaysAsync( Guid mealPlanId, @@ -28,7 +36,6 @@ public Task> BuildDaysAsync( // Group plan items by planned date. Nullable dates (unscheduled items) // get bucketed under a single null key that will sort to the end. var days = planItems - .Where(item => item.RecipeId.HasValue) .GroupBy(item => item.PlannedDate) .OrderBy(group => group.Key.HasValue ? 0 : 1) .ThenBy(group => group.Key) @@ -44,7 +51,7 @@ public Task> BuildDaysAsync( return Task.FromResult(days); } - private static GroceryListDayResponse BuildDay( + private GroceryListDayResponse BuildDay( Guid mealPlanId, DateOnly? plannedDate, IList items, @@ -52,23 +59,50 @@ private static GroceryListDayResponse BuildDay( IDictionary recipesById, IDictionary ingredientCatalogById) { - // Aggregate ingredient quantity across all items in this day. - // Phase 1 keeps the same pricing formula as the legacy Items[] - // view (no servings multiplier) so the per-day total stays - // consistent with the weekly total the budget check relies on. - var aggregated = items - .Where(item => item.RecipeId.HasValue - && ingredientsByRecipe.TryGetValue(item.RecipeId.Value, out var _)) - .SelectMany(item => ingredientsByRecipe[item.RecipeId!.Value]) - .GroupBy(ri => new + // The snapshot belongs to the exact meal-plan item and is therefore + // authoritative after a portion or AI meal was changed. Legacy + // budget plans do not have snapshots, so fall back to the effective + // recipe resolved by MealPlanService (including FoodId-linked recipes). + var lines = new List(); + foreach (var item in items) + { + var snapshot = _portionCalculator.Deserialize(item.IngredientSnapshotJson); + if (snapshot?.Ingredients.Count > 0) { - ri.IngredientId, - Unit = ri.Unit ?? "unit", + lines.AddRange(snapshot.Ingredients.Select(ingredient => + new GroceryIngredientLine( + ingredient.IngredientId, + ingredient.Name, + ingredient.Unit, + ingredient.Quantity))); + continue; + } + + if (item.RecipeId.HasValue && + ingredientsByRecipe.TryGetValue(item.RecipeId.Value, out var recipeRows)) + { + var servings = ServingsFor(item.RecipeId.Value, recipesById); + lines.AddRange(recipeRows.Select(row => + new GroceryIngredientLine( + row.IngredientId, + string.Empty, + row.Unit ?? "unit", + (row.Quantity ?? 0m) / servings))); + } + } + + var aggregated = lines + .GroupBy(line => new + { + line.IngredientId, + Unit = line.Unit, }) .Select(group => BuildItem( group.Key.IngredientId, group.Key.Unit, - group.Sum(ri => ri.Quantity ?? 0m), + group.Sum(line => line.Quantity), + group.Select(line => line.Name) + .FirstOrDefault(name => !string.IsNullOrWhiteSpace(name)), ingredientCatalogById)) .OrderBy(item => item.Name) .ToList(); @@ -94,17 +128,29 @@ private static GroceryListItemResponse BuildItem( Guid ingredientId, string unit, decimal quantity, + string? snapshotName, IDictionary ingredientCatalogById) { ingredientCatalogById.TryGetValue(ingredientId, out var ingredient); return new GroceryListItemResponse { IngredientId = ingredientId, - Name = ingredient?.NameVi ?? "Nguyên liệu", + Name = ingredient?.NameVi ?? snapshotName ?? "Nguyên liệu", Quantity = quantity, Unit = unit, - EstimatedPriceVnd = ingredient?.EstimatedPriceVnd ?? 0, + // EstimatedPriceVnd is stored per kg/litre for mass and volume + // units, and per item for units such as "quả" or "ổ". + EstimatedPriceVnd = NutritionMath.EstimateIngredientCost( + ingredient?.EstimatedPriceVnd ?? 0, + quantity, + unit), }; } + + private sealed record GroceryIngredientLine( + Guid IngredientId, + string Name, + string Unit, + decimal Quantity); } } diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/IngredientService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/IngredientService.cs index 7a9b3e97..a8d21090 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/IngredientService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/IngredientService.cs @@ -56,7 +56,9 @@ public async Task SearchAsync( string? category, bool? isActive, Guid? userId = null, - string? allergyMode = null) + string? allergyMode = null, + int? page = null, + int? pageSize = null) { var ingredients = await _unitOfWork.Ingredients.GetAllAsync(); var query = ingredients.AsEnumerable(); @@ -80,8 +82,23 @@ public async Task SearchAsync( } var mode = NormalizeAllergyMode(allergyMode); + var currentPage = pageSize.HasValue ? Math.Max(page ?? 1, 1) : 1; + var requestedPageSize = pageSize.HasValue + ? Math.Clamp(pageSize.Value, 1, 100) + : 0; + var ingredientList = query.OrderBy(i => i.NameVi).ToList(); + var unpagedTotalCount = ingredientList.Count; + + if (mode != AllergenCatalog.ModeHide && pageSize.HasValue) + { + ingredientList = ingredientList + .Skip((int)Math.Min((long)(currentPage - 1) * requestedPageSize, int.MaxValue)) + .Take(requestedPageSize) + .ToList(); + } + var items = new List(); - foreach (var ingredient in query) + foreach (var ingredient in ingredientList) { var dto = await EnrichIngredientAsync( Map(ingredient), ingredient.NameVi, ingredient.NameEn, userId, allergyMode); @@ -90,7 +107,24 @@ public async Task SearchAsync( items.Add(dto); } - return new IngredientSearchResponse { Items = items, TotalCount = items.Count }; + var totalCount = mode == AllergenCatalog.ModeHide + ? items.Count + : unpagedTotalCount; + var currentPageSize = pageSize.HasValue ? requestedPageSize : totalCount; + var pageItems = mode == AllergenCatalog.ModeHide && pageSize.HasValue + ? items + .Skip((int)Math.Min((long)(currentPage - 1) * currentPageSize, int.MaxValue)) + .Take(currentPageSize) + .ToList() + : items; + + return new IngredientSearchResponse + { + Items = pageItems, + TotalCount = totalCount, + Page = currentPage, + PageSize = currentPageSize + }; } public async Task> GetRecipesAsync(Guid ingredientId) diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/IngredientSubstitutionService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/IngredientSubstitutionService.cs index 0c5cd218..1175e342 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/IngredientSubstitutionService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/IngredientSubstitutionService.cs @@ -369,6 +369,8 @@ private static RecipeResponse MapRecipe(Recipe r) Instructions = r.Instructions, ImageUrl = r.ImageUrl, VideoUrl = r.VideoUrl, + SourceName = r.SourceName, + SourceUrl = r.SourceUrl, IsActive = r.IsActive }; } diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/LuckyWheelService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/LuckyWheelService.cs index 3c36c97d..ebccde54 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/LuckyWheelService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/LuckyWheelService.cs @@ -34,11 +34,14 @@ public LuckyWheelService( _healthProfileService = healthProfileService; } - public async Task> GetWheelFoodsAsync(Guid userId) + public async Task> GetWheelFoodsAsync(Guid userId, int? maxPriceVnd = null) { // 1. Get user preferences & profile info var aiProfile = await _userAiProfileService.GetAsync(userId); - var budget = aiProfile?.BudgetPerMealVnd ?? int.MaxValue; + var budget = maxPriceVnd is > 0 + ? maxPriceVnd.Value + : aiProfile?.BudgetPerMealVnd ?? int.MaxValue; + var enforceBudget = budget < int.MaxValue; var preferredRegion = aiProfile?.VietnamRegion?.Trim().ToLowerInvariant(); // Extract liked keywords from AI preferences JSON if available @@ -87,6 +90,14 @@ public async Task> GetWheelFoodsAsync(Guid userId) continue; } + // A budget is a hard upper limit. Foods without a known price + // cannot be guaranteed to fit and are therefore excluded. + if (enforceBudget && + (!food.EstimatedPriceVnd.HasValue || food.EstimatedPriceVnd.Value > budget)) + { + continue; + } + int score = 0; // Match Budget diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/MealPlanService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/MealPlanService.cs index 2e1f2ace..5bac08b3 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/MealPlanService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/MealPlanService.cs @@ -1,6 +1,8 @@ using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; +using System.Threading; using System.Threading.Tasks; using MenuGreen.BusinessLogicLayer.DTOs.Requests; using MenuGreen.BusinessLogicLayer.DTOs.Responses; @@ -13,6 +15,8 @@ namespace MenuGreen.BusinessLogicLayer.Services { public class MealPlanService : IMealPlanService { + private static readonly ConcurrentDictionary + CompletedItemSyncLocks = new(); private const int VietnamUtcOffsetHours = 7; private readonly IUnitOfWork _unitOfWork; private readonly INutritionTrackingService _nutritionTracking; @@ -229,7 +233,11 @@ await EnsureGymerRouteEditableAsync( CreatedAt = DateTime.UtcNow, Origin = request.Origin, CustomName = request.CustomName, - QuantityG = (decimal?)request.QuantityG + QuantityG = (decimal?)request.QuantityG, + ProteinG = request.ProteinG, + CarbsG = request.CarbsG, + FatG = request.FatG, + SourceType = request.SourceType }; await _unitOfWork.MealPlanItems.AddAsync(item); @@ -267,6 +275,10 @@ await EnsureGymerRouteEditableAsync( item.Origin = request.Origin; item.CustomName = request.CustomName; if (request.QuantityG.HasValue) item.QuantityG = (decimal?)request.QuantityG; + item.ProteinG = request.ProteinG ?? item.ProteinG; + item.CarbsG = request.CarbsG ?? item.CarbsG; + item.FatG = request.FatG ?? item.FatG; + item.SourceType = request.SourceType ?? item.SourceType; _unitOfWork.MealPlanItems.Update(item); await _unitOfWork.CompleteAsync(); if (userId.HasValue && userId.Value != Guid.Empty) @@ -377,7 +389,10 @@ public async Task BalanceDailyCaloriesAsync( _unitOfWork.MealPlanItems.Update(largest); } - plan.TargetCalories = request.TargetCalories; + if (!request.PreservePlanTarget) + { + plan.TargetCalories = request.TargetCalories; + } plan.UpdatedAt = DateTime.UtcNow; _unitOfWork.MealPlanHeaders.Update(plan); await _unitOfWork.CompleteAsync(); @@ -559,6 +574,14 @@ await _unitOfWork.MealPlanItems.AddAsync(new MealPlanItem public async Task GetDashboardAsync(DateOnly date, Guid? userId = null) { + if (userId.HasValue && userId.Value != Guid.Empty) + { + await SyncCompletedItemsToMealLogsAsync( + userId.Value, + date, + date); + } + // Planned dates are Vietnam calendar dates, while meal logs are stored in UTC. var startDateTime = date .ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc) @@ -599,6 +622,15 @@ public async Task GetDashboardAsync(DateOnly date, Gu logList = logs.ToList(); } + // Older meal-log projections were copied into the daily plan but + // the source log was not linked back to the generated item. Repair + // those pairs first so a consumed meal is never counted twice and + // its macros remain visible on the plan row. + if (userId.HasValue) + { + await RepairMealLogProjectionLinksAsync(itemList, logList); + } + var actualItemIds = logList .Where(x => x.MealPlanItemId.HasValue) .Select(x => x.MealPlanItemId!.Value) @@ -618,17 +650,49 @@ public async Task GetDashboardAsync(DateOnly date, Gu mappedItems.Add(await MapItemAsync(item)); } + // A few seeded/legacy plans have IsCompleted=true but no MealLog. + // The dashboard previously showed them as "đã ăn" while omitting + // all their nutrition from the actual totals. Count the stored + // planned serving as actual for those completed legacy items. + // SourceType=meal_log is excluded because it is itself a projection + // of an existing log (linked above whenever legacy data permits). + var completedWithoutLogIds = itemList + .Where(item => + item.IsCompleted && + !actualItemIds.Contains(item.Id) && + !string.Equals( + item.SourceType, + "meal_log", + StringComparison.OrdinalIgnoreCase)) + .Select(item => item.Id) + .ToHashSet(); + var completedWithoutLogs = mappedItems + .Where(item => completedWithoutLogIds.Contains(item.Id)) + .ToList(); + + // Round each log with the same rule used by its visible meal row, + // then add the displayed values. This avoids totals such as two + // 5.5 g entries being shown as 6 g + 6 g while the card says 11 g. + var actualCalories = logList.Sum(log => (int)Math.Round(log.CaloriesKcal ?? 0m)) + + completedWithoutLogs.Sum(item => item.TargetCalories ?? 0); + var actualProtein = logList.Sum(log => (int)Math.Round(log.ProteinG ?? 0m)) + + completedWithoutLogs.Sum(item => (int)Math.Round(item.ProteinG ?? 0m)); + var actualCarbs = logList.Sum(log => (int)Math.Round(log.CarbsG ?? 0m)) + + completedWithoutLogs.Sum(item => (int)Math.Round(item.CarbsG ?? 0m)); + var actualFat = logList.Sum(log => (int)Math.Round(log.FatG ?? 0m)) + + completedWithoutLogs.Sum(item => (int)Math.Round(item.FatG ?? 0m)); + return new MealPlanDashboardResponse { Date = date, TotalPlannedCalories = mappedItems.Sum(x => x.TargetCalories ?? 0), - TotalActualCalories = (int)logList.Sum(x => x.CaloriesKcal ?? 0), + TotalActualCalories = actualCalories, PlannedProtein = (int)mappedItems.Sum(x => x.ProteinG ?? 0), - ActualProtein = (int)Math.Round(logList.Sum(x => x.ProteinG ?? 0)), + ActualProtein = actualProtein, PlannedCarbs = (int)mappedItems.Sum(x => x.CarbsG ?? 0), - ActualCarbs = (int)Math.Round(logList.Sum(x => x.CarbsG ?? 0)), + ActualCarbs = actualCarbs, PlannedFat = (int)mappedItems.Sum(x => x.FatG ?? 0), - ActualFat = (int)Math.Round(logList.Sum(x => x.FatG ?? 0)), + ActualFat = actualFat, PlannedItemsCount = itemList.Count, CompletedItemsCount = itemList.Count(x => x.IsCompleted), SkippedItemsCount = itemList.Count(x => !x.IsCompleted && x.PlannedDate.HasValue && x.PlannedDate.Value <= date), @@ -1182,9 +1246,15 @@ private async Task MapItemWithCacheAsync( var macros = await GetItemMacrosAsync(x); - var displayCalories = (food?.CaloriesKcal.HasValue == true && food.CaloriesKcal.Value > 0) - ? (int)Math.Round(food.CaloriesKcal.Value) - : (x.TargetCalories.HasValue && x.TargetCalories.Value > 0 ? x.TargetCalories.Value : (int)Math.Round(macros.calories)); + // TargetCalories represents the portion currently stored in the + // meal plan. The catalog value is only a fallback: using it first + // makes a balanced item's response jump back to its original + // serving calories even though its quantity was saved correctly. + var displayCalories = (x.TargetCalories.HasValue && x.TargetCalories.Value > 0) + ? x.TargetCalories.Value + : (food?.CaloriesKcal.HasValue == true && food.CaloriesKcal.Value > 0 + ? (int)Math.Round(food.CaloriesKcal.Value) + : (int)Math.Round(macros.calories)); if (displayCalories == 0 && catalogFood != null) { @@ -1223,6 +1293,16 @@ private async Task MapItemWithCacheAsync( Dictionary foodDict, Dictionary recipeMacrosDict) { + if (!item.FoodId.HasValue && !item.RecipeId.HasValue) + { + return ( + item.ProteinG ?? 0, + item.CarbsG ?? 0, + item.FatG ?? 0, + item.TargetCalories ?? 0 + ); + } + if (item.FoodId.HasValue && foodDict.TryGetValue(item.FoodId.Value, out var food)) { return ( @@ -1458,6 +1538,40 @@ public async Task GenerateByBudgetAsync(Guid userId) allRecipes = allRecipes.Where(r => !r.FoodId.HasValue || !forbiddenFoodIds.Contains(r.FoodId.Value)).ToList(); } + // Ingredient prices are stored per kg/litre (or per discrete unit). + // Use the grocery cost of one serving while selecting meals so the + // generated plan and its shopping list enforce the same budget. + var budgetRecipeIds = allRecipes.Select(recipe => recipe.Id).ToList(); + var budgetIngredientRows = budgetRecipeIds.Count == 0 + ? new List() + : (await _unitOfWork.RecipeIngredients.FindAsync(row => + budgetRecipeIds.Contains(row.RecipeId))).ToList(); + var budgetIngredientIds = budgetIngredientRows + .Select(row => row.IngredientId) + .Distinct() + .ToList(); + var budgetIngredientsById = budgetIngredientIds.Count == 0 + ? new Dictionary() + : (await _unitOfWork.Ingredients.FindAsync(ingredient => + budgetIngredientIds.Contains(ingredient.Id))) + .ToDictionary(ingredient => ingredient.Id); + var budgetIngredientsByRecipe = budgetIngredientRows + .GroupBy(row => row.RecipeId) + .ToDictionary(group => group.Key, group => group.ToList()); + + int GroceryServingPrice(Recipe recipe) => RecipeGroceryServingPrice( + recipe, + budgetIngredientsByRecipe, + budgetIngredientsById); + + Recipe? LinkedRecipeFor(Guid foodId, string mealType) => allRecipes + .Where(recipe => recipe.FoodId == foodId) + .OrderByDescending(recipe => budgetIngredientsByRecipe.ContainsKey(recipe.Id)) + .ThenByDescending(recipe => + recipe.MealType?.Contains(mealType, StringComparison.OrdinalIgnoreCase) == true) + .ThenBy(recipe => recipe.Title) + .FirstOrDefault(); + // The budget is applied while selecting meals, not merely displayed after generation. // A recipe is selected once per week whenever the catalog has enough candidates. var usedRecipeIds = new HashSet(); @@ -1491,7 +1605,7 @@ public async Task GenerateByBudgetAsync(Guid userId) var recipeCandidates = allRecipes .Where(r => r.MealType != null && r.MealType.Contains(slot.Type, StringComparison.OrdinalIgnoreCase)) .Where(r => (r.TotalTimeMin ?? r.CookTimeMin ?? 30) <= maxCookingMinutes) - .Where(r => RecipeServingPrice(r) <= allowedBudget) + .Where(r => GroceryServingPrice(r) <= allowedBudget) .ToList(); var unusedRecipeCandidates = recipeCandidates .Where(r => !usedRecipeIds.Contains(r.Id)) @@ -1506,7 +1620,7 @@ public async Task GenerateByBudgetAsync(Guid userId) if (newRecipePool.Any()) recipePool = newRecipePool; var orderedRecipePool = recipePool .OrderBy(r => recipeUseCounts.GetValueOrDefault(r.Id)) - .ThenBy(r => Math.Abs(RecipeServingPrice(r) - targetBudgetForMeal)) + .ThenBy(r => Math.Abs(GroceryServingPrice(r) - targetBudgetForMeal)) .ThenBy(r => Math.Abs((r.TotalTimeMin ?? r.CookTimeMin ?? 30) - maxCookingMinutes)) .ThenBy(r => r.Title) .ToList(); @@ -1521,7 +1635,7 @@ public async Task GenerateByBudgetAsync(Guid userId) if (selectedRecipe != null) { - selectedPrice = RecipeServingPrice(selectedRecipe); + selectedPrice = GroceryServingPrice(selectedRecipe); selectedCalories = await GetRecipeCaloriesAsync(selectedRecipe.Id); usedRecipeIds.Add(selectedRecipe.Id); recipeUseCounts[selectedRecipe.Id] = recipeUseCounts.GetValueOrDefault(selectedRecipe.Id) + 1; @@ -1530,26 +1644,49 @@ public async Task GenerateByBudgetAsync(Guid userId) { var foodCandidates = allFoods .Where(f => f.CaloriesKcal.HasValue) - .Where(f => (f.EstimatedPriceVnd ?? 0) <= allowedBudget) + .Select(food => new + { + Food = food, + LinkedRecipe = LinkedRecipeFor(food.Id, slot.Type) + }) + .Select(candidate => new + { + candidate.Food, + candidate.LinkedRecipe, + Price = candidate.LinkedRecipe == null + ? candidate.Food.EstimatedPriceVnd ?? 0 + : GroceryServingPrice(candidate.LinkedRecipe) + }) + .Where(candidate => candidate.Price <= allowedBudget) + .ToList(); + var unusedFoodCandidates = foodCandidates + .Where(candidate => !usedFoodIds.Contains(candidate.Food.Id)) .ToList(); - var unusedFoodCandidates = foodCandidates.Where(f => !usedFoodIds.Contains(f.Id)).ToList(); var foodPool = unusedFoodCandidates.Any() ? unusedFoodCandidates : foodCandidates; - var newFoodPool = foodPool.Where(f => !previousFoodIds.Contains(f.Id)).ToList(); + var newFoodPool = foodPool + .Where(candidate => !previousFoodIds.Contains(candidate.Food.Id)) + .ToList(); if (newFoodPool.Any()) foodPool = newFoodPool; var orderedFoodPool = foodPool - .OrderBy(f => foodUseCounts.GetValueOrDefault(f.Id)) - .ThenBy(f => Math.Abs((f.EstimatedPriceVnd ?? 0) - targetBudgetForMeal)) - .ThenBy(f => Math.Abs((int)(f.CaloriesKcal ?? 0) - targetCaloriesForMeal)) - .ThenBy(f => f.NameVi) + .OrderBy(candidate => foodUseCounts.GetValueOrDefault(candidate.Food.Id)) + .ThenBy(candidate => Math.Abs(candidate.Price - targetBudgetForMeal)) + .ThenBy(candidate => Math.Abs((int)(candidate.Food.CaloriesKcal ?? 0) - targetCaloriesForMeal)) + .ThenBy(candidate => candidate.Food.NameVi) .ToList(); - var selectedFood = orderedFoodPool.Count == 0 + var selectedFoodCandidate = orderedFoodPool.Count == 0 ? null : orderedFoodPool[(rebuildSequence + d) % orderedFoodPool.Count]; - if (selectedFood != null) + if (selectedFoodCandidate != null) { + var selectedFood = selectedFoodCandidate.Food; foodId = selectedFood.Id; - selectedPrice = selectedFood.EstimatedPriceVnd ?? 0; + // Keep the linked recipe when available. The Food + // remains the budget source, while RecipeId makes + // its ingredient list and preparation detail part + // of the same generated plan item. + recipeId = selectedFoodCandidate.LinkedRecipe?.Id; + selectedPrice = selectedFoodCandidate.Price; selectedCalories = (int)(selectedFood.CaloriesKcal ?? 0); usedFoodIds.Add(selectedFood.Id); foodUseCounts[selectedFood.Id] = foodUseCounts.GetValueOrDefault(selectedFood.Id) + 1; @@ -1622,50 +1759,73 @@ public async Task GetGroceryListAsync(Guid planId, Guid use ?? throw new Exception("Meal plan not found."); if (plan.UserId != userId) throw new Exception("Forbidden."); - var planItems = (await _unitOfWork.MealPlanItems.FindAsync(x => x.MealPlanId == planId)).ToList(); - var recipeIds = planItems - .Where(x => x.RecipeId.HasValue).Select(x => x.RecipeId!.Value).Distinct().ToList(); - var ingredients = await _unitOfWork.RecipeIngredients.FindAsync(x => recipeIds.Contains(x.RecipeId)); - var ingredientsList = ingredients.ToList(); - // Batch load all recipes for servings (fix N+1 query) - var recipesById = new Dictionary(); - if (recipeIds.Any()) - { - var recipes = await _unitOfWork.Recipes.FindAsync(r => recipeIds.Contains(r.Id)); - foreach (var recipe in recipes) - { - if (recipe != null) recipesById[recipe.Id] = recipe; - } - } + var planItems = (await _unitOfWork.MealPlanItems.FindAsync( + x => x.MealPlanId == planId)).ToList(); + var directRecipeIds = planItems + .Where(x => x.RecipeId.HasValue) + .Select(x => x.RecipeId!.Value) + .ToHashSet(); + var foodIds = planItems + .Where(x => x.FoodId.HasValue) + .Select(x => x.FoodId!.Value) + .ToHashSet(); + + // Budget generation may select a Food when no recipe matches a + // meal slot. Resolve its linked recipe so the grocery list still + // uses the real ingredient rows instead of silently dropping it. + var linkedRecipes = foodIds.Count == 0 + ? new List() + : (await _unitOfWork.Recipes.FindAsync(recipe => + recipe.FoodId.HasValue && + foodIds.Contains(recipe.FoodId.Value) && + (recipe.IsActive == true || recipe.IsActive == null))).ToList(); + var recipeIds = directRecipeIds + .Concat(linkedRecipes.Select(recipe => recipe.Id)) + .Distinct() + .ToList(); + var ingredientsList = (await _unitOfWork.RecipeIngredients.FindAsync( + row => recipeIds.Contains(row.RecipeId))).ToList(); + var recipesById = recipeIds.Count == 0 + ? new Dictionary() + : (await _unitOfWork.Recipes.FindAsync(recipe => + recipeIds.Contains(recipe.Id))).ToDictionary(recipe => recipe.Id); + var effectivePlanItems = ResolveGroceryPlanItems( + planItems, + linkedRecipes, + ingredientsList); var catalog = await _unitOfWork.Ingredients.GetAllAsync(); var catalogById = catalog.ToDictionary(x => x.Id); - var items = ingredientsList.GroupBy(x => new { x.IngredientId, Unit = x.Unit ?? "unit" }) - .Select(group => - { - catalogById.TryGetValue(group.Key.IngredientId, out var ingredient); - return new GroceryListItemResponse - { - IngredientId = group.Key.IngredientId, - Name = ingredient?.NameVi ?? "Nguyên liệu", - Quantity = group.Sum(x => x.Quantity ?? 0), Unit = group.Key.Unit, - EstimatedPriceVnd = ingredient?.EstimatedPriceVnd ?? 0 - }; - }).OrderBy(x => x.Name).ToList(); - // Phase 1: group ingredients by PlannedDate so the UI can show a - // separate shopping card per day instead of one flat weekly list. var days = await _groceryListBuilder.BuildDaysAsync( planId, - planItems, + effectivePlanItems, ingredientsList, recipesById, catalogById); + var items = days + .SelectMany(day => day.Items) + .GroupBy(item => new { item.IngredientId, item.Unit }) + .Select(group => + { + var first = group.First(); + return new GroceryListItemResponse + { + IngredientId = first.IngredientId, + Name = first.Name, + Quantity = group.Sum(item => item.Quantity), + Unit = first.Unit, + EstimatedPriceVnd = group.Sum(item => item.EstimatedPriceVnd), + IsWeeklyStock = group.Any(item => item.IsWeeklyStock) + }; + }) + .OrderBy(item => item.Name) + .ToList(); // Phase 2: roll the per-day view into chợ visits. Stock items // (rice/spices/...) go to an InitialTrip dated the day before the // plan starts; other items follow PlannedDate - 1. var shoppingTrips = await _shoppingTripBuilder.BuildShoppingTripsAsync( - planItems, + effectivePlanItems, days, catalogById); @@ -1675,36 +1835,68 @@ public async Task GetGroceryListAsync(Guid planId, Guid use Items = items, Days = days, ShoppingTrips = shoppingTrips, - EstimatedTotalVnd = items.Sum(x => x.EstimatedPriceVnd), + EstimatedTotalVnd = days.Sum(day => day.EstimatedTotalVnd), }; } - public async Task GetBudgetStatusAsync(Guid planId, Guid userId) + private static List ResolveGroceryPlanItems( + IEnumerable planItems, + IEnumerable linkedRecipes, + IEnumerable recipeIngredients) { - var plan = await GetMealPlanAsync(planId, userId); - var planItems = await _unitOfWork.MealPlanItems.FindAsync(x => x.MealPlanId == planId); - - // Batch load all foods and recipes to fix N+1 queries - var foodIds = planItems.Where(x => x.FoodId.HasValue).Select(x => x.FoodId!.Value).ToList(); - var recipeIds = planItems.Where(x => x.RecipeId.HasValue).Select(x => x.RecipeId!.Value).ToList(); - - var foods = (await _unitOfWork.Foods.FindAsync(f => foodIds.Contains(f.Id))) - .ToDictionary(f => f.Id); - var recipes = (await _unitOfWork.Recipes.FindAsync(r => recipeIds.Contains(r.Id))) - .ToDictionary(r => r.Id); + var recipeIdsWithIngredients = recipeIngredients + .Select(row => row.RecipeId) + .ToHashSet(); + var linkedByFood = linkedRecipes + .Where(recipe => recipe.FoodId.HasValue) + .GroupBy(recipe => recipe.FoodId!.Value) + .ToDictionary(group => group.Key, group => group.ToList()); - var totalPlannedCost = 0; - foreach (var item in planItems) + return planItems.Select(item => { - if (item.FoodId.HasValue && foods.TryGetValue(item.FoodId.Value, out var food)) + if (item.RecipeId.HasValue && + recipeIdsWithIngredients.Contains(item.RecipeId.Value)) { - totalPlannedCost += food?.EstimatedPriceVnd ?? 0; + return item; } - else if (item.RecipeId.HasValue && recipes.TryGetValue(item.RecipeId.Value, out var recipe)) + + if (!item.FoodId.HasValue || + !linkedByFood.TryGetValue(item.FoodId.Value, out var candidates)) { - totalPlannedCost += recipe == null ? 0 : RecipeServingPrice(recipe); + return item; } - } + + var effectiveRecipe = candidates + .OrderByDescending(recipe => + recipeIdsWithIngredients.Contains(recipe.Id)) + .ThenByDescending(recipe => + !string.IsNullOrWhiteSpace(item.MealType) && + recipe.MealType?.Contains( + item.MealType, + StringComparison.OrdinalIgnoreCase) == true) + .ThenBy(recipe => recipe.Title) + .FirstOrDefault(); + if (effectiveRecipe == null) return item; + + return new MealPlanItem + { + Id = item.Id, + MealPlanId = item.MealPlanId, + FoodId = item.FoodId, + RecipeId = effectiveRecipe.Id, + MealType = item.MealType, + PlannedDate = item.PlannedDate, + QuantityG = item.QuantityG, + IngredientSnapshotJson = item.IngredientSnapshotJson + }; + }).ToList(); + } + + public async Task GetBudgetStatusAsync(Guid planId, Guid userId) + { + _ = await GetMealPlanAsync(planId, userId); + var groceryList = await GetGroceryListAsync(planId, userId); + var totalPlannedCost = groceryList.EstimatedTotalVnd; var budgets = await _unitOfWork.BudgetRequests.FindAsync(x => x.UserId == userId); var latestBudget = budgets.OrderByDescending(b => b.CreatedAt).FirstOrDefault(); @@ -2038,13 +2230,23 @@ public async Task GetAdherenceScoresAsync(Guid userId) // ==================== Daily Meal Plan Implementations ==================== - public async Task GetByDateAsync(Guid userId, DateOnly date) + public async Task GetByDateAsync( + Guid userId, + DateOnly date, + bool forceRefresh = false) { var cacheKey = CacheKeys.MealPlanByDate(userId, date); - var cached = await _cache.GetAsync(cacheKey); - if (cached != null) + if (forceRefresh) { - return cached; + await _cache.RemoveAsync(cacheKey); + } + else + { + var cached = await _cache.GetAsync(cacheKey); + if (cached != null) + { + return cached; + } } var plan = await FindDailyPlanAsync(userId, date); @@ -2255,9 +2457,11 @@ await InvalidateMealPlanDateCacheAsync( }; } - if (!item.FoodId.HasValue && !item.RecipeId.HasValue) + if (!item.FoodId.HasValue && + !item.RecipeId.HasValue && + string.IsNullOrWhiteSpace(item.CustomName)) { - throw new Exception("Meal plan item must have FoodId or RecipeId."); + throw new Exception("Meal plan item must have FoodId, RecipeId, or CustomName."); } var quantity = request.QuantityG @@ -2438,6 +2642,35 @@ private static int RecipeServingPrice(Recipe recipe) return 0; } + private static int RecipeGroceryServingPrice( + Recipe recipe, + IReadOnlyDictionary> ingredientsByRecipe, + IReadOnlyDictionary ingredientsById) + { + if (!ingredientsByRecipe.TryGetValue(recipe.Id, out var rows) || rows.Count == 0) + { + return RecipeServingPrice(recipe); + } + + var servings = Math.Max(1, recipe.Servings ?? 1); + var total = rows.Sum(row => + { + if (!ingredientsById.TryGetValue(row.IngredientId, out var ingredient)) + { + return 0; + } + + return NutritionMath.EstimateIngredientCost( + ingredient.EstimatedPriceVnd ?? 0, + (row.Quantity ?? 0m) / servings, + row.Unit ?? ingredient.UnitDefault); + }); + + // Legacy recipes may not have priced ingredients yet. Their own + // estimated serving price remains the safest available fallback. + return total > 0 ? total : RecipeServingPrice(recipe); + } + private static string NormalizeMealType(string mealType) { var normalized = (mealType ?? string.Empty).Trim().ToLowerInvariant(); @@ -2537,9 +2770,11 @@ public async Task ToggleItemAsync(Guid userId, Gui if (existingLog == null) { - if (!item.FoodId.HasValue && !item.RecipeId.HasValue) + if (!item.FoodId.HasValue && + !item.RecipeId.HasValue && + string.IsNullOrWhiteSpace(item.CustomName)) { - throw new Exception("Meal plan item must have FoodId or RecipeId."); + throw new Exception("Meal plan item must have FoodId, RecipeId, or CustomName."); } var mealLogRequest = await BuildCompletionMealLogRequestAsync( @@ -2630,14 +2865,16 @@ private async Task MapItemAsync(MealPlanItem item, Guid? m QuantityG = item.QuantityG ?? catalogFood?.DefaultServingG ?? 100m, IsCompleted = item.IsCompleted, MealLogId = mealLogId, - FoodName = food?.NameVi, + CustomName = item.CustomName, + FoodName = food?.NameVi ?? recipe?.Title ?? item.CustomName, RecipeName = recipe?.Title, - SourceEntityType = item.FoodId.HasValue ? "Food" : item.RecipeId.HasValue ? "Recipe" : null, + SourceEntityType = item.SourceType + ?? (item.FoodId.HasValue ? "Food" : item.RecipeId.HasValue ? "Recipe" : null), Status = item.IsCompleted ? "done" : "planned", EstimatedPriceVnd = price, - ProteinG = (int)Math.Round(macros.protein), - CarbsG = (int)Math.Round(macros.carbs), - FatG = (int)Math.Round(macros.fat), + ProteinG = (int)Math.Round(item.ProteinG ?? macros.protein), + CarbsG = (int)Math.Round(item.CarbsG ?? macros.carbs), + FatG = (int)Math.Round(item.FatG ?? macros.fat), Ingredients = _portionCalculator.Deserialize(item.IngredientSnapshotJson)?.Ingredients ?? new List(), Origin = item.Origin @@ -2680,12 +2917,163 @@ private async Task BuildCompletionMealLogRequestAsync( : _portionCalculator.Serialize(actualSnapshot), ConsumptionRatio = consumptionRatio, CustomName = item.CustomName, + SourceType = item.SourceType, Notes = notes ?? "Logged from meal plan.", LoggedAt = loggedAt ?? ResolveMealLogUtc(item), MealPlanItemId = item.Id }; } + public async Task SyncCompletedItemsToMealLogsAsync( + Guid userId, + DateOnly? startDate = null, + DateOnly? endDate = null) + { + var gate = CompletedItemSyncLocks.GetOrAdd( + userId, + _ => new SemaphoreSlim(1, 1)); + await gate.WaitAsync(); + try + { + var headers = await _unitOfWork.MealPlanHeaders.FindAsync( + header => header.UserId == userId); + var headerIds = headers.Select(header => header.Id).ToHashSet(); + if (headerIds.Count == 0) + { + return 0; + } + + var completedItems = await _unitOfWork.MealPlanItems.FindAsync( + item => + item.IsCompleted && + headerIds.Contains(item.MealPlanId)); + var items = completedItems + .Where(item => + item.PlannedDate.HasValue && + (!startDate.HasValue || item.PlannedDate.Value >= startDate.Value) && + (!endDate.HasValue || item.PlannedDate.Value <= endDate.Value)) + .ToList(); + if (items.Count == 0) + { + return 0; + } + + var firstDate = items.Min(item => item.PlannedDate!.Value); + var lastDate = items.Max(item => item.PlannedDate!.Value); + var logRangeStart = firstDate + .ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc) + .AddHours(-VietnamUtcOffsetHours); + var logRangeEnd = lastDate + .AddDays(1) + .ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc) + .AddHours(-VietnamUtcOffsetHours) + .AddTicks(-1); + var logs = (await _unitOfWork.MealLogs.FindAsync(log => + log.UserId == userId && + log.LoggedAt.HasValue && + log.LoggedAt.Value >= logRangeStart && + log.LoggedAt.Value <= logRangeEnd)) + .ToList(); + + await RepairMealLogProjectionLinksAsync(items, logs); + var linkedBefore = logs.Count(log => log.MealPlanItemId.HasValue); + await BackfillCompletedItemsToMealLogsAsync(userId, items, logs); + var linkedAfter = logs.Count(log => log.MealPlanItemId.HasValue); + return Math.Max(0, linkedAfter - linkedBefore); + } + finally + { + gate.Release(); + } + } + + /// + /// Repairs legacy plan items that were marked completed without creating + /// the corresponding nutrition-history row. Newly created logs are added + /// to so the current dashboard response is also + /// consistent without requiring a second reload. + /// + private async Task BackfillCompletedItemsToMealLogsAsync( + Guid userId, + IEnumerable items, + IList logs) + { + var linkedItemIds = logs + .Where(log => log.MealPlanItemId.HasValue) + .Select(log => log.MealPlanItemId!.Value) + .ToHashSet(); + + var candidates = items + .Where(item => + item.IsCompleted && + !linkedItemIds.Contains(item.Id) && + !string.Equals( + item.SourceType, + "meal_log", + StringComparison.OrdinalIgnoreCase) && + (item.FoodId.HasValue || + item.RecipeId.HasValue || + !string.IsNullOrWhiteSpace(item.CustomName))) + .OrderBy(item => item.PlannedDate) + .ThenBy(item => item.ScheduledTime) + .ThenBy(item => item.CreatedAt) + .ToList(); + + foreach (var item in candidates) + { + // Re-check before inserting so repeated dashboard requests stay + // idempotent even if another request repaired this item first. + var existing = (await _unitOfWork.MealLogs.FindAsync(log => + log.UserId == userId && + log.MealPlanItemId == item.Id)) + .OrderByDescending(log => log.LoggedAt) + .FirstOrDefault(); + if (existing != null) + { + if (!logs.Any(log => log.Id == existing.Id)) + { + logs.Add(existing); + } + linkedItemIds.Add(item.Id); + continue; + } + + try + { + var request = await BuildCompletionMealLogRequestAsync( + item, + await ResolveCompletionQuantityAsync(item)); + var created = await _nutritionTracking.CreateMealLogAsync( + userId, + request); + var createdEntity = await _unitOfWork.MealLogs.GetByIdAsync( + created.Id); + if (createdEntity != null) + { + logs.Add(createdEntity); + linkedItemIds.Add(item.Id); + } + } + catch + { + // A concurrent dashboard request may have inserted the + // unique MealPlanItemId first. Re-read it so this response + // still contains the repaired history entry. + var repaired = (await _unitOfWork.MealLogs.FindAsync(log => + log.UserId == userId && + log.MealPlanItemId == item.Id)) + .OrderByDescending(log => log.LoggedAt) + .FirstOrDefault(); + if (repaired != null && + !logs.Any(log => log.Id == repaired.Id)) + { + logs.Add(repaired); + linkedItemIds.Add(item.Id); + } + } + } + } + public async Task SaveOfficeScanMealAsync(Guid planId, OfficeScanMealRequest request, Guid userId) { var plan = await _unitOfWork.MealPlanHeaders.GetByIdAsync(planId); @@ -2807,18 +3195,99 @@ public async Task LinkMealLogToDailyPlanAsync(Guid userId, Guid mealLogId) MealPlanId = dailyPlan.Id, MealType = mealLog.MealType, PlannedDate = today, + ScheduledTime = DefaultScheduledTime(mealLog.MealType), IsCompleted = true, - TargetCalories = (int)(mealLog.CaloriesKcal ?? 0), - CustomName = mealLog.CustomName, + FoodId = mealLog.FoodId, + RecipeId = mealLog.RecipeId, + QuantityG = mealLog.QuantityG, + TargetCalories = (int)Math.Round(mealLog.CaloriesKcal ?? 0m), + ProteinG = mealLog.ProteinG, + CarbsG = mealLog.CarbsG, + FatG = mealLog.FatG, + IngredientSnapshotJson = mealLog.IngredientSnapshotJson, + CustomName = mealLog.CustomName ?? mealLog.Notes, Origin = "user", - SourceType = "meal_log" + SourceType = "meal_log", + CreatedAt = DateTime.UtcNow }; await _unitOfWork.MealPlanItems.AddAsync(item); + mealLog.MealPlanItemId = item.Id; + mealLog.IsFromMealPlan = true; + _unitOfWork.MealLogs.Update(mealLog); await _unitOfWork.CompleteAsync(); await InvalidateMealPlanDateCacheAsync(userId, today); } + private async Task RepairMealLogProjectionLinksAsync( + IList items, + IList logs) + { + var linkedItemIds = logs + .Where(log => log.MealPlanItemId.HasValue) + .Select(log => log.MealPlanItemId!.Value) + .ToHashSet(); + var changed = false; + + foreach (var log in logs + .Where(log => !log.MealPlanItemId.HasValue) + .OrderBy(log => log.LoggedAt) + .ThenBy(log => log.Id)) + { + var logName = (log.CustomName ?? log.Notes ?? string.Empty).Trim(); + var logCalories = log.CaloriesKcal ?? 0m; + + var item = items + .Where(candidate => + candidate.IsCompleted && + !linkedItemIds.Contains(candidate.Id) && + string.Equals( + candidate.SourceType, + "meal_log", + StringComparison.OrdinalIgnoreCase) && + NormalizeMealType(candidate.MealType ?? "snack") == + NormalizeMealType(log.MealType ?? "snack") && + string.Equals( + (candidate.CustomName ?? string.Empty).Trim(), + logName, + StringComparison.OrdinalIgnoreCase) && + Math.Abs((candidate.TargetCalories ?? 0) - logCalories) <= 1m) + .OrderBy(candidate => candidate.CreatedAt) + .ThenBy(candidate => candidate.Id) + .FirstOrDefault(); + + if (item == null) + { + continue; + } + + item.FoodId = log.FoodId; + item.RecipeId = log.RecipeId; + item.QuantityG = log.QuantityG; + item.TargetCalories = (int)Math.Round(logCalories); + item.ProteinG = log.ProteinG; + item.CarbsG = log.CarbsG; + item.FatG = log.FatG; + item.IngredientSnapshotJson = log.IngredientSnapshotJson; + item.ScheduledTime ??= DefaultScheduledTime(log.MealType); + item.CustomName = string.IsNullOrWhiteSpace(item.CustomName) + ? logName + : item.CustomName; + + log.MealPlanItemId = item.Id; + log.IsFromMealPlan = true; + linkedItemIds.Add(item.Id); + _unitOfWork.MealPlanItems.Update(item); + _unitOfWork.MealLogs.Update(log); + changed = true; + } + + if (changed) + { + await _unitOfWork.CompleteAsync(); + } + } + private async Task GetOrCreateTodayDailyPlanAsync(Guid userId) { var today = DateOnly.FromDateTime(DateTime.UtcNow.AddHours(VietnamUtcOffsetHours)); diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/MealTemplateService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/MealTemplateService.cs index 9a1d73fa..701be70d 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/MealTemplateService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/MealTemplateService.cs @@ -55,7 +55,7 @@ public async Task CreateAsync(Guid userId, MealTemplateUps await _unitOfWork.MealTemplates.AddAsync(entity); await _unitOfWork.CompleteAsync(); - await ReplaceItemsAsync(entity.Id, request.Items); + await ReplaceItemsAsync(entity.Id, request.Items, request.MealType); return await GetByIdAsync(userId, entity.Id); } @@ -77,7 +77,7 @@ public async Task UpdateAsync(Guid userId, Guid id, MealTe _unitOfWork.MealTemplateItems.RemoveRange(existingItems); await _unitOfWork.CompleteAsync(); - await ReplaceItemsAsync(entity.Id, request.Items); + await ReplaceItemsAsync(entity.Id, request.Items, request.MealType); return await GetByIdAsync(userId, id); } @@ -120,7 +120,8 @@ public async Task LogAsync(Guid userId, Guid id, MealTe FoodId = item.FoodId, RecipeId = item.RecipeId, CustomName = item.CustomName, - MealType = mealType, + SourceType = item.SourceType, + MealType = NormalizeMealType(item.MealType, mealType), QuantityG = item.QuantityG, CaloriesKcal = nutrition.CaloriesKcal, ProteinG = nutrition.ProteinG, @@ -184,6 +185,7 @@ await _unitOfWork.MealTemplateItems.AddAsync(new MealTemplateItem RecipeId = item.RecipeId, CustomName = item.CustomName, SourceType = item.SourceType, + MealType = item.MealType, QuantityG = item.QuantityG, CaloriesKcal = item.CaloriesKcal, ProteinG = item.ProteinG, @@ -217,9 +219,17 @@ private static void ValidateRequest(MealTemplateUpsertRequest request) { var hasCatalogReference = item.FoodId.HasValue || item.RecipeId.HasValue; var isAiScan = string.Equals( - item.SourceType, - "AiScan", - StringComparison.OrdinalIgnoreCase); + item.SourceType, + "AiScan", + StringComparison.OrdinalIgnoreCase) || + string.Equals( + item.SourceType, + "AiIngredientScan", + StringComparison.OrdinalIgnoreCase) || + string.Equals( + item.SourceType, + "AiDishScan", + StringComparison.OrdinalIgnoreCase); var hasAiSnapshot = isAiScan && !string.IsNullOrWhiteSpace(item.CustomName) && item.CaloriesKcal.HasValue; @@ -232,7 +242,10 @@ private static void ValidateRequest(MealTemplateUpsertRequest request) } } - private async Task ReplaceItemsAsync(Guid mealTemplateId, IEnumerable items) + private async Task ReplaceItemsAsync( + Guid mealTemplateId, + IEnumerable items, + string? templateMealType) { foreach (var item in items.OrderBy(x => x.SortOrder)) { @@ -244,6 +257,7 @@ await _unitOfWork.MealTemplateItems.AddAsync(new MealTemplateItem RecipeId = item.RecipeId, CustomName = item.CustomName?.Trim(), SourceType = item.SourceType, + MealType = NormalizeMealType(item.MealType, templateMealType), QuantityG = item.QuantityG, CaloriesKcal = item.CaloriesKcal, ProteinG = item.ProteinG, @@ -282,6 +296,7 @@ private async Task> LoadTemplateItemsAsync(Guid t item.ProteinG, item.CarbsG, item.FatG); + var name = await ResolveItemNameAsync(item); result.Add(new MealTemplateItemResponse { Id = item.Id, @@ -290,6 +305,8 @@ private async Task> LoadTemplateItemsAsync(Guid t RecipeId = item.RecipeId, CustomName = item.CustomName, SourceType = item.SourceType, + Name = name, + MealType = NormalizeMealType(item.MealType), QuantityG = item.QuantityG, Ingredients = DeserializeIngredients(item.IngredientSnapshotJson), Notes = item.Notes, @@ -304,6 +321,36 @@ private async Task> LoadTemplateItemsAsync(Guid t return result; } + private async Task ResolveItemNameAsync(MealTemplateItem item) + { + if (item.FoodId.HasValue) + { + var food = await _unitOfWork.Foods.GetByIdAsync(item.FoodId.Value); + return food?.NameVi; + } + + if (item.RecipeId.HasValue) + { + var recipe = await _unitOfWork.Recipes.GetByIdAsync(item.RecipeId.Value); + return recipe?.Title; + } + + return item.CustomName; + } + + private static string NormalizeMealType(string? value, string? fallback = null) + { + foreach (var candidate in new[] { value, fallback }) + { + if (string.Equals(candidate, "Breakfast", StringComparison.OrdinalIgnoreCase)) return "Breakfast"; + if (string.Equals(candidate, "Lunch", StringComparison.OrdinalIgnoreCase)) return "Lunch"; + if (string.Equals(candidate, "Dinner", StringComparison.OrdinalIgnoreCase)) return "Dinner"; + if (string.Equals(candidate, "Snack", StringComparison.OrdinalIgnoreCase)) return "Snack"; + } + + return "Snack"; + } + private async Task<(decimal CaloriesKcal, decimal ProteinG, decimal CarbsG, decimal FatG)> CalculateNutritionAsync( Guid? foodId, Guid? recipeId, @@ -400,6 +447,7 @@ public async Task CreateFromLogAsync(Guid userId, Guid mea RecipeId = mealLog.RecipeId, CustomName = mealLog.CustomName, SourceType = mealLog.SourceType, + MealType = NormalizeMealType(mealLog.MealType), QuantityG = mealLog.QuantityG ?? 100, CaloriesKcal = mealLog.CaloriesKcal, ProteinG = mealLog.ProteinG, diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/NutritionSnapshotService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/NutritionSnapshotService.cs index dbcfcd98..1ef25d29 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/NutritionSnapshotService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/NutritionSnapshotService.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Threading.Tasks; using MenuGreen.BusinessLogicLayer.Interfaces; +using MenuGreen.BusinessLogicLayer.Helpers; using MenuGreen.DataAccessLayer.Context; using MenuGreen.DataAccessLayer.Entities; using Microsoft.EntityFrameworkCore; @@ -57,10 +58,16 @@ public async Task SyncDailySnapshotAsync(Guid userId, DateOnly date) // Guard: skip if user doesn't exist (e.g. Coach accounts, deleted users) var userExists = await _db.Users.AsNoTracking().AnyAsync(u => u.Id == userId); if (!userExists) return; - var logs = await _db.MealLogs.AsNoTracking() + var startUtc = VietnamTime.RangeStartUtc(date.AddDays(-1)); + var endUtc = VietnamTime.RangeEndUtc(date.AddDays(1)); + var logs = (await _db.MealLogs.AsNoTracking() .Where(x => x.UserId == userId && x.LoggedAt.HasValue - && DateOnly.FromDateTime(x.LoggedAt.Value) == date) - .ToListAsync(); + && x.LoggedAt.Value >= startUtc + && x.LoggedAt.Value <= endUtc) + .ToListAsync()) + .Where(x => x.LoggedAt.HasValue + && VietnamTime.ToDate(x.LoggedAt.Value) == date) + .ToList(); var health = await _db.HealthProfiles.AsNoTracking() .FirstOrDefaultAsync(x => x.UserId == userId); diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/NutritionTrackingService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/NutritionTrackingService.cs index a69578fe..61706ccd 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/NutritionTrackingService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/NutritionTrackingService.cs @@ -71,7 +71,7 @@ public async Task DeleteMealLogAsync(Guid userId, Guid mealLogId) { var entity = await GetOwnedMealLogAsync(userId, mealLogId); var logDate = entity.LoggedAt.HasValue - ? DateOnly.FromDateTime(entity.LoggedAt.Value) + ? VietnamTime.ToDate(entity.LoggedAt.Value) : DateOnly.FromDateTime(DateTime.UtcNow); _unitOfWork.MealLogs.Remove(entity); await _unitOfWork.CompleteAsync(); @@ -83,18 +83,21 @@ public async Task GetDailySummaryAsync(Guid userId, Date // Meal logs are persisted in UTC. Convert the requested Vietnam // calendar day to UTC so a daily card never leaks meals from the // previous/next day or behaves like a multi-day rollup. - var startOfDay = date - .ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc) - .AddHours(-VietnamUtcOffsetHours); - var endOfDay = date - .ToDateTime(TimeOnly.MaxValue, DateTimeKind.Utc) - .AddHours(-VietnamUtcOffsetHours); + var startOfDay = VietnamTime.RangeStartUtc(date.AddDays(-1)); + var endOfDay = VietnamTime.RangeEndUtc(date.AddDays(1)); var logs = await _unitOfWork.MealLogs.FindAsync(x => x.UserId == userId && x.LoggedAt.HasValue && x.LoggedAt.Value >= startOfDay && x.LoggedAt.Value <= endOfDay); - var logList = logs.ToList(); + // Npgsql legacy timestamp mode can shift DateTime query parameters + // by the machine offset. The database range is only a coarse + // prefilter; enforce the requested Vietnam calendar date again in + // memory so an evening meal from yesterday cannot leak into today. + var logList = logs + .Where(x => x.LoggedAt.HasValue + && VietnamTime.ToDate(x.LoggedAt.Value) == date) + .ToList(); await NormalizeAutoCompletedMealLogsAsync(logList); await _nutritionSnapshotService.SyncDailySnapshotAsync(userId, date); return await BuildDailySummaryAsync(userId, date, logList); @@ -103,19 +106,23 @@ public async Task GetDailySummaryAsync(Guid userId, Date public async Task GetDashboardAsync(Guid userId, string range, DateOnly? startDate, DateOnly? endDate) { var (from, to) = ResolveRange(range, startDate, endDate); - var fromDateTime = from.ToDateTime(TimeOnly.MinValue); - var toDateTime = to.ToDateTime(TimeOnly.MaxValue); + var fromDateTime = VietnamTime.RangeStartUtc(from.AddDays(-1)); + var toDateTime = VietnamTime.RangeEndUtc(to.AddDays(1)); var logs = (await _unitOfWork.MealLogs.FindAsync( x => x.UserId == userId && x.LoggedAt.HasValue && x.LoggedAt.Value >= fromDateTime - && x.LoggedAt.Value <= toDateTime)).ToList(); + && x.LoggedAt.Value <= toDateTime)) + .Where(x => x.LoggedAt.HasValue + && VietnamTime.ToDate(x.LoggedAt.Value) >= from + && VietnamTime.ToDate(x.LoggedAt.Value) <= to) + .ToList(); await NormalizeAutoCompletedMealLogsAsync(logs); var logDates = logs .Where(x => x.LoggedAt.HasValue) - .Select(x => DateOnly.FromDateTime(x.LoggedAt!.Value)) + .Select(x => VietnamTime.ToDate(x.LoggedAt!.Value)) .Distinct() .ToList(); @@ -279,15 +286,20 @@ public async Task GetMealLogByIdAsync(Guid userId, Guid mealLog public async Task GetMealLogsByRangeAsync(Guid userId, DateOnly startDate, DateOnly endDate) { - var startDateTime = startDate.ToDateTime(TimeOnly.MinValue); - var endDateTime = endDate.ToDateTime(TimeOnly.MaxValue); + var startDateTime = VietnamTime.RangeStartUtc(startDate.AddDays(-1)); + var endDateTime = VietnamTime.RangeEndUtc(endDate.AddDays(1)); var logs = await _unitOfWork.MealLogs.FindAsync( x => x.UserId == userId && x.LoggedAt.HasValue && x.LoggedAt.Value >= startDateTime && x.LoggedAt.Value <= endDateTime); - var logList = logs.OrderByDescending(x => x.LoggedAt).ToList(); + var logList = logs + .Where(x => x.LoggedAt.HasValue + && VietnamTime.ToDate(x.LoggedAt.Value) >= startDate + && VietnamTime.ToDate(x.LoggedAt.Value) <= endDate) + .OrderByDescending(x => x.LoggedAt) + .ToList(); var mappedLogs = await MapMealLogsAsync(logList); return new MealLogListResponse @@ -303,8 +315,8 @@ public async Task GetMealLogsByRangeAsync(Guid userId, Date public async Task GetNutritionSummaryAsync(Guid userId, string period = "day", DateOnly? date = null) { var (startDate, endDate) = ResolvePeriod(period, date); - var startDateTime = startDate.ToDateTime(TimeOnly.MinValue); - var endDateTime = endDate.ToDateTime(TimeOnly.MaxValue); + var startDateTime = VietnamTime.RangeStartUtc(startDate.AddDays(-1)); + var endDateTime = VietnamTime.RangeEndUtc(endDate.AddDays(1)); var logs = await _unitOfWork.MealLogs.FindAsync( x => x.UserId == userId && @@ -312,7 +324,11 @@ public async Task GetNutritionSummaryAsync(Guid userId x.LoggedAt.Value >= startDateTime && x.LoggedAt.Value <= endDateTime); - var logList = logs.ToList(); + var logList = logs + .Where(x => x.LoggedAt.HasValue + && VietnamTime.ToDate(x.LoggedAt.Value) >= startDate + && VietnamTime.ToDate(x.LoggedAt.Value) <= endDate) + .ToList(); var totalCalories = logList.Sum(x => x.CaloriesKcal ?? 0); var totalProtein = logList.Sum(x => x.ProteinG ?? 0); var totalCarbs = logList.Sum(x => x.CarbsG ?? 0); @@ -339,20 +355,24 @@ public async Task GetNutritionSummaryAsync(Guid userId public async Task GetNutritionTrendsAsync(Guid userId, DateOnly startDate, DateOnly endDate) { - var startDateTime = startDate.ToDateTime(TimeOnly.MinValue); - var endDateTime = endDate.ToDateTime(TimeOnly.MaxValue); + var startDateTime = VietnamTime.RangeStartUtc(startDate.AddDays(-1)); + var endDateTime = VietnamTime.RangeEndUtc(endDate.AddDays(1)); var logs = await _unitOfWork.MealLogs.FindAsync( x => x.UserId == userId && x.LoggedAt.HasValue && x.LoggedAt.Value >= startDateTime && x.LoggedAt.Value <= endDateTime); - var logList = logs.ToList(); + var logList = logs + .Where(x => x.LoggedAt.HasValue + && VietnamTime.ToDate(x.LoggedAt.Value) >= startDate + && VietnamTime.ToDate(x.LoggedAt.Value) <= endDate) + .ToList(); var dailyData = new List(); for (var day = startDate; day <= endDate; day = day.AddDays(1)) { - var dayLogs = logList.Where(x => x.LoggedAt.HasValue && DateOnly.FromDateTime(x.LoggedAt.Value) == day).ToList(); + var dayLogs = logList.Where(x => x.LoggedAt.HasValue && VietnamTime.ToDate(x.LoggedAt.Value) == day).ToList(); dailyData.Add(new DailyNutritionPoint { @@ -539,15 +559,29 @@ await ApplyNutritionFromRecipeAsync( entity.ProteinG = request.ProteinG; entity.CarbsG = request.CarbsG; entity.FatG = request.FatG; - entity.SourceType = string.IsNullOrWhiteSpace(request.CustomName) - ? "Manual" - : "AiScan"; + entity.SourceType = ResolveCustomSourceType( + request.SourceType, + request.CustomName); return; } throw new Exception("FoodId or RecipeId or custom nutritional values are required."); } + private static string ResolveCustomSourceType( + string? requestedSourceType, + string? customName) + { + if (string.Equals(requestedSourceType, "AiIngredientScan", StringComparison.OrdinalIgnoreCase)) + return "AiIngredientScan"; + if (string.Equals(requestedSourceType, "AiDishScan", StringComparison.OrdinalIgnoreCase)) + return "AiDishScan"; + if (string.Equals(requestedSourceType, "AiScan", StringComparison.OrdinalIgnoreCase)) + return "AiScan"; + + return string.IsNullOrWhiteSpace(customName) ? "Manual" : "AiScan"; + } + private async Task ResolveActualSnapshotAsync( MealLog entity, MealLogUpsertRequest request, @@ -816,7 +850,7 @@ private async Task BuildDailySummaryAsync( private async Task SyncSnapshotForLogAsync(Guid userId, MealLog entity) { var logDate = entity.LoggedAt.HasValue - ? DateOnly.FromDateTime(entity.LoggedAt.Value) + ? VietnamTime.ToDate(entity.LoggedAt.Value) : DateOnly.FromDateTime(DateTime.UtcNow); await _nutritionSnapshotService.SyncDailySnapshotAsync(userId, logDate); } @@ -827,7 +861,7 @@ private async Task> BuildRangeSummariesAsync(Guid u var targetContext = await BuildNutritionTargetContextAsync(userId, from, to); for (var day = from; day <= to; day = day.AddDays(1)) { - var dayLogs = logs.Where(x => x.LoggedAt.HasValue && DateOnly.FromDateTime(x.LoggedAt.Value) == day).ToList(); + var dayLogs = logs.Where(x => x.LoggedAt.HasValue && VietnamTime.ToDate(x.LoggedAt.Value) == day).ToList(); result.Add(await BuildDailySummaryAsync(userId, day, dayLogs, targetContext)); } return result; @@ -1246,7 +1280,25 @@ private readonly record struct ApprovedPlanRange( private static DateTime EnsureUtc(DateTime dt) { - return dt.Kind == DateTimeKind.Utc ? dt : dt.ToUniversalTime(); + // Npgsql legacy timestamp mode converts Local values to UTC while + // writing timestamptz. Passing an already-UTC value makes legacy + // mode apply the machine offset a second time, which can move an + // early-morning Vietnam meal back to the previous calendar day. + // + // JSON timestamps without an offset are wall-clock values entered + // by the Vietnam client, so interpret them as UTC+07 first. Then + // present the resolved instant in the API machine's local zone for + // the single conversion performed by legacy Npgsql. + var utcInstant = dt.Kind switch + { + DateTimeKind.Utc => dt, + DateTimeKind.Local => dt.ToUniversalTime(), + _ => new DateTimeOffset( + dt, + TimeSpan.FromHours(VietnamUtcOffsetHours)).UtcDateTime + }; + + return utcInstant.ToLocalTime(); } private static DateTime? EnsureUtc(DateTime? dt) diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/PlannedVsActualService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/PlannedVsActualService.cs index 61be8e69..3a2e7dc9 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/PlannedVsActualService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/PlannedVsActualService.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using MenuGreen.BusinessLogicLayer.DTOs.Responses; using MenuGreen.BusinessLogicLayer.Interfaces; +using MenuGreen.BusinessLogicLayer.Helpers; using MenuGreen.DataAccessLayer.Entities; using MenuGreen.DataAccessLayer.Interfaces; @@ -57,14 +58,18 @@ private async Task> GetActivePlanItemsAsync(Guid userId, Date public async Task GetSummaryAsync(Guid userId, DateOnly from, DateOnly to) { var planItems = await GetActivePlanItemsAsync(userId, from, to); - var fromUtc = ToVietnamRangeStartUtc(from); - var toUtc = ToVietnamRangeEndUtc(to); + var fromUtc = ToVietnamRangeStartUtc(from.AddDays(-1)); + var toUtc = ToVietnamRangeEndUtc(to.AddDays(1)); var logs = (await _unitOfWork.MealLogs.FindAsync(l => l.UserId == userId && l.LoggedAt.HasValue && l.LoggedAt.Value >= fromUtc && - l.LoggedAt.Value <= toUtc)).ToList(); + l.LoggedAt.Value <= toUtc)) + .Where(l => l.LoggedAt.HasValue + && VietnamTime.ToDate(l.LoggedAt.Value) >= from + && VietnamTime.ToDate(l.LoggedAt.Value) <= to) + .ToList(); var foodIds = planItems.Where(i => i.FoodId.HasValue).Select(i => i.FoodId!.Value) .Concat(logs.Where(l => l.FoodId.HasValue).Select(l => l.FoodId!.Value)) @@ -167,8 +172,8 @@ public async Task GetSummaryAsync(Guid userId, D dailyPlanned.CostVnd += cost; } - var dailyLogs = logs.Where(l => DateOnly.FromDateTime( - l.LoggedAt!.Value.AddHours(VietnamUtcOffsetHours)) == date).ToList(); + var dailyLogs = logs.Where(l => + VietnamTime.ToDate(l.LoggedAt!.Value) == date).ToList(); foreach (var log in dailyLogs) { dailyActual.CaloriesKcal += log.CaloriesKcal ?? 0; @@ -243,14 +248,18 @@ public async Task GetAdherenceScoreAsync(Guid userId, Da var summary = await GetSummaryAsync(userId, from, to); var planItems = await GetActivePlanItemsAsync(userId, from, to); - var fromUtc = ToVietnamRangeStartUtc(from); - var toUtc = ToVietnamRangeEndUtc(to); + var fromUtc = ToVietnamRangeStartUtc(from.AddDays(-1)); + var toUtc = ToVietnamRangeEndUtc(to.AddDays(1)); var logs = (await _unitOfWork.MealLogs.FindAsync(l => l.UserId == userId && l.LoggedAt.HasValue && l.LoggedAt.Value >= fromUtc && - l.LoggedAt.Value <= toUtc)).ToList(); + l.LoggedAt.Value <= toUtc)) + .Where(l => l.LoggedAt.HasValue + && VietnamTime.ToDate(l.LoggedAt.Value) >= from + && VietnamTime.ToDate(l.LoggedAt.Value) <= to) + .ToList(); // 1. Meal Completion Rate (40%) double mealCompletionRate = 100; @@ -369,14 +378,18 @@ public async Task GetAdherenceScoreAsync(Guid userId, Da public async Task GetDriftAnalysisAsync(Guid userId, DateOnly from, DateOnly to) { var planItems = await GetActivePlanItemsAsync(userId, from, to); - var fromUtc = ToVietnamRangeStartUtc(from); - var toUtc = ToVietnamRangeEndUtc(to); + var fromUtc = ToVietnamRangeStartUtc(from.AddDays(-1)); + var toUtc = ToVietnamRangeEndUtc(to.AddDays(1)); var logs = (await _unitOfWork.MealLogs.FindAsync(l => l.UserId == userId && l.LoggedAt.HasValue && l.LoggedAt.Value >= fromUtc && - l.LoggedAt.Value <= toUtc)).ToList(); + l.LoggedAt.Value <= toUtc)) + .Where(l => l.LoggedAt.HasValue + && VietnamTime.ToDate(l.LoggedAt.Value) >= from + && VietnamTime.ToDate(l.LoggedAt.Value) <= to) + .ToList(); var foodIds = planItems.Where(i => i.FoodId.HasValue).Select(i => i.FoodId!.Value) .Concat(logs.Where(l => l.FoodId.HasValue).Select(l => l.FoodId!.Value)) diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/ProfileService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/ProfileService.cs index d90b609f..cb657adc 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/ProfileService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/ProfileService.cs @@ -317,9 +317,9 @@ private async Task EnsureHealthProfileAsync(Guid userId) private async Task GetRoleNameAsync(Guid userId) { var user = await _unitOfWork.Users.GetByIdAsync(userId); - if (user == null) return "User"; + if (user == null) return "Free"; var roleEntities = await _unitOfWork.Roles.FindAsync(r => r.Id == user.RoleId); - return roleEntities.FirstOrDefault()?.Name ?? "User"; + return roleEntities.FirstOrDefault()?.Name ?? "Free"; } private ProfileResponse MapToResponse(Profile p, HealthProfile hp, string roleName) diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/PtReviewService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/PtReviewService.cs index 190d9502..b7f8d63d 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/PtReviewService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/PtReviewService.cs @@ -6,6 +6,7 @@ using MenuGreen.BusinessLogicLayer.DTOs.Requests; using MenuGreen.BusinessLogicLayer.DTOs.Responses; using MenuGreen.BusinessLogicLayer.Interfaces; +using MenuGreen.BusinessLogicLayer.Helpers; using MenuGreen.DataAccessLayer.Entities; using MenuGreen.DataAccessLayer.Interfaces; using Microsoft.Extensions.Configuration; @@ -140,6 +141,9 @@ public async Task CreateReportAsync(Guid userId, C var dataThroughDate = isWeeklyReport || isMidWeekCheckIn ? ResolveWeeklyDataThroughDate(weekStartDate) : weekEndDate; + var reportTargetDate = isWeeklyReport || isMidWeekCheckIn + ? dataThroughDate + : weekStartDate; // 1. Load Health Profile var healthProfiles = await _unitOfWork.HealthProfiles.FindAsync(hp => hp.UserId == userId); @@ -201,7 +205,16 @@ public async Task CreateReportAsync(Guid userId, C } else { - configuredPlan = SelectPlanForDate(plans, weekStartDate); + configuredPlan = SelectPlanForDate( + plans, + reportTargetDate); + if (configuredPlan == null && (isWeeklyReport || isMidWeekCheckIn)) + { + configuredPlan = SelectLatestPlanThroughDate( + plans, + weekStartDate, + dataThroughDate); + } } if (isRouteApproval && configuredPlan == null) { @@ -221,7 +234,7 @@ public async Task CreateReportAsync(Guid userId, C } var configuredTargets = await ResolveGymTargetsAsync( userId, - weekStartDate); + reportTargetDate); var dailyMeals = isRouteApproval ? await LoadDailyMealsSnapshotAsync( @@ -541,7 +554,9 @@ public async Task> GetMyRequestsAsync // RouteApproval represents the concrete plan date selected by // the Gymer. CreatedAt is only the submission timestamp and // must not replace a future/past plan date in API responses. - var effectiveDate = req.WeekStartDate; + var effectiveDate = reportData == null + ? req.WeekStartDate + : ResolveReportDate(req, reportData); var configuredTargets = await ResolveGymTargetsAsync( req.UserId, effectiveDate); @@ -557,7 +572,9 @@ public async Task> GetMyRequestsAsync PtComment = req.PtComment ?? string.Empty, SuggestedCalorieTarget = req.SuggestedCalorieTarget, SuggestedProteinTarget = req.SuggestedProteinTarget, - ConfiguredCalorieTarget = configuredTargets.TargetCalories, + ConfiguredCalorieTarget = + configuredTargets.TargetCalories + ?? reportData?.TargetCaloriesDaily, ConfiguredMinCalories = configuredTargets.MinCalories, ConfiguredMaxCalories = configuredTargets.MaxCalories, ConfigurationScope = configuredTargets.Scope, @@ -1933,8 +1950,8 @@ private async Task> LoadDailyMealsSnapshotAsync( planItems.AddRange(allPlanItems.Where(i => i.MealPlanId == effectiveId && i.PlannedDate == d)); } - var startUtc = ToVietnamRangeStartUtc(weekStart); - var endUtc = ToVietnamRangeEndUtc(dataThroughDate); + var startUtc = ToVietnamRangeStartUtc(weekStart.AddDays(-1)); + var endUtc = ToVietnamRangeEndUtc(dataThroughDate.AddDays(1)); var mealLogs = (await _unitOfWork.MealLogs.FindAsync(log => log.UserId == userId && log.LoggedAt >= startUtc @@ -2026,8 +2043,7 @@ private async Task> LoadDailyMealsSnapshotAsync( foreach (var log in mealLogs.Where(log => log.LoggedAt.HasValue - && DateOnly.FromDateTime( - log.LoggedAt.Value.AddHours(VietnamUtcOffsetHours)) == date)) + && VietnamTime.ToDate(log.LoggedAt.Value) == date)) { foods.TryGetValue(log.FoodId ?? Guid.Empty, out var food); recipes.TryGetValue(log.RecipeId ?? Guid.Empty, out var recipe); @@ -2173,13 +2189,27 @@ private async Task RefreshConfiguredTargetsAsync( var configuredTargets = await ResolveGymTargetsAsync( request.UserId, targetDate); + var isPeriodicReport = reportData.RequestType.Equals( + "WeeklyReport", + StringComparison.OrdinalIgnoreCase) + || reportData.RequestType.Equals( + "MidWeekCheckIn", + StringComparison.OrdinalIgnoreCase); var plans = await _unitOfWork.MealPlanHeaders.FindAsync(plan => plan.UserId == request.UserId && plan.IsActive && plan.Status != "Draft" && plan.StartDate <= targetDate - && (plan.EndDate ?? plan.StartDate) >= targetDate); + && (plan.EndDate ?? plan.StartDate) >= + (isPeriodicReport ? request.WeekStartDate : targetDate)); var configuredPlan = SelectPlanForDate(plans, targetDate); + if (configuredPlan == null && isPeriodicReport) + { + configuredPlan = SelectLatestPlanThroughDate( + plans, + request.WeekStartDate, + targetDate); + } reportData.TargetCaloriesDaily = configuredTargets.TargetCalories @@ -2364,6 +2394,17 @@ private static DateOnly ResolveReportDate( PtReviewRequest request, WeeklyReportSnapshot reportData) { + if ((reportData.RequestType.Equals( + "MidWeekCheckIn", + StringComparison.OrdinalIgnoreCase) + || reportData.RequestType.Equals( + "WeeklyReport", + StringComparison.OrdinalIgnoreCase)) + && reportData.DataThroughDate.HasValue) + { + return reportData.DataThroughDate.Value; + } + if (!reportData.RequestType.Equals( "RouteApproval", StringComparison.OrdinalIgnoreCase)) @@ -2404,6 +2445,20 @@ private static DateOnly ResolveReportDate( .FirstOrDefault(); } + private static MealPlanHeader? SelectLatestPlanThroughDate( + IEnumerable plans, + DateOnly weekStart, + DateOnly dataThroughDate) + { + return plans + .Where(plan => + plan.StartDate <= dataThroughDate + && (plan.EndDate ?? plan.StartDate) >= weekStart) + .OrderByDescending(plan => plan.StartDate) + .ThenByDescending(plan => plan.UpdatedAt ?? plan.CreatedAt) + .FirstOrDefault(); + } + private sealed class ConfiguredGymTargets { public int? TargetCalories { get; init; } diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/RecipeCatalogService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/RecipeCatalogService.cs index 4d936197..0baeb8e4 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/RecipeCatalogService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/RecipeCatalogService.cs @@ -61,6 +61,6 @@ private async Task UpsertIngredients(Guid recipeId, List new() { Id = r.Id, FoodId = r.FoodId, Title = r.Title, Description = r.Description, PrepTimeMin = r.PrepTimeMin, CookTimeMin = r.CookTimeMin, TotalTimeMin = r.TotalTimeMin, Servings = r.Servings, Difficulty = r.Difficulty, MealType = r.MealType, EstimatedPriceVnd = r.EstimatedPriceVnd, Instructions = r.Instructions, ImageUrl = r.ImageUrl, VideoUrl = r.VideoUrl, IsActive = r.IsActive }; + private static RecipeResponse Map(Recipe r) => new() { Id = r.Id, FoodId = r.FoodId, Title = r.Title, Description = r.Description, PrepTimeMin = r.PrepTimeMin, CookTimeMin = r.CookTimeMin, TotalTimeMin = r.TotalTimeMin, Servings = r.Servings, Difficulty = r.Difficulty, MealType = r.MealType, EstimatedPriceVnd = r.EstimatedPriceVnd, Instructions = r.Instructions, ImageUrl = r.ImageUrl, VideoUrl = r.VideoUrl, SourceName = r.SourceName, SourceUrl = r.SourceUrl, IsActive = r.IsActive }; } } diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/RecipeService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/RecipeService.cs index 2b6509de..4147ffa8 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/RecipeService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/RecipeService.cs @@ -91,7 +91,9 @@ public async Task SearchAsync( string? difficulty, bool? isActive, Guid? userId = null, - string? allergyMode = null) + string? allergyMode = null, + int? page = null, + int? pageSize = null) { // Build query with filters at database level (fix client-side filtering) var allRecipes = await _unitOfWork.Recipes.FindAsync(r => true, asNoTracking: true); @@ -121,7 +123,25 @@ public async Task SearchAsync( query = query.Where(r => r.IsActive == isActive.Value); } - var recipeList = query.ToList(); + var mode = NormalizeAllergyMode(allergyMode); + var currentPage = pageSize.HasValue ? Math.Max(page ?? 1, 1) : 1; + var requestedPageSize = pageSize.HasValue + ? Math.Clamp(pageSize.Value, 1, 100) + : 0; + var recipeList = query.OrderBy(r => r.Title).ToList(); + var unpagedTotalCount = recipeList.Count; + + // In warn/all mode allergy matching does not remove records, so only + // enrich the requested page. Hide mode must evaluate all records first + // to keep TotalCount and TotalPages accurate. + if (mode != AllergenCatalog.ModeHide && pageSize.HasValue) + { + recipeList = recipeList + .Skip((int)Math.Min((long)(currentPage - 1) * requestedPageSize, int.MaxValue)) + .Take(requestedPageSize) + .ToList(); + } + var ingredientMap = await LoadIngredientNamesByRecipeAsync(recipeList.Select(r => r.Id)); var linkedFoodIds = recipeList .Where(recipe => recipe.FoodId.HasValue) @@ -133,8 +153,6 @@ public async Task SearchAsync( : (await _unitOfWork.Foods.FindAsync( food => linkedFoodIds.Contains(food.Id))) .ToDictionary(food => food.Id, food => food.DefaultServingG); - var mode = NormalizeAllergyMode(allergyMode); - // Enrich serially to keep the shared DbContext single-threaded. // EF Core's DbContext is NOT thread-safe; running multiple // _allergenMatching calls in parallel via Task.WhenAll triggers @@ -157,7 +175,24 @@ public async Task SearchAsync( if (shouldInclude) items.Add(dto); } - return new RecipeSearchResponse { Items = items, TotalCount = items.Count }; + var totalCount = mode == AllergenCatalog.ModeHide + ? items.Count + : unpagedTotalCount; + var currentPageSize = pageSize.HasValue ? requestedPageSize : totalCount; + var pageItems = mode == AllergenCatalog.ModeHide && pageSize.HasValue + ? items + .Skip((int)Math.Min((long)(currentPage - 1) * currentPageSize, int.MaxValue)) + .Take(currentPageSize) + .ToList() + : items; + + return new RecipeSearchResponse + { + Items = pageItems, + TotalCount = totalCount, + Page = currentPage, + PageSize = currentPageSize + }; } public async Task> GetIngredientsAsync(Guid recipeId) @@ -320,6 +355,6 @@ private static string NormalizeAllergyMode(string? mode) : AllergenCatalog.ModeWarn; } - private static RecipeResponse Map(Recipe r) => new() { Id = r.Id, FoodId = r.FoodId, Title = r.Title, Description = r.Description, PrepTimeMin = r.PrepTimeMin, CookTimeMin = r.CookTimeMin, TotalTimeMin = r.TotalTimeMin, Servings = r.Servings, Difficulty = r.Difficulty, MealType = r.MealType, EstimatedPriceVnd = r.EstimatedPriceVnd, Instructions = r.Instructions, ImageUrl = r.ImageUrl, VideoUrl = r.VideoUrl, IsActive = r.IsActive }; + private static RecipeResponse Map(Recipe r) => new() { Id = r.Id, FoodId = r.FoodId, Title = r.Title, Description = r.Description, PrepTimeMin = r.PrepTimeMin, CookTimeMin = r.CookTimeMin, TotalTimeMin = r.TotalTimeMin, Servings = r.Servings, Difficulty = r.Difficulty, MealType = r.MealType, EstimatedPriceVnd = r.EstimatedPriceVnd, Instructions = r.Instructions, ImageUrl = r.ImageUrl, VideoUrl = r.VideoUrl, SourceName = r.SourceName, SourceUrl = r.SourceUrl, IsActive = r.IsActive }; } } diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/SepayPaymentService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/SepayPaymentService.cs index 04945a52..26a0d599 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/SepayPaymentService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/SepayPaymentService.cs @@ -410,6 +410,23 @@ await _unitOfWork.SubscriptionTransactions.AddAsync(new SubscriptionTransaction TransactionDate = now, CreatedAt = now }); + + // Upgrade user role to Office when purchasing an Office plan + if (string.Equals(plan.FeatureGroup, "office", StringComparison.OrdinalIgnoreCase) || + string.Equals(plan.Name, "Office", StringComparison.OrdinalIgnoreCase)) + { + var user = await _unitOfWork.Users.GetByIdAsync(subscription.UserId); + if (user != null) + { + var officeRole = (await _unitOfWork.Roles.FindAsync(r => r.Name == "Office")).FirstOrDefault(); + if (officeRole != null && user.RoleId != officeRole.Id) + { + user.RoleId = officeRole.Id; + user.UpdatedAt = now; + _unitOfWork.Users.Update(user); + } + } + } } private async Task GenerateUniqueProviderOrderCodeAsync() diff --git a/backend/MenuGreen.BusinessLogicLayer/Services/UserService.cs b/backend/MenuGreen.BusinessLogicLayer/Services/UserService.cs index 5e348fa5..b74ea2cd 100644 --- a/backend/MenuGreen.BusinessLogicLayer/Services/UserService.cs +++ b/backend/MenuGreen.BusinessLogicLayer/Services/UserService.cs @@ -56,7 +56,7 @@ public async Task> GetAllUsersAsync() Id = u.Id, Email = u.Email, FullName = p?.FullName ?? "", - Role = r?.Name ?? "User", + Role = r?.Name ?? "Free", IsActive = u.IsActive, EmailConfirmed = u.EmailConfirmed, CreatedAt = u.CreatedAt, @@ -73,7 +73,7 @@ public async Task GetUserByIdAsync(Guid userId) if (user == null) throw new Exception("Account not found."); var profile = await _unitOfWork.Profiles.GetByIdAsync(userId); - var roleName = "User"; + var roleName = "Free"; var roleEntities = await _unitOfWork.Roles.FindAsync(r => r.Id == user.RoleId); if (roleEntities.Any()) { diff --git a/backend/MenuGreen.DataAccessLayer/Configurations/MealTemplateItemConfiguration.cs b/backend/MenuGreen.DataAccessLayer/Configurations/MealTemplateItemConfiguration.cs index 0048076d..d7a51382 100644 --- a/backend/MenuGreen.DataAccessLayer/Configurations/MealTemplateItemConfiguration.cs +++ b/backend/MenuGreen.DataAccessLayer/Configurations/MealTemplateItemConfiguration.cs @@ -13,6 +13,9 @@ public void Configure(EntityTypeBuilder builder) builder.Property(x => x.CustomName).HasMaxLength(200); builder.Property(x => x.SourceType).HasMaxLength(50); + builder.Property(x => x.MealType) + .HasMaxLength(50) + .HasDefaultValue("Snack"); builder.Property(x => x.QuantityG).HasPrecision(18, 2); builder.Property(x => x.CaloriesKcal).HasPrecision(18, 2); builder.Property(x => x.ProteinG).HasPrecision(18, 2); diff --git a/backend/MenuGreen.DataAccessLayer/Configurations/RecipeConfiguration.cs b/backend/MenuGreen.DataAccessLayer/Configurations/RecipeConfiguration.cs index e2a9678c..46546f94 100644 --- a/backend/MenuGreen.DataAccessLayer/Configurations/RecipeConfiguration.cs +++ b/backend/MenuGreen.DataAccessLayer/Configurations/RecipeConfiguration.cs @@ -17,6 +17,8 @@ public void Configure(EntityTypeBuilder builder) builder.Property(x => x.Instructions).HasColumnType("json"); builder.Property(x => x.ImageUrl).HasColumnType("text"); builder.Property(x => x.VideoUrl).HasColumnType("text"); + builder.Property(x => x.SourceName).HasMaxLength(200); + builder.Property(x => x.SourceUrl).HasMaxLength(1000); builder.HasOne(x => x.Food).WithMany(x => x.Recipes).HasForeignKey(x => x.FoodId); // Add indexes for frequently queried columns (performance optimization) diff --git a/backend/MenuGreen.DataAccessLayer/Entities/MealTemplateItem.cs b/backend/MenuGreen.DataAccessLayer/Entities/MealTemplateItem.cs index e103724b..6df79b51 100644 --- a/backend/MenuGreen.DataAccessLayer/Entities/MealTemplateItem.cs +++ b/backend/MenuGreen.DataAccessLayer/Entities/MealTemplateItem.cs @@ -10,6 +10,7 @@ public class MealTemplateItem public Guid? RecipeId { get; set; } public string? CustomName { get; set; } public string? SourceType { get; set; } + public string MealType { get; set; } = "Snack"; public decimal QuantityG { get; set; } public decimal? CaloriesKcal { get; set; } public decimal? ProteinG { get; set; } diff --git a/backend/MenuGreen.DataAccessLayer/Entities/Recipe.cs b/backend/MenuGreen.DataAccessLayer/Entities/Recipe.cs index c95f7503..7af4e9bc 100644 --- a/backend/MenuGreen.DataAccessLayer/Entities/Recipe.cs +++ b/backend/MenuGreen.DataAccessLayer/Entities/Recipe.cs @@ -19,6 +19,8 @@ public class Recipe public string? Instructions { get; set; } public string? ImageUrl { get; set; } public string? VideoUrl { get; set; } + public string? SourceName { get; set; } + public string? SourceUrl { get; set; } public bool? IsActive { get; set; } public DateTime? CreatedAt { get; set; } diff --git a/backend/database/09_payments.sql b/backend/database/09_payments.sql index b61a1fdf..12c3e1ec 100644 --- a/backend/database/09_payments.sql +++ b/backend/database/09_payments.sql @@ -21,7 +21,7 @@ CREATE TABLE payments ( "ExpiredAt" timestamp with time zone NULL, "PaidAt" timestamp with time zone NULL, CONSTRAINT "PK_payments" PRIMARY KEY ("Id"), - CONSTRAINT "CK_payments_status" CHECK ("Status" IN ('PENDING','PAID','FAILED','EXPIRED','REFUNDED')), + CONSTRAINT "CK_payments_status" CHECK ("Status" IN ('PENDING','PAID','FAILED','EXPIRED','REFUNDED','CANCELLED')), CONSTRAINT "FK_payments_user_subscriptions_UserSubscriptionId" FOREIGN KEY ("UserSubscriptionId") REFERENCES user_subscriptions ("Id") ON DELETE SET NULL ); @@ -34,4 +34,12 @@ VALUES ('cca940d2-f4ad-432b-b6b2-99c504fb71f5', '586209d0-d3c4-43a4-bba7-5d4c73b37bc1', '137a2257-8c0b-4b56-b4fa-be8da55e7c14', 99000, 'PAID', 'QR_CODE', 'SEPAY', 'ORDER_cca940d2', now() - interval '20 days', now() - interval '20 days', NULL, now() - interval '20 days') ON CONFLICT DO NOTHING; +-- Keep stale unpaid orders out of the active payment queue. +UPDATE payments +SET + "Status" = 'CANCELLED', + "UpdatedAt" = NOW() +WHERE "Status" = 'PENDING' + AND "CreatedAt" < NOW() - INTERVAL '7 days'; + COMMIT; diff --git a/backend/database/15_ingredients.sql b/backend/database/15_ingredients.sql index b8f635ee..8d92e682 100644 --- a/backend/database/15_ingredients.sql +++ b/backend/database/15_ingredients.sql @@ -88,4 +88,1214 @@ VALUES ,('ea000055-1111-2222-3333-444444444444', 'Đậu phộng rang', 'Roasted peanuts', 'Đậu/Hạt', 567, 26.0, 16.0, 49.0, 90000, 'g', 'https://images.unsplash.com/photo-1567892745478-b5d4d3a9b3e8?w=150', true, now()) ON CONFLICT ("Id") DO NOTHING; +-- Ingredients commonly returned by the Office scanner. +INSERT INTO ingredients ( + "Id", "NameVi", "NameEn", "Category", + "CaloriesKcal", "ProteinG", "CarbsG", "FatG", + "EstimatedPriceVnd", "UnitDefault", "ImageUrl", "IsActive", "CreatedAt" +) +SELECT * +FROM (VALUES + ('ea000056-1111-2222-3333-444444444444'::uuid, 'Thịt bò tươi', 'Fresh beef', 'Thịt/Cá', 143::numeric, 26.0::numeric, 0.0::numeric, 3.8::numeric, 280000, 'g', NULL::text, true, now()), + ('ea000057-1111-2222-3333-444444444444'::uuid, 'Bò viên', 'Beef meatballs', 'Thịt/Cá', 200::numeric, 12.0::numeric, 8.0::numeric, 13.0::numeric, 180000, 'g', NULL::text, true, now()), + ('ea000058-1111-2222-3333-444444444444'::uuid, 'Bánh phở tươi', 'Fresh pho noodles', 'Tinh bột', 110::numeric, 1.7::numeric, 25.6::numeric, 0.1::numeric, 25000, 'g', NULL::text, true, now()), + ('ea000059-1111-2222-3333-444444444444'::uuid, 'Rau thơm (Húng quế, ngò gai)', 'Vietnamese mixed herbs', 'Rau củ', 25::numeric, 2.7::numeric, 4.5::numeric, 0.5::numeric, 40000, 'g', NULL::text, true, now()), + ('ea000060-1111-2222-3333-444444444444'::uuid, 'Giá đỗ', 'Bean sprouts', 'Rau củ', 30::numeric, 3.0::numeric, 5.9::numeric, 0.2::numeric, 18000, 'g', NULL::text, true, now()) +) AS source( + "Id", "NameVi", "NameEn", "Category", + "CaloriesKcal", "ProteinG", "CarbsG", "FatG", + "EstimatedPriceVnd", "UnitDefault", "ImageUrl", "IsActive", "CreatedAt" +) +WHERE NOT EXISTS ( + SELECT 1 + FROM ingredients existing + WHERE lower(existing."NameVi") = lower(source."NameVi") +) +ON CONFLICT ("Id") DO UPDATE SET + "NameVi" = EXCLUDED."NameVi", + "NameEn" = EXCLUDED."NameEn", + "Category" = EXCLUDED."Category", + "CaloriesKcal" = EXCLUDED."CaloriesKcal", + "ProteinG" = EXCLUDED."ProteinG", + "CarbsG" = EXCLUDED."CarbsG", + "FatG" = EXCLUDED."FatG", + "EstimatedPriceVnd" = EXCLUDED."EstimatedPriceVnd", + "UnitDefault" = EXCLUDED."UnitDefault", + "IsActive" = true; +-- BEGIN GENERATED MNMN CATALOG (do not edit by hand) +-- Source-derived ingredient facts; nutrition and prices are category estimates. +INSERT INTO ingredients ( + "Id", "NameVi", "NameEn", "Category", "CaloriesKcal", "ProteinG", + "CarbsG", "FatG", "EstimatedPriceVnd", "UnitDefault", "ImageUrl", + "IsActive", "CreatedAt" +) VALUES +('397de771-d68f-5d3b-b228-8fc7edd3985a', 'Bánh xếp kiểu Nhật Gyoza dùng nồi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('0e97f23c-8daa-51c4-b958-321d96273b83', 'Xà lách thủy tinh', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('eddf21fc-bce4-5095-9ea4-5b9124784dc8', 'Ớt chuông vàng trái nhỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('3f04540b-4be6-5cc3-98a8-97496c49a0e2', 'Ớt chuông đỏ trái nhỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('5edd1291-8845-53fa-8334-c3b59f8be842', 'Tỏi Bắc nguyên củ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('a8476bc0-3e9e-5b28-8893-0fc8cd95fcdb', 'Sữa chua không đường 1 hũ', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('2168f489-fb6a-537b-8f9e-d15695f958a9', 'Xốt mayonaise', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('b98fe1b1-a832-590c-af49-51ef8bb51756', 'Chanh vàng', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('452953fe-297f-5958-9397-53c694db5fe6', 'Lá húng lủi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('91d32d35-8176-513f-a7c5-aa9fa11cc158', 'Muối', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('53173c43-ceb6-5e4d-970c-bde40e42e7b1', 'nước cốt chanh vàng', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('4b5a9b84-4cb3-51c8-a26c-08c9e15eeed2', 'Má đùi gà rút xương', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('1b6f9a1f-c299-550f-919a-d1602f06c7fa', 'Giò sống', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('5b1f71a2-8d75-5a5f-afee-e05752a582d5', 'Đậu Hà Lan trái', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 'Bắp mỹ', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('d602c301-8b5e-5b58-8ac7-6a6cd5d9a0b4', 'Củ sâm đất', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('78a5e6aa-6f32-5e6b-bfd3-d55d6472a17f', 'Nấm hương', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('7bae084c-9cb8-54ca-ba11-18e407528f23', 'Nước dùng gà', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('b3810951-f282-5566-a028-894730e0528a', 'Hành ngò', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('f0f723c9-56df-56de-b28f-f4ea98a68987', 'đường', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('21256138-c99f-5b07-9b64-cf44702a8048', 'tiêu', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('f649299b-f168-5b1e-a19b-c5226bee10fc', 'nước mắm', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('64314ecf-14dc-546b-b5bc-1259968d520d', 'Xúc xích heo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('771d556c-e0c3-5473-93aa-8afb147eea8c', 'Bông cải trắng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('b91a792f-6742-59de-9557-1c441357649f', 'Bắp trái non', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('5c90d2f0-bbb2-59c1-b6d0-3e6f0f4cdff1', 'Trứng cút', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('1dfd46f5-c134-5384-877e-6251caab3ae7', 'Ngò rí', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('fccb3b78-c4a9-50f7-8e34-8473f9237553', 'Mỡ nước', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 'Hạt nêm', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('99a78ed3-82eb-5862-8011-e56cc4611f01', 'hành tỏi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('7b79c355-b42c-5c96-b95a-5d1e311434a7', 'bột năng', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('123c7d62-aaba-5871-9af0-d3cb3a14c37a', 'Nước tương', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('35a51c14-43c4-560a-aeac-59b5cc0a8483', 'Sườn non', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('3c185637-5bee-5a75-8123-6f6367e1de28', 'Bí đao', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('86eda42e-989d-5587-8f1d-96a2d9416a85', 'Hành lá', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('9a21aa1a-d07b-5a9e-9ee3-a9ab1a44b0c7', 'Cánh gà', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 'Ớt hiểm', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('bb3a0324-6bb1-5921-bc0c-2c2732af144a', 'Ớt sợi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('6c8b1ef2-38dd-59ab-b5a8-d03eb4083c53', 'gừng sợi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1fbaa285-f917-5a0f-a0d4-b0f2efffd56a', 'xốt cà chua', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 'dầu ăn', NULL, 'Gia vị/Dầu', 884, 0, 0, 100, 120000, 'g', NULL, true, now()), +('e4eb3e6b-102c-50b5-8c9c-d5a570624fe1', 'Nấm bào ngư', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('d3d73630-ab9e-54ed-a8b9-af9858954cee', 'Thơm', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('60679900-1fa7-5ff7-90f1-f3916a1fb3f6', 'Nấm rơm búp', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('8a216df6-d053-5fcd-8d46-92cb41669b35', 'Ớt sừng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('37908459-4d3d-5ff7-b53f-b3924b7987e2', 'Nghệ tươi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('6c24f6f2-2b8a-58b8-ab2c-a0ec9d1437d1', 'Lá boaro', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 'Sả', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('ff2b884c-8f4d-5519-a6f0-023a16e62df2', 'Bột ngọt', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('6c1ec9f9-0406-5616-82a9-9082034cc0f8', 'Thịt bò', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('55d9ad68-d865-53f6-9402-b977ed1187a4', 'Cải xoong', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('68cba44d-1217-551c-9cbd-2375419d11ad', 'Hành tím phi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('2b350852-5556-5138-b796-4464b3aef19c', 'Táo xanh', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('4f43076c-9bfa-5b51-a39b-d51a3108911e', 'Xoài sống', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('ea4e2ee6-73f6-52e3-b2f0-cb5fe27219e8', 'Cà chua bi 3 màu', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('7074a6bf-d48e-58a5-be5a-c1fc5f5667ce', 'Lê giòn', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('0b6bae8b-b460-559c-8f91-b7a51d42b8d8', 'Cần tây tước xơ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('03cdcbd3-eb4b-51f3-a509-442fa4f83a1d', 'Hành tây tím', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('372c4c29-c3f6-58ed-8c53-68da41720321', 'Khô cá cơm sông', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('23fd8ef2-e68c-53a1-8b37-16d989cd41cb', 'Bacon', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('546966a8-ce30-5222-a08a-67543bd88f48', 'Tắc chín vàng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 'Húng lủi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a2a72dd1-6574-5b45-9236-e84d1cba900c', 'Vỏ và nước cốt tắc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('7333a6c0-8df8-51aa-9631-bf9e5b4c580e', 'Thịt cá lăng', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('2202f6a6-53fe-549b-9b8b-07bdee9509da', 'Bụt giấm', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('107be8bd-35c9-5d5a-bc23-57c02555f249', 'Bồn bồn', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b022ec51-1f8d-575b-913c-22164c09829e', 'Sả cây', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('94e18e46-5a05-5053-b1be-d463a82c03e2', 'bông điên điển', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4bbb2703-742d-5cf9-be8d-90cfc553590c', 'Cần tàu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('41ca400f-ff98-59ec-9d24-7fa59edb0022', 'ngò gai', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('641f1206-7440-54ad-ad8d-709933c7917e', 'rau om', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('00224658-7dc1-59d7-a649-afa32e8306ec', 'tần dầy lá', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('79f7723f-ee6f-54c6-8f27-d567c20a8457', 'Ớt hiểm xanh đỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 'tỏi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('cdae3fac-eea7-5584-bd4b-b388793468ae', 'Xà lách giòn', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('167bb0c4-4215-53b7-ab97-e97744904e73', 'Bơ chín', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 'Cà chua bi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('a498fd16-14eb-561e-b0d2-c22aea3d473c', 'Thịt nạc vai', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('896ba0b5-e91d-5ebb-8a71-2151a21408c9', 'Tôm sú size', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('8f7466ee-dd75-5c32-86b1-87a9cc3a8ce4', 'Snack tôm', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('10205986-c894-59e8-9054-829ba8404a76', 'Nước hành tỏi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('df864086-81a4-5cc8-bba6-1315b8eb5559', 'Bánh Tacos', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('7f4fdcbc-054b-579a-8128-b7cf5065eca0', 'Xà lách lolo', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('46fc61b2-b94f-5d51-812b-9d7ff15261ee', 'Gà má đùi rút xương', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('ff788795-cf71-5957-8183-eb447f14f59e', 'Hành tây tím 20', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('301eecc8-c8ef-57c8-a19c-f5288d454a43', 'Dầu hào “AJINOMOTO”', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('09f86239-76c0-512a-ad02-f9ff2f45c5ff', 'Bắp hạt', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('189e4982-e150-59bf-aaf2-7227ccb9d61a', 'Xà lách romain', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('99157107-8cbc-5715-97f1-620017377993', 'Nước cốt chanh', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('139178b2-d2b0-575d-b493-d529da2bd5bc', 'Sữa đặc có đường', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('1e27539b-7e79-5894-89aa-45939cd64a93', 'tương cà', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f9198bc3-d1af-5b1d-880f-073562a6006d', 'cá điêu hồng đã làm sạch', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('2a4ad44a-6eb2-5577-8167-b32894631931', 'Dưa nụ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('6448be8c-54c1-5eec-acfa-7285f67d621a', 'Củ sen', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c4acb0b4-be72-5e01-8f29-c21ffcb34975', 'Tỏi tép', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('1580ab05-9658-5cdd-9157-4aeddc092125', 'Thì là', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('dd711f5b-3ba5-5681-a8b5-05908f41e15b', 'đường phèn', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('ffee661f-9e28-5fa3-ac7d-0681e82e6625', 'muối hạt', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('ac6c9c88-b5bb-589d-af79-fca945dbf408', 'Táo đỏ khô', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('31413b05-b2b0-506a-95da-68f83bd570c7', 'Củ hủ dừa', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('d1ab6e4c-acba-5fe4-99cb-4ab205734096', 'Nấm đông cô', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('b0a4b9d7-c6c6-556b-839f-35232eded1ba', 'Nước dùng rau củ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('02f66156-6c1b-5fe8-8c44-9bfde4332475', 'Hạt sen tươi', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('100946ff-f93a-532f-8f89-88461b61d370', 'Mì trứng 4 vắt', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('25a49390-384b-54e7-bff8-710d96803159', 'Boa rô phi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('fa39c20c-5ffd-5cc0-bf07-9758f0f05884', 'Tàu hũ ky', NULL, 'Đậu/Hạt', 90, 9, 3, 5, 35000, 'g', NULL, true, now()), +('e599e212-c4e7-507c-a3fe-9704649a9794', 'dầu mè', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('82b928c3-8c9e-5323-bb6c-a1dd54b74ab8', 'Heo quay', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('73336f9f-85b0-50f0-8b72-32edf62cc08e', 'Măng vàng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('dd37a043-70dd-5ccb-be57-1d629be323ab', 'Dừa xiêm', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('eb0580c8-ccdb-5428-ae10-4ea5c4edf4ac', 'Thịt nghêu', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('a2f8663c-e2a1-5a44-9d3e-ba2c36dd8389', 'Rau dền cơm', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('338b73e7-8557-5399-baaf-61cd9e10518f', 'Mướp khía', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('0f72e431-84b8-5b62-a981-d22b46d20e85', 'Hành', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('961d9b0b-8f66-59d5-b220-5896d4429bfe', 'Khổ qua tây', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c87f05f9-2c07-53ae-9b97-fbecfebbdfcb', 'Gia vị thông thường', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2b1d2730-a829-5f8b-b7df-c09b60921a0a', 'Thịt', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('725e64c6-e003-54c3-b1a3-5c562700b224', 'Đậu hủ trắng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('d5bb3bc9-81ca-5eaf-98ba-911a82fe6496', 'Bí đỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('dcf818c8-c881-5695-a5cd-d191a26d421e', 'Bắp hạt mỹ', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('d8260c28-d006-5fed-ae3d-7c58d437431f', 'Măng tây', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('d14713aa-a676-5433-b306-c7621e347847', 'Chả cá basa', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('3eb11caa-23e9-5047-96e7-eb98fde94d91', 'Hành lá, ngò rí', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('152109fb-25ac-55cc-ad5a-341010f2bb98', 'Cơm trắng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3a23a095-279b-50d4-9ad7-4ef36bcba721', 'sa tế tôm', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('9e7eda9e-2d56-530b-829e-d8e0503f8823', 'dầu điều', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('91b500a5-04fd-51e2-ab6d-50609fe3dddb', 'Mayonnaise', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c0d0327f-6bb6-59ac-abad-c2e2c749d8ce', 'Tôm sú tươi, bóc vỏ', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('05d2fde7-db29-5e60-b0d3-c17466605db2', 'Đọt su', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('48a93238-8bb7-5c60-832b-8312ae4b2c08', 'Bắp non', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('26c97be9-ebdf-5c5d-a2a0-46566514a6ef', 'Thịt ốc bươu làm sạch', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('d7eb4972-ecc9-560e-b85b-13d6b80943ac', 'Nấm mèo', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('a91ed20d-3a8e-5009-b663-94387b94649b', 'Rau nhút', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('53a81b46-70f1-5e29-90b2-98a529ebb018', 'Đùi gà', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('0d9e744b-2cc6-5ae0-8497-e06e00a72358', 'Bọng gà', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('30aab0ce-a3fc-57d2-9dd8-5152c824ea28', 'Củ năng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1a76e495-e8c2-5e3e-873b-7cfd4109adb3', 'Hạt sen', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('5342cdc7-0dab-501f-ac61-fac7d62f9657', 'Gà ta góc tư', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('38e53e71-2b53-56ba-bbcf-2b9ebdbe9b94', 'Táo đỏ', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('be1f13f5-af04-5fc6-945c-8c3493c38f1a', 'Kỷ tử', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('18872757-52d6-535c-ba24-683941c11fbe', 'Tôm', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('9c6639c5-dca8-57f6-af7e-ba76f5366ceb', 'Bánh tráng bò bía 10', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('64bc5f62-7cbe-59cc-bf5d-b14e00d0fbad', 'Hải sâm đông lạnh đã sơ chế', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('5acd8289-3feb-5034-8da4-63150f61c9ea', 'Tôm sú lột vỏ', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('ed51eb54-3dc6-53cf-a660-c7ebbe2b6a00', 'Cải thìa', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('e33dbe29-6989-50dc-9159-768c8500ae5d', 'Nấm đông cô tươi', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('dcc8723c-37db-5879-b9f3-57fde36bbcf2', 'Cà rốt tỉa hoa', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('a0e8fcd6-90bb-5ed2-8fc6-49a25af48f6b', 'Gừng non', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b2d624b7-88bf-5389-9572-25ce188893dc', 'dầu hào', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('fd609e96-97dc-59af-8740-4786d08a852b', 'nước pha bột năng', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('7dc38594-9e93-57f7-8322-d21658edeedd', 'Thịt heo', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('5bdc1d37-00e8-502d-9278-7828fc4d7713', 'Cần tây- cọng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('743d2dfd-279a-576a-8b76-fac82b8bf9d8', 'Hành tây bào mỏng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('558dd7f9-1690-5e57-bd3c-580e91b23323', 'Dầu oliu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('24b4b9c7-685c-5a8d-baa3-e8f6b29947af', 'Hành tím bào mỏng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('f0823436-e0ae-5f47-a5ab-7ef29e92fd30', 'Vỏ chanh mài', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('19cec053-aed7-5719-82c5-b44b9e897f44', 'Giấm gạo', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('ab284a6b-7b7a-574f-9025-41ea4f8cbd65', 'Rau húng lũi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('3a93ebb8-619a-5bb1-a676-871678da3df5', 'rau húng lũi, nước cốt chanh, vỏ chanh Mỹ mài', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('1e3e8fab-c862-5009-ba9f-aadd65e325bc', 'Bacon xông khói', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4d4f8f96-07d0-5c63-8d42-c1616901be27', 'dưa leo baby', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('e58563bc-fbf6-5cbd-8471-f575dde30e16', 'Thịt ức gà', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('2a2111cf-7410-582e-81d2-0c9fdc453128', 'Măng tươi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5716aac3-265c-5ee8-9969-1699861ecbe8', 'Đậu hũ non', NULL, 'Đậu/Hạt', 90, 9, 3, 5, 35000, 'g', NULL, true, now()), +('b064bc11-4b03-540c-8f7b-d7fccbabd77e', 'Ớt sa tế', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('f9e6ed8f-dda3-53a0-a15b-08e978fadac9', 'Nước tương và ớt', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('1e6c0ad3-ee03-5ff0-95e2-072e21b4901a', 'Nghêu', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('a3fc8f88-ea62-56ed-8f96-1f05b9693359', 'Cơm gạo lức', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('8c097782-8f8a-5f72-9fd7-63033f8f37ec', 'Đậu cô ve', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f292282a-5feb-5969-910f-19c8f6e2d10e', 'Trứng vịt muối', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('94987c59-1b1d-56b4-8f38-364e9b3b1a46', 'ngò Đường', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('db2b5fd6-5a34-569d-a56c-d4bbc48eb197', 'Tôm khô ngon', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('79057839-1f37-5822-8125-c087a0abc556', 'Củ cải trắng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('3fa2e8f4-7a57-5d93-9bd4-fc77bc94f39c', 'Bánh xếp kiểu Nhật Gyoza', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2680c5bb-b9cb-5402-a86c-fe3b8f7148ca', 'Má đùi gà', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 'Tương ớt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('622a8844-7e72-5d79-9843-936a0a9dff08', 'Dưa leo, củ cải và cà rốt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('f1851389-83c4-51cc-993c-a39d0d8cd0ee', 'Lá chúc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5e720261-0973-5a91-acc4-d8347d1035a6', 'củ cải và cà rốt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('c7e92adc-13f7-5fea-b171-e1a062e3bd18', 'tắc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ea20da85-a1f9-51f4-bb1f-d1f6220814bc', 'bột canh Ajinomoto', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('997ca425-f8b9-507e-975c-68ddff6b7427', 'Tôm sú hấp đông lạnh size lớn', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('eb4c0cf8-2baf-5904-9284-9984af4fd8f8', 'Bông thiên lý', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e91f2d56-b566-5249-ae1c-388820162cd1', 'Bắp non nhỏ', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('4d223977-a251-5efa-b1c0-1e86aa3e8760', 'Húng quế', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('60abf488-564e-56ab-9aaf-e1c416e24c2a', 'Mè rang', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('10aab5c9-a2da-53b3-b1d1-aa2e2a2fb7c9', 'soda', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('388eee9b-99af-5992-9740-ae4361ee4d4c', 'ớt bột paprika', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('b1d2fc61-bebe-5a1c-8706-64a7cc8fea83', 'Tôm sú nhỏ', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('47f011c6-1053-509d-b4db-7c7ab53c25d8', 'Mọc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b4151b16-e57c-5867-a6ff-ecbeb1e3d3c0', 'Nấm mèo đen', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('763ce2c3-d4a2-5b49-9251-44a10eb815eb', 'Tiêu xanh', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('1d8dc937-8a01-5046-80ad-75fc643c5215', 'Bánh tráng ủ lá chuối', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('55f5ae60-ea08-597b-8be1-1beff05b1401', 'Đầu hành lá', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('3c20858c-ed74-52df-98c9-7b5a1028e0b2', 'xà lách xoong', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('dc1189f0-95ab-52f8-a010-e29e2019e0ba', 'Mực ống', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('3f875012-7423-5136-ad62-f360fc63eb4d', 'Mù tạt xanh', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('30acfb18-f20e-5601-b20e-94bb8a2e0259', 'Bánh tráng 10 bánh', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('19626091-3a65-5951-ade1-37aa3e3b4a99', 'Rau thơm các loại', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('521e5378-73d6-5fd7-9986-0e6b61836fdf', 'lá hẹ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('eed19aa4-8c15-56ec-bfdf-e344e248bdaa', 'quế', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('37a25c66-fb81-5bee-b99d-dd95a19baf07', 'húng cây', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f1d9e516-e993-5c9e-b28d-543a5ef27bff', 'lá tía tô', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 'hành boaro', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('07cc7657-7a21-5e10-8817-8332930aa26d', 'Khoai mỡ tím', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('e8d9cc0e-110c-5121-bc75-b17a006b32ab', 'Khoai lang vàng', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('3fd538d1-5d38-51d6-96e1-09dfa1050c3a', 'Khoai mì', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('0778a2dd-5fca-5fad-bcd8-a25a2d517d7a', 'Đậu xanh cà', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b4c89163-0b87-5b27-be11-5c7ae7909115', 'Lá dứa 4', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('dd4fca8a-943d-5cb3-8ad8-f52fe15ee802', 'Màu củ dền và màu lá dứa mỗi loại', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('53bf142e-9f6b-52ca-835c-1706f796f2d3', 'vani', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c771f986-30a3-529c-8f78-de6152d7d118', 'Gạo dẻo', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('3c55cd24-57da-5e7c-85bb-cd07c591e357', 'Xúc xích', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('7cdbde6a-860f-50a6-81d2-eb0819f2b4b9', 'Tôm bóc vỏ', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('ac87af18-4a3c-59e0-b3d1-f0d700a3c5d1', 'Rong biển ăn liền', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('fb75726c-00ef-52cc-b385-7b0b88edeaf0', 'Thịt chà bông', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1f1dc666-1e72-59b6-8241-0d7d511d2332', 'Mè trắng rang', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('17d1cc25-d28f-5982-9247-c0e9ce4d3059', 'Mực lá', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('8d272d83-ec20-5335-a465-bb7fb17c16ec', 'Bột gia vị', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('161eaeda-bf26-526a-90bb-5a4ffc7afffa', 'Tương xí muội', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e722cd30-5b76-551e-abb4-7d86b33495f0', 'nước gừng rượu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('044a2f65-e063-58be-8e18-cfb020a5d1f1', 'Rong nho', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('9ee144ee-a29c-5570-b84c-07e4a25f2a2d', 'Mì trứng đã', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('d32a496e-ef42-5675-a875-309785ea849f', 'Thịt nạc dăm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2a25ae01-c36e-588e-ac7c-2718a9e78c0f', 'Cải ngọt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('9d91d511-d5b0-5597-b74a-0ba076fba6eb', 'Gừng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('164aaefb-70ff-583d-b5af-4c6e262b64b8', 'Thịt bằm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1a62e92c-89eb-5875-b15c-b3129bff82f6', 'Đậu que', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f2d36159-4749-5c9c-95d7-e6307c768aeb', 'Tỏi gừng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('52969432-55c1-5eb0-860f-4dbc888e85bd', 'Bánh đa', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('55886a17-0140-5de3-95ab-dd355411cee0', 'Nước tương LISA', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('97cd6d90-d969-52a6-b11a-ea9befdcb28c', 'Bánh đa sợi to', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('cac62ffc-2dde-57f6-86e3-9e7fd28c2bc1', 'Thịt gà', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('cd2e6540-c31c-5d4a-855f-a65611cd8816', 'Cải bó xôi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('693eb4c6-fdb6-5ae8-a6fb-0d309e43b2ee', 'ketchup', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4758fa79-916d-5bfe-a03c-98e65b993477', 'Bánh đa đỏ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3fd0596e-be17-56fa-9806-2c1837f95a77', 'Tôm sú bóc vỏ, chừa đuôi', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('06e02b8f-0249-5e8b-a034-6b610d5b0a6a', 'Cà rốt ½ củ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('9de3ef42-d1a0-5ecc-8ea3-85383c1cc033', 'Cần nước', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('97312907-8f92-540a-a6ab-64327b7bc0b4', 'sa tế', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('eee18c13-5a9b-5096-8e09-5b87fb51fafc', 'Cá kèo', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('407dfc50-776f-5fcb-852c-37ae50d5cb15', 'Kim chi củ cải', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('6fb22ddf-4831-5701-b354-e85eada109af', 'Ớt bột Hàn Quốc', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('18d08bf8-b23f-5018-b6a5-c43a9f60a81f', 'Cá lóc', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('2bfe1524-f2c1-5d3f-b8eb-8086143c75c9', 'rau muống bào', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('05df7a56-5cc5-571e-b259-2017f602f582', 'cây chuối bào', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('0f3b0684-99ea-51d8-99e8-c5d43811c5ac', 'cọng súng bào', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('d0fbfe83-7811-5254-a74f-6fbf80b99480', 'rau thơm', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('d6be87b8-1388-5bf8-ac0f-6695f42fb87e', 'ớt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('cf7fa287-4c62-5caf-8393-001028d03360', 'Bắp bò hoa', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('90a20918-0a85-5260-ad52-2299cf062d90', 'Bắp chuối hột bào', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('f5c09025-f961-5d90-af3a-d4876989dd2f', 'Mè rang vàng', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('cc58b9c3-452d-5b17-8bbd-322a66ce363e', 'Sả bào, sả cây', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('1718fb1c-26f3-5881-bec7-261f775eee52', 'Giò heo trước căt khoanh', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('cfae2cf3-0d64-5f07-8f8c-ccc5a9dba220', 'Cơm dừa nước', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('e94fcd73-2279-55bf-8ecd-8a5408f6a1cb', 'Nước dừa nước hoặc xiêm', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('67fc3363-196c-5580-89ad-acbd4fd34a0a', 'Quế cây', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('17dae5f7-2ae7-503b-b278-03c0de0ab8a9', 'Tai vị', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('290b647d-78f3-5dec-b039-e4e4f2af6146', 'Lê trái', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('de451944-0e5f-5b75-9b9f-b4e4173c6821', 'Tỏi lột vỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('f9d1c4ce-6457-575a-9bed-5d716044412d', 'Hành tím lột vỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('82433693-c8bf-52c7-953d-94567db3cb05', 'Ớt hiểm khô', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('4d9c385b-f753-5778-be03-831241b8d5b7', 'Gừng lát', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b94f8a61-5f4c-555c-a487-49b9a8ef4412', 'Hành lá sợi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('4fdd6404-34db-594e-bc63-d22458563d72', 'ngò', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4bcfb855-3d4f-5fbc-80ef-9cbdad9b18a3', 'ớt sừng sợi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('7d02ecc5-446a-5d94-a1cc-f2945969389b', 'nước tương + tương ớt', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('300b9a61-bd25-5035-8b3d-f3b094c3dca7', 'rượu trắng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b871d266-a741-5a20-9fa7-215699270826', 'Thịt giò heo', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('2d2141b3-b474-5126-9f88-857d504c7d16', 'Cơm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e3f849a2-d7d6-50e3-87dc-d520aaa212dd', 'Xôi 4 màu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('677e06b4-2913-50ac-9d18-1a37804ebc1a', 'Lạp xưởng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('9bd7d8df-ac2a-57c0-a1a7-4ef831253120', 'Lòng đỏ trứng muối', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('0f91c86e-fc36-56ad-a708-373c3f07fb0e', 'mè trắng', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('237b96b2-13a2-5b46-a4b6-48ff36e81ba6', 'Trà sữa Blendy Royal', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('0146cccc-4a1e-5824-b2e3-6c58d727a317', 'Syrup đào', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('84973830-3489-56c7-a4af-b86965f81296', 'Đào', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e91f0f61-d618-5236-813a-f96546c23e55', 'Dâu tây', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('06f61a87-5c83-54e4-83f8-ec791b7b5ebd', 'Đọt húng lủi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e885a4ab-d856-5b71-9312-11c823ebcb84', 'Khoai tây', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('62c5897d-1a02-5106-8a32-ec9fa5ed3703', 'Đậu cô ve Nhật', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e8fd0bba-5a75-5ef8-b71f-30f7e810ad9d', 'Ngò tây', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('342ef09b-cc0c-515e-8d6e-b8f45e39daf0', 'Xà lách dòn', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('ad701cb7-ec79-5b26-8866-792eba06a7b3', 'Giá', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('740a78f2-15f7-5b73-81b6-56c0eba72bcd', 'Cá ngừ phi-lê', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('baf251af-aa45-500a-9dc1-375cb6d07c6d', 'Ớt ngọt đà lạt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('1b71e611-4ca2-51cb-8fa6-2abbf67dbbd9', 'Cà chua bi nâu', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('26e4894f-a852-5ef0-9041-c6516a7ca1f4', 'Thính gạo rang', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('43efa8ab-7c71-53cc-a615-e7fcd2953d59', 'Xà lách iceberg', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('cff07683-f25b-5db5-b0a1-fadf7016f351', 'Xốt mè rang "Aji-Xốt"', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('a73c9fa5-ca63-50ea-a11e-bad792c9c9bb', 'Gia vị nêm sẵn Bột gia vị', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('b2692899-d6be-5d7e-a475-1b1ca2255236', 'Cá ngừ', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('9cbabcae-f6ae-5631-8508-d53587721693', 'Thịt ba chỉ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5bab5c87-2a0f-5c63-9ac3-8ef89d682fcf', 'Thơm : ¼ trái', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('75429ba4-6e63-5750-98dc-0047cf458b03', 'Nước mía', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('40f7e0d6-c2c3-5b7f-83d4-6f980ccdf46d', 'Phi lê cá ngừ', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('b8724dc0-7281-5b6a-b7f9-3c281e3fae8e', 'Ớt chuông vàng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('d3fe4466-cc31-5399-a49c-6b0829a6ca56', 'Ớt chuông đỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('f2da5201-befe-5315-a03b-119ab86c15d8', 'Tỏi củ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('510c2a6d-805a-57d5-a85e-b6c1ab73b1cf', 'Mù tạt vàng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('da18f0fd-cf75-58fd-a651-8336ecf2f4da', 'Bơ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2094b9c8-eb1a-5c56-bae9-effbc837baab', 'salad', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e491ff75-37b2-57af-b3bc-75300ef2a92e', 'Cá đối', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('b73ed546-00f3-559b-a3d1-231b45f961ed', 'Cải chua', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('74679030-9d8b-5fdb-b4d8-b0aac30f3fa0', 'Cá nục tươi', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('5f9fca18-73fd-511b-8e4b-c72573da5510', 'Thịt ba rọi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('403fd5a5-d451-51ae-9d43-745f3c1daeb0', 'Mía lau : khoảng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('41c6177e-4ab7-5db4-b88e-95911b643501', 'Nước màu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('8aefd378-92f5-575b-8801-511d610bb7f6', 'ớt bột', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('76ef9879-a623-5ca5-97cd-98f3b8c1ec5c', 'Măng chua', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('367f8ca2-1506-5d82-82a6-bc44c21508a3', 'Nhộng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('197fd433-4561-5175-9f04-35ba4ae89b68', 'Gà ta', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('94f84007-456f-5bf9-b762-d679cbbe7d0f', 'Lá giang', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('60318bd8-9102-50a4-9b01-1fca66851017', 'Cà chua chín', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('6d4a293e-108f-5937-be85-6a3a2c4bba88', 'Đà điểu phi lê', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('fb2a516d-41a5-552e-aa24-b9b25b2d2796', 'Bắp cải trắng bào', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('646b8a0b-5634-5896-a217-b82ebcbf30f6', 'Lá hương thảo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('74f1fb38-e73c-54d8-bda6-2a9354f7487c', 'Mứt trái cây', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('0e1e243f-23dc-56d2-98a6-813333856f7e', 'Thịt đà điểu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('204d133a-f19b-5613-ab44-417f2c78b984', 'Lá cách', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('90d8776a-ba41-53e0-9595-96cc5e769e32', 'Ớt chuông vàng, đỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('b82b90fe-4236-581e-81dc-404daa4cd0eb', 'Nước cốt dừa', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('5879d8c9-2dd4-55c2-bd85-82652bd6e510', 'Đà điểu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ab2202d8-365f-55db-9a4d-b56e64c5f66f', 'Ớt chuông xanh', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('7f9546bf-6a80-5279-b5d0-a8373122aedb', 'Hành tím và ỏi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('2702db29-873c-52e7-96b5-0eab30700954', 'Sò lông', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('289c9228-be9b-5cca-a1f2-c8c0b4b741ff', 'Rau muống', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('69b6f811-a7c0-54d1-aa6c-caed1fbad8e0', 'Kiệu chua chẻ làm 4', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('de55ca39-6e1f-596c-9b3f-9fc32c20e5ff', 'nước cốt tắc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('71c3ed0f-ca07-5730-84d0-cbfe5370128c', 'Rau quế', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('874a0b93-963e-5d37-aa0d-9a41df35b4e4', 'Nấm linh chi nâu', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('d2787d48-2246-5e61-9493-27fcd4841752', 'Nước bột năng', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('2777138f-7eaf-5934-8757-426d5ee37d7b', 'Thịt sò lông', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('6bc9309c-06e9-5508-b6e7-d67a02a134de', 'Nước dừa xiêm', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('5a62ba4e-40c3-5969-afbc-21dfeff8e81d', 'Bắp cải tím', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('6d1a67d3-a2ff-5c8c-afd8-a193ab62342e', 'Đậu trắng Đà Lạt tươi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('6f834874-ecea-5bf3-8147-38ec708d6432', 'Lá quế', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ce10d851-d176-5e0f-bf03-d4f87bef2949', 'Tôm bạc thẻ tươi', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('2de3a426-762c-526a-9b1d-149fbbb0bd7d', 'Mực tươi', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('5b1e8422-1d54-5870-a4ca-ed4bac11eda9', 'Tép', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1689f7c0-466a-5cca-bc9e-2ff58a49c080', 'Nước cốt me', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e1cbd2e6-a14d-5cf2-a16f-dce936b64b3b', 'Tỏi phi có dầu', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('1ff1af0f-b06c-5ea6-9af3-3354e1841f65', 'Mì Ý', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('b0806f56-ac14-57c9-9784-59124afc3463', 'Ba rọi xông khói', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c2b346b3-a51b-56c0-a284-2122cdc4de08', 'Nấm đông cô tươi, nấm kim châm, nấm rơm', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('c00f36a2-52fc-5426-93a8-5f6d8fe54794', 'Đậu hà lan', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e6403ce2-84f5-5688-a7bf-0d5c465c8875', 'Rượu vang trắng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('216df387-ec64-5ecc-9345-48865dcfbae9', 'Vịt', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('4af2dbec-dc38-5f7d-bd85-48280ab0cbe1', 'Chao môn trắng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a7862dcc-da60-5970-98b3-3d2a131c6ee6', 'Thịt bò phi lê', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('aad904c3-fb83-59df-8c20-bf616e25431f', 'Đậu cove', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('549f7baa-90cc-5032-9f4d-9aed4396c92b', 'Cần ta', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('30badee6-e8cb-5b8a-9824-15ab5b3eea17', 'Đậu đỏ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2ee6c53e-296a-5719-a2a8-5d7367ea2ac7', 'Đậu cove Nhật', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('560a34d5-02db-5562-96f5-d442b4a374f3', 'Cam vàng', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('a56bece1-24f5-5615-b990-ee8b353730d4', 'sữa đặc', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('3e63e197-b56d-5143-af71-5d6486473e5e', 'Bột mỳ', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('69ed60d6-7135-5a1f-b54a-a28cb4dc39b7', 'Kem tươi', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('fa2b4ae7-2dd3-5630-a4a6-d87432b0eff4', 'Vani 1 ống', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('944f9c8f-c29d-5674-9c46-3bcfb4ffa93c', 'Mứt dâu tây', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a3e706da-290f-586f-85a9-5e90efe3b255', 'Kẹo màu trang trí 1 ít', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('098ea6e8-4c41-5c91-9144-80209178311b', 'hạnh nhân lát', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c7fa6b11-30ef-572c-9db6-2656a9e3626e', 'Giò sống chay', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('a06f81e0-9ff3-5b61-8121-0a1e0a765b43', 'Tàu hũ ki lá', NULL, 'Đậu/Hạt', 90, 9, 3, 5, 35000, 'g', NULL, true, now()), +('b6332786-b190-5600-871e-e582de462c31', 'rau sống', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('6ad3e5f6-5012-5f46-bb84-dec9c5f3ed2e', 'nước mắm chay', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('dd16ca4a-fd06-512e-a775-5737e49c7913', 'Mực ống nhỏ', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('d4475c8a-592a-5118-8358-2de506a90a19', 'Lá dứa', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('7f7e1e35-9cdd-5d21-b4d1-2c1f1b453314', 'Cua gạch', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('bb527379-88e9-5ef5-8fc6-bc210accb6a0', 'Bơ lạt', NULL, 'Gia vị/Dầu', 884, 0, 0, 100, 120000, 'g', NULL, true, now()), +('8cb7be9f-ec3f-5e08-8cf1-5d09e19e8a57', 'Sốt cà chua đậm đặc', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('15d93fa5-b5e7-57d5-a029-adf917963f48', 'Lá oregano', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('376add07-0f9a-5e10-852e-fb85e486461b', 'Heavy cream', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c0536f60-8c39-56fb-9b16-9b175be07f36', 'Phô mai parmesan', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('bc8970ff-39ac-50b4-9d44-7946eb08e491', 'Nước dùng chay', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('30009462-35e8-5edb-a607-57b5f6368893', 'Me vắt', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('6e92502e-7e8f-599a-b5d1-be201fd7d4cb', 'Mì Udon', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('ace90350-53eb-5917-b670-aa1f4ebf92b6', 'Thịt bò chay lát', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('c5977be2-71b9-5d44-860d-a9bad674c32b', 'Cá viên chay', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('03352f39-1d36-5eb3-b23b-43824e253fdc', 'Nấm kim châm', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('b73f6d06-c8dd-5129-a4e9-2416738f9914', 'Rau húng quế', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('85491f42-8a26-5869-bad6-384d7f1b6036', 'hẹ lá', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a6ac6550-f8e7-548d-af3c-ec9bb3c5e7ac', 'rau tần ô', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('af727474-2609-50b4-93d1-fa1932ad4ad8', 'lá tàu hủ ky', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('d4009935-6483-51ea-ae27-50887303e5a7', 'Xương heo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('bb2be091-a733-5319-a2d9-751f72620738', 'Khổ qua rừng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('246f0677-2ffa-5dc7-8247-5ce8a00ccd66', 'Cá thác lác', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('7490b618-67a7-549c-81b5-52de2aa9658f', 'Cọng thì là', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('d89ad7b7-4734-5b29-bc15-671bd5491023', 'Thịt ba rọi xông khói', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('637ee269-d869-570d-9078-aa02ab43c3fb', 'Phô mai mozzarella', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('bbaeb57f-fd4d-594c-ae62-890160a7b51a', 'Sả non bào mỏng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('566ead10-5696-502f-a154-a7352c141c3d', 'Hạt điều lạt tách đôi', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('2c578d09-533b-5817-bfa5-2a857eee0cab', 'cần', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('562b3c6b-cbe5-51ac-a395-106a12c3bb3c', 'Lá chanh', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('ea44af36-bee4-50d0-8bb1-eab63f2c5571', 'Bánh mì', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('e1071dc8-2c05-52ed-8d41-74c030ac4986', 'ngũ vị hương', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e3e12474-62a6-58d7-97eb-ef9631f10697', 'Lá tàu hũ ky khô', NULL, 'Đậu/Hạt', 90, 9, 3, 5, 35000, 'g', NULL, true, now()), +('d578f3c2-c537-57c0-af59-f356db677374', 'Nấm hương trắng', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('1f269e0b-5d58-5366-8ef4-2ae62201dfd3', 'Hành boaro bằm', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('71e11e1b-3b44-5c51-b066-a26ba5a70c37', 'Lá rong biển', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1b8928d0-c525-51e9-b6e8-383b3bd5f2b5', 'Cọng ngò rí', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('261c6e12-807f-5d82-a3ec-5b108d497e3c', 'Nước dừa tươi', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('92d13717-bffa-5a67-a80f-03fae90e577a', 'Tiêu sọ giã bể', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('24e08a1c-ee21-529d-ba5f-036a78918ce8', 'bột ngũ vị hương', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('565898d5-15d7-53f8-84ad-d90df61f2e97', 'bột bắp', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('4f7f4bc6-2691-57e6-abeb-c4c021189d6b', 'bao rô', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2434416d-0031-51fe-9db4-6faf9dbb7a81', 'bún tàu', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('64f25371-ef62-59da-8a6a-8252cf96b96e', 'chao', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c3244a02-741d-5d18-bb76-240bf8171d70', 'màu điều', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('eef4a404-7275-56d1-81e2-15e0d4bfbde1', 'Da bò bía tươi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ab7c43bb-ad85-5979-be2f-e636c54f14da', 'Lòng đỏ trứng vịt muối', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('e5f9bddc-28d0-558d-8508-9e77ccf723e6', 'Củ năng gọt vỏ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('86f21230-4b6d-5f79-99fb-9126d4572cc5', 'Hành tỏi phi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('d5009eea-86e3-58e2-adbc-e2e580fd50b3', 'Cọng cần', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f14284bc-55bd-50a8-96ad-67594583c639', 'Ớt tabasco', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('133e98ce-ffa5-54d5-a022-f4b1503d49d1', 'tương ớt chua ngọt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('8e786e4b-f103-523a-b499-0770ddd8ef50', 'Cá khoai tươi', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('9a7cf327-db40-53e0-a1e0-d0efdf9abac8', 'Thơm chín', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('683df33b-d5d4-5157-96fe-dc1a056f3bbf', 'Cà chua lớn', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('67774958-0c1c-5cb9-baa9-026faadc510b', 'Ngò om', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5017f906-c882-5d86-8437-14b9e783c7bd', 'Thịt vế cua', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('ba98e431-0309-558a-a5ff-cbe3810b3e1c', 'Cá lóc bông làm sạch', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('b4213064-6072-598a-9cb7-bde3a80717d1', 'Tỏi ớt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('7d314c03-f3db-5e0f-af59-d731671142b3', 'Chanh không hạt', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('b39c351f-b92e-5e2a-9220-b4c51e24684d', 'Cải con', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('6b1c6e79-efc2-58d7-b588-27f32c3c1ec1', 'Bắp cải', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('79efd86a-6394-5a8e-b9f8-a0b7d5931ae0', 'Khoai môn', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('774563e3-64dd-55d4-9b35-5110b4a4b732', 'Ba chỉ xông khói', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('fff979b5-3525-5cf7-b3da-c44fbb8b1932', 'Tôm đông lạnh', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('bf3530dd-26d2-5597-a0bc-c61825ddbbd0', 'Cá ngừ khô bào', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('0ea82148-adbe-5fca-8e11-b60caae5401d', 'Rong biển', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3ffde083-de57-5e0b-aed6-e015e442d36c', 'Bột mì', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('d0483b58-ba0a-5892-abaf-f45ea5356661', 'xốt okonomoyaki', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('982b7bc8-7e78-5caf-9f3a-304ba4dc2fca', 'Thịt bò nạm sườn', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('d63c24c4-d607-5d62-b1f0-e80096546ff4', 'Cà chua chín đỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('2a3a30ad-da89-5a03-9aa8-527de4995181', 'Cà chua hộp', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('b206a08c-f72b-5173-9af6-ac76b1b0ff92', 'rau ngò gai', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('e845c210-e74a-5695-8e6c-de726bedd8e9', 'Rượu vang đỏ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3eab0744-8bb5-5885-be4e-4a328e682c4e', 'bơ lạt Muối', NULL, 'Gia vị/Dầu', 884, 0, 0, 100, 120000, 'g', NULL, true, now()), +('9a61c2b5-63c6-5d47-b42a-2c823a6ee202', 'tiêu hạt', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('1c3a23b2-7c40-5ad2-b1ef-c24e2515e956', 'Nếp cái hoa vàng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f9fec473-971f-55bd-8f91-daece04470d7', 'Xá xíu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('0595657d-790b-5c3c-bde1-d2637bfb2263', 'Tôm khô', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('1168611c-f633-546f-8f57-bb6e64d5554a', 'Sá bấu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('274170c8-124a-5427-912b-b610a6a70a23', 'Trái dành dành để lấy màu vàng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('af2bc91a-1e49-5c64-97c3-866397e23213', 'Hành phi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('5e4fef89-6a79-5c04-9c4b-6e50b4ef8b41', 'Hạt quinoa', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('a20f5511-494b-5e16-95b7-ce0701181bb8', 'Đậu gà hộp', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('e99d4001-8d09-5d01-a0e1-cf3f2752d9bd', 'Xà lách crocket', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('1cacb40e-f546-5ac4-b592-7eb238cecff7', 'Bánh tráng bò bía tươi', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('ee8110f9-11dd-5afc-914c-27723fb6e333', 'Súp Miso', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('603bbd6e-e098-5b6e-aa2a-9a6e189cd64f', 'Đồ chua Nhật', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ca64366c-06f4-548c-b824-c9e322532470', 'lát chanh', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('cd06c615-449f-58db-8779-b62195cfc3b3', 'tương ớt/ tương cà', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('43434895-2b8c-59a2-8df6-67137d7b9a47', 'Nạc lưng heo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c67982e5-41d2-5e27-b4d5-6ac379d98601', 'Mè đen', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('ba3940bb-4b77-5d74-80cb-a42462a155e3', 'Bột cà ri', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('49c0ae89-9790-56d9-b3b7-0e2cefba6262', 'Nước hành tím', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('eaf1ffa0-44d9-5213-bf92-f14c9ba83da1', 'Hạt nêm Heo', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('6d1d4481-bae6-5af8-a86a-525b20f38c1f', 'dầu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4805aa0d-67ee-5455-8d4e-426993970108', 'Cơm dẻo hạt tròn', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('b6d42369-8cb3-5cdd-9eec-0a017fffd8a6', 'Lá rong biển sushi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('18e626bc-96fb-5559-a2e5-de1335d52ddf', 'Phô mai', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('351d895c-eaa9-5404-aa02-4a156cb9f483', 'Đọt lá quế', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('51021484-f4b3-5d82-9678-a84821183f7e', 'Bánh mì sanhdwich', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('2d1915f5-4d61-502f-b0ef-858f630e82b3', 'Sườn non nguyên tảng', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('0beaeb64-12ff-5d1f-8bba-c5a6fd242079', 'Thịt gấc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('283ed961-3d2a-50e7-a293-6d3e09be8e31', 'Bột hành', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('038b9e57-c78d-500c-a529-c7119af3156d', 'Nước cam vàng', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('dead3bbc-2abd-5944-bc62-13eb3972e985', 'Vỏ cam', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('5368ee26-d352-52fb-b552-47575574ece4', 'Salad dầu giấm', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('288e2c53-d0ac-54c7-bd51-c3216933933b', 'Thanh cua', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('775745eb-af9a-5af7-909c-49d3585be406', 'Rong biển giòn', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('81f504a5-b42d-5e0f-bf6f-bb33cebbb593', 'Xà lách Mỹ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('22049415-0e05-5c67-89e2-76ec815819dc', 'Cá hồi file', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('5c9f0cd4-9133-5599-b2b9-cb23f64e7bef', 'Thanh long đỏ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('dc397aa1-aee4-5d5a-8ba0-5f384e92d98c', 'Chanh núm vàng', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('626b0f6f-d701-5c63-bd4d-ce664d6fac7b', 'Cá hồi', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('526abffe-e08a-52ce-afef-b9f45ec99ee8', 'Bắp mỹ hạt', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('a51d0788-4ff5-538d-8719-9c54387b6af7', 'Chanh dây', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('679a3e05-1ba1-5eb0-b224-54b3479496ef', 'Tiêu đen', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('b7eded36-191d-54f0-8099-3c6bf43a22e9', 'Thịt bò file', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('b1f10871-8e53-5ea5-a308-22481aed78e5', 'Táo', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('cb3f4e5d-3359-5345-9bc9-ff725d2e08f2', 'Lê', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('39017257-e1ad-5e0f-b64e-72aed5aab414', 'Bánh mì croutons', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('8c0c2675-bbd6-53a0-8866-ba8a18cd79e6', 'Đậu rồng non', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('efeb23c5-a0a9-5b89-9374-900157422667', 'Xà lách carol', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('90b7e33a-9c83-50fb-ba16-b472b1266893', 'Tỏi củ/ tỏi tím bắp', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('03e78404-c903-5e9a-ad2b-5dd137c65eb6', 'Hạt điều', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('47916239-0e29-598c-b01a-4687f4c52475', 'Bánh phở', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('c8452033-3b19-50a2-abf5-881882d59aed', 'Thịt bò fillet', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('4c3dbc44-6156-5901-93a9-e0f1b29b2f73', 'Ốc hương', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('d1f7acce-5d01-5268-a93e-53dc345fc4e7', 'Nui ngũ sắc đã', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('aeca23cb-829e-5011-9483-af8a826e6429', 'Nấm đùi gà baby', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('f6c7bb7a-c96c-5a9f-ae0d-0546c6bb4ba9', 'Nấm lộc nhung', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('bf54e119-5ab0-5b6c-b2d4-f8f15119bb2f', 'Đậu đỏ khô', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('d18203ed-13ea-59ab-8859-056331896798', 'Boa rô', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4e706f33-b81b-53ab-b88a-d3bc03c1a8c2', 'Hạt nêm Nấm', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('b84ac3c1-2460-5abf-ab3f-264c9c61d46e', 'Dầu hào chay', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4acc893d-05d8-5346-9fe4-1eedd96fcf22', 'Nước dừa', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('54128f95-7235-5a83-8a38-20e49c986645', 'Socola chip', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('0dd3040b-d8dc-5d59-a885-7601278304da', 'Xôi lá cẩm tím', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('be6eb687-a42d-5d28-909d-b79aca852000', 'Đậu petit pois', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('7e666b30-7a9f-58c2-8f0f-23d05b3f6b35', 'Cần tây', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('00223bd2-e82f-5f62-9159-d1b76bfad812', 'Chả lụa', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('ae7b4979-1e04-5b16-b450-5bd36c7e5453', 'ngò ớt trình bày', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('b30db8fd-855d-5155-94a8-b3bb057092d8', 'Thịt cua rỉa', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('9cf89ba0-7d95-5d7e-910f-bf95008956cd', 'Cần tây 1 bẹ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('c27eef97-5820-5a92-9eb7-afe0c31d4032', 'Mì vàng', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('973ecfb6-692c-5343-9029-40bd789b3782', 'Cải ngọt / cải thìa', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('ddda7b85-32b1-5d4d-9516-237f59f6e5d8', 'Mì gói', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('bdab64ef-8278-5e28-b96c-95704f7608a8', 'Mỡ heo', NULL, 'Gia vị/Dầu', 884, 0, 0, 100, 120000, 'g', NULL, true, now()), +('203070af-4b7c-5c52-ae90-57f184006098', 'Bánh xếp Gyoza', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('19bbc85a-41dd-550c-a164-67e4c48503d6', 'Mì ramen 4 vắt', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('39e00b7a-7324-5687-b6da-3d4c39166f83', 'Bắp cải trắng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('2247aff0-ca19-5ee6-b6b8-f3b2efda970e', 'tương Miso', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5f645a79-57dd-5dd9-82d5-dae605868f68', 'rượu mirin', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('27368730-f1ba-5055-8c22-f06681982d64', 'Sườn chay lát', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('0665943a-9e13-5276-ac4f-49c0acc7e2ac', 'Cà tím', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c0975535-cf50-5eb6-8fb7-e51777ac4417', 'Mắm chay', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('08c70840-4abb-582e-9702-dd45e6b4f5d7', 'Đậu rồng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5887f4fb-d3d2-5861-91d2-9f2ed680370a', 'rau má non', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('2c89e098-82a5-5542-af13-20707de1df26', 'rau đắng đất', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('87b78424-2278-5646-ae9e-1017c9b18a33', 'rau dừa', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('f4c45dd4-6088-5762-b03f-7b07df9a99ac', 'Khoai môn cao', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('c821cab5-99d4-5d2e-852e-6050c8375fa2', 'Đậu hủ bi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('dfe4defe-7de5-5a7d-b571-e8f6161f25cd', 'Sữa đậu nành', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('deb0eef5-7216-51ca-a2e1-c36844e5f907', 'Bún', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('2eb9b0fa-616c-558e-a3b0-b25e772bb295', 'Cải bẹ xanh, rau muống, bông bí', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('c08ef5ed-6848-54ac-9b96-e23a570ce919', 'Blendy Trà Đào hương Cam Sả', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('458b0ad2-4e8e-5fcf-8d7a-d563ef641539', 'Blendy Trà Sữa Royal', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('1852107f-7e3b-56c3-8515-89dd41c241b5', 'Kem whipping', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('a2b33611-915b-5571-b554-0b4d61a45097', 'khuôn kem có que gỗ)', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('6ef4c0e7-dccb-5e7e-8d6d-d8e77ee000f1', 'Hủ tiếu Sa Đéc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ceb574fd-bb16-51d1-9ab9-ff545864258a', 'Tép rong', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c9930b83-7899-57fd-aebb-6ada2dc60e82', 'Cần tàu, hành lá', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('a3197cbe-1ad5-58ab-bc0c-7e338261a145', 'Giá sống', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3a9e3fc2-0aeb-5d27-87a8-c56bae206608', 'Lá hoành thánh', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('36044cfb-1667-5625-9982-0a1b41f3a316', 'Tôm thẻ', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('5e0e50c1-1eaf-53e5-937a-7e2bdb1d6cac', 'Mì tươi', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('6a6e9965-b1d7-577a-ac3a-5010a7e40aa0', 'Nước mỡ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1a314bd4-61c1-5a61-b1e3-f0dc7fea88ba', 'Mỡ ba chỉ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('964e36c0-5e03-5c54-974c-8dd2eecb35a2', 'Cải xoăn', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('96ce5f09-806d-5d70-8075-29f5ee2dcf33', 'Ca rốt baby', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('27e27737-581e-50d3-9794-e4d25e4c2041', 'Xoài cát hòa lộc', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('271e387d-fec5-58d0-9f28-81b8dafa72fd', 'Mayo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c2e8872d-d4d7-5931-a76f-55779c8ae614', 'Gạo', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('09e8d049-f5f7-5237-825a-867d81e049a8', 'Rau củ đông lạnh các loại', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('6b6d3478-c6ea-5a59-ad81-b339d844074e', 'Xúc xích xông khói', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('75241a41-9d99-5e76-adc0-48a50b364e95', 'Nước tương giảm muối', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('d0a8304d-4d13-5095-9317-08328ca04c85', 'Thanh cua đông lạnh 4 thanh', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('de32fe32-80df-5cc8-8271-3d18d9088636', 'Gạo tím', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('973575c1-c353-5592-85a2-a7a5040a8b71', 'Bạch quả khô bỏ nhụy', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3d7842c8-c0ba-5ec9-9376-68a9578b3444', 'Đậu pois', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('8abaac01-8d35-5524-818e-c5b7a22f656f', 'Cà rốt hạt lựu', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('72ddd845-7697-51f7-9029-16df74b3a929', 'Sườn chay', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('7248883b-832e-5f90-8d99-7cea0854c072', 'Sữa tươi', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('5c198382-665a-51b9-b6e2-507489107042', 'Tôm thẻ bóc vỏ / tôm đông lạnh', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('44daddfa-6b69-5457-ad59-9c0d4df64a84', 'Bông cải xanh không lấy cuống', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('4b3ad42c-8632-57fa-9310-0078d6afad0f', 'Bắp mỹ vàng', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('e8398483-40c1-5610-a688-bbe877f565d2', 'Trứng gà 2 trứng', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('0ace680a-5f4d-5ef1-ab4c-06225bbef2dd', 'Cơm nguội', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4a3f2c69-e7ff-5a07-b0d2-22da8b5b8c2c', 'Trứng cá chuồn', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('14c8a225-c702-541c-9c17-b591eb9f0b49', 'Bánh tráng bò bía / vỏ bánh tráng cuốn chả giò pastry', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('6525d058-32fa-52e1-8bd8-9153a14c18b5', 'Thịt hàu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b1d542a3-4740-5c3c-89e5-c4fcc56473d6', 'Trứng cút 10 trứng', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('787134df-5dbd-5188-a3ee-8ca10669bad2', 'Cá dứa 2 khứa', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('2c615779-c65f-5246-9bde-17690884776c', 'Cọng bông súng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('50417267-f38e-579b-937a-07dd7b41bdb6', 'Nước me', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('bb76d349-8d68-5aef-b586-4cceedd93fc8', 'Đậu phộng rang giã nhuyễn', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('fbd16485-f749-5246-808b-5adc5e361503', 'Tương hột', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ce4c63d5-b8e9-55ff-9588-45d2195a1c92', 'Sả cọng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('7c6d5294-e1da-5ddc-907f-030322abbd3d', 'Đường, tương hột', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('b9b9a180-4df0-5b6e-a2b2-1daed4e36aa5', 'Tôm càng', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('e1f523d1-956f-5786-be5b-93285248593b', 'Bồn bồn tươi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a778c04b-d4ac-5a47-849e-390e817874b4', 'Nước me Nửa chén', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('33923ff7-3942-50ca-9237-b00a5b23ed14', 'tỏi phi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('7c4dfea3-30a3-5116-977d-f5b87afa153c', 'Cá hồi fillet bỏ da', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('0881dc7b-0907-51bf-9cf2-0179084ea4a2', 'Gừng củ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('506b7b48-1a25-5e6d-87f9-a345ebb45f17', 'wasabi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('42da84a2-6542-5f80-9f16-07f2238e4d3a', 'Phile cá điêu hồng', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('9fb90ef3-e2c1-5e65-8965-69fbcd2376c7', 'Lòng trắng trứng', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('d670ecbf-b24f-5b0b-82b2-d4578feba00c', 'Aji Mayo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('72323f09-1484-5581-ac71-5bcbc042dd56', 'Lá chanh Bắc/ lá chúc', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('0f7bb485-05a8-5fb9-b2a3-f3ecb9f7a538', 'Thịt hến', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('8eac82e0-f30e-5265-99e9-b9fa4c254698', 'Cá thác lác nạo', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('62a49695-09af-5494-8650-c4cf5551d9a5', 'Mỡ gáy', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a6d272a4-5c80-5f6d-bcd6-463e6092b9d3', 'Tiêu xanh giã dập', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('7567abf1-f0c0-5fff-b414-ee5be6bc8f98', 'Giấm', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('b932b410-9496-504c-8f1d-ed9868c15331', 'Đậu phộng rang giã bể', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('234e57c7-21c6-5053-9421-084574249a27', 'Trái lê', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2d1c8a02-22b5-5384-843b-fad5ccd8fda3', 'Trứng gà ta', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('3b48d889-3d0e-5f49-9bb4-3505dde171af', 'Nước dùng heo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3ecb33c9-77f0-5922-85e7-17d568e6119a', 'Hỗn hợp rau củ đông lạnh', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('a66febcf-1f43-5fd1-9807-6a613d00b209', 'Phô mai lát', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('bc6d5018-8def-5a19-a995-e9edabe617dc', 'Bánh mì ổ', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('ac81d1e9-8e6c-51a0-9d25-769606f4e921', 'Pate', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('23d2f15d-4fc0-518e-8770-dbbc5cb881a5', 'mỡ hành', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('a121b4bf-0fd8-5457-bcfd-dd57464fff34', 'Tôm sú tươi', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('4b8aab89-cdc8-572e-8052-f43a69b2e78a', 'Tôm viên', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('cf6b3000-929c-5350-ae1a-1e38fc86a71e', 'Hạt điều rang', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('e3ac931a-da22-5606-a475-47a0b80a07ee', 'Sườn bò', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('4c3ead82-434e-5b54-81b0-15f5010b1ed4', 'Rau muống, bông bí', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('b5536bed-4860-5fd5-8e4c-f0b7d8e6be95', 'Kèo nèo, bắp chuối bào', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('242aeea8-c0c7-5190-a0e6-92c3e49ae0a3', 'Nấm rơm, nấm đùi gà', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('00bf9726-71aa-5a08-ac4f-d4163cb08bb4', 'Nấm rơm', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('1c18a717-6327-5563-a0c5-361511d83208', 'Lá rau chùm ngây', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('1d206061-41c5-542f-9bfa-643881ce9976', 'Bột sắn dây', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('f6080ac8-739e-5a97-8faf-e25a7afe7bec', 'Bắp hạt vàng', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('78b52eb8-1d9b-5a75-9186-34349231d948', 'Cà chua bi đỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('0ad9ea3b-d13d-5240-ab95-881d485d7d15', 'Bắp Mỹ hạt đã', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('a91e77a1-304b-5dbd-949c-d77f7992dc25', 'Cá nâu', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('d78a4d96-6aac-5040-b57b-babf098ab792', 'Dưa cải chua', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('fa3242cd-3343-52e0-bec7-7f93f5e3e473', 'Bột canh', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('df224a67-8f36-55c5-a5a3-8e7938166089', 'Mỡ + tóp mỡ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('923020f1-ade0-5759-b669-81c263bba409', 'Rau om, ngò gai, cần tàu', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('39b46b2e-90ce-503a-89d0-a79e2563e18c', 'Cơm trắng dẻo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('02a08be7-827c-5b20-b186-951ea8973ae5', 'Chà bông heo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1a311698-63bb-50eb-b4b3-a6f834e0f4f1', 'Chả lụa chay', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('a25aa58d-29d7-5e64-bfcf-95bd7b865dee', 'Cà rốt, củ sắn', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('063a3b03-799e-5887-81aa-b1e1fa711805', 'Rau tía tô lá to, húng láng, xà lách, bông hẹ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('4ade6bf1-bce0-5697-af55-766b0e71374e', 'Dưa gừng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('7d8bed93-7686-5645-928a-551847c4c287', 'Tàu hủ ky lá', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1385f5d5-aa06-5fca-9ff1-c83f1353a53d', 'Nui hình trái tim', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('db46976e-4d73-58fb-a99f-fb8fcca4080d', 'Cà chua beef', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('baaac527-87ab-5faa-8d92-18e9f7e0955b', 'Lá Oregano khô', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c5cb7b51-7aee-5824-b8f9-96a3dc4dbde1', 'Cà past', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ad803e48-099c-5e51-808e-cbd8e22cc1d9', 'Ngò tây 1 ít', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('332bdc1d-789c-55d9-a123-e7e30822992c', 'Xà lách romaine', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('d4d7d595-972d-57fc-9407-dd02944435d1', 'Tôm sú đông lạnh', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('8f477352-04d4-50b0-8844-840f1cea7294', 'Thăn lưng bò', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('6fe9cc09-aa47-5630-9fb7-4f20ec7fc15c', 'Đậu cove Đà lạt', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('dc442a10-3234-534a-9bdd-476630e71ae0', 'Cá cơm than làm sạch', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('2d4a1c9c-17b7-552d-bb7e-378db3258424', 'Lá cà ri tươi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('0f2ec806-af5c-52d8-bf62-fa807af79d11', 'Đường thốt nốt', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('3018ce68-ac47-5f29-90d0-6ef844524302', 'Nước me đặc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('eb01e9bc-7ce7-523c-a7bd-21ce9c548150', 'Đông trùng hạ thảo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('571ffa42-b119-548a-b6a0-025ba442d66c', 'Nấm tuyết nhĩ', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('5a55c889-360f-53d2-8d8c-63711ce9d678', 'Nhựa đào', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2793729c-0925-5307-9e16-fe50da07ce0e', 'Blendy', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('793fd94a-59c6-5e1c-93d7-b9248d95559d', 'Ống vani 1 ống', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('782f8c77-588b-5b64-bdc7-1edaec0da425', 'Bún gạo khô', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('5225965d-124e-5b6f-8700-5cd4f3e908f2', 'Lòng non', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('db62359e-0ef9-5d64-a55d-0a18b675a94e', 'Nghệ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('57f37444-bb1d-5b59-bc51-9dfbdab2a4aa', 'Tôm tươi', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('a5a2e5c3-9cb4-56a3-9ff7-ee7d62847d2e', 'Bột xù', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('c20bdeec-7741-5e9e-ba55-b49ecbde0531', 'tỏi bằm', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('850655e3-efd1-5cc1-9e3a-fc0dd9191f9e', 'Bơ thực vật', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('cfd7f343-0504-5e75-af36-fd32b57c7f8c', 'Dầu ăn, tiêu, nước mắm truyền thống 30oN', NULL, 'Gia vị/Dầu', 884, 0, 0, 100, 120000, 'ml', NULL, true, now()), +('e9d326ca-951c-5602-ab44-c93afe6cfdec', 'Cá thác lát', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('5bfb90b8-9c2b-598a-a23d-619b289c0c9e', 'dưa cải trộn chua ngọt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('a5480d78-d949-5040-9343-1bb1175e8fbd', 'Cá hú', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('68bff08a-f1b1-5d97-aa5d-0dd39c74778e', 'Mì spaghetti số 3 đã', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('e06b9e4a-cf0a-5b83-8328-f46c1c8ca36c', 'Tôm sú 30-40', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('31ebfa6f-29a8-5815-82d8-3bf6583fdd8a', 'Hẹ bông', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2907b80a-705e-5a30-b281-5630f4020f9d', 'Nấm linh chi nâu tươi', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('6dddc43d-22c7-52d3-92e9-7b838b9eefa4', 'ớt lát', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('fe9a1e40-3e09-5b22-a21a-f4139a9390ec', 'Dầu ăn, muối, tiêu, đường', NULL, 'Gia vị/Dầu', 884, 0, 0, 100, 120000, 'g', NULL, true, now()), +('7b2bc1bd-182e-5699-b2cc-2ee1ea712457', 'Nếp bún thơm', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('b904fccd-c193-5f8f-ba23-5da4fdad93bf', 'Chả tôm hoặc chả cá', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('e974808f-cc91-5a88-94c2-cf549c094e2a', 'Lá cẩm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('14404b22-1116-5caa-b804-ecc2001a7e11', 'Khuôn giấy trắng nhỏ cỡ số 5', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('d1a08c91-4864-5eef-846e-4d8b6691d5d1', 'Lá chuối', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('a5b52709-479f-5f5c-b6f2-b86b261d9947', 'nước lá dứa', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('4ca18f3b-44c0-5104-a96e-28bd971a9cde', 'Củ cải trắng mài nhỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('cd228bb1-534a-50b5-a392-1fe84d667f2b', 'Nếp', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('33862835-7b0e-5b3a-bdf6-e24fa1d55fc5', 'Thịt ức gà phi lê', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('07a9d7da-5f23-5973-8918-448610af3ba1', 'Nấm hương, nấm mèo', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('c662f006-bd06-5097-af04-3c45ff5327fe', 'Lá sen, hạt sen', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('4e5710aa-5629-5735-878c-e8922636dfd3', 'Dầu mè đen', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('1749200c-a2db-517b-afff-2a92c7e3611a', 'Củ hũ dừa tươi', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('84b9602f-6a87-512c-8655-44a2cc226d46', 'Cà bi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('25fb604e-e3e0-5961-9a24-23605e86e5b0', 'Bột', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('533f30e6-d49a-5431-9971-fbffa1d0f593', 'Sườn heo non', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('a53f5493-7376-59c5-85b6-a4aa69557043', 'Đậu ngự tươi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('27249a7b-f215-5798-827a-48690f703968', 'Cà rốt bào vỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('bc138390-c36c-51fa-a33c-bdf8b80cff11', 'Dừa tươi', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('26b90c28-e3b8-55c3-88a4-d46a4b8944b7', 'muối tiêu chanh', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('36842df0-8bdd-522b-9815-c2457183b26f', 'Mướp hương', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('659a5a17-0c6d-5ddb-b5e6-140cc1df7b63', 'Bí đỏ baby/ Bí đỏ Nhật', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('d73304d0-489a-5057-817f-3467df1330d4', 'Đậu phộng vỏ đỏ khô', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('b7724908-4670-5a66-9b84-10421d4d4a69', 'Chả chay', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('c369bedf-cda6-5c53-ad63-01b4313493a2', 'Cá lóc con vừa', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('6a4bd517-52b9-5a2b-abdb-64ed65c53593', 'Ớt xiêm xanh', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('59d0aaa8-74ea-59b3-b6b1-fad2b2bbeecd', 'Củ nén', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('13c47c47-16a2-5776-a160-70c1f80f834b', 'Hẹ tăm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f3a90a8e-d33b-5277-b932-6c70c420d4ed', 'chuối chát', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('a89033d9-66f5-514e-aa60-aeaba0973414', 'khế chua', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a2bfb1fb-be3d-5285-81f6-f2ab64f105cf', 'dầu đậu phộng', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('b18fa243-2ac1-5b36-ba27-8b3233668db7', 'Nước chanh', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('dddfabc8-3e67-5d7a-b1b2-c92ebbf7e2f5', 'Cọng ngò', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('6ac8cc1d-df05-52f2-a38d-1332f7938779', 'Khổ qua', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('9f04f1db-2211-57cc-a7c7-ca8608485df5', 'Cánh gà khúc giữa', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('f3f3e2c4-1a0a-5222-8e6b-0b57a2298511', 'Hạt đác tươi', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('fef9ad90-3041-51d7-ae31-afc99c4635f2', 'Aji thịt kho', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('63d6c399-e96e-5cca-a5d4-c71e94e458f3', 'Tôm đông lạnh không vỏ', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('9093aa47-b2a1-5096-bff4-1240de57413d', 'Tắc chín', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('d2158f0b-ece5-56ff-919d-2e1ec3ced4a8', 'Rau mầm 2 màu', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('55be2990-bc6b-58ca-8b7d-092baa7b84a6', 'Đầu hành tím', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('0d5ca274-5c36-5d97-a4d8-944d02f7d07c', 'Nấm tuyết', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('89fa5fd0-b46d-5f46-a2fc-20193a4876f8', 'Củ sắn', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('19f9bea6-3184-5833-8bbe-c45594a8b398', 'Rong biển sấy', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f3d9ff72-e3d4-5f14-a949-427e3abe7ba7', 'Đậu phộng rang giã nhỏ', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('916938bd-cf0d-51ca-a968-1794b42338dd', 'Rau muống hạt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('3ea4241d-c101-52e2-b926-bcebba2e912a', 'mắm ruốc', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('2bb6d806-606b-59a1-a104-d66b081566c4', 'Bôt gạo lọc', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('a770e603-601f-5be2-b4bc-75d27efd046d', 'Mì', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('11c86a56-9c03-5e28-b484-71cb953c02e7', 'Thịt nguội chay', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('352dd949-b8f8-5265-b436-699fede7f4f0', 'Cải thảo', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('17c517a4-0f06-5590-91d4-2f08b8be2fa3', 'Nấm đông cô khô', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('80d58e97-bfc3-5f97-a75d-3bd764a7f9e9', 'Tàu hũ', NULL, 'Đậu/Hạt', 90, 9, 3, 5, 35000, 'g', NULL, true, now()), +('b26105e5-580b-5b44-a73e-316459f15c51', 'Sả ớt', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('02934214-0147-59a9-9b44-57b8a552a6a2', 'Nước soda', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a69ea5b9-8a2e-52a0-a99b-387916885c83', 'Nui xoắn', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3725ae13-e88b-5a51-a645-2789c7182b8b', 'Xoài cát', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('f1cf6282-f421-51e8-ad71-3df778bb97ac', 'ít muối', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('6a38aa9f-fd6e-55db-a1e0-5a84022178b4', 'Bí đỏ tròn', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('91f7bd41-e7ab-594b-ac86-71c9bb6bc2cd', 'Bí đỏ miếng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('3a72d7f6-d4d3-51ec-aa9a-12c821be64b1', 'Mì căn', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('01e87a6a-c938-56f4-9dfa-f651d7d82e22', 'Củ cải muối', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('4fe8f4ee-a2a3-5db4-9993-ee0262225471', 'Cà ri bột', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('351046a2-52fa-527d-b9e1-cc0e7ae12aec', 'Bắp nếp', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('0cf0c08e-95d0-5012-aa68-976012719c24', 'Kiệu chua', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f7d4ff23-0aac-5a04-8c77-7c4e778598dc', 'Xốt tương LISA', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('1044d6af-f340-522c-b3f0-6aaf7c998538', 'Đầu hành trắng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('2f483ba2-e616-5b82-a3ca-b23901303b81', 'Hành tím củ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('78d9cd2a-80b3-5337-9959-d941f3678fdc', 'mỡ gà thắng', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('e62586b0-5f12-508e-83a6-7368584f1b2c', 'Rong biển khô', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a591bfd4-6bb8-53de-9752-6de093088a8f', 'Nấm hương khô', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('6049fe3d-13de-57f6-872a-f043dbe82e6f', 'Hành poaro', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('64f13316-7d3a-5d72-ad5d-c2fb531e4548', 'Bánh hỏi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3f1a24f2-cb63-581c-a7a6-155df140fb3b', 'Đồ chua', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('dc47447e-9b44-5004-8e13-74fc8e41ded3', 'bột gạo', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('756b58fa-c9b9-5cdc-9c72-5064d5d0fa0e', 'Khổ qua đèo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('dadc720f-40a5-587f-bf96-5d8b943195fb', 'Tàu hủ ky cọng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e6b33c24-99a0-55a0-80b3-593578050739', 'Poa-rô', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('6ae82397-4908-5dd8-8083-36d7bad288dd', 'Thịt ốc bươu', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('c35c92b4-d2cf-5a0b-9909-f3123537e1d0', 'Nạc dăm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a08518a5-6e2e-5dd7-89c6-5288a970fbce', 'Lòng trắng trứng 1quả', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('c5480600-bab4-505b-839e-c5e34b634a94', 'Thịt vịt', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('733e6a3b-b73a-5d0a-96df-7e062aded138', 'Tỏi tép đập dập', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('7112b5bd-2814-59c2-a33f-024069ad3f21', 'Bột nổi', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('6842de28-9e34-5a78-87e4-7453a9d0701d', 'Tôm đất', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('7e0528d8-b090-5fbd-8078-964c66343887', 'Đu đủ', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('ae838177-790f-56f1-ada8-d95edc9ed44c', 'Su hào', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f2ae1f4e-9d6a-5acc-a267-b22b729b0147', 'Nước vôi trong', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e789a65c-00b9-5b74-b83c-65df716aafe1', 'Bột nghệ', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('617618a0-0f75-5d45-9b37-0f15b9a27f6c', 'Khổ qua to', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2e77fb9f-f27f-5af8-a693-73586a509eac', 'Hành boaro phi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('bd1b7186-47e9-5195-8188-cc3851f30ba2', 'Bông so đũa', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f207aec8-d2c2-5e7b-abb1-456ecf7d473f', 'Bắp non trái', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('1c5a7608-c7da-5128-925e-274c54684932', 'Cải xoong nhỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('7e6b6dae-5a20-58ac-a623-eeb7e1f018bf', 'Nạm bò', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a6afeb5c-7f53-51b9-abf1-722ca8fa1e87', 'Mồng tơi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1c4c4dd4-74c1-5c44-a458-7ef332d74cb5', 'Cải xanh', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('aedb2e8c-cd12-5b62-978e-0dae74c3b580', 'Sả 2', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('75b386d8-4608-5b5d-b193-c28db8f4d65f', 'cây Hành tím', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('e125c9a3-22c2-58db-bb7f-8d0040380a06', 'Mì trứng', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('f47eab47-66bf-5e46-805a-cbe1e89a40ab', 'Rau tía tô', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('4280eabb-c763-59a4-b9dc-fc1348434303', 'tương đen', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f19d150e-69d9-5ff6-96bd-1b3e934e5442', 'Tôm càng sống', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('91002502-3942-5ea4-9e95-bcce290ae096', 'Dừa tươi: 1 trái', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('0e89a14e-b059-54bb-b056-801cddc31119', 'Hào sữa thịt', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('d6bb90fa-036d-59fd-ba14-2f03542abbb0', 'Bí ngòi vàng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('6b8d9e9b-ba63-5ef8-bef4-c881d8d6ae6f', 'ớt bột parika', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('d09bc163-4b00-5906-940c-5be33861b080', 'Bò lát chay', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a5f776bf-436a-5eb6-810a-00f411275088', 'Tép mỡ chay', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('72ce8ea1-d53f-54f4-9b16-fecab28286fe', 'Ham chay', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1ea97d2d-e036-5fb9-9db2-ff3640724a46', 'Bơ tươi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4a971a8b-8396-56d2-82de-9ddd3a5b9541', 'Súp phở chay', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('eeb142cf-7f4b-58ae-ad35-6aa02ee3880f', 'gia vị phở chay', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('ba03b888-7cbe-537b-a514-0a00dea263bb', 'Nấm hương loại nhỏ', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('caaaf560-77df-5161-9f9c-ae0827a4814f', 'su su baby', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('23e082ab-b2fd-51a1-b63a-dcbe21a5e034', 'đậu bắp', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('ea7d99d0-548b-520a-98d3-9cce64abb929', 'bầu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('15970d80-4266-57fc-9f2e-5dcbdd151917', 'bông cải', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('0ab11bb3-56fa-5529-aee3-6a66bb3d438b', 'Bánh phở khô', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('1302279a-cfc8-5fe5-9456-32ffae493144', 'Bí ngòi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('10a5746c-051f-5054-a9f5-a22dfbd0c279', 'Hem chay', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('220f219b-a118-50a7-87ca-306f0508e3f8', 'Boaro', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('0c641474-099a-56ce-9123-688260258182', 'Đậu phộng rang giã sơ', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('f1355e6f-b76c-5f50-b57d-daeb4f1458e7', 'Hắc xì dầu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('243ba87e-97a1-56a6-b670-78737836b6c0', 'Cá nục', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('945dd726-5f35-5633-8a50-80221ee31e03', 'Cà paste', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3446b061-8fc0-5069-b3dd-514c74d4a112', 'Mía lau', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f5d0ae4c-1ed2-5292-9f1a-7b1dff6e90ea', 'Nấm hỗn hợp', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('7a15b4a0-5105-5336-bc29-0b2bc0965dc8', 'tàu hũ ki', NULL, 'Đậu/Hạt', 90, 9, 3, 5, 35000, 'g', NULL, true, now()), +('7df3ba80-cf98-534e-9887-ff8ad6ac0d20', 'hạt nêm chay', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('1aa07bca-e8ad-5bc5-b9c9-60b553fb185a', 'Nấm hương, nấm mèo mỗi loại', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('4ea537ab-bb5f-52be-bbaa-8967b7c08aa7', 'Đậu hũ 1/2 miếng', NULL, 'Đậu/Hạt', 90, 9, 3, 5, 35000, 'g', NULL, true, now()), +('3c42abb2-c2d2-599f-b46a-25f736761c46', 'Bột há cảo', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('7e06e0e9-ec30-5a39-bef6-76b4c0cd24ad', 'Bắp trái 1/2 trái', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('764c4116-fc7b-51bf-a82a-dea1650c2857', 'Củ sen tươi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e1abd57d-c0f7-5dcb-a8f3-61ad79210b3a', 'Hành boaro nguyên cây', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('a17288e0-dd06-5fd8-9722-a28a0443debe', 'Chanh muối', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('8c666743-84a7-5dba-ac3c-a45617e59113', 'Nước chanh muối', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('29ba96ab-e03e-54ce-8c15-5d641deacb40', 'Mạch nha', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b05a5592-0e08-5524-aadc-73d0ef3278bc', 'Gạo thơm', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('d571c58f-84ff-5757-b054-691981709fb6', 'Giò heo rút xương', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('7bcb82b2-cc63-5ef4-a1d8-3239bf410365', 'Nạc cá lóc', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('36062c40-d2ab-53db-9f7a-bc177319bd1c', 'Nước dùng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('0a4cc380-9bf1-5bac-923d-5f49da7b5d5b', 'Mực nang', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('08d1829f-bf51-5ea2-a239-084586479cfa', 'Thịt cua', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('f7778c46-6288-57ae-9fe7-6514d5703ee1', 'Bánh tráng bò bía', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('e6e8517e-fc87-5b69-9860-67894412b1e6', 'Miến', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('0b84b404-bf59-522c-a6df-2e5deaf6ae3c', 'Hành tím, tỏi mỗi loại', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('db2040b5-5fd9-5564-8e30-a1b02c4d2420', 'đậu phộng rang giã', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('eeab99c4-7cfd-589a-a958-a48cbe917b9a', 'Dầu salad', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('01a59acd-69eb-5ae7-9e15-3ba3c5e6f0fa', 'Xà lách, rau sống', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('e247097b-be73-5f33-81c5-756b5917481c', 'Boaro phi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b6b3819e-c4ea-511f-834a-f2aefae94602', 'Dưa kiệu chua', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('05f433c5-0ecc-5701-aca3-aaeb30d47d09', 'Thính', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('8c5a7c39-87a1-53eb-b6bd-53720e3a4f42', 'Cá chim', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('8addc9d9-f6bc-578b-9163-6028b31f44a2', 'Đậu bi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a41546c5-11cf-58cb-9160-ae836b329161', 'ớt bột parika tiêu', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('b312b8b7-12e5-507a-95a6-d7835e7bc5ca', 'lá húng quế', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a7d8c05e-2a03-5473-a68b-ee91b2a0e1db', 'Gân bò', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('fb355158-e1db-50ad-9bb2-2d62f52621ea', 'Đậu phộng rang giã dập', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('c51e0fe5-3bdd-5457-bdd9-41abd624c6a2', 'Cá lóc bông', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('dfb3e5d4-7ed2-5cda-b155-2ee5c3e37a7a', 'Mẻ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ba4cda31-3269-504f-a54f-4314050df9b7', 'Hành khô', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('17bf3b68-6063-5154-a18e-2f9913fa4f93', 'Thịt bắp bò', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('4088bd2e-c113-5b1c-9404-410a5d4138e0', 'Quế chi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5bcc8b1b-bb10-56ce-9081-3ae1ee324381', 'Hoa hồi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('790621a1-c068-5f8e-b886-a5e60799ed99', 'Đinh hương 2 nụ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ac664fb9-7297-510d-ae5a-25f7ecb8ef70', 'xốt cà paste', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('ec529570-f735-5c5c-8550-e22e8a7db027', 'Cá điêu hồng', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('d65768cc-fa9f-538b-839d-1e63a94f1a0e', 'Tương bần', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c4adb2cf-2dc8-5e03-ba1a-b422c99b07c0', 'Nước trà xanh', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ee6a86c9-9766-55a3-a6f6-b36fe659ad61', 'Củ riềng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('48307845-3543-5b0a-98be-88b2125f3ec3', 'Sả non', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('d43ec7aa-768e-58c0-a905-878b96c9904e', 'nước nghệ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('519ac738-2fd3-5e46-8207-1ce507fc5a82', 'Mắm cá sặc', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('cc0af2b2-0756-51f1-b3d4-28b2f3174916', 'Mắm cá linh', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('a42c2290-88d6-5349-ac78-e294e36ef89d', 'Cá hú hoặc cá basa', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('ed99a404-344d-5888-857e-b8ce7b610f6f', 'rau đắng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('f9053c9a-927f-5307-adcc-3de46d1bf7d3', 'bông súng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b3237b39-d611-5057-b736-1bf997501d68', 'kèo nèo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('44e3358f-7afe-5802-8675-0ae6fc10ce0d', 'hoa chuối', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('cc67cfbc-4408-5035-b630-d17e1981c6db', 'rau muống chẻ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('d4b9a3a8-8d87-5ff3-9bab-45ee60030750', 'hẹ nước', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4090cfd8-e420-59b5-8f1d-2a59e09753d2', 'Tôm sú sống', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('f5b11733-01b1-5840-b568-4658abd0fee3', 'Bóng bì', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3033ab31-7ff4-5ef0-8b6d-0b8563bda73a', 'Nước ấm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('6ed6e527-649f-51d2-ad1f-1af104f46cdd', 'Ớt xanh', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('125f629c-5ce0-533a-ae70-9c28adc7603f', 'Phô mai cheddar', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('d8651f86-7b78-5812-818c-3e307e6acfc9', 'Xà lách hỗn hợp', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('ae9ceca5-5436-5c9d-8a1c-b999714d7ae8', 'Xương gà', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('7ba1b03e-c9fc-5c30-a2d7-df3b3b980a82', 'Gừng, hành tím', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('023e1a35-f2de-51cf-beae-6aea36e3d1e5', 'Sá sùng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('52283f02-6c9e-5235-967e-3b9bed93cf5b', 'Lá chanh Bắc', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('25095d90-d227-525f-a05a-0770e3c10854', 'Muối hột rang', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('f3bed613-150b-591a-9af9-e44772c255c2', 'Tiêu sọ', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('9f3d2e15-f61e-5be1-bc18-0f43e180f52e', 'tương ớt Bắc', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('60caf4ea-dd12-51d8-adca-add337a24b4c', 'Cá hồi fillet', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('b482a52b-f5dd-51ce-a1f2-257e2af60acf', 'Ớt chuông vàng: 60', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('4271606a-27ec-54f3-abaa-d7c27944dbc9', 'Hành tây tím: 25', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('603a021a-ef88-5229-93ba-f57c239d1d11', 'Xà lách/ dưa leo / cà chua', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('21d71bdf-0b83-5a9b-aaee-75959a123bd6', 'Ức gà không da', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('fbbd5c2e-1b10-5ba4-a666-1d0ac61a482f', 'Gừng mài', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2515b373-ef20-55fa-a573-f7909d9774ef', 'Ức gà file', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('776ad2a4-690f-5d21-84ee-0636eb8a99f1', 'Bơ trái', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('d64ca918-99ed-5514-8ed3-1f86bd341db1', 'Cải kale', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('20e1aae0-283e-5221-80b3-bd4d904a01ef', 'Bột ớt Paprika', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('e82bdd27-1bd0-52dc-a4a3-9088594676a5', 'Bột tỏi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('688a3ac1-2eb5-595e-a65b-d374b0380c7f', 'Đậu trắng lon', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('903e2f0e-8459-51ca-bb6c-1d7d46f6618f', 'Đậu gà lon', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('2f419da2-67d5-52c6-9ee0-303540c3e36a', 'Bắp hạt lon', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('72db415f-2878-5b2f-8967-3772186098b6', 'Xốt mè rang', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('5ed2e437-dee0-5183-bff2-3b3038e91798', 'Salad Iceberg', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('d352fad5-3cd2-55b3-b60c-142e7d08e68b', 'Thịt nạc bò mềm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('76ee661d-61b8-5660-8d2a-b54bd7bcb652', 'Hành tây Đà Lạt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('f8aff0b3-42ca-55c8-b221-262492113a51', 'Xốt dùng ngay Kho Quẹt', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('569a5bc6-b48a-5bb7-9c58-791b6092c095', 'Hẹ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('838cbd7c-b7c0-5fe3-a85f-870e0405cbda', 'Thịt nạc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e5c4facf-00d0-508a-ac6a-37b377e27867', 'Rượu sake/rượu trắng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('7474b19a-adee-59e5-82f6-a2bcb873e62b', 'Gạo thường', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('a28ad55b-f830-5498-b1ff-35558457a573', 'Đậu Pháp', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('410d0065-9ced-58c0-8b70-55bfb0a27e83', 'Món mặn từ thịt gà', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('1ecd2d26-c7bb-5fbc-893e-c224a8636ead', 'Cá hộp', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('798af4e1-ab9f-57a6-9613-9e01e483e0ae', 'nước mắm ớt xắt', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('f38d0f11-1b0b-537f-843a-b41e06c70f5f', 'Lá boa rô', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('7dc0e5b9-b3cf-56a4-9d48-ed3be332d895', 'Thịt ba chỉ đầu giòn', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('04929742-8b5f-5518-a1a0-beeba27a665d', 'Cơm mẻ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c9ec444c-57a7-590e-a40d-9b2398269eba', 'Cải xoong loại nhỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('9890c8c0-8f20-5d26-b558-814cb4f980e0', 'Cà bi vàng và đỏ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('439eb7b3-e605-564e-8e67-f284e5df846a', 'Thịt lươn', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('b9376b84-b7e3-5ef4-9170-01080df62050', 'Ớt hiểm đỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('1a311aa9-5b81-5eb9-85e7-15cd4727bf2b', 'Que xiên tre', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4130379f-0cbf-580a-a63e-0b9a7946e653', 'Lò', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3ec9fed3-3ee6-5a19-9ee7-f2138c40b11f', 'Cá lăng', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('b53759d7-5ba3-52f5-8244-42813f76ff4f', 'bắp chuối hột', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('01e668b1-12a7-58ff-98ff-127b23ce891c', 'Trứng muối', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('06e73bfa-dc1f-51a1-9971-be17cef62b4f', 'Chà bông', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4ebc499e-6a0f-59da-a508-b3a104f5db87', 'Ớt khô', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('9ed5deee-7f30-5dee-8507-71e0b95c3db6', 'Cơm nóng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3998da7a-47d0-5e66-91b0-f4c096214b38', 'rượu vodka', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f1d95a8e-3b84-589e-bc1e-3e3ab12bd15c', 'Mắm ruốc Huế', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('37fb7227-892d-5d9a-ba6f-1ff67130f6b5', 'dưa leo. Cơm trắng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('508d6574-1a99-51da-afb4-03bfc73bf4d6', 'Tía tô', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('42b6459b-8052-59e6-9bd8-e2b96bff7a6f', 'Nước nghệ tươi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3b680478-272c-5584-89ed-d295a095795d', 'Bún khô', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('a8950a73-cfe1-5a88-bc0b-c8f225b6d7a1', 'Cá lòng tong', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('3a5bb34d-b161-564e-a043-27083083e0e2', 'Dầu ăn, muối, tiêu, đường, rượu trắng', NULL, 'Gia vị/Dầu', 884, 0, 0, 100, 120000, 'g', NULL, true, now()), +('93c1d11f-a849-5e9e-88cb-1366dd71ce1e', 'Đậu ngự', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('82a3905c-2967-58e7-9018-75fa7cdc57d3', 'Đậu phộng', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('5185ca4a-4bad-5bd1-85a1-49a1516c01bd', 'Đậu trắng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('27226863-6866-55d6-9148-7efcb4773123', 'Dừa', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('b262e009-25ff-5bd2-b7a4-683244bc41e7', 'Blendy Trà Matcha Gạo Rang', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('1adfc700-6dc3-55f0-beee-01294fe52270', 'Kem lạnh vani', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('95e83aef-b266-56dc-bbe1-1576f124d638', 'Chuối laba', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('58c64ab7-d695-51f1-a253-32dd995d9eeb', 'Kem sữa đánh bông', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('2e0d5c2b-b8be-5eb2-8397-4811b41512f8', 'Đậu phộng rang nâu', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('cae5ce12-646a-5076-935c-585b31c54337', 'Đùi gà gốc 4, không xương bọng', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('0050f70e-5ea3-5f28-bc39-12a5b29bd65d', 'Mirin', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('cccceb75-9097-58b3-96ab-61245f8cf526', 'Sake', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('46e409da-4d37-51e2-b6d6-eb5474fdb88e', 'Rau rừng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('5e242c0f-421e-5dfd-b3b4-904b01cc85c9', 'Bánh tráng mỏng', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('823ec176-1d30-524a-80ad-8c4aab8e1117', 'Cách gà công nghiệp', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('bc44b704-2eb7-5aac-9c48-d38f9b61dfca', 'Rau mầm 3 màu, cà chua bi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('5e2e5a59-c9d0-5457-b7a1-719e7d238555', 'Xúc xích Đức', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('0d69188e-bae9-50fe-830e-d7349bc5b7dd', 'Dưa cải', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('5fd44726-6889-508f-b395-472ebbd28797', 'Ớt chuông đỏ, vàng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('895657ca-7a96-5c5a-9374-5a9a725087e6', 'Hành boa-rô', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('56b6eca5-5e55-52c4-aa0e-e1f1c9c0ab8e', 'ớt xắt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('0a57db2d-c90a-502f-b3b4-75a09401eb1e', 'Thịt thăn bò', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1d6ed989-0905-57a0-b21d-9a6bb0f9a012', 'Khoai tây tươi', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('c1307b38-1d09-5380-bb3b-e8fd3f3ca8a1', 'Bơ trái chín vừa ăn', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('fc63613e-bf10-55cc-9b60-b6c095afb98d', 'Xà lách búp Mỹ : 1/4 búp', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('b70777fc-5bda-5bb2-8d55-de1cccb5e759', 'Xà lách tím : 1/4 búp', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('febc629f-e635-50c2-ac56-c8acf5859ee7', 'Cải nầm', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('e6fca3a6-0bde-5410-b824-eca8d0d22c46', 'Rau cần nước', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('74b8d815-a01f-5a3b-b774-6c669c0eda36', 'Cọng súng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('81018087-374c-536e-ac9e-380b6bce6b41', 'Bánh tráng mè', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('db2e184c-1548-5fc7-9771-0175a87a3b64', 'Gạo nấu cháo', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('2e8312e1-e835-5cfa-b418-c8c0872e7aa0', 'Rong biển lá khô', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('1ab2a26c-0da4-5f8e-ac69-7deaf0d9737b', 'Gói bột', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('058dd291-12c7-52a4-812b-b55c0e2bd1c2', 'Chả bò', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('5f52b3be-1f77-54e3-9083-16eef9fff3bf', 'Bắp chuối', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('11769a0a-4d22-5096-bd4c-4d25ef5d796f', 'Rau cần cạn', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('3e2f7780-8acc-5e47-8d2e-78853dadcd3b', 'Mắm', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('e0a84ef6-27fc-5720-87c5-e374e7d52ea5', 'Đậu Hà Lan hạt', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('a48d650b-2fa5-57a3-bce9-7311b707ab69', 'Hành tây bi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('a0830a0b-a4f1-5a7d-8a2b-c73f13ec0352', 'Rau gia vị', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('97258277-5aa8-5522-97b9-dbcd44a2c377', 'Cà Paste hộp', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('43f07fe6-a1df-5592-b81b-a3609f133b7c', 'Đùi gà góc', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('b3b2c540-f470-5301-8d26-2a9e6d136660', 'Dưa leo Nhật', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('291603b6-d350-53ad-ba0f-1bc13bda04ba', 'Tiêu đen 1Mg', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('f2da94e5-efba-5853-b57e-8aba2f13ca48', 'Rượu nếp', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5f8ff4f4-608e-51d6-81e7-539bafd6d54e', 'Thịt má đùi gà rút xương', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('45f73e8d-8416-599a-887f-9156c0f6b1cb', 'Mayonnaise AJI-NO-MOTO', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a6c33948-38d4-544d-a015-4f2c59156743', 'Blendy Trà đào cam sả', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('8377aefd-c35f-5cb1-ab1e-4f77e554c04f', 'Đào hộp', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('b90ef9fa-1f27-5550-9c5b-0065d29a2b7c', 'Bột rau câu dẻo 3D', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('fd1e99f3-c575-5e68-b7aa-5ef8eae8ee2d', 'Đá viên', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('165e5f2a-cc3d-5062-a0a3-21ced5cd90c3', 'Bò Sirlion Úc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('27e88dce-3658-5493-be20-5f4bfbaa5a9d', 'Xà lách búp', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('84932308-e499-5312-b8df-2cd6dc4aba35', 'Nước cốt hành tím, tỏi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('6ade04c6-5af9-59a2-b733-791c5e5927af', 'tiêu đen cà bể', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('7b7c6ff4-090f-589b-a1ac-00f91efde738', 'Kho quẹt', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f4c12ac7-30b7-5764-9d07-c03588cce3f2', 'Cá chép', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('2a4314aa-00ea-5661-84cc-2ad4d9231986', 'Lá trà xanh', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('645c333b-2324-5f21-8cef-18929c180feb', 'Riềng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2532c602-2103-51fe-be0d-bb49de949bad', 'Mía dài', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ca27ea34-089f-51e4-bfa2-9071fee67daa', 'Hành lá tùy ý', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('db6f65cf-2e34-5d8e-861a-688f86322c2c', 'Ớt hiểm tùy ý', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('6d834b0d-f496-5bb4-a097-e210a76f2171', 'Ớt sừng tùy ý', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('cdc9b6f7-2af2-5cb3-bee1-ee516c43b335', 'hành lá Tiêu', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('952cd843-dd0e-5555-ac7b-5fdfb0616b0f', 'Da heo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c5e4635b-2288-5b57-b2dd-2c1eb8eacbf0', 'Hạt nêm Aji heo', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('c9db1763-4a06-59e3-9a02-0daa1c23d7ee', 'Hạt nêm Aji nấm', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('e222113e-eb60-50a0-960b-ac3c9b9d17d0', 'Cơm trắng/ bún', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('cbed3aec-c819-5b48-acc1-13c7ed737d10', 'Dầu ăn, dầu mè', NULL, 'Gia vị/Dầu', 884, 0, 0, 100, 120000, 'g', NULL, true, now()), +('25f4e5f4-f971-5881-83ec-2d8cf1716906', 'Mực sữa', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('f4bb6b37-5068-534f-b6e5-703b8ceb3455', 'Giấm gạo lên men Ajinomoto', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('030e505f-577b-5b8e-b74c-5798f2a471a0', 'ĂN KÈM Cơm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c6123924-fe43-526a-a802-18a7c2d3a69c', 'Canh sườn non xuyên tiêu', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('088d5a90-5899-5bc3-80ac-34f0ac34f19e', 'Khổ qua nhồi nấm kho nước tương', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('607befc4-eb51-5b51-9ce3-a50bcec4c1c0', 'Thịt bê', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('00003d5b-6c7e-52c5-8462-835b7f66855d', 'Mộc nhĩ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5afddcf1-f3bf-590e-9937-bb49300c4fd8', 'Nước gião dừa', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('afbbac0c-67f6-5caa-b47a-46ea6002f1df', 'Bánh mì ăn kèm', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('65f20e37-a808-55c5-aff4-a2c5729ad836', 'Rau nêm Hành tây, sả', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('47e4a935-7612-5796-a234-5dcbf61e3aa5', 'Thịt nạm bò', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('f4ce4761-9e74-577f-b82f-c8679ebfabd5', 'Bò phi lê', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('8d085d4b-0de7-5365-b9e6-82f74a03cef9', 'Đẳng sâm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('dce1bb6f-bbe6-5252-a70f-7afa5b83a835', 'Rau mồng tơi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('fc3b65a2-ae75-5d65-9f70-6157e317c167', 'Rau má', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('be669f28-0a52-5d28-ae17-4796f5aeb10a', 'Ăn trưa', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c0b5b242-c8d5-5775-aac7-e1c2250d42f0', 'Cá bống trứng', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('27a2b47b-2dcb-59aa-b8d9-b8c99cf7dd11', 'Canh ếch lá me non', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ff195276-9070-582e-a972-c13feafbcf70', 'Rau củ xào xốt chay', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('cc6e3292-5132-59e9-9914-e7b1952b2ad8', 'Tráng miệng: Táo', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('b13ad09b-c777-5794-aabc-f57170bba894', 'Nấm hủ đùi gà', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('281e6fca-f116-5d1f-b38b-7adb9f6c4c09', 'Đậu hạt Hà Lan', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('c11dc748-780d-556f-9599-703a1dfcd799', 'Rau nêm Poa rô, hành tây, ngò rí, tiêu xanh', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('6ae905d7-01a5-5f56-bd9a-85f1d8f4a4f0', 'Gia vị Muối', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('c9b8aaeb-119c-545d-bcc8-e7a6e4ea72cc', 'Canh rau dền khoai sọ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('b3cb2a05-6c04-5991-8d95-0cd85016bc34', 'Cánh gà xào ớt xiêm', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('23267bd3-8cad-5000-b2cb-c4d43c8be065', 'Đá bi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('71309de6-09e6-5cb4-8274-3c2f5f2770bc', 'Blendy Trà sữa matcha gạo rang', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('42d45f17-18c3-5d7e-9654-43a5c13782ab', 'Hành lá tỉa hoa', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('9ee772eb-bb6f-559f-9a82-1d973da099bc', 'ĂN KÈM Ăn trưa kèm: Cơm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('9ecd1bb8-ab91-5552-9062-6e06f77c14b0', 'Cải mầm 3 màu', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('5a4f6c65-74eb-554f-869e-9e7a17cf511d', 'Gia vị Ngò rí', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4041cbba-d25f-562d-a1fc-42453db08cf1', 'Mề gà', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('4c654ae6-ab48-5893-b896-63c2ad5dabe1', 'Cá basa fillet đông lạnh', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('4fd889a8-3315-5c06-851d-6c90b87679ef', 'Bột mì đa dụng', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('a38e235d-b34f-5245-b670-7971df44045f', 'Thịt vịt xiêm', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('27d6a45d-cf9b-5edb-bdd6-81ee0e70974f', 'Cơm rượu miền Nam', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('52b94f69-9958-57e3-ad4a-e3f3c4e80d47', 'Rau cải con', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('ccfe2cc5-c6f4-5f2c-bf2d-4709c070332a', 'Bún/ bánh hỏi/bánh mì', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('af9ce6dc-d6c2-5483-ad05-4de440ba20fe', 'Bột bánh rán pha sẵn vị truyền thống', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('10880f33-14c5-53d6-9862-dec02ec04752', 'Gầu bò', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('84f28e02-ecae-59f4-9113-caf4a9332ff5', 'Phở', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('48a2e86f-62e1-5dd4-8c23-714e8237c70e', 'Cá nục con nhỏ', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('ef898520-e0ad-515f-a261-91e8a18e8938', 'Mía cây 3 đốt', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('39cd8b9f-fc4d-53a6-b8c3-0411ed21935f', 'Ớt trái', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('d1c740b5-2dec-5a07-8aeb-24b5cb12f044', 'Rong nho tách nước', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('54997d25-b037-5076-9ad3-c2c6a6b7efdb', 'ĂN KÈM Lá quế', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a4476348-35b6-57b2-a04c-83bf6989852e', 'Cá hồi phi lê bỏ da', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('f28f36fa-5c1f-532d-b01f-c00afbf81878', 'Lươn', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('6fd68881-e98e-5166-9d11-e0c53b93807b', 'Bắp bò xào xốt tiêu xanh', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('28d20365-8074-544a-8f77-d85767e96f22', 'Mướp hương nhồi tôm hấp', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('8da0b2b7-159c-5ae6-9078-3004be2fddaf', 'Sườn non heo', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('d786b586-2c37-5f65-ab07-9d2a1c8ca354', 'Chao đỏ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('d45fbbf9-d7c5-5194-a2bd-0089175939ab', 'Ngò gai/ lá quế', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2233ac9c-7c41-5f9c-afd2-d61296b92ce8', 'Cơm/ bún', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('37d03c6b-dbae-5c0c-90b8-30ad4cdef85f', 'rau muống/ cải bẹ xanh', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('39819809-370c-5fcb-94cf-d7c2063957c8', 'nước nắm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('545c29ae-aaac-5ed3-8f27-dcc2ca503172', 'Xúc xích hun khói', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('83bab723-bae1-502e-b368-333a7b3830e5', 'Trứng cút 12 trứng', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('bd94f5b0-80c2-5c6c-8ac9-e0b17a62be3c', 'GVNS Bột gia vị', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('e4eedfa7-f180-549d-a7d0-ffe1c6624445', 'dưa chuột', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('0fed2b60-73de-5aa4-ae5c-f7ef7153fa52', 'THỰC ĐƠN BỮA ĂN Bữa phụ chiều', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('96995e24-07ae-5c50-9d6f-94e43ee4a35e', 'Thịt cá lóc', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('18be328c-bd53-56ff-afe8-03690ba9789d', 'THỰC ĐƠN BỮA ĂN Bữa tối: Ăn kèm Tráng miệng: Chuối', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('42fff92b-077c-55ec-9885-6bd7ff9636f3', 'dầu phi hành', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('84780212-bef0-5d77-b42e-d3d9766ffa56', 'Thịt nghêu đông lạnh', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('1051ad15-9839-5684-85dc-43faff974f2c', 'Ajinomoto', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('0c93d091-6181-5fae-aced-b734ac496b56', 'Ajingon nấm', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('13e532ec-c064-519e-b413-6063876a20ee', 'Muối, tiêu, nước tương, ớt sừng, dầu mè', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('e885b299-531e-54bf-814d-fd8a4698e220', 'Tim heo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c829ccb5-6d2c-5284-8c9f-113dbe9faa55', 'Rau bồ ngót', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('ec8834d7-bba4-517f-88f1-dfec06976502', 'Bắp vàng', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('2a12868f-e04d-523e-8868-01b6254a8c6a', 'Đậu phộng sống', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('fbc19558-2fd3-5227-8d39-dab80160b181', 'Xá bấu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2051386a-3ebc-5e7a-bfc0-9d7a33172ba0', 'Cơm gạo tím', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('f0979cba-c275-571b-b6dc-56ad08d0e83e', 'Lá sen', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('cd8c8924-8c72-55c9-bfd6-7f540234d8cd', 'Rong biển Nori', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('972ebe15-74ae-5d4b-a76b-72238e6099ec', 'Bún tàu đậu xanh 20', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('45a4a10e-32d1-56c1-a9f7-4f96a6243c4d', 'Củ năng, cà rốt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('491429aa-68d1-50ff-bbc5-b1da1d540328', 'Dầu ăn, đường, boa rô phi', NULL, 'Gia vị/Dầu', 884, 0, 0, 100, 120000, 'g', NULL, true, now()), +('9fe7ea3f-5306-501c-bfad-7d684fda5f77', 'Whipping cream', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('374da59b-40a7-5960-9a59-973f226ed92d', 'Phô mai con bò cười', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('d3a99dcc-d806-5e05-88f5-d81e85224c30', 'Gelatine bột', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('24072ae2-364a-5315-ab6c-c78a5dfb75b3', 'Nho nâu không hạt', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('52aed6c0-8478-5d02-8dc6-fecae5ecb5a3', 'Trà Matcha sữa blendy', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('6f84a797-a647-5676-a8a9-196a2873485c', 'hoa trang trí bánh', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('ac01cd45-33a0-5a67-b45c-86b5e2da0ae7', 'Ba chỉ bò Úc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('37cd9baf-8feb-589f-8dff-44e844ac2b29', 'Rau mầm 3 màu, rau húng lủi, ớt sừng', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('fe262953-d756-5fd4-b56a-76696de7fb11', 'Dưa leo giống Nhật', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('21250e63-865a-557a-8bf5-c4f3dfefdb21', 'Nước dão dừa', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('a46b01a1-10c5-5f9a-9074-1caf1239344e', 'Dầu màu điều', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e25b1f47-ce58-5a50-af68-73d417f43ec3', 'Thịt bò bằm', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('d8c52647-0022-52d9-8690-3f1f1d65243d', 'Cá chép ta', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('51c3ad2f-4df8-5a80-876a-9f41e77bd1c2', 'Cốt tắc và quả tắc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5a75f354-be21-5524-b51a-60a0cd275504', 'Nước lọc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('aafd1691-a1f2-5d23-bcd6-22cef34ebf2d', 'Đậu phông rang bỏ vỏ tách đôi', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5abddb73-a86c-5df2-be57-46d3bf38f983', 'Xoài keo', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('8075195a-671b-5c23-aaaf-7e19e24f2d9b', 'Thịt ba chỉ bò', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3f8eda7c-6c14-58f0-8600-04cabe334d03', 'Thịt ba chỉ heo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('7655ef20-209c-5d90-9b12-90434133bf3e', 'Viên thả lẩu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4c8aefd1-9515-59ca-a7f9-db1510310413', 'Ớt trái khô', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('c7830d28-5f54-5d35-8ec4-4a2a8b86025d', 'Nước me cô đặc', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2ccb022f-44ad-592f-bab2-a295f707bb29', 'Aji hạt nêm heo', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('81352d27-2e9f-52ee-9865-a97f5a5dd6aa', 'Rượu trắng + gừng giã nhuyễn', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4337af1d-dfd7-5fdb-bb5e-f978c380e67d', 'Bột xù trắng', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('a0e1c75b-6562-50b5-81a6-717d202606c1', 'Dầu ăn, tương ớt', NULL, 'Gia vị/Dầu', 884, 0, 0, 100, 120000, 'g', NULL, true, now()), +('f2009226-7ffd-5736-9a29-a58ababedc01', 'Nấm hải sản trắng', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('4fb0b0e1-e745-5e30-b55f-2ef3bad257d9', 'Trứng cút 4 trứng', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('4f9b93c5-e0cb-55d8-aa81-707d91b6d5c2', 'Nước cốt hành tím', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('4b14b4cd-3fc2-565a-984a-9f75d0c8272b', 'Nước cốt tỏi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('66e14d2e-88cc-50db-b418-bfee995f9873', 'Bột bánh rán pha sẵn bữa sáng dinh dưỡng 150', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('04e261d0-df24-5d41-8518-9612e8ecbd1f', 'Đùi ếch tươi to', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('fe0a7f24-4012-5ea3-af39-7a7e06cd5691', 'Lá thyme', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('2cdcb094-33c3-5341-8f20-b6baddf8508e', 'Nấm linh chi trắng', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('c1ea17fe-fc3a-571e-b0f5-45bc30de660b', 'Dầu ớt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('f65e6447-52c5-5033-8533-db43ec3c01ca', 'Cá lóc phi lê', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('e9fcf788-e426-5129-ab18-332eed40ebeb', 'Nghệ củ', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('80a2f2dd-b1bc-56ae-b8a6-fdb1120053f8', 'Ớt sừng đỏ', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('e0ad5c7e-39e2-546e-b4eb-b58aace28a91', 'Thịt bắp đùi heo', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('e7c4aaed-2c2b-5086-988f-92fa29cdd552', 'Gạch cua', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('dd1bfb18-aa3c-5de5-aaaf-f2f3c3e36f22', 'Bánh phồng tôm', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('0b0416c4-8080-5c99-b4d0-424df6ded579', 'Thịt bacon xong khói', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e06cbc37-28eb-5a7e-9f8e-830807f11760', 'Xà lách gai', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('616badad-8904-5bf3-83f7-c8096d537221', 'Bắp mĩ hạt', NULL, 'Đậu/Hạt', 560, 20, 24, 45, 180000, 'g', NULL, true, now()), +('50c21f91-3f06-56dd-90cb-35326b517168', 'Bột socola đen', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('1b49e6f9-d40f-5223-8fc3-61c0c20cb669', 'Chuối chín', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('c73fbfb2-02bc-5f98-9722-11c82ef8b03b', 'Vỏ chanh vàng', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('7510fed2-dbca-5710-9332-9227131281bd', 'đường dầu mè', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('589a55db-a30b-5804-becb-96940dd94240', 'Đậu petit pois đông lạnh', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('fe3a8185-ae11-50cd-b7ac-9c576affe5aa', 'Gà phi lê', NULL, 'Thịt/Cá', 180, 22, 1, 10, 95000, 'g', NULL, true, now()), +('9f5e61fb-41bb-565c-ba7d-f1ec5078bee6', 'Nấm linh chi', NULL, 'Rau củ', 30, 3, 5, 0.5, 80000, 'g', NULL, true, now()), +('9b952022-cec3-5610-9286-831d3770e084', 'Đường cát', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('213bb763-4705-5b91-95fd-ad3b3507bf5d', 'Mướp', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('78c45107-8cfc-5d2a-af55-d1ec73021452', 'Rong biển wakame', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('904abff1-731f-5bb9-ae41-e47d055b3e63', 'Mực', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('ce29b86c-a557-5c9d-ac62-6fed9172dd6f', 'Trứng vịt lộn', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('6d18148f-cf0d-570f-afda-4804c108efed', 'Bầu quả', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('9e20917a-4186-5bea-ac6e-816c9802195e', 'Giò nạc', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('8b6a2a03-cff6-51bc-a07e-ea8e7424dd70', 'Sợi bún to', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('dff2948e-9dd1-52b0-8315-c377ee24e3a5', 'Xà lách sợi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('04d08dc2-e887-5d46-94de-dba081d58a2a', 'ớt nước mắm', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('f4e32a37-005b-562e-869e-27bc051c6391', 'Wakame', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('626f6b05-59dd-5859-8bfa-e54daa3f6501', 'Miến dẹt sợi lớn', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('ee60b02b-d2b2-596d-8415-5bdf65a7a8fe', 'Fillet cá bông lau', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('b10cff9b-6339-5df8-83e4-57d632ee456f', 'Sản phẩm nhấn', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('a1c85263-b003-5139-b40a-cfb8ec56452f', 'Sườn sụn non', NULL, 'Thịt/Cá', 220, 24, 1, 13, 150000, 'g', NULL, true, now()), +('30fcb9de-8c4b-5c93-8de4-4decdc7bb250', 'rau nhúc', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('ba1296c1-d3d5-5856-a62e-f31806ab4273', 'Blendy Trà Matcha Sữa', NULL, 'Trứng/Sữa', 120, 6, 10, 7, 90000, 'g', NULL, true, now()), +('9af4bfbb-9d40-5b84-b551-c4dae0bf882f', 'Bột rau câu dẻo', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('818e8f24-1bea-5787-80f1-c3f04237c864', 'Sữa đậu nành không đường', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('f355f94f-4670-54e1-8d7e-55433ed91f6c', 'Tôm thẻ bóc vỏ', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('8f11460f-ffa8-5da9-a62d-673394a79284', 'Dầu ăn để', NULL, 'Gia vị/Dầu', 884, 0, 0, 100, 120000, 'g', NULL, true, now()), +('fda9a86e-73c9-5b0a-965d-8777aabe08c4', 'Thạch rau câu dẻo', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('a81b2cb7-49a0-5ba1-9aed-e42e76c56dc1', 'Vải đóng lon', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('c4875dda-8b00-5b57-8f86-e57abd5148b1', 'Đu đủ bào', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('b0a819a3-caeb-5e21-abe5-c724bb16bc21', 'Thăn lưng bò mềm', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('e7899cc4-71d9-5cdd-93a6-e02952760f28', 'Xà lách xoắn', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('01d5b429-e836-5d10-8cad-3b97191c4af7', 'Cà rốt Đà lạt', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('212b0e7b-4c17-55d0-8668-74aa8d5afd32', 'Cà chua bi nhiều màu', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('8da4f7a7-fe5e-5745-913e-6b9af8c7fd0d', 'Muối hồng', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('ee6ec04b-c2b3-5cf5-8f59-cf0f0146d78a', 'Muối ớt xanh', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('751109b2-1bba-56de-8780-a1f6105e2330', 'Sữa chua không đường 2 hũ', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('169333d8-040f-5002-9883-4890ebedfef9', 'Ngũ cốc granola', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('36400ca8-a1f6-5b7c-b24b-a8bb4305016e', 'Mứt dâu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('691c7ff8-a66c-5889-9c71-017046f3ae5d', 'Tôm làm sạch', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('f723dcfe-312e-58c8-9fd1-49b6c726f287', 'Bánh tráng 3 màu', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('166fc215-e44e-5d4c-abed-438af97e3163', 'Lòng trắng trứng gà', NULL, 'Trứng/Sữa', 120, 8, 5, 7, 70000, 'g', NULL, true, now()), +('b44122b2-13d9-57d5-9f75-4fd9207368ed', 'Đường Dầu mè Dầu hào Nước tương giảm muối', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('e031cee9-e7e0-5b73-bc9f-3d3d43c7a6cb', 'Giấm gạo Ajinomoto', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'g', NULL, true, now()), +('e8c0f81a-b21e-505e-a6ac-ad4f852310e1', 'Tôm tươi bóc vỏ', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('ad36f109-4746-55df-9118-14d2d4cc7e22', 'Quả sấu', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('21ce7501-cac0-5b37-a813-b63d938bd7ac', 'Hành hoa, thì là', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('559475b5-ba64-50a5-b1d9-4f1081f0923f', 'Thịt thăn bê', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('3f8d635c-e059-54a2-a584-b74216151539', 'Lá rau húng lủi', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('fdbca817-503b-53fe-8982-1aea00dc5abf', 'Dầu hướng dương', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('5bc33c36-941f-5343-9772-5cf21c9ce029', 'Nước mắm ngon', NULL, 'Gia vị/Dầu', 55, 2, 10, 1, 60000, 'ml', NULL, true, now()), +('f333ad9c-3baa-5bdc-bae8-d6697467281c', 'Bánh tráng cuốn mè', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('a8a1ac33-6785-59a4-8ed6-bd587cd4061d', 'Tương đậu Hàn Quốc', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('5e94d3cb-21b3-5803-a6dd-59b0d62fbe10', 'Tương ớt Hàn Quốc', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('20e3dacf-134e-5750-944a-ef86c50b6d2a', 'Nước gừng', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('93d4e61a-c669-5002-b7d5-14d9113ab6c6', 'Sò điệp nguyên vỏ', NULL, 'Thịt/Cá', 105, 20, 2, 2, 190000, 'g', NULL, true, now()), +('b940aa78-6475-56b0-906c-90ad93bbb183', 'Đậu bo', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('4e214f2f-ce39-5d05-899f-1beae9a426dd', 'Cải bẹ xanh', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('11c1defb-c8cd-5038-ae23-1b7786411002', 'Thịt bò bắp hoa', NULL, 'Tinh bột', 300, 7, 65, 3, 45000, 'g', NULL, true, now()), +('e4cadbb7-1a84-557a-871d-16eb02c6eac5', 'Tim bò, gan bò, lá sách', NULL, 'Khác', 100, 4, 15, 3, 60000, 'g', NULL, true, now()), +('a7fa47c5-9727-5093-8183-6681487656a8', 'Rau ăn kèm', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()), +('3a4b0729-2721-5e39-ae0e-dcf1db2ff705', 'Thịt lươn làm sạch', NULL, 'Thịt/Cá', 150, 21, 0, 7, 140000, 'g', NULL, true, now()), +('0b736acc-59a9-5b52-afda-5121ee17c0f5', 'Hoa chuối, chuối cây bào, bông so đũa, bông bí', NULL, 'Trái cây', 60, 1, 14, 0.4, 50000, 'g', NULL, true, now()), +('440c8863-bd10-5c95-8e41-7a3f3e5e8611', 'Kèo nèo, rau muống', NULL, 'Rau củ', 35, 2, 7, 0.5, 35000, 'g', NULL, true, now()) +ON CONFLICT ("Id") DO UPDATE SET + "NameVi" = EXCLUDED."NameVi", "Category" = EXCLUDED."Category", + "CaloriesKcal" = EXCLUDED."CaloriesKcal", "ProteinG" = EXCLUDED."ProteinG", + "CarbsG" = EXCLUDED."CarbsG", "FatG" = EXCLUDED."FatG", + "EstimatedPriceVnd" = EXCLUDED."EstimatedPriceVnd", "IsActive" = true; +-- END GENERATED MNMN CATALOG + COMMIT; diff --git a/backend/database/16_foods.sql b/backend/database/16_foods.sql index b4bb275b..0f95e0ec 100644 --- a/backend/database/16_foods.sql +++ b/backend/database/16_foods.sql @@ -23,6 +23,13 @@ CREATE TABLE foods ( "IsActive" boolean NULL, "CreatedAt" timestamp with time zone NULL, "Region" text NULL, + "PreparationMinutes" integer NULL, + "CookingMinutes" integer NULL, + "DifficultyLevel" text NULL, + "MealType" text NULL, + "DietType" text NULL, + "MainIngredient" text NULL, + "CookingMethod" text NULL, CONSTRAINT "PK_foods" PRIMARY KEY ("Id"), CONSTRAINT "CK_foods_DefaultServingG_Positive" CHECK ("DefaultServingG" > 0) ); @@ -115,14 +122,6 @@ ON CONFLICT ("Id") DO NOTHING; -- EstimatedPriceVnd is the estimated cost of one DefaultServingG portion. -- Idempotent by Id; also avoids duplicate Vietnamese names. -- ============================================================================= -ALTER TABLE foods ADD COLUMN IF NOT EXISTS "PreparationMinutes" integer NULL; -ALTER TABLE foods ADD COLUMN IF NOT EXISTS "CookingMinutes" integer NULL; -ALTER TABLE foods ADD COLUMN IF NOT EXISTS "DifficultyLevel" text NULL; -ALTER TABLE foods ADD COLUMN IF NOT EXISTS "MealType" text NULL; -ALTER TABLE foods ADD COLUMN IF NOT EXISTS "DietType" text NULL; -ALTER TABLE foods ADD COLUMN IF NOT EXISTS "MainIngredient" text NULL; -ALTER TABLE foods ADD COLUMN IF NOT EXISTS "CookingMethod" text NULL; - WITH seed ( id, name_vi, name_en, category, description, calories, protein, carbs, fat, fiber, @@ -266,5 +265,417 @@ ON CONFLICT ("Id") DO UPDATE SET "DietType" = EXCLUDED."DietType", "MainIngredient" = EXCLUDED."MainIngredient", "CookingMethod" = EXCLUDED."CookingMethod"; +-- BEGIN GENERATED MNMN CATALOG (do not edit by hand) +-- 350 Vietnamese dishes, bringing the canonical catalog to 500 foods. +INSERT INTO foods ( + "Id", "NameVi", "NameEn", "Category", "Description", "CaloriesKcal", + "ProteinG", "CarbsG", "FatG", "FiberG", "EstimatedPriceVnd", + "DefaultServingG", "ImageUrl", "IsActive", "CreatedAt", "Region", + "PreparationMinutes", "CookingMinutes", "DifficultyLevel", "MealType", + "DietType", "MainIngredient", "CookingMethod" +) VALUES +('12e408ea-b740-5619-94d5-7e191b2598a3', 'Salad Sữa Chua Cùng Gyoza', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 131, 5.2, 17.7, 4.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'vegetarian', 'Bánh xếp kiểu Nhật Gyoza dùng nồi', 'Gỏi/Trộn'), +('253fa446-51e9-5d71-a23a-d630499fdb3c', 'Canh Gà Nấm Hương Củ Sâm Đất', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 144000, 300, NULL, true, now(), 'vietnam', 10, 10, 'medium', 'lunch,dinner', 'balanced', 'Má đùi gà rút xương', 'Canh/Súp'), +('6876e7b4-8609-5e39-86fc-d25c4e60be5d', 'Tôm Trứng Cút Xúc Xích Xào Bông Cải', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 194, 13.1, 19.4, 7.1, 3.0, 211000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú', 'Xào'), +('b96e6bb0-f091-5ff2-8b76-cedd738e43ba', 'Canh Bí Đao Sườn Non', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 15.2, 51.3, 12.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 40, 'easy', 'lunch,dinner', 'vegetarian', 'Sườn non', 'Canh/Súp'), +('335256f1-0b3d-5194-8f10-5f120a9b2e36', 'Gà Rim Nước Tương', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 243, 16.4, 24.3, 8.9, 3.0, 24000, 300, NULL, true, now(), 'vietnam', 10, 45, 'easy', 'lunch,dinner', 'balanced', 'Cánh gà', 'Kho/Rim'), +('a16d422e-0d92-5f70-9b31-9ea873fef59f', 'Nấm Bào Ngư Xào Sả Ớt', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 15.2, 51.3, 12.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'vegetarian', 'Nấm bào ngư', 'Xào'), +('2174fe7c-e0ee-55ce-87a9-4ab2a27676a2', 'Canh Thịt Bò Cải Xoong', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 25.7, 38, 13.9, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'lunch,dinner', 'balanced', 'Thịt bò', 'Canh/Súp'), +('4c6efd67-8a45-5264-9025-3f6ac93c06e7', 'Khô Mực Trộn Trái Cây', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 647, 43.7, 64.7, 23.7, 3.0, 48000, 300, NULL, true, now(), 'vietnam', 5, 15, 'easy', 'lunch,dinner', 'balanced', 'Táo xanh', 'Gỏi/Trộn'), +('bfb9df29-9823-5efd-a918-ce35d9ccbb8e', 'Canh Bụt Giấm Cá Lăng – Dưa Bồn Bồn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 269, 18.2, 26.9, 9.9, 3.0, 26000, 300, NULL, true, now(), 'vietnam', 20, 5, 'easy', 'lunch,dinner', 'balanced', 'Thịt cá lăng', 'Canh/Súp'), +('db2ee6e9-9265-5130-815b-16bb0375c7c0', 'Salad Bơ Tôm Thịt Áp Chảo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 210, 9.4, 30.4, 5.6, 3.0, 220000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Xà lách giòn', 'Gỏi/Trộn'), +('ec401fc9-59a4-5e9b-b43e-e9d9b4bb9dfe', 'Tacos Gà Caesar', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 230, 15.5, 23, 8.4, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Bánh Tacos', 'Nấu'), +('b05a2ffd-06c3-5cef-8676-359350c81a97', 'Salad Bắp Tôm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 233, 15.7, 23.3, 8.5, 3.0, 18000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú', 'Gỏi/Trộn'), +('9353aecb-491c-5ec2-b82d-2a7c7d2e4073', 'Cá Điêu Hồng Nướng Kèm Dưa Nụ Ngâm Chua', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 25.7, 38, 13.9, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 15, 10, 'medium', 'snack', 'balanced', 'cá điêu hồng đã làm sạch', 'Nướng'), +('f002fa1c-fa08-580b-9832-9520f23a3b80', 'Mì Nấm Củ Hủ Dừa Táo Đỏ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 463, 20.8, 67.1, 12.3, 3.0, 53000, 300, NULL, true, now(), 'vietnam', 10, 10, 'medium', 'breakfast,lunch,dinner', 'balanced', 'Táo đỏ khô', 'Nấu'), +('6b7a10d2-5776-5e5c-9ec3-4508b660b42f', 'Heo Quay Kho Măng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 676, 45.6, 67.6, 24.8, 3.0, 86000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Heo quay', 'Kho/Rim'), +('34f04d89-dc34-55c7-b8a0-bf07642c5fdd', 'Canh Dền Cơm Nấu Nghêu', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 5.4, 17.4, 3.2, 3.0, 15000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'lunch,dinner', 'balanced', 'Thịt nghêu', 'Kho/Rim'), +('65a903c2-1d03-55b6-807a-35f986028f78', 'Khổ Qua Tây Xào Thịt Bò', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 200, 13.5, 20, 7.3, 3.0, 13000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Khổ qua tây', 'Xào'), +('6d8875b4-b53f-531f-8bb5-41fcec937c3d', 'Đậu Hủ Thịt Viên Rau Củ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 368, 24.8, 36.8, 13.5, 3.0, 27000, 300, NULL, true, now(), 'vietnam', 15, 15, 'easy', 'lunch,dinner', 'balanced', 'Thịt', 'Nấu'), +('57590214-28a9-53a9-b8b3-b0c0e455b247', 'Chả Cá Kho Vân Trứng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 138, 9.3, 13.8, 5.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Chả cá basa', 'Kho/Rim'), +('b0d04092-3731-5c08-9a4c-fcb10331cb69', 'Đọt Su Xào Tôm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 194, 13.1, 19.4, 7.1, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú tươi, bóc vỏ', 'Xào'), +('1f1fbb24-b145-531b-971e-3fea1673ab93', 'Canh Sườn Hạt Sen', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 372, 14.9, 50.2, 12.4, 3.0, 27000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'lunch,dinner', 'vegetarian', 'Sườn non', 'Canh/Súp'), +('320e811a-f643-5ed9-b354-892a2f194ccc', 'Canh Ốc Chua Cay', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 146, 9.9, 14.6, 5.4, 3.0, 15000, 300, NULL, true, now(), 'vietnam', 15, 10, 'easy', 'lunch,dinner', 'balanced', 'Thịt ốc bươu làm sạch', 'Canh/Súp'), +('24a13ac5-9b6a-5af6-9afd-0ddd499de006', 'Gà tiềm hạt sen', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 296, 20, 29.6, 10.9, 3.0, 24000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Đùi gà', 'Hấp/Tiềm'), +('fbed7ee5-7aee-5874-84c8-60c2e0793aea', 'Canh Gà Củ Sen', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 252, 17, 25.2, 9.2, 3.0, 25000, 300, NULL, true, now(), 'vietnam', 5, 13, 'easy', 'lunch,dinner', 'balanced', 'Gà ta góc tư', 'Canh/Súp'), +('81a055de-4fde-5557-8227-23f7f0f92eb1', 'Chả Giò Tôm Mayo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 146000, 300, NULL, true, now(), 'vietnam', 5, 20, 'easy', 'lunch,dinner', 'balanced', 'Tôm', 'Kho/Rim'), +('504dfda8-beab-5dc4-b602-63f77642ec99', 'Cải Thìa Xào Hải Sâm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 331, 22.3, 33.1, 12.1, 3.0, 42000, 300, NULL, true, now(), 'vietnam', 15, 5, 'medium', 'lunch,dinner', 'balanced', 'Hải sâm đông lạnh đã sơ chế', 'Xào'), +('30e2a603-924f-549b-a602-22c2559d6b25', 'Salad Tonkatsu', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 133, 9, 13.3, 4.9, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Thịt heo', 'Gỏi/Trộn'), +('b4c28012-1e7a-5352-8646-27e0bdb100b9', 'Salad Bacon Xốt Mè Rang', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 15.2, 51.3, 12.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'vegetarian', 'Bacon xông khói', 'Gỏi/Trộn'), +('77f3d67c-0ccd-5558-98b8-109d06cab031', 'Súp Gà Chua Cay', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 590, 39.8, 59, 21.6, 3.0, 32000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Thịt ức gà', 'Canh/Súp'), +('0f2143ff-3ff1-5268-a0fa-6129097970ce', 'Cơm Gạo Lứt Chiên Nghêu', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 700, 31.5, 101.5, 18.7, 3.0, 58000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Nghêu', 'Chiên'), +('8360e31d-3e19-5d24-989f-17f4a243e1f0', 'Canh Sườn Gyoza', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 295, 19.9, 29.5, 10.8, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Sườn non', 'Canh/Súp'), +('1bd01c3d-ec3f-54f5-a2ea-d78db6215566', 'Gà Nướng Chanh Sả Mayo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 249, 16.8, 24.9, 9.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Má đùi gà', 'Nướng'), +('e2088694-29e0-5369-a939-3a9cc7acd3a7', 'Tôm chiên cánh bướm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 169, 11.4, 16.9, 6.2, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú hấp đông lạnh size lớn', 'Chiên'), +('b3cdef36-2785-51f0-8bda-16dfcbfe3088', 'Tôm bao mọc chiên giòn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 58000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú nhỏ', 'Chiên'), +('e0361f22-6298-5aba-af3b-fe2a0891d3c2', 'Tôm mực chiên giòn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 20000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Mực ống', 'Chiên'), +('5ef1d2a6-d58e-5c7a-bf01-5a48f300ed71', 'Gỏi cuốn chay xốt đậu phộng', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 398, 17.9, 57.7, 10.6, 3.0, 15000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Bánh tráng 10 bánh', 'Gỏi/Trộn'), +('a62e965c-9e5d-53fe-93ac-0d28f0d480fa', 'Chè bà ba', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 833, 33.3, 112.5, 27.8, 3.0, 33000, 300, NULL, true, now(), 'vietnam', 10, 50, 'easy', 'snack', 'vegetarian', 'Khoai mỡ tím', 'Nấu'), +('6f0432c7-87f8-5235-948f-acbd6c2758c9', 'Cơm Nắm Ngũ Sắc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 493, 22.2, 71.5, 13.1, 3.0, 38000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'lunch,dinner', 'balanced', 'Gạo dẻo', 'Kho/Rim'), +('c8a19304-73ad-5f5b-ab08-a28b7b0ac5ee', 'Rau Củ Và Mực Chiên', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 240, 16.2, 24, 8.8, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Mực lá', 'Chiên'), +('b3897138-bc7c-5824-aa0a-a57b842a9b8a', 'Salad Rong Nho Đậu Hũ', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 15.2, 51.3, 12.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'vegetarian', 'Rong nho', 'Gỏi/Trộn'), +('401c5f83-587f-5fb3-8999-82e3b11dafb4', 'Mì Xào Thịt Heo Rau Củ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 196, 8.8, 28.4, 5.2, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 15, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Mì trứng đã', 'Xào'), +('650421a7-e2b8-57a8-930e-006ee10b8099', 'Bánh đa xúc thịt bằm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 201, 13.6, 20.1, 7.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'snack', 'balanced', 'Thịt bằm', 'Nấu'), +('106e1a97-8973-5f13-a6ef-94d66ee0d20c', 'Bánh đa xào thịt gà chua ngọt', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 179, 12.1, 17.9, 6.6, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'snack', 'balanced', 'Bánh đa sợi to', 'Xào'), +('98b74e97-60d0-5ddb-a50b-f8b5822e4740', 'Bánh đa xào hải sản', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 128, 8.6, 12.8, 4.7, 3.0, 20000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'snack', 'balanced', 'Bánh đa đỏ', 'Xào'), +('086ed755-2bff-51bf-9914-9706a3881364', 'Cá kèo kho kim chi củ cải', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 171, 11.5, 17.1, 6.3, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cá kèo', 'Kho/Rim'), +('7711479c-3d73-51b9-af0b-bcb242c2ea2a', 'Cá lóc kho củ cải', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Cá lóc', 'Kho/Rim'), +('16a87781-51ca-5057-8ccf-4a60628e0db8', 'Gỏi bắp bò hoa', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 230, 15.5, 23, 8.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Bắp bò hoa', 'Gỏi/Trộn'), +('de393dd1-05ab-55cf-ae21-87d462c1a3ee', 'Giò heo hon', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 994, 67.1, 99.4, 36.4, 3.0, 79000, 300, NULL, true, now(), 'vietnam', 10, 45, 'easy', 'lunch,dinner', 'balanced', 'Giò heo trước căt khoanh', 'Nấu'), +('3990b9a5-cf67-52df-9356-149846e64a1b', 'Thịt giò heo kho củ cải', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 408, 27.5, 40.8, 15, 3.0, 26000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Thịt giò heo', 'Kho/Rim'), +('0ffaea40-ca67-5928-b36b-3c2e941ae562', 'Xôi Viên Chiên Nhân Thập Cẩm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 324, 14.6, 47, 8.6, 3.0, 20000, 300, NULL, true, now(), 'vietnam', 25, 10, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Xôi 4 màu', 'Chiên'), +('8364c64a-a650-5c0e-a651-bbad6f2830d1', 'Trà sữa blendy trái cây', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 124, 5, 16.7, 4.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'snack', 'vegetarian', 'Trà sữa Blendy Royal', 'Nấu'), +('dde43460-e41b-5b97-b42e-c9413097b2cc', 'Salad rau củ trộn xốt mayonnaise', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 318, 21.5, 31.8, 11.7, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Cà rốt', 'Gỏi/Trộn'), +('a4bd0f10-eca9-5a55-80c0-227d49edceb8', 'Salad dầu giấm trộn Mayonnaise', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Xà lách dòn', 'Gỏi/Trộn'), +('420194b1-ffbd-5f9d-b491-67de66928a58', 'Salad cá ngừ rau thơm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 180, 12.2, 18, 6.6, 3.0, 16000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Cá ngừ phi-lê', 'Gỏi/Trộn'), +('fd1feb4b-2bb1-5d42-a342-ba8c2f9f20f6', 'Cá ngừ kho nước mía', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 293, 19.8, 29.3, 10.7, 3.0, 27000, 300, NULL, true, now(), 'vietnam', 10, 35, 'easy', 'lunch,dinner', 'balanced', 'Cá ngừ', 'Kho/Rim'), +('e35d7001-9b33-5d84-864f-3879fd1b16ec', 'Cá ngừ đại dương lúc lắc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 237, 16, 23.7, 8.7, 3.0, 15000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Phi lê cá ngừ', 'Nấu'), +('c8ed8bf3-cd0b-54be-8f9d-f637bf969402', 'Cá đối kho cà chua', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 211, 14.2, 21.1, 7.7, 3.0, 23000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cá đối', 'Kho/Rim'), +('a6857dca-b088-5e87-a24e-3af1b5bb2b9a', 'Cá đối kho cải chua', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 210, 14.2, 21, 7.7, 3.0, 20000, 300, NULL, true, now(), 'vietnam', 10, 45, 'easy', 'lunch,dinner', 'balanced', 'Cá đối', 'Kho/Rim'), +('61a36d38-7832-5605-8209-dfe424922a0e', 'Cá Nục Kho Thơm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 301, 20.3, 30.1, 11, 3.0, 36000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cá nục tươi', 'Kho/Rim'), +('1e95f716-790c-5963-9ba1-b4acd40b2b00', 'Canh gà măng chua', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 258, 17.4, 25.8, 9.5, 3.0, 18000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Má đùi gà', 'Canh/Súp'), +('94fbd893-eebf-597c-9779-bb14ac8c176b', 'Nhộng xào măng chua', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 132, 5.3, 17.8, 4.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'vegetarian', 'Nhộng', 'Xào'), +('495ad48d-d8ff-5083-ae43-7740f62e5130', 'Canh gà măng chua lá giang', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 142, 9.6, 14.2, 5.2, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Gà ta', 'Canh/Súp'), +('ffb09ba0-0688-5b29-97fd-a5f94372c0f1', 'Đà điểu xốt trái cây', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 275, 11, 37.1, 9.2, 3.0, 13000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'vegetarian', 'Đà điểu phi lê', 'Nấu'), +('c85377ab-ff0a-566f-85df-a404f2a394d8', 'Đà điểu xào lá cách', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 173, 11.7, 17.3, 6.3, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Thịt đà điểu', 'Xào'), +('79ff1c55-e39e-5c10-b71d-1fdf96090f32', 'Đà điểu lúc lắc', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 4.8, 16.2, 4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'vegetarian', 'Đà điểu', 'Nấu'), +('a0546c94-508f-5c92-b2cb-6f1efafe04a0', 'Gỏi sò lông', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 437, 17.5, 59, 14.6, 3.0, 57000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'vegetarian', 'Sò lông', 'Gỏi/Trộn'), +('71aa925a-d291-508f-b058-ffc56a3c0dcc', 'Sò lông xào chua ngọt', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 153, 6.1, 20.7, 5.1, 3.0, 55000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'vegetarian', 'Sò lông', 'Xào'), +('d78db135-721e-574c-9fef-e2b82a757d68', 'Sò lông kho tiêu xanh', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 160, 10.8, 16, 5.9, 3.0, 23000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Thịt sò lông', 'Kho/Rim'), +('10bdf82d-b543-50a7-bd40-e66ee00cc853', 'Bắp cải tím trộn tôm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 162000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Bắp cải tím', 'Gỏi/Trộn'), +('2dadf12d-d9be-58fd-8471-cf6a67cca9cc', 'Bắp cải tím xào hải sản', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 227, 15.3, 22.7, 8.3, 3.0, 18000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú', 'Xào'), +('a230733b-ac6a-5987-8170-1c8b07dbbadc', 'Canh chua bắp cải tím', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 121, 4.8, 16.3, 4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'vegetarian', 'Bắp cải tím', 'Canh/Súp'), +('6e2c5455-2d74-5ec1-9d2e-9214a1d435cb', 'Mì ý xốt nấm', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 138, 6.2, 20, 3.7, 3.0, 13000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Mì Ý', 'Nấu'), +('85cd6fc5-3faf-5580-b98b-a47a28c00181', 'Vịt nướng chao', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 17.1, 55.1, 10.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 40, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Vịt', 'Nướng'), +('93a087e2-cc25-56a1-a352-f553bc607248', 'Thịt bò xào đậu cove', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 175, 11.8, 17.5, 6.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Thịt bò phi lê', 'Xào'), +('148c4b68-5690-5887-9ca4-d3903cdeeac1', 'Salad cam đậu đỏ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 320, 21.6, 32, 11.7, 3.0, 16000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Đậu đỏ', 'Gỏi/Trộn'), +('a0593959-df5f-5999-ba39-efcf43473e8e', 'PanCake kem mè', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 272, 10.9, 36.7, 9.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'snack', 'vegetarian', 'Mè trắng', 'Nấu'), +('e432cc6b-6982-5331-9d16-3e39e8adde08', 'Nem chay rán', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 272, 10.9, 36.7, 9.1, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 60, 'easy', 'lunch,dinner', 'vegetarian', 'Giò sống chay', 'Chiên'), +('35a62ad4-e086-50f9-b474-0e86414c3325', 'Mực lụi sả nướng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 760, 51.3, 76, 27.9, 3.0, 71000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Mực ống nhỏ', 'Nướng'), +('454060cd-b7dd-5b1a-8491-4a092c362918', 'Mì Ý xốt cua', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 421, 18.9, 61, 11.2, 3.0, 16000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Cua gạch', 'Nấu'), +('568a24f8-68eb-5b55-92e3-f0c9e083aaa2', 'Mì cay chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 587, 26.4, 85.1, 15.7, 3.0, 41000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Nước dùng chay', 'Nấu'), +('a4c7564c-6354-529f-8a77-d30302348c1c', 'Lẩu cá thác lác khổ qua', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 424, 28.6, 42.4, 15.5, 3.0, 28000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Xương heo', 'Kho/Rim'), +('55d244d8-65c6-5198-9359-46684837f0df', 'Khoai tây nướng phô mai', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 267, 12, 38.7, 7.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Khoai tây', 'Nướng'), +('984ad11b-1074-5c8e-b2c1-488814d865de', 'Gà xào ngũ sắc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 315, 21.3, 31.5, 11.6, 3.0, 13000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Ức gà', 'Xào'), +('6fc4a0b1-5900-5d6a-afd1-6ccd9b965f8f', 'Gà nướng nồi đất', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 884, 59.7, 88.4, 32.4, 3.0, 81000, 300, NULL, true, now(), 'vietnam', 10, 35, 'easy', 'lunch,dinner', 'balanced', 'Đùi gà', 'Nướng'), +('a28cba1c-3ff9-5a70-b9cb-c1f2fd2841e5', 'Cuốn tàu hũ ky xốt rô ti', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 48, 162, 40, 3.0, 68000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'vegetarian', 'Lá tàu hũ ky khô', 'Nấu'), +('c8c6801d-6ada-5174-ac70-8afdbb72f7e4', 'Cơm chiên mayonnaise', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 17.1, 55.1, 10.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Cơm trắng', 'Chiên'), +('544392d4-3a4b-513e-b03f-c89ac41fdfab', 'Chả hấp chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 219, 8.8, 29.6, 7.3, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'vegetarian', 'Đậu hũ trắng', 'Hấp/Tiềm'), +('93286876-23c4-57a1-b06a-e37a7078dfad', 'Chả giò ngũ vị', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 371, 25, 37.1, 13.6, 3.0, 44000, 300, NULL, true, now(), 'vietnam', 10, 35, 'easy', 'lunch,dinner', 'balanced', 'Da bò bía tươi', 'Nấu'), +('44bc167a-1cc2-5108-839f-7ee653b630dd', 'Canh cá khoai lá giang', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 25.7, 38, 13.9, 3.0, 40000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Cá khoai tươi', 'Kho/Rim'), +('6fbf5cc3-8b2e-597b-b975-8d51ac246e5e', 'Cải thìa xào nấm đông cô thịt cua', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cải thìa', 'Xào'), +('b96c4b61-885a-5653-8a26-5ccb5cd73646', 'Cá lóc chiên mắm sả', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 187, 12.6, 18.7, 6.9, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cá lóc bông làm sạch', 'Chiên'), +('e57db436-b603-5f0b-828c-010aec111404', 'Bánh xèo Nhật Bản', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'snack', 'balanced', 'Bắp cải', 'Nấu'), +('dff32bdf-1807-5775-be0a-5ccc092c13f7', 'Bò xốt vang', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 600, 40.5, 60, 22, 3.0, 27000, 300, NULL, true, now(), 'vietnam', 10, 40, 'easy', 'lunch,dinner', 'balanced', 'Thịt bò nạm sườn', 'Nấu'), +('b66e8ba8-120a-5b35-9e31-fd424c33cbc4', 'Xôi Mặt Nguyệt', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 165, 7.4, 23.9, 4.4, 3.0, 18000, 300, NULL, true, now(), 'vietnam', 15, 25, 'medium', 'breakfast,lunch,dinner', 'balanced', 'Nếp cái hoa vàng', 'Nấu'), +('49180c2b-e3e2-59d8-93bc-50c5abe23a4a', 'Ức Gà Trộn Quinoa Và Rau Củ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 66000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Thịt ức gà', 'Gỏi/Trộn'), +('3d9eb975-a222-5134-b5da-6e7deaa149ee', 'Túi Ngọc Xốt Mè', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 116000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Bánh tráng bò bía tươi', 'Nấu'), +('e3064d97-9cab-51f2-b798-a44ce807f8eb', 'Thịt Heo Chiên Xù Tonkatsu', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 123, 8.3, 12.3, 4.5, 3.0, 16000, 300, NULL, true, now(), 'vietnam', 20, 15, 'easy', 'lunch,dinner', 'balanced', 'Thịt heo', 'Chiên'), +('6b15f690-2978-5137-8ac3-a87cb162e526', 'Thịt Heo Chiên Giòn Vị Cà Ri', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 281, 19, 28.1, 10.3, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Nạc lưng heo', 'Chiên'), +('a7c8c2cb-f461-5672-a658-11be9aebd948', 'Sushi cupcake cá hồi', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 94000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Cơm dẻo hạt tròn', 'Nấu'), +('234846ac-37f3-5e08-a21a-da1b6827626c', 'Súp Gà Bí Đỏ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 60000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Má đùi gà', 'Canh/Súp'), +('b5f3ebb9-ea68-503a-bfa5-1525e1517cee', 'Sườn nướng xốt gấc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 89000, 300, NULL, true, now(), 'vietnam', 10, 40, 'easy', 'lunch,dinner', 'balanced', 'Sườn non nguyên tảng', 'Nướng'), +('c2bc1137-02a9-5445-84b0-375d19ff1977', 'Snack rong biển thanh cua', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 182, 12.3, 18.2, 6.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 5, 5, 'easy', 'lunch,dinner', 'balanced', 'Bánh tráng', 'Nấu'), +('9523318b-79ab-5402-9329-d6e5455a57c5', 'SALAD GYOZA', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 4.8, 16.2, 4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 20, 20, 'easy', 'lunch,dinner', 'vegetarian', 'Bánh Xếp Kiểu Nhật Gyoza dùng nồi', 'Gỏi/Trộn'), +('0fa46d79-a02e-52de-821a-0b4cdb1d42fd', 'Salad Cá Hồi Trái Cây Nhiệt Đới', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 561, 37.9, 56.1, 20.6, 3.0, 51000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Cá hồi file', 'Gỏi/Trộn'), +('1c415782-b508-5652-89ed-2b21e05ce4b4', 'Salad cá hồi nướng xốt mayo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 220, 14.9, 22, 8.1, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Cá hồi', 'Gỏi/Trộn'), +('75566d6e-1bfa-5ac6-8d6f-a478c98a7953', 'Salad Bò Nướng Áp Chảo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 54, 174, 32, 3.0, 213000, 300, NULL, true, now(), 'vietnam', 15, 5, 'medium', 'breakfast,lunch,dinner', 'balanced', 'Thịt bò file', 'Gỏi/Trộn'), +('84ef196e-0a0a-5113-af46-ffc4bf983b53', 'Salad bò đậu rồng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1131, 76.3, 113.1, 41.5, 3.0, 64000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Thịt bò', 'Gỏi/Trộn'), +('8cb40997-a25b-5ecc-91fd-24fee45bc66a', 'Phở Xào Giòn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 876, 39.4, 127, 23.4, 3.0, 28000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Bánh phở', 'Xào'), +('adde9c27-5b7d-587a-a8e4-a9d65568dccc', 'Pancake Trứng Và Bacon', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 141, 9.5, 14.1, 5.2, 3.0, 13000, 300, NULL, true, now(), 'vietnam', 10, 3, 'easy', 'lunch,dinner', 'balanced', 'Bacon', 'Nấu'), +('fe815907-5282-5c31-8470-512c6efeca36', 'Ốc Hương Xóc Xốt Trứng Muối', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 243, 16.4, 24.3, 8.9, 3.0, 41000, 300, NULL, true, now(), 'vietnam', 5, 5, 'easy', 'lunch,dinner', 'balanced', 'Ốc hương', 'Nấu'), +('f13548ed-d397-5167-95a1-ab4292e3680c', 'Nui ngũ sắc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 367, 24.8, 36.7, 13.5, 3.0, 46000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Nui ngũ sắc đã', 'Nấu'), +('775015ce-e05b-5b5e-842c-128b624102bd', 'Nấm Và Hành Tây Chiên Giòn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 205, 13.8, 20.5, 7.5, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Nấm đùi gà baby', 'Chiên'), +('5220b343-d0dc-586c-a784-c869f4e16ff0', 'Nấm Lộc Nhung Kho Tiêu Xanh Ăn Với Cháo Đậu Đỏ (Chay)', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 54, 174, 32, 3.0, 248000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Nấm lộc nhung', 'Kho/Rim'), +('0f33a1ef-cf47-5c06-8190-d7f6902d4090', 'MUFFIN SOCOLA', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 5, 15, 'easy', 'lunch,dinner', 'balanced', 'Trứng gà', 'Nấu'), +('75c2854d-13f5-5d86-9aed-ba06d3565e67', 'MỰC NHỒI XÔI TÍM RAU CỦ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 54, 174, 32, 3.0, 239000, 300, NULL, true, now(), 'vietnam', 15, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Mực ống', 'Nấu'), +('bab541c4-34b8-5d25-b602-a16912efbb95', 'Miến Xào Cua Măng Tây', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 181, 12.2, 18.1, 6.6, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Thịt cua rỉa', 'Xào'), +('eae2cda8-a417-58c1-b846-91cf697afc2f', 'MÌ XÀO BÒ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 599, 27, 86.9, 16, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Mì vàng', 'Xào'), +('f12e32e6-2bf9-5564-a402-ad66c9d02c60', 'MÌ TRỘN GYOZA', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 363, 16.3, 52.6, 9.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Bánh xếp kiểu Nhật Gyoza dùng nồi', 'Gỏi/Trộn'), +('6e8f5c9b-6cb0-5342-91ae-cfcfd3b435d6', 'Mì Gyoza Miso', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 54, 174, 32, 3.0, 199000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Bánh xếp Gyoza', 'Nấu'), +('ce77f3bc-2925-5534-b6d1-9df2fbdeb7da', 'MẮM KHO CHAY', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1096, 43.8, 148, 36.5, 3.0, 111000, 300, NULL, true, now(), 'vietnam', 13, 5, 'easy', 'lunch,dinner', 'vegetarian', 'Sườn chay lát', 'Kho/Rim'), +('308c4c33-586b-5096-ac3b-2b86dabfc879', 'Lẩu Chao Củ Sen Khoai Môn Chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 54, 174, 32, 3.0, 154000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Khoai môn cao', 'Kho/Rim'), +('7360d445-af05-5941-9a02-726a863ca929', 'Kem “Blendy”', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 15.2, 51.3, 12.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'snack', 'vegetarian', 'Blendy Trà Đào hương Cam Sả', 'Nấu'), +('a4b5a842-3bd7-5ffa-a14a-b3e5cd792e3a', 'HỦ TIẾU SA ĐÉC XÀO TÉP BÔNG ĐIÊN ĐIỂN', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 289, 19.5, 28.9, 10.6, 3.0, 15000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Hủ tiếu Sa Đéc', 'Xào'), +('8c22c249-aaa3-54c5-9766-7fe629e879eb', 'Hoành Thánh Tá Lả', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 243, 16.4, 24.3, 8.9, 3.0, 27000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Lá hoành thánh', 'Nấu'), +('f708a894-ab30-54d0-9818-b8f6a27670e0', 'GYOZA MÌ TRỘN', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 410, 18.4, 59.4, 10.9, 3.0, 15000, 300, NULL, true, now(), 'vietnam', 15, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Bánh Xếp Kiểu Nhật Gyoza', 'Gỏi/Trộn'), +('aa1380c6-78a6-5278-8dd7-f8ca819d4542', 'Gyoza Dùng Nồi Chiên Không Dầu Ăn Kèm Rau Củ Sấy', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 218, 8.7, 29.4, 7.3, 3.0, 51000, 300, NULL, true, now(), 'vietnam', 5, 15, 'easy', 'snack', 'vegetarian', 'Bánh xếp kiểu Nhật Gyoza dùng nồi', 'Chiên'), +('b6773ddf-0235-5262-b179-cfaa4ea31045', 'GÀ CHIÊN VỊ BƠ TỎI', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 209, 14.1, 20.9, 7.7, 3.0, 18000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Cánh gà', 'Chiên'), +('d614a7b2-71b9-5a3b-9ba6-528d95718ca2', 'ĐẬU HŨ XỐT CAY XÈ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 249, 16.8, 24.9, 9.1, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Đậu hũ non', 'Nấu'), +('ec62cd14-fd01-562d-a233-8870ad2b0f2f', 'Cơm trộn Vetula', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 433, 19.5, 62.8, 11.5, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Gạo', 'Gỏi/Trộn'), +('dd32a2ae-28ec-5583-80f7-91225d347b33', 'Cơm Thịt Xào Cay', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 137, 6.2, 19.9, 3.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'lunch,dinner', 'balanced', 'Thịt', 'Xào'), +('0117ad67-9019-5905-b517-19e65368468a', 'CƠM THANH CUA TRỨNG CHẢY', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 389, 17.5, 56.4, 10.4, 3.0, 40000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Cơm trắng', 'Kho/Rim'), +('77af20fe-209c-5fa5-bd10-c9aa50da90ff', 'Cơm niêu chay ngũ sắc', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 54, 174, 32, 3.0, 56000, 300, NULL, true, now(), 'vietnam', 15, 30, 'easy', 'lunch,dinner', 'vegetarian', 'Gạo tím', 'Kho/Rim'), +('4fd6995c-4b0a-531a-a5f4-d1b5d3871013', 'Cơm Chiên Tôm Thơm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 288, 13, 41.8, 7.7, 3.0, 25000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Tôm thẻ bóc vỏ / tôm đông lạnh', 'Chiên'), +('5147db32-3487-5b56-bb41-6d8a5c9b5ca9', 'Cơm chiên tôm bông cải', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 338, 15.2, 49, 9, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú bóc vỏ chừa đuôi', 'Chiên'), +('aa93566a-a8e1-5975-9ddd-f9fee9b6aa1c', 'Chả Giò Thanh Cua Mayo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 156, 10.5, 15.6, 5.7, 3.0, 20000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Thanh cua', 'Nấu'), +('40fbdafc-f64a-5fe9-b221-1ca995ea96b9', 'Canh thái hàu trứng cút', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 233, 15.7, 23.3, 8.5, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Thịt hàu', 'Canh/Súp'), +('bb7a9c3d-c4ec-5f72-8e46-66196a9318f1', 'CANH SÚNG CÁ DỨA VŨNG TÀU', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 617, 41.6, 61.7, 22.6, 3.0, 35000, 300, NULL, true, now(), 'vietnam', 15, 10, 'easy', 'lunch,dinner', 'balanced', 'Cá dứa 2 khứa', 'Canh/Súp'), +('9315b80d-2142-5b43-a0cd-76ff70f1d3f1', 'CANH CHUA TÔM BỒN BỒN BÔNG ĐIÊN ĐIỂN', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1131, 76.3, 113.1, 41.5, 3.0, 103000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Tôm càng', 'Kho/Rim'), +('661bad4e-a8d6-5aa4-8e0c-7672eaef37de', 'Cá Hồi Ngâm Nước Tương', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 212, 14.3, 21.2, 7.8, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 5, 5, 'easy', 'lunch,dinner', 'balanced', 'Cá hồi fillet bỏ da', 'Nấu'), +('ca169e9e-102f-53b2-9519-a4b15207fb52', 'Cá Điêu Hồng Chiên Rau Củ Ngũ Sắc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 290, 19.6, 29, 10.6, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 5, 15, 'easy', 'lunch,dinner', 'balanced', 'Phile cá điêu hồng', 'Chiên'), +('4460d91f-7853-5fb0-8906-54fbc3373056', 'Bún chả hến', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 370, 16.6, 53.6, 9.9, 3.0, 23000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Thịt hến', 'Nấu'), +('5428464e-478a-5f0f-834c-247c29de8ff1', 'Bò tiềm trái lê', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 871, 58.8, 87.1, 31.9, 3.0, 50000, 300, NULL, true, now(), 'vietnam', 10, 50, 'easy', 'lunch,dinner', 'balanced', 'Thịt bò', 'Hấp/Tiềm'), +('f9d17d73-3258-5ac4-a0d0-e90f1fcf1e2b', 'BÁNH TRÁNG CUỐN THỊT BĂM', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 266, 18, 26.6, 9.8, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'snack', 'balanced', 'Thịt bò', 'Chiên'), +('2b2af25a-d0c4-5cf7-b221-61afa5ecbd14', 'Bánh Mì Sandwich Nướng Phô Mai', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 652, 29.3, 94.5, 17.4, 3.0, 58000, 300, NULL, true, now(), 'vietnam', 5, 5, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Phô mai lát', 'Nướng'), +('e82fc44c-df2c-5bc3-9b38-2de0366ffad3', 'Bánh Mì Chảo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 560, 25.2, 81.2, 14.9, 3.0, 28000, 300, NULL, true, now(), 'vietnam', 15, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Bánh mì ổ', 'Canh/Súp'), +('624a6bc4-24f7-5581-a77d-54d46112d1f4', 'Bánh Hẹ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 5, 5, 'easy', 'snack', 'balanced', 'Hẹ lá', 'Nấu'), +('490f00a2-105e-517f-84f0-a61d725e00d0', 'Bánh cuốn lạnh', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 330, 22.3, 33, 12.1, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'snack', 'balanced', 'Bánh tráng', 'Nấu'), +('b75684e9-8818-5c5d-bc55-4c6645c2f746', 'Tôm Xào Bông Cải', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 309, 20.9, 30.9, 11.3, 3.0, 27000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú tươi', 'Xào'), +('dc70b813-c5c7-5720-97de-cb370e1630be', 'Lẩu Sườn Bò Chua Cay', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 793, 53.5, 79.3, 29.1, 3.0, 34000, 300, NULL, true, now(), 'vietnam', 15, 20, 'easy', 'lunch,dinner', 'balanced', 'Sườn bò', 'Lẩu'), +('e264594d-10ad-53b2-a7ca-646da2bc73f5', 'Súp Rau Chùm Ngây Đậu Hủ Non', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 441, 17.6, 59.5, 14.7, 3.0, 23000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'vegetarian', 'Nước dùng rau củ', 'Canh/Súp'), +('1d2f4299-6670-5c90-a5fa-cdf61bb448e0', 'Salad Cá Hồi Trộn Bông Cải Trắng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 208, 14, 20.8, 7.6, 3.0, 16000, 300, NULL, true, now(), 'vietnam', 15, 5, 'medium', 'lunch,dinner', 'balanced', 'Cá hồi phi lê', 'Gỏi/Trộn'), +('9c3d138a-b9c3-5b90-b1fc-7f07b83f2781', 'Canh Cá Dưa Cải', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 789, 53.3, 78.9, 28.9, 3.0, 77000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Cá nâu', 'Canh/Súp'), +('36bc65be-be34-52c1-8be5-304afde6976f', 'Cơm Nắm Xốt Mè', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 312, 14, 45.2, 8.3, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 5, 5, 'easy', 'lunch,dinner', 'balanced', 'Cơm trắng dẻo', 'Kho/Rim'), +('3b387c4f-3b84-5e55-83c0-deace30007f8', 'Cuốn Nấm Dưa Gừng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 158, 10.7, 15.8, 5.8, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 15, 20, 'medium', 'lunch,dinner', 'balanced', 'Măng tây', 'Nấu'), +('a04115a4-10ae-5885-9d95-3a443f3d1539', 'Nui Hải Sản Cho Ngày Tình Yêu', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 927, 62.6, 92.7, 34, 3.0, 107000, 300, NULL, true, now(), 'vietnam', 15, 5, 'medium', 'lunch,dinner', 'balanced', 'Nui hình trái tim', 'Nấu'), +('2e511b3e-c599-5d60-8065-f6bc973ba565', 'Mì Ý Cá Hồi Xốt Caesar', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 54, 174, 32, 3.0, 56000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Mì Ý', 'Nấu'), +('9e347db2-6809-5c53-9e29-616f03979d50', 'Tôm Chiên Xốt Mayo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 427, 28.8, 42.7, 15.7, 3.0, 47000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú đông lạnh', 'Chiên'), +('f8f349ca-f6ed-5a88-9ca4-0ff6e62faa77', 'Bò Thưng Cuộn Trứng Cút Xốt Thơm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 136, 9.2, 13.6, 5, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 10, 5, 'medium', 'lunch,dinner', 'balanced', 'Thăn lưng bò', 'Kho/Rim'), +('48d7d91b-76c2-56d2-977b-2bcc436bd955', 'Cá Cơm Than Chiên Cà Ri', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 54, 174, 32, 3.0, 250000, 300, NULL, true, now(), 'vietnam', 10, 10, 'medium', 'lunch,dinner', 'balanced', 'Cá cơm than làm sạch', 'Chiên'), +('7b5a5d5b-ef27-5e7d-9c7c-95d605842039', 'Chè Dưỡng Nhan Blendy®', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 565, 22.6, 76.3, 18.8, 3.0, 45000, 300, NULL, true, now(), 'vietnam', 15, 5, 'medium', 'snack', 'vegetarian', 'Táo đỏ khô', 'Nấu'), +('86baf591-7e4a-526f-944d-882721ae8bc6', 'Bún gạo xào lòng nghệ', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 195, 8.8, 28.3, 5.2, 3.0, 16000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Bún gạo khô', 'Xào'), +('21e8178b-1e7f-532d-8417-eb43ba9d42cb', 'Củ sen chiên tôm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 569, 38.4, 56.9, 20.9, 3.0, 36000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Củ sen', 'Chiên'), +('3e687777-9dc0-5fd4-ac00-b2b838c1befc', 'Canh gà cải bó xôi', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 17.1, 55.1, 10.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Cánh gà', 'Canh/Súp'), +('2fd5b096-56d0-51ad-a293-d5c3fbd99411', 'Tôm càng kho trứng muối', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 170, 11.5, 17, 6.2, 3.0, 15000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Tôm càng', 'Kho/Rim'), +('90e40411-f509-5567-a33b-b690d4f9e97c', 'Đậu chiên thả nước tương', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 25.7, 38, 13.9, 3.0, 49000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Đậu hủ bi', 'Chiên'), +('97f1c65e-d56f-5ec7-88ea-c4ae418a4241', 'Canh chua bồn bồn vị thái', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 150, 10.1, 15, 5.5, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Cá hú', 'Canh/Súp'), +('1dac007d-73c9-5c79-92bb-a45015ccaf7e', 'Mì spaghetti xào tôm nấm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 850, 38.2, 123.2, 22.7, 3.0, 68000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Mì spaghetti số 3 đã', 'Xào'), +('d6ff206d-80de-545d-a51e-9dcb59b92179', 'Xôi viên ngọc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 207, 9.3, 30, 5.5, 3.0, 22000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Nếp bún thơm', 'Nấu'), +('31b958cc-a121-5ceb-b66b-6ae877d70b30', 'Cải bó xôi xào thịt', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 5.4, 17.4, 3.2, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Cải bó xôi', 'Xào'), +('b5afea0b-b494-5e70-9b37-e4d2978f16b6', 'Viên xôi gà bọc lá sen', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 340, 15.3, 49.3, 9.1, 3.0, 24000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Nếp', 'Nấu'), +('c16e4630-9788-5432-b593-b2444d7e5654', 'Ốc hương xào củ dừa', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 300, 20.2, 30, 11, 3.0, 42000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Ốc hương', 'Xào'), +('0e49b2ee-3c90-5a73-bb44-55a52cc19e10', 'RONG BIỂN CUỘN CHIÊN XÙ', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 48, 162, 40, 3.0, 83000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'lunch,dinner', 'vegetarian', 'Cơm trắng', 'Chiên'), +('8ddfc70a-f887-5f2e-81ca-83e2ba938f90', 'Sườn nấu đậu ngự', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 427, 28.8, 42.7, 15.7, 3.0, 25000, 300, NULL, true, now(), 'vietnam', 10, 45, 'easy', 'lunch,dinner', 'balanced', 'Sườn heo non', 'Nấu'), +('d8fda1ba-706a-5386-9156-d82d16fd1cdf', 'Mướp xào đậu phộng', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 284, 12.8, 41.2, 7.6, 3.0, 18000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Mướp hương', 'Xào'), +('965bcd18-e24e-53c3-892a-d2ad02a9b5ab', 'Cá lóc nướng ớt xiêm xanh', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 661, 44.6, 66.1, 24.2, 3.0, 38000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cá lóc con vừa', 'Nướng'), +('ad14f30d-2b7c-5894-84aa-eae5f01484d7', 'Cá hồi chiên mắm dừa', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 217, 14.6, 21.7, 8, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Cá hồi phi lê', 'Chiên'), +('6de34a76-83b1-5dbf-a706-ddfa1fef4d9c', 'Cánh gà rim hạt đác', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 10, 17, 'easy', 'lunch,dinner', 'balanced', 'Cánh gà khúc giữa', 'Kho/Rim'), +('eb09b5c1-cc9b-54c4-ac09-c0ea76d0be0d', 'Mực nhồi chả tôm nướng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 35000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Tôm đông lạnh không vỏ', 'Nướng'), +('1756b0a4-9e15-5263-9e6b-0fc82b1fb93e', 'Cuốn rong biển chay chấm xốt đậu phộng', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 268, 12.1, 38.9, 7.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Bánh tráng', 'Nấu'), +('4fad619d-f8a7-5b48-9002-2c4026e1261d', 'Rau muống xào mắm ruốc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 25.7, 38, 13.9, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Rau muống hạt', 'Xào'), +('e00c5f7f-0678-56b3-bb43-4fdf41dc1814', 'Bánh giò trứng cút', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 324, 21.9, 32.4, 11.9, 3.0, 29000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'snack', 'balanced', 'Bôt gạo lọc', 'Nấu'), +('716169dd-a274-5e9d-91d3-3d3b3cdced54', 'Mì xào giòn chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 256, 11.5, 37.1, 6.8, 3.0, 22000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Mì', 'Xào'), +('348e5c8a-3072-5daa-80c8-93c9b30f1ac3', 'Sườn chiên cay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 135, 5.4, 18.2, 4.5, 3.0, 13000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'vegetarian', 'Sườn non', 'Chiên'), +('385af952-3b6c-50e6-a478-50f7b59e33c9', 'Salad nui', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 25.7, 38, 13.9, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Nui xoắn', 'Gỏi/Trộn'), +('4b3bb2c0-3e49-5902-9cf5-6be7560c6ccc', 'Bí đỏ hấp hải sản', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 10, 45, 'easy', 'lunch,dinner', 'balanced', 'Bí đỏ tròn', 'Hấp/Tiềm'), +('dfa5e691-0a38-53b9-b5ea-3387ac750a99', 'Mì căn xào sả ớt', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 17.1, 55.1, 10.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Mì căn', 'Xào'), +('30d5d373-020d-5f16-9f38-c84ab8075dab', 'Salad táo rau mầm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 157, 10.6, 15.7, 5.8, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú', 'Gỏi/Trộn'), +('90788f4b-1c27-5b0b-ad72-96959705f561', 'Chả bắp', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 48, 162, 40, 3.0, 28000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'vegetarian', 'Bắp nếp', 'Nấu'), +('166ccf97-1975-549c-8ab7-76ba10c2e918', 'Gà hấp hành răm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 172, 11.6, 17.2, 6.3, 3.0, 16000, 300, NULL, true, now(), 'vietnam', 10, 45, 'easy', 'lunch,dinner', 'balanced', 'Gà ta', 'Hấp/Tiềm'), +('fcb3741e-2a81-5fe5-a4dd-855e5b49392b', 'Canh bí đỏ rong biển', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 449, 18, 60.6, 15, 3.0, 57000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'vegetarian', 'Bí đỏ', 'Canh/Súp'), +('6cca9ac0-38ad-5bfd-90d6-a17b66ee34a0', 'Chạo chay sả cây', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 513, 23.1, 74.4, 13.7, 3.0, 29000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Giò sống chay', 'Canh/Súp'), +('082bbf1c-0ab4-5d12-a9ba-c08dc84d0cd6', 'Rau củ kho chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 15.2, 51.3, 12.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'vegetarian', 'Đậu que', 'Kho/Rim'), +('bee657e8-91fc-5a30-87aa-353a865056dc', 'Chả ốc chiên', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 182, 12.3, 18.2, 6.7, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Thịt ốc bươu', 'Chiên'), +('c63ddfae-6c0f-56a2-902b-6e1b25a8d09e', 'Vịt rang tỏi', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 348, 23.5, 34.8, 12.8, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Thịt vịt', 'Chiên'), +('fa424ea7-f93c-5292-91f6-c9a4e90fb902', 'Bánh tôm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 483, 32.6, 48.3, 17.7, 3.0, 22000, 300, NULL, true, now(), 'vietnam', 10, 60, 'easy', 'snack', 'balanced', 'Bột mì', 'Kho/Rim'), +('eed6356e-6c8a-515d-9c2b-b86939169e26', 'Khổ qua kho chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 48, 162, 40, 3.0, 34000, 300, NULL, true, now(), 'vietnam', 10, 35, 'easy', 'lunch,dinner', 'vegetarian', 'Khổ qua to', 'Kho/Rim'), +('c43bb373-dd5c-542a-bc0d-46449ff2f4a4', 'Canh chua cá kèo bông so đũa', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 253, 17.1, 25.3, 9.3, 3.0, 22000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cá kèo', 'Canh/Súp'), +('91695900-e51b-5fc2-b65f-46846e1b9ffb', 'Đậu hũ xào nấm', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 313, 12.5, 42.3, 10.4, 3.0, 13000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'vegetarian', 'Đậu hũ non', 'Xào'), +('9badd4e9-fa12-5fa6-ad96-62c24a8fae78', 'Lẩu bò', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 664, 44.8, 66.4, 24.3, 3.0, 34000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Nạm bò', 'Lẩu'), +('0f13aee0-d50f-5fc9-993c-e9762b3ad64f', 'Tôm kho tàu', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 194, 13.1, 19.4, 7.1, 3.0, 28000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Tôm càng sống', 'Kho/Rim'), +('3c0631f4-bc8d-5d9b-99c9-41aea3a02bf9', 'Canh hào thanh mát', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 82000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Hào sữa thịt', 'Canh/Súp'), +('fce6ef9a-22d9-5929-ba94-48c2d07106f0', 'Phở chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 350, 15.8, 50.8, 9.3, 3.0, 38000, 300, NULL, true, now(), 'vietnam', 10, 25, 'medium', 'breakfast,lunch,dinner', 'vegetarian', 'Bò lát chay', 'Nấu'), +('239d916e-f3f7-5bab-9993-4eb026e48e8b', 'Kho quẹt chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 176, 7, 23.8, 5.9, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'vegetarian', 'Sườn chay', 'Kho/Rim'), +('668aeb0f-5d05-517b-b7c3-a7c3fcb896fa', 'Pad Thái chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 316, 12.6, 42.7, 10.5, 3.0, 13000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'vegetarian', 'Bánh phở khô', 'Nấu'), +('cd21b499-61ff-5909-81da-e7d8b724f599', 'Cá nục kho rục', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 302, 20.4, 30.2, 11.1, 3.0, 26000, 300, NULL, true, now(), 'vietnam', 10, 60, 'easy', 'lunch,dinner', 'balanced', 'Cá nục', 'Kho/Rim'), +('94f2fdec-4fab-5100-8291-bb90769013a6', 'Lẩu nấm chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 240, 9.6, 32.4, 8, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 10, 35, 'easy', 'lunch,dinner', 'vegetarian', 'Mía lau', 'Lẩu'), +('163fdb3e-de2a-5c59-9123-36dc754338d3', 'Bánh há cảo', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 459, 18.4, 62, 15.3, 3.0, 13000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'snack', 'vegetarian', 'Cà rốt', 'Nấu'), +('8b9efb2e-3478-512f-9686-29b92de6c218', 'Củ sen xào ngũ vị', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 229, 9.2, 30.9, 7.6, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'vegetarian', 'Chả chay', 'Xào'), +('3abe7f85-7a39-5d50-b9a6-218c1aa5dd75', 'Gỏi rong biển', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 140, 9.5, 14, 5.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Rong biển khô', 'Gỏi/Trộn'), +('bd742e67-7e4b-5de8-a153-2b94b7751607', 'Cá viên chiên mè', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 419, 28.3, 41.9, 15.4, 3.0, 28000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cá thác lác', 'Chiên'), +('1c1f7243-1981-5860-8232-f7d7b4229391', 'Cháo cá giò heo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 389, 17.5, 56.4, 10.4, 3.0, 27000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Gạo thơm', 'Canh/Súp'), +('c0c0a44f-6235-5508-a26c-fe97535e287a', 'Nem hải sản', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 202, 13.6, 20.2, 7.4, 3.0, 23000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú', 'Nấu'), +('9b23ac8a-f5ea-5152-92cb-a5d308da4d7b', 'Miến trộn kiểu Thái', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 422, 28.5, 42.2, 15.5, 3.0, 45000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Miến', 'Gỏi/Trộn'), +('28c9d587-9700-52c4-b8a5-8fcadc46c637', 'Bì cuốn chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1087, 43.5, 146.7, 36.2, 3.0, 30000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'vegetarian', 'Chả lụa chay', 'Nấu'), +('7d997b0b-d447-5500-bee6-268d5a8991c2', 'Cá chim chiên giòn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 357, 24.1, 35.7, 13.1, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cá chim', 'Chiên'), +('f099d162-ccc8-52a5-896e-8f62834072b2', 'Gân bò xào sả ớt', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 160, 10.8, 16, 5.9, 3.0, 22000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Gân bò', 'Xào'), +('c55a8b88-88ec-538f-acbc-848b76969e87', 'Canh cá nấu mẻ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 206, 13.9, 20.6, 7.6, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Cá lóc bông', 'Canh/Súp'), +('6668f78e-6a5a-5462-9761-7ab7cc0483f0', 'Bò kho nước dừa', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 862, 58.2, 86.2, 31.6, 3.0, 23000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Thịt bắp bò', 'Kho/Rim'), +('c9eb0836-573f-58cd-85e2-d57e6d0614e3', 'Cá điêu hồng kho tương bần', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 328, 22.1, 32.8, 12, 3.0, 29000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Cá điêu hồng', 'Kho/Rim'), +('1775e3ea-2824-576d-9eb5-3478a9059e1b', 'Mắm kho', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 262, 17.7, 26.2, 9.6, 3.0, 28000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cá hú hoặc cá basa', 'Kho/Rim'), +('6612b58c-d3b8-5f50-ab07-867f2ba5d6bd', 'Bánh bèo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 151, 10.2, 15.1, 5.5, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 40, 'easy', 'snack', 'balanced', 'Tôm sú sống', 'Nấu'), +('93082e44-fbdf-5766-ad78-49e48f3bb32e', 'Salad ức gà áp chảo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 145, 6.5, 21, 3.9, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Thịt nguội', 'Gỏi/Trộn'), +('025a7296-c4f1-55b0-b068-360afde80e54', 'Phở gà', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 500, 22.5, 72.5, 13.3, 3.0, 124000, 300, NULL, true, now(), 'vietnam', 10, 180, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Bánh phở', 'Nấu'), +('7fceaecc-d25f-5a47-ab22-ebc4a4bf0d18', 'Cá hồi lúc lắc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 850, 57.4, 85, 31.2, 3.0, 31000, 300, NULL, true, now(), 'vietnam', 10, 40, 'easy', 'lunch,dinner', 'balanced', 'Cá hồi fillet', 'Nấu'), +('0d31e5ff-f6a5-5b26-9a20-8c1978b24e03', 'Ức gà hấp cải thảo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 459, 31, 45.9, 16.8, 3.0, 23000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Ức gà không da', 'Hấp/Tiềm'), +('c1c91e79-32c9-5204-a5d2-7ef545c13d2d', 'Gà nướng xiên', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 850, 57.4, 85, 31.2, 3.0, 18000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Má đùi gà rút xương', 'Nướng'), +('d54c9fc3-ad24-5afd-9f00-77a0dde7a268', 'Salad bơ cải kale ức gà', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 413, 27.9, 41.3, 15.1, 3.0, 20000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Ức gà file', 'Gỏi/Trộn'), +('c3cc221c-bf80-5bde-8add-7eb13334c43f', 'Đậu trộn dầu giấm xốt mè rang', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 679, 45.8, 67.9, 24.9, 3.0, 32000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Đậu trắng lon', 'Gỏi/Trộn'), +('01deb4e0-b046-5394-829e-c678f48c79e9', 'Mì udon xào bò', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 850, 38.2, 123.2, 22.7, 3.0, 26000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Thịt nạc bò mềm', 'Xào'), +('baa98b8e-d685-5e3c-9ee5-9e0c7fada5ff', 'Rau củ luộc và cơm chiên giòn chấm kho quẹt', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 450, 20.2, 65.2, 12, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'vegetarian', 'Bông cải trắng', 'Chiên'), +('41922670-9784-5f84-a3a2-38466c689310', 'Gỏi cuốn tôm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 324, 21.9, 32.4, 11.9, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Tôm', 'Gỏi/Trộn'), +('dcf7797e-48b6-5223-a55e-62eaec7bbe15', 'Đậu hũ hấp trứng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 204, 13.8, 20.4, 7.5, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Đậu hủ non', 'Hấp/Tiềm'), +('e1ce4120-6223-5cc5-931d-981afc8d0acb', 'Cơm gạo lứt trộn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 306, 13.8, 44.4, 8.2, 3.0, 23000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Gạo lứt', 'Gỏi/Trộn'), +('933249d8-8052-5197-bef6-de3db06de5c9', 'Bún cá hộp', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 850, 38.2, 123.2, 22.7, 3.0, 28000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Cá hộp', 'Nấu'), +('2d8b21bf-caf5-5c28-8c86-476a80a05d68', 'Bông cải xào nước tương', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 800, 54, 80, 29.3, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Bông cải trắng', 'Xào'), +('6844ede7-de9c-5eb3-beaa-083491e1517e', 'Ba chỉ chiên riềng mẻ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 303, 20.5, 30.3, 11.1, 3.0, 22000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Thịt ba chỉ đầu giòn', 'Chiên'), +('9962fd0c-1e64-5f2c-a1fb-f6a2796a5895', 'Lươn nướng lá chanh', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 138000, 300, NULL, true, now(), 'vietnam', 10, 55, 'medium', 'lunch,dinner', 'balanced', 'Thịt lươn', 'Nướng'), +('870ea20b-85ed-5e1c-bce4-6847629b922b', 'Lẩu cá lăng vị Thái', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 667, 45, 66.7, 24.5, 3.0, 37000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Cá lăng', 'Lẩu'), +('498f2f3b-f33d-5a3f-a2f9-bc4d91fa051e', 'Cupcake trứng muối chà bông phô mai', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 17.1, 55.1, 10.1, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Trứng muối', 'Nấu'), +('222f4602-d3ff-58cc-8e29-8544ee311da3', 'Gà om kiểu hoa', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 259, 17.5, 25.9, 9.5, 3.0, 38000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Cánh gà', 'Kho/Rim'), +('cddede87-0797-5f32-9264-02d839626457', 'Ba chỉ rim mắm ruốc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 139, 9.4, 13.9, 5.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Thịt ba chỉ', 'Kho/Rim'), +('77c910df-a0ea-5e61-968b-4cc4b75c01b3', 'Ốc xào khế', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 91000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Thịt ốc bươu', 'Xào'), +('518e425d-a176-5214-84ad-ae49df96f693', 'Bún trộn ngũ sắc', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 450, 20.2, 65.2, 12, 3.0, 16000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Nấm rơm', 'Gỏi/Trộn'), +('f80e5692-4abe-51f3-a506-cddfd5b8e855', 'Cá lòng tong rim nước mắm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 147, 9.9, 14.7, 5.4, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cá lòng tong', 'Kho/Rim'), +('a8439524-6f05-5ce3-af0a-82695a4587eb', 'Canh gà tứ quý', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 600, 40.5, 60, 22, 3.0, 25000, 300, NULL, true, now(), 'vietnam', 10, 60, 'easy', 'lunch,dinner', 'balanced', 'Gà ta', 'Canh/Súp'), +('bc73e3ec-e150-5ebf-8b7c-125fad291ace', 'Blendy gạo rang kem chuối', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 225, 9, 30.4, 7.5, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'snack', 'vegetarian', 'Blendy Trà Matcha Gạo Rang', 'Chiên'), +('f5fc8455-c44e-5ac1-a225-c28152a67c37', 'Canh khoai mì nấu tôm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 393, 17.7, 57, 10.5, 3.0, 20000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Tôm', 'Kho/Rim'), +('75a4733b-b7b1-56c4-b0ad-3c1b1ba66fb8', 'Đùi gà xốt kiểu Teriyaki', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 10, 25, 'easy', 'lunch,dinner', 'balanced', 'Đùi gà gốc 4, không xương bọng', 'Nấu'), +('ec1d09b0-4151-5a77-ad34-074e81204187', 'Cuốn chay đậu hũ rau rừng', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 240, 9.6, 32.4, 8, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 35, 'easy', 'lunch,dinner', 'vegetarian', 'Đậu hủ trắng', 'Nấu'), +('34fffd03-5530-5cd1-88b3-dedb69390dee', 'Cánh gà chiên lá chanh', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 143000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Cách gà công nghiệp', 'Chiên'), +('8087b656-70fd-54c5-87de-f56d487afc6f', 'Xúc xích dưa cải', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 227, 9.1, 30.6, 7.6, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'vegetarian', 'Xúc xích Đức', 'Nấu'), +('7342f991-27ee-5067-a75c-479b2f856d5f', 'Bò áp chảo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 970, 43.6, 140.6, 25.9, 3.0, 29000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Thịt thăn bò', 'Áp chảo'), +('f41d056b-4a25-5c0c-93f2-c76b92e7d2a2', 'Salad trứng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 25.7, 38, 13.9, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Trứng gà', 'Gỏi/Trộn'), +('a868dd86-9237-57b7-a9be-c6695cb56b8f', 'Canh chua cá lóc đậu tương', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 239, 16.1, 23.9, 8.8, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Cá lóc', 'Canh/Súp'), +('203c93be-7bff-59ef-af3f-2440b2d437f2', 'Gỏi gà cần tây', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 171, 11.5, 17.1, 6.3, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Gà ta', 'Gỏi/Trộn'), +('26775e05-b2a0-52e7-a76a-8b212d31371f', 'Bò cuộn rong biển', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 932, 62.9, 93.2, 34.2, 3.0, 61000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Bò', 'Nấu'), +('cb573170-0f75-5f18-a565-fff448cbac4f', 'Bún riêu cua bắp bò', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 823, 37, 119.3, 21.9, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Bắp bò hoa', 'Nấu'), +('1783fb4b-5f83-5e7e-97dd-02a2f8f5c097', 'Canh cá rau cần', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 276, 18.6, 27.6, 10.1, 3.0, 24000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Cá lóc', 'Canh/Súp'), +('ff2d1657-1cca-516a-a973-6cbc7838cef7', 'Sườn bò hầm đậu phộng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 655, 29.5, 95, 17.5, 3.0, 37000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Sườn bò', 'Nấu'), +('349ea7b0-1542-5012-960f-97ceea1840fb', 'Gà xào tiêu đen', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 287, 19.4, 28.7, 10.5, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 10, 40, 'easy', 'lunch,dinner', 'balanced', 'Đùi gà góc', 'Xào'), +('f8b93b7b-5930-56ae-9f20-0cabf5156d94', 'Cơm gà nướng nước tương', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 900, 40.5, 130.5, 24, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Thịt má đùi gà rút xương', 'Nướng'), +('07c3a6a3-804a-5d10-8909-8adac32fdf4b', 'Blendy trà đào cam sả', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 500, 20, 67.5, 16.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 5, 10, 'easy', 'snack', 'vegetarian', 'Blendy Trà đào cam sả', 'Nấu'), +('2e888e55-5ce4-55bd-b30f-b000eec064bc', 'Salad bít tết', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 16000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Bò Sirlion Úc', 'Gỏi/Trộn'), +('d84675ea-9716-5a16-af03-aed7a2f76a3a', 'Cơm giòn tôm kho quẹt', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 301, 13.5, 43.6, 8, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Tôm thẻ', 'Kho/Rim'), +('22265bf4-d4ca-59ba-9021-5d441a101c38', 'Cá chép kho riềng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 1200, 81, 120, 44, 3.0, 76000, 300, NULL, true, now(), 'vietnam', 10, 40, 'easy', 'snack', 'balanced', 'Cá chép', 'Kho/Rim'), +('3120190f-642c-5306-8a57-c24c1f3a97fd', 'Da heo chiên nước mắm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 25.7, 38, 13.9, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 15, 10, 'easy', 'lunch,dinner', 'balanced', 'Da heo', 'Chiên'), +('27ba31fe-96e6-56e0-a330-e2989bc0ab3f', 'Cá hấp mồng tơi', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 600, 40.5, 60, 22, 3.0, 41000, 300, NULL, true, now(), 'vietnam', 15, 20, 'easy', 'lunch,dinner', 'balanced', 'Cá chim', 'Hấp/Tiềm'), +('66b33e9a-2c3b-5c4a-926e-292673dd2c56', 'Mực xào đậu Hà Lan', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 720, 48.6, 72, 26.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Mực sữa', 'Xào'), +('c2661068-6cd2-5f13-84fa-9ab25ac46f5a', 'Thịt bê xào lăn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 584, 39.4, 58.4, 21.4, 3.0, 31000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Thịt bê', 'Xào'), +('04975910-9546-5ea9-af79-a49e0fb74a8d', 'Lẩu bò thảo mộc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 330, 22.3, 33, 12.1, 3.0, 20000, 300, NULL, true, now(), 'vietnam', 30, 5, 'easy', 'lunch,dinner', 'balanced', 'Thịt nạm bò', 'Lẩu'), +('270ab5cb-7c3c-5854-8171-e561effe3370', 'Cá bống trứng kho tiêu', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 150, 10.1, 15, 5.5, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Cá bống trứng', 'Kho/Rim'), +('4e21b11b-46f8-5bb1-b76b-84f58b8d3737', 'Sườn chay om nấm đùi gà', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 400, 16, 54, 13.3, 3.0, 31000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'vegetarian', 'Sườn chay', 'Kho/Rim'), +('72c05d56-21f8-529b-a09c-f7ec522a3da9', 'Trà sữa matcha khoai môn', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 327, 13.1, 44.1, 10.9, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'snack', 'vegetarian', 'Khoai môn', 'Kho/Rim'), +('17a4a4bd-9e7e-5689-874b-f24092478437', 'Gà hấp tứ quý chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 125, 5, 16.9, 4.2, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'vegetarian', 'Nấm đùi gà', 'Hấp/Tiềm'), +('714c5809-6b53-5b96-9a7d-6a96ed2e9910', 'Thịt bò chiên trộn cải mầm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 221, 14.9, 22.1, 8.1, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Thịt thăn bò', 'Gỏi/Trộn'), +('c0b51ed0-421d-5fa5-a74c-3972b228a648', 'Mề gà xào cay', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 159, 10.7, 15.9, 5.8, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Mề gà', 'Xào'), +('18a1ab9f-87a1-56f4-b627-2b9369a3cbae', 'Cá basa fillet chiên trứng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 231, 15.6, 23.1, 8.5, 3.0, 21000, 300, NULL, true, now(), 'vietnam', 15, 15, 'medium', 'lunch,dinner', 'balanced', 'Cá basa fillet đông lạnh', 'Chiên'), +('66523840-0639-5eb5-b5ad-6e04707e43b6', 'Vịt nấu cơm rượu', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 428, 19.3, 62.1, 11.4, 3.0, 24000, 300, NULL, true, now(), 'vietnam', 15, 35, 'easy', 'lunch,dinner', 'balanced', 'Thịt vịt xiêm', 'Kho/Rim'), +('8580824e-d435-57aa-9e2b-373c837dc68a', 'Bánh rán burger bò', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 225, 15.2, 22.5, 8.2, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'snack', 'balanced', 'Thịt bò', 'Chiên'), +('29eca3d8-b8cf-5b9f-9346-277e4e9b2639', 'Phở tái lăn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 555, 25, 80.5, 14.8, 3.0, 16000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Bò phi lê', 'Nấu'), +('0084efc2-b5ca-5ce8-a899-6b851f625cb8', 'Cá nục kho mía', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 186, 12.6, 18.6, 6.8, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Cá nục con nhỏ', 'Kho/Rim'), +('490fb3c5-dbad-58ee-9de5-cd140f5e57e5', 'Salad rong nho xốt mè rang', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 25.7, 38, 13.9, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Xà lách romain', 'Gỏi/Trộn'), +('194098a5-b344-536a-94fb-f0f4d853316f', 'Cá hồi hạnh nhân xốt chanh dây', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 144, 9.7, 14.4, 5.3, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 5, 5, 'easy', 'lunch,dinner', 'balanced', 'Cá hồi phi lê bỏ da', 'Nấu'), +('a280d43e-7d6f-5caf-9e78-051732962c36', 'Canh lươn bồn bồn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 341, 23, 34.1, 12.5, 3.0, 30000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Lươn', 'Canh/Súp'), +('45949a46-3e8a-59f4-8cb9-09d7f279099b', 'Lẩu sườn khoai môn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 151, 10.2, 15.1, 5.5, 3.0, 32000, 300, NULL, true, now(), 'vietnam', 10, 35, 'easy', 'lunch,dinner', 'balanced', 'Sườn non heo', 'Kho/Rim'), +('a6bc83c3-15c6-54c3-8478-0931ae416bbc', 'Viên xúc xích trứng cút chiên', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 350, 23.6, 35, 12.8, 3.0, 18000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Giò sống', 'Chiên'), +('4be55f7e-08ab-5444-9172-b07c091f4cd6', 'Cháo cá nấu bắp nếp', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 450, 20.2, 65.2, 12, 3.0, 27000, 300, NULL, true, now(), 'vietnam', 10, 40, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Thịt cá lóc', 'Canh/Súp'), +('52c41267-865e-5a7a-936c-7908e306a0a1', 'Nghêu kho nước tương', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 183, 12.4, 18.3, 6.7, 3.0, 31000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Thịt nghêu đông lạnh', 'Kho/Rim'), +('cdc003c8-f541-5cbe-a0f7-98d12fdf032f', 'Súp gà mọc nấm hương', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 200, 13.5, 20, 7.3, 3.0, 18000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Gà ta', 'Canh/Súp'), +('5046e7c1-e986-5ff4-b3ab-b034b47239d7', 'Tim heo nướng ngũ vị', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 150, 10.1, 15, 5.5, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Tim heo', 'Nướng'), +('15e0b866-9673-58fc-8f48-03532a84d939', 'Canh tôm bồ ngót', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 150, 10.1, 15, 5.5, 3.0, 23000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Tôm đất', 'Kho/Rim'), +('6173b093-a39d-5b95-9073-052e5457e0c5', 'Canh sườn đậu phộng xá bấu', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 250, 11.2, 36.2, 6.7, 3.0, 20000, 300, NULL, true, now(), 'vietnam', 15, 30, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Sườn non heo', 'Canh/Súp'), +('5db50c4e-44da-5054-b4a4-cbb54158c3b9', 'Tôm sú kho lá quế', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 31000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Tôm sú', 'Kho/Rim'), +('6a0f2c7a-fc61-53c1-a169-9923dfb34639', 'Sườn kho khoai tây', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 240, 9.6, 32.4, 8, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'vegetarian', 'Sườn non', 'Kho/Rim'), +('1720077c-e1b4-5bcd-b37a-e7975cfa39c2', 'Cơm sen gạo lứt chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 17.1, 55.1, 10.1, 3.0, 28000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'vegetarian', 'Cơm gạo tím', 'Kho/Rim'), +('6b324831-4c61-5dea-9c76-e8ec2a145df1', 'Chả giò rong biển chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 150, 6, 20.2, 5, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'vegetarian', 'Đậu hủ trắng', 'Nấu'), +('0a9b4346-2cc9-55f7-890a-3b6c58df757f', 'Panna Cotta Kem Muối', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 311, 21, 31.1, 11.4, 3.0, 68000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'snack', 'balanced', 'Whipping cream', 'Nấu'), +('bb0d6c4f-ade8-56dc-8aac-8837c05bbf96', 'Bò cuộn xúc xích chiên giòn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 250, 16.9, 25, 9.2, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'balanced', 'Ba chỉ bò Úc', 'Chiên'), +('3b62874e-7575-5d35-9ebc-b937bbf8e7b5', 'Canh ốc mồng tơi', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 180, 12.2, 18, 6.6, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Thịt ốc bươu', 'Canh/Súp'), +('2803d46c-1c13-5ed8-a679-d764de025994', 'Salad bơ bacon', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 200, 8, 27, 6.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'vegetarian', 'Bơ trái', 'Gỏi/Trộn'), +('acebc6fa-2a4a-5dc6-8dc2-05a2a215208c', 'Củ năng om nấm chay', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 240, 9.6, 32.4, 8, 3.0, 30000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'vegetarian', 'Củ năng', 'Kho/Rim'), +('e7188570-b07e-568a-a041-cd5c726cddcc', 'Mì Ý bò băm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 400, 18, 58, 10.7, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 5, 20, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Mì Ý', 'Nấu'), +('695967c9-9e99-5b70-8a77-b449ea5f3ba3', 'Cá chép chiên giòn cuốn bánh tráng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 250, 16.9, 25, 9.2, 3.0, 51000, 300, NULL, true, now(), 'vietnam', 30, 35, 'easy', 'snack', 'balanced', 'Cá chép ta', 'Chiên'), +('cac33a53-d19e-5cc6-a16e-212a05d092aa', 'Lẩu kim chi phô mai', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 400, 18, 58, 10.7, 3.0, 14000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Thịt ba chỉ bò', 'Lẩu'), +('1a5b15f0-a8be-5849-9621-a27a9192745c', 'Vịt kho riềng ớt khô', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 200, 13.5, 20, 7.3, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 15, 15, 'easy', 'lunch,dinner', 'balanced', 'Vịt', 'Kho/Rim'), +('9705f5a9-3f39-5b1d-ac60-0531850aae5e', 'Ức gà nhồi phô mai', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 300, 13.5, 43.5, 8, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Ức gà', 'Nấu'), +('5a6123bc-4d16-5ae8-86ad-29dcff659847', 'Súp mộc nhĩ thịt cua', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 528, 35.6, 52.8, 19.4, 3.0, 51000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Mộc nhĩ', 'Canh/Súp'), +('511cee36-1ae2-57fc-9ee2-46efea83b443', 'Bánh bông lan bơ hành', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 400, 27, 40, 14.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'snack', 'balanced', 'Trứng gà', 'Nấu'), +('1490280a-dccb-5f41-9ade-69277d3120db', 'Cánh gà chiên lá quế', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 150, 10.1, 15, 5.5, 3.0, 250000, 300, NULL, true, now(), 'vietnam', 30, 20, 'easy', 'lunch,dinner', 'balanced', 'Gà ta', 'Chiên'), +('ef2d1045-3eeb-5ed4-9ced-3d6e3d1daea5', 'Bánh crepe áp chảo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 420, 18.9, 60.9, 11.2, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Trứng gà', 'Áp chảo'), +('c7a72562-7f81-55b4-b84f-9e72adf68f52', 'Đùi ếch chiên', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 250, 10, 33.8, 8.3, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 15, 5, 'easy', 'lunch,dinner', 'vegetarian', 'Đùi ếch tươi to', 'Chiên'), +('b525cca3-7813-59ba-81ee-5158e0252d2d', 'Thịt Ba Rọi Tẩm Trứng Chiên Giòn', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 330, 22.3, 33, 12.1, 3.0, 37000, 300, NULL, true, now(), 'vietnam', 20, 10, 'easy', 'lunch,dinner', 'balanced', 'Thịt ba rọi', 'Chiên'), +('52216f69-4d64-53b1-941d-df8aad616d93', 'Bắp hạt chiên giòn', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 254, 10.2, 34.3, 8.5, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'vegetarian', 'Bắp mỹ', 'Chiên'), +('7652fe40-4d4f-5732-8a20-4f65520a1285', 'Canh sườn bò Hàn Quốc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 130, 8.8, 13, 4.8, 3.0, 25000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Sườn bò', 'Canh/Súp'), +('f3d4f05e-c9ed-5bef-bb3c-fa941ace2064', 'Gyoza', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 4.8, 16.2, 4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 6, 'easy', 'lunch,dinner', 'vegetarian', 'Bắp cải', 'Nấu'), +('dab30dbb-4186-5528-b8c3-39f5e280a144', 'Cá lóc cuộn nghệ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 221, 14.9, 22.1, 8.1, 3.0, 20000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Cá lóc phi lê', 'Nấu'), +('eca9f3b8-c632-5176-a938-23655ba4df6d', 'Bánh canh cua phồng tôm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 400, 18, 58, 10.7, 3.0, 178000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Thịt bắp đùi heo', 'Kho/Rim'), +('ac8dd766-644f-5dc0-8c58-6388115e6fe8', 'Bánh áp chảo mì gói và bắp', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 223, 10, 32.3, 5.9, 3.0, 34000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Mì gói', 'Gỏi/Trộn'), +('39670a8e-99ae-5764-9552-3ad4d6b60959', 'Salad cá hồi sốt tôm khô', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 284, 19.2, 28.4, 10.4, 3.0, 23000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Cá hồi phi lê', 'Gỏi/Trộn'), +('762d805c-fa29-5ee6-8b87-d589f5ff5c1e', 'Mì trộn sốt kho quẹt', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 164, 7.4, 23.8, 4.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Thịt thăn bò', 'Gỏi/Trộn'), +('486acd6c-7615-5c17-a0ac-21a89f279ec4', 'Bánh nướng Halloween', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 250, 16.9, 25, 9.2, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'snack', 'balanced', 'Trứng gà', 'Nướng'), +('ce8372a3-2133-59a8-99a3-35adbad52127', 'Mì xào xá xíu', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 400, 18, 58, 10.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 45, 'medium', 'breakfast,lunch,dinner', 'vegetarian', 'Mì tươi', 'Xào'), +('3d751cb2-5a5a-5e0f-817c-f7f1894dfb74', 'Salad bacon', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 150, 6, 20.2, 5, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'vegetarian', 'Bacon xông khói', 'Gỏi/Trộn'), +('91b9a35b-2c35-5476-96f8-937b6745191d', 'Bánh tráng cuộn trứng áp chảo', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 200, 9, 29, 5.3, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 9, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Bánh tráng', 'Chiên'), +('486fdd6a-02bf-562e-af2b-6b64b35aada9', 'Gà Chiên Giòn Xóc Vị Thái', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 184, 12.4, 18.4, 6.7, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'lunch,dinner', 'balanced', 'Gà phi lê', 'Chiên'), +('25647b24-96da-5721-b0d2-da8038af5532', 'Bắp Bò Nhúng Mắm Ruốc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 400, 27, 40, 14.7, 3.0, 42000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Bắp bò hoa', 'Nấu'), +('d737f1e1-1198-53fe-9f02-0e1f25d4c896', 'Canh Bí Đao Rong Biển', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 380, 25.7, 38, 13.9, 3.0, 15000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Tôm thẻ', 'Canh/Súp'), +('b96eed62-5b7e-5f4c-8a66-2c9a20338e68', 'Mì Trộn Vị Thái', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 350, 15.8, 50.8, 9.3, 3.0, 22000, 300, NULL, true, now(), 'vietnam', 10, 27, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Mực', 'Gỏi/Trộn'), +('4fec6fb1-fe4c-5b39-b5f6-fecd9c539c2b', 'Canh bầu mồng tơi', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 8.1, 12, 4.4, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 20, 20, 'easy', 'lunch,dinner', 'balanced', 'Trứng vịt lộn', 'Canh/Súp'), +('301bee4b-b603-52fb-80c4-4f1af5b0ae16', 'Bún giò heo cay', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 400, 18, 58, 10.7, 3.0, 38000, 300, NULL, true, now(), 'vietnam', 50, 20, 'medium', 'breakfast,lunch,dinner', 'balanced', 'Giò nạc', 'Nấu'), +('5ed92339-52a8-5032-92d1-325d3e20182c', 'Miến trộn bò bằm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 280, 18.9, 28, 10.3, 3.0, 20000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Thịt bò', 'Gỏi/Trộn'), +('39fb3f53-a93b-5c49-a359-77c64b920080', 'Cá bông lau chua ngọt', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 260, 17.6, 26, 9.5, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Fillet cá bông lau', 'Lẩu'), +('1b047ab5-0953-5929-83a8-5970fa39bf07', 'Lẩu sườn cọng', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 280, 18.9, 28, 10.3, 3.0, 61000, 300, NULL, true, now(), 'vietnam', 10, 20, 'medium', 'lunch,dinner', 'balanced', 'Sườn sụn non', 'Lẩu'), +('0045432c-87ba-5ef4-bb41-f0005ef39593', 'Blendy®matcha sữa tào phớ', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 462, 20.8, 67, 12.3, 3.0, 36000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'breakfast,lunch,dinner', 'vegetarian', 'Blendy Trà Matcha Sữa', 'Nấu'), +('da46af0f-4f25-5b45-a13d-dbb5812d355a', 'Hoành thánh tôm xốt vị Thái', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 554, 37.4, 55.4, 20.3, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Lá hoành thánh', 'Kho/Rim'), +('1150934d-ed17-57e2-8411-7e17e9ca32c0', 'Trà thạch vải hoa hồng', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 136, 5.4, 18.4, 4.5, 3.0, 15000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'snack', 'vegetarian', 'Thạch rau câu dẻo', 'Nấu'), +('e9d41921-937f-5973-9892-5cfd67c8c7a3', 'Bột chiên bắp', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 523, 35.3, 52.3, 19.2, 3.0, 19000, 300, NULL, true, now(), 'vietnam', 10, 18, 'easy', 'lunch,dinner', 'balanced', 'Bắp hạt', 'Chiên'), +('262d6ecc-d999-567c-aa36-53f601084845', 'Thịt kho', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 241, 16.3, 24.1, 8.8, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'lunch,dinner', 'balanced', 'Thịt ba chỉ', 'Kho/Rim'), +('e6d3943c-6ac6-51c6-b309-e292a3e6668b', 'Bánh rán phô mai trứng muối', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 392, 17.6, 56.8, 10.5, 3.0, 27000, 300, NULL, true, now(), 'vietnam', 10, 20, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Trứng muối', 'Chiên'), +('8ca91deb-1862-58d2-b43d-a3a522f149c0', 'Bò cuộn lá rong biển', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 150, 10.1, 15, 5.5, 3.0, 250000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'lunch,dinner', 'balanced', 'Thăn lưng bò mềm', 'Nấu'), +('9f736299-c2b5-59a1-96f4-4279391450f5', 'Bánh rán sữa chua ngũ cốc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 250, 16.9, 25, 9.2, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 10, 'easy', 'snack', 'balanced', 'Sữa chua không đường 2 hũ', 'Chiên'), +('5adca928-ac6a-542a-9cef-0e9357aa3d8a', 'Há cảo tam sắc', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 330, 22.3, 33, 12.1, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'balanced', 'Thịt heo', 'Nấu'), +('d5bbb607-6c33-5976-bde3-42379780e674', 'CANH QUẢ SẤU NẤU TÔM THÌ LÀ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 141, 9.5, 14.1, 5.2, 3.0, 22000, 300, NULL, true, now(), 'vietnam', 5, 5, 'easy', 'lunch,dinner', 'balanced', 'Tôm tươi bóc vỏ', 'Kho/Rim'), +('2fd8522f-519c-5cc2-80b3-ac845d7504bd', 'Thăn Bê Nướng Y', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 142, 9.6, 14.2, 5.2, 3.0, 12000, 300, NULL, true, now(), 'vietnam', 10, 10, 'medium', 'lunch,dinner', 'balanced', 'Thịt thăn bê', 'Nướng'), +('7d047121-3bec-5dc7-a296-c397ba2933f3', 'Thăn Bê Cuộn Rau Thơm', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 249, 16.8, 24.9, 9.1, 3.0, 23000, 300, NULL, true, now(), 'vietnam', 10, 10, 'medium', 'lunch,dinner', 'balanced', 'Thịt thăn bê', 'Kho/Rim'), +('af2a73b3-ff12-59d1-a6f6-a0df353f925c', 'Mì xào bò rau củ', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 348, 15.7, 50.5, 9.3, 3.0, 17000, 300, NULL, true, now(), 'vietnam', 10, 15, 'easy', 'breakfast,lunch,dinner', 'balanced', 'Mì vàng', 'Xào'), +('f670c035-47e3-5695-9ebd-f202245bdf76', 'Sò điệp nướng ba màu', NULL, 'Món chay', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 120, 4.8, 16.2, 4, 3.0, 150000, 300, NULL, true, now(), 'vietnam', 10, 30, 'easy', 'lunch,dinner', 'vegetarian', 'Sò điệp nguyên vỏ', 'Nướng'), +('a0291ba5-4d7f-563c-820f-80c741b95d34', 'Cá nướng chấm muối ớt xanh', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 200, 13.5, 20, 7.3, 3.0, 30000, 300, NULL, true, now(), 'vietnam', 10, 40, 'medium', 'lunch,dinner', 'balanced', 'Cá điêu hồng', 'Nướng'), +('4497276d-5404-55fe-9de1-3a02fa374165', 'Lẩu bò khoai cao', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 500, 33.8, 50, 18.3, 3.0, 26000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Thịt bò bắp hoa', 'Kho/Rim'), +('1d5b87d0-c86b-542f-ba43-f5194ddbed1f', 'Lẩu lươn kèo nèo vị thái', NULL, 'Món Việt', 'Món Việt được MenuGreen chuẩn hóa thành một khẩu phần với nguyên liệu và dinh dưỡng ước tính.', 250, 16.9, 25, 9.2, 3.0, 24000, 300, NULL, true, now(), 'vietnam', 10, 5, 'easy', 'lunch,dinner', 'balanced', 'Thịt lươn làm sạch', 'Lẩu') +ON CONFLICT ("Id") DO UPDATE SET + "NameVi" = EXCLUDED."NameVi", "Category" = EXCLUDED."Category", + "Description" = EXCLUDED."Description", "CaloriesKcal" = EXCLUDED."CaloriesKcal", + "ProteinG" = EXCLUDED."ProteinG", "CarbsG" = EXCLUDED."CarbsG", + "FatG" = EXCLUDED."FatG", "EstimatedPriceVnd" = EXCLUDED."EstimatedPriceVnd", + "PreparationMinutes" = EXCLUDED."PreparationMinutes", "CookingMinutes" = EXCLUDED."CookingMinutes", + "DifficultyLevel" = EXCLUDED."DifficultyLevel", "MealType" = EXCLUDED."MealType", + "DietType" = EXCLUDED."DietType", "MainIngredient" = EXCLUDED."MainIngredient", + "CookingMethod" = EXCLUDED."CookingMethod", "IsActive" = true; +-- END GENERATED MNMN CATALOG + +-- Fill missing catalog artwork with representative Unsplash-licensed images. +-- Existing/custom images are preserved; matching is based on dish category/name. +UPDATE foods +SET "ImageUrl" = CASE + WHEN lower("NameVi") LIKE ANY (ARRAY['%cà phê%', '%trà %', '%trà sữa%', '%sinh tố%', '%smoothie%', '%nước ép%', '%nước chanh%']) + OR "Category" = 'Thức uống' + THEN 'https://images.unsplash.com/photo-1553530666-ba11a7da3888?w=400' + WHEN "Category" = 'Tráng miệng' + OR lower("NameVi") LIKE ANY (ARRAY['%chè %', '%bánh flan%', '%sữa chua%', '%yaourt%', '%kem %']) + THEN 'https://images.unsplash.com/photo-1488477181946-6428a0291777?w=400' + WHEN "Category" = 'Salad' + OR lower("NameVi") LIKE ANY (ARRAY['%salad%', '%gỏi %', '%nộm %', '% trộn%']) + THEN 'https://images.unsplash.com/photo-1540420773420-3366772f4999?w=400' + WHEN lower("NameVi") LIKE ANY (ARRAY['%canh %', '%súp %', '%cháo %', '%lẩu %']) + OR "Category" = 'Món canh' + THEN 'https://images.unsplash.com/photo-1547592166-23ac45744acd?w=400' + WHEN lower("NameVi") LIKE ANY (ARRAY['%phở %', '%bún %', '%hủ tiếu%', '%mì %', '%miến %', '%cao lầu%']) + OR "Category" = 'Món nước' + THEN 'https://images.unsplash.com/photo-1596797038530-2c107229654b?w=400' + WHEN lower("NameVi") LIKE ANY (ARRAY['%cá %', '%tôm %', '%mực %', '%sò %', '%ốc %', '%cua %', '%hải sản%']) + THEN 'https://images.unsplash.com/photo-1467003909585-2f8a72700288?w=400' + WHEN lower("NameVi") LIKE ANY (ARRAY['%gà %', '%ức gà%', '%cánh gà%', '%đùi gà%', '%vịt %']) + THEN 'https://images.unsplash.com/photo-1604503468506-a8da13d82791?w=400' + WHEN lower("NameVi") LIKE ANY (ARRAY['%bò %', '%bê %', '%thịt bò%']) + THEN 'https://images.unsplash.com/photo-1544025162-d76694265947?w=400' + WHEN lower("NameVi") LIKE ANY (ARRAY['%heo %', '%thịt heo%', '%sườn %', '%thịt kho%', '%giò %']) + THEN 'https://images.unsplash.com/photo-1532550907401-a500c9a57435?w=400' + WHEN lower("NameVi") LIKE ANY (ARRAY['%cơm %', '%cơm chiên%', '%cơm rang%']) + THEN 'https://images.unsplash.com/photo-1603133872878-684f208fb84b?w=400' + WHEN lower("NameVi") LIKE '%bánh mì%' + THEN 'https://images.unsplash.com/photo-1509722747041-616f39b57569?w=400' + WHEN lower("NameVi") LIKE ANY (ARRAY['%trứng %', '%ốp la%', '%omelette%']) + THEN 'https://images.unsplash.com/photo-1525351484163-7529414344d8?w=400' + WHEN lower("NameVi") LIKE ANY (ARRAY['%bánh %', '%xôi %', '%há cảo%', '%hoành thánh%']) + OR "Category" IN ('Snack', 'Món sáng') + THEN 'https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=400' + WHEN "Category" IN ('Món chay', 'Món rau củ', 'Chay') + OR lower("NameVi") LIKE ANY (ARRAY['%rau %', '%nấm %', '%đậu hũ%', '%đậu phụ%']) + THEN 'https://images.unsplash.com/photo-1512621776951-a57141f2eefd?w=400' + ELSE 'https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=400' +END +WHERE "ImageUrl" IS NULL OR btrim("ImageUrl") = ''; COMMIT; diff --git a/backend/database/17_recipes.sql b/backend/database/17_recipes.sql index e8cbae27..9eabc223 100644 --- a/backend/database/17_recipes.sql +++ b/backend/database/17_recipes.sql @@ -21,6 +21,8 @@ CREATE TABLE recipes ( "Instructions" json NULL, "ImageUrl" text NULL, "VideoUrl" text NULL, + "SourceName" character varying(200) NULL, + "SourceUrl" character varying(1000) NULL, "IsActive" boolean NULL, "CreatedAt" timestamp with time zone NULL, CONSTRAINT "PK_recipes" PRIMARY KEY ("Id"), @@ -194,5 +196,386 @@ VALUES ,('ec000319-0000-0000-0000-000000000319', 'fd110079-1000-4000-8000-000000000079', 'Cơm chiên nấm', 'Cơm chiên nấm tận dụng cơm nguội và rau củ.', 15, 25, 40, 1, 'Easy', 'Lunch', 40000, '["Bước 1: Sơ chế nguyên liệu.", "Bước 2: Chế biến theo công thức.", "Bước 3: Nêm nếm gia vị.", "Bước 4: Trình bày và thưởng thức."]', 'https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=400', NULL, true, now()) ,('ec000320-0000-0000-0000-000000000320', 'fd110080-1000-4000-8000-000000000080', 'Chả giò chay', 'Chả giò chay giòn, dùng như món chính hoặc món phụ.', 15, 25, 40, 1, 'Easy', 'Lunch', 40000, '["Bước 1: Sơ chế nguyên liệu.", "Bước 2: Chế biến theo công thức.", "Bước 3: Nêm nếm gia vị.", "Bước 4: Trình bày và thưởng thức."]', 'https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=400', NULL, true, now()) ON CONFLICT ("Id") DO NOTHING; +-- BEGIN GENERATED MNMN CATALOG (do not edit by hand) +-- One normalized recipe for every generated dish. Source instructions are not copied. +INSERT INTO recipes ( + "Id", "FoodId", "Title", "Description", "PrepTimeMin", "CookTimeMin", + "TotalTimeMin", "Servings", "Difficulty", "MealType", "EstimatedPriceVnd", + "Instructions", "ImageUrl", "VideoUrl", "SourceName", "SourceUrl", + "IsActive", "CreatedAt" +) VALUES +('d4342f15-80a1-5b05-b9c0-a6b1a2138d17', '12e408ea-b740-5619-94d5-7e191b2598a3', 'Salad Sữa Chua Cùng Gyoza', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bánh xếp kiểu Nhật Gyoza dùng nồi, Xà lách thủy tinh, Ớt chuông vàng trái nhỏ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-sua-chua-cung-gyoza/', true, now()), +('b9894a3a-3a87-5bd4-8ec5-1cc90010afad', '253fa446-51e9-5d71-a23a-d630499fdb3c', 'Canh Gà Nấm Hương Củ Sâm Đất', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 2, 'Medium', 'Lunch,Dinner', 144000, '["Bước 1: Sơ chế Má đùi gà rút xương, Giò sống, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ga-nam-huong-cu-sam-dat/', true, now()), +('64797443-a0a6-564c-a7aa-c30062f4e6a4', '6876e7b4-8609-5e39-86fc-d25c4e60be5d', 'Tôm Trứng Cút Xúc Xích Xào Bông Cải', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 211000, '["Bước 1: Sơ chế Tôm sú, Xúc xích heo, Bông cải trắng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tom-trung-cut-xuc-xich-xao-bong-cai/', true, now()), +('74d7b03e-8f9b-56b1-8298-8083bb2d1def', 'b96e6bb0-f091-5ff2-8b76-cedd738e43ba', 'Canh Bí Đao Sườn Non', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 40, 50, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Sườn non, Bí đao, Hành tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-bi-dao-suon-non/', true, now()), +('28711bd6-458e-5cf2-b30c-711a873f819d', '335256f1-0b3d-5194-8f10-5f120a9b2e36', 'Gà Rim Nước Tương', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 45, 55, 4, 'Easy', 'Lunch,Dinner', 24000, '["Bước 1: Sơ chế Cánh gà, Hành tím, Cà chua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-rim-nuoc-tuong/', true, now()), +('6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', 'a16d422e-0d92-5f70-9b31-9ea873fef59f', 'Nấm Bào Ngư Xào Sả Ớt', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Nấm bào ngư, Thơm, Nấm rơm búp; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/nam-bao-ngu-xao-xa-ot/', true, now()), +('879b1583-e51e-5362-aecb-48a99bcf31cc', '2174fe7c-e0ee-55ce-87a9-4ab2a27676a2', 'Canh Thịt Bò Cải Xoong', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Thịt bò, Cải xoong, Hành tím phi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-thit-bo-cai-xoong-2/', true, now()), +('f53bbc7e-f397-5413-b9f7-755a9c2afcea', '4c6efd67-8a45-5264-9025-3f6ac93c06e7', 'Khô Mực Trộn Trái Cây', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 15, 20, 4, 'Easy', 'Lunch,Dinner', 48000, '["Bước 1: Sơ chế Táo xanh, Xoài sống, Cà chua bi 3 màu; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/kho-muc-tron-trai-cay/', true, now()), +('a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', 'bfb9df29-9823-5efd-a918-ce35d9ccbb8e', 'Canh Bụt Giấm Cá Lăng – Dưa Bồn Bồn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 20, 5, 25, 4, 'Easy', 'Lunch,Dinner', 26000, '["Bước 1: Sơ chế Thịt cá lăng, Bồn bồn, Cà chua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-but-giam-ca-lang-dua-bon-bon/', true, now()), +('8255de24-861e-547f-a540-9bf2faa66760', 'db2ee6e9-9265-5130-815b-16bb0375c7c0', 'Salad Bơ Tôm Thịt Áp Chảo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Breakfast,Lunch,Dinner', 220000, '["Bước 1: Sơ chế Xà lách giòn, Bơ chín, Cà chua bi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-bo-tom-thit-ap-chao/', true, now()), +('d029c9d7-d1a6-548e-9ccf-f5df71b7d324', 'ec401fc9-59a4-5e9b-b43e-e9d9b4bb9dfe', 'Tacos Gà Caesar', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Bánh Tacos, Xà lách lolo, Gà má đùi rút xương; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tacos-ga-caesar/', true, now()), +('b7698015-9fc1-55e1-b9f2-3e12c31e5e14', 'b05a2ffd-06c3-5cef-8676-359350c81a97', 'Salad Bắp Tôm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 18000, '["Bước 1: Sơ chế Tôm sú, Bắp hạt, Dưa leo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-bap-tom-3/', true, now()), +('adffe698-a581-5eb0-a6f3-cb3ab73ce49f', '9353aecb-491c-5ec2-b82d-2a7c7d2e4073', 'Cá Điêu Hồng Nướng Kèm Dưa Nụ Ngâm Chua', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 10, 25, 4, 'Medium', 'Snack', 12000, '["Bước 1: Sơ chế cá điêu hồng đã làm sạch, Dưa nụ, Củ sen; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-dieu-hong-nuong-kem-dua-nu-ngam-chua/', true, now()), +('d1d639d0-d770-5aa3-b8d7-8de4235b6bae', 'f002fa1c-fa08-580b-9832-9520f23a3b80', 'Mì Nấm Củ Hủ Dừa Táo Đỏ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Medium', 'Breakfast,Lunch,Dinner', 53000, '["Bước 1: Sơ chế Táo đỏ khô, Củ hủ dừa, Nấm rơm búp; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-nam-cu-hu-dua-tao-do/', true, now()), +('0bdbfc0f-8886-5828-9c74-439c114a0f58', '6b7a10d2-5776-5e5c-9ec3-4508b660b42f', 'Heo Quay Kho Măng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 1, 'Easy', 'Lunch,Dinner', 86000, '["Bước 1: Sơ chế Heo quay, Măng vàng, Trứng cút; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/heo-quay-kho-mang-2/', true, now()), +('9b77ab25-e5d9-5bcf-994c-dab4b858b189', '34f04d89-dc34-55c7-b8a0-bf07642c5fdd', 'Canh Dền Cơm Nấu Nghêu', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 4, 'Easy', 'Lunch,Dinner', 15000, '["Bước 1: Sơ chế Thịt nghêu, Rau dền cơm, Mướp khía; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-den-com-nau-ngheu-2/', true, now()), +('4fb9f616-1de1-5508-b7bd-796e8d5ac9eb', '65a903c2-1d03-55b6-807a-35f986028f78', 'Khổ Qua Tây Xào Thịt Bò', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 13000, '["Bước 1: Sơ chế Khổ qua tây, Thịt bò, Hành lá; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/kho-qua-tay-xao-thit-bo-2/', true, now()), +('f9207ff3-3736-55d9-8b16-99432e1d470f', '6d8875b4-b53f-531f-8bb5-41fcec937c3d', 'Đậu Hủ Thịt Viên Rau Củ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 15, 30, 4, 'Easy', 'Lunch,Dinner', 27000, '["Bước 1: Sơ chế Thịt, Đậu hủ trắng, Bí đỏ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/dau-hu-thit-vien-rau-cu/', true, now()), +('25e713a5-a5cb-5bfd-842d-b14b72886ec8', '57590214-28a9-53a9-b8b3-b0c0e455b247', 'Chả Cá Kho Vân Trứng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Chả cá basa, Cà chua, Trứng gà; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cha-ca-kho-van-trung-2/', true, now()), +('c13360e3-4770-5499-932a-2112d3a4961c', 'b0d04092-3731-5c08-9a4c-fcb10331cb69', 'Đọt Su Xào Tôm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 4, 'Easy', 'Lunch,Dinner', 21000, '["Bước 1: Sơ chế Tôm sú tươi, bóc vỏ, Đọt su, Hành tỏi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/dot-su-xao-tom-2/', true, now()), +('a5aec6b9-c1fa-5def-974f-c9e33193fc53', '1f1fbb24-b145-531b-971e-3fea1673ab93', 'Canh Sườn Hạt Sen', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 4, 'Easy', 'Lunch,Dinner', 27000, '["Bước 1: Sơ chế Sườn non, Hạt sen tươi, Bắp non; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-suon-hat-sen/', true, now()), +('d3d4731b-77af-50c2-8664-1f0c13504239', '320e811a-f643-5ed9-b354-892a2f194ccc', 'Canh Ốc Chua Cay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 10, 25, 4, 'Easy', 'Lunch,Dinner', 15000, '["Bước 1: Sơ chế Thịt ốc bươu làm sạch, Giò sống, Nấm mèo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-oc-chua-cay/', true, now()), +('8503dee5-ea02-5bac-bb3e-2a80f7489584', '24a13ac5-9b6a-5af6-9afd-0ddd499de006', 'Gà tiềm hạt sen', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 24000, '["Bước 1: Sơ chế Đùi gà, Bọng gà, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Xếp nguyên liệu vào xửng hoặc nồi, hấp/tiềm đến khi chín mềm nhưng không nát.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-tiem-hat-sen/', true, now()), +('19464651-717a-5ab4-bee7-3778c30054fd', 'fbed7ee5-7aee-5874-84c8-60c2e0793aea', 'Canh Gà Củ Sen', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 13, 18, 4, 'Easy', 'Lunch,Dinner', 25000, '["Bước 1: Sơ chế Gà ta góc tư, Củ sen, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ga-cu-sen/', true, now()), +('5d44f03c-4a67-535a-9894-279490d7bfea', '81a055de-4fde-5557-8227-23f7f0f92eb1', 'Chả Giò Tôm Mayo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 20, 25, 4, 'Easy', 'Lunch,Dinner', 146000, '["Bước 1: Sơ chế Tôm, Hành tây, Hành lá; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cha-gio-tom-mayo/', true, now()), +('bcfa5ed1-53f8-5294-a5b6-1c540fe78284', '504dfda8-beab-5dc4-b602-63f77642ec99', 'Cải Thìa Xào Hải Sâm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Medium', 'Lunch,Dinner', 42000, '["Bước 1: Sơ chế Hải sâm đông lạnh đã sơ chế, Tôm sú lột vỏ, Cải thìa; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cai-thia-xao-hai-sam/', true, now()), +('a2b2f916-b232-5c2a-83f1-5b343113d5af', '30e2a603-924f-549b-a602-22c2559d6b25', 'Salad Tonkatsu', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Thịt heo, Cần tây- cọng, Cà chua bi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-tonkatsu/', true, now()), +('70924aa2-919a-5fdd-a9a5-f55a8b74b12f', 'b4c28012-1e7a-5352-8646-27e0bdb100b9', 'Salad Bacon Xốt Mè Rang', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bacon xông khói, Bắp hạt, xà lách lolo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-bacon-xot-me-rang/', true, now()), +('00ce777c-0368-5427-8102-1489c6762aae', '77f3d67c-0ccd-5558-98b8-109d06cab031', 'Súp Gà Chua Cay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 32000, '["Bước 1: Sơ chế Thịt ức gà, Măng tươi, Đậu hũ non; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/sup-ga-chua-cay-2/', true, now()), +('7cc4a627-8b24-5925-936f-88d05408f112', '0f2143ff-3ff1-5268-a0fa-6129097970ce', 'Cơm Gạo Lứt Chiên Nghêu', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 58000, '["Bước 1: Sơ chế Nghêu, Cơm gạo lức, Đậu cô ve; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-gao-lut-chien-ngheu/', true, now()), +('91a93b63-aa01-5c3b-8dd9-a6e7e14959c0', '8360e31d-3e19-5d24-989f-17f4a243e1f0', 'Canh Sườn Gyoza', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 21000, '["Bước 1: Sơ chế Sườn non, Tôm khô ngon, Củ cải trắng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-suon-gyoza/', true, now()), +('469c2708-e98d-55da-a714-a56fb9765bad', '1bd01c3d-ec3f-54f5-a2ea-d78db6215566', 'Gà Nướng Chanh Sả Mayo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Má đùi gà, Mật ong, Mayonnaise; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-nuong-chanh-sa-mayo/', true, now()), +('52a4f993-3ab1-554f-92d6-e60f5f2e364e', 'e2088694-29e0-5369-a939-3a9cc7acd3a7', 'Tôm chiên cánh bướm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 21000, '["Bước 1: Sơ chế Tôm sú hấp đông lạnh size lớn, Bông thiên lý, Bắp non nhỏ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tom-chien-canh-buom/', true, now()), +('2f248b42-80c0-58ff-b849-74881341c271', 'b3cdef36-2785-51f0-8bda-16dfcbfe3088', 'Tôm bao mọc chiên giòn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 58000, '["Bước 1: Sơ chế Tôm sú nhỏ, Mọc, Nấm mèo đen; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tom-bao-moc-chien-gion/', true, now()), +('e9dc9fc8-f5e5-54f1-b1ae-08f252ab1774', 'e0361f22-6298-5aba-af3b-fe2a0891d3c2', 'Tôm mực chiên giòn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 20000, '["Bước 1: Sơ chế Mực ống, Tôm sú, Mù tạt xanh; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tom-muc-chien-gion/', true, now()), +('6c097502-ace7-5d90-98c1-0be74a84c430', '5ef1d2a6-d58e-5c7a-bf01-5a48f300ed71', 'Gỏi cuốn chay xốt đậu phộng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Breakfast,Lunch,Dinner', 15000, '["Bước 1: Sơ chế Bánh tráng 10 bánh, Đậu hũ, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/goi-cuon-chay-xot-dau-phong/', true, now()), +('ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', 'a62e965c-9e5d-53fe-93ac-0d28f0d480fa', 'Chè bà ba', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 50, 60, 4, 'Easy', 'Snack', 33000, '["Bước 1: Sơ chế Khoai mỡ tím, Khoai lang vàng, Khoai mì; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/che-ba-ba/', true, now()), +('403712c5-75a2-52a5-a52d-9ee102701c1e', '6f0432c7-87f8-5235-948f-acbd6c2758c9', 'Cơm Nắm Ngũ Sắc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 4, 'Easy', 'Lunch,Dinner', 38000, '["Bước 1: Sơ chế Gạo dẻo, Cà rốt, Bắp mỹ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-nam-ngu-sac/', true, now()), +('b452a058-66d1-51a6-8a82-7454c248ba76', 'c8a19304-73ad-5f5b-ab08-a28b7b0ac5ee', 'Rau Củ Và Mực Chiên', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 14000, '["Bước 1: Sơ chế Mực lá, Củ sen, Bí đỏ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/rau-cu-va-muc-chien/', true, now()), +('7800bceb-cadd-53c5-9d4e-45d930f77c03', 'b3897138-bc7c-5824-aa0a-a57b842a9b8a', 'Salad Rong Nho Đậu Hũ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Rong nho, Đậu hũ non, Xà lách lolo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-rong-nho-dau-hu/', true, now()), +('e98b632e-bf6f-5b9f-8f58-f3f140d35928', '401c5f83-587f-5fb3-8999-82e3b11dafb4', 'Mì Xào Thịt Heo Rau Củ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 15, 30, 4, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Mì trứng đã, Thịt nạc dăm, Cải ngọt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-xao-thit-heo-rau-cu/', true, now()), +('0b66e956-7268-5afc-afb8-56723ecb47b9', '650421a7-e2b8-57a8-930e-006ee10b8099', 'Bánh đa xúc thịt bằm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Thịt bằm, Cà rốt, Đậu que; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-da-xuc-thit-bam/', true, now()), +('ff0245a5-8edb-5e75-8ac0-9979e463a05a', '106e1a97-8973-5f13-a6ef-94d66ee0d20c', 'Bánh đa xào thịt gà chua ngọt', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Bánh đa sợi to, Thịt gà, Cải bó xôi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-da-xao-thit-ga-chua-ngot/', true, now()), +('84505af6-4e50-55c3-883e-4f7ea038b735', '98b74e97-60d0-5ddb-a50b-f8b5822e4740', 'Bánh đa xào hải sản', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Snack', 20000, '["Bước 1: Sơ chế Bánh đa đỏ, Mực ống, Tôm sú bóc vỏ, chừa đuôi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-da-xao-hai-san/', true, now()), +('d9d83a2e-0858-54d4-aaf0-f04a4ec27972', '086ed755-2bff-51bf-9914-9706a3881364', 'Cá kèo kho kim chi củ cải', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Cá kèo, Kim chi củ cải, Hành lá; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-keo-kho-kim-chi-cu-cai/', true, now()), +('9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', '7711479c-3d73-51b9-af0b-bcb242c2ea2a', 'Cá lóc kho củ cải', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Cá lóc, Củ cải trắng, xà lách; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-loc-kho-cu-cai/', true, now()), +('bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', '16a87781-51ca-5057-8ccf-4a60628e0db8', 'Gỏi bắp bò hoa', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bắp bò hoa, Bắp chuối hột bào, Mè rang vàng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/goi-bap-bo-hoa-2/', true, now()), +('f2a28469-3f28-5525-bf09-421db81c2af5', 'de393dd1-05ab-55cf-ae21-87d462c1a3ee', 'Giò heo hon', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 45, 55, 4, 'Easy', 'Lunch,Dinner', 79000, '["Bước 1: Sơ chế Giò heo trước căt khoanh, Cơm dừa nước, Nước dừa nước hoặc xiêm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/gio-heo-hon/', true, now()), +('ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', '3990b9a5-cf67-52df-9356-149846e64a1b', 'Thịt giò heo kho củ cải', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 26000, '["Bước 1: Sơ chế Thịt giò heo, Củ cải trắng, Bắp non; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/thit-gio-heo-kho-cu-cai/', true, now()), +('256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '0ffaea40-ca67-5928-b36b-3c2e941ae562', 'Xôi Viên Chiên Nhân Thập Cẩm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 25, 10, 35, 4, 'Easy', 'Breakfast,Lunch,Dinner', 20000, '["Bước 1: Sơ chế Xôi 4 màu, Giò sống, Thịt nạc vai; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/xoi-vien-chien-nhan-thap-cam/', true, now()), +('e0a2d1dd-df1a-57c2-a8f5-16d7ca13025f', '8364c64a-a650-5c0e-a651-bbad6f2830d1', 'Trà sữa blendy trái cây', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 1, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Trà sữa Blendy Royal, Syrup đào, Đào; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tra-sua-blendy-trai-cay/', true, now()), +('0133efe5-d5c9-5f7e-811a-cf1f6c91efb8', 'dde43460-e41b-5b97-b42e-c9413097b2cc', 'Salad rau củ trộn xốt mayonnaise', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 21000, '["Bước 1: Sơ chế Cà rốt, Khoai tây, Đậu cô ve Nhật; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-rau-cu-tron-xot-mayonnaise/', true, now()), +('9fd67b55-c8f0-52e2-9689-0bc8c05e1014', 'a4bd0f10-eca9-5a55-80c0-227d49edceb8', 'Salad dầu giấm trộn Mayonnaise', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Xà lách dòn, Rau thơm các loại, Giá; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-dau-giam-tron-mayonnaise/', true, now()), +('7ccdda12-0ace-5ce3-9f99-af4fc7b4c6a7', '420194b1-ffbd-5f9d-b491-67de66928a58', 'Salad cá ngừ rau thơm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 16000, '["Bước 1: Sơ chế Cá ngừ phi-lê, Ớt ngọt đà lạt, Cà chua bi nâu; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-ca-ngu-rau-thom/', true, now()), +('40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', 'fd1feb4b-2bb1-5d42-a342-ba8c2f9f20f6', 'Cá ngừ kho nước mía', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 35, 45, 4, 'Easy', 'Lunch,Dinner', 27000, '["Bước 1: Sơ chế Cá ngừ, Thịt ba chỉ, Thơm : ¼ trái; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-ngu-kho-nuoc-mia/', true, now()), +('5d874140-5e8a-5fce-9428-f1e586404add', 'e35d7001-9b33-5d84-864f-3879fd1b16ec', 'Cá ngừ đại dương lúc lắc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 15000, '["Bước 1: Sơ chế Phi lê cá ngừ, Ớt chuông vàng, Ớt chuông đỏ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-ngu-dai-duong-luc-lac/', true, now()), +('799d066a-9c4a-5453-a77a-6f7f999d4c80', 'c8ed8bf3-cd0b-54be-8f9d-f637bf969402', 'Cá đối kho cà chua', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 23000, '["Bước 1: Sơ chế Cá đối, Cà chua, Hành tỏi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-doi-kho-ca-chua/', true, now()), +('a704a5aa-0912-55ef-a123-16c391053e83', 'a6857dca-b088-5e87-a24e-3af1b5bb2b9a', 'Cá đối kho cải chua', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 45, 55, 4, 'Easy', 'Lunch,Dinner', 20000, '["Bước 1: Sơ chế Cá đối, Cải chua, Cà chua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-doi-kho-cai-chua/', true, now()), +('84f0e957-9fa4-5ab7-8199-a9d891dffcec', '61a36d38-7832-5605-8209-dfe424922a0e', 'Cá Nục Kho Thơm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 36000, '["Bước 1: Sơ chế Cá nục tươi, Thịt ba rọi, Thơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-nuc-kho-thom-2/', true, now()), +('62d233d9-a5ee-5989-9e27-5a1b84bbffd0', '1e95f716-790c-5963-9ba1-b4acd40b2b00', 'Canh gà măng chua', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 18000, '["Bước 1: Sơ chế Má đùi gà, Măng chua, Hành lá; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ga-mang-chua/', true, now()), +('561309ed-266a-54bd-b7b9-8faaf23f3970', '94fbd893-eebf-597c-9779-bb14ac8c176b', 'Nhộng xào măng chua', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Nhộng, Măng chua, Ngò gai; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/nhong-xao-mang-chua-2/', true, now()), +('c2247de1-f484-516f-be7b-03b76b2e5339', '495ad48d-d8ff-5083-ae43-7740f62e5130', 'Canh gà măng chua lá giang', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Gà ta, Măng chua, Lá giang; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ga-mang-chua-la-giang/', true, now()), +('4a9a7f1d-ec23-5b71-b9d8-33253bc87113', 'ffb09ba0-0688-5b29-97fd-a5f94372c0f1', 'Đà điểu xốt trái cây', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 13000, '["Bước 1: Sơ chế Đà điểu phi lê, Khoai tây, Bắp cải trắng bào; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/da-dieu-xot-trai-cay/', true, now()), +('c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', 'c85377ab-ff0a-566f-85df-a404f2a394d8', 'Đà điểu xào lá cách', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Thịt đà điểu, Lá cách, Hành tây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/da-dieu-xao-la-cach/', true, now()), +('9d518707-695f-589e-9053-fbb4f680aab4', '79ff1c55-e39e-5c10-b71d-1fdf96090f32', 'Đà điểu lúc lắc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Đà điểu, Ớt chuông xanh, Ớt chuông đỏ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/da-dieu-luc-lac/', true, now()), +('1d6ad132-aec2-55b4-9f24-26a3b16dbca6', 'a0546c94-508f-5c92-b2cb-6f1efafe04a0', 'Gỏi sò lông', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 57000, '["Bước 1: Sơ chế Sò lông, Rau muống, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/goi-so-long/', true, now()), +('1c44de25-dd44-56c2-96fa-1221c00dc618', '71aa925a-d291-508f-b058-ffc56a3c0dcc', 'Sò lông xào chua ngọt', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 55000, '["Bước 1: Sơ chế Sò lông, Cà chua, Hành tây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/so-long-xao-chua-ngot/', true, now()), +('8ff807ba-7b4b-5005-8fe9-8a671c931038', 'd78db135-721e-574c-9fef-e2b82a757d68', 'Sò lông kho tiêu xanh', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 23000, '["Bước 1: Sơ chế Thịt sò lông, Thịt ba rọi, Rau răm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/so-long-kho-tieu-xanh/', true, now()), +('ee41798a-105f-5791-a061-1da65b726708', '10bdf82d-b543-50a7-bd40-e66ee00cc853', 'Bắp cải tím trộn tôm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 162000, '["Bước 1: Sơ chế Bắp cải tím, Đậu trắng Đà Lạt tươi, Lá quế; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bap-cai-tim-tron-tom/', true, now()), +('3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', '2dadf12d-d9be-58fd-8471-cf6a67cca9cc', 'Bắp cải tím xào hải sản', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 18000, '["Bước 1: Sơ chế Tôm sú, Mực tươi, Bắp cải tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bap-cai-tim-xao-hai-san/', true, now()), +('22207a83-6897-5160-90ea-b61ccc159ead', 'a230733b-ac6a-5987-8170-1c8b07dbbadc', 'Canh chua bắp cải tím', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bắp cải tím, Tép, Thơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-chua-bap-cai-tim/', true, now()), +('2aed8eda-842a-5aeb-9f78-429206c7da6b', '6e2c5455-2d74-5ec1-9d2e-9214a1d435cb', 'Mì ý xốt nấm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Breakfast,Lunch,Dinner', 13000, '["Bước 1: Sơ chế Mì Ý, Ba rọi xông khói, Nấm đông cô tươi, nấm kim châm, nấm rơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-y-xot-nam/', true, now()), +('0e2d9b7f-83ec-5180-85ba-091bb1241997', '85cd6fc5-3faf-5580-b98b-a47a28c00181', 'Vịt nướng chao', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 40, 50, 4, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Vịt, Chao môn trắng, Hành tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/vit-nuong-chao/', true, now()), +('422cd42a-7df8-50d1-9efd-5b986e5b2e64', '93a087e2-cc25-56a1-a352-f553bc607248', 'Thịt bò xào đậu cove', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Thịt bò phi lê, Đậu cove, Cần ta; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/thit-bo-xao-dau-cove/', true, now()), +('588d773e-5472-5039-9b52-57a879c226c1', '148c4b68-5690-5887-9ca4-d3903cdeeac1', 'Salad cam đậu đỏ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 16000, '["Bước 1: Sơ chế Đậu đỏ, Đậu cove Nhật, Khoai lang; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-cam-dau-do/', true, now()), +('2c0e0781-b11b-52b8-9925-82e978de18c7', 'a0593959-df5f-5999-ba39-efcf43473e8e', 'PanCake kem mè', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Mè trắng, Bơ, Bột mỳ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/pancake-kem-me/', true, now()), +('0b75dadc-5e33-528a-8854-57ad1e4e2600', 'e432cc6b-6982-5331-9d16-3e39e8adde08', 'Nem chay rán', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 60, 70, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Giò sống chay, Củ năng, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/nem-chay-ran/', true, now()), +('7fa0b58f-a618-51bc-8194-ac79da797df1', '35a62ad4-e086-50f9-b474-0e86414c3325', 'Mực lụi sả nướng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 71000, '["Bước 1: Sơ chế Mực ống nhỏ, Thịt, Giò sống; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/muc-lui-sa-nuong/', true, now()), +('f144d3f3-b180-501e-a611-492344b06fc8', '454060cd-b7dd-5b1a-8491-4a092c362918', 'Mì Ý xốt cua', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Breakfast,Lunch,Dinner', 16000, '["Bước 1: Sơ chế Cua gạch, Mì Ý, Sốt cà chua đậm đặc; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-y-xot-cua/', true, now()), +('67d97286-8d45-596f-96ba-532906db8272', '568a24f8-68eb-5b55-92e3-f0c9e083aaa2', 'Mì cay chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Breakfast,Lunch,Dinner', 41000, '["Bước 1: Sơ chế Nước dùng chay, Me vắt, Mì Udon; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-cay-chay/', true, now()), +('af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', 'a4c7564c-6354-529f-8a77-d30302348c1c', 'Lẩu cá thác lác khổ qua', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 28000, '["Bước 1: Sơ chế Xương heo, Khổ qua rừng, Cá thác lác; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-ca-thac-lac-kho-qua/', true, now()), +('f040e22c-a597-53c7-988c-e975201b9e9c', '55d244d8-65c6-5198-9359-46684837f0df', 'Khoai tây nướng phô mai', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Khoai tây, Thịt ba rọi xông khói, Ngò tây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/khoai-tay-nuong-pho-mai/', true, now()), +('cd31f882-9d4c-560f-bc65-ed210d1fabfb', '984ad11b-1074-5c8e-b2c1-488814d865de', 'Gà xào ngũ sắc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 13000, '["Bước 1: Sơ chế Ức gà, Bông cải xanh, Bắp non; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-xao-ngu-sac/', true, now()), +('bc872e79-5dce-583c-a2dc-cccafb7f93e6', '6fc4a0b1-5900-5d6a-afd1-6ccd9b965f8f', 'Gà nướng nồi đất', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 35, 45, 4, 'Easy', 'Lunch,Dinner', 81000, '["Bước 1: Sơ chế Đùi gà, Lá chanh, Hành tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-nuong-noi-dat/', true, now()), +('463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', 'a28cba1c-3ff9-5a70-b9cb-c1f2fd2841e5', 'Cuốn tàu hũ ky xốt rô ti', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 68000, '["Bước 1: Sơ chế Lá tàu hũ ky khô, Giò sống chay, Đậu hũ trắng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cuon-tau-hu-ky-xot-ro-ti/', true, now()), +('b2bd04a4-4b5d-54f0-80fe-2cc27c79d731', 'c8c6801d-6ada-5174-ac70-8afdbb72f7e4', 'Cơm chiên mayonnaise', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Cơm trắng, Thịt nguội, Cải ngọt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-chien-mayonnaise-2/', true, now()), +('727b7bf9-7510-52b5-a422-7007b57135b7', '544392d4-3a4b-513e-b03f-c89ac41fdfab', 'Chả hấp chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Đậu hũ trắng, Nấm hương, nấm mèo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Xếp nguyên liệu vào xửng hoặc nồi, hấp/tiềm đến khi chín mềm nhưng không nát.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cha-hap-chay/', true, now()), +('7b3b2990-266f-5f2a-8f26-110c17503139', '93286876-23c4-57a1-b06a-e37a7078dfad', 'Chả giò ngũ vị', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 35, 45, 4, 'Easy', 'Lunch,Dinner', 44000, '["Bước 1: Sơ chế Da bò bía tươi, Thịt bò, Giò sống; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cha-gio-ngu-vi/', true, now()), +('811d4771-036c-5cfc-94ac-fe9f24e8f20d', '44bc167a-1cc2-5108-839f-7ee653b630dd', 'Canh cá khoai lá giang', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 40000, '["Bước 1: Sơ chế Cá khoai tươi, Lá giang, Thơm chín; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ca-khoai-la-giang/', true, now()), +('ca2ccf88-3a3e-531a-841d-cffa572846c4', '6fbf5cc3-8b2e-597b-b975-8d51ac246e5e', 'Cải thìa xào nấm đông cô thịt cua', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Cải thìa, Nấm đông cô tươi, Thịt vế cua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cai-thia-xao-nam-dong-co-thit-cua/', true, now()), +('0028654f-a9b1-566b-858b-75cafe4965c4', 'b96c4b61-885a-5653-8a26-5ccb5cd73646', 'Cá lóc chiên mắm sả', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Cá lóc bông làm sạch, Sả, Nước hành tỏi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-loc-chien-mam-sa/', true, now()), +('1af04131-5d68-568a-b9c9-53653cbcf43a', 'e57db436-b603-5f0b-828c-010aec111404', 'Bánh xèo Nhật Bản', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Bắp cải, Khoai môn, Ba chỉ xông khói; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-xeo-nhat-ban-2/', true, now()), +('6145b66a-51d2-53c1-a248-3323aefcbcdd', 'dff32bdf-1807-5775-be0a-5ccc092c13f7', 'Bò xốt vang', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 40, 50, 4, 'Easy', 'Lunch,Dinner', 27000, '["Bước 1: Sơ chế Thịt bò nạm sườn, Hành tây, Khoai tây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bo-xot-vang/', true, now()), +('f6c73bfe-6c74-506f-a02b-5a16e99072bc', 'b66e8ba8-120a-5b35-9e31-fd424c33cbc4', 'Xôi Mặt Nguyệt', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 25, 40, 4, 'Medium', 'Breakfast,Lunch,Dinner', 18000, '["Bước 1: Sơ chế Nếp cái hoa vàng, Xá xíu, Tôm khô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/xoi-mat-nguyet/', true, now()), +('092689e4-d9d8-533d-964e-8224b8b0dcf2', '49180c2b-e3e2-59d8-93bc-50c5abe23a4a', 'Ức Gà Trộn Quinoa Và Rau Củ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 1, 'Easy', 'Lunch,Dinner', 66000, '["Bước 1: Sơ chế Thịt ức gà, Hạt quinoa, Bí đỏ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/uc-ga-tron-quinoa-va-rau-cu/', true, now()), +('5a2a9387-2330-5d76-a54d-b4e96778dcb1', '3d9eb975-a222-5134-b5da-6e7deaa149ee', 'Túi Ngọc Xốt Mè', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 1, 'Easy', 'Lunch,Dinner', 116000, '["Bước 1: Sơ chế Bánh tráng bò bía tươi, Nấm đùi gà, Dưa leo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tui-ngoc-xot-me/', true, now()), +('89d3ca24-e709-5249-a8d7-b2e20f5fdf28', 'e3064d97-9cab-51f2-b798-a44ce807f8eb', 'Thịt Heo Chiên Xù Tonkatsu', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 20, 15, 35, 2, 'Easy', 'Lunch,Dinner', 16000, '["Bước 1: Sơ chế Thịt heo, Cơm trắng, Súp Miso; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/thit-heo-chien-xu-tonkatsu/', true, now()), +('472b03f0-5234-5ff4-8642-107d21a757fe', '6b15f690-2978-5137-8ac3-a87cb162e526', 'Thịt Heo Chiên Giòn Vị Cà Ri', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 21000, '["Bước 1: Sơ chế Nạc lưng heo, Mè đen, Khoai lang; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/thit-heo-chien-gion-vi-ca-ri/', true, now()), +('0d6b5a21-80cf-581d-947c-05fae6c04778', 'a7c8c2cb-f461-5672-a658-11be9aebd948', 'Sushi cupcake cá hồi', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 94000, '["Bước 1: Sơ chế Cơm dẻo hạt tròn, Cá hồi phi lê, Dưa leo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/sushi-cupcake-ca-hoi/', true, now()), +('ad28d0de-c6fb-5e9e-a4e1-c35e55c89da0', '234846ac-37f3-5e08-a21a-da1b6827626c', 'Súp Gà Bí Đỏ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 60000, '["Bước 1: Sơ chế Má đùi gà, Bí đỏ, Hành tây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/sup-ga-bi-do/', true, now()), +('a1cd7b4d-3973-5e15-8d9e-31093d1e2923', 'b5f3ebb9-ea68-503a-bfa5-1525e1517cee', 'Sườn nướng xốt gấc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 40, 50, 1, 'Easy', 'Lunch,Dinner', 89000, '["Bước 1: Sơ chế Sườn non nguyên tảng, Thịt gấc, Bột hành; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/suon-nuong-xot-gac/', true, now()), +('4836b3d9-e3eb-5095-a332-b69f6db7342d', 'c2bc1137-02a9-5445-84b0-375d19ff1977', 'Snack rong biển thanh cua', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 5, 10, 2, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bánh tráng, Thanh cua, Rong biển giòn; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/snack-rong-bien-thanh-cua/', true, now()), +('fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', '9523318b-79ab-5402-9329-d6e5455a57c5', 'SALAD GYOZA', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 20, 20, 40, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bánh Xếp Kiểu Nhật Gyoza dùng nồi, Xà lách Mỹ, Bắp cải tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-gyoza/', true, now()), +('929bca5b-08ac-5980-99cb-5b1416022b57', '0fa46d79-a02e-52de-821a-0b4cdb1d42fd', 'Salad Cá Hồi Trái Cây Nhiệt Đới', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 1, 'Easy', 'Lunch,Dinner', 51000, '["Bước 1: Sơ chế Cá hồi file, Thơm, Bơ chín; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-ca-hoi-trai-cay-nhiet-doi/', true, now()), +('9216c504-a8b1-531b-8b92-c14531cc6dee', '1c415782-b508-5652-89ed-2b21e05ce4b4', 'Salad cá hồi nướng xốt mayo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Cá hồi, Xà lách, Dưa leo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-ca-hoi-nuong-xot-mayo/', true, now()), +('7d4d2c2b-cc00-5658-b708-64600e0e697e', '75566d6e-1bfa-5ac6-8d6f-a478c98a7953', 'Salad Bò Nướng Áp Chảo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 1, 'Medium', 'Breakfast,Lunch,Dinner', 213000, '["Bước 1: Sơ chế Thịt bò file, Thơm, Táo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-bo-nuong-ap-chao/', true, now()), +('caa87882-7965-5325-a3d7-4fb3d76b1a6b', '84ef196e-0a0a-5113-af46-ffc4bf983b53', 'Salad bò đậu rồng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 1, 'Easy', 'Lunch,Dinner', 64000, '["Bước 1: Sơ chế Thịt bò, Đậu rồng non, Xà lách carol; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-bo-dau-rong/', true, now()), +('bffba155-1dd7-560b-bebc-461233f76b6e', '8cb40997-a25b-5ecc-91fd-24fee45bc66a', 'Phở Xào Giòn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 2, 'Easy', 'Breakfast,Lunch,Dinner', 28000, '["Bước 1: Sơ chế Bánh phở, Thịt bò fillet, Cải ngọt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/pho-xao-gion/', true, now()), +('b553c9fd-4b72-51a4-84bd-f9497b6ce417', 'adde9c27-5b7d-587a-a8e4-a9d65568dccc', 'Pancake Trứng Và Bacon', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 3, 13, 2, 'Easy', 'Lunch,Dinner', 13000, '["Bước 1: Sơ chế Bacon, Trứng gà, Dưa leo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/pancake-trung-va-bacon/', true, now()), +('0d1b3076-1af4-589d-8ff0-09da26781fb4', 'fe815907-5282-5c31-8470-512c6efeca36', 'Ốc Hương Xóc Xốt Trứng Muối', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 5, 10, 2, 'Easy', 'Lunch,Dinner', 41000, '["Bước 1: Sơ chế Ốc hương, Hành tỏi, Sả cây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/oc-huong-xoc-xot-trung-muoi/', true, now()), +('a44ca648-7eb4-5c7a-af55-54df50ad0c27', 'f13548ed-d397-5167-95a1-ab4292e3680c', 'Nui ngũ sắc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 2, 'Easy', 'Lunch,Dinner', 46000, '["Bước 1: Sơ chế Nui ngũ sắc đã, Thịt heo, Trứng cút; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/nui-ngu-sac/', true, now()), +('4708d25c-b8e8-5cf8-8bb9-2cf3f60fb3e6', '775015ce-e05b-5b5e-842c-128b624102bd', 'Nấm Và Hành Tây Chiên Giòn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 2, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Nấm đùi gà baby, Nấm kim châm, Hành tây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/nam-va-hanh-tay-chien-gion/', true, now()), +('e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', '5220b343-d0dc-586c-a784-c869f4e16ff0', 'Nấm Lộc Nhung Kho Tiêu Xanh Ăn Với Cháo Đậu Đỏ (Chay)', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 1, 'Easy', 'Breakfast,Lunch,Dinner', 248000, '["Bước 1: Sơ chế Nấm lộc nhung, Gạo dẻo, Đậu đỏ khô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/nam-loc-nhung-kho-tieu-xanh-an-voi-chao-dau-do-chay/', true, now()), +('ba682b34-43fa-5754-974f-d9567b75149e', '0f33a1ef-cf47-5c06-8190-d7f6902d4090', 'MUFFIN SOCOLA', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 15, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Trứng gà, Socola chip; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/muffin-socola/', true, now()), +('5ccea86e-023d-53d1-a059-0cfb87b2eaf4', '75c2854d-13f5-5d86-9aed-ba06d3565e67', 'MỰC NHỒI XÔI TÍM RAU CỦ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 15, 30, 2, 'Easy', 'Breakfast,Lunch,Dinner', 239000, '["Bước 1: Sơ chế Mực ống, Xôi lá cẩm tím, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/muc-nhoi-xoi-tim-rau-cu/', true, now()), +('0064573b-0268-516e-8301-15f9bc40b7ac', 'bab541c4-34b8-5d25-b602-a16912efbb95', 'Miến Xào Cua Măng Tây', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 21000, '["Bước 1: Sơ chế Thịt cua rỉa, Măng tây, Thơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mien-xao-cua-mang-tay/', true, now()), +('3f80e2d5-5d39-5740-9a50-251e1d26ed53', 'eae2cda8-a417-58c1-b846-91cf697afc2f', 'MÌ XÀO BÒ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 2, 'Easy', 'Breakfast,Lunch,Dinner', 21000, '["Bước 1: Sơ chế Mì vàng, Thịt bò, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-xao-bo/', true, now()), +('203f3b8f-ea69-54dc-ac5b-163fcfacc61d', 'f12e32e6-2bf9-5564-a402-ad66c9d02c60', 'MÌ TRỘN GYOZA', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 2, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bánh xếp kiểu Nhật Gyoza dùng nồi, Mì gói, Cải thìa; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-tron-gyoza/', true, now()), +('3b717974-2040-5de1-8b34-5c045f32fe9c', '6e8f5c9b-6cb0-5342-91ae-cfcfd3b435d6', 'Mì Gyoza Miso', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 1, 'Easy', 'Breakfast,Lunch,Dinner', 199000, '["Bước 1: Sơ chế Bánh xếp Gyoza, Nước dùng gà, Mì ramen 4 vắt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-gyoza-miso/', true, now()), +('45b9facb-6011-5f60-bb42-0046a6c1158b', 'ce77f3bc-2925-5534-b6d1-9df2fbdeb7da', 'MẮM KHO CHAY', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 13, 5, 18, 1, 'Easy', 'Lunch,Dinner', 111000, '["Bước 1: Sơ chế Sườn chay lát, Đậu hũ, Cà tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mam-kho-chay/', true, now()), +('7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', '308c4c33-586b-5096-ac3b-2b86dabfc879', 'Lẩu Chao Củ Sen Khoai Môn Chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 1, 'Easy', 'Breakfast,Lunch,Dinner', 154000, '["Bước 1: Sơ chế Khoai môn cao, Củ sen, Đậu hủ bi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-chao-cu-sen-khoai-mon-chay/', true, now()), +('59686b97-13a9-5fd7-8f10-89146df7d380', '7360d445-af05-5941-9a02-726a863ca929', 'Kem “Blendy”', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Blendy Trà Đào hương Cam Sả, Blendy Trà Sữa Royal, Kem whipping; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/kem-blendy/', true, now()), +('b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', 'a4b5a842-3bd7-5ffa-a14a-b3e5cd792e3a', 'HỦ TIẾU SA ĐÉC XÀO TÉP BÔNG ĐIÊN ĐIỂN', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 15000, '["Bước 1: Sơ chế Hủ tiếu Sa Đéc, Tép rong, Thịt ba chỉ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/hu-tieu-sa-dec-xao-tep-bong-dien-dien/', true, now()), +('aeedff90-6f79-5b7b-86f0-34266f43b4d1', '8c22c249-aaa3-54c5-9766-7fe629e879eb', 'Hoành Thánh Tá Lả', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 2, 'Easy', 'Lunch,Dinner', 27000, '["Bước 1: Sơ chế Lá hoành thánh, Tôm thẻ, Hành tây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/hoanh-thanh-ta-la/', true, now()), +('a423b8df-6179-54b1-9cc8-baf478411cd5', 'f708a894-ab30-54d0-9818-b8f6a27670e0', 'GYOZA MÌ TRỘN', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 15, 30, 4, 'Easy', 'Breakfast,Lunch,Dinner', 15000, '["Bước 1: Sơ chế Bánh Xếp Kiểu Nhật Gyoza, Mì tươi, Tôm sú; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/gyoza-mi-tron/', true, now()), +('76822912-edd7-5d39-9540-d12ee63006a5', 'aa1380c6-78a6-5278-8dd7-f8ca819d4542', 'Gyoza Dùng Nồi Chiên Không Dầu Ăn Kèm Rau Củ Sấy', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 15, 20, 1, 'Easy', 'Snack', 51000, '["Bước 1: Sơ chế Bánh xếp kiểu Nhật Gyoza dùng nồi, Cải xoăn, Ca rốt baby; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/gyoza-dung-noi-chien-khong-dau-an-kem-rau-cu-say/', true, now()), +('434a07c3-135d-578c-ab26-960f95d48d96', 'b6773ddf-0235-5262-b179-cfaa4ea31045', 'GÀ CHIÊN VỊ BƠ TỎI', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 18000, '["Bước 1: Sơ chế Cánh gà, Xà lách, Cà chua bi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-chien-vi-bo-toi/', true, now()), +('36c2eefe-deaa-5210-b54f-f94221a40df2', 'd614a7b2-71b9-5a3b-9ba6-528d95718ca2', 'ĐẬU HŨ XỐT CAY XÈ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 2, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Đậu hũ non, Thịt heo, Hành lá; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/dau-hu-xot-cay-xe/', true, now()), +('34a2bc84-8c4f-55a9-b79b-d33cbfadfc6a', 'ec62cd14-fd01-562d-a233-8870ad2b0f2f', 'Cơm trộn Vetula', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 2, 'Easy', 'Lunch,Dinner', 21000, '["Bước 1: Sơ chế Gạo, Rau củ đông lạnh các loại, Thịt bò; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-tron-vetula/', true, now()), +('d515c11c-1146-5d38-abc0-fbea5bc77b07', 'dd32a2ae-28ec-5583-80f7-91225d347b33', 'Cơm Thịt Xào Cay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 2, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Thịt, Dưa leo, Hành lá; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-thit-xao-cay/', true, now()), +('403c0bfc-9673-5255-aaf8-4b7d586435f1', '0117ad67-9019-5905-b517-19e65368468a', 'CƠM THANH CUA TRỨNG CHẢY', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 2, 'Easy', 'Lunch,Dinner', 40000, '["Bước 1: Sơ chế Cơm trắng, Thanh cua đông lạnh 4 thanh, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-thanh-cua-trung-chay/', true, now()), +('944240f8-ee0f-5d99-be2f-478e7d058a6e', '77af20fe-209c-5fa5-bd10-c9aa50da90ff', 'Cơm niêu chay ngũ sắc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 30, 45, 1, 'Easy', 'Lunch,Dinner', 56000, '["Bước 1: Sơ chế Gạo tím, Hạt sen, Bạch quả khô bỏ nhụy; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-nieu-chay-ngu-sac/', true, now()), +('e8ee76e7-0fa9-5052-8224-bb389888cb97', '4fd6995c-4b0a-531a-a5f4-d1b5d3871013', 'Cơm Chiên Tôm Thơm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 2, 'Easy', 'Lunch,Dinner', 25000, '["Bước 1: Sơ chế Tôm thẻ bóc vỏ / tôm đông lạnh, Thơm, Cơm trắng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-chien-tom-thom/', true, now()), +('cd61c422-d90a-5642-9ee3-a2d501087e13', '5147db32-3487-5b56-bb41-6d8a5c9b5ca9', 'Cơm chiên tôm bông cải', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Tôm sú bóc vỏ chừa đuôi, Bông cải xanh không lấy cuống, Đậu hà lan; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-chien-tom-bong-cai/', true, now()), +('dac6bfff-2dde-5dfb-b0ed-7c953b706187', 'aa93566a-a8e1-5975-9ddd-f9fee9b6aa1c', 'Chả Giò Thanh Cua Mayo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 2, 'Easy', 'Lunch,Dinner', 20000, '["Bước 1: Sơ chế Thanh cua, Hành tây, Trứng cá chuồn; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cha-gio-thanh-cua-mayo/', true, now()), +('388afcb0-b41e-51c6-b976-6e943103411e', '40fbdafc-f64a-5fe9-b221-1ca995ea96b9', 'Canh thái hàu trứng cút', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 14000, '["Bước 1: Sơ chế Thịt hàu, Hành tây, Cà chua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-thai-hau-trung-cut/', true, now()), +('b429e162-91ca-5675-be33-df01c9a89af9', 'bb7a9c3d-c4ec-5f72-8e46-66196a9318f1', 'CANH SÚNG CÁ DỨA VŨNG TÀU', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 10, 25, 4, 'Easy', 'Lunch,Dinner', 35000, '["Bước 1: Sơ chế Cá dứa 2 khứa, Cọng bông súng, Thơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-sung-ca-dua-vung-tau/', true, now()), +('65e69561-b8e9-5c64-b266-17eb6e8275d5', '9315b80d-2142-5b43-a0cd-76ff70f1d3f1', 'CANH CHUA TÔM BỒN BỒN BÔNG ĐIÊN ĐIỂN', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 1, 'Easy', 'Lunch,Dinner', 103000, '["Bước 1: Sơ chế Tôm càng, Bồn bồn tươi, Bông điên điển; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-chua-tom-bon-bon-bong-dien-dien/', true, now()), +('1b63c604-1ff8-5d78-9291-0dba252a058d', '661bad4e-a8d6-5aa4-8e0c-7672eaef37de', 'Cá Hồi Ngâm Nước Tương', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 5, 10, 2, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Cá hồi fillet bỏ da, Ớt chuông đỏ, Ớt chuông vàng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-hoi-ngam-nuoc-tuong/', true, now()), +('2bdf29f8-8454-5a6e-95ec-46c2c70d169e', 'ca169e9e-102f-53b2-9519-a4b15207fb52', 'Cá Điêu Hồng Chiên Rau Củ Ngũ Sắc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 15, 20, 4, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Phile cá điêu hồng, Bí đỏ, Bông cải xanh; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-dieu-hong-chien-rau-cu-ngu-sac/', true, now()), +('23c787a3-80f0-531b-9181-8bbf6e8583b8', '4460d91f-7853-5fb0-8906-54fbc3373056', 'Bún chả hến', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Breakfast,Lunch,Dinner', 23000, '["Bước 1: Sơ chế Thịt hến, Cá thác lác nạo, Mỡ gáy; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bun-cha-hen/', true, now()), +('059169ca-39f9-530b-9bfc-b009292ab6be', '5428464e-478a-5f0f-834c-247c29de8ff1', 'Bò tiềm trái lê', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 50, 60, 2, 'Easy', 'Lunch,Dinner', 50000, '["Bước 1: Sơ chế Thịt bò, Trái lê, Gừng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Xếp nguyên liệu vào xửng hoặc nồi, hấp/tiềm đến khi chín mềm nhưng không nát.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bo-tiem-trai-le/', true, now()), +('7c8cd9aa-bd67-52a0-bcae-22625923361c', 'f9d17d73-3258-5ac4-a0d0-e90f1fcf1e2b', 'BÁNH TRÁNG CUỐN THỊT BĂM', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 2, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Thịt bò, Bánh tráng, Hỗn hợp rau củ đông lạnh; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-trang-cuon-thit-bam/', true, now()), +('e143f353-f108-5d2b-84cd-68c151829f1c', '2b2af25a-d0c4-5cf7-b221-61afa5ecbd14', 'Bánh Mì Sandwich Nướng Phô Mai', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 5, 10, 2, 'Easy', 'Breakfast,Lunch,Dinner', 58000, '["Bước 1: Sơ chế Phô mai lát, Cà chua bi, Trứng gà; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-mi-sandwich-nuong-pho-mai/', true, now()), +('6e1fbcff-fd82-5dc9-9082-6050995ad7ee', 'e82fc44c-df2c-5bc3-9b38-2de0366ffad3', 'Bánh Mì Chảo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 15, 30, 2, 'Easy', 'Breakfast,Lunch,Dinner', 28000, '["Bước 1: Sơ chế Bánh mì ổ, Thịt bò phi lê, Pate; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-mi-chao/', true, now()), +('03b3b84c-b064-54e7-b626-1557ecd827bc', '624a6bc4-24f7-5581-a77d-54d46112d1f4', 'Bánh Hẹ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 5, 10, 2, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Hẹ lá, Trứng gà, tương ớt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-he/', true, now()), +('700efaf4-d68c-5821-875d-6ef08ddb9573', '490f00a2-105e-517f-84f0-a61d725e00d0', 'Bánh cuốn lạnh', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 2, 'Easy', 'Snack', 17000, '["Bước 1: Sơ chế Bánh tráng, Nấm đùi gà, Trứng gà; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-cuon-lanh/', true, now()), +('7944f574-0f38-5656-9330-1a54a4183ed4', 'b75684e9-8818-5c5d-bc55-4c6645c2f746', 'Tôm Xào Bông Cải', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 27000, '["Bước 1: Sơ chế Tôm sú tươi, Tôm viên, Bông cải trắng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tom-xao-bong-cai-2/', true, now()), +('6844ee20-8ed8-5940-adce-769a1141e4a8', 'dc70b813-c5c7-5720-97de-cb370e1630be', 'Lẩu Sườn Bò Chua Cay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 20, 35, 4, 'Easy', 'Lunch,Dinner', 34000, '["Bước 1: Sơ chế Sườn bò, Hành tây, Thơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nước dùng đến vị cân bằng, giữ sôi nhẹ rồi lần lượt nhúng nguyên liệu khi ăn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-suon-bo-chua-cay/', true, now()), +('4825fd88-5f5c-5821-9062-7f8f04ebd302', 'e264594d-10ad-53b2-a7ca-646da2bc73f5', 'Súp Rau Chùm Ngây Đậu Hủ Non', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 23000, '["Bước 1: Sơ chế Nước dùng rau củ, Đậu hũ non, Nấm rơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/sup-rau-chum-ngay-dau-hu-non/', true, now()), +('8133d712-b664-5bae-85d5-1d8688942392', '1d2f4299-6670-5c90-a5fa-cdf61bb448e0', 'Salad Cá Hồi Trộn Bông Cải Trắng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Medium', 'Lunch,Dinner', 16000, '["Bước 1: Sơ chế Cá hồi phi lê, Bông cải trắng, Đậu Hà Lan trái; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-ca-hoi-tron-bong-cai-trang/', true, now()), +('63cee79e-bd9b-5de3-84cb-f700c331f757', '9c3d138a-b9c3-5b90-b1fc-7f07b83f2781', 'Canh Cá Dưa Cải', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 1, 'Easy', 'Lunch,Dinner', 77000, '["Bước 1: Sơ chế Cá nâu, Cà chua chín đỏ, Thơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ca-dua-cai/', true, now()), +('b32a4ff5-bdca-5ce2-9f12-f85198cb2821', '36bc65be-be34-52c1-8be5-304afde6976f', 'Cơm Nắm Xốt Mè', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 5, 10, 2, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Cơm trắng dẻo, Thịt ba rọi xông khói, Trứng gà; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-nam-xot-me/', true, now()), +('26b96e49-8e91-539b-baec-35d2c0f9e8e0', '3b387c4f-3b84-5e55-83c0-deace30007f8', 'Cuốn Nấm Dưa Gừng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 20, 35, 4, 'Medium', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Măng tây, Nấm đùi gà, Chả lụa chay; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cuon-nam-dua-gung/', true, now()), +('f81aeffe-7080-53cd-8c22-b2c534391879', 'a04115a4-10ae-5885-9d95-3a443f3d1539', 'Nui Hải Sản Cho Ngày Tình Yêu', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 1, 'Medium', 'Lunch,Dinner', 107000, '["Bước 1: Sơ chế Nui hình trái tim, Thịt cua rỉa, Tôm sú; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/nui-hai-san-cho-ngay-tinh-yeu/', true, now()), +('1716bba2-c823-5ffe-9d0f-f501f152751c', '2e511b3e-c599-5d60-8065-f6bc973ba565', 'Mì Ý Cá Hồi Xốt Caesar', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 1, 'Easy', 'Breakfast,Lunch,Dinner', 56000, '["Bước 1: Sơ chế Mì Ý, Cá hồi, Cà chua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-y-ca-hoi-xot-caesar/', true, now()), +('0b9dc0c8-a923-582f-a1ac-c1a5c8e793a0', '9e347db2-6809-5c53-9e29-616f03979d50', 'Tôm Chiên Xốt Mayo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 1, 'Easy', 'Lunch,Dinner', 47000, '["Bước 1: Sơ chế Tôm sú đông lạnh, Xà lách lolo, Sữa đặc; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tom-chien-xot-mayo/', true, now()), +('c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', 'f8f349ca-f6ed-5a88-9ca4-0ff6e62faa77', 'Bò Thưng Cuộn Trứng Cút Xốt Thơm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 8, 'Medium', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Thăn lưng bò, Trứng cút, Giò sống; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bo-thung-cuon-trung-cut-xot-thom/', true, now()), +('7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '48d7d91b-76c2-56d2-977b-2bcc436bd955', 'Cá Cơm Than Chiên Cà Ri', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Medium', 'Lunch,Dinner', 250000, '["Bước 1: Sơ chế Cá cơm than làm sạch, Bột cà ri, Lá cà ri tươi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-com-than-chien-ca-ri/', true, now()), +('68cb9558-603b-57e4-b03e-3b9642f54d8c', '7b5a5d5b-ef27-5e7d-9c7c-95d605842039', 'Chè Dưỡng Nhan Blendy®', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 12, 'Medium', 'Snack', 45000, '["Bước 1: Sơ chế Táo đỏ khô, Đông trùng hạ thảo, Hạt sen tươi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/che-duong-nhan-blendy/', true, now()), +('044dba2e-0aca-5776-92be-ac369b6d1f5b', '86baf591-7e4a-526f-944d-882721ae8bc6', 'Bún gạo xào lòng nghệ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Breakfast,Lunch,Dinner', 16000, '["Bước 1: Sơ chế Bún gạo khô, Lòng non, Hẹ lá; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bun-gao-xao-long-nghe/', true, now()), +('93d91c8e-ecee-54f4-ad68-f3a177145d0d', '21e8178b-1e7f-532d-8417-eb43ba9d42cb', 'Củ sen chiên tôm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 36000, '["Bước 1: Sơ chế Củ sen, Tôm tươi, Giò sống; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cu-sen-chien-tom/', true, now()), +('9de675ab-2bc5-540a-8b53-2eeea872c909', '3e687777-9dc0-5fd4-ac00-b2b838c1befc', 'Canh gà cải bó xôi', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Cánh gà, Cải bó xôi, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ga-cai-bo-xoi/', true, now()), +('129129da-b564-5442-b318-bc53770a8e91', '2fd5b096-56d0-51ad-a293-d5c3fbd99411', 'Tôm càng kho trứng muối', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 15000, '["Bước 1: Sơ chế Tôm càng, Lòng đỏ trứng muối, Dừa xiêm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tom-cang-kho-trung-muoi/', true, now()), +('5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', '90e40411-f509-5567-a33b-b690d4f9e97c', 'Đậu chiên thả nước tương', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 49000, '["Bước 1: Sơ chế Đậu hủ bi, Trứng cút, Cá thác lát; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/dau-chien-tha-nuoc-tuong/', true, now()), +('f05e3d8b-228d-5356-bf82-227a74db0cae', '97f1c65e-d56f-5ec7-88ea-c4ae418a4241', 'Canh chua bồn bồn vị thái', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Cá hú, Thơm chín, Cà chua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-chua-bon-bon-vi-thai/', true, now()), +('68a5d71b-d05c-574d-8b4f-a7040169f6ae', '1dac007d-73c9-5c79-92bb-a45015ccaf7e', 'Mì spaghetti xào tôm nấm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 2, 'Easy', 'Breakfast,Lunch,Dinner', 68000, '["Bước 1: Sơ chế Mì spaghetti số 3 đã, Tôm sú 30-40, Hẹ bông; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-spaghetti-xao-tom-nam/', true, now()), +('22fd276f-7653-587a-97a2-74f1a33febaf', 'd6ff206d-80de-545d-a51e-9dcb59b92179', 'Xôi viên ngọc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Breakfast,Lunch,Dinner', 22000, '["Bước 1: Sơ chế Nếp bún thơm, Chả tôm hoặc chả cá, Lá cẩm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/xoi-vien-ngoc/', true, now()), +('3c2a87d0-e085-57f8-8a47-ba270b33d660', '31b958cc-a121-5ceb-b66b-6ae877d70b30', 'Cải bó xôi xào thịt', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Cải bó xôi, Thịt nạc dăm, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cai-bo-xoi-xao-thit/', true, now()), +('852227b0-8f9d-5067-b2a4-2016f65dff95', 'b5afea0b-b494-5e70-9b37-e4d2978f16b6', 'Viên xôi gà bọc lá sen', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Breakfast,Lunch,Dinner', 24000, '["Bước 1: Sơ chế Nếp, Thịt ức gà phi lê, Nấm hương, nấm mèo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/vien-xoi-ga-boc-la-sen/', true, now()), +('cfb3e9ac-4ec7-5b13-9391-381c46d0c030', 'c16e4630-9788-5432-b593-b2444d7e5654', 'Ốc hương xào củ dừa', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 42000, '["Bước 1: Sơ chế Ốc hương, Củ hũ dừa tươi, Cà bi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/oc-huong-xao-cu-hu-dua/', true, now()), +('bad53ebc-dda4-59f0-9666-f1037266120a', '0e49b2ee-3c90-5a73-bb44-55a52cc19e10', 'RONG BIỂN CUỘN CHIÊN XÙ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 4, 'Easy', 'Lunch,Dinner', 83000, '["Bước 1: Sơ chế Cơm trắng, Lá rong biển, Xúc xích; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/rong-bien-cuon-chien-xu/', true, now()), +('dddbc633-913f-566a-9116-4fb7674801b3', '8ddfc70a-f887-5f2e-81ca-83e2ba938f90', 'Sườn nấu đậu ngự', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 45, 55, 4, 'Easy', 'Lunch,Dinner', 25000, '["Bước 1: Sơ chế Sườn heo non, Đậu ngự tươi, Cà rốt bào vỏ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/suon-nau-dau-ngu/', true, now()), +('9b84c752-6d5a-5856-902c-7a2147b9a116', 'd8fda1ba-706a-5386-9156-d82d16fd1cdf', 'Mướp xào đậu phộng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Breakfast,Lunch,Dinner', 18000, '["Bước 1: Sơ chế Mướp hương, Bí đỏ baby/ Bí đỏ Nhật, Đậu phộng vỏ đỏ khô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/muop-xao-dau-phong/', true, now()), +('2e0f6db7-11c5-58ac-99d6-05deb1d97070', '965bcd18-e24e-53c3-892a-d2ad02a9b5ab', 'Cá lóc nướng ớt xiêm xanh', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 38000, '["Bước 1: Sơ chế Cá lóc con vừa, Ớt xiêm xanh, Củ nén; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-loc-nuong-ot-xiem-xanh/', true, now()), +('003d3539-f53e-5aee-af59-626f2d79796e', 'ad14f30d-2b7c-5894-84aa-eae5f01484d7', 'Cá hồi chiên mắm dừa', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Cá hồi phi lê, Nước dừa, Nước chanh; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-hoi-chien-mam-dua/', true, now()), +('019db368-3bfe-570a-bd1c-24b55236907d', '6de34a76-83b1-5dbf-a706-ddfa1fef4d9c', 'Cánh gà rim hạt đác', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 17, 27, 4, 'Easy', 'Lunch,Dinner', 14000, '["Bước 1: Sơ chế Cánh gà khúc giữa, Hạt đác tươi, Chanh dây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ga-rim-hat-dac/', true, now()), +('14e1fb8f-a03a-5714-840b-c4a07d97f12f', 'eb09b5c1-cc9b-54c4-ac09-c0ea76d0be0d', 'Mực nhồi chả tôm nướng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 35000, '["Bước 1: Sơ chế Tôm đông lạnh không vỏ, Trứng gà ta, Mực ống; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/muc-nhoi-cha-tom-nuong/', true, now()), +('103fb1fe-2297-5255-b86a-9a66ad357d2f', '1756b0a4-9e15-5263-9e6b-0fc82b1fb93e', 'Cuốn rong biển chay chấm xốt đậu phộng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bánh tráng, Đậu hũ, Nấm tuyết; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cuon-rong-bien-chay-cham-xot-dau-phong/', true, now()), +('1e5d5d1b-6ce3-5ab5-b098-f99500d63fc5', '4fad619d-f8a7-5b48-9002-2c4026e1261d', 'Rau muống xào mắm ruốc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Rau muống hạt, Thịt ba rọi, Sả; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/rau-muong-xao-mam-ruoc/', true, now()), +('b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', 'e00c5f7f-0678-56b3-bb43-4fdf41dc1814', 'Bánh giò trứng cút', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Snack', 29000, '["Bước 1: Sơ chế Bôt gạo lọc, Bột năng, Thịt nạc dăm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-gio-trung-cut/', true, now()), +('7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '716169dd-a274-5e9d-91d3-3d3b3cdced54', 'Mì xào giòn chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Breakfast,Lunch,Dinner', 22000, '["Bước 1: Sơ chế Mì, Nấm rơm, Thịt nguội chay; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-xao-gion-chay/', true, now()), +('66ab85b1-eb9c-51c8-8349-bb28ef8e7173', '348e5c8a-3072-5daa-80c8-93c9b30f1ac3', 'Sườn chiên cay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 13000, '["Bước 1: Sơ chế Sườn non, Sả ớt, Đầu hành lá; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/suon-chien-cay/', true, now()), +('7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', '385af952-3b6c-50e6-a478-50f7b59e33c9', 'Salad nui', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Nui xoắn, Dưa leo, Xoài cát; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-nui/', true, now()), +('0c46ac26-e2e9-5603-9187-a79fb1296307', '4b3bb2c0-3e49-5902-9cf5-6be7560c6ccc', 'Bí đỏ hấp hải sản', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 45, 55, 4, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Bí đỏ tròn, Tôm sú, Mực tươi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Xếp nguyên liệu vào xửng hoặc nồi, hấp/tiềm đến khi chín mềm nhưng không nát.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bi-do-hap-hai-san/', true, now()), +('152d12c2-b100-5b73-9d58-53a63cc8196b', 'dfa5e691-0a38-53b9-b5ea-3387ac750a99', 'Mì căn xào sả ớt', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Mì căn, Cà ri bột, Boa-rô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-can-xao-sa-ot/', true, now()), +('45634f69-1306-5728-bacc-aae078f2d954', '30d5d373-020d-5f16-9f38-c84ab8075dab', 'Salad táo rau mầm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 14000, '["Bước 1: Sơ chế Tôm sú, Táo đỏ, Rau mầm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-tao-rau-mam/', true, now()), +('6c780824-df81-56db-bb3a-77854d890d5b', '90788f4b-1c27-5b0b-ad72-96959705f561', 'Chả bắp', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 28000, '["Bước 1: Sơ chế Bắp nếp, Hành boaro, Dừa tươi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cha-bap/', true, now()), +('11c31a55-d6e9-5b2b-966a-16390a66cac9', '166ccf97-1975-549c-8ab7-76ba10c2e918', 'Gà hấp hành răm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 45, 55, 4, 'Easy', 'Lunch,Dinner', 16000, '["Bước 1: Sơ chế Gà ta, Đầu hành trắng, Rau răm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Xếp nguyên liệu vào xửng hoặc nồi, hấp/tiềm đến khi chín mềm nhưng không nát.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-hap-hanh-ram/', true, now()), +('714b1258-baab-553b-9faf-94de5b6c9288', 'fcb3741e-2a81-5fe5-a4dd-855e5b49392b', 'Canh bí đỏ rong biển', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 1, 'Easy', 'Lunch,Dinner', 57000, '["Bước 1: Sơ chế Bí đỏ, Rong biển khô, Sườn chay; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-bi-do-rong-bien/', true, now()), +('b45c5975-3e99-5946-9801-1792aa9bdecd', '6cca9ac0-38ad-5bfd-90d6-a17b66ee34a0', 'Chạo chay sả cây', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Breakfast,Lunch,Dinner', 29000, '["Bước 1: Sơ chế Giò sống chay, Nấm hương khô, Hành poaro; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/chao-chay-sa-cay/', true, now()), +('805702b2-90d5-5075-8796-eab70aa027e9', '082bbf1c-0ab4-5d12-a9ba-c08dc84d0cd6', 'Rau củ kho chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Đậu que, Khổ qua đèo, Thơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/rau-cu-kho-chay/', true, now()), +('4269252d-788e-55b0-b425-cb92701a1c05', 'bee657e8-91fc-5a30-87aa-353a865056dc', 'Chả ốc chiên', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Thịt ốc bươu, Giò sống, Nạc dăm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cha-oc-chien/', true, now()), +('112378a3-1c21-530b-9824-b4e29efbe29f', 'c63ddfae-6c0f-56a2-902b-6e1b25a8d09e', 'Vịt rang tỏi', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Thịt vịt, Tỏi, Tỏi tép đập dập; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/vit-rang-toi/', true, now()), +('cb598433-e532-5686-b512-34210281a9d7', 'fa424ea7-f93c-5292-91f6-c9a4e90fb902', 'Bánh tôm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 60, 70, 4, 'Easy', 'Snack', 22000, '["Bước 1: Sơ chế Bột mì, Bột gạo, Bột nổi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-tom/', true, now()), +('1631cb80-5df9-5d0f-8a46-bcc14b4638f3', 'eed6356e-6c8a-515d-9c2b-b86939169e26', 'Khổ qua kho chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 35, 45, 4, 'Easy', 'Lunch,Dinner', 34000, '["Bước 1: Sơ chế Khổ qua to, Đậu hũ trắng, Nấm mèo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/kho-qua-kho-chay/', true, now()), +('e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', 'c43bb373-dd5c-542a-bc0d-46449ff2f4a4', 'Canh chua cá kèo bông so đũa', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 22000, '["Bước 1: Sơ chế Cá kèo, Bông so đũa, Rau nhút; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-chua-ca-keo-bong-so-dua/', true, now()), +('b4396b09-7b13-5d67-96f7-8a03803241a0', '91695900-e51b-5fc2-b65f-46846e1b9ffb', 'Đậu hũ xào nấm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 13000, '["Bước 1: Sơ chế Đậu hũ non, Nấm bào ngư, Nấm đông cô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/dau-hu-xao-nam/', true, now()), +('d9d7740f-5c52-5de6-8689-f857779fd051', '9badd4e9-fa12-5fa6-ad96-62c24a8fae78', 'Lẩu bò', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 34000, '["Bước 1: Sơ chế Nạm bò, Khoai môn, Củ sen; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nước dùng đến vị cân bằng, giữ sôi nhẹ rồi lần lượt nhúng nguyên liệu khi ăn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-bo-2/', true, now()), +('2146b6ec-8515-51d1-aad7-45418e123659', '0f13aee0-d50f-5fc9-993c-e9762b3ad64f', 'Tôm kho tàu', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 28000, '["Bước 1: Sơ chế Tôm càng sống, Dừa tươi: 1 trái, Chanh; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tom-kho-tau/', true, now()), +('b3d389b6-1c6e-5cce-9717-e9209854de4c', '3c0631f4-bc8d-5d9b-99c9-41aea3a02bf9', 'Canh hào thanh mát', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 82000, '["Bước 1: Sơ chế Hào sữa thịt, Củ cải trắng, Bí ngòi vàng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-hao-thanh-mat/', true, now()), +('60011023-f034-5a56-b241-f7d880cea4e6', 'fce6ef9a-22d9-5929-ba94-48c2d07106f0', 'Phở chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Medium', 'Breakfast,Lunch,Dinner', 38000, '["Bước 1: Sơ chế Bò lát chay, Tép mỡ chay, Ham chay; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/pho-chay-2/', true, now()), +('a1aeba19-fa06-585b-8271-10785bfaa2d9', '239d916e-f3f7-5bab-9993-4eb026e48e8b', 'Kho quẹt chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Sườn chay, Nấm hương loại nhỏ, Boa-ro; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/kho-quet-chay/', true, now()), +('8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '668aeb0f-5d05-517b-b7c3-a7c3fcb896fa', 'Pad Thái chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 13000, '["Bước 1: Sơ chế Bánh phở khô, Ớt chuông đỏ, Bí ngòi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/pad-thai-chay/', true, now()), +('665f3bd1-fb35-52f9-b2ee-b1bc4d620469', 'cd21b499-61ff-5909-81da-e7d8b724f599', 'Cá nục kho rục', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 60, 70, 4, 'Easy', 'Lunch,Dinner', 26000, '["Bước 1: Sơ chế Cá nục, Cà chua chín, Hành tây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-nuc-kho-ruc/', true, now()), +('236f7c55-ddf8-522c-ae9b-44489ebe14f5', '94f2fdec-4fab-5100-8291-bb90769013a6', 'Lẩu nấm chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 35, 45, 4, 'Easy', 'Lunch,Dinner', 14000, '["Bước 1: Sơ chế Mía lau, Bắp Mỹ, Hành boaro; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nước dùng đến vị cân bằng, giữ sôi nhẹ rồi lần lượt nhúng nguyên liệu khi ăn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-nam-chay/', true, now()), +('12a32d8d-aa86-5d9f-b3a2-44d7237e797b', '163fdb3e-de2a-5c59-9123-36dc754338d3', 'Bánh há cảo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Snack', 13000, '["Bước 1: Sơ chế Cà rốt, Đậu xanh, Nấm hương, nấm mèo mỗi loại; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-ha-cao/', true, now()), +('1ad07a36-d046-5c78-ba8f-eecf6c44fc20', '8b9efb2e-3478-512f-9686-29b92de6c218', 'Củ sen xào ngũ vị', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Chả chay, Củ sen tươi, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cu-sen-xao-ngu-vi/', true, now()), +('03bf54e4-600f-56f7-a7bb-c7697bea73dd', '3abe7f85-7a39-5d50-b9a6-218c1aa5dd75', 'Gỏi rong biển', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Rong biển khô, Thịt nạc dăm, Dưa leo; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/goi-rong-bien/', true, now()), +('7c8d3973-174d-5c49-8866-2255325f0021', 'bd742e67-7e4b-5de8-a153-2b94b7751607', 'Cá viên chiên mè', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 28000, '["Bước 1: Sơ chế Cá thác lác, Giò sống, Trứng cút; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-vien-chien-me/', true, now()), +('47d448f1-8630-52f9-aa1c-043f8017bc58', '1c1f7243-1981-5860-8232-f7d7b4229391', 'Cháo cá giò heo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Breakfast,Lunch,Dinner', 27000, '["Bước 1: Sơ chế Gạo thơm, Gạo nếp, Giò heo rút xương; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/chao-ca-gio-heo/', true, now()), +('e67140eb-db2b-55ee-bd62-e94f678327e5', 'c0c0a44f-6235-5508-a26c-fe97535e287a', 'Nem hải sản', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 23000, '["Bước 1: Sơ chế Tôm sú, Mực nang, Thịt cua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/nem-hai-san/', true, now()), +('bceb8f18-cb8a-5dce-bce6-dda5418db7c0', '9b23ac8a-f5ea-5152-92cb-a5d308da4d7b', 'Miến trộn kiểu Thái', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 45000, '["Bước 1: Sơ chế Miến, Thịt, Tôm sú; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mien-tron-kieu-thai/', true, now()), +('69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '28c9d587-9700-52c4-b8a5-8fcadc46c637', 'Bì cuốn chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 30000, '["Bước 1: Sơ chế Chả lụa chay, Khoai lang, Củ sắn; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bi-cuon-chay/', true, now()), +('be1cafbd-a7b9-56cd-9753-e01f6154adee', '7d997b0b-d447-5500-bee6-268d5a8991c2', 'Cá chim chiên giòn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 21000, '["Bước 1: Sơ chế Cá chim, Khoai tây, Cà chua bi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-chim-chien-gion/', true, now()), +('aba31d9b-1314-5946-8089-0fad951a64da', 'f099d162-ccc8-52a5-896e-8f62834072b2', 'Gân bò xào sả ớt', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 22000, '["Bước 1: Sơ chế Gân bò, Hành tím củ, Sả cây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/gan-bo-xao-sa-ot/', true, now()), +('5cf498d3-9ed4-54f3-a592-2c6e2c637009', 'c55a8b88-88ec-538f-acbc-848b76969e87', 'Canh cá nấu mẻ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 21000, '["Bước 1: Sơ chế Cá lóc bông, Mẻ, Cà chua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ca-nau-me/', true, now()), +('0f4947ed-0252-5910-b30c-d4c8bda057dc', '6668f78e-6a5a-5462-9761-7ab7cc0483f0', 'Bò kho nước dừa', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 23000, '["Bước 1: Sơ chế Thịt bắp bò, Nước dừa tươi, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bo-kho-nuoc-dua/', true, now()), +('46387bfc-26ee-5681-b014-3371e7d194c5', 'c9eb0836-573f-58cd-85e2-d57e6d0614e3', 'Cá điêu hồng kho tương bần', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 29000, '["Bước 1: Sơ chế Cá điêu hồng, Thịt ba chỉ, Tương bần; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-dieu-hong-kho-tuong-ban/', true, now()), +('36fb1b9a-9870-5572-ab08-bfae3a37502f', '1775e3ea-2824-576d-9eb5-3478a9059e1b', 'Mắm kho', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 28000, '["Bước 1: Sơ chế Cá hú hoặc cá basa, Thịt ba rọi, Cà tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mam-kho/', true, now()), +('9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', '6612b58c-d3b8-5f50-ab07-867f2ba5d6bd', 'Bánh bèo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 40, 50, 4, 'Easy', 'Snack', 17000, '["Bước 1: Sơ chế Tôm sú sống, Bóng bì, Hành lá; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-beo/', true, now()), +('a2d332cc-3511-5971-8373-25fcd8ec83a5', '93082e44-fbdf-5766-ad78-49e48f3bb32e', 'Salad ức gà áp chảo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Breakfast,Lunch,Dinner', 17000, '["Bước 1: Sơ chế Thịt nguội, Phô mai cheddar, Ức gà; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-uc-ga-ap-chao/', true, now()), +('6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '025a7296-c4f1-55b0-b068-360afde80e54', 'Phở gà', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 180, 190, 4, 'Easy', 'Breakfast,Lunch,Dinner', 124000, '["Bước 1: Sơ chế Bánh phở, Xương gà, Thịt gà; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/pho-ga/', true, now()), +('e91e02b2-0c12-5d61-9c31-22db6bc613bb', '7fceaecc-d25f-5a47-ab22-ebc4a4bf0d18', 'Cá hồi lúc lắc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 40, 50, 2, 'Easy', 'Lunch,Dinner', 31000, '["Bước 1: Sơ chế Cá hồi fillet, Ớt chuông vàng: 60, Hành tây tím: 25; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-hoi-luc-lac/', true, now()), +('98e7174f-aa61-529a-8cbe-8fc3860499a1', '0d31e5ff-f6a5-5b26-9a20-8c1978b24e03', 'Ức gà hấp cải thảo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 2, 'Easy', 'Lunch,Dinner', 23000, '["Bước 1: Sơ chế Ức gà không da, Cải thảo, Nấm linh chi nâu; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Xếp nguyên liệu vào xửng hoặc nồi, hấp/tiềm đến khi chín mềm nhưng không nát.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/uc-ga-hap-cai-thao/', true, now()), +('3bfb15cb-cae4-51e7-a93a-f75b762f6696', 'c1c91e79-32c9-5204-a5d2-7ef545c13d2d', 'Gà nướng xiên', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 18000, '["Bước 1: Sơ chế Má đùi gà rút xương, Hành tỏi, Khoai lang; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-nuong-xien-2/', true, now()), +('5c3b5cd3-e649-5a3d-b327-548d0c6784bd', 'd54c9fc3-ad24-5afd-9f00-77a0dde7a268', 'Salad bơ cải kale ức gà', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 2, 'Easy', 'Lunch,Dinner', 20000, '["Bước 1: Sơ chế Ức gà file, Bơ trái, Cà chua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-bo-cai-kale-uc-ga/', true, now()), +('6e91a518-aea2-5093-98e8-d6d651e1faf6', 'c3cc221c-bf80-5bde-8add-7eb13334c43f', 'Đậu trộn dầu giấm xốt mè rang', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 32000, '["Bước 1: Sơ chế Đậu trắng lon, Đậu gà lon, Bắp hạt lon; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/dau-tron-dau-giam-xot-me-rang/', true, now()), +('29af46b1-5482-592d-945e-b2f79da74e13', '01deb4e0-b046-5394-829e-c678f48c79e9', 'Mì udon xào bò', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 2, 'Easy', 'Breakfast,Lunch,Dinner', 26000, '["Bước 1: Sơ chế Thịt nạc bò mềm, Mì udon, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-udon-xao-bo/', true, now()), +('e407387d-944e-5937-8439-687f94ddccd7', 'baa98b8e-d685-5e3c-9ee5-9e0c7fada5ff', 'Rau củ luộc và cơm chiên giòn chấm kho quẹt', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bông cải trắng, Cải thìa, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/rau-cu-luoc-va-com-chien-gion-cham-kho-quet/', true, now()), +('cb56f92b-8e96-5c55-9038-51be6c29572b', '41922670-9784-5f84-a3a2-38466c689310', 'Gỏi cuốn tôm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Tôm, Bún, Bánh tráng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/goi-cuon-tom/', true, now()), +('0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', 'dcf7797e-48b6-5223-a55e-62eaec7bbe15', 'Đậu hũ hấp trứng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 2, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Đậu hủ non, Cà rốt, Trứng gà; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Xếp nguyên liệu vào xửng hoặc nồi, hấp/tiềm đến khi chín mềm nhưng không nát.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/dau-hu-hap-trung/', true, now()), +('c4529a65-83e1-5489-a284-b937f9e2373f', 'e1ce4120-6223-5cc5-931d-981afc8d0acb', 'Cơm gạo lứt trộn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 2, 'Easy', 'Lunch,Dinner', 23000, '["Bước 1: Sơ chế Gạo lứt, Gạo thường, Tỏi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-gao-lut-tron-2/', true, now()), +('2e4e3818-cf8b-551e-8619-69e5fa8cb599', '933249d8-8052-5197-bef6-de3db06de5c9', 'Bún cá hộp', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 2, 'Easy', 'Breakfast,Lunch,Dinner', 28000, '["Bước 1: Sơ chế Cá hộp, Hành tây, Thơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bun-ca-hop/', true, now()), +('29ee01f2-34a6-58d1-ab99-bb43bbdfd468', '2d8b21bf-caf5-5c28-8c86-476a80a05d68', 'Bông cải xào nước tương', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bông cải trắng, Măng tây, Thơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bong-cai-xao-nuoc-tuong/', true, now()), +('fe5bfd59-393e-5d14-825c-405c984841db', '6844ede7-de9c-5eb3-beaa-083491e1517e', 'Ba chỉ chiên riềng mẻ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 22000, '["Bước 1: Sơ chế Thịt ba chỉ đầu giòn, Củ riềng, Cơm mẻ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ba-chi-chien-rieng-me/', true, now()), +('3ca38057-0862-5f00-9217-05d3d4495104', '9962fd0c-1e64-5f2c-a1fb-f6a2796a5895', 'Lươn nướng lá chanh', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 55, 65, 4, 'Medium', 'Lunch,Dinner', 138000, '["Bước 1: Sơ chế Thịt lươn, Lá chanh, Sả; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/luon-nuong-la-chanh/', true, now()), +('ef122924-64ac-562b-bb45-5d5d4e261f0a', '870ea20b-85ed-5e1c-bce4-6847629b922b', 'Lẩu cá lăng vị Thái', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 37000, '["Bước 1: Sơ chế Cá lăng, Bún tươi, Nấm rơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nước dùng đến vị cân bằng, giữ sôi nhẹ rồi lần lượt nhúng nguyên liệu khi ăn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-ca-lang-vi-thai/', true, now()), +('c17e789b-a513-541e-a66e-801de6322923', '498f2f3b-f33d-5a3f-a2f9-bc4d91fa051e', 'Cupcake trứng muối chà bông phô mai', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Breakfast,Lunch,Dinner', 14000, '["Bước 1: Sơ chế Trứng muối, Chà bông, Trứng gà; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cupcake-trung-muoi-cha-bong-pho-mai/', true, now()), +('ad39a790-7d24-5513-ad3e-5aaaf27d8557', '222f4602-d3ff-58cc-8e29-8544ee311da3', 'Gà om kiểu hoa', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 38000, '["Bước 1: Sơ chế Cánh gà, Tỏi, Hành tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-om-kieu-hoa/', true, now()), +('626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', 'cddede87-0797-5f32-9264-02d839626457', 'Ba chỉ rim mắm ruốc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Thịt ba chỉ, Sả, Ớt hiểm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ba-chi-rim-mam-ruoc/', true, now()), +('3b28d946-dbdd-572e-95a8-0f01cee280df', '77c910df-a0ea-5e61-968b-4cc4b75c01b3', 'Ốc xào khế', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 91000, '["Bước 1: Sơ chế Thịt ốc bươu, Khế chua, Tía tô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/oc-xao-khe/', true, now()), +('929da23d-66f5-5731-b64a-11db674702fc', '518e425d-a176-5214-84ad-ae49df96f693', 'Bún trộn ngũ sắc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Breakfast,Lunch,Dinner', 16000, '["Bước 1: Sơ chế Nấm rơm, Nấm đông cô tươi, Cải bó xôi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bun-tron-ngu-sac/', true, now()), +('53f96de7-f903-543a-8f26-c3f6001d7332', 'f80e5692-4abe-51f3-a506-cddfd5b8e855', 'Cá lòng tong rim nước mắm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 14000, '["Bước 1: Sơ chế Cá lòng tong, Hành lá, Ớt sừng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-long-tong-rim-nuoc-mam/', true, now()), +('ae26005a-573f-53a4-9712-4253845db35b', 'a8439524-6f05-5ce3-af0a-82695a4587eb', 'Canh gà tứ quý', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 60, 70, 4, 'Easy', 'Lunch,Dinner', 25000, '["Bước 1: Sơ chế Gà ta, Đậu ngự, Đậu phộng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ga-tu-quy/', true, now()), +('816b2ba2-d648-5390-839d-e1f27d06aeee', 'bc73e3ec-e150-5ebf-8b7c-125fad291ace', 'Blendy gạo rang kem chuối', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 2, 'Easy', 'Snack', 17000, '["Bước 1: Sơ chế Blendy Trà Matcha Gạo Rang, Kem lạnh vani, Chuối laba; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/blendy-gao-rang-kem-chuoi/', true, now()), +('9ce6e1bc-56eb-5bd0-98ca-6a484d601f2f', 'f5fc8455-c44e-5ac1-a225-c28152a67c37', 'Canh khoai mì nấu tôm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Breakfast,Lunch,Dinner', 20000, '["Bước 1: Sơ chế Tôm, Giò sống, Khoai mì; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-khoai-mi-nau-tom/', true, now()), +('d589b5d0-924c-53d5-adcc-31209842ca2c', '75a4733b-b7b1-56c4-b0ad-3c1b1ba66fb8', 'Đùi gà xốt kiểu Teriyaki', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 25, 35, 4, 'Easy', 'Lunch,Dinner', 14000, '["Bước 1: Sơ chế Đùi gà gốc 4, không xương bọng, Mirin, Sake; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/dui-ga-xot-kieu-teriyaki/', true, now()), +('49f92884-9e37-580c-9c1b-e879981b20b3', 'ec1d09b0-4151-5a77-ad34-074e81204187', 'Cuốn chay đậu hũ rau rừng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 35, 45, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Đậu hủ trắng, Củ hũ dừa, Rau rừng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cuon-chay-dau-hu-rau-rung/', true, now()), +('57272f4b-d7cf-581f-af85-bcb67ef04d75', '34fffd03-5530-5cd1-88b3-dedb69390dee', 'Cánh gà chiên lá chanh', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 143000, '["Bước 1: Sơ chế Cách gà công nghiệp, Lá chanh, Bột gia vị; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ga-chien-la-chanh/', true, now()), +('61f06e3c-a8e3-5cbc-9fd3-acd713234e16', '8087b656-70fd-54c5-87de-f56d487afc6f', 'Xúc xích dưa cải', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Xúc xích Đức, Dưa cải, Hành tây tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/xuc-xich-dua-cai/', true, now()), +('de029987-33e8-5e45-830d-9c8593303a2e', '7342f991-27ee-5067-a75c-479b2f856d5f', 'Bò áp chảo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 2, 'Easy', 'Breakfast,Lunch,Dinner', 29000, '["Bước 1: Sơ chế Thịt thăn bò, Trứng gà, Măng tây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo với ít dầu, áp chảo từng mặt đến khi chín và vàng thơm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bo-ap-chao/', true, now()), +('908f165a-46fb-5095-aabb-c78c33a90543', 'f41d056b-4a25-5c0c-93f2-c76b92e7d2a2', 'Salad trứng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Trứng gà, Bơ trái chín vừa ăn, Xà lách búp Mỹ : 1/4 búp; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-trung/', true, now()), +('c99a4302-538d-5cbf-89d9-2c46f57659e6', 'a868dd86-9237-57b7-a9be-c6695cb56b8f', 'Canh chua cá lóc đậu tương', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Cá lóc, Sả, Rau muống; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-chua-ca-loc-dau-tuong/', true, now()), +('2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', '203c93be-7bff-59ef-af3f-2440b2d437f2', 'Gỏi gà cần tây', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Gà ta, Cần tây, Đậu rồng non; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/goi-ga-can-tay/', true, now()), +('60c772f2-f627-5803-9913-70c32796d57b', '26775e05-b2a0-52e7-a76a-8b212d31371f', 'Bò cuộn rong biển', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 61000, '["Bước 1: Sơ chế Bò, Thanh cua, Rong biển lá khô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bo-cuon-rong-bien/', true, now()), +('a40de972-1fe3-50ff-909a-573e1a34e855', 'cb573170-0f75-5f18-a565-fff448cbac4f', 'Bún riêu cua bắp bò', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Breakfast,Lunch,Dinner', 19000, '["Bước 1: Sơ chế Bắp bò hoa, Bún, Chả bò; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bun-rieu-cua-bap-bo/', true, now()), +('b63e91ad-9ba1-556c-acdb-ae2c5213fcb2', '1783fb4b-5f83-5e7e-97dd-02a2f8f5c097', 'Canh cá rau cần', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 24000, '["Bước 1: Sơ chế Cá lóc, Rau cần cạn, Cà chua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ca-rau-can-2/', true, now()), +('04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', 'ff2d1657-1cca-516a-a973-6cbc7838cef7', 'Sườn bò hầm đậu phộng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Breakfast,Lunch,Dinner', 37000, '["Bước 1: Sơ chế Sườn bò, Đậu phộng, Đậu Hà Lan hạt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/suon-bo-om-dau-phong/', true, now()), +('e00e4a58-e47c-549c-9be7-5e1a828a2735', '349ea7b0-1542-5012-960f-97ceea1840fb', 'Gà xào tiêu đen', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 40, 50, 4, 'Easy', 'Lunch,Dinner', 14000, '["Bước 1: Sơ chế Đùi gà góc, Hành tây, Cà chua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-xao-tieu-den/', true, now()), +('0400002c-9b01-51b3-aebe-11b6503254fd', 'f8b93b7b-5930-56ae-9f20-0cabf5156d94', 'Cơm gà nướng nước tương', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Thịt má đùi gà rút xương, Cơm trắng, Gừng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-ga-nuong-nuoc-tuong/', true, now()), +('2c4b2aef-1d13-50af-98b9-589d647a7f30', '07c3a6a3-804a-5d10-8909-8adac32fdf4b', 'Blendy trà đào cam sả', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 10, 15, 2, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Blendy Trà đào cam sả, Đào hộp, Bột rau câu dẻo 3D; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/blendy-tra-dao-cam-sa/', true, now()), +('46880f86-ce0e-52fd-8a15-4a2e1ae1787d', '2e888e55-5ce4-55bd-b30f-b000eec064bc', 'Salad bít tết', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 2, 'Easy', 'Lunch,Dinner', 16000, '["Bước 1: Sơ chế Bò Sirlion Úc, Dưa leo Nhật, Xà lách búp; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-bit-tet/', true, now()), +('7a829f9d-b10c-556f-8cb5-9f94843dbecd', 'd84675ea-9716-5a16-af03-aed7a2f76a3a', 'Cơm giòn tôm kho quẹt', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 21000, '["Bước 1: Sơ chế Tôm thẻ, Cơm trắng, Đậu bắp; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-gion-tom-kho-quet/', true, now()), +('675ac590-9803-5148-8a07-24221f56b884', '22265bf4-d4ca-59ba-9021-5d441a101c38', 'Cá chép kho riềng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 40, 50, 4, 'Easy', 'Snack', 76000, '["Bước 1: Sơ chế Cá chép, Thịt ba chỉ, Lá trà xanh; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-chep-kho-rieng/', true, now()), +('2721ff42-7a5a-58fd-9dac-0b8ff0619086', '3120190f-642c-5306-8a57-c24c1f3a97fd', 'Da heo chiên nước mắm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 10, 25, 10, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Da heo, Hành lá, Hành tây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/da-heo-chien-nuoc-mam/', true, now()), +('5683ed5c-9d00-5caa-afe2-2356c7cc4167', '27ba31fe-96e6-56e0-a330-e2989bc0ab3f', 'Cá hấp mồng tơi', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 20, 35, 4, 'Easy', 'Lunch,Dinner', 41000, '["Bước 1: Sơ chế Cá chim, Mồng tơi, Tỏi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Xếp nguyên liệu vào xửng hoặc nồi, hấp/tiềm đến khi chín mềm nhưng không nát.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-hap-mong-toi/', true, now()), +('52c8212c-4b67-56dc-ba58-9edb9fa7af57', '66b33e9a-2c3b-5c4a-926e-292673dd2c56', 'Mực xào đậu Hà Lan', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Mực sữa, Đậu Hà Lan, Hành tây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/muc-xao-dau-ha-lan/', true, now()), +('b74a55a4-e366-5677-a9ec-6bb95b1b813c', 'c2661068-6cd2-5f13-84fa-9ab25ac46f5a', 'Thịt bê xào lăn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 31000, '["Bước 1: Sơ chế Thịt bê, Mộc nhĩ, Nấm đông cô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/thit-be-xao-lan/', true, now()), +('ae0d747d-873a-582c-821a-8ce0a4164a5d', '04975910-9546-5ea9-af79-a49e0fb74a8d', 'Lẩu bò thảo mộc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 30, 5, 35, 4, 'Easy', 'Lunch,Dinner', 20000, '["Bước 1: Sơ chế Thịt nạm bò, Bò phi lê, Bò viên; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nước dùng đến vị cân bằng, giữ sôi nhẹ rồi lần lượt nhúng nguyên liệu khi ăn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-bo-thao-moc/', true, now()), +('75844654-714c-5686-976b-f14fb5aec155', '270ab5cb-7c3c-5854-8171-e561effe3370', 'Cá bống trứng kho tiêu', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Cá bống trứng, Hành lá, Ớt hiểm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-bong-trung-kho-tieu/', true, now()), +('8e571db1-cbce-5da7-9158-0ee896d5a66b', '4e21b11b-46f8-5bb1-b76b-84f58b8d3737', 'Sườn chay om nấm đùi gà', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 31000, '["Bước 1: Sơ chế Sườn chay, Nấm hủ đùi gà, Đậu hạt Hà Lan; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/suon-chay-om-nam-dui-ga/', true, now()), +('dfbc86e2-2348-529d-83da-12e3ff813232', '72c05d56-21f8-529b-a09c-f7ec522a3da9', 'Trà sữa matcha khoai môn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Khoai môn, Húng lũi, Đá bi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tra-sua-matcha-khoai-mon/', true, now()), +('aedead08-dd13-5cae-9c15-4108dbf55ac1', '17a4a4bd-9e7e-5689-874b-f24092478437', 'Gà hấp tứ quý chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Nấm đùi gà, Lá tàu hủ ky khô, Hạt sen; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Xếp nguyên liệu vào xửng hoặc nồi, hấp/tiềm đến khi chín mềm nhưng không nát.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-hap-tu-quy-chay/', true, now()), +('9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '714c5809-6b53-5b96-9a7d-6a96ed2e9910', 'Thịt bò chiên trộn cải mầm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Thịt thăn bò, Cần tây, Ớt chuông đỏ, vàng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/thit-bo-chien-tron-cai-mam/', true, now()), +('0ac07414-54c6-5508-b875-26e9572e99f9', 'c0b51ed0-421d-5fa5-a74c-3972b228a648', 'Mề gà xào cay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Mề gà, Hành lá, Ớt sừng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/me-ga-xao-cay/', true, now()), +('b818de6b-9db6-5482-88a5-e1fdabcf8565', '18a1ab9f-87a1-56f4-b627-2b9369a3cbae', 'Cá basa fillet chiên trứng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 15, 30, 4, 'Medium', 'Lunch,Dinner', 21000, '["Bước 1: Sơ chế Cá basa fillet đông lạnh, Hành lá, Ngò rí; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-basa-fillet-chien-trung/', true, now()), +('9c00e524-6497-5b1b-b8f4-5fff05f4a201', '66523840-0639-5eb5-b5ad-6e04707e43b6', 'Vịt nấu cơm rượu', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 35, 50, 4, 'Easy', 'Lunch,Dinner', 24000, '["Bước 1: Sơ chế Thịt vịt xiêm, Cơm rượu miền Nam, Hành tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/vit-nau-com-ruou/', true, now()), +('12a522da-90b8-52a8-9033-b3e2294414df', '8580824e-d435-57aa-9e2b-373c837dc68a', 'Bánh rán burger bò', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Thịt bò, Hành tây, Xà lách; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-ran-burger-bo/', true, now()), +('d6f7c305-7108-5f92-b212-6a25e5de3096', '29eca3d8-b8cf-5b9f-9346-277e4e9b2639', 'Phở tái lăn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Breakfast,Lunch,Dinner', 16000, '["Bước 1: Sơ chế Bò phi lê, Gầu bò, Phở; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/pho-tai-lan/', true, now()), +('818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', '0084efc2-b5ca-5ce8-a899-6b851f625cb8', 'Cá nục kho mía', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Cá nục con nhỏ, Mía cây 3 đốt, Hành tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-nuc-kho-mia/', true, now()), +('08bf2738-67df-5756-a0ae-f1ab88335cd6', '490fb3c5-dbad-58ee-9de5-cd140f5e57e5', 'Salad rong nho xốt mè rang', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Xà lách romain, Xà lách lolo, Rong nho tách nước; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-rong-nho-xot-me-rang/', true, now()), +('d431308f-b674-5afa-b91e-0230248602b9', '194098a5-b344-536a-94fb-f0f4d853316f', 'Cá hồi hạnh nhân xốt chanh dây', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 5, 10, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Cá hồi phi lê bỏ da, Hạnh nhân lát, Chanh dây; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-hoi-hanh-nhan-xot-chanh-day/', true, now()), +('3fe74751-05c9-5b1d-9758-ae59423d8402', 'a280d43e-7d6f-5caf-9e78-051732962c36', 'Canh lươn bồn bồn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 30000, '["Bước 1: Sơ chế Lươn, Bồn bồn, Cà chua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-luon-bon-bon/', true, now()), +('a133a29c-91ce-5e1e-8e86-8dda1d3e7135', '45949a46-3e8a-59f4-8cb9-09d7f279099b', 'Lẩu sườn khoai môn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 35, 45, 4, 'Easy', 'Lunch,Dinner', 32000, '["Bước 1: Sơ chế Sườn non heo, Sả, Tỏi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-suon-khoai-mon/', true, now()), +('e2bea117-f795-523b-86e5-b22088d8f96f', 'a6bc83c3-15c6-54c3-8478-0931ae416bbc', 'Viên xúc xích trứng cút chiên', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 18000, '["Bước 1: Sơ chế Giò sống, Xúc xích hun khói, Trứng cút 12 trứng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/vien-xuc-xich-trung-cut-chien/', true, now()), +('ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '4be55f7e-08ab-5444-9172-b07c091f4cd6', 'Cháo cá nấu bắp nếp', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 40, 50, 4, 'Easy', 'Breakfast,Lunch,Dinner', 27000, '["Bước 1: Sơ chế Thịt cá lóc, Gạo dẻo, Bắp nếp; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/chao-ca-nau-bap-nep-2/', true, now()), +('debf8298-3c06-5a9d-afc8-c92e963aa235', '52c41267-865e-5a7a-936c-7908e306a0a1', 'Nghêu kho nước tương', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 31000, '["Bước 1: Sơ chế Thịt nghêu đông lạnh, Gừng, Hành tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ngheu-kho-nuoc-tuong/', true, now()), +('047979f6-aa00-50c4-a7ce-98a995a9d674', 'cdc003c8-f541-5cbe-a0f7-98d12fdf032f', 'Súp gà mọc nấm hương', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 18000, '["Bước 1: Sơ chế Gà ta, Giò sống, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/sup-ga-moc-nam-huong/', true, now()), +('7df9b175-ddbe-5ca3-8648-c39f5221b350', '5046e7c1-e986-5ff4-b3ab-b034b47239d7', 'Tim heo nướng ngũ vị', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 14000, '["Bước 1: Sơ chế Tim heo, Hành tím, Tỏi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tim-heo-nuong-ngu-vi/', true, now()), +('8891ca88-5d6e-5516-8644-5b919da5663c', '15e0b866-9673-58fc-8f48-03532a84d939', 'Canh tôm bồ ngót', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 23000, '["Bước 1: Sơ chế Tôm đất, Rau bồ ngót, Bắp vàng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-tom-bo-ngot-2/', true, now()), +('8b3740e4-039a-538e-9139-6057fa01e627', '6173b093-a39d-5b95-9073-052e5457e0c5', 'Canh sườn đậu phộng xá bấu', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 30, 45, 4, 'Easy', 'Breakfast,Lunch,Dinner', 20000, '["Bước 1: Sơ chế Sườn non heo, Đậu phộng sống, Xá bấu; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-suon-dau-phong-xa-bau/', true, now()), +('c13b11a3-82dc-5608-81e1-eb654d880d1c', '5db50c4e-44da-5054-b4a4-cbb54158c3b9', 'Tôm sú kho lá quế', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 31000, '["Bước 1: Sơ chế Tôm sú, Lá quế, Hành tím lột vỏ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tom-su-kho-la-que/', true, now()), +('f3dda0b0-b227-5330-9ebf-40105c57edf6', '6a0f2c7a-fc61-53c1-a169-9923dfb34639', 'Sườn kho khoai tây', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Sườn non, Khoai tây, Nấm rơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/suon-kho-khoai-tay/', true, now()), +('78347c17-8322-5e80-b555-c191ee490ca9', '1720077c-e1b4-5bcd-b37a-e7975cfa39c2', 'Cơm sen gạo lứt chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 28000, '["Bước 1: Sơ chế Cơm gạo tím, Hạt sen, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/com-sen-gao-lut-chay/', true, now()), +('9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '6b324831-4c61-5dea-9c76-e8ec2a145df1', 'Chả giò rong biển chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Đậu hủ trắng, Rong biển Nori, Bún tàu đậu xanh 20; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cha-gio-rong-bien-chay/', true, now()), +('35ec5263-af67-5daf-a06e-c9d5a016574f', '0a9b4346-2cc9-55f7-890a-3b6c58df757f', 'Panna Cotta Kem Muối', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 2, 'Easy', 'Snack', 68000, '["Bước 1: Sơ chế Whipping cream, Phô mai con bò cười, Gelatine bột; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/panna-cotta-kem-muoi/', true, now()), +('ab4194bd-14d0-5ea5-b6fe-62ac657572e8', 'bb0d6c4f-ade8-56dc-8aac-8837c05bbf96', 'Bò cuộn xúc xích chiên giòn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Ba chỉ bò Úc, Xúc xích hun khói, Chanh vàng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bo-cuon-xuc-xich-chien-gion/', true, now()), +('37b25212-03f7-56bf-8a28-755b63fd1cee', '3b62874e-7575-5d35-9ebc-b937bbf8e7b5', 'Canh ốc mồng tơi', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 14000, '["Bước 1: Sơ chế Thịt ốc bươu, Giò sống, Mồng tơi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-oc-mong-toi/', true, now()), +('69f35d0a-a441-5ff7-8cb4-240b3efd186e', '2803d46c-1c13-5ed8-a679-d764de025994', 'Salad bơ bacon', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bơ trái, Khoai tây, Bacon xông khói; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-bo-bacon/', true, now()), +('f3fe0748-1cd9-51a4-bda1-7460fad14963', 'acebc6fa-2a4a-5dc6-8dc2-05a2a215208c', 'Củ năng om nấm chay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 30000, '["Bước 1: Sơ chế Củ năng, Củ cải trắng, Đậu hũ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/cu-nang-om-nam-chay/', true, now()), +('dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', 'e7188570-b07e-568a-a041-cd5c726cddcc', 'Mì Ý bò băm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 20, 25, 4, 'Easy', 'Breakfast,Lunch,Dinner', 17000, '["Bước 1: Sơ chế Mì Ý, Thịt bò bằm, Đậu Hà Lan; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-y-bo-bam/', true, now()), +('70b1fb0a-0baa-594e-a65d-cc38a948036b', '695967c9-9e99-5b70-8a77-b449ea5f3ba3', 'Cá chép chiên giòn cuốn bánh tráng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 30, 35, 65, 4, 'Easy', 'Snack', 51000, '["Bước 1: Sơ chế Cá chép ta, Cốt tắc và quả tắc, Tỏi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-chep-chien-gion-cuon-banh-trang/', true, now()), +('a93a3ed3-77d7-5da0-aa80-1abf1c1095db', 'cac33a53-d19e-5cc6-a16e-212a05d092aa', 'Lẩu kim chi phô mai', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Breakfast,Lunch,Dinner', 14000, '["Bước 1: Sơ chế Thịt ba chỉ bò, Thịt ba chỉ heo, Phô mai mozzarella; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nước dùng đến vị cân bằng, giữ sôi nhẹ rồi lần lượt nhúng nguyên liệu khi ăn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-kim-chi-pho-mai/', true, now()), +('1be687ef-bfab-5088-a77d-64ff43035e6f', '1a5b15f0-a8be-5849-9621-a27a9192745c', 'Vịt kho riềng ớt khô', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 15, 30, 4, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Vịt, Riềng, Ớt trái khô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/vit-kho-rieng-ot-kho/', true, now()), +('49bd1af1-6aea-5de8-b322-4867c7322084', '9705f5a9-3f39-5b1d-ac60-0531850aae5e', 'Ức gà nhồi phô mai', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Ức gà, Phô mai, Thịt nguội; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/uc-ga-nhoi-pho-mai/', true, now()), +('b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '5a6123bc-4d16-5ae8-86ad-29dcff659847', 'Súp mộc nhĩ thịt cua', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 51000, '["Bước 1: Sơ chế Mộc nhĩ, Nấm hải sản trắng, Trứng gà; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/sup-moc-nhi-thit-cua/', true, now()), +('dfaecf70-c5ce-59eb-8f66-8504455e3809', '511cee36-1ae2-57fc-9ee2-46efea83b443', 'Bánh bông lan bơ hành', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 8, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Trứng gà, Nước chanh, Xúc xích xông khói; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-bong-lan-bo-hanh/', true, now()), +('0dc61ae0-7ba9-5bf3-8529-86d7e380551c', '1490280a-dccb-5f41-9ade-69277d3120db', 'Cánh gà chiên lá quế', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 30, 20, 50, 4, 'Easy', 'Lunch,Dinner', 250000, '["Bước 1: Sơ chế Gà ta, Sả cây, Lá quế; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-ga-chien-la-que/', true, now()), +('b60d8e7c-43a7-5f1c-96c2-44e0684d03d9', 'ef2d1045-3eeb-5ed4-9ced-3d6e3d1daea5', 'Bánh crepe áp chảo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Trứng gà, Bacon xông khói, Xúc xích xông khói; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo với ít dầu, áp chảo từng mặt đến khi chín và vàng thơm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-crepe-ap-chao/', true, now()), +('7f2a51f2-b3cc-579d-a10b-297b97ae4dac', 'c7a72562-7f81-55b4-b84f-9e72adf68f52', 'Đùi ếch chiên', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 15, 5, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Đùi ếch tươi to, Ngò gai, Mè đen; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/dui-ech-chien/', true, now()), +('d16ecb5b-eefc-5fb4-9d15-42edac19985a', 'b525cca3-7813-59ba-81ee-5158e0252d2d', 'Thịt Ba Rọi Tẩm Trứng Chiên Giòn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 20, 10, 30, 1, 'Easy', 'Lunch,Dinner', 37000, '["Bước 1: Sơ chế Thịt ba rọi, Trứng ga, Lá thyme; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/thit-ba-roi-tam-trung-chien-gion/', true, now()), +('03c5c948-ffcd-5f0b-b8d8-12a43636a4f2', '52216f69-4d64-53b1-941d-df8aad616d93', 'Bắp hạt chiên giòn', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bắp mỹ, Tương ớt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bap-hat-chien-gion/', true, now()), +('849a88ac-f4e2-5fe0-beb9-c1688045570d', '7652fe40-4d4f-5732-8a20-4f65520a1285', 'Canh sườn bò Hàn Quốc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 25000, '["Bước 1: Sơ chế Sườn bò, Củ cải trắng, Boa rô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-suon-bo-han-quoc/', true, now()), +('5a31efba-2d55-5a63-9c28-e0170f452a2f', 'f3d4f05e-c9ed-5bef-bb3c-fa941ace2064', 'Gyoza', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 6, 16, 1, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bắp cải, Dầu ớt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/gyoza/', true, now()), +('db880aae-2705-57ca-bee6-b3aa5799a857', 'dab30dbb-4186-5528-b8c3-39f5e280a144', 'Cá lóc cuộn nghệ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 20000, '["Bước 1: Sơ chế Cá lóc phi lê, Hành tím, Nghệ củ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-loc-cuon-nghe/', true, now()), +('ea40f14f-aca7-5948-97b8-4442d60e9d3e', 'eca9f3b8-c632-5176-a938-23655ba4df6d', 'Bánh canh cua phồng tôm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 1, 'Easy', 'Breakfast,Lunch,Dinner', 178000, '["Bước 1: Sơ chế Thịt bắp đùi heo, Tôm sú tươi, Gạch cua; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-canh-cua-phong-tom/', true, now()), +('36bba4ed-be21-539a-bd9a-6db762e28a76', 'ac8dd766-644f-5dc0-8c58-6388115e6fe8', 'Bánh áp chảo mì gói và bắp', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 1, 'Easy', 'Breakfast,Lunch,Dinner', 34000, '["Bước 1: Sơ chế Mì gói, Thịt bacon xong khói, Hành lá; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-ap-chao-mi-goi-va-bap/', true, now()), +('0d61c9eb-12d8-5438-abee-48aab18cc889', '39670a8e-99ae-5764-9552-3ad4d6b60959', 'Salad cá hồi sốt tôm khô', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 23000, '["Bước 1: Sơ chế Cá hồi phi lê, Tôm khô, Xà lách gai; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-ca-hoi-sot-tom-kho/', true, now()), +('67755ec3-6df0-56dd-a5af-c141defd7c2d', '762d805c-fa29-5ee6-8b87-d589f5ff5c1e', 'Mì trộn sốt kho quẹt', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Thịt thăn bò, Mì gói, Trứng gà; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-tron-sot-kho-quet/', true, now()), +('aa51707a-de5f-59cd-bc43-86d86642ac36', '486acd6c-7615-5c17-a0ac-21a89f279ec4', 'Bánh nướng Halloween', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Trứng gà, Sữa tươi, Nước cốt chanh vàng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-nuong-halloween/', true, now()), +('81a8f66a-8bce-528c-851e-ec5789754765', 'ce8372a3-2133-59a8-99a3-35adbad52127', 'Mì xào xá xíu', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 45, 55, 4, 'Medium', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Mì tươi, Xá xíu, Lạp xưởng; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-xao-xa-xiu-2/', true, now()), +('fd296df8-c1d3-5f7d-b468-3cbff0b856b3', '3d751cb2-5a5a-5e0f-817c-f7f1894dfb74', 'Salad bacon', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bacon xông khói, Đậu petit pois đông lạnh, Cà chua bi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/salad-bacon/', true, now()), +('3ea0d10f-dc2a-57f3-bc78-8d3855659f2e', '91b9a35b-2c35-5476-96f8-937b6745191d', 'Bánh tráng cuộn trứng áp chảo', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 9, 19, 4, 'Easy', 'Breakfast,Lunch,Dinner', 12000, '["Bước 1: Sơ chế Bánh tráng, Trứng gà, Rau răm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-trang-cuon-trung-ap-chao/', true, now()), +('89d49b81-7804-5ee7-b3de-95891503dcbf', '486fdd6a-02bf-562e-af2b-6b64b35aada9', 'Gà Chiên Giòn Xóc Vị Thái', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Gà phi lê, Sả cây, Tương ớt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ga-chien-gion-xoc-vi-thai/', true, now()), +('4a1b6033-5414-533c-acc7-60eecd438a50', '25647b24-96da-5721-b0d2-da8038af5532', 'Bắp Bò Nhúng Mắm Ruốc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 42000, '["Bước 1: Sơ chế Bắp bò hoa, Mồng tơi, Nấm linh chi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bap-bo-nhung-mam-ruoc-2/', true, now()), +('406a11a7-2500-56d0-921a-0d87b49024c4', 'd737f1e1-1198-53fe-9f02-0e1f25d4c896', 'Canh Bí Đao Rong Biển', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 15000, '["Bước 1: Sơ chế Tôm thẻ, Bí đao, Hành tím; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-bi-dao-rong-bien-2/', true, now()), +('f3cf5fd6-d159-5c24-b878-eec28f05786f', 'b96eed62-5b7e-5f4c-8a66-2c9a20338e68', 'Mì Trộn Vị Thái', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 27, 37, 4, 'Easy', 'Breakfast,Lunch,Dinner', 22000, '["Bước 1: Sơ chế Mực, Tôm, Bông cải xanh; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-tron-vi-thai/', true, now()), +('3bac29b5-1895-5081-8974-478370205440', '4fec6fb1-fe4c-5b39-b5f6-fecd9c539c2b', 'Canh bầu mồng tơi', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 20, 20, 40, 12, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Trứng vịt lộn, Bầu quả, Rau mồng tơi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Đun phần nước dùng, cho nguyên liệu theo thứ tự lâu chín trước và nấu đến vừa mềm.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-bau-mong-toi/', true, now()), +('ea16bf15-34ee-5286-9f53-89fb107f2948', '301bee4b-b603-52fb-80c4-4f1af5b0ae16', 'Bún giò heo cay', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 50, 20, 70, 4, 'Medium', 'Breakfast,Lunch,Dinner', 38000, '["Bước 1: Sơ chế Giò nạc, Thơm, Tôm khô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bun-gio-heo-cay/', true, now()), +('18030120-83d9-584b-940e-6c4b9731db19', '5ed92339-52a8-5032-92d1-325d3e20182c', 'Miến trộn bò bằm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 20000, '["Bước 1: Sơ chế Thịt bò, Nấm linh chi trắng, Nấm đông cô khô; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Pha phần xốt riêng, sau đó trộn nhẹ các nguyên liệu để giữ độ giòn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mien-tron-bo-bam/', true, now()), +('e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', '39fb3f53-a93b-5c49-a359-77c64b920080', 'Cá bông lau chua ngọt', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Fillet cá bông lau, Ớt chuông xanh, Ớt chuông đỏ; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nước dùng đến vị cân bằng, giữ sôi nhẹ rồi lần lượt nhúng nguyên liệu khi ăn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-bong-lau-chua-ngot/', true, now()), +('54d2cf83-f7bc-5125-9157-b470b5a40639', '1b047ab5-0953-5929-83a8-5970fa39bf07', 'Lẩu sườn cọng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Medium', 'Lunch,Dinner', 61000, '["Bước 1: Sơ chế Sườn sụn non, Đậu hủ, Thơm; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nước dùng đến vị cân bằng, giữ sôi nhẹ rồi lần lượt nhúng nguyên liệu khi ăn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-suon-cong/', true, now()), +('4ea03a7d-a2d6-5c56-aadc-d3a588d68a54', '0045432c-87ba-5ef4-bb41-f0005ef39593', 'Blendy®matcha sữa tào phớ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Breakfast,Lunch,Dinner', 36000, '["Bước 1: Sơ chế Blendy Trà Matcha Sữa, Bột rau câu dẻo, Lá dứa; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/blendy-matcha-sua-tao-pho/', true, now()), +('306ad7dd-c5f9-55ea-8a79-cec885d987f2', 'da46af0f-4f25-5b45-a13d-dbb5812d355a', 'Hoành thánh tôm xốt vị Thái', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Lá hoành thánh, Tôm thẻ bóc vỏ, Ngò rí; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/hoanh-thanh-tom-sot-vi-thai/', true, now()), +('8e1d1748-f32a-5364-b8a2-5409f0efaa8c', '1150934d-ed17-57e2-8411-7e17e9ca32c0', 'Trà thạch vải hoa hồng', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Snack', 15000, '["Bước 1: Sơ chế Thạch rau câu dẻo, Vải đóng lon; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/tra-thach-vai-hoa-hong/', true, now()), +('6d69b864-b821-5005-ada4-795896531603', 'e9d41921-937f-5973-9892-5cfd67c8c7a3', 'Bột chiên bắp', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 18, 28, 4, 'Easy', 'Lunch,Dinner', 19000, '["Bước 1: Sơ chế Bắp hạt, Đu đủ bào, Trứng gà; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bot-chien-bap/', true, now()), +('5865204c-0a2b-59c1-b869-561dc814eafb', '262d6ecc-d999-567c-aa36-53f601084845', 'Thịt kho', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 4, 'Easy', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Thịt ba chỉ, Hành tím, Tỏi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/thit-kho/', true, now()), +('fdfdd3c3-32b8-503a-806d-04a9d7eada4c', 'e6d3943c-6ac6-51c6-b309-e292a3e6668b', 'Bánh rán phô mai trứng muối', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 20, 30, 1, 'Easy', 'Breakfast,Lunch,Dinner', 27000, '["Bước 1: Sơ chế Trứng muối, Chà bông, Phô mai; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-ran-pho-mai-trung-muoi/', true, now()), +('995a8ba2-f365-5ede-8f3b-3200f68aa9b6', '8ca91deb-1862-58d2-b43d-a3a522f149c0', 'Bò cuộn lá rong biển', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 1, 'Easy', 'Lunch,Dinner', 250000, '["Bước 1: Sơ chế Thăn lưng bò mềm, Dưa leo Nhật, Xà lách xoắn; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/bo-cuon-la-rong-bien/', true, now()), +('ac74ff1c-9771-547f-92ed-bac7f6ac2634', '9f736299-c2b5-59a1-96f4-4279391450f5', 'Bánh rán sữa chua ngũ cốc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Easy', 'Snack', 12000, '["Bước 1: Sơ chế Sữa chua không đường 2 hũ, Ngũ cốc granola, Mứt dâu; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lượng dầu vừa đủ, chiên từng mẻ đến khi chín và có màu vàng đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/banh-ran-sua-chua-ngu-coc/', true, now()), +('4e7a1557-da6c-5142-986c-91bcbf17d946', '5adca928-ac6a-542a-9cef-0e9357aa3d8a', 'Há cảo tam sắc', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 17000, '["Bước 1: Sơ chế Thịt heo, Tôm làm sạch, Bánh tráng 3 màu; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nguyên liệu theo thứ tự lâu chín trước, duy trì lửa vừa để món chín đều.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ha-cao-tam-sac/', true, now()), +('e2ee6804-bc28-50ef-b2ad-14d8d1493a35', 'd5bbb607-6c33-5976-bde3-42379780e674', 'CANH QUẢ SẤU NẤU TÔM THÌ LÀ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 5, 5, 10, 4, 'Easy', 'Lunch,Dinner', 22000, '["Bước 1: Sơ chế Tôm tươi bóc vỏ, Quả sấu, Cà chua bi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/canh-qua-sau-nau-tom-thi-la/', true, now()), +('5c5a5081-9182-5557-9fc0-d64ec57a5391', '2fd8522f-519c-5cc2-80b3-ac845d7504bd', 'Thăn Bê Nướng Y', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Medium', 'Lunch,Dinner', 12000, '["Bước 1: Sơ chế Thịt thăn bê, Cà chua bi 3 màu, Lá rau húng lủi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/than-be-nuong-y/', true, now()), +('da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '7d047121-3bec-5dc7-a296-c397ba2933f3', 'Thăn Bê Cuộn Rau Thơm', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 10, 20, 4, 'Medium', 'Lunch,Dinner', 23000, '["Bước 1: Sơ chế Thịt thăn bê, Bánh tráng cuốn mè, Xà lách; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/than-be-cuon-rau-thom/', true, now()), +('6160caf8-7221-57cd-ac0e-b4945b9a30e0', 'af2a73b3-ff12-59d1-a6f6-a0df353f925c', 'Mì xào bò rau củ', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 15, 25, 4, 'Easy', 'Breakfast,Lunch,Dinner', 17000, '["Bước 1: Sơ chế Mì vàng, Thịt bò, Nấm linh chi; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng chảo, xào nguyên liệu lâu chín trước rồi thêm phần còn lại trên lửa lớn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/mi-xao-bo-rau-cu/', true, now()), +('e04cd6e8-1e5d-5b89-8788-93654c85a727', 'f670c035-47e3-5695-9ebd-f202245bdf76', 'Sò điệp nướng ba màu', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 30, 40, 4, 'Easy', 'Lunch,Dinner', 150000, '["Bước 1: Sơ chế Sò điệp nguyên vỏ, Khoai tây, Cà rốt; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/so-diep-nuong-ba-mau-2/', true, now()), +('c55cc27a-a56b-51d2-8c87-a855748e999f', 'a0291ba5-4d7f-563c-820f-80c741b95d34', 'Cá nướng chấm muối ớt xanh', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 40, 50, 4, 'Medium', 'Lunch,Dinner', 30000, '["Bước 1: Sơ chế Cá điêu hồng, Ớt sừng, Ớt xiêm xanh; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Làm nóng lò hoặc bếp nướng, nướng nguyên liệu đến chín đều và thơm mặt.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/ca-nuong-cham-muoi-ot-xanh-2/', true, now()), +('e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', '4497276d-5404-55fe-9de1-3a02fa374165', 'Lẩu bò khoai cao', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 26000, '["Bước 1: Sơ chế Thịt bò bắp hoa, Tim bò, gan bò, lá sách, Bò viên; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Cho nguyên liệu cùng phần nước nêm vào nồi, kho lửa nhỏ đến khi thấm và nước sánh.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-bo-khoai-cao/', true, now()), +('3f4f83f7-cf47-56b2-b40a-2b8b806d5df6', '1d5b87d0-c86b-542f-ba43-f5194ddbed1f', 'Lẩu lươn kèo nèo vị thái', 'Hướng dẫn rút gọn do MenuGreen biên soạn lại từ dữ liệu công thức công khai; định lượng và dinh dưỡng là giá trị chuẩn hóa/ước tính.', 10, 5, 15, 4, 'Easy', 'Lunch,Dinner', 24000, '["Bước 1: Sơ chế Thịt lươn làm sạch, Hoa chuối, chuối cây bào, bông so đũa, bông bí, Kèo nèo, rau muống; rửa sạch, cắt miếng vừa ăn và để ráo.", "Bước 2: Chuẩn bị các gia vị trong danh sách; ướp nguyên liệu chính 10–15 phút nếu phù hợp.", "Bước 3: Nấu nước dùng đến vị cân bằng, giữ sôi nhẹ rồi lần lượt nhúng nguyên liệu khi ăn.", "Bước 4: Nêm lại vừa ăn, hoàn thiện món và dùng ở nhiệt độ phù hợp."]', NULL, NULL, 'Món Ngon Mỗi Ngày', 'https://monngonmoingay.com/lau-luon-keo-neo-vi-thai/', true, now()) +ON CONFLICT ("Id") DO UPDATE SET + "FoodId" = EXCLUDED."FoodId", "Title" = EXCLUDED."Title", + "Description" = EXCLUDED."Description", "PrepTimeMin" = EXCLUDED."PrepTimeMin", + "CookTimeMin" = EXCLUDED."CookTimeMin", "TotalTimeMin" = EXCLUDED."TotalTimeMin", + "Servings" = EXCLUDED."Servings", "Difficulty" = EXCLUDED."Difficulty", + "MealType" = EXCLUDED."MealType", "EstimatedPriceVnd" = EXCLUDED."EstimatedPriceVnd", + "Instructions" = EXCLUDED."Instructions", "SourceName" = EXCLUDED."SourceName", + "SourceUrl" = EXCLUDED."SourceUrl", "IsActive" = true; +-- END GENERATED MNMN CATALOG + +-- Keep recipe artwork aligned with its linked catalog food without overwriting +-- an image explicitly configured for the recipe. +UPDATE recipes AS r +SET "ImageUrl" = f."ImageUrl" +FROM foods AS f +WHERE r."FoodId" = f."Id" + AND (r."ImageUrl" IS NULL OR btrim(r."ImageUrl") = '') + AND f."ImageUrl" IS NOT NULL + AND btrim(f."ImageUrl") <> ''; + +UPDATE recipes +SET "ImageUrl" = 'https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=400' +WHERE "ImageUrl" IS NULL OR btrim("ImageUrl") = ''; COMMIT; diff --git a/backend/database/18_recipe_ingredients.sql b/backend/database/18_recipe_ingredients.sql index 12a197b1..36deb72e 100644 --- a/backend/database/18_recipe_ingredients.sql +++ b/backend/database/18_recipe_ingredients.sql @@ -636,6 +636,4169 @@ VALUES ,('18320010-0000-4000-8000-000000032001', 'ec000320-0000-0000-0000-000000000320', 'ea000001-1111-2222-3333-444444444444', 150.0, 'quả', 'Thịt bò thăn') ,('18320020-0000-4000-8000-000000032002', 'ec000320-0000-0000-0000-000000000320', 'ea000002-1111-2222-3333-444444444444', 80.0, 'g', 'Cá hồi phi lê') ,('18320030-0000-4000-8000-000000032003', 'ec000320-0000-0000-0000-000000000320', 'ea000022-1111-2222-3333-444444444444', 120.0, 'quả', 'Thịt nguội') +,('73000002-0000-4000-8000-000000000004', 'ec000002-0000-0000-0000-000000000002', '1ddf13c6-e4f7-5042-a801-62cb588e2dbd', 10.0, 'ml', 'Dầu trộn salad') +,('73000007-0000-4000-8000-000000000004', 'ec000007-0000-0000-0000-000000000007', '1ddf13c6-e4f7-5042-a801-62cb588e2dbd', 10.0, 'ml', 'Dầu trộn salad') ON CONFLICT ("Id") DO NOTHING; +-- BEGIN GENERATED MNMN CATALOG (do not edit by hand) +-- Normalized ingredient quantities for the generated recipes. +INSERT INTO recipe_ingredients ( + "Id", "RecipeId", "IngredientId", "Quantity", "Unit", "Notes" +) VALUES +('78027288-c9f5-51dd-b9c2-16dd275382a0', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', '397de771-d68f-5d3b-b228-8fc7edd3985a', 208, 'g', NULL), +('77ba2590-1009-550d-8304-986fbab84d63', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', '0e97f23c-8daa-51c4-b958-321d96273b83', 50, 'g', NULL), +('2e1b6c5e-8080-54d2-b90e-f29438b724fa', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', 'eddf21fc-bce4-5095-9ea4-5b9124784dc8', 0.5, 'trái', NULL), +('d58a4036-920d-55ac-a15d-630a0af54f42', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', '3f04540b-4be6-5cc3-98a8-97496c49a0e2', 0.5, 'trái', NULL), +('f79008e0-9128-56d7-8cd0-ad87af2edc4f', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', 'ea000025-1111-2222-3333-444444444444', 0.25, 'trái', NULL), +('d39e679e-163c-5f5d-9a7c-8a576ec7110c', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', '5edd1291-8845-53fa-8334-c3b59f8be842', 1, 'củ', NULL), +('5d78b14b-bff8-51ad-8b82-7d1ab70cfb1e', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', 'a8476bc0-3e9e-5b28-8893-0fc8cd95fcdb', 100, 'g', NULL), +('6ed021c9-c513-5dca-9af3-0d749e0a246d', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', 'ea000008-1111-2222-3333-444444444444', 15, 'g', NULL), +('9c8c15b8-622b-50e7-8e1f-413a63c50935', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', '2168f489-fb6a-537b-8f9e-d15695f958a9', 15, 'g', NULL), +('fef05901-83a8-5ea4-89e2-caddd60f021d', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', 'b98fe1b1-a832-590c-af49-51ef8bb51756', 5, 'g', NULL), +('42e0e799-94f2-5f95-842a-a687c5786501', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', '452953fe-297f-5958-9397-53c694db5fe6', 20, 'g', NULL), +('36753081-ea54-5bc3-8657-95af48c03787', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('36b57adb-e89d-5635-950f-d6fb44e4e40a', 'd4342f15-80a1-5b05-b9c0-a6b1a2138d17', '53173c43-ceb6-5e4d-970c-bde40e42e7b1', 100, 'g', NULL), +('d316e677-40ce-54b7-9b77-9c95c33d8a46', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', '4b5a9b84-4cb3-51c8-a26c-08c9e15eeed2', 3, 'cái', NULL), +('deefa838-baba-50d9-8037-a8b27bdee8fa', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 150, 'g', NULL), +('f42f5684-1bcd-51c1-8002-8ffb45365208', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('87f53100-3ed7-5bac-8f86-a1a5f0d9a1e5', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', '5b1f71a2-8d75-5a5f-afee-e05752a582d5', 50, 'g', NULL), +('2a2abfce-c594-5364-ac44-ed4d05ccb353', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', 'b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 0.5, 'trái', NULL), +('3aabbe1d-d7b5-5a37-b05c-f6dea13e9b71', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', 'd602c301-8b5e-5b58-8ac7-6a6cd5d9a0b4', 200, 'g', NULL), +('9e1b3266-c7fd-537f-a6dc-86da71cd8bfc', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', '78a5e6aa-6f32-5e6b-bfd3-d55d6472a17f', 12, 'tai', NULL), +('c7e71525-2ed2-5c36-89ba-1811add8088e', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', '7bae084c-9cb8-54ca-ba11-18e407528f23', 1500, 'ml', NULL), +('f3883c72-f782-5824-af6d-28db09298111', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', 'b3810951-f282-5566-a028-894730e0528a', 80, 'g', NULL), +('003d6e77-2b46-5aaa-b553-e73763ee0e9e', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('b3e4ebe7-02e3-516c-8eed-62a0e45e2a6e', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('8d9485c6-67e3-5ba0-9c77-c6a329852ac3', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('2544f9ab-5d37-5862-97b1-4f72301936ce', 'b9894a3a-3a87-5bd4-8ec5-1cc90010afad', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('737e0f00-83a0-59af-847b-7b3500f0092d', '64797443-a0a6-564c-a7aa-c30062f4e6a4', 'ea000027-1111-2222-3333-444444444444', 50, 'con', NULL), +('98af6f1f-2b8e-5b69-b98c-57506731feaf', '64797443-a0a6-564c-a7aa-c30062f4e6a4', '64314ecf-14dc-546b-b5bc-1259968d520d', 1, 'cây', NULL), +('123c01e8-2947-5879-ac96-b615de8f20eb', '64797443-a0a6-564c-a7aa-c30062f4e6a4', '771d556c-e0c3-5473-93aa-8afb147eea8c', 100, 'g', NULL), +('cf74fae8-275a-5296-bd71-15d8e736bffc', '64797443-a0a6-564c-a7aa-c30062f4e6a4', 'ea000007-1111-2222-3333-444444444444', 100, 'g', NULL), +('0cc05bd7-0bf6-59d3-bfbc-bf8f25a14fa9', '64797443-a0a6-564c-a7aa-c30062f4e6a4', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('bdfa6db5-d59e-51e0-aa60-7513244bf7e4', '64797443-a0a6-564c-a7aa-c30062f4e6a4', 'b91a792f-6742-59de-9557-1c441357649f', 50, 'g', NULL), +('d965f305-3d6c-54f3-bb84-9e430adc8b46', '64797443-a0a6-564c-a7aa-c30062f4e6a4', '5c90d2f0-bbb2-59c1-b6d0-3e6f0f4cdff1', 10, 'quả', NULL), +('d4483775-42b8-58c4-aa00-b301299a2632', '64797443-a0a6-564c-a7aa-c30062f4e6a4', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('dd5c19c2-95d0-5790-8d18-7d411ac729e6', '64797443-a0a6-564c-a7aa-c30062f4e6a4', 'fccb3b78-c4a9-50f7-8e34-8473f9237553', 20, 'g', NULL), +('13a414a7-c269-5e1a-a9cf-aff239f99dc2', '64797443-a0a6-564c-a7aa-c30062f4e6a4', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('8bde5209-209e-5e83-84b0-4ce097d0cae0', '64797443-a0a6-564c-a7aa-c30062f4e6a4', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('0b36ffa6-fcbc-564c-aa73-20495362dd62', '64797443-a0a6-564c-a7aa-c30062f4e6a4', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('c2ccb2d5-d32e-55a8-95ae-a232e1ebeb6b', '64797443-a0a6-564c-a7aa-c30062f4e6a4', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('dca1da47-f326-58a8-b519-dfb1ef4f0260', '64797443-a0a6-564c-a7aa-c30062f4e6a4', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('057a489c-57cc-5d6f-ac4b-250abea25a48', '64797443-a0a6-564c-a7aa-c30062f4e6a4', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('c7e5f5ed-0a80-522e-9ede-ca79bd34914c', '74d7b03e-8f9b-56b1-8298-8083bb2d1def', '35a51c14-43c4-560a-aeac-59b5cc0a8483', 200, 'g', NULL), +('4d96a567-7bb0-53a8-9afb-51c4c991f971', '74d7b03e-8f9b-56b1-8298-8083bb2d1def', '3c185637-5bee-5a75-8123-6f6367e1de28', 1, 'trái', NULL), +('35c96c5e-6fda-52d2-9a48-f9cc89043b04', '74d7b03e-8f9b-56b1-8298-8083bb2d1def', 'ea000034-1111-2222-3333-444444444444', 3, 'củ', NULL), +('e4057891-b1bf-5232-9bcb-7d26cd05363e', '74d7b03e-8f9b-56b1-8298-8083bb2d1def', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('e62a48c3-316a-50cc-88f5-b7931918dfd2', '74d7b03e-8f9b-56b1-8298-8083bb2d1def', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('ad27556a-108e-5070-bb6d-0c4baf72fdca', '74d7b03e-8f9b-56b1-8298-8083bb2d1def', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('0943d3db-caec-5055-939e-b79b0b6cab61', '28711bd6-458e-5cf2-b30c-711a873f819d', '9a21aa1a-d07b-5a9e-9ee3-a9ab1a44b0c7', 500, 'g', NULL), +('b536a0f5-e61a-57df-aba2-0fd4a4d882ae', '28711bd6-458e-5cf2-b30c-711a873f819d', 'ea000034-1111-2222-3333-444444444444', 30, 'g', NULL), +('4f2304ff-f374-58cc-b483-c455c7de1cf2', '28711bd6-458e-5cf2-b30c-711a873f819d', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 2, 'trái', NULL), +('dbdb8f00-5a20-51dd-b008-d1b79fde7a3e', '28711bd6-458e-5cf2-b30c-711a873f819d', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 2, 'trái', NULL), +('1af07617-0852-5da9-8e52-10c9e5db8b9c', '28711bd6-458e-5cf2-b30c-711a873f819d', 'bb3a0324-6bb1-5921-bc0c-2c2732af144a', 80, 'g', NULL), +('77ceff97-1ca5-58ed-bce2-15db2591c474', '28711bd6-458e-5cf2-b30c-711a873f819d', '6c8b1ef2-38dd-59ab-b5a8-d03eb4083c53', 20, 'g', NULL), +('748f5131-15df-5360-a5a1-fb5d0b696f0f', '28711bd6-458e-5cf2-b30c-711a873f819d', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('05e15cc8-b2c1-5810-b0e5-9e04cf8b9e92', '28711bd6-458e-5cf2-b30c-711a873f819d', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('38665893-e46b-550e-be55-e8f96ad4ef1b', '28711bd6-458e-5cf2-b30c-711a873f819d', 'ea000023-1111-2222-3333-444444444444', 80, 'g', NULL), +('b9659b06-0002-5b05-81d3-b95d616600f9', '28711bd6-458e-5cf2-b30c-711a873f819d', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('d5ef8611-4e2c-5fca-bc1f-7e17a9324f81', '28711bd6-458e-5cf2-b30c-711a873f819d', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('3897ddf2-9a82-58b3-b9b0-7d1a7acbd74d', '28711bd6-458e-5cf2-b30c-711a873f819d', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('bf19178d-73fa-542e-a0c0-a8bea670ef27', '28711bd6-458e-5cf2-b30c-711a873f819d', '1fbaa285-f917-5a0f-a0d4-b0f2efffd56a', 5, 'g', NULL), +('2c7fa58d-7226-5f47-9e8a-12e45067bcc6', '28711bd6-458e-5cf2-b30c-711a873f819d', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('f9f532b7-989c-5ee9-95d3-2779ac4208e0', '6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', 'e4eb3e6b-102c-50b5-8c9c-d5a570624fe1', 300, 'g', NULL), +('7276f839-bac2-529a-bff2-ae32d0af372c', '6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 0.5, 'trái', NULL), +('1c6aa47b-5e51-56ec-9568-23b1212762b9', '6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', '60679900-1fa7-5ff7-90f1-f3916a1fb3f6', 100, 'g', NULL), +('eaea1b5c-6250-556a-97a1-59716753a0f1', '6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('e636a75a-b954-54af-97d6-ad0cda38b9fd', '6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', '37908459-4d3d-5ff7-b53f-b3924b7987e2', 1, 'củ', NULL), +('501ca301-1ff8-55c5-ba3f-961744e731a1', '6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', '6c24f6f2-2b8a-58b8-ab2c-a0ec9d1437d1', 10, 'g', NULL), +('27bae194-87b0-54a5-a696-797177b229e3', '6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 30, 'g', NULL), +('63b3be67-c277-5133-9c9b-2580bc9f35fe', '6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('6258b2ec-a750-5e21-b995-84731603dd04', '6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('c6047940-cd6c-5c18-9fae-9bc5d10dd1ef', '6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('b48ada91-6c5f-5a5a-aae3-2c0ecb14f21e', '6e71ff81-a27f-5f28-ad52-74b6d1a67f3f', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('7dff8dcf-a3d8-56e7-92ea-2f4ce16364e0', '879b1583-e51e-5362-aecb-48a99bcf31cc', '6c1ec9f9-0406-5616-82a9-9082034cc0f8', 100, 'g', NULL), +('3515dfc4-6f9e-5e79-a0a4-1d81ff6b49b5', '879b1583-e51e-5362-aecb-48a99bcf31cc', '55d9ad68-d865-53f6-9402-b977ed1187a4', 300, 'g', NULL), +('510677e9-00f3-5abc-859e-3d0aa8422f0b', '879b1583-e51e-5362-aecb-48a99bcf31cc', '68cba44d-1217-551c-9cbd-2375419d11ad', 80, 'g', NULL), +('a88804b5-0ee8-5124-bc71-959e5cbd3f3d', '879b1583-e51e-5362-aecb-48a99bcf31cc', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('2bc96e3e-f08c-5b26-b714-e41e3d67e352', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', '2b350852-5556-5138-b796-4464b3aef19c', 1, 'quả', NULL), +('7da5a2c3-2915-532f-9772-ffa4ec7f2e74', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', '4f43076c-9bfa-5b51-a39b-d51a3108911e', 100, 'g', NULL), +('40e27ba7-f750-540f-8852-19893689bee1', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', 'ea4e2ee6-73f6-52e3-b2f0-cb5fe27219e8', 200, 'g', NULL), +('719fb244-6c95-5f8b-a279-aa3912253fc0', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', '7074a6bf-d48e-58a5-be5a-c1fc5f5667ce', 1, 'quả', NULL), +('29dcebf1-e7d9-5076-b78c-b78466a3a8b3', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', '0b6bae8b-b460-559c-8f91-b7a51d42b8d8', 50, 'g', NULL), +('316092b6-8247-5189-8bea-23d4810b35a6', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', '03cdcbd3-eb4b-51f3-a509-442fa4f83a1d', 0.5, 'củ', NULL), +('ab80cf61-5567-5d6e-8707-51959b8cdba5', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', '372c4c29-c3f6-58ed-8c53-68da41720321', 100, 'g', NULL), +('010bcfe7-ee38-5a8a-91d0-25456e1a884b', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', '23fd8ef2-e68c-53a1-8b37-16d989cd41cb', 2000, 'ml', NULL), +('64c6ebbd-07d6-554f-9679-758c29acb08d', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', '546966a8-ce30-5222-a08a-67543bd88f48', 5, 'quả', NULL), +('cbccae02-960f-5013-97b5-448069637307', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 20, 'g', NULL), +('485f60bf-8ca5-503f-bdf9-a758124c18ac', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', 'a2a72dd1-6574-5b45-9236-e84d1cba900c', 20, 'g', NULL), +('491d2876-a5fa-558e-9fcf-8cff9a711c3f', 'f53bbc7e-f397-5413-b9f7-755a9c2afcea', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('96de6c2e-76d9-5962-adc7-565c4905b73e', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '7333a6c0-8df8-51aa-9631-bf9e5b4c580e', 400, 'g', NULL), +('58f90822-4e16-58f6-9679-68a24392c935', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '2202f6a6-53fe-549b-9b8b-07bdee9509da', 100, 'g', NULL), +('cf428fcb-105f-57cf-b7cc-d0c5d29ceee0', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '107be8bd-35c9-5d5a-bc23-57c02555f249', 100, 'g', NULL), +('675ef65a-c1c7-54b4-8264-7f879588ffe0', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 1, 'quả', NULL), +('160060ef-1cdf-5cc0-b797-6daa5c54bd2d', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 5, 'g', NULL), +('9c670b63-16c5-56e0-a97a-fdbb194df249', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '60679900-1fa7-5ff7-90f1-f3916a1fb3f6', 100, 'g', NULL), +('8f952a4a-b5d3-5794-b662-b6a50369e614', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', 'b022ec51-1f8d-575b-913c-22164c09829e', 2, 'cây', NULL), +('d15af288-1f1b-5f72-a4f3-9e1cdba9d35c', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '94e18e46-5a05-5053-b1be-d463a82c03e2', 100, 'g', NULL), +('840e08b7-e2cc-5065-a3e6-3870d305a6e0', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '4bbb2703-742d-5cf9-be8d-90cfc553590c', 20, 'g', NULL), +('02d00b23-25fa-5397-9617-9597d9c7b4a2', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('7f58dffc-fb01-5f38-ac3a-bddf03b0ea2a', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '641f1206-7440-54ad-ad8d-709933c7917e', 80, 'g', NULL), +('0bf055fb-e99b-5612-8592-51cabaa32b02', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '00224658-7dc1-59d7-a649-afa32e8306ec', 20, 'g', NULL), +('1cff254a-305f-528f-9397-c3d9ec6db553', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '79f7723f-ee6f-54c6-8f27-d567c20a8457', 80, 'g', NULL), +('2c65febf-78b4-5dad-b316-6f075382ead4', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('b6c1fe79-b8f7-5c51-84e9-eb783888b2f7', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('fb0ae583-40ee-5e69-ae2f-7a7f05ff3d33', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('a9bae099-14ba-5b4f-b68d-8c7cc0a1980f', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('dca5b7c0-2ab6-56db-bf6b-9d03ed5c095a', 'a2f5b65a-cd89-59a1-bc93-52afe51ff9ef', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('15440dc4-b533-5e83-919a-b0ace5bfdad8', '8255de24-861e-547f-a540-9bf2faa66760', 'cdae3fac-eea7-5584-bd4b-b388793468ae', 100, 'g', NULL), +('dbcf7e3f-7015-5fb4-980a-ab2a0210bbd4', '8255de24-861e-547f-a540-9bf2faa66760', '167bb0c4-4215-53b7-ab97-e97744904e73', 300, 'g', NULL), +('efb4a888-336f-5365-8e3b-9fbeb7063861', '8255de24-861e-547f-a540-9bf2faa66760', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 100, 'g', NULL), +('29f5d3b7-563f-5340-a66d-c9eaa80ad39e', '8255de24-861e-547f-a540-9bf2faa66760', '5c90d2f0-bbb2-59c1-b6d0-3e6f0f4cdff1', 10, 'quả', NULL), +('a2920147-b5f5-51d7-b182-08bbc23fedb7', '8255de24-861e-547f-a540-9bf2faa66760', 'a498fd16-14eb-561e-b0d2-c22aea3d473c', 100, 'g', NULL), +('9b54c5ed-3915-502b-9161-91332249cc4a', '8255de24-861e-547f-a540-9bf2faa66760', '896ba0b5-e91d-5ebb-8a71-2151a21408c9', 50, 'con', NULL), +('d1e70175-6840-50a8-afdf-f55027db5261', '8255de24-861e-547f-a540-9bf2faa66760', '8f7466ee-dd75-5c32-86b1-87a9cc3a8ce4', 150, 'g', NULL), +('0fc1fe1b-0804-5f2c-a5d7-0192443e9c0d', '8255de24-861e-547f-a540-9bf2faa66760', '10205986-c894-59e8-9054-829ba8404a76', 80, 'g', NULL), +('6679dc95-f355-5eff-b8ef-906c29041da6', '8255de24-861e-547f-a540-9bf2faa66760', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('47b0aadc-9829-5df3-a096-8d7d7dbc5011', '8255de24-861e-547f-a540-9bf2faa66760', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('f7c348c5-9ed6-51f0-85bf-d358f43366ee', 'd029c9d7-d1a6-548e-9ccf-f5df71b7d324', 'df864086-81a4-5cc8-bba6-1315b8eb5559', 4, 'miếng', NULL), +('5894db52-db76-5a5f-9dd5-4fa2812f366c', 'd029c9d7-d1a6-548e-9ccf-f5df71b7d324', '7f4fdcbc-054b-579a-8128-b7cf5065eca0', 100, 'g', NULL), +('64b79671-a643-56a0-99d7-31117580b57d', 'd029c9d7-d1a6-548e-9ccf-f5df71b7d324', '46fc61b2-b94f-5d51-812b-9d7ff15261ee', 400, 'g', NULL), +('41b29da2-cb9b-5aa5-bc6f-0bfe3caae8db', 'd029c9d7-d1a6-548e-9ccf-f5df71b7d324', '99a78ed3-82eb-5862-8011-e56cc4611f01', 15, 'g', NULL), +('2a07db61-2fe8-5bcf-8c19-a5a33cd1b4e8', 'd029c9d7-d1a6-548e-9ccf-f5df71b7d324', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 1, 'trái', NULL), +('d51b36e9-caaa-5f3d-9641-fdf5f6664f11', 'd029c9d7-d1a6-548e-9ccf-f5df71b7d324', 'ff788795-cf71-5957-8183-eb447f14f59e', 80, 'g', NULL), +('b359bd79-5276-5f30-9d4a-3e70edee94c1', 'd029c9d7-d1a6-548e-9ccf-f5df71b7d324', '301eecc8-c8ef-57c8-a19c-f5288d454a43', 20, 'g', NULL), +('79ee8473-0220-5b06-9ed2-2b296ed9a985', 'd029c9d7-d1a6-548e-9ccf-f5df71b7d324', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('ec159a6d-686b-530c-919b-6e62aaf238d9', 'd029c9d7-d1a6-548e-9ccf-f5df71b7d324', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('bb14b6fc-ba8c-5711-bb9a-41897437bef4', 'b7698015-9fc1-55e1-b9f2-3e12c31e5e14', 'ea000027-1111-2222-3333-444444444444', 200, 'g', NULL), +('ab51006d-f321-5a37-86a6-c9fd99be16ce', 'b7698015-9fc1-55e1-b9f2-3e12c31e5e14', '09f86239-76c0-512a-ad02-f9ff2f45c5ff', 100, 'g', NULL), +('cc7ef876-9f1d-5ea6-b3ec-419fa8f642f8', 'b7698015-9fc1-55e1-b9f2-3e12c31e5e14', 'ea000023-1111-2222-3333-444444444444', 50, 'g', NULL), +('c5faa5c7-afae-551c-acb8-83d747562687', 'b7698015-9fc1-55e1-b9f2-3e12c31e5e14', 'ea000007-1111-2222-3333-444444444444', 100, 'g', NULL), +('1de45347-eab7-5069-a944-e54ae555bd47', 'b7698015-9fc1-55e1-b9f2-3e12c31e5e14', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 50, 'g', NULL), +('027fbbac-0e8c-55af-b36c-d2329a70e2bd', 'b7698015-9fc1-55e1-b9f2-3e12c31e5e14', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 10, 'g', NULL), +('1b2d9e7b-cfa6-5242-91b2-803c885f4c90', 'b7698015-9fc1-55e1-b9f2-3e12c31e5e14', '189e4982-e150-59bf-aaf2-7227ccb9d61a', 150, 'g', NULL), +('064ad0b5-dd83-5658-9d5f-7b5aa2d452dc', 'b7698015-9fc1-55e1-b9f2-3e12c31e5e14', '99157107-8cbc-5715-97f1-620017377993', 15, 'g', NULL), +('a32fed86-3e8d-5163-9eda-dd629c08dfda', 'b7698015-9fc1-55e1-b9f2-3e12c31e5e14', '139178b2-d2b0-575d-b493-d529da2bd5bc', 5, 'g', NULL), +('d650047a-ee40-554f-a869-5c211c5fbfc7', 'b7698015-9fc1-55e1-b9f2-3e12c31e5e14', '1e27539b-7e79-5894-89aa-45939cd64a93', 20, 'g', NULL), +('72f7b25e-66e6-54a5-ac22-fbf05a7cd80b', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', 'f9198bc3-d1af-5b1d-880f-073562a6006d', 1, 'con', NULL), +('cb2b1497-4437-5921-8cbd-f9314791252a', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', '2a4ad44a-6eb2-5577-8167-b32894631931', 100, 'g', NULL), +('131b3d0f-9585-5971-875f-c6dddfb9b203', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', '6448be8c-54c1-5eec-acfa-7285f67d621a', 100, 'g', NULL), +('b500b137-41a8-515f-8385-0340fe1469a6', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('2e730bcf-2d32-5f05-b401-97ddfe09a6d9', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', 'c4acb0b4-be72-5e01-8f29-c21ffcb34975', 15, 'g', NULL), +('a9acf9fe-96c5-54da-a210-eeecc9267c0d', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', '1580ab05-9658-5cdd-9157-4aeddc092125', 20, 'g', NULL), +('9ecd5f1b-4676-539b-9e5f-8b45d9e9a1ae', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('f0447b9a-43b6-5260-902f-f6e8a202b526', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('f8a50a4f-1dfa-5bbe-a050-4d2d827a2c6b', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', 'dd711f5b-3ba5-5681-a8b5-05908f41e15b', 5, 'g', NULL), +('d3926a13-9e78-54cf-8300-bea3f27a8399', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', 'ffee661f-9e28-5fa3-ac7d-0681e82e6625', 5, 'g', NULL), +('165acb46-a348-5a46-82a2-c8a3f1339a55', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('3628da4f-7e0b-5283-abe8-7128092745c9', 'adffe698-a581-5eb0-a6f3-cb3ab73ce49f', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('d09f9451-5124-56e7-862b-63737e22f975', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', 'ac6c9c88-b5bb-589d-af79-fca945dbf408', 12, 'quả', NULL), +('7ab12edb-fcd8-5b07-9235-2a61d097b897', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', '31413b05-b2b0-506a-95da-68f83bd570c7', 100, 'g', NULL), +('b6d44804-d7b8-5d56-979b-84b53bfe5080', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', '60679900-1fa7-5ff7-90f1-f3916a1fb3f6', 80, 'g', NULL), +('00468a82-a10e-5080-87b8-ffc0fd3a352c', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', 'd1ab6e4c-acba-5fe4-99cb-4ab205734096', 8, 'tai', NULL), +('8f9daf1e-cea1-5405-acbf-99d8e8f21668', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('574b0f15-2fec-5d00-9ff2-0f71ee2cc22e', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', 'ea000007-1111-2222-3333-444444444444', 80, 'g', NULL), +('62fbb1a7-9781-511e-9d6a-ff1180cbd69a', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', 'b0a4b9d7-c6c6-556b-839f-35232eded1ba', 1600, 'ml', NULL), +('fe264b59-6e18-5b50-bf58-59129b4d9b19', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', '02f66156-6c1b-5fe8-8c44-9bfde4332475', 100, 'g', NULL), +('5be30648-fe64-58ed-8fea-10b9db24e629', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', '100946ff-f93a-532f-8f89-88461b61d370', 100, 'g', NULL), +('fe4162f0-a521-5f5e-bb68-a668f491ce6b', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', '25a49390-384b-54e7-bff8-710d96803159', 20, 'g', NULL), +('8841ea70-2b17-50ab-9a84-42df112d58cb', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('0bce906a-4412-5fe9-8f10-3dfcf7bd69c1', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', 'fa39c20c-5ffd-5cc0-bf07-9758f0f05884', 60, 'g', NULL), +('d90f0213-469b-52da-aebc-3f6c31b2ad78', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('4113b7c6-a48f-568f-be74-483fe318a68d', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('f92a6c7b-c4d8-572b-8ae3-cbe3464f2caa', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('9e53b495-93f9-53fa-befa-d3c5a9f939ff', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('751c3cef-89d1-55be-838d-5fe5c70702a1', 'd1d639d0-d770-5aa3-b8d7-8de4235b6bae', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('50925a18-8cc9-5ac8-b923-2ae60701435f', '0bdbfc0f-8886-5828-9c74-439c114a0f58', '82b928c3-8c9e-5323-bb6c-a1dd54b74ab8', 300, 'g', NULL), +('dd670024-e1b6-5143-af1c-a4e2aa5dc11e', '0bdbfc0f-8886-5828-9c74-439c114a0f58', '73336f9f-85b0-50f0-8b72-32edf62cc08e', 150, 'g', NULL), +('be647c91-ef87-5f7a-99ea-a6f590225322', '0bdbfc0f-8886-5828-9c74-439c114a0f58', '5c90d2f0-bbb2-59c1-b6d0-3e6f0f4cdff1', 8, 'quả', NULL), +('4b0f3317-0489-5639-9fe2-540d8d45ec57', '0bdbfc0f-8886-5828-9c74-439c114a0f58', 'dd37a043-70dd-5ccb-be57-1d629be323ab', 1, 'trái', NULL), +('45d779ff-4133-5dda-a080-e8a578d0239f', '0bdbfc0f-8886-5828-9c74-439c114a0f58', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('b8162a2f-641b-5e48-a228-fc105ac1351f', '0bdbfc0f-8886-5828-9c74-439c114a0f58', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('6dc1452f-9803-5c05-b1bc-7d2b15e0bf2c', '0bdbfc0f-8886-5828-9c74-439c114a0f58', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('fe02a4ad-31d1-5716-976c-6b8c431a854d', '0bdbfc0f-8886-5828-9c74-439c114a0f58', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('6ced935a-b5f6-5122-a492-75f8f79228fc', '0bdbfc0f-8886-5828-9c74-439c114a0f58', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('11a6ac48-27d8-5d64-afd3-ee04f2312cfa', '0bdbfc0f-8886-5828-9c74-439c114a0f58', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('c9dc4d9c-2fd8-5c5f-838a-5652a86b0e93', '0bdbfc0f-8886-5828-9c74-439c114a0f58', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('5ea8395a-cf60-51f6-956a-67e2d6ffa1db', '9b77ab25-e5d9-5bcf-994c-dab4b858b189', 'eb0580c8-ccdb-5428-ae10-4ea5c4edf4ac', 150, 'g', NULL), +('f1bf8742-78af-5e35-85e5-9eec19ee5d5f', '9b77ab25-e5d9-5bcf-994c-dab4b858b189', 'a2f8663c-e2a1-5a44-9d3e-ba2c36dd8389', 300, 'g', NULL), +('f8acfe8e-037a-575b-ba6d-01d630cebbd3', '9b77ab25-e5d9-5bcf-994c-dab4b858b189', '338b73e7-8557-5399-baaf-61cd9e10518f', 1, 'trái', NULL), +('0467f2f6-207c-5a6c-a20b-9041425dbeef', '9b77ab25-e5d9-5bcf-994c-dab4b858b189', '86eda42e-989d-5587-8f1d-96a2d9416a85', 3, 'nhánh', NULL), +('47710078-22a7-5acd-a458-e4cf2f3b4f36', '9b77ab25-e5d9-5bcf-994c-dab4b858b189', '0f72e431-84b8-5b62-a981-d22b46d20e85', 80, 'g', NULL), +('89b3b009-30d4-544a-bb7c-ae5cf4b2d119', '9b77ab25-e5d9-5bcf-994c-dab4b858b189', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('fcf65570-dc19-5d5f-8779-fbcc31b562d0', '9b77ab25-e5d9-5bcf-994c-dab4b858b189', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('3399f34a-6282-50ee-ae6e-b51da10dec5a', '9b77ab25-e5d9-5bcf-994c-dab4b858b189', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('c9471746-aff0-5b83-931f-fd5bea8eb4dc', '9b77ab25-e5d9-5bcf-994c-dab4b858b189', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('0532d986-dabc-51a5-8525-ee182a9a9092', '4fb9f616-1de1-5508-b7bd-796e8d5ac9eb', '961d9b0b-8f66-59d5-b220-5896d4429bfe', 300, 'g', NULL), +('6a36a2ae-a47b-5e61-81ea-66f8d950d162', '4fb9f616-1de1-5508-b7bd-796e8d5ac9eb', '6c1ec9f9-0406-5616-82a9-9082034cc0f8', 150, 'g', NULL), +('447bfb00-3ef2-5faa-8356-4203a98a9f18', '4fb9f616-1de1-5508-b7bd-796e8d5ac9eb', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('925064c8-fa4a-5e89-b1d4-d4181d81543a', '4fb9f616-1de1-5508-b7bd-796e8d5ac9eb', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('09957bf7-5428-5022-a824-fab169f7da6e', '4fb9f616-1de1-5508-b7bd-796e8d5ac9eb', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('3de3e081-1603-5283-bffd-0b1854e6ba53', '4fb9f616-1de1-5508-b7bd-796e8d5ac9eb', 'c87f05f9-2c07-53ae-9b97-fbecfebbdfcb', 20, 'g', NULL), +('e208d9f3-80e2-5a3e-927e-f5f8e80b1523', '4fb9f616-1de1-5508-b7bd-796e8d5ac9eb', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('4d62d0bd-cd37-5856-adf0-e633a0cd27c1', '4fb9f616-1de1-5508-b7bd-796e8d5ac9eb', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('32a8cf19-223c-5019-8d4d-a1710fdc4581', '4fb9f616-1de1-5508-b7bd-796e8d5ac9eb', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('3bedb236-1f9b-565c-9e7c-9b606920c054', '4fb9f616-1de1-5508-b7bd-796e8d5ac9eb', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('66795e97-cf78-5a82-ba66-ef4f2df80120', 'f9207ff3-3736-55d9-8b16-99432e1d470f', '2b1d2730-a829-5f8b-b7df-c09b60921a0a', 200, 'g', NULL), +('9d77bf28-554c-5fcc-bf26-020511ddfdad', 'f9207ff3-3736-55d9-8b16-99432e1d470f', '725e64c6-e003-54c3-b1a3-5c562700b224', 200, 'g', NULL), +('352dbac9-b8ed-5c23-ac56-a7a2cfd383ab', 'f9207ff3-3736-55d9-8b16-99432e1d470f', 'd5bb3bc9-81ca-5eaf-98ba-911a82fe6496', 2000, 'ml', NULL), +('cab71d67-b614-5a91-8823-8fa7258d462d', 'f9207ff3-3736-55d9-8b16-99432e1d470f', 'dcf818c8-c881-5695-a5cd-d191a26d421e', 50, 'g', NULL), +('4ba9c1f1-ab24-546e-9208-981a4ae94716', 'f9207ff3-3736-55d9-8b16-99432e1d470f', 'd8260c28-d006-5fed-ae3d-7c58d437431f', 50, 'g', NULL), +('b0b9db6e-9e42-5749-a338-d8740b09f665', 'f9207ff3-3736-55d9-8b16-99432e1d470f', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('66d43196-e743-545f-9285-970bb15b6a7c', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', 'd14713aa-a676-5433-b306-c7621e347847', 200, 'g', NULL), +('9f857d84-0695-56ea-a0ef-3f01378bee97', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 200, 'g', NULL), +('cb6e2ed8-3918-5ee8-97a2-47c931e3eac7', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', 'ea000004-1111-2222-3333-444444444444', 1, 'quả', NULL), +('797bddd4-e7b8-5892-abf8-ba890d385aeb', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', 'ea000034-1111-2222-3333-444444444444', 5, 'g', NULL), +('a0585633-344f-5330-adb8-88e3be30a380', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', '3eb11caa-23e9-5047-96e7-eb98fde94d91', 10, 'g', NULL), +('b77d0ca6-9f15-5783-b1f7-48f9e6077e7c', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', '152109fb-25ac-55cc-ad5a-341010f2bb98', 20, 'g', NULL), +('3a3683eb-f82f-5919-8886-aee777e9351f', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('d5b43724-9d70-5c1b-b7a9-6a0dbb357ba8', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('ad8fd59d-224a-563b-892b-de363db7918d', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('9e49250c-4fb9-59a4-be29-41e62f3c1d11', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', '3a23a095-279b-50d4-9ad7-4ef36bcba721', 5, 'g', NULL), +('f6cbcc70-9ea8-5139-b166-0798806e6517', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('326e7179-793f-5121-96ef-4cca2cb5363c', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('881ccdf0-a686-5269-b3fd-b6f3a3af7f18', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('abf9bdc2-ad9a-554c-b114-d1cabde1235c', '25e713a5-a5cb-5bfd-842d-b14b72886ec8', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 20, 'g', NULL), +('38061dd9-1600-530c-a1e9-21a34a4b109b', 'c13360e3-4770-5499-932a-2112d3a4961c', 'c0d0327f-6bb6-59ac-abad-c2e2c749d8ce', 300, 'g', NULL), +('2222d04d-10d9-576f-9e29-40c893fb630a', 'c13360e3-4770-5499-932a-2112d3a4961c', '05d2fde7-db29-5e60-b0d3-c17466605db2', 400, 'g', NULL), +('90a665b0-0298-58d0-ba7c-7d8e533dd8b7', 'c13360e3-4770-5499-932a-2112d3a4961c', '99a78ed3-82eb-5862-8011-e56cc4611f01', 20, 'g', NULL), +('3b90308d-8743-58ee-a564-f7aba42f560e', 'c13360e3-4770-5499-932a-2112d3a4961c', '86eda42e-989d-5587-8f1d-96a2d9416a85', 10, 'g', NULL), +('b3fe2315-eb70-5f1e-874e-3fc3a50ecc42', 'c13360e3-4770-5499-932a-2112d3a4961c', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('638bf412-8494-5e8a-9e82-218efc3f9a68', 'c13360e3-4770-5499-932a-2112d3a4961c', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('9480d0cb-6775-5269-bc53-49428f551acb', 'c13360e3-4770-5499-932a-2112d3a4961c', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('0e99b9f8-0df4-59aa-a285-4626a151a26b', 'c13360e3-4770-5499-932a-2112d3a4961c', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('d6407d62-7b99-5653-893d-0e4214b5fd95', 'a5aec6b9-c1fa-5def-974f-c9e33193fc53', '35a51c14-43c4-560a-aeac-59b5cc0a8483', 300, 'g', NULL), +('32d98fbf-c916-57ae-b642-c618e25540fc', 'a5aec6b9-c1fa-5def-974f-c9e33193fc53', '02f66156-6c1b-5fe8-8c44-9bfde4332475', 100, 'g', NULL), +('bf0c5c4f-eef7-5ee2-a6e6-b8bc28ae816b', 'a5aec6b9-c1fa-5def-974f-c9e33193fc53', '48a93238-8bb7-5c60-832b-8312ae4b2c08', 50, 'g', NULL), +('85fc046a-5aec-5c18-bbb1-00e048b3105d', 'a5aec6b9-c1fa-5def-974f-c9e33193fc53', 'ea000007-1111-2222-3333-444444444444', 100, 'g', NULL), +('ec757f7b-0609-5fde-af6d-a88c6fb31c1d', 'a5aec6b9-c1fa-5def-974f-c9e33193fc53', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('f9899c36-6fd7-5382-bd84-1b97b463be27', 'a5aec6b9-c1fa-5def-974f-c9e33193fc53', '78a5e6aa-6f32-5e6b-bfd3-d55d6472a17f', 5, 'tai', NULL), +('4db4dc57-82ec-57b6-aee6-65173f5c18e7', 'a5aec6b9-c1fa-5def-974f-c9e33193fc53', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('aa41fe46-3ba4-5068-b4f7-0ec003abbf91', 'a5aec6b9-c1fa-5def-974f-c9e33193fc53', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('43508406-b5a6-5db6-bb1b-4fd3dd85ff2f', 'a5aec6b9-c1fa-5def-974f-c9e33193fc53', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('48955a91-9fd5-5ad0-9a7a-e938c1512ecf', 'a5aec6b9-c1fa-5def-974f-c9e33193fc53', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('25f013c6-6d6d-549f-a1a3-65641ab5cd81', 'd3d4731b-77af-50c2-8664-1f0c13504239', '26c97be9-ebdf-5c5d-a2a0-46566514a6ef', 150, 'g', NULL), +('6e979312-5d49-5054-944c-ca749e24cb94', 'd3d4731b-77af-50c2-8664-1f0c13504239', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 100, 'g', NULL), +('a7bcf03c-f0fd-5f27-8990-1468e5638bb3', 'd3d4731b-77af-50c2-8664-1f0c13504239', 'd7eb4972-ecc9-560e-b85b-13d6b80943ac', 22.5, 'g', NULL), +('6187cefa-dc0e-5fb1-afea-edf4fc7778a8', 'd3d4731b-77af-50c2-8664-1f0c13504239', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 1, 'quả', NULL), +('963256dc-f68f-51ff-8260-74061356f707', 'd3d4731b-77af-50c2-8664-1f0c13504239', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 0.25, 'quả', NULL), +('8d7a156f-6c75-5159-9b56-157b86d47bbb', 'd3d4731b-77af-50c2-8664-1f0c13504239', '725e64c6-e003-54c3-b1a3-5c562700b224', 100, 'g', NULL), +('83a1cf0a-1335-568f-8d07-b030f7fda1ee', 'd3d4731b-77af-50c2-8664-1f0c13504239', 'a91ed20d-3a8e-5009-b663-94387b94649b', 100, 'g', NULL), +('9a1fdee9-d620-5cb0-a01a-6db9c0be1df5', 'd3d4731b-77af-50c2-8664-1f0c13504239', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('651909a3-d11b-5363-af8c-3063abbce86a', '8503dee5-ea02-5bac-bb3e-2a80f7489584', '53a81b46-70f1-5e29-90b2-98a529ebb018', 1, 'cái', NULL), +('3939f118-f5c3-50f3-85e0-9039ccf00566', '8503dee5-ea02-5bac-bb3e-2a80f7489584', '0d9e744b-2cc6-5ae0-8497-e06e00a72358', 1, 'cái', NULL), +('ac1786bc-a939-5148-8ba3-326fbfa6fd03', '8503dee5-ea02-5bac-bb3e-2a80f7489584', 'ea000042-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('99733d99-67a6-532a-bd74-668eb8f55ed8', '8503dee5-ea02-5bac-bb3e-2a80f7489584', '30aab0ce-a3fc-57d2-9dd8-5152c824ea28', 6, 'củ', NULL), +('dd910342-266b-532d-bc17-80c2fc631f16', '8503dee5-ea02-5bac-bb3e-2a80f7489584', '78a5e6aa-6f32-5e6b-bfd3-d55d6472a17f', 4, 'tai', NULL), +('4a44d9b6-1000-523e-9cbb-36b355748888', '8503dee5-ea02-5bac-bb3e-2a80f7489584', '1a76e495-e8c2-5e3e-873b-7cfd4109adb3', 50, 'g', NULL), +('888aa1b5-dbb5-5347-b682-4dfeb0cc2d2f', '8503dee5-ea02-5bac-bb3e-2a80f7489584', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('01f3ae59-d33c-5b26-8dcb-ae0edb17b480', '8503dee5-ea02-5bac-bb3e-2a80f7489584', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('9be0f2dc-4c15-5de4-b762-5849816533cd', '8503dee5-ea02-5bac-bb3e-2a80f7489584', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('65ac3008-62d0-5a99-bb13-0d1d8fa14bde', '8503dee5-ea02-5bac-bb3e-2a80f7489584', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('d5227b12-ee62-5694-a237-d7e7864aadc8', '19464651-717a-5ab4-bee7-3778c30054fd', '5342cdc7-0dab-501f-ac61-fac7d62f9657', 300, 'g', NULL), +('ded9a3ce-f77f-5bdc-afea-c3cc3b4a3524', '19464651-717a-5ab4-bee7-3778c30054fd', '6448be8c-54c1-5eec-acfa-7285f67d621a', 100, 'g', NULL), +('9a9c0eb5-e886-514e-ae08-95efa6dddb62', '19464651-717a-5ab4-bee7-3778c30054fd', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('f56b7a23-202a-5d11-ad22-d360cf7762d3', '19464651-717a-5ab4-bee7-3778c30054fd', '1a76e495-e8c2-5e3e-873b-7cfd4109adb3', 50, 'g', NULL), +('24c1c865-873e-5e1e-ab7c-c460a19fb83e', '19464651-717a-5ab4-bee7-3778c30054fd', '38e53e71-2b53-56ba-bbcf-2b9ebdbe9b94', 4, 'quả', NULL), +('4d57aeac-180a-53ed-85fd-7a7634ef5f25', '19464651-717a-5ab4-bee7-3778c30054fd', 'be1f13f5-af04-5fc6-945c-8c3493c38f1a', 10, 'g', NULL), +('0ae48ba8-86ba-5e7b-b48b-9e8698083d8d', '19464651-717a-5ab4-bee7-3778c30054fd', 'd1ab6e4c-acba-5fe4-99cb-4ab205734096', 4, 'tai', NULL), +('a48b3b3c-3d5b-53c1-933d-85236132dcf9', '19464651-717a-5ab4-bee7-3778c30054fd', 'ea000034-1111-2222-3333-444444444444', 4, 'củ', NULL), +('1570cbe9-81b6-5d50-8280-d5872dcfec16', '5d44f03c-4a67-535a-9894-279490d7bfea', '18872757-52d6-535c-ba24-683941c11fbe', 200, 'g', NULL), +('4223e74c-19a5-5f11-8625-75abe5be5d27', '5d44f03c-4a67-535a-9894-279490d7bfea', 'ea000025-1111-2222-3333-444444444444', 100, 'g', NULL), +('e095a96b-66af-5981-a9a3-f774f21a23ff', '5d44f03c-4a67-535a-9894-279490d7bfea', '86eda42e-989d-5587-8f1d-96a2d9416a85', 10, 'g', NULL), +('a61a3d2e-622f-5a24-8e6a-cc5b3113614f', '5d44f03c-4a67-535a-9894-279490d7bfea', '9c6639c5-dca8-57f6-af7e-ba76f5366ceb', 12000, 'ml', NULL), +('50df4a27-47d6-58a6-9a9e-6823e8ea2785', '5d44f03c-4a67-535a-9894-279490d7bfea', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('6d15ed3e-630b-53dd-b5e7-2e6f7ce6d646', '5d44f03c-4a67-535a-9894-279490d7bfea', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('52a6295c-228a-5b67-8f74-a58bd0e29ea6', '5d44f03c-4a67-535a-9894-279490d7bfea', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('4ab1645a-8928-5790-ac4d-4ef61802259d', '5d44f03c-4a67-535a-9894-279490d7bfea', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('56d098de-3c65-5d0a-bf7b-b48df74dc6f8', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', '64bc5f62-7cbe-59cc-bf5d-b14e00d0fbad', 100, 'g', NULL), +('77660dfa-d319-5c9e-9407-e807f5c8ca40', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', '5acd8289-3feb-5034-8da4-63150f61c9ea', 80, 'g', NULL), +('a1a6e10a-c48d-5c22-ae08-b8f486e33903', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', 'ed51eb54-3dc6-53cf-a660-c7ebbe2b6a00', 50, 'g', NULL), +('d1cf0782-cb76-59d3-9978-1eabc84bc07f', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', 'e33dbe29-6989-50dc-9159-768c8500ae5d', 8, 'tai', NULL), +('a0b25e43-bd75-527c-b19e-4914b24bbb59', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', 'dcc8723c-37db-5879-b9f3-57fde36bbcf2', 2000, 'ml', NULL), +('d4bd948c-8eeb-5652-91e8-fb05ae657cdb', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', 'a0e8fcd6-90bb-5ed2-8fc6-49a25af48f6b', 15, 'g', NULL), +('df1e961d-64f1-580f-bb1c-a6c6a785ce52', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('e75becf9-818a-5180-8f05-3e28ba74fcfd', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('f4adaa35-9d04-56b1-8e2d-361ad418ac9e', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('98411b7f-45a1-54fb-9052-e952143373f4', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('5bc9c912-e189-5d9f-a75d-80ed3972d698', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('e4587c0f-4373-5924-919d-1b5c24718f8d', 'bcfa5ed1-53f8-5294-a5b6-1c540fe78284', 'fd609e96-97dc-59af-8740-4786d08a852b', 100, 'g', NULL), +('45e9fa6f-afe0-5ae7-96d7-342e1c488abe', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', '7dc38594-9e93-57f7-8322-d21658edeedd', 150, 'g', NULL), +('c5a28f1e-f6ed-50d3-8064-bd0e71bcc033', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', '5bdc1d37-00e8-502d-9278-7828fc4d7713', 50, 'g', NULL), +('e21b6e27-068d-5c1e-afdd-ffa6731afe73', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 50, 'g', NULL), +('ec2b24af-431e-5284-988f-32531e7e7a8b', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', 'ea000007-1111-2222-3333-444444444444', 50, 'g', NULL), +('39022c26-d029-57bf-8252-75516c257772', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', 'd5bb3bc9-81ca-5eaf-98ba-911a82fe6496', 50, 'g', NULL), +('8fe86924-a649-5469-bf49-e332b2c7cd00', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', '743d2dfd-279a-576a-8b76-fac82b8bf9d8', 0.5, 'củ', NULL), +('19124b5f-2e0e-5f84-97fa-03d3e3427f6b', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('13baebd7-272a-5875-ab8e-3858ed060b9d', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('ab2d4128-f739-5135-b7b7-f8801ee4b276', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', '558dd7f9-1690-5e57-bd3c-580e91b23323', 45, 'g', NULL), +('13334ddf-9c4e-5a04-9223-6c6775b9e8ff', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', '24b4b9c7-685c-5a8d-baa3-e8f6b29947af', 30, 'g', NULL), +('ced8fa8d-44da-597e-baf2-f858440f76c0', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', '99157107-8cbc-5715-97f1-620017377993', 15, 'g', NULL), +('2f9357a5-efd4-5269-8eec-c2a94468b263', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', 'f0823436-e0ae-5f47-a5ab-7ef29e92fd30', 15, 'g', NULL), +('378ba4c9-3284-5187-8992-39956c755e69', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', '19cec053-aed7-5719-82c5-b44b9e897f44', 45, 'g', NULL), +('83b529f5-67a6-5b8c-817b-a7ae2f4e0d58', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', 'ab284a6b-7b7a-574f-9025-41ea4f8cbd65', 5, 'g', NULL), +('c88e3621-c8f3-5e2b-a7e2-b27f37dcf7f1', 'a2b2f916-b232-5c2a-83f1-5b343113d5af', '3a93ebb8-619a-5bb1-a676-871678da3df5', 15, 'g', NULL), +('de03bf8a-c223-5c5e-a696-98e4ecace113', '70924aa2-919a-5fdd-a9a5-f55a8b74b12f', '1e3e8fab-c862-5009-ba9f-aadd65e325bc', 60, 'g', NULL), +('cc8ac9eb-fa9b-5000-8396-674c9fe9ef53', '70924aa2-919a-5fdd-a9a5-f55a8b74b12f', '09f86239-76c0-512a-ad02-f9ff2f45c5ff', 30, 'g', NULL), +('185d49b1-da54-5b09-a25f-83a1eb1bad8b', '70924aa2-919a-5fdd-a9a5-f55a8b74b12f', '7f4fdcbc-054b-579a-8128-b7cf5065eca0', 80, 'g', NULL), +('3d0f4d59-5bd2-59cc-9374-439c6823b108', '70924aa2-919a-5fdd-a9a5-f55a8b74b12f', '189e4982-e150-59bf-aaf2-7227ccb9d61a', 80, 'g', NULL), +('71d85498-e882-5212-8bfd-3a191883571d', '70924aa2-919a-5fdd-a9a5-f55a8b74b12f', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 40, 'g', NULL), +('e2ce9ea2-275b-5ae0-ba8f-06021d5be67e', '70924aa2-919a-5fdd-a9a5-f55a8b74b12f', '4d4f8f96-07d0-5c63-8d42-c1616901be27', 50, 'g', NULL), +('3127211c-2c1d-51a6-852f-32a0f46bd58b', '00ce777c-0368-5427-8102-1489c6762aae', 'e58563bc-fbf6-5cbd-8471-f575dde30e16', 100, 'g', NULL), +('73bc26e3-099c-5f79-bfe0-ae34a77f079e', '00ce777c-0368-5427-8102-1489c6762aae', '2a2111cf-7410-582e-81d2-0c9fdc453128', 80, 'g', NULL), +('2ee47c39-48eb-554a-b8b0-51876ce10588', '00ce777c-0368-5427-8102-1489c6762aae', '5716aac3-265c-5ee8-9969-1699861ecbe8', 100, 'g', NULL), +('930250cb-bc21-5209-88c6-8a8e833d1fa5', '00ce777c-0368-5427-8102-1489c6762aae', '7bae084c-9cb8-54ca-ba11-18e407528f23', 1000, 'ml', NULL), +('6987739d-dca1-5e4f-914e-1218e64e17dd', '00ce777c-0368-5427-8102-1489c6762aae', 'e33dbe29-6989-50dc-9159-768c8500ae5d', 80, 'g', NULL), +('0a801203-f065-563e-b060-14f8bc437acf', '00ce777c-0368-5427-8102-1489c6762aae', 'b064bc11-4b03-540c-8f7b-d7fccbabd77e', 15, 'g', NULL), +('fbeba021-8772-5ec0-847f-78448874d582', '00ce777c-0368-5427-8102-1489c6762aae', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('487e6197-7799-54cf-a7a1-1cff96a8d4b0', '00ce777c-0368-5427-8102-1489c6762aae', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('4ee1ccab-6dd4-5d0b-a393-eafd85264de5', '00ce777c-0368-5427-8102-1489c6762aae', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 40, 'g', NULL), +('2c29482f-288f-5ef2-95a5-39ae4d3c04fb', '00ce777c-0368-5427-8102-1489c6762aae', 'f9e6ed8f-dda3-53a0-a15b-08e978fadac9', 5, 'g', NULL), +('62a54a8d-8f2c-5610-88c3-8d7a69f1a32b', '00ce777c-0368-5427-8102-1489c6762aae', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('560164bb-a829-5835-9c75-9a3ba8dfb8cb', '00ce777c-0368-5427-8102-1489c6762aae', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('26570281-75dd-5247-893b-befa03cb23f6', '00ce777c-0368-5427-8102-1489c6762aae', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('0fe5f272-5876-5100-9c6a-ed55ba5b1a6d', '7cc4a627-8b24-5925-936f-88d05408f112', '1e6c0ad3-ee03-5ff0-95e2-072e21b4901a', 1000, 'g', NULL), +('b106b2fb-1c59-5400-a105-dd1007fa6c94', '7cc4a627-8b24-5925-936f-88d05408f112', 'a3fc8f88-ea62-56ed-8f96-1f05b9693359', 500, 'g', NULL), +('dea824c1-4636-5fde-9d85-25ad9da4d93e', '7cc4a627-8b24-5925-936f-88d05408f112', '8c097782-8f8a-5f72-9fd7-63033f8f37ec', 60, 'g', NULL), +('ed24b604-1d32-550d-b78a-46d33f253676', '7cc4a627-8b24-5925-936f-88d05408f112', 'ea000042-1111-2222-3333-444444444444', 70, 'g', NULL), +('248dfda9-9764-593a-9397-54dd6516dd94', '7cc4a627-8b24-5925-936f-88d05408f112', 'ea000025-1111-2222-3333-444444444444', 70, 'g', NULL), +('475203bf-5991-5dda-be0a-1b69409939db', '7cc4a627-8b24-5925-936f-88d05408f112', 'f292282a-5feb-5969-910f-19c8f6e2d10e', 1, 'quả', NULL), +('e5a410b4-62c8-5a20-9b20-0a9191313c9f', '7cc4a627-8b24-5925-936f-88d05408f112', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('a17c1481-7bf6-54bf-a57c-952ab5ba645f', '7cc4a627-8b24-5925-936f-88d05408f112', '94987c59-1b1d-56b4-8f38-364e9b3b1a46', 5, 'g', NULL), +('3c3f3a78-278a-51e7-971e-30cd61d11883', '7cc4a627-8b24-5925-936f-88d05408f112', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('edbda5ab-00af-57a6-a272-c11b4e39e2bf', '7cc4a627-8b24-5925-936f-88d05408f112', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('b9bf653c-3b90-553a-aef2-4219d541525c', '7cc4a627-8b24-5925-936f-88d05408f112', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('c0c1186e-dc3e-5854-aa51-bec2dce2ded3', '7cc4a627-8b24-5925-936f-88d05408f112', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('3f798585-ecf0-5b30-a54a-3baf4199f959', '91a93b63-aa01-5c3b-8dd9-a6e7e14959c0', '35a51c14-43c4-560a-aeac-59b5cc0a8483', 400, 'g', NULL), +('89f27db8-3327-5704-82b7-5d19779a67f6', '91a93b63-aa01-5c3b-8dd9-a6e7e14959c0', 'db2b5fd6-5a34-569d-a56c-d4bbc48eb197', 30, 'g', NULL), +('a7ab2900-41ab-5583-bb5a-47f5a5f798ab', '91a93b63-aa01-5c3b-8dd9-a6e7e14959c0', '79057839-1f37-5822-8125-c087a0abc556', 200, 'g', NULL), +('c0a88d3a-a582-5f77-a854-b94038b7bec7', '91a93b63-aa01-5c3b-8dd9-a6e7e14959c0', 'ea000042-1111-2222-3333-444444444444', 200, 'g', NULL), +('83666562-5020-59bd-a9cf-963cf1dc9e8b', '91a93b63-aa01-5c3b-8dd9-a6e7e14959c0', '3fa2e8f4-7a57-5d93-9bd4-fc77bc94f39c', 2, 'g', NULL), +('76bdf221-2651-5bbc-926e-6975f88e719a', '469c2708-e98d-55da-a714-a56fb9765bad', '2680c5bb-b9cb-5402-a86c-fe3b8f7148ca', 250, 'g', NULL), +('58e8b6c9-dcbf-5638-9175-4c75c04ef6f3', '469c2708-e98d-55da-a714-a56fb9765bad', 'ea000008-1111-2222-3333-444444444444', 7.5, 'g', NULL), +('d61a875b-83aa-5262-a097-a2f08edadbc5', '469c2708-e98d-55da-a714-a56fb9765bad', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 75, 'g', NULL), +('5e3223c0-2595-5258-b79f-1ec472e1a32f', '469c2708-e98d-55da-a714-a56fb9765bad', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 30, 'g', NULL), +('9e7b2dd3-ec41-515a-9c28-3c94a2c6cea4', '469c2708-e98d-55da-a714-a56fb9765bad', '622a8844-7e72-5d79-9843-936a0a9dff08', 100, 'g', NULL), +('f0a7d620-b628-59bd-a2b4-976b6f96443e', '469c2708-e98d-55da-a714-a56fb9765bad', 'f1851389-83c4-51cc-993c-a39d0d8cd0ee', 10, 'g', NULL), +('3a2bfff1-42e7-514d-8d84-6affb5a84fab', '469c2708-e98d-55da-a714-a56fb9765bad', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 15, 'g', NULL), +('4934768a-9143-5784-bd1a-06fef104128c', '469c2708-e98d-55da-a714-a56fb9765bad', 'ea000023-1111-2222-3333-444444444444', 80, 'g', NULL), +('847e6b2b-1f36-5b33-9148-b435bc2c2f49', '469c2708-e98d-55da-a714-a56fb9765bad', '5e720261-0973-5a91-acc4-d8347d1035a6', 80, 'g', NULL), +('58587789-087a-5e08-a2d3-0c5a1d3697be', '469c2708-e98d-55da-a714-a56fb9765bad', 'ea000024-1111-2222-3333-444444444444', 80, 'g', NULL), +('3c950992-afcd-5538-9ca7-bc65a191dce3', '469c2708-e98d-55da-a714-a56fb9765bad', 'c7e92adc-13f7-5fea-b171-e1a062e3bd18', 20, 'g', NULL), +('114abb40-8901-5071-a3d5-59ed7b22bbbe', '469c2708-e98d-55da-a714-a56fb9765bad', 'ea20da85-a1f9-51f4-bb1f-d1f6220814bc', 100, 'g', NULL), +('61c723af-2fc8-58ff-9d07-dc6aeb5c98da', '52a4f993-3ab1-554f-92d6-e60f5f2e364e', '997ca425-f8b9-507e-975c-68ddff6b7427', 200, 'g', NULL), +('37c246f0-3cec-55db-873e-eb0780979adb', '52a4f993-3ab1-554f-92d6-e60f5f2e364e', 'eb4c0cf8-2baf-5904-9284-9984af4fd8f8', 50, 'g', NULL), +('360a5997-b76e-5735-a79f-c7a79db0a52d', '52a4f993-3ab1-554f-92d6-e60f5f2e364e', 'e91f2d56-b566-5249-ae1c-388820162cd1', 8, 'trái', NULL), +('7c7b1c9c-0c4b-5df2-a6d6-04a40360204e', '52a4f993-3ab1-554f-92d6-e60f5f2e364e', '4d223977-a251-5efa-b1c0-1e86aa3e8760', 30, 'g', NULL), +('79ffa73f-714b-595b-856a-029394754767', '52a4f993-3ab1-554f-92d6-e60f5f2e364e', '60abf488-564e-56ab-9aaf-e1c416e24c2a', 15, 'g', NULL), +('9d0ea1de-d077-56db-89b4-83a4bd5e0a2b', '52a4f993-3ab1-554f-92d6-e60f5f2e364e', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('e595bcd8-105b-58e5-bd9f-cab24f60da18', '52a4f993-3ab1-554f-92d6-e60f5f2e364e', '99157107-8cbc-5715-97f1-620017377993', 100, 'g', NULL), +('847639a4-01eb-5094-bf84-a069d2f6ab81', '52a4f993-3ab1-554f-92d6-e60f5f2e364e', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('18464f25-f931-5975-9fd4-7a34f5751772', '52a4f993-3ab1-554f-92d6-e60f5f2e364e', '10aab5c9-a2da-53b3-b1d1-aa2e2a2fb7c9', 20, 'g', NULL), +('1356651e-2616-5c95-87d6-09b1e062c6e3', '52a4f993-3ab1-554f-92d6-e60f5f2e364e', '388eee9b-99af-5992-9740-ae4361ee4d4c', 80, 'g', NULL), +('8c95e9e1-5153-51ac-8459-45774e05e715', '2f248b42-80c0-58ff-b849-74881341c271', 'b1d2fc61-bebe-5a1c-8706-64a7cc8fea83', 12, 'con', NULL), +('b7a59c97-e20f-5c77-af87-b4012083ec10', '2f248b42-80c0-58ff-b849-74881341c271', '47f011c6-1053-509d-b4db-7c7ab53c25d8', 100, 'g', NULL), +('2eb6f7c7-bcff-5140-af4b-1a275fce4278', '2f248b42-80c0-58ff-b849-74881341c271', 'b4151b16-e57c-5867-a6ff-ecbeb1e3d3c0', 1, 'tai', NULL), +('22017a71-96f1-58e2-adc4-4933b2d8c694', '2f248b42-80c0-58ff-b849-74881341c271', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 1, 'nhánh', NULL), +('60df0fde-642e-57cc-b064-a27c5d48e594', '2f248b42-80c0-58ff-b849-74881341c271', '1d8dc937-8a01-5046-80ad-75fc643c5215', 6, 'cái', NULL), +('21a2cd19-e9c9-541c-98d0-2d0ae07c6bdc', '2f248b42-80c0-58ff-b849-74881341c271', '55f5ae60-ea08-597b-8be1-1beff05b1401', 15, 'g', NULL), +('f4091ff8-c46c-5931-b4e0-524037d67e3f', '2f248b42-80c0-58ff-b849-74881341c271', '3c20858c-ed74-52df-98c9-7b5a1028e0b2', 80, 'g', NULL), +('f88ed64a-b9ba-529e-a054-f2023065da41', '2f248b42-80c0-58ff-b849-74881341c271', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('e5a19e83-ba93-5dab-81bb-0f3bfbc1d2ba', '2f248b42-80c0-58ff-b849-74881341c271', 'ea000023-1111-2222-3333-444444444444', 80, 'g', NULL), +('d02a6d93-2258-51a6-8a9b-6cc2e453a613', '2f248b42-80c0-58ff-b849-74881341c271', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('1598c16c-10e0-5231-acea-832000ced8b4', '2f248b42-80c0-58ff-b849-74881341c271', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('2f112faf-0082-506e-ae29-0e5914f1e8ff', 'e9dc9fc8-f5e5-54f1-b1ae-08f252ab1774', 'dc1189f0-95ab-52f8-a010-e29e2019e0ba', 200, 'g', NULL), +('c144f812-658b-55b0-8cc2-4d2a02f88cbf', 'e9dc9fc8-f5e5-54f1-b1ae-08f252ab1774', 'ea000027-1111-2222-3333-444444444444', 200, 'g', NULL), +('7793bfe9-4b2f-5745-86ba-aff8c2b10eae', 'e9dc9fc8-f5e5-54f1-b1ae-08f252ab1774', '3f875012-7423-5136-ad62-f360fc63eb4d', 20, 'g', NULL), +('c33cebda-ea3b-5c0e-b048-8aab18c84a46', 'e9dc9fc8-f5e5-54f1-b1ae-08f252ab1774', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('be430fb5-7ff3-580c-b978-26b9c2ef47d4', 'e9dc9fc8-f5e5-54f1-b1ae-08f252ab1774', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('3adfb3e3-327a-50cf-a180-80a67a2af421', '6c097502-ace7-5d90-98c1-0be74a84c430', '30acfb18-f20e-5601-b20e-94bb8a2e0259', 100, 'g', NULL), +('aee3cea4-f0af-5424-9128-26e4c401825a', '6c097502-ace7-5d90-98c1-0be74a84c430', '01619128-a551-5bcb-84a9-5f7ddf562db4', 1, 'miếng', NULL), +('7a85d9dc-bdd1-5983-b501-43224be45477', '6c097502-ace7-5d90-98c1-0be74a84c430', 'ea000042-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('807c71ad-b3c8-5b34-b99e-31f41aa5f2f8', '6c097502-ace7-5d90-98c1-0be74a84c430', 'ea000023-1111-2222-3333-444444444444', 1, 'trái', NULL), +('fa22a052-5214-54b5-8490-1ae1bec5b37b', '6c097502-ace7-5d90-98c1-0be74a84c430', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 2, 'trái', NULL), +('9f1ef413-9325-5190-b5d6-d48221f50f64', '6c097502-ace7-5d90-98c1-0be74a84c430', 'ea000010-1111-2222-3333-444444444444', 100, 'g', NULL), +('fe53471b-d17b-5a9f-8ab7-29e3848941b0', '6c097502-ace7-5d90-98c1-0be74a84c430', 'ea000055-1111-2222-3333-444444444444', 60, 'g', NULL), +('cf79c1a6-be75-5018-afd9-0658fd424929', '6c097502-ace7-5d90-98c1-0be74a84c430', 'ea000029-1111-2222-3333-444444444444', 200, 'g', NULL), +('482cab9d-06d4-5668-a636-aa35a3a338ea', '6c097502-ace7-5d90-98c1-0be74a84c430', '19626091-3a65-5951-ade1-37aa3e3b4a99', 80, 'g', NULL), +('720ed2fb-6e1b-590e-b223-c54933b58fe9', '6c097502-ace7-5d90-98c1-0be74a84c430', '521e5378-73d6-5fd7-9986-0e6b61836fdf', 20, 'g', NULL), +('5fb571b3-0c86-5a76-ac74-ef05cac10b25', '6c097502-ace7-5d90-98c1-0be74a84c430', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('f34cad35-f4e8-569f-82fb-0757164a5bd8', '6c097502-ace7-5d90-98c1-0be74a84c430', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 20, 'g', NULL), +('b1f7daea-b3ab-5da4-9e8e-5b61db047854', '6c097502-ace7-5d90-98c1-0be74a84c430', 'eed19aa4-8c15-56ec-bfdf-e344e248bdaa', 20, 'g', NULL), +('5acf4d87-dfee-522d-9ff4-8dc12351cfe0', '6c097502-ace7-5d90-98c1-0be74a84c430', '37a25c66-fb81-5bee-b99d-dd95a19baf07', 20, 'g', NULL), +('6294ab05-85e3-5f3d-b9c1-f2d9f3fe3ad2', '6c097502-ace7-5d90-98c1-0be74a84c430', 'f1d9e516-e993-5c9e-b28d-543a5ef27bff', 20, 'g', NULL), +('dd60d623-ea29-50a9-9e64-d00bfc3474a6', '6c097502-ace7-5d90-98c1-0be74a84c430', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('6505b56e-128a-5d75-8a62-54dfffdd73bf', '6c097502-ace7-5d90-98c1-0be74a84c430', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 80, 'g', NULL), +('f355fdfe-24ec-5b82-9cff-1d696c6cc13c', '6c097502-ace7-5d90-98c1-0be74a84c430', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('f7dd5b34-9764-5315-87fc-27f2c0b387f6', 'ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', '07cc7657-7a21-5e10-8817-8332930aa26d', 100, 'g', NULL), +('24bca546-3783-5ad9-ab4c-f36c790dba6a', 'ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', 'e8d9cc0e-110c-5121-bc75-b17a006b32ab', 200, 'g', NULL), +('bd0f8999-7511-55fb-a8f8-d45470ba719a', 'ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', '3fd538d1-5d38-51d6-96e1-09dfa1050c3a', 400, 'g', NULL), +('0482dcd3-9dc9-5cd1-9818-81d9cfd8bc9c', 'ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', '0778a2dd-5fca-5fad-bcd8-a25a2d517d7a', 100, 'g', NULL), +('fef7b039-56ac-5927-976b-9449a9121e72', 'ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', 'ea000049-1111-2222-3333-444444444444', 1000, 'g', NULL), +('b2132a47-9130-58cc-a6af-680191cbb900', 'ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', 'b4c89163-0b87-5b27-be11-5c7ae7909115', 5, 'cây', NULL), +('135b2dd6-cf88-5d51-90f7-92391dc56732', 'ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', 'dd711f5b-3ba5-5681-a8b5-05908f41e15b', 300, 'g', NULL), +('cddd40a2-8798-55e2-96b1-12615db4f491', 'ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', 'dd4fca8a-943d-5cb3-8ad8-f52fe15ee802', 30, 'g', NULL), +('71b24d4a-23a8-5b4b-906e-68a864a34219', 'ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('8d95f5d7-8ddc-533c-9333-6d81ab338fd7', 'ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('ba0fcf5e-a7ef-5cab-a52a-42672d851b31', 'ce0d5703-faa8-5b66-9a0c-ed0e09a29af6', '53bf142e-9f6b-52ca-835c-1706f796f2d3', 20, 'g', NULL), +('e1a5e2f7-3503-5ab6-80ae-7f801dff41c4', '403712c5-75a2-52a5-a52d-9ee102701c1e', 'c771f986-30a3-529c-8f78-de6152d7d118', 2, 'chén', NULL), +('aae8bc36-2f78-58c8-9c7d-0e9f55ea3caa', '403712c5-75a2-52a5-a52d-9ee102701c1e', 'ea000042-1111-2222-3333-444444444444', 3000, 'ml', NULL), +('5f4173a5-1fbb-5dc7-ae58-27e42cda4497', '403712c5-75a2-52a5-a52d-9ee102701c1e', 'b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 100, 'g', NULL), +('e35dd8c6-95f1-514c-a112-173863585ec5', '403712c5-75a2-52a5-a52d-9ee102701c1e', 'ea000007-1111-2222-3333-444444444444', 50, 'g', NULL), +('f54fc7c8-779a-522a-a8c3-6b628016ff5e', '403712c5-75a2-52a5-a52d-9ee102701c1e', '3c55cd24-57da-5e7c-85bb-cd07c591e357', 80, 'g', NULL), +('1cbc6c57-4f0c-568f-b2e1-596ecf571fe1', '403712c5-75a2-52a5-a52d-9ee102701c1e', '7cdbde6a-860f-50a6-81d2-eb0819f2b4b9', 80, 'g', NULL), +('b4b2e969-9f55-54fe-922f-6cb59396adb6', '403712c5-75a2-52a5-a52d-9ee102701c1e', 'ac87af18-4a3c-59e0-b3d1-f0d700a3c5d1', 20, 'g', NULL), +('204e2122-a06d-554c-8c68-9cf4dbdff2b0', '403712c5-75a2-52a5-a52d-9ee102701c1e', 'fb75726c-00ef-52cc-b385-7b0b88edeaf0', 30, 'g', NULL), +('1feaa3b3-8e98-599b-a551-17de5ee4836f', '403712c5-75a2-52a5-a52d-9ee102701c1e', '1f1dc666-1e72-59b6-8241-0d7d511d2332', 30, 'g', NULL), +('96df9d4b-b214-5a8a-bc96-059e31d8800f', '403712c5-75a2-52a5-a52d-9ee102701c1e', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('dd3d1eaf-c9c3-5115-8d44-a92d3236e589', '403712c5-75a2-52a5-a52d-9ee102701c1e', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('2c0b173b-ba80-5e60-bb2f-b0bf7e7ec2df', '403712c5-75a2-52a5-a52d-9ee102701c1e', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('9a01d0a4-c244-56a8-b8f3-53249d05e1bb', 'b452a058-66d1-51a6-8a82-7454c248ba76', '17d1cc25-d28f-5982-9247-c0e9ce4d3059', 150, 'g', NULL), +('58d14556-3a35-50f3-b4e5-20fcdbe5a087', 'b452a058-66d1-51a6-8a82-7454c248ba76', '6448be8c-54c1-5eec-acfa-7285f67d621a', 75, 'g', NULL), +('6788c474-8503-5313-a6b0-cb0eb5039fd6', 'b452a058-66d1-51a6-8a82-7454c248ba76', 'd5bb3bc9-81ca-5eaf-98ba-911a82fe6496', 75, 'g', NULL), +('08f06be5-0f28-5086-9a18-c93ff3c85d3f', 'b452a058-66d1-51a6-8a82-7454c248ba76', 'ea000004-1111-2222-3333-444444444444', 1, 'quả', NULL), +('f5625a5e-1e32-5eb6-9cd9-c7e6f2bc6515', 'b452a058-66d1-51a6-8a82-7454c248ba76', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 0.5, 'g', NULL), +('268289bd-9c53-5ec3-9034-d075d11fa70c', 'b452a058-66d1-51a6-8a82-7454c248ba76', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 30, 'g', NULL), +('461e322d-0e38-595a-8a54-8541ac4dbc7f', 'b452a058-66d1-51a6-8a82-7454c248ba76', '161eaeda-bf26-526a-90bb-5a4ffc7afffa', 15, 'g', NULL), +('9bdb2e8f-539c-56db-b7c1-98c912392669', 'b452a058-66d1-51a6-8a82-7454c248ba76', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 60, 'g', NULL), +('24b5f103-7b0a-5513-85db-4c41cbf4c78f', 'b452a058-66d1-51a6-8a82-7454c248ba76', 'ea000044-1111-2222-3333-444444444444', 80, 'g', NULL), +('915614d5-183d-552c-a10b-3e82b3b6245d', 'b452a058-66d1-51a6-8a82-7454c248ba76', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 20, 'g', NULL), +('cda6551e-5861-57d7-b3ba-a90825a37004', 'b452a058-66d1-51a6-8a82-7454c248ba76', 'e722cd30-5b76-551e-abb4-7d86b33495f0', 20, 'g', NULL), +('ed491e11-394a-5e20-ba1a-22d502942b5a', '7800bceb-cadd-53c5-9d4e-45d930f77c03', '044a2f65-e063-58be-8e18-cfb020a5d1f1', 80, 'g', NULL), +('fa6c6189-c11c-5697-a69e-fd8091a9e66e', '7800bceb-cadd-53c5-9d4e-45d930f77c03', '5716aac3-265c-5ee8-9969-1699861ecbe8', 100, 'g', NULL), +('e2e02f68-65b7-5735-95f4-7d14612be3a5', '7800bceb-cadd-53c5-9d4e-45d930f77c03', '7f4fdcbc-054b-579a-8128-b7cf5065eca0', 70, 'g', NULL), +('c0c7b802-93b2-5798-9a8b-717354e6e990', '7800bceb-cadd-53c5-9d4e-45d930f77c03', '189e4982-e150-59bf-aaf2-7227ccb9d61a', 70, 'g', NULL), +('4b190d6e-cb58-5f3d-a86b-ac6bc37472f2', '7800bceb-cadd-53c5-9d4e-45d930f77c03', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 60, 'g', NULL), +('4cd5e5d4-6222-51fe-9a00-074ce90a503d', '7800bceb-cadd-53c5-9d4e-45d930f77c03', '4d4f8f96-07d0-5c63-8d42-c1616901be27', 20, 'g', NULL), +('6d95cdf1-fcc8-58a3-8eeb-86b2e85168be', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', '9ee144ee-a29c-5570-b84c-07e4a25f2a2d', 200, 'g', NULL), +('54829385-78cc-55cc-940f-750a62744095', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', 'd32a496e-ef42-5675-a875-309785ea849f', 100, 'g', NULL), +('17277eac-a363-5c8c-97c8-8166050719da', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', '2a25ae01-c36e-588e-ac7c-2718a9e78c0f', 100, 'g', NULL), +('765d36f7-431d-58ad-92d2-1049ccab05e4', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', 'ea000042-1111-2222-3333-444444444444', 70, 'g', NULL), +('13d9f715-9bfa-538d-bd2e-baf01ce00d7a', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 10, 'g', NULL), +('39182a88-043a-5b9f-8b86-b96297b73bbd', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 5, 'g', NULL), +('c6e48e59-51e0-54f6-a2af-ec7668b81270', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('d0fc93b3-4f2c-5915-86c0-d6215b079ee0', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('c1ef977b-f36e-587b-97ee-22af25307548', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('550dc3db-8bba-5cc9-b0dc-c455f64953e4', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('12b50cac-96fd-5636-b17c-838637ed03b9', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('7f943845-0db6-5db0-b9d5-2e6ada638587', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('31674d1d-1663-59c2-82c5-ec2544bea31e', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('eafec7ab-b1ce-5e0a-b4ba-053a1bbb766d', 'e98b632e-bf6f-5b9f-8f58-f3f140d35928', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('9b2eab9d-2c02-5de5-9928-56fa90d08975', '0b66e956-7268-5afc-afb8-56723ecb47b9', '164aaefb-70ff-583d-b5af-4c6e262b64b8', 150, 'g', NULL), +('c569938d-1303-5076-aa6a-c616cb950f8e', '0b66e956-7268-5afc-afb8-56723ecb47b9', 'ea000042-1111-2222-3333-444444444444', 40, 'g', NULL), +('8a4b5bf4-3497-5411-ad07-58d974d997a0', '0b66e956-7268-5afc-afb8-56723ecb47b9', '1a62e92c-89eb-5875-b15c-b3129bff82f6', 40, 'g', NULL), +('98880b48-96f3-5112-9751-1b975584063e', '0b66e956-7268-5afc-afb8-56723ecb47b9', 'b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 0.5, 'trái', NULL), +('160399a5-a016-52db-9809-6a440c55a894', '0b66e956-7268-5afc-afb8-56723ecb47b9', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'cây', NULL), +('8aae0fd2-9b20-5801-9801-94bb5c8b6584', '0b66e956-7268-5afc-afb8-56723ecb47b9', 'f2d36159-4749-5c9c-95d7-e6307c768aeb', 80, 'g', NULL), +('a4fb19fc-2d95-522b-b7ff-1520c2fe7a92', '0b66e956-7268-5afc-afb8-56723ecb47b9', '60abf488-564e-56ab-9aaf-e1c416e24c2a', 60, 'g', NULL), +('9fcce0a6-49e8-5361-8728-faf74910fc18', '0b66e956-7268-5afc-afb8-56723ecb47b9', '52969432-55c1-5eb0-860f-4dbc888e85bd', 20, 'g', NULL), +('c0479e2c-e919-5608-82da-ad0f082de234', '0b66e956-7268-5afc-afb8-56723ecb47b9', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('290dfaed-7e90-52ec-b15d-5d9500268f60', '0b66e956-7268-5afc-afb8-56723ecb47b9', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('98b5745f-c021-5dff-8583-ae675d7c3aae', '0b66e956-7268-5afc-afb8-56723ecb47b9', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('70a9b5d1-b406-55db-b3da-f44a314bf159', '0b66e956-7268-5afc-afb8-56723ecb47b9', '55886a17-0140-5de3-95ab-dd355411cee0', 5, 'g', NULL), +('bdebf6a2-9dcb-5f0a-90c6-b5ee9d746a87', 'ff0245a5-8edb-5e75-8ac0-9979e463a05a', '97cd6d90-d969-52a6-b11a-ea9befdcb28c', 200, 'g', NULL), +('20be3c68-1cb8-50e4-9621-74a3df77ba37', 'ff0245a5-8edb-5e75-8ac0-9979e463a05a', 'cac62ffc-2dde-57f6-86e3-9e7fd28c2bc1', 200, 'g', NULL), +('7be2503a-bca5-5544-badc-6291033cc1d5', 'ff0245a5-8edb-5e75-8ac0-9979e463a05a', 'cd2e6540-c31c-5d4a-855f-a65611cd8816', 100, 'g', NULL), +('dbc7c859-78c4-55c4-bbfd-dfe3cffb791e', 'ff0245a5-8edb-5e75-8ac0-9979e463a05a', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('676358b3-e39c-55c8-b3ab-9866b372e8f0', 'ff0245a5-8edb-5e75-8ac0-9979e463a05a', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('d4f3a55d-7b82-5deb-8c37-e106b3b29b75', 'ff0245a5-8edb-5e75-8ac0-9979e463a05a', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('39a96899-8a4e-5d22-bb9e-00a53b29afcb', 'ff0245a5-8edb-5e75-8ac0-9979e463a05a', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('208f5ee3-c62a-5b92-b9ce-d9f271f85bae', 'ff0245a5-8edb-5e75-8ac0-9979e463a05a', '693eb4c6-fdb6-5ae8-a6fb-0d309e43b2ee', 20, 'g', NULL), +('05d052c9-fd32-5ae7-9517-039d2e2c681d', 'ff0245a5-8edb-5e75-8ac0-9979e463a05a', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('08ddaa23-76a8-5096-b832-d95cc78c7e0c', 'ff0245a5-8edb-5e75-8ac0-9979e463a05a', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('6ecb569c-8ed1-5c4b-8e13-c5a96e48b717', 'ff0245a5-8edb-5e75-8ac0-9979e463a05a', '55886a17-0140-5de3-95ab-dd355411cee0', 5, 'g', NULL), +('18788321-49fb-5c70-99db-b8666ef7a050', '84505af6-4e50-55c3-883e-4f7ea038b735', '4758fa79-916d-5bfe-a03c-98e65b993477', 100, 'g', NULL), +('81f63ce5-a5c7-574e-a174-98c7a0da228d', '84505af6-4e50-55c3-883e-4f7ea038b735', 'dc1189f0-95ab-52f8-a010-e29e2019e0ba', 100, 'g', NULL), +('554ccd1d-a95f-5500-89ff-2b676e024eb1', '84505af6-4e50-55c3-883e-4f7ea038b735', '3fd0596e-be17-56fa-9806-2c1837f95a77', 100, 'g', NULL), +('f586eccc-dbbd-54c8-a89d-a5847b8ac12a', '84505af6-4e50-55c3-883e-4f7ea038b735', '06e02b8f-0249-5e8b-a034-6b610d5b0a6a', 80, 'g', NULL), +('db4cf01b-6fc7-54e6-a03b-5bbb0b3b66c3', '84505af6-4e50-55c3-883e-4f7ea038b735', '9de3ef42-d1a0-5ecc-8ea3-85383c1cc033', 100, 'g', NULL), +('a9474341-b3f5-55d7-b224-4bfd030a8bcb', '84505af6-4e50-55c3-883e-4f7ea038b735', 'd7eb4972-ecc9-560e-b85b-13d6b80943ac', 3, 'tai', NULL), +('766884df-8e45-590c-9b7f-952bae3c3bb3', '84505af6-4e50-55c3-883e-4f7ea038b735', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('b3f6a9dd-b299-5186-8bf0-cc9d669af3ee', '84505af6-4e50-55c3-883e-4f7ea038b735', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('4d404e78-c949-568e-8e4a-3def781eb6c6', '84505af6-4e50-55c3-883e-4f7ea038b735', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('1ed76b40-1d24-5a87-abc7-99682f35849d', '84505af6-4e50-55c3-883e-4f7ea038b735', '97312907-8f92-540a-a6ab-64327b7bc0b4', 5, 'g', NULL), +('e70864db-08ed-580a-a586-65d929d3beb8', 'd9d83a2e-0858-54d4-aaf0-f04a4ec27972', 'eee18c13-5a9b-5096-8e09-5b87fb51fafc', 300, 'g', NULL), +('c397c5ad-951e-55d0-8f2a-bcb99a71e596', 'd9d83a2e-0858-54d4-aaf0-f04a4ec27972', '407dfc50-776f-5fcb-852c-37ae50d5cb15', 300, 'g', NULL), +('818e7312-b5cc-5d58-bf71-55b51e973872', 'd9d83a2e-0858-54d4-aaf0-f04a4ec27972', '86eda42e-989d-5587-8f1d-96a2d9416a85', 50, 'g', NULL), +('86346b09-a4be-59c7-a722-404ce5ad6b21', 'd9d83a2e-0858-54d4-aaf0-f04a4ec27972', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('51632299-ad1c-591f-a119-8208e72c9043', 'd9d83a2e-0858-54d4-aaf0-f04a4ec27972', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 2, 'trái', NULL), +('def20f73-6e59-572d-af40-4397e1562ab0', 'd9d83a2e-0858-54d4-aaf0-f04a4ec27972', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('b6f22a6d-a7ad-5d25-b3cb-13c753fe87ce', 'd9d83a2e-0858-54d4-aaf0-f04a4ec27972', '6fb22ddf-4831-5701-b354-e85eada109af', 5, 'g', NULL), +('77c42f89-7e71-5082-8b6c-2d439c5a0799', 'd9d83a2e-0858-54d4-aaf0-f04a4ec27972', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('a28e04d6-86a8-5b45-a758-d46b4e1b1065', 'd9d83a2e-0858-54d4-aaf0-f04a4ec27972', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('ff4bb0db-eac7-595f-b0e5-6a575dfaaab1', 'd9d83a2e-0858-54d4-aaf0-f04a4ec27972', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('77c72fdc-7f81-52aa-b552-882856419eb4', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', '18d08bf8-b23f-5018-b6a5-c43a9f60a81f', 1, 'con', NULL), +('777063dd-b091-5082-b072-deeb315616f1', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', '79057839-1f37-5822-8125-c087a0abc556', 300, 'g', NULL), +('6c17a39e-0389-56e8-b703-b842afa8a214', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('17833c9a-30d8-5698-a84f-f8a5dd2ae230', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', '2bfe1524-f2c1-5d3f-b8eb-8086143c75c9', 80, 'g', NULL), +('ea8daf92-dbca-521e-86d0-c989a8869c7f', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', '05df7a56-5cc5-571e-b259-2017f602f582', 100, 'g', NULL), +('a6d63929-8802-56d7-918e-cf05682692ec', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', '0f3b0684-99ea-51d8-99e8-c5d43811c5ac', 20, 'g', NULL), +('2cdf5588-146c-5f53-a80d-6e05a469a8cd', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', 'd0fbfe83-7811-5254-a74f-6fbf80b99480', 80, 'g', NULL), +('da8b9671-4b30-52c9-a1ef-059d7a910244', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('d0af9499-18c5-5b2f-8605-158366833768', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('1389ba4a-ecee-58a8-ab75-51e478203127', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('76fcce75-0c7d-5e31-afce-a9e6c651f2d9', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('18718ca7-cd79-5a4f-9ed6-42cf502832c4', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('f53320a7-162d-5044-86d4-2af3f12f16af', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('0266d20d-7f19-5ec0-876b-437261373fca', '9261ea9f-3751-54b7-b1d8-c5a02f92e6c7', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('eaaaac65-a2da-5540-8550-429457e220a5', 'bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', 'cf7fa287-4c62-5caf-8393-001028d03360', 350, 'g', NULL), +('f1f819d9-b613-56ad-bbdb-34c1b105860c', 'bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', '90a20918-0a85-5260-ad52-2299cf062d90', 100, 'g', NULL), +('2f32caa7-efd5-5fe5-a73d-0aefad03ed30', 'bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', 'f5c09025-f961-5d90-af3a-d4876989dd2f', 20, 'g', NULL), +('c6c792db-3b55-58b9-9cb4-7ae255540a20', 'bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', '24b4b9c7-685c-5a8d-baa3-e8f6b29947af', 0.5, 'chén', NULL), +('02f8e88f-5b17-54ac-9a89-f5b771243f1d', 'bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', 'dd37a043-70dd-5ccb-be57-1d629be323ab', 1, 'trái', NULL), +('2cf30708-e1e4-55b8-93b9-ee70400912bb', 'bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', 'cc58b9c3-452d-5b17-8bbd-322a66ce363e', 30, 'g', NULL), +('f08a5a65-a9aa-505c-b9fd-a1f4aeb45919', 'bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 2.5, 'g', NULL), +('3576d987-d7d8-57ee-9276-a33296dab4d8', 'bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('4b05d21d-909c-5f35-a210-7890a16e65b9', 'bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('98cd999d-cca5-598d-b275-3b226bf0ec35', 'bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', 'ab284a6b-7b7a-574f-9025-41ea4f8cbd65', 80, 'g', NULL), +('0994297e-d47d-536c-8ea9-eff3630e34a5', 'bd2f11c5-bdf4-5ba9-ba3f-0c1221d7af7c', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('2d5df119-3b30-5def-a3b8-afd091faad3d', 'f2a28469-3f28-5525-bf09-421db81c2af5', '1718fb1c-26f3-5881-bec7-261f775eee52', 0.5, 'cái', NULL), +('52aa5597-34bc-5382-8f7d-d0a46c32478f', 'f2a28469-3f28-5525-bf09-421db81c2af5', 'cfae2cf3-0d64-5f07-8f8c-ccc5a9dba220', 200, 'g', NULL), +('2c69f935-5d3d-5f75-8b1b-d7ca570e1d1c', 'f2a28469-3f28-5525-bf09-421db81c2af5', 'e94fcd73-2279-55bf-8ecd-8a5408f6a1cb', 500, 'ml', NULL), +('abfe20da-8e20-524c-af08-a49d2df25315', 'f2a28469-3f28-5525-bf09-421db81c2af5', '67fc3363-196c-5580-89ad-acbd4fd34a0a', 1, 'cây', NULL), +('4a96f3ab-855e-53f8-b8b3-b27f56d5a6f7', 'f2a28469-3f28-5525-bf09-421db81c2af5', '17dae5f7-2ae7-503b-b278-03c0de0ab8a9', 0.5, 'tai', NULL), +('3d0795fa-5629-5395-948b-ae3bfe3eabde', 'f2a28469-3f28-5525-bf09-421db81c2af5', '1f1dc666-1e72-59b6-8241-0d7d511d2332', 15, 'g', NULL), +('e66b1c34-d094-5278-b6c0-a2f118aa6763', 'f2a28469-3f28-5525-bf09-421db81c2af5', '290b647d-78f3-5dec-b039-e4e4f2af6146', 1, 'trái', NULL), +('086b99c1-1bb9-5272-82f3-136978b226d6', 'f2a28469-3f28-5525-bf09-421db81c2af5', 'de451944-0e5f-5b75-9b9f-b4e4173c6821', 10, 'tép', NULL), +('ad8e4aee-a383-5a5f-ab22-3f055702e4d7', 'f2a28469-3f28-5525-bf09-421db81c2af5', 'f9d1c4ce-6457-575a-9bed-5d716044412d', 10, 'củ', NULL), +('23334b18-cc74-5a99-99f9-0887c1ea2631', 'f2a28469-3f28-5525-bf09-421db81c2af5', '82433693-c8bf-52c7-953d-94567db3cb05', 5, 'trái', NULL), +('5eea0212-0c6d-5feb-b52e-6427495ef31b', 'f2a28469-3f28-5525-bf09-421db81c2af5', '4d9c385b-f753-5778-be03-831241b8d5b7', 3000, 'ml', NULL), +('1fb524dd-8262-52d7-9cfd-6af4b2241e40', 'f2a28469-3f28-5525-bf09-421db81c2af5', 'b94f8a61-5f4c-555c-a487-49b9a8ef4412', 80, 'g', NULL), +('6c9b3408-8654-5e28-a045-7e746eb10f50', 'f2a28469-3f28-5525-bf09-421db81c2af5', '4fdd6404-34db-594e-bc63-d22458563d72', 20, 'g', NULL), +('fdaf5fce-3f5e-5f0c-9ef3-e3424f541192', 'f2a28469-3f28-5525-bf09-421db81c2af5', '4bcfb855-3d4f-5fbc-80ef-9cbdad9b18a3', 80, 'g', NULL), +('c653613d-0868-55af-944f-71bc2811f30b', 'f2a28469-3f28-5525-bf09-421db81c2af5', '152109fb-25ac-55cc-ad5a-341010f2bb98', 20, 'g', NULL), +('e5e94408-befa-54d6-8ebf-5825d4d4ed81', 'f2a28469-3f28-5525-bf09-421db81c2af5', '7d02ecc5-446a-5d94-a1cc-f2945969389b', 5, 'g', NULL), +('a41ccce6-29ac-5eca-8218-20b292ff7562', 'f2a28469-3f28-5525-bf09-421db81c2af5', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('08f946cd-3ef1-59b9-b5e1-0e617d1c35bd', 'f2a28469-3f28-5525-bf09-421db81c2af5', '300b9a61-bd25-5035-8b3d-f3b094c3dca7', 20, 'g', NULL), +('2d8381e4-6ee9-5cd3-868c-4aaa79677213', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', 'b871d266-a741-5a20-9fa7-215699270826', 500, 'g', NULL), +('2d3da039-3dc6-57e0-9694-0b2884194856', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', '79057839-1f37-5822-8125-c087a0abc556', 200, 'g', NULL), +('5f0d2d10-4f30-5a91-9df1-57b61f211355', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', '48a93238-8bb7-5c60-832b-8312ae4b2c08', 100, 'g', NULL), +('9ac53ccb-ac78-5bf1-b3a5-a23fa34fd2fb', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', '99a78ed3-82eb-5862-8011-e56cc4611f01', 45, 'g', NULL), +('44866a92-4c20-542a-9e50-1316c5642aa8', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('b7ecdaaf-5ec5-5bde-9661-061803a0f103', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'cây', NULL), +('73afe31d-5de6-58c3-89b9-4420a7846ee9', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 15, 'g', NULL), +('a393e7ce-b546-5794-a524-5d3753d0c619', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', '2d2141b3-b474-5126-9f88-857d504c7d16', 20, 'g', NULL), +('d926d938-bffc-5a15-a5b7-ea4c9ff8562b', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('19d387c3-2685-58e6-b872-7681b41d8463', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('e15260c2-63fb-59e6-b78b-9823d0f4a9ba', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('a9a2731a-b3de-55ef-b138-39029ec41ff5', 'ddc54ad5-3a06-5ea5-a600-3a6382f8e1d9', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('e5f3f16e-fed0-56fa-869c-12a0e8b9d297', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', 'e3f849a2-d7d6-50e3-87dc-d520aaa212dd', 1, 'chén', NULL), +('a856fbaa-fb09-5d4e-9980-e4c78fde859b', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 100, 'g', NULL), +('187fd5d3-638e-52d9-abcd-83203c2ea975', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', 'a498fd16-14eb-561e-b0d2-c22aea3d473c', 120, 'g', NULL), +('aa498165-6302-573b-b8fb-b7d20ecfbd5d', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '677e06b4-2913-50ac-9d18-1a37804ebc1a', 0.5, 'cây', NULL), +('e878e54b-921f-558c-8be4-35d84389a756', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '9bd7d8df-ac2a-57c0-a1a7-4ef831253120', 3, 'cái', NULL), +('bd84cafe-19c0-5b10-b58b-a38284ace564', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '78a5e6aa-6f32-5e6b-bfd3-d55d6472a17f', 80, 'g', NULL), +('9ed0dadb-7d83-5ca4-93e9-52d35ab991b9', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 1, 'g', NULL), +('6a1d9e67-f47b-5048-88b3-ab7f5641ce8b', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('a997b99e-271a-50ae-8a70-053f08174a20', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 5, 'g', NULL), +('863ed648-c6bb-5a0e-89d7-5b24289738d2', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('275228da-559f-5c6a-b4a2-92b9f55758b2', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('8d4b213e-f9cb-567a-bfd6-36cd26a33a38', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('454d058f-edbb-5a28-9f9a-d1358b2d156d', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '0f91c86e-fc36-56ad-a708-373c3f07fb0e', 60, 'g', NULL), +('8ad321f7-1eda-5187-bbd7-bc1adf05a687', '256e29bb-5c21-5c33-a0f4-b0eb58c21e8c', '161eaeda-bf26-526a-90bb-5a4ffc7afffa', 20, 'g', NULL), +('0ca92dae-83c8-51b6-b7e2-14adbbdf8677', 'e0a2d1dd-df1a-57c2-a8f5-16d7ca13025f', '237b96b2-13a2-5b46-a4b6-48ff36e81ba6', 1, 'g', NULL), +('8d8b4562-047a-5f53-8d33-b42ec170cfcd', 'e0a2d1dd-df1a-57c2-a8f5-16d7ca13025f', '0146cccc-4a1e-5824-b2e3-6c58d727a317', 10, 'g', NULL), +('b0791962-04f9-54f7-b02f-37b335e359f4', 'e0a2d1dd-df1a-57c2-a8f5-16d7ca13025f', '84973830-3489-56c7-a4af-b86965f81296', 20, 'g', NULL), +('f1448455-762d-54d9-a6eb-e25d2ee64562', 'e0a2d1dd-df1a-57c2-a8f5-16d7ca13025f', 'e91f0f61-d618-5236-813a-f96546c23e55', 20, 'g', NULL), +('27ca9aa0-338d-5ddd-9432-6e4ca25379e0', 'e0a2d1dd-df1a-57c2-a8f5-16d7ca13025f', '167bb0c4-4215-53b7-ab97-e97744904e73', 20, 'g', NULL), +('dfca83f4-2eb3-5a5e-81c6-45bcd1912b28', 'e0a2d1dd-df1a-57c2-a8f5-16d7ca13025f', '99157107-8cbc-5715-97f1-620017377993', 5, 'g', NULL), +('427750fb-0b73-53ec-91a1-5f8ae9a39c9c', 'e0a2d1dd-df1a-57c2-a8f5-16d7ca13025f', '06f61a87-5c83-54e4-83f8-ec791b7b5ebd', 1, 'đọt', NULL), +('55fee1c7-8cfe-55c3-ae02-d8202f3da15f', '0133efe5-d5c9-5f7e-811a-cf1f6c91efb8', 'ea000042-1111-2222-3333-444444444444', 1, 'củ', NULL), +('621e3b17-61a9-5c21-9154-0460c4331b15', '0133efe5-d5c9-5f7e-811a-cf1f6c91efb8', 'e885a4ab-d856-5b71-9312-11c823ebcb84', 2, 'củ', NULL), +('fc6d80d2-b020-5d72-92fb-aa08fa0e0175', '0133efe5-d5c9-5f7e-811a-cf1f6c91efb8', '62c5897d-1a02-5106-8a32-ec9fa5ed3703', 50, 'g', NULL), +('24aa964f-2df5-566e-92c7-e90fc67c8ab2', '0133efe5-d5c9-5f7e-811a-cf1f6c91efb8', 'ea000022-1111-2222-3333-444444444444', 1000, 'ml', NULL), +('54900e5b-6c3e-568e-9cac-421d69cf8a01', '0133efe5-d5c9-5f7e-811a-cf1f6c91efb8', 'e8fd0bba-5a75-5ef8-b71f-30f7e810ad9d', 2, 'cây', NULL), +('b246cbde-a004-5868-9d2e-0906961d0197', '0133efe5-d5c9-5f7e-811a-cf1f6c91efb8', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('a9af4d06-45d6-5126-b0ca-df670817ba80', '0133efe5-d5c9-5f7e-811a-cf1f6c91efb8', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('48fb5af7-4493-523d-8e7c-910988b6a077', '9fd67b55-c8f0-52e2-9689-0bc8c05e1014', '342ef09b-cc0c-515e-8d6e-b8f45e39daf0', 2, 'cây', NULL), +('84241cef-60d6-59c9-a8f6-8ad884738770', '9fd67b55-c8f0-52e2-9689-0bc8c05e1014', '19626091-3a65-5951-ade1-37aa3e3b4a99', 100, 'g', NULL), +('29d9a47a-6b2f-5727-b20b-3fb04b954145', '9fd67b55-c8f0-52e2-9689-0bc8c05e1014', 'ad701cb7-ec79-5b26-8866-792eba06a7b3', 50, 'g', NULL), +('836c58b8-b342-58fe-9904-bdc801b4256a', '9fd67b55-c8f0-52e2-9689-0bc8c05e1014', 'ea000023-1111-2222-3333-444444444444', 1, 'trái', NULL), +('017d18cf-a058-5220-bffc-cff309bd3073', '9fd67b55-c8f0-52e2-9689-0bc8c05e1014', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 1, 'trái', NULL), +('f6d76957-f720-5ec5-b49f-2085cd3fb163', '9fd67b55-c8f0-52e2-9689-0bc8c05e1014', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('f4fb715f-6def-55ea-ae38-668170d29f9a', '9fd67b55-c8f0-52e2-9689-0bc8c05e1014', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('04e04bdf-0ace-53ce-b6a8-4c19111eaa9f', '9fd67b55-c8f0-52e2-9689-0bc8c05e1014', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('b63c568e-9540-5c86-92df-75e45237d7fd', '9fd67b55-c8f0-52e2-9689-0bc8c05e1014', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('559ac25a-4393-592c-9201-c1be10f84357', '7ccdda12-0ace-5ce3-9f99-af4fc7b4c6a7', '740a78f2-15f7-5b73-81b6-56c0eba72bcd', 300, 'g', NULL), +('b84d42aa-edf3-5002-86bc-233762b692b2', '7ccdda12-0ace-5ce3-9f99-af4fc7b4c6a7', 'baf251af-aa45-500a-9dc1-375cb6d07c6d', 100, 'g', NULL), +('bc38b56e-0c64-5f09-9c7c-661470969140', '7ccdda12-0ace-5ce3-9f99-af4fc7b4c6a7', '1b71e611-4ca2-51cb-8fa6-2abbf67dbbd9', 100, 'g', NULL), +('d7e591a9-f59b-50ed-bc50-b8b97b9b157d', '7ccdda12-0ace-5ce3-9f99-af4fc7b4c6a7', '19626091-3a65-5951-ade1-37aa3e3b4a99', 150, 'g', NULL), +('5da58559-a63f-59ce-a14a-7cd78213cc94', '7ccdda12-0ace-5ce3-9f99-af4fc7b4c6a7', '26e4894f-a852-5ef0-9041-c6516a7ca1f4', 30, 'g', NULL), +('1290fdab-03a5-57c9-a677-b044851ab327', '7ccdda12-0ace-5ce3-9f99-af4fc7b4c6a7', '43efa8ab-7c71-53cc-a615-e7fcd2953d59', 150, 'g', NULL), +('08a11caf-84f6-539f-ae58-81bfb3c9d71c', '7ccdda12-0ace-5ce3-9f99-af4fc7b4c6a7', 'cff07683-f25b-5db5-b0a1-fadf7016f351', 45, 'g', NULL), +('e2f4bd9c-41bd-563e-9fbd-f872d3f5ef63', '7ccdda12-0ace-5ce3-9f99-af4fc7b4c6a7', 'a73c9fa5-ca63-50ea-a11e-bad792c9c9bb', 30, 'g', NULL), +('cac6a4f3-6beb-5997-8cc2-f4ba345f7032', '7ccdda12-0ace-5ce3-9f99-af4fc7b4c6a7', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('c8cdaf1d-a386-5a91-838a-a58109df9730', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', 'b2692899-d6be-5d7e-a475-1b1ca2255236', 500, 'g', NULL), +('4945a485-723d-56a3-a843-4063a394c76f', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', '9cbabcae-f6ae-5631-8508-d53587721693', 150, 'g', NULL), +('35ec9bb0-5899-503a-bb15-4e0774065954', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', '5bab5c87-2a0f-5c63-9ac3-8ef89d682fcf', 100, 'g', NULL), +('7ce96e29-df6b-5ddb-baf8-110f2c15ef70', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', '75429ba4-6e63-5750-98dc-0047cf458b03', 1, 'chén', NULL), +('b4fefe29-e7b9-5fc8-8109-9b3896644a28', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 2, 'trái', NULL), +('24516b62-02ed-5c2f-be3c-a30b7aac18d5', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', '8a216df6-d053-5fcd-8d46-92cb41669b35', 2, 'trái', NULL), +('3880877f-2932-527c-b124-5e34f13e74f1', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('ac0b485f-3ea5-5fbc-823d-82a9a74ebcb3', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('0a814b53-b114-5c53-9e67-7ed8f53a164f', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('395b6151-2c4c-532a-bd58-88a6cc341254', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('32054857-92bd-537c-99d9-ea01ed04e968', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('23b2211f-e0b7-5b52-b544-7c52a0064428', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('77e3a48c-90ca-5591-a1ee-11b610a8c5cf', '40779cf0-ad96-5e9e-a5e5-bf32dc8ee1bd', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('f9b996a7-e6ec-5a4c-9024-ec8b4b131512', '5d874140-5e8a-5fce-9428-f1e586404add', '40f7e0d6-c2c3-5b7f-83d4-6f980ccdf46d', 300, 'g', NULL), +('7ff64603-1567-5120-8aec-1630d17e44f0', '5d874140-5e8a-5fce-9428-f1e586404add', 'b8724dc0-7281-5b6a-b7f9-3c281e3fae8e', 50, 'g', NULL), +('fc27e90e-7f9e-551f-a996-5609f9c87ad2', '5d874140-5e8a-5fce-9428-f1e586404add', 'd3fe4466-cc31-5399-a49c-6b0829a6ca56', 50, 'g', NULL), +('157febe4-04cc-5468-a635-cb9990ecb9ba', '5d874140-5e8a-5fce-9428-f1e586404add', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('2139d63a-32e5-56c6-9797-5ab9c17def50', '5d874140-5e8a-5fce-9428-f1e586404add', 'f2da5201-befe-5315-a03b-119ab86c15d8', 15, 'g', NULL), +('26f74d4f-24ab-5d93-97f5-d24f2e884940', '5d874140-5e8a-5fce-9428-f1e586404add', '99157107-8cbc-5715-97f1-620017377993', 30, 'g', NULL), +('31ac62bd-b95a-5a64-8c82-3ae9de082b51', '5d874140-5e8a-5fce-9428-f1e586404add', '510c2a6d-805a-57d5-a85e-b6c1ab73b1cf', 15, 'g', NULL), +('9f0ff8b4-5db8-595b-b4da-070734564fd5', '5d874140-5e8a-5fce-9428-f1e586404add', 'da18f0fd-cf75-58fd-a651-8336ecf2f4da', 10, 'g', NULL), +('035f3940-6046-5df7-a3f0-c48569b56e08', '5d874140-5e8a-5fce-9428-f1e586404add', 'e885a4ab-d856-5b71-9312-11c823ebcb84', 100, 'g', NULL), +('07a935f4-29d6-587a-b982-670caa6b7d1a', '5d874140-5e8a-5fce-9428-f1e586404add', '2094b9c8-eb1a-5c56-bae9-effbc837baab', 20, 'g', NULL), +('03a26837-bee3-50dc-935b-0893c7902c2e', '5d874140-5e8a-5fce-9428-f1e586404add', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 80, 'g', NULL), +('c6b60c93-7ade-5f1c-8d57-3a678d142735', '5d874140-5e8a-5fce-9428-f1e586404add', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('69c606d8-93a8-5a0b-b3d9-0fefa3fe760a', '5d874140-5e8a-5fce-9428-f1e586404add', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('e66cb595-91f5-54f7-84bf-b2673c2f025a', '5d874140-5e8a-5fce-9428-f1e586404add', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('22f17e21-e634-5f59-bea0-8fc5f7c39654', '5d874140-5e8a-5fce-9428-f1e586404add', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('0be31238-620a-5840-81b8-496ee29e55d5', '799d066a-9c4a-5453-a77a-6f7f999d4c80', 'e491ff75-37b2-57af-b3bc-75300ef2a92e', 500, 'g', NULL), +('faafa46e-874d-5410-a001-197c9e210ffb', '799d066a-9c4a-5453-a77a-6f7f999d4c80', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 3, 'trái', NULL), +('4374cbfc-9879-5ce1-b5a5-b5ed95829eb2', '799d066a-9c4a-5453-a77a-6f7f999d4c80', '99a78ed3-82eb-5862-8011-e56cc4611f01', 30, 'g', NULL), +('a988770b-44c7-571c-b3f0-85ca185bf30e', '799d066a-9c4a-5453-a77a-6f7f999d4c80', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 2, 'trái', NULL), +('bef53a7f-8b97-5983-866d-78169055968b', '799d066a-9c4a-5453-a77a-6f7f999d4c80', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'cây', NULL), +('7708c9ab-ca51-59ba-8d0d-a252feb1bc61', '799d066a-9c4a-5453-a77a-6f7f999d4c80', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('81ead39d-c83d-5df7-8c39-6239f3fc40c1', '799d066a-9c4a-5453-a77a-6f7f999d4c80', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('fc0807ad-f2f6-5591-a985-2c6f114a9a78', '799d066a-9c4a-5453-a77a-6f7f999d4c80', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('da5bea99-eb8f-5421-9c08-ba25b015606c', '799d066a-9c4a-5453-a77a-6f7f999d4c80', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('d22ce294-5ea4-509e-b60c-4e68f4205c99', '799d066a-9c4a-5453-a77a-6f7f999d4c80', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('8a35a2de-0d73-53a4-bdd3-d12cac5e87c2', 'a704a5aa-0912-55ef-a123-16c391053e83', 'e491ff75-37b2-57af-b3bc-75300ef2a92e', 400, 'g', NULL), +('ed6a5b6f-5c1d-5aaa-a4ad-16caa5fe861d', 'a704a5aa-0912-55ef-a123-16c391053e83', 'b73ed546-00f3-559b-a3d1-231b45f961ed', 300, 'g', NULL), +('dd5f85de-471c-5f0f-aac4-695e4c3a5377', 'a704a5aa-0912-55ef-a123-16c391053e83', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 1, 'trái', NULL), +('bc34dd21-a949-57e5-9267-36747b77890c', 'a704a5aa-0912-55ef-a123-16c391053e83', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('d54b5edf-83b2-5f5a-a3d9-dbcbbab3d778', 'a704a5aa-0912-55ef-a123-16c391053e83', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('34de74ae-1700-59a9-8eed-d86c7d14403d', 'a704a5aa-0912-55ef-a123-16c391053e83', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('fa976d3f-adcc-5b7f-a1a7-b703166aaadb', 'a704a5aa-0912-55ef-a123-16c391053e83', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('7de86860-964e-5884-9bb6-cc66fa84ec5f', 'a704a5aa-0912-55ef-a123-16c391053e83', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('9be97de3-86d2-56cf-8e6f-54fdfeab6ff0', 'a704a5aa-0912-55ef-a123-16c391053e83', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('e7899b8e-ed79-5632-ad6c-36a8c9629d6d', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', '74679030-9d8b-5fdb-b4d8-b0aac30f3fa0', 4, 'con', NULL), +('b2d90313-6d69-58f4-bfa2-5527083a0699', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', '5f9fca18-73fd-511b-8e4b-c72573da5510', 150, 'g', NULL), +('9e233274-ae8e-5525-b812-eaae0f2eaa29', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 0.25, 'trái', NULL), +('63d1b047-4c39-5a4a-9cdc-9800f6949c11', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', '403fd5a5-d451-51ae-9d43-745f3c1daeb0', 15, 'cm', NULL), +('308e1656-9c18-526a-bb5f-1d8e70dc6e88', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', '8a216df6-d053-5fcd-8d46-92cb41669b35', 2, 'trái', NULL), +('eb177462-7406-5cae-b2df-e37774ccc27e', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', '41c6177e-4ab7-5db4-b88e-95911b643501', 2.5, 'g', NULL), +('ba97562b-69c2-5f0d-b129-827877b3d061', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 15, 'g', NULL), +('01c837a0-d7ab-5171-965d-8261f41f63a7', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'cây', NULL), +('35551c59-7ab2-5492-864e-83584832daa9', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('46fbe06b-a457-5adb-a4d5-bc92ec1ef50a', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('d32448ed-2f86-53b6-9b66-6493d98e9f79', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('52c8ff35-043a-59d9-839e-5f1c3da9b432', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', '8aefd378-92f5-575b-8801-511d610bb7f6', 80, 'g', NULL), +('62942025-e383-5f59-8c03-2b8091731dad', '84f0e957-9fa4-5ab7-8199-a9d891dffcec', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('287b3d17-8a58-5357-b179-b1ee85c0259a', '62d233d9-a5ee-5989-9e27-5a1b84bbffd0', '2680c5bb-b9cb-5402-a86c-fe3b8f7148ca', 300, 'g', NULL), +('9d8e8ec9-2104-5566-874d-b1bd2e4eb003', '62d233d9-a5ee-5989-9e27-5a1b84bbffd0', '76ef9879-a623-5ca5-97cd-98f3b8c1ec5c', 400, 'g', NULL), +('2971e7dc-2125-524a-854b-ba217a968aa4', '62d233d9-a5ee-5989-9e27-5a1b84bbffd0', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'nhánh', NULL), +('d0313f11-4111-5c11-ae87-83e421b06755', '62d233d9-a5ee-5989-9e27-5a1b84bbffd0', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 2, 'nhánh', NULL), +('0439ed53-a6dd-57c4-91c5-0996f2918745', '62d233d9-a5ee-5989-9e27-5a1b84bbffd0', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('8d80e61d-1a0e-5c7a-bff8-f7d17f2f1520', '62d233d9-a5ee-5989-9e27-5a1b84bbffd0', 'ea000034-1111-2222-3333-444444444444', 30, 'g', NULL), +('a1d2434f-2284-535a-aa31-42bc96f41114', '561309ed-266a-54bd-b7b9-8faaf23f3970', '367f8ca2-1506-5d82-82a6-bc44c21508a3', 200, 'g', NULL), +('c0f3a9d7-523d-5884-a532-c40a368d3d99', '561309ed-266a-54bd-b7b9-8faaf23f3970', '76ef9879-a623-5ca5-97cd-98f3b8c1ec5c', 200, 'g', NULL), +('398ace2b-35bb-5dfc-96bf-3863d668f1c0', '561309ed-266a-54bd-b7b9-8faaf23f3970', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('ac4325ae-ac45-5c77-9b50-56826199d1ee', '561309ed-266a-54bd-b7b9-8faaf23f3970', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('cdf049a4-270b-5fda-aa24-00e2a80eea4c', '561309ed-266a-54bd-b7b9-8faaf23f3970', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('975f0c10-00f3-5cc7-9d87-d2c2e59e5799', '561309ed-266a-54bd-b7b9-8faaf23f3970', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('e8e51921-c2a2-5be1-8ce2-4fc5171eadb2', '561309ed-266a-54bd-b7b9-8faaf23f3970', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('0f84ee79-8ff3-5b87-bd96-cc1b071bcc7a', '561309ed-266a-54bd-b7b9-8faaf23f3970', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('f2ee52d4-f90c-5b21-a3ec-5c0aa641702e', '561309ed-266a-54bd-b7b9-8faaf23f3970', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('aab758c8-e76d-5aa4-9dc3-40f0816bce0a', 'c2247de1-f484-516f-be7b-03b76b2e5339', '197fd433-4561-5175-9f04-35ba4ae89b68', 0.5, 'con', NULL), +('e0d153e6-4be8-57d3-8e77-7176689bea23', 'c2247de1-f484-516f-be7b-03b76b2e5339', '76ef9879-a623-5ca5-97cd-98f3b8c1ec5c', 200, 'g', NULL), +('5a6c2e1e-ee04-584e-a734-573fec2b8e11', 'c2247de1-f484-516f-be7b-03b76b2e5339', '94f84007-456f-5bf9-b762-d679cbbe7d0f', 150, 'g', NULL), +('3988e66b-55aa-56d5-88f5-46aead096cd5', 'c2247de1-f484-516f-be7b-03b76b2e5339', '60318bd8-9102-50a4-9b01-1fca66851017', 1, 'trái', NULL), +('10cabc3e-f00a-5ad7-9b19-9075344696e4', 'c2247de1-f484-516f-be7b-03b76b2e5339', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('05203f99-bd64-5f39-a9d6-d371eee099b3', 'c2247de1-f484-516f-be7b-03b76b2e5339', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('7d6b0eb7-e253-5600-973a-916fe99ba53c', 'c2247de1-f484-516f-be7b-03b76b2e5339', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('b6d06020-3c7e-5fa6-bee3-a0e4750ce878', 'c2247de1-f484-516f-be7b-03b76b2e5339', '641f1206-7440-54ad-ad8d-709933c7917e', 80, 'g', NULL), +('ebe9d95b-0a9d-5f23-a02b-3bc0a5bfbb85', 'c2247de1-f484-516f-be7b-03b76b2e5339', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('68638054-65b2-5d72-90d0-4500b3d7c15b', 'c2247de1-f484-516f-be7b-03b76b2e5339', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('76f8784e-412d-56c6-bca8-fb83b29cc7f6', 'c2247de1-f484-516f-be7b-03b76b2e5339', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('50370488-8e58-5d8f-a17c-f23a9971de78', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', '6d4a293e-108f-5937-be85-6a3a2c4bba88', 400, 'g', NULL), +('af4e9dfc-0557-58cc-9039-adbbf5f134cd', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', 'e885a4ab-d856-5b71-9312-11c823ebcb84', 1, 'củ', NULL), +('46ef2eb0-7dd6-5f2d-96f3-712273885194', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', 'fb2a516d-41a5-552e-aa24-b9b25b2d2796', 100, 'g', NULL), +('81c8d44e-dc10-57bc-aedb-eda0458b3227', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', 'ea000042-1111-2222-3333-444444444444', 30, 'g', NULL), +('c594e221-7180-59a8-92e5-4ec46ac25548', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 20, 'g', NULL), +('847bfbf2-d617-5d29-b8bc-4e9ee739df0a', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', '646b8a0b-5634-5896-a217-b82ebcbf30f6', 5, 'g', NULL), +('0230cb74-aa0e-58d0-9ed0-8b18fea19117', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('927d8c7c-3e4f-5b53-a03b-0d370353fe67', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('08b870ff-f131-576e-b064-7321798450c7', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('e31c11e0-b230-5386-8fd1-b707259796f3', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', 'ea000005-1111-2222-3333-444444444444', 5, 'g', NULL), +('2a74d637-f0d3-5f56-9b98-6b50defabc20', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', '1e27539b-7e79-5894-89aa-45939cd64a93', 20, 'g', NULL), +('70512212-6536-59b3-b280-d5c30d3d62e2', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('b3934bc1-757c-5f54-995c-431e31921e3e', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', '1ddf13c6-e4f7-5042-a801-62cb588e2dbd', 5, 'g', NULL), +('234e52cc-4375-550e-931d-3267541ba9a1', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('0546ebbd-2ac1-54e9-b33e-1113ed01a0e5', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', '10205986-c894-59e8-9054-829ba8404a76', 80, 'g', NULL), +('a39c519b-0a4f-5280-81fa-c5d0605270ec', '4a9a7f1d-ec23-5b71-b9d8-33253bc87113', '74f1fb38-e73c-54d8-bda6-2a9354f7487c', 100, 'g', NULL), +('8d57ac0a-1253-5e76-abac-678a77954d5f', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', '0e1e243f-23dc-56d2-98a6-813333856f7e', 300, 'g', NULL), +('3563b760-693a-5740-b7ce-81fca2b46866', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', '204d133a-f19b-5613-ab44-417f2c78b984', 100, 'g', NULL), +('1a1e48a8-6daa-5589-940b-bea717e9343e', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('28d2970e-14c3-5326-9383-1ee05f0a0094', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', '90d8776a-ba41-53e0-9595-96cc5e769e32', 0.5, 'trái', NULL), +('44b326e0-20e7-5acf-9ff2-9d12fe7860fe', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', 'b82b90fe-4236-581e-81dc-404daa4cd0eb', 1, 'chén', NULL), +('68af1116-54b9-5788-871d-7176d054824d', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', '99a78ed3-82eb-5862-8011-e56cc4611f01', 15, 'g', NULL), +('75660538-7361-594f-9d66-e53ff1728c01', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('678a4310-6712-5041-9d68-f45c810ae123', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', 'ea000055-1111-2222-3333-444444444444', 30, 'g', NULL), +('24b2b386-af74-56c2-b032-823d7f136846', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('775e183b-6396-5a78-a5be-322d311c6934', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('b5ef9b8d-60a6-5064-88c0-49dc074bf51c', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('d533433c-c9c3-5dff-9d44-91334a4a2c59', 'c04e3fbb-b3e9-545f-898b-be78d9bc5d8c', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('a5430f7f-6f71-5509-96e1-4f0ec7786aef', '9d518707-695f-589e-9053-fbb4f680aab4', '5879d8c9-2dd4-55c2-bd85-82652bd6e510', 250, 'g', NULL), +('bc2f43d4-db43-5072-ab23-748a05dc8032', '9d518707-695f-589e-9053-fbb4f680aab4', 'ab2202d8-365f-55db-9a4d-b56e64c5f66f', 0.33, 'củ', NULL), +('21c870e1-0252-57b6-be3a-03679bb78ad7', '9d518707-695f-589e-9053-fbb4f680aab4', 'd3fe4466-cc31-5399-a49c-6b0829a6ca56', 0.33, 'củ', NULL), +('fc9dd593-3d77-52e9-ba1c-a33a7e0cb322', '9d518707-695f-589e-9053-fbb4f680aab4', 'b8724dc0-7281-5b6a-b7f9-3c281e3fae8e', 0.33, 'củ', NULL), +('e4dc2bdd-5f46-56cb-9d3b-129b94a3be13', '9d518707-695f-589e-9053-fbb4f680aab4', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('80a01231-01dc-5e1b-951c-bd045f066a4c', '9d518707-695f-589e-9053-fbb4f680aab4', '7f9546bf-6a80-5279-b5d0-a8373122aedb', 80, 'g', NULL), +('aa45a327-66e7-5a19-9cd4-5f106e2516e5', '9d518707-695f-589e-9053-fbb4f680aab4', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('03fba26b-1b5b-5d27-83f5-bff718364a33', '9d518707-695f-589e-9053-fbb4f680aab4', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('b412c530-2a2d-5643-b6b9-982efe1bb2ea', '9d518707-695f-589e-9053-fbb4f680aab4', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('d568ac1a-858b-51c0-9990-ef301ce23481', '9d518707-695f-589e-9053-fbb4f680aab4', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('c2653ead-96a0-537c-90bb-0f69978af954', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', '2702db29-873c-52e7-96b5-0eab30700954', 1000, 'g', NULL), +('9f650d0c-c358-58cd-bff6-9604763102ce', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', '289c9228-be9b-5cca-a1f2-c8c0b4b741ff', 200, 'g', NULL), +('704743e9-baa0-5837-b094-c969f942a792', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('485c339f-f912-5db8-8815-b8f53fae1572', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', 'ea000025-1111-2222-3333-444444444444', 50, 'g', NULL), +('7da92af8-b88e-57b7-94d8-89c142736f55', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', '69b6f811-a7c0-54d1-aa6c-caed1fbad8e0', 50, 'g', NULL), +('f7c26430-41fe-5ed2-bc27-40ef546161ed', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 80, 'g', NULL), +('8e674a3d-1f47-58e0-8667-1c13ad6943b1', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('0d027822-2606-554d-908a-b474945140d1', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', '68cba44d-1217-551c-9cbd-2375419d11ad', 80, 'g', NULL), +('79125685-8719-5bac-b459-5354fc5a8a35', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', '60abf488-564e-56ab-9aaf-e1c416e24c2a', 60, 'g', NULL), +('8da585fc-08c8-5ef7-a81d-18c438e30ec9', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('1165a72b-dc69-5c92-8189-ce752d94a5e1', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', 'de55ca39-6e1f-596c-9b3f-9fc32c20e5ff', 20, 'g', NULL), +('d6d579d1-abad-50ee-aa91-6858d0caa948', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', '4d223977-a251-5efa-b1c0-1e86aa3e8760', 20, 'g', NULL), +('946aae84-8474-522a-8cb9-198686523bb8', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('0c65e3ed-ca8a-5bf5-ab3b-f156382df65a', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('b6141c82-0f5c-5b97-badb-af0c7b71771b', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('921dffdd-59da-5d30-937d-a1f6c0413ff8', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('12bc6362-7fba-5158-8946-e23dcf7c0cb8', '1d6ad132-aec2-55b4-9f24-26a3b16dbca6', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('00792966-39e6-5caf-b9e7-2d24e08ca00a', '1c44de25-dd44-56c2-96fa-1221c00dc618', '2702db29-873c-52e7-96b5-0eab30700954', 1000, 'g', NULL), +('27a20425-8719-584b-befd-fdb765d88c34', '1c44de25-dd44-56c2-96fa-1221c00dc618', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 1, 'quả', NULL), +('152ff041-421a-5861-ba7e-9d709ec46b34', '1c44de25-dd44-56c2-96fa-1221c00dc618', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('07620666-b410-51ee-88d4-e3c8a9785e0d', '1c44de25-dd44-56c2-96fa-1221c00dc618', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 0.25, 'miếng', NULL), +('52f09ee2-c7c2-5d13-bb60-c74bdad5de82', '1c44de25-dd44-56c2-96fa-1221c00dc618', '71c3ed0f-ca07-5730-84d0-cbfe5370128c', 10, 'g', NULL), +('4d8401cf-88ba-52b1-86d9-8e07cd99d497', '1c44de25-dd44-56c2-96fa-1221c00dc618', '874a0b93-963e-5d37-aa0d-9a41df35b4e4', 1, 'g', NULL), +('e0cddee0-a689-585b-aff7-14ca07c4563b', '1c44de25-dd44-56c2-96fa-1221c00dc618', 'ea000023-1111-2222-3333-444444444444', 1, 'quả', NULL), +('80686add-cfa3-54b4-bb53-a87c4ecf5cc0', '1c44de25-dd44-56c2-96fa-1221c00dc618', 'd2787d48-2246-5e61-9493-27fcd4841752', 30, 'g', NULL), +('4d280b46-bbfc-5c8a-8f52-945e7355cb42', '1c44de25-dd44-56c2-96fa-1221c00dc618', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'cây', NULL), +('bd60a13c-607c-5b7f-8de4-756bc4ca204f', '1c44de25-dd44-56c2-96fa-1221c00dc618', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('1f5c87e0-056e-5324-aebf-18b26f4606b5', '1c44de25-dd44-56c2-96fa-1221c00dc618', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('065119f3-af0e-5d8a-9040-b8a55d8833ae', '1c44de25-dd44-56c2-96fa-1221c00dc618', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('60cf766d-e9eb-5b3b-b6e0-34a7f8231a05', '1c44de25-dd44-56c2-96fa-1221c00dc618', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('a7d9bf15-8581-5c5a-b057-c39a68f85386', '1c44de25-dd44-56c2-96fa-1221c00dc618', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('1df59c77-511d-5ede-8955-9596640e6ee0', '1c44de25-dd44-56c2-96fa-1221c00dc618', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('2d6faa7a-2019-590a-b7a9-39ed279fa069', '1c44de25-dd44-56c2-96fa-1221c00dc618', '1e27539b-7e79-5894-89aa-45939cd64a93', 20, 'g', NULL), +('b5063697-a81c-5c19-ab1e-bf17cfdd993b', '1c44de25-dd44-56c2-96fa-1221c00dc618', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('7a3b48cd-61a3-539b-ad81-406db368ee29', '1c44de25-dd44-56c2-96fa-1221c00dc618', '161eaeda-bf26-526a-90bb-5a4ffc7afffa', 20, 'g', NULL), +('536c6ba6-acdf-5376-85d3-66d7c7aa9811', '8ff807ba-7b4b-5005-8fe9-8a671c931038', '2777138f-7eaf-5934-8757-426d5ee37d7b', 300, 'g', NULL), +('a1724bda-1b17-5b01-9b12-d79b6a93acab', '8ff807ba-7b4b-5005-8fe9-8a671c931038', '5f9fca18-73fd-511b-8e4b-c72573da5510', 100, 'g', NULL), +('f852dbc1-e6ba-5ace-94a9-b796d3cefc9e', '8ff807ba-7b4b-5005-8fe9-8a671c931038', 'ea000024-1111-2222-3333-444444444444', 1, 'chén', NULL), +('97230e3f-b26e-5a0f-aafe-9da7c8d78785', '8ff807ba-7b4b-5005-8fe9-8a671c931038', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 2, 'nhánh', NULL), +('2700c77e-247f-5348-aa3e-9f717d11776a', '8ff807ba-7b4b-5005-8fe9-8a671c931038', '6bc9309c-06e9-5508-b6e7-d67a02a134de', 0.5, 'chén', NULL), +('bc01f303-3bbd-5d21-b257-39cc48587e67', '8ff807ba-7b4b-5005-8fe9-8a671c931038', '55f5ae60-ea08-597b-8be1-1beff05b1401', 80, 'g', NULL), +('e7e3e364-6ddf-5c59-ad9f-a604bd5c8025', '8ff807ba-7b4b-5005-8fe9-8a671c931038', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('73e9e159-8711-5419-beeb-eb9789ce9889', '8ff807ba-7b4b-5005-8fe9-8a671c931038', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('68faa649-5af8-51c6-898e-4aaf6bcafb34', '8ff807ba-7b4b-5005-8fe9-8a671c931038', '97312907-8f92-540a-a6ab-64327b7bc0b4', 5, 'g', NULL), +('e4b5d088-8b76-542e-b6bd-256f58eefe41', '8ff807ba-7b4b-5005-8fe9-8a671c931038', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('16f0408c-9a64-54d4-a222-934a53a82470', '8ff807ba-7b4b-5005-8fe9-8a671c931038', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('43a8b870-0d9d-5c2d-8450-c5ee40b78cc2', '8ff807ba-7b4b-5005-8fe9-8a671c931038', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('0c473ab2-1c37-51a4-9816-47074f1dc971', '8ff807ba-7b4b-5005-8fe9-8a671c931038', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('50655d97-fa6f-5e78-8d45-96b7a8755ac4', '8ff807ba-7b4b-5005-8fe9-8a671c931038', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('3ccdbb26-87ca-5e44-bf2f-cc0f50d5fe50', 'ee41798a-105f-5791-a061-1da65b726708', '5a62ba4e-40c3-5969-afbc-21dfeff8e81d', 200, 'g', NULL), +('447f0d9d-82ef-542a-ac2f-891c44b6db15', 'ee41798a-105f-5791-a061-1da65b726708', '6d1a67d3-a2ff-5c8c-afd8-a193ab62342e', 50, 'g', NULL), +('b4cd5796-ab70-5eb1-97e1-30a8b0004240', 'ee41798a-105f-5791-a061-1da65b726708', '6f834874-ecea-5bf3-8147-38ec708d6432', 10000, 'ml', NULL), +('c469edf1-2e5c-5e78-825d-4ff65a2f526e', 'ee41798a-105f-5791-a061-1da65b726708', 'ce10d851-d176-5e0f-bf03-d4f87bef2949', 200, 'g', NULL), +('ad017e57-af5f-56b2-997d-ed0b620ea29b', 'ee41798a-105f-5791-a061-1da65b726708', 'e599e212-c4e7-507c-a3fe-9704649a9794', 5, 'g', NULL), +('fdc89620-e155-5161-8de5-2a15f873085e', 'ee41798a-105f-5791-a061-1da65b726708', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('c8533aee-a0f1-5559-bd96-418a4c5894c2', 'ee41798a-105f-5791-a061-1da65b726708', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('212f52f2-f6e4-52ae-bac9-e2529bcbc8af', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', 'ea000027-1111-2222-3333-444444444444', 100, 'g', NULL), +('0a20861a-a71f-5bd2-bdce-237e18fbf729', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', '2de3a426-762c-526a-9b1d-149fbbb0bd7d', 100, 'g', NULL), +('21941f4e-404f-524f-936a-8256628bc8c6', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', '5a62ba4e-40c3-5969-afbc-21dfeff8e81d', 100, 'g', NULL), +('128d7477-8d45-52de-9c1a-0e0861bc9269', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', 'ad701cb7-ec79-5b26-8866-792eba06a7b3', 200, 'g', NULL), +('e6153e5a-3dde-58ad-977a-9650fb8fd1aa', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', 'ea000025-1111-2222-3333-444444444444', 80, 'g', NULL), +('0c11f850-75d5-5c91-b946-331e026721fe', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 80, 'g', NULL), +('a73658dc-44e9-5baf-9d9c-b3f227459ad3', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', '4bbb2703-742d-5cf9-be8d-90cfc553590c', 20, 'g', NULL), +('fefb7e98-3b34-5930-bce4-c4400747c48d', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('9fd8d68f-3198-51b2-aaca-1c1196399c38', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('d274c810-849a-5c7f-903c-3fef0b0013b4', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', '300b9a61-bd25-5035-8b3d-f3b094c3dca7', 20, 'g', NULL), +('e4dc1a48-6a78-5070-85ea-c791a7dc3745', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('a2ef936a-cb18-5233-b921-1dcc7480739a', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('bdbd5e24-316d-56ab-96d5-932b1f9ccc2f', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('582c1743-1b4d-566e-a756-b4e36b120572', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('6cf12441-cb27-5cde-850c-6d1a355b3c4e', '3551e8e6-bd40-5ce7-aeb3-39bc7ddbc1bc', '55886a17-0140-5de3-95ab-dd355411cee0', 5, 'g', NULL), +('96075ff0-9ab8-59ad-95d9-b0a38b02c005', '22207a83-6897-5160-90ea-b61ccc159ead', '5a62ba4e-40c3-5969-afbc-21dfeff8e81d', 200, 'g', NULL), +('c5882930-02f5-53b2-9c06-710dc829690c', '22207a83-6897-5160-90ea-b61ccc159ead', '5b1e8422-1d54-5870-a4ca-ed4bac11eda9', 150, 'g', NULL), +('23b73fff-cba2-59b7-9753-d8fe276baa2b', '22207a83-6897-5160-90ea-b61ccc159ead', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 0.25, 'trái', NULL), +('b2e35505-ee3d-5fba-9e63-373395a524d0', '22207a83-6897-5160-90ea-b61ccc159ead', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 1, 'trái', NULL), +('0bacc9c4-2c12-571c-8c49-39fb5f079a13', '22207a83-6897-5160-90ea-b61ccc159ead', '1689f7c0-466a-5cca-bc9e-2ff58a49c080', 0.5, 'chén', NULL), +('b74b804f-f903-57a4-b518-57cc604540a0', '22207a83-6897-5160-90ea-b61ccc159ead', '641f1206-7440-54ad-ad8d-709933c7917e', 80, 'g', NULL), +('d40b9866-d7fc-5ada-9656-a9c430bbe132', '22207a83-6897-5160-90ea-b61ccc159ead', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('bce20f5f-ba5c-5db5-8487-5c967d4ada48', '22207a83-6897-5160-90ea-b61ccc159ead', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('4bed2742-7c0d-5b3c-b954-1894071e2f3d', '22207a83-6897-5160-90ea-b61ccc159ead', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('41ed1b54-ed68-5ff9-9baf-733f55b2a873', '22207a83-6897-5160-90ea-b61ccc159ead', 'e1cbd2e6-a14d-5cf2-a16f-dce936b64b3b', 30, 'g', NULL), +('57b40055-24cb-51c8-8d4d-1ac073310c94', '22207a83-6897-5160-90ea-b61ccc159ead', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('d6d538c9-e25c-58cf-897e-952703405ff1', '22207a83-6897-5160-90ea-b61ccc159ead', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('f1bf32f7-4269-56ff-bf53-5c54b92cab28', '22207a83-6897-5160-90ea-b61ccc159ead', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('b2535d94-5d57-53f4-95fa-be1970dca9b2', '22207a83-6897-5160-90ea-b61ccc159ead', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('6c3be158-aeca-5875-aafc-fd40f73a5612', '2aed8eda-842a-5aeb-9f78-429206c7da6b', '1ff1af0f-b06c-5ea6-9af3-3354e1841f65', 80, 'g', NULL), +('cf5250ac-4732-5cb2-9b05-50473509113d', '2aed8eda-842a-5aeb-9f78-429206c7da6b', 'b0806f56-ac14-57c9-9784-59124afc3463', 60, 'g', NULL), +('a93985de-11a3-59eb-961c-102c0159d387', '2aed8eda-842a-5aeb-9f78-429206c7da6b', 'c2b346b3-a51b-56c0-a284-2122cdc4de08', 200, 'g', NULL), +('42ecb0ff-72d0-55ad-a64a-d9518307a9e3', '2aed8eda-842a-5aeb-9f78-429206c7da6b', 'c00f36a2-52fc-5426-93a8-5f6d8fe54794', 50, 'g', NULL), +('46024fca-eba0-518e-afe4-f8cd2c1ba5cb', '2aed8eda-842a-5aeb-9f78-429206c7da6b', '1dfd46f5-c134-5384-877e-6251caab3ae7', 4, 'nhánh', NULL), +('adfc4291-2d97-5928-a818-c17df481f211', '2aed8eda-842a-5aeb-9f78-429206c7da6b', 'e6403ce2-84f5-5688-a7bf-0d5c465c8875', 15, 'g', NULL), +('380f0e28-af38-51cf-9e14-ca99fd2808c0', '2aed8eda-842a-5aeb-9f78-429206c7da6b', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('7f96da85-adc8-50a3-9eff-18f4d926c5a0', '2aed8eda-842a-5aeb-9f78-429206c7da6b', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('3bca3e72-29bf-5fb0-a3f0-baab88629220', '2aed8eda-842a-5aeb-9f78-429206c7da6b', '558dd7f9-1690-5e57-bd3c-580e91b23323', 20, 'g', NULL), +('44bcfffa-59b9-5f00-b266-a82c7f2b5ad5', '2aed8eda-842a-5aeb-9f78-429206c7da6b', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('ef00503d-a5c1-5074-bea0-f38790df801b', '0e2d9b7f-83ec-5180-85ba-091bb1241997', '216df387-ec64-5ecc-9345-48865dcfbae9', 1, 'con', NULL), +('2d8d566d-cdbe-552c-b43c-05878bd6ef9b', '0e2d9b7f-83ec-5180-85ba-091bb1241997', '4af2dbec-dc38-5f7d-bd85-48280ab0cbe1', 4, 'viên', NULL), +('465df789-347d-551a-8407-34fd1af3a9dc', '0e2d9b7f-83ec-5180-85ba-091bb1241997', 'ea000034-1111-2222-3333-444444444444', 5, 'củ', NULL), +('c54b62ee-ba77-5918-87a3-ede7e448c570', '0e2d9b7f-83ec-5180-85ba-091bb1241997', '99157107-8cbc-5715-97f1-620017377993', 15, 'g', NULL), +('e324d229-3c2d-552e-83a4-887a7ef1f82f', '0e2d9b7f-83ec-5180-85ba-091bb1241997', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('e07b7bbd-d7b4-5538-b8f9-9f7cfd833e57', '0e2d9b7f-83ec-5180-85ba-091bb1241997', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('74efd5d1-986f-5720-9a22-f38eb16297ee', '0e2d9b7f-83ec-5180-85ba-091bb1241997', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('359f3f90-bad9-5543-a166-9d67a418f545', '0e2d9b7f-83ec-5180-85ba-091bb1241997', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('f9add86d-1f63-5c8c-820d-2ab4e44c7d56', '0e2d9b7f-83ec-5180-85ba-091bb1241997', '97312907-8f92-540a-a6ab-64327b7bc0b4', 5, 'g', NULL), +('8e22bd8b-e21f-57dd-99ca-286d2fe4b0c2', '422cd42a-7df8-50d1-9efd-5b986e5b2e64', 'a7862dcc-da60-5970-98b3-3d2a131c6ee6', 150, 'g', NULL), +('e341b965-10f6-5f10-98ac-c7274b389fe9', '422cd42a-7df8-50d1-9efd-5b986e5b2e64', 'aad904c3-fb83-59df-8c20-bf616e25431f', 200, 'g', NULL), +('1f30672c-ecaa-59a7-a395-eaae78009747', '422cd42a-7df8-50d1-9efd-5b986e5b2e64', '549f7baa-90cc-5032-9f4d-9aed4396c92b', 30, 'g', NULL), +('5b745657-8f64-5d94-91f7-6c0fb000508b', '422cd42a-7df8-50d1-9efd-5b986e5b2e64', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('1ab6037c-f25a-58ba-af0f-ad33f5c721b9', '422cd42a-7df8-50d1-9efd-5b986e5b2e64', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('d8e6f8a4-825e-517b-aab6-e747f65feffb', '422cd42a-7df8-50d1-9efd-5b986e5b2e64', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('b6649a4d-93ca-56dd-bdca-3fcfb1945915', '422cd42a-7df8-50d1-9efd-5b986e5b2e64', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('598541a8-1de1-59f2-8381-d3ae58cb00af', '422cd42a-7df8-50d1-9efd-5b986e5b2e64', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('8e16a0e7-1cd8-589f-bbc3-5ef36f261521', '422cd42a-7df8-50d1-9efd-5b986e5b2e64', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('f64e6e87-6e2f-55e0-8065-b39f9e2164fa', '422cd42a-7df8-50d1-9efd-5b986e5b2e64', '55886a17-0140-5de3-95ab-dd355411cee0', 5, 'g', NULL), +('90263cb9-6fcb-5d4f-b529-64c8a1f69956', '588d773e-5472-5039-9b52-57a879c226c1', '30badee6-e8cb-5b8a-9824-15ab5b3eea17', 100, 'g', NULL), +('67475cbf-d55f-5647-95f3-5135e7116187', '588d773e-5472-5039-9b52-57a879c226c1', '2ee6c53e-296a-5719-a2a8-5d7367ea2ac7', 100, 'g', NULL), +('1b0c1174-5262-5686-9cc9-d3d6330f43be', '588d773e-5472-5039-9b52-57a879c226c1', 'ea000006-1111-2222-3333-444444444444', 150, 'g', NULL), +('c7d8597e-c19b-5bcf-b2e8-7e11beeb4bb7', '588d773e-5472-5039-9b52-57a879c226c1', 'ea000022-1111-2222-3333-444444444444', 50, 'g', NULL), +('31287547-6954-5673-bda7-6de4397e78a2', '588d773e-5472-5039-9b52-57a879c226c1', 'ea000004-1111-2222-3333-444444444444', 3, 'quả', NULL), +('5f31877f-b08b-501f-b73e-f040da720edf', '588d773e-5472-5039-9b52-57a879c226c1', '560a34d5-02db-5562-96f5-d442b4a374f3', 1, 'trái', NULL), +('f5f0308c-77ba-5ac5-a61a-3fb633d762af', '588d773e-5472-5039-9b52-57a879c226c1', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('7736f79a-ea18-5199-9efb-d804d6fd58e4', '588d773e-5472-5039-9b52-57a879c226c1', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 20, 'g', NULL), +('4ac41cc7-7676-5113-be58-81f98e741440', '588d773e-5472-5039-9b52-57a879c226c1', '53aa2eb8-e5c5-525a-a1bf-0f697cb5f048', 60, 'g', NULL), +('e80ba98b-6d26-5048-a467-3ed9c3fa93b3', '588d773e-5472-5039-9b52-57a879c226c1', 'a56bece1-24f5-5615-b990-ee8b353730d4', 100, 'g', NULL), +('bab9d6a7-27a7-568d-a5df-c528f10bbd9b', '2c0e0781-b11b-52b8-9925-82e978de18c7', '0f91c86e-fc36-56ad-a708-373c3f07fb0e', 100, 'g', NULL), +('7ae11522-176f-5f65-bbe6-a37cbb461a8a', '2c0e0781-b11b-52b8-9925-82e978de18c7', 'da18f0fd-cf75-58fd-a651-8336ecf2f4da', 30, 'g', NULL), +('458b5bc5-fbae-5971-b2d5-15babef1ca57', '2c0e0781-b11b-52b8-9925-82e978de18c7', '3e63e197-b56d-5143-af71-5d6486473e5e', 45, 'g', NULL), +('30f1f4cd-d388-5c58-a8e7-d21a8ada5366', '2c0e0781-b11b-52b8-9925-82e978de18c7', '69ed60d6-7135-5a1f-b54a-a28cb4dc39b7', 150, 'g', NULL), +('4c0c982e-68fb-5247-a993-e69f495789d3', '2c0e0781-b11b-52b8-9925-82e978de18c7', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 60, 'g', NULL), +('f94d23c1-275a-5456-8b9a-2e3a678f488c', '2c0e0781-b11b-52b8-9925-82e978de18c7', 'fa2b4ae7-2dd3-5630-a4a6-d87432b0eff4', 20, 'g', NULL), +('17359cac-146b-53db-a348-69b627924ac9', '2c0e0781-b11b-52b8-9925-82e978de18c7', '944f9c8f-c29d-5674-9c46-3bcfb4ffa93c', 50, 'g', NULL), +('25582709-a844-513c-b6b6-4bdb0b2e7c67', '2c0e0781-b11b-52b8-9925-82e978de18c7', 'a3e706da-290f-586f-85a9-5e90efe3b255', 20, 'g', NULL), +('cfedbe5f-173c-5594-976a-14d9357df7e4', '2c0e0781-b11b-52b8-9925-82e978de18c7', '098ea6e8-4c41-5c91-9144-80209178311b', 20, 'g', NULL), +('f0399a87-edbc-5937-ba98-041cbf9f5356', '2c0e0781-b11b-52b8-9925-82e978de18c7', 'e91f0f61-d618-5236-813a-f96546c23e55', 20, 'g', NULL), +('7aaff1a3-c485-5cec-827f-a45228950bf9', '2c0e0781-b11b-52b8-9925-82e978de18c7', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 20, 'g', NULL), +('5a687b3f-d6f8-579d-8ef3-9f4e080a009f', '0b75dadc-5e33-528a-8854-57ad1e4e2600', 'c7fa6b11-30ef-572c-9db6-2656a9e3626e', 300, 'g', NULL), +('ebdc1173-7403-5fe8-ad1c-d540ebdcabb3', '0b75dadc-5e33-528a-8854-57ad1e4e2600', '30aab0ce-a3fc-57d2-9dd8-5152c824ea28', 100, 'g', NULL), +('7fba1aff-3bf4-5556-9cec-5deaf4720cd0', '0b75dadc-5e33-528a-8854-57ad1e4e2600', 'ea000042-1111-2222-3333-444444444444', 30, 'g', NULL), +('e6150c7f-a986-56f2-bdcb-dea0fea1813f', '0b75dadc-5e33-528a-8854-57ad1e4e2600', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 30, 'g', NULL), +('054f6ef8-c2d9-5f0a-ab7e-5f9a8a4fb340', '0b75dadc-5e33-528a-8854-57ad1e4e2600', 'a06f81e0-9ff3-5b61-8121-0a1e0a765b43', 200, 'g', NULL), +('03297c59-6e3b-53e4-8c20-12facc70510f', '0b75dadc-5e33-528a-8854-57ad1e4e2600', '5824249f-4a90-5eb8-ab3e-fe00ffdbf0bb', 1, 'quả', NULL), +('80e07ad4-ff7d-5859-9308-4f9a44be6741', '0b75dadc-5e33-528a-8854-57ad1e4e2600', '2094b9c8-eb1a-5c56-bae9-effbc837baab', 20, 'g', NULL), +('ffaa6ef3-8743-57e4-87d1-123a805c6b41', '0b75dadc-5e33-528a-8854-57ad1e4e2600', 'b6332786-b190-5600-871e-e582de462c31', 80, 'g', NULL), +('dd98201e-73c5-568b-98ba-3f64dd5a6c36', '0b75dadc-5e33-528a-8854-57ad1e4e2600', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('4f97093d-2e63-5c81-b738-9a7c550179f7', '0b75dadc-5e33-528a-8854-57ad1e4e2600', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('12ab2041-780c-5cd7-904f-f54b68d77502', '0b75dadc-5e33-528a-8854-57ad1e4e2600', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('ae5da096-eda3-5ba1-bcba-2cc90026a31e', '0b75dadc-5e33-528a-8854-57ad1e4e2600', '6ad3e5f6-5012-5f46-bb84-dec9c5f3ed2e', 5, 'g', NULL), +('a4718436-b426-524b-ad20-041193c5b50c', '7fa0b58f-a618-51bc-8194-ac79da797df1', 'dd16ca4a-fd06-512e-a775-5737e49c7913', 200, 'g', NULL), +('71cdab02-5185-5f3a-b200-1a01220bffab', '7fa0b58f-a618-51bc-8194-ac79da797df1', '2b1d2730-a829-5f8b-b7df-c09b60921a0a', 100, 'g', NULL), +('b07e955f-af67-5b10-8686-3080c117d43d', '7fa0b58f-a618-51bc-8194-ac79da797df1', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 50, 'g', NULL), +('ad3e0df2-3c4f-54aa-b41a-7ff8974ee1e4', '7fa0b58f-a618-51bc-8194-ac79da797df1', 'b022ec51-1f8d-575b-913c-22164c09829e', 5, 'cây', NULL), +('33837619-f883-529d-ad35-0e0a5d041167', '7fa0b58f-a618-51bc-8194-ac79da797df1', 'd4475c8a-592a-5118-8358-2de506a90a19', 4000, 'ml', NULL), +('7df6034c-6097-5cfe-b277-6ebc43402894', '7fa0b58f-a618-51bc-8194-ac79da797df1', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('1a81587d-26fc-52fa-b42c-037d4a21f26b', '7fa0b58f-a618-51bc-8194-ac79da797df1', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 15, 'g', NULL), +('09d1ba0d-a462-5ca9-8dec-0f8e7bbf2068', '7fa0b58f-a618-51bc-8194-ac79da797df1', '152109fb-25ac-55cc-ad5a-341010f2bb98', 20, 'g', NULL), +('58639346-18bb-5ed6-ac91-d3c034ab31a8', '7fa0b58f-a618-51bc-8194-ac79da797df1', 'ea000023-1111-2222-3333-444444444444', 80, 'g', NULL), +('223a9e55-776a-5c7a-8f44-c729f43236a6', '7fa0b58f-a618-51bc-8194-ac79da797df1', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('346de6b3-0887-5390-9aa9-babc97ba8cca', '7fa0b58f-a618-51bc-8194-ac79da797df1', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 20, 'g', NULL), +('224020df-edf8-5b84-ba1b-eb7c0d1c9160', '7fa0b58f-a618-51bc-8194-ac79da797df1', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('fd817048-e41a-5107-833b-8b200bc35e21', '7fa0b58f-a618-51bc-8194-ac79da797df1', '8aefd378-92f5-575b-8801-511d610bb7f6', 80, 'g', NULL), +('18e63909-0ffe-5a21-b435-27f6a9be8d1e', '7fa0b58f-a618-51bc-8194-ac79da797df1', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('29df1e41-85ee-5823-8900-5d94f4e5e266', '7fa0b58f-a618-51bc-8194-ac79da797df1', 'c7e92adc-13f7-5fea-b171-e1a062e3bd18', 20, 'g', NULL), +('b14542d7-0a35-562d-b09a-10bbc868a351', '7fa0b58f-a618-51bc-8194-ac79da797df1', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('cb7a7a92-78fc-5955-8821-511a7c924f7c', '7fa0b58f-a618-51bc-8194-ac79da797df1', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('9461fe25-50ca-5479-ad1b-1fce755a683a', 'f144d3f3-b180-501e-a611-492344b06fc8', '7f7e1e35-9cdd-5d21-b4d1-2c1f1b453314', 2, 'con', NULL), +('d205bada-c799-54f6-adfd-ab926315d603', 'f144d3f3-b180-501e-a611-492344b06fc8', '1ff1af0f-b06c-5ea6-9af3-3354e1841f65', 350, 'g', NULL), +('f0f78f27-75bc-50b2-8e0d-5acf52b72903', 'f144d3f3-b180-501e-a611-492344b06fc8', 'bb527379-88e9-5ef5-8fc6-bc210accb6a0', 50, 'g', NULL), +('21fb75a8-9151-5e91-bbbe-b758e5fc9324', 'f144d3f3-b180-501e-a611-492344b06fc8', '8cb7be9f-ec3f-5e08-8cf1-5d09e19e8a57', 50, 'g', NULL), +('1d4a2874-4f16-5417-b6a2-701f86fb7de7', 'f144d3f3-b180-501e-a611-492344b06fc8', '99a78ed3-82eb-5862-8011-e56cc4611f01', 100, 'g', NULL), +('10a9eb53-9092-52f5-9b18-bb95c828983d', 'f144d3f3-b180-501e-a611-492344b06fc8', '15d93fa5-b5e7-57d5-a029-adf917963f48', 10, 'g', NULL), +('2ff97f23-d872-5af9-92dc-9548738e1309', 'f144d3f3-b180-501e-a611-492344b06fc8', '376add07-0f9a-5e10-852e-fb85e486461b', 1, 'chén', NULL), +('07a4265a-1f98-5426-9944-c3f3360dc488', 'f144d3f3-b180-501e-a611-492344b06fc8', 'c0536f60-8c39-56fb-9b16-9b175be07f36', 20, 'g', NULL), +('b064e2d5-ca66-5ced-815c-33ef94fc4205', 'f144d3f3-b180-501e-a611-492344b06fc8', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('8a4a7663-0b65-58f0-96ae-b1f3abb52168', 'f144d3f3-b180-501e-a611-492344b06fc8', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('66001877-4a20-5a61-96cf-80671232dd96', '67d97286-8d45-596f-96ba-532906db8272', 'bc8970ff-39ac-50b4-9d44-7946eb08e491', 1500, 'ml', NULL), +('f588fe0b-d8e5-5e28-98c0-4034733a00f8', '67d97286-8d45-596f-96ba-532906db8272', '30009462-35e8-5edb-a607-57b5f6368893', 50, 'g', NULL), +('8119f20e-ea73-5c9f-b0f1-65cd0f6782cd', '67d97286-8d45-596f-96ba-532906db8272', '6e92502e-7e8f-599a-b5d1-be201fd7d4cb', 3, 'g', NULL), +('1d792478-732e-585d-bc61-7bab0c20a0b9', '67d97286-8d45-596f-96ba-532906db8272', 'ace90350-53eb-5917-b670-aa1f4ebf92b6', 100, 'g', NULL), +('555592af-2817-5633-bb8b-a9a3e417013c', '67d97286-8d45-596f-96ba-532906db8272', 'c5977be2-71b9-5d44-860d-a9bad674c32b', 200, 'g', NULL), +('22531b89-0230-5c60-87b2-3a9e85b10609', '67d97286-8d45-596f-96ba-532906db8272', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 1, 'cây', NULL), +('2249e64c-a68d-5aec-a4ec-fbfc40aea962', '67d97286-8d45-596f-96ba-532906db8272', '03352f39-1d36-5eb3-b23b-43824e253fdc', 100, 'g', NULL), +('ce8c1b85-0a8a-587f-a55b-2c4795ccd31c', '67d97286-8d45-596f-96ba-532906db8272', 'b73f6d06-c8dd-5129-a4e9-2416738f9914', 80, 'g', NULL), +('52687995-d5cf-51fb-a2ec-79d42b4365f6', '67d97286-8d45-596f-96ba-532906db8272', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('867157e9-a3c3-5ca4-a501-4ac1f5743094', '67d97286-8d45-596f-96ba-532906db8272', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('439ad447-e03a-564d-a0df-213d1cc099c0', '67d97286-8d45-596f-96ba-532906db8272', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('d04f7976-8514-5809-8dbd-f247eeb18e4c', '67d97286-8d45-596f-96ba-532906db8272', '85491f42-8a26-5869-bad6-384d7f1b6036', 20, 'g', NULL), +('bfc9c932-cce7-50dc-ac37-09aa0ae6e682', '67d97286-8d45-596f-96ba-532906db8272', 'a6ac6550-f8e7-548d-af3c-ec9bb3c5e7ac', 80, 'g', NULL), +('1a5cad66-599e-51a5-a66c-6643b7a7bcd6', '67d97286-8d45-596f-96ba-532906db8272', 'af727474-2609-50b4-93d1-fa1932ad4ad8', 20, 'g', NULL), +('f9b676c1-acba-5fa3-b894-4218c7472068', '67d97286-8d45-596f-96ba-532906db8272', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('9b7d39c7-fbf9-5488-8d94-28bd5e6b3dce', '67d97286-8d45-596f-96ba-532906db8272', 'dd711f5b-3ba5-5681-a8b5-05908f41e15b', 5, 'g', NULL), +('f0d06274-88f1-54cc-9085-e5acc7cbd30e', '67d97286-8d45-596f-96ba-532906db8272', '6fb22ddf-4831-5701-b354-e85eada109af', 80, 'g', NULL), +('f79b88a0-c8cc-5c42-a4dc-ba1d3902b3a7', '67d97286-8d45-596f-96ba-532906db8272', '6ad3e5f6-5012-5f46-bb84-dec9c5f3ed2e', 5, 'g', NULL), +('c6735e2e-f8e8-598a-9273-282d47835bbd', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', 'd4009935-6483-51ea-ae27-50887303e5a7', 500, 'g', NULL), +('9be4a4cc-f640-5671-9afc-fe3b9c93aedc', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', 'bb2be091-a733-5319-a2d9-751f72620738', 400, 'g', NULL), +('441aa071-258f-58b4-9c8e-6e0760582bd4', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', '246f0677-2ffa-5dc7-8247-5ce8a00ccd66', 200, 'g', NULL), +('00f35f5b-f32f-56cf-b1a3-33b09714de8d', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('3c142b9b-8ecd-56be-97bc-436ee40bfc4c', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', '7490b618-67a7-549c-81b5-52de2aa9658f', 15, 'g', NULL), +('f22cf5b9-3dae-531e-85a5-a3eacee37467', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', '86eda42e-989d-5587-8f1d-96a2d9416a85', 50, 'g', NULL), +('14643c40-fe32-5afb-836f-97039e3ba0d8', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', '1dfd46f5-c134-5384-877e-6251caab3ae7', 2, 'cây', NULL), +('7392d764-d850-554e-9140-49617248b2a7', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', '03352f39-1d36-5eb3-b23b-43824e253fdc', 50, 'g', NULL), +('8ba0aa40-89c8-551f-a89f-e48d136c7376', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', 'e4eb3e6b-102c-50b5-8c9c-d5a570624fe1', 50, 'g', NULL), +('9ae1e6a3-7490-50d7-8069-e56e861f6d01', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', 'ea000010-1111-2222-3333-444444444444', 50, 'g', NULL), +('856f68bc-4711-521b-9fa1-cfb4cf057c8d', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', 'ea000029-1111-2222-3333-444444444444', 100, 'g', NULL), +('38ac77fd-56e7-5297-98b2-b7e517a9c933', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('7114061a-6404-5cb8-8d5a-88782e8666f4', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('274e673e-fc25-5c86-8ae2-c9f7cbee7884', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('9f614f51-d8fc-576a-9e7c-efa2f9d8d9fe', 'af7e6fbf-a4ed-5e83-a8c1-a800f71980f7', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('a2eb791d-f969-5252-9a02-40100673a360', 'f040e22c-a597-53c7-988c-e975201b9e9c', 'e885a4ab-d856-5b71-9312-11c823ebcb84', 300, 'g', NULL), +('edbb8081-473e-5bbc-9d9a-249db53beec3', 'f040e22c-a597-53c7-988c-e975201b9e9c', 'd89ad7b7-4734-5b29-bc15-671bd5491023', 50, 'g', NULL), +('986e9a4e-ee6b-564f-9143-13ee266aece5', 'f040e22c-a597-53c7-988c-e975201b9e9c', 'e8fd0bba-5a75-5ef8-b71f-30f7e810ad9d', 1, 'nhánh', NULL), +('38571860-0ed9-5650-9b9a-8073146a4ceb', 'f040e22c-a597-53c7-988c-e975201b9e9c', '637ee269-d869-570d-9078-aa02ab43c3fb', 30, 'g', NULL), +('c2521d8f-60fc-51da-9213-4fa4f9333b3d', 'f040e22c-a597-53c7-988c-e975201b9e9c', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('7aed8506-c4c6-5bc8-9eff-bfcae4ff1cfe', 'f040e22c-a597-53c7-988c-e975201b9e9c', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('4269f98a-26c8-5896-a06d-fbe0c6d5376f', 'f040e22c-a597-53c7-988c-e975201b9e9c', '8aefd378-92f5-575b-8801-511d610bb7f6', 80, 'g', NULL), +('a4611e52-5b6d-50fe-8f21-2b2883b0299a', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', '73cb3e0a-5abc-5c6c-a7a2-7a9ac350f4cd', 150, 'g', NULL), +('0517c172-cf57-57f1-9257-0049dc78cfcd', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', 'ea000007-1111-2222-3333-444444444444', 150, 'g', NULL), +('fc706e52-c8ec-5a0a-8142-8f49fd938420', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', '48a93238-8bb7-5c60-832b-8312ae4b2c08', 50, 'g', NULL), +('90993f02-fd6b-5077-b567-c00238bb66ac', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 1, 'quả', NULL), +('960b01af-552e-5ae2-bb60-7c5267691add', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 0.17, 'quả', NULL), +('e6880ced-ae9b-5fe3-99b4-710b28df807e', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', 'bbaeb57f-fd4d-594c-ae62-890160a7b51a', 2, 'cây', NULL), +('7eeee59e-f299-59eb-ae5e-00d6ce8084d7', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', '566ead10-5696-502f-a154-a7352c141c3d', 50, 'g', NULL), +('e3416ed7-eceb-5d6e-9eff-c9e60c82767c', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', '0f72e431-84b8-5b62-a981-d22b46d20e85', 80, 'g', NULL), +('09ec7e85-2a25-5714-b1cd-b9e79a6b980f', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', '2c578d09-533b-5817-bfa5-2a857eee0cab', 20, 'g', NULL), +('e30e739b-bb2a-5966-a6a1-5b40da2e2462', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('23d081c4-5d60-54fe-8ebf-0b63b057cbe9', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('1f3d910b-310b-52f7-ba78-cb41d116d294', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('de6eb642-2c13-56c8-9de7-01af0aca82d8', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('9d927e5a-e91d-5551-b778-629df4e8f8b6', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', '300b9a61-bd25-5035-8b3d-f3b094c3dca7', 20, 'g', NULL), +('f0dfb4d5-882d-5210-b7aa-5b12952b2fd8', 'cd31f882-9d4c-560f-bc65-ed210d1fabfb', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('c1f4db93-c81c-52e8-a835-0a289971e322', 'bc872e79-5dce-583c-a2dc-cccafb7f93e6', '53a81b46-70f1-5e29-90b2-98a529ebb018', 2, 'cái', NULL), +('86619ee2-8c6c-5d4d-9cb5-bbc7cf5d2130', 'bc872e79-5dce-583c-a2dc-cccafb7f93e6', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 2, 'nhánh', NULL), +('ffba1b38-c333-5428-8730-3691214570d2', 'bc872e79-5dce-583c-a2dc-cccafb7f93e6', '562b3c6b-cbe5-51ac-a395-106a12c3bb3c', 5000, 'ml', NULL), +('950b5926-6252-53f2-96bc-47de65da2f8d', 'bc872e79-5dce-583c-a2dc-cccafb7f93e6', 'ea000034-1111-2222-3333-444444444444', 10, 'củ', NULL), +('94ce4fee-03de-5d87-ba8a-e7a0111651e0', 'bc872e79-5dce-583c-a2dc-cccafb7f93e6', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 3, 'trái', NULL), +('11e664ee-bdbb-51da-8c8e-f18a7f221cae', 'bc872e79-5dce-583c-a2dc-cccafb7f93e6', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 2, 'cây', NULL), +('f1fcb98a-7af8-5d83-a42c-f527a1feced9', 'bc872e79-5dce-583c-a2dc-cccafb7f93e6', 'ea44af36-bee4-50d0-8bb1-eab63f2c5571', 100, 'g', NULL), +('ee952f26-88f0-5061-91b4-e10fcfce82f8', 'bc872e79-5dce-583c-a2dc-cccafb7f93e6', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('558b43d5-9b17-5c77-a522-b8c4d5ea4347', 'bc872e79-5dce-583c-a2dc-cccafb7f93e6', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('3e8ab9d4-8893-5bc1-b295-3e7a5541a48e', 'bc872e79-5dce-583c-a2dc-cccafb7f93e6', 'e1071dc8-2c05-52ed-8d41-74c030ac4986', 20, 'g', NULL), +('3c656983-2779-504b-9a19-07e02138dd05', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', 'e3e12474-62a6-58d7-97eb-ef9631f10697', 2000, 'ml', NULL), +('c85aa66f-aea1-5d7b-adc6-019d5f8565ca', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', 'c7fa6b11-30ef-572c-9db6-2656a9e3626e', 300, 'g', NULL), +('6cf7b803-53ee-5a8a-b6bd-c666f233cd01', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '725e64c6-e003-54c3-b1a3-5c562700b224', 1, 'miếng', NULL), +('8898e7be-a51c-5dae-9f78-8f37457f5517', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', 'd578f3c2-c537-57c0-af59-f356db677374', 50, 'g', NULL), +('198fb4dd-f298-5c0d-867c-dc92eb6fd442', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '1f269e0b-5d58-5366-8ef4-2ae62201dfd3', 50, 'g', NULL), +('0d45744b-417f-5d93-bc8b-a0c9319f8aca', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '71e11e1b-3b44-5c51-b066-a26ba5a70c37', 2000, 'ml', NULL), +('ea4f8df5-bc70-5b3b-b1e3-3e6bc207345b', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '1b8928d0-c525-51e9-b6e8-383b3bd5f2b5', 30, 'g', NULL), +('98d4e7ad-0b01-506c-8ada-ecd868ea2b49', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 2, 'chén', NULL), +('d28122a5-fa05-527c-abe3-e6f6ea66ea1d', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '6f834874-ecea-5bf3-8147-38ec708d6432', 20, 'g', NULL), +('825aae98-9243-57c0-962b-84eb972abee9', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '152109fb-25ac-55cc-ad5a-341010f2bb98', 20, 'g', NULL), +('b717170a-de00-5758-b41f-f592b398e633', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '92d13717-bffa-5a67-a80f-03fae90e577a', 5, 'g', NULL), +('c47ee72d-ca2d-5479-a402-3e81e59198a7', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('ab2a5ae6-efab-5a9e-8b25-ca7d8c4f7095', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '24e08a1c-ee21-529d-ba5f-036a78918ce8', 100, 'g', NULL), +('06c4e3f1-27ce-59a4-b2d3-9581f03f9b33', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '565898d5-15d7-53f8-84ad-d90df61f2e97', 100, 'g', NULL), +('3d6ff41d-0cdf-5e88-b37a-0111ac4faac5', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', 'ea000008-1111-2222-3333-444444444444', 20, 'g', NULL), +('0ada2fce-c356-526a-9073-5643794024e4', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('459f742d-86c8-505e-b274-b62b1f80968e', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('f87ba063-9a92-51ed-ae71-b68078e8ba1e', '463e77f4-dbd5-52cb-8c8a-25e8e3cfc35b', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('f9bc549c-c615-51c2-b587-6d30ab32d726', 'b2bd04a4-4b5d-54f0-80fe-2cc27c79d731', '152109fb-25ac-55cc-ad5a-341010f2bb98', 3, 'chén', NULL), +('5028b165-3853-5ffa-b8e4-8b20bfe7a955', 'b2bd04a4-4b5d-54f0-80fe-2cc27c79d731', 'ea000022-1111-2222-3333-444444444444', 50, 'g', NULL), +('92ef1f67-9815-5ac4-82c9-f6fa09a4ded9', 'b2bd04a4-4b5d-54f0-80fe-2cc27c79d731', '2a25ae01-c36e-588e-ac7c-2718a9e78c0f', 100, 'g', NULL), +('b8312ddf-4c91-5a4b-a5f9-eb71047483dd', 'b2bd04a4-4b5d-54f0-80fe-2cc27c79d731', 'ea000042-1111-2222-3333-444444444444', 0.25, 'củ', NULL), +('17637867-e2fe-584a-b0aa-4d2d0fc7bf9a', 'b2bd04a4-4b5d-54f0-80fe-2cc27c79d731', 'ea000004-1111-2222-3333-444444444444', 1, 'quả', NULL), +('f06f9f30-c027-54b5-894e-7f938e7cc5a2', 'b2bd04a4-4b5d-54f0-80fe-2cc27c79d731', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('cca5f6a5-8605-52f7-9431-b1bf41e4ed67', 'b2bd04a4-4b5d-54f0-80fe-2cc27c79d731', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('f774f535-b5a8-51bd-a4a6-bab103057eb9', 'b2bd04a4-4b5d-54f0-80fe-2cc27c79d731', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('4939e4ad-6f29-5f08-b387-3c59e6841e67', 'b2bd04a4-4b5d-54f0-80fe-2cc27c79d731', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('d01038a4-79a6-594a-af59-49a813af804d', 'b2bd04a4-4b5d-54f0-80fe-2cc27c79d731', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('fb333947-bf39-5b97-b5a5-c8bd437925ef', '727b7bf9-7510-52b5-a422-7007b57135b7', '725e64c6-e003-54c3-b1a3-5c562700b224', 2, 'miếng', NULL), +('fdcbdb91-a284-5f8f-a0fc-45258227bc81', '727b7bf9-7510-52b5-a422-7007b57135b7', '78a5e6aa-6f32-5e6b-bfd3-d55d6472a17f', 80, 'g', NULL), +('c2a8eac1-a41d-592f-b16c-e43f0edf8b58', '727b7bf9-7510-52b5-a422-7007b57135b7', 'd7eb4972-ecc9-560e-b85b-13d6b80943ac', 80, 'g', NULL), +('a6a65d25-f660-5571-9dee-3c7f2b3b834b', '727b7bf9-7510-52b5-a422-7007b57135b7', '30aab0ce-a3fc-57d2-9dd8-5152c824ea28', 20, 'g', NULL), +('c0485cbf-aacc-5293-9695-49c554d19f2c', '727b7bf9-7510-52b5-a422-7007b57135b7', 'ea000042-1111-2222-3333-444444444444', 80, 'g', NULL), +('b311519b-ce60-5829-adee-30d93ac40271', '727b7bf9-7510-52b5-a422-7007b57135b7', '4f7f4bc6-2691-57e6-abeb-c4c021189d6b', 20, 'g', NULL), +('1c6b85cc-59f2-52e2-98e8-bd7a78544a8a', '727b7bf9-7510-52b5-a422-7007b57135b7', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('4911ae0b-4fe4-52a2-9356-3d02c45195c3', '727b7bf9-7510-52b5-a422-7007b57135b7', '2434416d-0031-51fe-9db4-6faf9dbb7a81', 100, 'g', NULL), +('e9bb5b2e-1ec5-5847-a337-b3641ff8fc48', '727b7bf9-7510-52b5-a422-7007b57135b7', '64f25371-ef62-59da-8a6a-8252cf96b96e', 20, 'g', NULL), +('220e5ee3-ce40-575e-8700-3e1463013de6', '727b7bf9-7510-52b5-a422-7007b57135b7', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('7349fa43-7d8c-5c98-afd9-1c5f882f3385', '727b7bf9-7510-52b5-a422-7007b57135b7', 'c3244a02-741d-5d18-bb76-240bf8171d70', 20, 'g', NULL), +('ebac4256-6812-5625-80dc-3ada8a8e27ed', '727b7bf9-7510-52b5-a422-7007b57135b7', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('5b8f97c2-46c4-5a52-a2c5-7e834ba587ec', '727b7bf9-7510-52b5-a422-7007b57135b7', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('478d1d30-5718-5c70-91c2-17f4f00c578e', '727b7bf9-7510-52b5-a422-7007b57135b7', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('29316289-a72f-5774-9815-cc705ed71630', '7b3b2990-266f-5f2a-8f26-110c17503139', 'eef4a404-7275-56d1-81e2-15e0d4bfbde1', 20, 'miếng', NULL), +('2043fbe3-c649-536c-adb8-6c32dc13352e', '7b3b2990-266f-5f2a-8f26-110c17503139', '6c1ec9f9-0406-5616-82a9-9082034cc0f8', 100, 'g', NULL), +('756d0a91-fb48-5592-995a-185f2f0ca57c', '7b3b2990-266f-5f2a-8f26-110c17503139', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 100, 'g', NULL), +('573c4a5d-17a2-55aa-a0bf-992c20984d4f', '7b3b2990-266f-5f2a-8f26-110c17503139', 'ab7c43bb-ad85-5979-be2f-e636c54f14da', 2, 'cái', NULL), +('cfeec08b-277d-5c29-b66e-a08190b28ab8', '7b3b2990-266f-5f2a-8f26-110c17503139', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('7997cb6e-d4c8-57a0-93e5-24431e311461', '7b3b2990-266f-5f2a-8f26-110c17503139', 'e5f9bddc-28d0-558d-8508-9e77ccf723e6', 50, 'g', NULL), +('2d7f9f92-8b87-524a-abe0-bf2e5e58bda3', '7b3b2990-266f-5f2a-8f26-110c17503139', 'ea000006-1111-2222-3333-444444444444', 100, 'g', NULL), +('a4d76388-8010-5866-ad03-95c6658e2b72', '7b3b2990-266f-5f2a-8f26-110c17503139', '86f21230-4b6d-5f79-99fb-9126d4572cc5', 45, 'g', NULL), +('31ea44e1-0e45-5124-a993-118da002ede3', '7b3b2990-266f-5f2a-8f26-110c17503139', 'd5009eea-86e3-58e2-adbc-e2e580fd50b3', 30, 'g', NULL), +('08ae8285-99b4-54cc-b5b4-1797baebee86', '7b3b2990-266f-5f2a-8f26-110c17503139', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('82e73cc0-5fd8-5d73-bc02-1b5113daedd7', '7b3b2990-266f-5f2a-8f26-110c17503139', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('44483a74-2bb5-5e17-afdd-12a6e8f7389d', '7b3b2990-266f-5f2a-8f26-110c17503139', 'f14284bc-55bd-50a8-96ad-67594583c639', 80, 'g', NULL), +('615e739e-8c31-5f5a-bde1-fc8a5a7057fb', '7b3b2990-266f-5f2a-8f26-110c17503139', '133e98ce-ffa5-54d5-a022-f4b1503d49d1', 80, 'g', NULL), +('d57c5888-5804-5ae9-bc46-7cb195cb3da9', '7b3b2990-266f-5f2a-8f26-110c17503139', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('60f4e202-8564-5b26-b508-4f3dbc1857f9', '7b3b2990-266f-5f2a-8f26-110c17503139', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('46dd1c52-f993-542c-8a0b-5c2f37991760', '7b3b2990-266f-5f2a-8f26-110c17503139', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('28e45b14-408c-5896-a5e3-4306d010cb32', '7b3b2990-266f-5f2a-8f26-110c17503139', 'e1071dc8-2c05-52ed-8d41-74c030ac4986', 20, 'g', NULL), +('2b08d979-efdf-5a6d-9b5c-4d011e4dc27e', '7b3b2990-266f-5f2a-8f26-110c17503139', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('dcdc10a7-fee3-5372-b243-6192fdbc39bf', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '8e786e4b-f103-523a-b499-0770ddd8ef50', 300, 'g', NULL), +('a98e540a-867f-5f22-90fe-a40ab6685fca', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '94f84007-456f-5bf9-b762-d679cbbe7d0f', 50, 'g', NULL), +('4c2a40ea-327e-5944-844a-3b6a39bc80f8', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '9a7cf327-db40-53e0-a1e0-d0efdf9abac8', 0.25, 'trái', NULL), +('24802cbc-4852-5d05-83ee-0c95b96871b2', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '683df33b-d5d4-5157-96fe-dc1a056f3bbf', 1, 'quả', NULL), +('dca64bae-9c59-5fa3-a9c1-6e2549b5baa8', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '67774958-0c1c-5cb9-baa9-026faadc510b', 2, 'cây', NULL), +('61ff2a6b-aa24-5a0b-896a-b35361e85ca5', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 2000, 'ml', NULL), +('bdb6f85a-5c1e-5fbf-908c-9dc5773f86b5', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 1, 'trái', NULL), +('0b318e29-85e4-5abd-bec5-a2738977cd06', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '5824249f-4a90-5eb8-ab3e-fe00ffdbf0bb', 1, 'miếng', NULL), +('4bcaa381-e90b-5d1c-9e65-e95af497502f', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '99a78ed3-82eb-5862-8011-e56cc4611f01', 30, 'g', NULL), +('e81a865b-8b84-5394-b0a3-292d9e79dcf8', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('601e1c81-efdd-590a-b87c-e5f36f0fc461', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('1c7414fc-7228-54d0-8a08-4d961a6b44ee', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('d643a4a3-6011-5958-a5da-2476e60c3083', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('f6dd712b-d15d-5cb1-ae80-5fe7f1c32755', '811d4771-036c-5cfc-94ac-fe9f24e8f20d', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('5e9f2837-ad32-535b-8e8f-a845711b2f90', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', 'ed51eb54-3dc6-53cf-a660-c7ebbe2b6a00', 6, 'cây', NULL), +('9ee0bc14-e8b6-5e53-81db-b81e21bfdbc5', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', 'e33dbe29-6989-50dc-9159-768c8500ae5d', 200, 'g', NULL), +('d9a7b8c4-16de-5257-9da9-ae5652faa032', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', '5017f906-c882-5d86-8437-14b9e783c7bd', 50, 'g', NULL), +('e227d351-1f0c-5d1b-aa77-811814a7367d', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('d56f682a-ee0b-5b77-bbd0-32739dec58ae', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', '24e08a1c-ee21-529d-ba5f-036a78918ce8', 1.25, 'g', NULL), +('84367cba-e22e-5a67-a710-27cd9d2461c1', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('001760c8-574b-532e-b71c-7d6ccc1f5924', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', 'bb3a0324-6bb1-5921-bc0c-2c2732af144a', 80, 'g', NULL), +('60d61a7e-90e3-51d3-aa7a-7a27436eb97d', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('3d2151ee-7c32-5f8f-bf20-7e1c8843ef06', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('6ae28530-128b-5bed-8261-b92205e11537', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('12d04b28-e75f-5c68-8cdb-2b32a3d84f0e', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('56043b47-3bc9-5a07-8fbd-6068afab4b53', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('3368b78b-f82a-5786-8d37-4754482e7e5f', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('9491116d-4127-5369-850e-ab9e447d0946', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('6a7dd4db-574d-5721-a39c-a89fcab4bee7', 'ca2ccf88-3a3e-531a-841d-cffa572846c4', '300b9a61-bd25-5035-8b3d-f3b094c3dca7', 20, 'g', NULL), +('6ddc9be3-77fa-5972-9c78-b399d1bbde98', '0028654f-a9b1-566b-858b-75cafe4965c4', 'ba98e431-0309-558a-a5ff-cbe3810b3e1c', 350, 'g', NULL), +('effe8520-7cc1-5cb4-aa06-0d98b38c5aa9', '0028654f-a9b1-566b-858b-75cafe4965c4', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 45, 'g', NULL), +('cb27b874-32b3-5452-8c89-e5ca1717cbd9', '0028654f-a9b1-566b-858b-75cafe4965c4', '10205986-c894-59e8-9054-829ba8404a76', 15, 'g', NULL), +('c2ea3fc5-10f5-5d82-be47-96d7ce1f6a64', '0028654f-a9b1-566b-858b-75cafe4965c4', 'b4213064-6072-598a-9cb7-bde3a80717d1', 15, 'g', NULL), +('c42b5a10-ee68-5bec-99d6-f9fcdd2765c2', '0028654f-a9b1-566b-858b-75cafe4965c4', '86eda42e-989d-5587-8f1d-96a2d9416a85', 30, 'g', NULL), +('0c1e4658-1e01-5dca-95d8-3c753938ec9d', '0028654f-a9b1-566b-858b-75cafe4965c4', '7d314c03-f3db-5e0f-af59-d731671142b3', 1, 'quả', NULL), +('27c0ebd4-5f50-54bc-98e0-648b2e23a791', '0028654f-a9b1-566b-858b-75cafe4965c4', 'b39c351f-b92e-5e2a-9220-b4c51e24684d', 80, 'g', NULL), +('76247335-7c20-5fc5-94e6-38d47c183d1d', '0028654f-a9b1-566b-858b-75cafe4965c4', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('79e177c6-44a4-5dc8-9249-9698e7da2ef8', '0028654f-a9b1-566b-858b-75cafe4965c4', 'ea000023-1111-2222-3333-444444444444', 80, 'g', NULL), +('a7ec837f-fbe5-57ef-99d2-f249c8483a44', '0028654f-a9b1-566b-858b-75cafe4965c4', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('b45d7e9b-4ce3-56d9-bb97-59674abe5569', '0028654f-a9b1-566b-858b-75cafe4965c4', '300b9a61-bd25-5035-8b3d-f3b094c3dca7', 20, 'g', NULL), +('f4881a58-4d1c-590f-9cfc-43db438c95e1', '0028654f-a9b1-566b-858b-75cafe4965c4', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('1dd691f1-d022-5589-adc9-6456f9fe31de', '0028654f-a9b1-566b-858b-75cafe4965c4', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('eae40d2a-bb47-5ff5-bddd-566104ed7b19', '0028654f-a9b1-566b-858b-75cafe4965c4', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('651d1dd6-71bd-5850-a3fb-bee1cb41b8c8', '1af04131-5d68-568a-b9c9-53653cbcf43a', '6b1c6e79-efc2-58d7-b588-27f32c3c1ec1', 170, 'g', NULL), +('1eb8b957-66e7-5964-b9f8-4ec8cc062d4c', '1af04131-5d68-568a-b9c9-53653cbcf43a', '79efd86a-6394-5a8e-b9f8-a0b7d5931ae0', 30, 'g', NULL), +('6e38b2a0-363a-5e17-8f83-1628b7e9e0fd', '1af04131-5d68-568a-b9c9-53653cbcf43a', '774563e3-64dd-55d4-9b35-5110b4a4b732', 30, 'g', NULL), +('637cd610-3f8a-5e21-ad1c-9c0141d23478', '1af04131-5d68-568a-b9c9-53653cbcf43a', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('1d5af867-24fd-5fa8-9401-eedb10089c0e', '1af04131-5d68-568a-b9c9-53653cbcf43a', 'fff979b5-3525-5cf7-b3da-c44fbb8b1932', 50, 'g', NULL), +('9af97cd1-922c-510c-b08c-d8de67fb5b4c', '1af04131-5d68-568a-b9c9-53653cbcf43a', 'bf3530dd-26d2-5597-a0bc-c61825ddbbd0', 30, 'g', NULL), +('2b6344c6-be30-5ee5-a9fb-4e2fd103d2c4', '1af04131-5d68-568a-b9c9-53653cbcf43a', '0ea82148-adbe-5fca-8e11-b60caae5401d', 5, 'g', NULL), +('eb389018-96d3-5967-a246-30a6c82c1844', '1af04131-5d68-568a-b9c9-53653cbcf43a', '3ffde083-de57-5e0b-aed6-e015e442d36c', 30, 'g', NULL), +('4e61dfd3-801f-5e14-b04c-063e83a809cf', '1af04131-5d68-568a-b9c9-53653cbcf43a', 'd0483b58-ba0a-5892-abaf-f45ea5356661', 5, 'g', NULL), +('3a6df91f-ac9f-5b8a-9ebb-8aaa47b98ec1', '1af04131-5d68-568a-b9c9-53653cbcf43a', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('bfe4e1d0-17b5-5d1d-abd2-85d0a02dc69a', '6145b66a-51d2-53c1-a248-3323aefcbcdd', '982b7bc8-7e78-5caf-9f3a-304ba4dc2fca', 500, 'g', NULL), +('fd772699-f936-5acb-8658-26f99bf81c08', '6145b66a-51d2-53c1-a248-3323aefcbcdd', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('b290b56f-3f0a-5e83-8449-41e1a0eb2bea', '6145b66a-51d2-53c1-a248-3323aefcbcdd', 'e885a4ab-d856-5b71-9312-11c823ebcb84', 2, 'củ', NULL), +('3482edf9-f846-531f-ac0c-7e797a8893a4', '6145b66a-51d2-53c1-a248-3323aefcbcdd', 'ea000042-1111-2222-3333-444444444444', 1, 'củ', NULL), +('a78d2ac3-acce-505f-93dd-9b80ab0a9fb0', '6145b66a-51d2-53c1-a248-3323aefcbcdd', 'd63c24c4-d607-5d62-b1f0-e80096546ff4', 1, 'quả', NULL), +('55b9a865-9dd3-5feb-ad6e-19ba1e8c894c', '6145b66a-51d2-53c1-a248-3323aefcbcdd', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 1, 'củ', NULL), +('8f7dd079-e3da-5246-95b4-d99ef0d8d849', '6145b66a-51d2-53c1-a248-3323aefcbcdd', '2a3a30ad-da89-5a03-9aa8-527de4995181', 50, 'g', NULL), +('936affca-d58e-510e-87b9-cbc8f95a4cbd', '6145b66a-51d2-53c1-a248-3323aefcbcdd', 'f2d36159-4749-5c9c-95d7-e6307c768aeb', 80, 'g', NULL), +('50beb794-2aab-5a05-ad36-852d1956ac45', '6145b66a-51d2-53c1-a248-3323aefcbcdd', 'b206a08c-f72b-5173-9af6-ac76b1b0ff92', 80, 'g', NULL), +('195727dc-e797-5ef5-acf3-d8d9fbbeabfe', '6145b66a-51d2-53c1-a248-3323aefcbcdd', 'e845c210-e74a-5695-8e6c-de726bedd8e9', 100, 'g', NULL), +('1796e964-bd66-54f4-866b-208f42e91a4c', '6145b66a-51d2-53c1-a248-3323aefcbcdd', 'e1071dc8-2c05-52ed-8d41-74c030ac4986', 20, 'g', NULL), +('5a539d81-f281-557f-a987-84d5569d5ea2', '6145b66a-51d2-53c1-a248-3323aefcbcdd', '3eab0744-8bb5-5885-be4e-4a328e682c4e', 5, 'g', NULL), +('2202a9ef-7715-5baf-9469-477a22e664dc', '6145b66a-51d2-53c1-a248-3323aefcbcdd', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('271c5df5-c5c5-5e3b-9edb-a6b5ced0cd71', '6145b66a-51d2-53c1-a248-3323aefcbcdd', '9a61c2b5-63c6-5d47-b42a-2c823a6ee202', 5, 'g', NULL), +('2389b239-7fe9-581b-a8a9-822e9528b51c', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', '1c3a23b2-7c40-5ad2-b1ef-c24e2515e956', 200, 'g', NULL), +('ffeae981-00ec-5c87-92b5-174bdec2f6a3', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', 'f9fec473-971f-55bd-8f91-daece04470d7', 40, 'g', NULL), +('7ec6a037-b125-524a-a621-06b05e80008d', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', '0595657d-790b-5c3c-bde1-d2637bfb2263', 30, 'g', NULL), +('3867300d-3acd-546e-ad51-b22fce25d406', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', '1168611c-f633-546f-8f57-bb6e64d5554a', 30, 'g', NULL), +('19cb70e2-7618-54f1-9b01-2b60d19fc67e', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', '677e06b4-2913-50ac-9d18-1a37804ebc1a', 100, 'g', NULL), +('f9316ca1-d0e7-52f8-b9fe-163673b9f860', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', 'ea000004-1111-2222-3333-444444444444', 4, 'quả', NULL), +('7412e9f5-3bd6-5016-b667-a18f75ecde88', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', '274170c8-124a-5427-912b-b610a6a70a23', 2, 'trái', NULL), +('6c0c28b4-69fa-518f-9bf0-eed68f402af0', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 2.5, 'g', NULL), +('9d1bd5f5-a2e6-5449-aee4-f9532a05f922', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', 'af2bc91a-1e49-5c64-97c3-866397e23213', 15, 'g', NULL), +('38327de1-ac08-57ff-8c70-22fecfc3815b', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 10, 'g', NULL), +('a835c51a-fcfa-52a6-9b5a-82540bbf183b', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('fa283bc1-baf1-5c09-9a9a-15b55ec2975e', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('690bb7bc-2629-5d0b-93eb-a222d9eb793f', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', 'b3810951-f282-5566-a028-894730e0528a', 80, 'g', NULL), +('fbdd106e-f5ad-523b-a13c-6ac14f38ae29', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', 'd4475c8a-592a-5118-8358-2de506a90a19', 100, 'g', NULL), +('a5a9a03e-df10-5088-ae4a-538127f0a0ed', 'f6c73bfe-6c74-506f-a02b-5a16e99072bc', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('8cbe267b-33a6-589c-ae8f-607f9a2bac6e', '092689e4-d9d8-533d-964e-8224b8b0dcf2', 'e58563bc-fbf6-5cbd-8471-f575dde30e16', 300, 'g', NULL), +('2c7a283c-f504-565a-8010-5e68b2a24f0d', '092689e4-d9d8-533d-964e-8224b8b0dcf2', '5e4fef89-6a79-5c04-9c4b-6e50b4ef8b41', 100, 'g', NULL), +('8d5c8b54-916e-5958-9e6a-1122e8524f15', '092689e4-d9d8-533d-964e-8224b8b0dcf2', 'd5bb3bc9-81ca-5eaf-98ba-911a82fe6496', 100, 'g', NULL), +('c463c545-9f48-5741-80d5-59e2af672d54', '092689e4-d9d8-533d-964e-8224b8b0dcf2', 'a20f5511-494b-5e16-95b7-ce0701181bb8', 100, 'g', NULL), +('2e04afb2-799e-5449-a4b3-f4dc46b4bcc6', '092689e4-d9d8-533d-964e-8224b8b0dcf2', 'd3fe4466-cc31-5399-a49c-6b0829a6ca56', 100, 'g', NULL), +('0250e53a-5056-58d3-93b7-5b6fdd63fdf1', '092689e4-d9d8-533d-964e-8224b8b0dcf2', 'e99d4001-8d09-5d01-a0e1-cf3f2752d9bd', 80, 'g', NULL), +('a4c40a24-0b42-5a3c-bdff-67a7ae52b95e', '5a2a9387-2330-5d76-a54d-b4e96778dcb1', '1cacb40e-f546-5ac4-b592-7eb238cecff7', 2000, 'ml', NULL), +('cb551d13-45a6-5c31-a2cf-2f6c485bd58e', '5a2a9387-2330-5d76-a54d-b4e96778dcb1', 'ea000010-1111-2222-3333-444444444444', 100, 'g', NULL), +('bf95efb3-d630-570f-b3a3-8dc33015ed21', '5a2a9387-2330-5d76-a54d-b4e96778dcb1', 'ea000023-1111-2222-3333-444444444444', 40, 'g', NULL), +('3204d204-29f6-5ccb-ae3a-7a332f2b41d7', '5a2a9387-2330-5d76-a54d-b4e96778dcb1', '09f86239-76c0-512a-ad02-f9ff2f45c5ff', 60, 'g', NULL), +('a87c9713-1aa2-5c7c-b7da-b4d69c663960', '5a2a9387-2330-5d76-a54d-b4e96778dcb1', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('96ec1485-49bb-588b-9c53-24e2b396a8bf', '5a2a9387-2330-5d76-a54d-b4e96778dcb1', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('ecb2c695-f3ef-57fd-8b20-a984f02c252c', '5a2a9387-2330-5d76-a54d-b4e96778dcb1', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 100, 'g', NULL), +('4ffc03b1-4412-5d3f-9516-93e692e31722', '89d3ca24-e709-5249-a8d7-b2e20f5fdf28', '7dc38594-9e93-57f7-8322-d21658edeedd', 1, 'g', NULL), +('79c87d53-1188-59e1-85ee-74d93523340d', '89d3ca24-e709-5249-a8d7-b2e20f5fdf28', '152109fb-25ac-55cc-ad5a-341010f2bb98', 2, 'chén', NULL), +('67c9b605-2a86-5fab-a534-095d22715809', '89d3ca24-e709-5249-a8d7-b2e20f5fdf28', 'ee8110f9-11dd-5afc-914c-27723fb6e333', 2, 'chén', NULL), +('5065ab83-d13c-5d3e-98ac-a7b942c99458', '89d3ca24-e709-5249-a8d7-b2e20f5fdf28', 'fb2a516d-41a5-552e-aa24-b9b25b2d2796', 50, 'g', NULL), +('2b76d7b4-ff08-5d96-9230-7b57cf1fb4c8', '89d3ca24-e709-5249-a8d7-b2e20f5fdf28', '603bbd6e-e098-5b6e-aa2a-9a6e189cd64f', 20, 'g', NULL), +('3aa43e78-9bc4-5d60-ae8e-dfdaa7225a4a', '89d3ca24-e709-5249-a8d7-b2e20f5fdf28', 'ca64366c-06f4-548c-b824-c9e322532470', 100, 'g', NULL), +('9309b495-2fdf-556a-989e-4d687bcfd754', '89d3ca24-e709-5249-a8d7-b2e20f5fdf28', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 20, 'g', NULL), +('71cecb70-3fdc-5267-be3d-58834d09786a', '89d3ca24-e709-5249-a8d7-b2e20f5fdf28', 'cd06c615-449f-58db-8779-b62195cfc3b3', 80, 'g', NULL), +('d1ef4e63-66d0-5345-be86-1f985e1275d6', '472b03f0-5234-5ff4-8642-107d21a757fe', '43434895-2b8c-59a2-8df6-67137d7b9a47', 200, 'g', NULL), +('41f71d2b-b575-5bd4-a3a2-84ebc7902372', '472b03f0-5234-5ff4-8642-107d21a757fe', 'c67982e5-41d2-5e27-b4d5-6ac379d98601', 15, 'g', NULL), +('4417e67b-b999-5b98-badc-70d60d9d946d', '472b03f0-5234-5ff4-8642-107d21a757fe', 'ea000006-1111-2222-3333-444444444444', 200, 'g', NULL), +('b991754d-92fc-514e-a1f5-ef714d76b45c', '472b03f0-5234-5ff4-8642-107d21a757fe', '6f834874-ecea-5bf3-8147-38ec708d6432', 1, 'chén', NULL), +('03d7f141-8786-55a7-921c-401ccf51756b', '472b03f0-5234-5ff4-8642-107d21a757fe', 'd8260c28-d006-5fed-ae3d-7c58d437431f', 10, 'cây', NULL), +('045280b5-022c-5f32-8d20-c9b7efa46219', '472b03f0-5234-5ff4-8642-107d21a757fe', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('52959421-d025-5957-9da8-e858e6a37c5e', '472b03f0-5234-5ff4-8642-107d21a757fe', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 1, 'g', NULL), +('4917670b-054d-5e5b-9921-28ac246aa9df', '472b03f0-5234-5ff4-8642-107d21a757fe', 'ba3940bb-4b77-5d74-80cb-a42462a155e3', 10, 'g', NULL), +('3c179fed-44c3-56ab-acea-81bbe98a6f1e', '472b03f0-5234-5ff4-8642-107d21a757fe', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 30, 'g', NULL), +('648fef31-d2d4-5f8b-823c-f7385b84a005', '472b03f0-5234-5ff4-8642-107d21a757fe', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 15, 'g', NULL), +('bb1f457f-1209-502b-b66a-0dcee8dc15a5', '472b03f0-5234-5ff4-8642-107d21a757fe', '49c0ae89-9790-56d9-b3b7-0e2cefba6262', 5, 'g', NULL), +('3ee4777e-b793-5c2d-9d2c-276e31654439', '472b03f0-5234-5ff4-8642-107d21a757fe', '99157107-8cbc-5715-97f1-620017377993', 5, 'g', NULL), +('aeb5690c-946f-55f6-bbae-06cd1cec85ed', '472b03f0-5234-5ff4-8642-107d21a757fe', 'eaf1ffa0-44d9-5213-bf92-f14c9ba83da1', 1.67, 'g', NULL), +('7003d605-1bb2-59be-9cb0-7a68c68ab1f8', '472b03f0-5234-5ff4-8642-107d21a757fe', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('48482585-2276-5954-be15-adf8a21b495e', '472b03f0-5234-5ff4-8642-107d21a757fe', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('bdea1af9-b902-5050-b081-6867f94c8b30', '472b03f0-5234-5ff4-8642-107d21a757fe', '6d1d4481-bae6-5af8-a86a-525b20f38c1f', 20, 'g', NULL), +('7eac5eef-b1fb-52da-b2cd-27106d689aaa', '0d6b5a21-80cf-581d-947c-05fae6c04778', '4805aa0d-67ee-5455-8d4e-426993970108', 220, 'g', NULL), +('8cbae4e3-be05-5fc3-8694-c48cb55317f3', '0d6b5a21-80cf-581d-947c-05fae6c04778', 'ea000002-1111-2222-3333-444444444444', 120, 'g', NULL), +('a637bc4d-d4d7-5d98-ad3d-58a61d453831', '0d6b5a21-80cf-581d-947c-05fae6c04778', 'ea000023-1111-2222-3333-444444444444', 100, 'g', NULL), +('d4391f9e-b650-5139-bb14-84144c2022eb', '0d6b5a21-80cf-581d-947c-05fae6c04778', '36d9374a-4dc9-5066-bf57-ded98b96a211', 80, 'g', NULL), +('807e9f8e-d53a-524f-9575-67ef78cfe432', '0d6b5a21-80cf-581d-947c-05fae6c04778', 'b6d42369-8cb3-5cdd-9eec-0a017fffd8a6', 5000, 'ml', NULL), +('97e105c5-cffe-583d-9084-befd84de65b1', '0d6b5a21-80cf-581d-947c-05fae6c04778', '60abf488-564e-56ab-9aaf-e1c416e24c2a', 20, 'g', NULL), +('23cd23af-41c8-558b-8b76-1bb873936a5f', '0d6b5a21-80cf-581d-947c-05fae6c04778', 'b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 40, 'g', NULL), +('a7a611a1-0d94-521e-b8ef-a8db66e5b78f', '0d6b5a21-80cf-581d-947c-05fae6c04778', '18e626bc-96fb-5559-a2e5-de1335d52ddf', 30, 'g', NULL), +('55dba1d0-1b37-521e-be42-a28b190e73d9', '0d6b5a21-80cf-581d-947c-05fae6c04778', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('8ded8dd2-edc9-52ae-9385-f07d1e6cdf25', '0d6b5a21-80cf-581d-947c-05fae6c04778', '301eecc8-c8ef-57c8-a19c-f5288d454a43', 5, 'g', NULL), +('4d316c8a-55c4-525f-a450-9c446b45dc57', '0d6b5a21-80cf-581d-947c-05fae6c04778', 'e599e212-c4e7-507c-a3fe-9704649a9794', 5, 'g', NULL), +('c435f43e-f10d-580c-bfc8-c03848e95366', '0d6b5a21-80cf-581d-947c-05fae6c04778', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 10, 'g', NULL), +('dad1f237-bf9a-581c-86b1-c019b5ae2ab0', 'ad28d0de-c6fb-5e9e-a4e1-c35e55c89da0', '2680c5bb-b9cb-5402-a86c-fe3b8f7148ca', 100, 'g', NULL), +('1a65d4c3-f789-5731-949d-00808809306d', 'ad28d0de-c6fb-5e9e-a4e1-c35e55c89da0', 'd5bb3bc9-81ca-5eaf-98ba-911a82fe6496', 400, 'g', NULL), +('191ae1ee-ae89-567b-99c6-f5ca8c2ebfce', 'ad28d0de-c6fb-5e9e-a4e1-c35e55c89da0', 'ea000025-1111-2222-3333-444444444444', 50, 'g', NULL), +('ac6788cd-c65a-5da3-84f9-705e6362e91d', 'ad28d0de-c6fb-5e9e-a4e1-c35e55c89da0', 'e885a4ab-d856-5b71-9312-11c823ebcb84', 100, 'g', NULL), +('7072df16-4863-5cbe-a932-ec5e8dcc2b88', 'ad28d0de-c6fb-5e9e-a4e1-c35e55c89da0', '7bae084c-9cb8-54ca-ba11-18e407528f23', 300, 'ml', NULL), +('c4e9c7d7-5f20-54c0-b667-e03b70bb8c0c', 'ad28d0de-c6fb-5e9e-a4e1-c35e55c89da0', '351d895c-eaa9-5404-aa02-4a156cb9f483', 20, 'g', NULL), +('cb9b9041-96ae-5add-9afd-76b25fb5579d', 'ad28d0de-c6fb-5e9e-a4e1-c35e55c89da0', '51021484-f4b3-5d82-9678-a84821183f7e', 4000, 'ml', NULL), +('e167498f-dd28-5613-b11e-d8a51e7e8f12', 'ad28d0de-c6fb-5e9e-a4e1-c35e55c89da0', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 10, 'g', NULL), +('50906192-a7ab-516f-a411-b6a4580a7f95', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', '2d1915f5-4d61-502f-b0ef-858f630e82b3', 500, 'g', NULL), +('e071735f-fd67-555e-8524-27b003fafe62', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', '0beaeb64-12ff-5d1f-8bba-c5a6fd242079', 60, 'g', NULL), +('c688fd15-c5f9-51c1-8108-9bf28e579b24', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', '283ed961-3d2a-50e7-a293-6d3e09be8e31', 10, 'g', NULL), +('8b9a4f94-a870-5497-8cbc-8166bf37a71f', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', '388eee9b-99af-5992-9740-ae4361ee4d4c', 10, 'g', NULL), +('389febc7-ecf9-592b-ae2f-6da25c865ec9', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', '038b9e57-c78d-500c-a529-c7119af3156d', 30, 'g', NULL), +('98821837-7487-53c0-a3eb-49e0c168401b', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', 'dead3bbc-2abd-5944-bc62-13eb3972e985', 7.5, 'g', NULL), +('9ced22cc-c784-55aa-b14b-db3725eb516f', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', 'f2da5201-befe-5315-a03b-119ab86c15d8', 50, 'g', NULL), +('cca0edd9-7e9e-5168-a5c8-0bc088ea8309', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', '300b9a61-bd25-5035-8b3d-f3b094c3dca7', 20, 'g', NULL), +('32708ffc-5253-5384-bb82-ce663c836ecb', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', '301eecc8-c8ef-57c8-a19c-f5288d454a43', 15, 'g', NULL), +('6a2f6ab1-2e73-5bee-a20d-b76598e53a95', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', 'ea000008-1111-2222-3333-444444444444', 15, 'g', NULL), +('b90706d7-8e53-5992-9921-c9552bed4cd8', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('a6a49b82-cbad-5ee6-808b-e90346494687', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('c5a50b2b-917f-5fcf-bd38-5a1c43a6d6ec', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 30, 'g', NULL), +('cfc76740-7b0e-54a6-8001-101f2e80246b', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', '5368ee26-d352-52fb-b552-47575574ece4', 5, 'g', NULL), +('2bfa605e-3d96-5dda-afce-6336a983a548', 'a1cd7b4d-3973-5e15-8d9e-31093d1e2923', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('f8a38087-0f21-569a-9567-f91c2cbaf034', '4836b3d9-e3eb-5095-a332-b69f6db7342d', 'ea000026-1111-2222-3333-444444444444', 80, 'g', NULL), +('1a526ae8-26da-59ec-8257-22022146d458', '4836b3d9-e3eb-5095-a332-b69f6db7342d', '288e2c53-d0ac-54c7-bd51-c3216933933b', 30, 'g', NULL), +('fe556274-f4d2-5096-bec1-f6a3bd35fed7', '4836b3d9-e3eb-5095-a332-b69f6db7342d', '775745eb-af9a-5af7-909c-49d3585be406', 15, 'g', NULL), +('62f4fd25-e698-5533-9369-8a5ceaa3ee5f', '4836b3d9-e3eb-5095-a332-b69f6db7342d', 'ea000004-1111-2222-3333-444444444444', 1, 'quả', NULL), +('afb22e0e-7856-5b47-95a7-0940de398b23', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', '397de771-d68f-5d3b-b228-8fc7edd3985a', 104, 'g', NULL), +('bd254c31-f181-5689-90da-c3d004322fca', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', '81f504a5-b42d-5e0f-bf6f-bb33cebbb593', 30, 'g', NULL), +('0b41d60a-39cf-58fa-9286-ad75ca07648e', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', '5a62ba4e-40c3-5969-afbc-21dfeff8e81d', 20, 'g', NULL), +('80424285-9fa1-5f45-9c48-01545ee6a975', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', '09f86239-76c0-512a-ad02-f9ff2f45c5ff', 30, 'g', NULL), +('6c3e077e-f35e-5068-8fc8-b300ee61877d', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', '4d4f8f96-07d0-5c63-8d42-c1616901be27', 50, 'g', NULL), +('b9dc5af2-faa3-50f0-bc84-a697b3ce0bc6', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', '1f1dc666-1e72-59b6-8241-0d7d511d2332', 5, 'g', NULL), +('fdf19f34-21f6-5901-8836-e409eb34a3fc', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', 'ea000025-1111-2222-3333-444444444444', 25, 'g', NULL), +('ff81a622-9e17-54ec-8258-ee8b9a974b72', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 2, 'tép', NULL), +('02fd6a99-9002-5cca-8473-3f7e67b73d53', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 5, 'quả', NULL), +('425d1303-a703-5d31-a089-0c058d5eeafb', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 75, 'g', NULL), +('b5afab41-2ab2-5097-b6eb-c49f56bd2bf9', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('abddb0fb-326f-5d9b-b9bb-5b746c2bece0', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', 'ea000044-1111-2222-3333-444444444444', 30, 'g', NULL), +('499742b8-1fc3-5246-bd85-466a41a4bfe2', 'fb2e7c2c-3b91-53c3-83ea-a8ba47e103bc', '19cec053-aed7-5719-82c5-b44b9e897f44', 5, 'g', NULL), +('2519757a-9d86-5c75-a4b5-9d3591cb12ce', '929bca5b-08ac-5980-99cb-5b1416022b57', '22049415-0e05-5c67-89e2-76ec815819dc', 250, 'g', NULL), +('163b75b0-1081-508c-96b9-15ca1f208132', '929bca5b-08ac-5980-99cb-5b1416022b57', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 1, 'cm', NULL), +('6bf4512b-9682-529d-be98-0f265364cc37', '929bca5b-08ac-5980-99cb-5b1416022b57', '167bb0c4-4215-53b7-ab97-e97744904e73', 1, 'quả', NULL), +('f75f40a1-7d4c-5876-99e8-5a552a2a7ad7', '929bca5b-08ac-5980-99cb-5b1416022b57', '5c9f0cd4-9133-5599-b2b9-cb23f64e7bef', 0.5, 'quả', NULL), +('19c42400-3f80-5b12-9e9b-278ee7297579', '929bca5b-08ac-5980-99cb-5b1416022b57', 'dc397aa1-aee4-5d5a-8ba0-5f384e92d98c', 60, 'g', NULL), +('4ce55f6e-12d2-5ff9-96c4-cf54b4c349d0', '929bca5b-08ac-5980-99cb-5b1416022b57', '452953fe-297f-5958-9397-53c694db5fe6', 15, 'g', NULL), +('8d88c18a-d90c-5d2e-883c-cdb5cf3b2397', '929bca5b-08ac-5980-99cb-5b1416022b57', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('b0740d32-b7fb-5f79-ad1f-defd0d584364', '929bca5b-08ac-5980-99cb-5b1416022b57', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('70e0bcdc-7342-5719-9a1b-6eb051750bf8', '9216c504-a8b1-531b-8b92-c14531cc6dee', '626b0f6f-d701-5c63-bd4d-ce664d6fac7b', 200, 'g', NULL), +('02e54c06-2a63-563c-a96e-de9f8591c82f', '9216c504-a8b1-531b-8b92-c14531cc6dee', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 100, 'g', NULL), +('f625df88-277c-5aff-adea-8c7c63f52b60', '9216c504-a8b1-531b-8b92-c14531cc6dee', 'ea000023-1111-2222-3333-444444444444', 100, 'g', NULL), +('e8d08e9e-be8d-5877-bceb-55d669e6dac8', '9216c504-a8b1-531b-8b92-c14531cc6dee', 'd3fe4466-cc31-5399-a49c-6b0829a6ca56', 50, 'g', NULL), +('249f8a03-13d8-5cc5-9bbf-fe04a847e2cd', '9216c504-a8b1-531b-8b92-c14531cc6dee', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('82e43765-d661-5066-9013-84464b604e70', '9216c504-a8b1-531b-8b92-c14531cc6dee', '526abffe-e08a-52ce-afef-b9f45ec99ee8', 80, 'g', NULL), +('7c1906b5-8ccb-5d1a-ad50-912d2261b352', '9216c504-a8b1-531b-8b92-c14531cc6dee', 'a51d0788-4ff5-538d-8719-9c54387b6af7', 1, 'quả', NULL), +('d476b509-f149-564e-a26e-e82ca666cae8', '9216c504-a8b1-531b-8b92-c14531cc6dee', 'ea000008-1111-2222-3333-444444444444', 15, 'g', NULL), +('cd976089-c330-5cec-82d5-9f7f03a5294f', '9216c504-a8b1-531b-8b92-c14531cc6dee', '1ddf13c6-e4f7-5042-a801-62cb588e2dbd', 7.5, 'g', NULL), +('395960c6-3643-5869-9d67-d43896ab87cf', '9216c504-a8b1-531b-8b92-c14531cc6dee', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 1.25, 'g', NULL), +('b04741b4-e2fd-5832-ae59-b3c3c4dc97b2', '9216c504-a8b1-531b-8b92-c14531cc6dee', '679a3e05-1ba1-5eb0-b224-54b3479496ef', 5, 'g', NULL), +('06569fd8-50b7-55e7-b83d-e98352e32ec9', '7d4d2c2b-cc00-5658-b708-64600e0e697e', 'b7eded36-191d-54f0-8099-3c6bf43a22e9', 250, 'g', NULL), +('0b0405c7-07d3-5f04-a0ad-fbfb04441e7b', '7d4d2c2b-cc00-5658-b708-64600e0e697e', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 3000, 'ml', NULL), +('f681e3b0-1156-500a-a578-1e306f06fcb5', '7d4d2c2b-cc00-5658-b708-64600e0e697e', 'b1f10871-8e53-5ea5-a308-22481aed78e5', 0.5, 'quả', NULL), +('ef58b165-64b4-5769-b8e4-f413017c3931', '7d4d2c2b-cc00-5658-b708-64600e0e697e', 'ea000023-1111-2222-3333-444444444444', 1, 'quả', NULL), +('3428c4d5-480e-51b9-ad41-fe1598407919', '7d4d2c2b-cc00-5658-b708-64600e0e697e', 'cb3f4e5d-3359-5345-9bc9-ff725d2e08f2', 1, 'quả', NULL), +('1ed7e8b0-529d-54d5-a706-29017ad8c66b', '7d4d2c2b-cc00-5658-b708-64600e0e697e', '189e4982-e150-59bf-aaf2-7227ccb9d61a', 100, 'g', NULL), +('abb1bac4-0c21-59fc-8954-5d71b76a574e', '7d4d2c2b-cc00-5658-b708-64600e0e697e', '39017257-e1ad-5e0f-b64e-72aed5aab414', 1, 'chén', NULL), +('d753cfaf-1b1f-5fe0-b422-3a71b0fc0d1c', '7d4d2c2b-cc00-5658-b708-64600e0e697e', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('aabc014b-160d-5c1c-bda7-e66741e6369a', '7d4d2c2b-cc00-5658-b708-64600e0e697e', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('beb47b1c-9323-520f-a8bd-08c9e134ef13', '7d4d2c2b-cc00-5658-b708-64600e0e697e', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('08661249-0b78-5c0d-9fec-172e069b244a', '7d4d2c2b-cc00-5658-b708-64600e0e697e', '646b8a0b-5634-5896-a217-b82ebcbf30f6', 20, 'g', NULL), +('d4a45be1-8e63-5140-9773-9ba7baca9c0e', '7d4d2c2b-cc00-5658-b708-64600e0e697e', 'ea000008-1111-2222-3333-444444444444', 20, 'g', NULL), +('1e80ff6f-3cb2-52ad-94a3-a29d94ad9d27', '7d4d2c2b-cc00-5658-b708-64600e0e697e', '99157107-8cbc-5715-97f1-620017377993', 100, 'g', NULL), +('82a13f2e-dfac-5c77-97a7-c24bb46595f3', '7d4d2c2b-cc00-5658-b708-64600e0e697e', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('e64e2ea1-1e5c-528e-aa32-cb175e79e896', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '6c1ec9f9-0406-5616-82a9-9082034cc0f8', 200, 'g', NULL), +('f09dd2af-b4c9-5614-81d6-595b242c9d15', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '8c0c2675-bbd6-53a0-8866-ba8a18cd79e6', 120, 'g', NULL), +('e019cdfd-cef5-5022-b785-bcda84fa2914', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', 'efeb23c5-a0a9-5b89-9374-900157422667', 100, 'g', NULL), +('812c3095-fa1b-504b-863d-1573c63724e6', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 100, 'g', NULL), +('8a27e29c-4215-5f83-a974-749a82ab477a', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', 'b8724dc0-7281-5b6a-b7f9-3c281e3fae8e', 80, 'g', NULL), +('0eb21b57-5c66-52de-b116-2207f7fd8575', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '90b7e33a-9c83-50fb-ba16-b472b1266893', 20, 'g', NULL), +('f1f8d59f-71fc-5fed-ae54-dc094bc3cf37', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('637ad896-c277-5876-becd-d3575ab61af5', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '03e78404-c903-5e9a-ad2b-5dd137c65eb6', 30, 'g', NULL), +('e6c53ff2-4fe3-5e98-ac97-68723f045ee2', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', 'b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 20, 'g', NULL), +('4d9439b2-0722-5627-99e2-2d0d19e24201', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', 'b2d624b7-88bf-5389-9572-25ce188893dc', 5, 'g', NULL), +('00c0feee-7bd3-5b93-ba04-9315d6ad7ca3', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 2.5, 'g', NULL), +('224f607c-fef3-54cd-9adc-2dc4b61d49cb', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2.5, 'g', NULL), +('9160a2e6-afd8-5286-b65d-5276274b20c7', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('a700e602-6bdf-5880-aa22-861e1e8b637d', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', 'cff07683-f25b-5db5-b0a1-fadf7016f351', 60, 'g', NULL), +('7d3d5465-daea-577b-83d8-dd2f0dc11b74', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '301eecc8-c8ef-57c8-a19c-f5288d454a43', 20, 'g', NULL), +('314f5aa4-6363-54fd-b12e-22f4a93c12e4', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('7cfd3489-5886-570f-ba2b-239db6176d3a', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('91c95a95-7437-55bd-a4c4-6ea451e06b6d', 'caa87882-7965-5325-a3d7-4fb3d76b1a6b', '6d1d4481-bae6-5af8-a86a-525b20f38c1f', 20, 'g', NULL), +('6c3a4910-3239-5064-be07-340442d1fdf3', 'bffba155-1dd7-560b-bebc-461233f76b6e', '47916239-0e29-598c-b01a-4687f4c52475', 300, 'g', NULL), +('b705a131-834a-5828-a9b8-986effd1f6a6', 'bffba155-1dd7-560b-bebc-461233f76b6e', 'c8452033-3b19-50a2-abf5-881882d59aed', 150, 'g', NULL), +('1dc98703-218d-5c53-87e0-57ef8fde34f8', 'bffba155-1dd7-560b-bebc-461233f76b6e', '2a25ae01-c36e-588e-ac7c-2718a9e78c0f', 250, 'g', NULL), +('b92cfe97-059c-5753-b19e-b94a4c890695', 'bffba155-1dd7-560b-bebc-461233f76b6e', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 7.5, 'g', NULL), +('cf4da4d7-06a1-5216-a31e-aad5fd0e1853', 'bffba155-1dd7-560b-bebc-461233f76b6e', 'ea000004-1111-2222-3333-444444444444', 0.5, 'quả', NULL), +('b79d262b-f7e2-5dfe-a856-d08da96c8b26', 'bffba155-1dd7-560b-bebc-461233f76b6e', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('daabd357-c1e1-58ca-b791-b1d5157299d6', 'bffba155-1dd7-560b-bebc-461233f76b6e', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('e7092a57-aacf-524f-9826-92c699d9a3ec', 'bffba155-1dd7-560b-bebc-461233f76b6e', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('2added8c-19cd-54c1-873e-ae40e6bd0422', 'bffba155-1dd7-560b-bebc-461233f76b6e', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('bba2eb37-bbac-5082-abef-c9646664fd27', 'bffba155-1dd7-560b-bebc-461233f76b6e', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('842c2a97-de03-50ee-b476-8c5984be9b85', 'bffba155-1dd7-560b-bebc-461233f76b6e', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('e878dc22-b783-573c-ac95-86b944a5a686', 'b553c9fd-4b72-51a4-84bd-f9497b6ce417', '23fd8ef2-e68c-53a1-8b37-16d989cd41cb', 80, 'g', NULL), +('89cba494-11bb-5bb2-85a2-3fcec6e4bf1d', 'b553c9fd-4b72-51a4-84bd-f9497b6ce417', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('372edf0f-ff0a-5bdc-bfd4-68b16d527ad8', 'b553c9fd-4b72-51a4-84bd-f9497b6ce417', 'ea000023-1111-2222-3333-444444444444', 100, 'g', NULL), +('6d6f750d-cb5f-5e46-bcd0-3de8cc09b92b', 'b553c9fd-4b72-51a4-84bd-f9497b6ce417', '7f4fdcbc-054b-579a-8128-b7cf5065eca0', 100, 'g', NULL), +('9d32d951-6045-5953-97ed-4b2d8fa27d9d', 'b553c9fd-4b72-51a4-84bd-f9497b6ce417', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('d54e0821-4769-57af-b1c4-d018de145c2b', 'b553c9fd-4b72-51a4-84bd-f9497b6ce417', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('f9d4a048-3b6d-5778-b125-81e555f33093', '0d1b3076-1af4-589d-8ff0-09da26781fb4', '4c3dbc44-6156-5901-93a9-e0f1b29b2f73', 400, 'g', NULL), +('f8b6beab-8c31-5e6a-8efe-29449d885e2d', '0d1b3076-1af4-589d-8ff0-09da26781fb4', '99a78ed3-82eb-5862-8011-e56cc4611f01', 15, 'g', NULL), +('7fa53db2-431e-5367-b9b9-625b7696f50c', '0d1b3076-1af4-589d-8ff0-09da26781fb4', 'b022ec51-1f8d-575b-913c-22164c09829e', 2, 'cây', NULL), +('c4bfeb49-1349-5852-9bc4-aee693a4f1dc', '0d1b3076-1af4-589d-8ff0-09da26781fb4', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('963045ef-1174-5898-a4d6-c44e50eaca8e', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', 'd1f7acce-5d01-5268-a93e-53dc345fc4e7', 150, 'g', NULL), +('b899c64a-14a0-5683-8710-5b152b4b344a', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', '7dc38594-9e93-57f7-8322-d21658edeedd', 150, 'g', NULL), +('c19c65f1-e8cc-589b-b1a5-00d0dd5225be', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', '5c90d2f0-bbb2-59c1-b6d0-3e6f0f4cdff1', 6, 'quả', NULL), +('2c7e7813-dd27-5ce9-b2cf-aa1dd663f318', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', 'ea000042-1111-2222-3333-444444444444', 100, 'g', NULL), +('245460a1-0274-5355-b764-395c55433da8', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', 'ea000010-1111-2222-3333-444444444444', 100, 'g', NULL), +('35e2bc9b-1b7e-5a17-90ad-84de3138c91e', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', 'e33dbe29-6989-50dc-9159-768c8500ae5d', 60, 'g', NULL), +('5e02abfc-2c32-594b-b80c-b4f29c6c8565', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('e7c7cd53-9113-5a92-ba61-72c73c2b6a16', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('3f068b0a-efc3-51a1-abad-c4ea2383c229', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('e0ffbaf0-b4ef-5697-9505-3922d61e25a2', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', 'af2bc91a-1e49-5c64-97c3-866397e23213', 80, 'g', NULL), +('b24a3079-7228-540e-8682-3ec29bb48502', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('76f07ba9-1d14-58cb-ad33-a659651ea778', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('707faae6-c9c1-5be9-a744-28ef1d4d2685', 'a44ca648-7eb4-5c7a-af55-54df50ad0c27', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('1870a3f5-707a-5f68-9222-a7860c92636a', '4708d25c-b8e8-5cf8-8bb9-2cf3f60fb3e6', 'aeca23cb-829e-5011-9483-af8a826e6429', 50, 'g', NULL), +('cd91e0dc-6012-529d-9023-40e21175a32f', '4708d25c-b8e8-5cf8-8bb9-2cf3f60fb3e6', '03352f39-1d36-5eb3-b23b-43824e253fdc', 50, 'g', NULL), +('127a9a21-55c2-546d-9f29-79f8b880a1b6', '4708d25c-b8e8-5cf8-8bb9-2cf3f60fb3e6', 'ea000025-1111-2222-3333-444444444444', 2, 'củ', NULL), +('ac434e46-8eb0-57a7-9f26-67087f4bad11', '4708d25c-b8e8-5cf8-8bb9-2cf3f60fb3e6', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('d4579940-5019-5bc0-b410-e70a9d96ea26', '4708d25c-b8e8-5cf8-8bb9-2cf3f60fb3e6', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 20, 'g', NULL), +('e9f6320f-ad23-5158-99ec-96c9065e6874', '4708d25c-b8e8-5cf8-8bb9-2cf3f60fb3e6', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 100, 'g', NULL), +('48c2eb98-545e-589f-9324-57783c2c7322', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', 'f6c7bb7a-c96c-5a9f-ae0d-0546c6bb4ba9', 40, 'g', NULL), +('decf3bbc-50fe-5616-92f6-cabbdc827e50', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 3, 'nhánh', NULL), +('e579a45a-0552-5d6a-96c8-efbf82be5cc0', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', 'c771f986-30a3-529c-8f78-de6152d7d118', 150, 'g', NULL), +('8cedcb3b-1319-5738-8b05-ce18030e5efc', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', 'bf54e119-5ab0-5b6c-b2d4-f8f15119bb2f', 90, 'g', NULL), +('dff2b37d-40c1-5fc1-bb99-d18fedf4dc77', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', 'd18203ed-13ea-59ab-8859-056331896798', 1, 'chén', NULL), +('0b9138b9-5241-5166-921b-0a0786e8b84f', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', '4e706f33-b81b-53ab-b88a-d3bc03c1a8c2', 5, 'g', NULL), +('19508bd7-dd7d-561a-8973-2981b1bd32bd', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('c1af2b49-eec9-5206-b0a2-d6e47f6cd603', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 30, 'g', NULL), +('d1db44f5-938f-55e6-9f9b-19e579a3b4de', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('855cf19d-59cb-5b11-86f5-71c84fa33534', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', 'b84ac3c1-2460-5abf-ab3f-264c9c61d46e', 15, 'g', NULL), +('bc9a21d6-80e5-564f-9c25-e78a680be27b', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('0c983cbb-edca-5361-9cd0-361faa204619', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', '4acc893d-05d8-5346-9fe4-1eedd96fcf22', 1, 'chén', NULL), +('a95fb90b-c3c4-5a8b-9fec-8fc24d620ded', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', 'd4475c8a-592a-5118-8358-2de506a90a19', 4000, 'ml', NULL), +('48ff0deb-676d-5816-9db1-8b5a6c4912a0', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', '8a216df6-d053-5fcd-8d46-92cb41669b35', 0.5, 'trái', NULL), +('526633f8-2b5f-5973-b266-86b2dbb776ee', 'e6391d6c-0ca8-55cb-ae43-3c7874b85cc2', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 7.5, 'g', NULL), +('0b55a898-ad57-5eda-aee3-65d6152a3d0e', 'ba682b34-43fa-5754-974f-d9567b75149e', 'ea000004-1111-2222-3333-444444444444', 1, 'quả', NULL), +('5ff30e4a-ce12-5680-863b-61afe0331c05', 'ba682b34-43fa-5754-974f-d9567b75149e', 'ea000005-1111-2222-3333-444444444444', 100, 'g', NULL), +('a0ade844-32ac-593d-912b-3fefd732de60', 'ba682b34-43fa-5754-974f-d9567b75149e', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('f4b079c3-3ee9-56a3-8071-4f218d475ae3', 'ba682b34-43fa-5754-974f-d9567b75149e', '54128f95-7235-5a83-8a38-20e49c986645', 40, 'g', NULL), +('cb36bced-65ff-5396-aafd-9c6e0c283243', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', 'dc1189f0-95ab-52f8-a010-e29e2019e0ba', 450, 'g', NULL), +('327201c4-5564-51bf-b80e-2cc2ad00b4d8', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', '0dd3040b-d8dc-5d59-a885-7601278304da', 100, 'g', NULL), +('247832e7-c242-5ac1-b9c0-486374862695', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', 'ea000042-1111-2222-3333-444444444444', 30, 'g', NULL), +('589791c5-4c0e-5ef2-b5a8-d69a40e768b8', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', 'be6eb687-a42d-5d28-909d-b79aca852000', 30, 'g', NULL), +('6dc8e212-d151-5025-8de3-509f64f31d6d', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', '7e666b30-7a9f-58c2-8f0f-23d05b3f6b35', 30, 'g', NULL), +('d6be1aa0-200b-5f3f-ba00-c4627c5aa780', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', '00223bd2-e82f-5f62-9159-d1b76bfad812', 50, 'g', NULL), +('c53154ae-3425-52fa-be69-1fb5e0a12a82', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', '526abffe-e08a-52ce-afef-b9f45ec99ee8', 30, 'g', NULL), +('712f139c-64f3-57ff-b291-e1b0a4b59c74', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 6000, 'ml', NULL), +('2c99f7d9-5b53-59cf-a5e4-b774c1eb8dcf', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 8, 'g', NULL), +('09f99478-35e8-5d8b-aadd-02fefca1e7b3', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('8425e246-1324-5d62-82a6-c5200fafd7d3', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', 'af2bc91a-1e49-5c64-97c3-866397e23213', 7.5, 'g', NULL), +('1f305ce0-172c-51d0-8ade-6829a6bc3db3', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('ffe65cf2-3bd8-5af4-9062-2c27f43632aa', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('7fef912f-62d7-5bae-9b5a-d4d5ccae2360', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('4fc60ba3-513f-5eef-8d38-24fdf924dc96', '5ccea86e-023d-53d1-a059-0cfb87b2eaf4', 'ae7b4979-1e04-5b16-b450-5bd36c7e5453', 80, 'g', NULL), +('aa1c4b80-f8a0-5984-9912-4972cfdaeb50', '0064573b-0268-516e-8301-15f9bc40b7ac', 'b30db8fd-855d-5155-94a8-b3bb057092d8', 150, 'g', NULL), +('5f0264e1-5373-57eb-b11f-7499f6575aed', '0064573b-0268-516e-8301-15f9bc40b7ac', 'd8260c28-d006-5fed-ae3d-7c58d437431f', 8, 'cây', NULL), +('d51f0ebe-7e15-5f2c-879f-0d7fff5f8413', '0064573b-0268-516e-8301-15f9bc40b7ac', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 0.25, 'trái', NULL), +('16ae8cf3-4e08-54b7-8c42-e2c321d59c65', '0064573b-0268-516e-8301-15f9bc40b7ac', 'd3fe4466-cc31-5399-a49c-6b0829a6ca56', 70, 'g', NULL), +('56720cf3-8af2-5942-973f-69c1cac4e33a', '0064573b-0268-516e-8301-15f9bc40b7ac', 'ea000042-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('78df1e31-fafc-55ec-9d29-795ec7b4e6ff', '0064573b-0268-516e-8301-15f9bc40b7ac', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('bc944569-de6d-5f84-9156-1b99277ca7f1', '0064573b-0268-516e-8301-15f9bc40b7ac', '9cf89ba0-7d95-5d7e-910f-bf95008956cd', 80, 'g', NULL), +('7d289092-ac50-5d1d-ad76-826442c0cf60', '0064573b-0268-516e-8301-15f9bc40b7ac', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('67c3199b-fea6-5f55-ae69-e5e4045376ef', '0064573b-0268-516e-8301-15f9bc40b7ac', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('465cb086-3838-52cc-bfce-d647da4e8e52', '0064573b-0268-516e-8301-15f9bc40b7ac', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('676111d1-af92-5a20-9ecc-7e8fd7c5d860', '0064573b-0268-516e-8301-15f9bc40b7ac', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('028efd7d-3303-58e8-a6ee-589f8c7a7606', '0064573b-0268-516e-8301-15f9bc40b7ac', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('19a313b5-33b6-5d21-a3f5-02e180fff1dc', '0064573b-0268-516e-8301-15f9bc40b7ac', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('ee3635e3-d457-54d8-bd0b-fee562a69b18', '0064573b-0268-516e-8301-15f9bc40b7ac', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('f819fb02-87bc-5995-ac58-199806a1a44b', '3f80e2d5-5d39-5740-9a50-251e1d26ed53', 'c27eef97-5820-5a92-9eb7-afe0c31d4032', 150, 'g', NULL), +('7639c254-e0eb-5b17-849f-f1035522a150', '3f80e2d5-5d39-5740-9a50-251e1d26ed53', '6c1ec9f9-0406-5616-82a9-9082034cc0f8', 150, 'g', NULL), +('1c7aabc8-1a02-50f5-97c4-1e9721618adf', '3f80e2d5-5d39-5740-9a50-251e1d26ed53', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('a84ddd8b-ebc4-5dc8-8de5-8d151b84752e', '3f80e2d5-5d39-5740-9a50-251e1d26ed53', '973ecfb6-692c-5343-9029-40bd789b3782', 100, 'g', NULL), +('d0949d40-48a4-5a03-bd82-d43b7df8694c', '3f80e2d5-5d39-5740-9a50-251e1d26ed53', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 30, 'g', NULL), +('8eab5eae-3f44-525e-a2ae-f0ea470c2121', '3f80e2d5-5d39-5740-9a50-251e1d26ed53', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('9f5d058e-dd33-505f-a5c4-571b76ad7f80', '3f80e2d5-5d39-5740-9a50-251e1d26ed53', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('95905525-5270-5076-b0ff-323aa6fa9ac0', '3f80e2d5-5d39-5740-9a50-251e1d26ed53', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('51419f33-665d-5261-9237-ad7493120687', '3f80e2d5-5d39-5740-9a50-251e1d26ed53', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('4545b7c2-c0e0-555c-a741-f57fa915000d', '3f80e2d5-5d39-5740-9a50-251e1d26ed53', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('038b5a9e-1a46-552a-87ae-1fe2589cca28', '3f80e2d5-5d39-5740-9a50-251e1d26ed53', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('52e833ab-1d7c-54ca-9169-0dfe8d2edcb1', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', '397de771-d68f-5d3b-b228-8fc7edd3985a', 1, 'g', NULL), +('57356c2d-f681-5ed0-b212-b42c8b8918f6', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', 'ddda7b85-32b1-5d4d-9516-237f59f6e5d8', 1, 'g', NULL), +('99f2e4d0-ae82-50ed-94c1-0e86055ffe47', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', 'ed51eb54-3dc6-53cf-a660-c7ebbe2b6a00', 100, 'g', NULL), +('37d874ab-6ca7-57fa-95bc-ef4e89543d2f', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', 'bdab64ef-8278-5e28-b96c-95704f7608a8', 70, 'g', NULL), +('e21d98db-aadf-581c-90da-50b6e1850baf', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 10, 'g', NULL), +('6a154457-c2bf-5b1c-892f-db8da95a6032', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', 'ea000034-1111-2222-3333-444444444444', 10, 'g', NULL), +('4c13133f-41eb-50dc-8612-43a0bf7094cc', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', 'af2bc91a-1e49-5c64-97c3-866397e23213', 10, 'g', NULL), +('7c88d007-2777-55f0-a4ae-b716a9ff6943', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', '301eecc8-c8ef-57c8-a19c-f5288d454a43', 20, 'g', NULL), +('e0a773d4-bdf5-51c8-8bde-cb8dcd94b960', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('2a4effba-a2b6-53e4-91eb-94b7bafbbd2f', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('52b0da36-b939-5ef0-88cd-5a1338476b2a', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('5663a3d5-2b61-5a41-8ffd-a9e3b7b2e644', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('408fa875-6479-5fc4-8645-b6ac78435e9f', '203f3b8f-ea69-54dc-ac5b-163fcfacc61d', '19cec053-aed7-5719-82c5-b44b9e897f44', 5, 'g', NULL), +('a907618c-ca00-5997-b8e5-ef2855b23eef', '3b717974-2040-5de1-8b34-5c045f32fe9c', '203070af-4b7c-5c52-ae90-57f184006098', 2, 'g', NULL), +('7d9a0b37-9ef6-5f51-aae1-b138bf187f9e', '3b717974-2040-5de1-8b34-5c045f32fe9c', '7bae084c-9cb8-54ca-ba11-18e407528f23', 1400, 'ml', NULL), +('8e97de2c-2e9a-5b52-b3c1-c80d0aa2f862', '3b717974-2040-5de1-8b34-5c045f32fe9c', '19bbc85a-41dd-550c-a164-67e4c48503d6', 100, 'g', NULL), +('3624e689-af17-522b-b264-cff6dd08a528', '3b717974-2040-5de1-8b34-5c045f32fe9c', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('11d90840-8546-5552-8c34-caf0d88c1c02', '3b717974-2040-5de1-8b34-5c045f32fe9c', '39e00b7a-7324-5687-b6da-3d4c39166f83', 150, 'g', NULL), +('f4a62f9f-fc61-569d-a4a5-efcf4eed7c5f', '3b717974-2040-5de1-8b34-5c045f32fe9c', 'ea000042-1111-2222-3333-444444444444', 100, 'g', NULL), +('efce403f-127d-5af0-b000-27cbb1322fb9', '3b717974-2040-5de1-8b34-5c045f32fe9c', 'ac6c9c88-b5bb-589d-af79-fca945dbf408', 8, 'quả', NULL), +('a391a072-e240-5733-a0f2-d2c08ae1ff93', '3b717974-2040-5de1-8b34-5c045f32fe9c', 'be1f13f5-af04-5fc6-945c-8c3493c38f1a', 30, 'g', NULL), +('7af4ae81-ff00-5d1c-a95d-c953511cecad', '3b717974-2040-5de1-8b34-5c045f32fe9c', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('3a1a858f-f108-5450-90ad-3fa830f5fcb8', '3b717974-2040-5de1-8b34-5c045f32fe9c', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('f2dabefc-8bc6-5682-9f49-0fc5ec6ca1a8', '3b717974-2040-5de1-8b34-5c045f32fe9c', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('15242e43-9e31-5fa1-a508-503bd3f4087f', '3b717974-2040-5de1-8b34-5c045f32fe9c', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('b6f8b18d-e073-5f11-b19e-b23cfa997eb8', '3b717974-2040-5de1-8b34-5c045f32fe9c', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('cc7e709f-a6d8-58a7-81fc-b31e8d2dd619', '3b717974-2040-5de1-8b34-5c045f32fe9c', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('903ea8a1-c8c8-5a2d-aca5-df76a53c46a0', '3b717974-2040-5de1-8b34-5c045f32fe9c', '2247aff0-ca19-5ee6-b6b8-f3b2efda970e', 20, 'g', NULL), +('4e40c1e9-e775-518d-9d1c-81712b36c8f2', '3b717974-2040-5de1-8b34-5c045f32fe9c', '5f645a79-57dd-5dd9-82d5-dae605868f68', 20, 'g', NULL), +('899db5fe-ce9f-535b-a2d4-8cf067976bd2', '45b9facb-6011-5f60-bb42-0046a6c1158b', '27368730-f1ba-5055-8c22-f06681982d64', 4, 'miếng', NULL), +('9d5f384a-0be7-5be7-9584-44c6e6865dfb', '45b9facb-6011-5f60-bb42-0046a6c1158b', '01619128-a551-5bcb-84a9-5f7ddf562db4', 150, 'g', NULL), +('61ecfe2b-b34c-5257-8c78-99d767f14d08', '45b9facb-6011-5f60-bb42-0046a6c1158b', '0665943a-9e13-5276-ac4f-49c0acc7e2ac', 200, 'g', NULL), +('3250778c-be60-5356-81a2-b171dca6c1b8', '45b9facb-6011-5f60-bb42-0046a6c1158b', 'c0975535-cf50-5eb6-8fb7-e51777ac4417', 50, 'g', NULL), +('2bca0cd8-86fe-5a54-a6ce-c6f0ea99ed3d', '45b9facb-6011-5f60-bb42-0046a6c1158b', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 200, 'ml', NULL), +('3a34b221-1bcf-5aaf-98bc-debb456e21c9', '45b9facb-6011-5f60-bb42-0046a6c1158b', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 7.5, 'g', NULL), +('357fe18c-0295-5a9e-b45c-2131eca43de3', '45b9facb-6011-5f60-bb42-0046a6c1158b', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('6aa02541-3ceb-5916-a696-6bebb7f29ea2', '45b9facb-6011-5f60-bb42-0046a6c1158b', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('8c9992af-2163-5a82-85e8-a706c1797746', '45b9facb-6011-5f60-bb42-0046a6c1158b', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('39df23ca-66cb-581c-a421-5fedf6deccd0', '45b9facb-6011-5f60-bb42-0046a6c1158b', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 1, 'trái', NULL), +('0966c807-0e3b-56fd-b8f4-21bc286d45a9', '45b9facb-6011-5f60-bb42-0046a6c1158b', 'b022ec51-1f8d-575b-913c-22164c09829e', 3, 'cây', NULL), +('f6704636-a3d4-5ace-892e-bc0482af3a8f', '45b9facb-6011-5f60-bb42-0046a6c1158b', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 30, 'g', NULL), +('164d11d2-f0cc-5ad8-acf0-302062873883', '45b9facb-6011-5f60-bb42-0046a6c1158b', '08c70840-4abb-582e-9702-dd45e6b4f5d7', 20, 'g', NULL), +('783550a8-8075-57c4-a840-1a63bbab268d', '45b9facb-6011-5f60-bb42-0046a6c1158b', '5887f4fb-d3d2-5861-91d2-9f2ed680370a', 80, 'g', NULL), +('34586d61-aff3-5e72-94d7-b742badd7406', '45b9facb-6011-5f60-bb42-0046a6c1158b', '0f3b0684-99ea-51d8-99e8-c5d43811c5ac', 20, 'g', NULL), +('86782c64-3411-5949-af42-61456bee355f', '45b9facb-6011-5f60-bb42-0046a6c1158b', '2c89e098-82a5-5542-af13-20707de1df26', 80, 'g', NULL), +('1f22c8a8-f610-54dc-b5e4-8bcfd22de231', '45b9facb-6011-5f60-bb42-0046a6c1158b', '87b78424-2278-5646-ae9e-1017c9b18a33', 80, 'g', NULL), +('275a9eed-4f74-5376-b730-0adc55295e48', '45b9facb-6011-5f60-bb42-0046a6c1158b', '05df7a56-5cc5-571e-b259-2017f602f582', 100, 'g', NULL), +('5d5889fa-38e4-5a72-8a39-38a9a22102f7', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', 'f4c45dd4-6088-5762-b03f-7b07df9a99ac', 400, 'g', NULL), +('98dd5c5b-6baf-5d92-b775-c16b72a0ab58', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', '6448be8c-54c1-5eec-acfa-7285f67d621a', 200, 'g', NULL), +('2bd804f8-1384-59c0-8464-c95672bd7cf6', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', 'c821cab5-99d4-5d2e-852e-6050c8375fa2', 200, 'g', NULL), +('8bc90e46-e890-5740-8c1a-341a480a300e', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', 'ea000010-1111-2222-3333-444444444444', 150, 'g', NULL), +('b9448f8d-94ff-5051-a0ee-adff0015721e', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', '60679900-1fa7-5ff7-90f1-f3916a1fb3f6', 100, 'g', NULL), +('064a4a7c-de51-52c8-ad7e-e8390bfca16a', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', 'dfe4defe-7de5-5a7d-b571-e8f6161f25cd', 400, 'ml', NULL), +('b19436da-2356-5902-82c2-51a771252b5a', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('0ef53e94-473d-594b-b4a2-4a7fdd003e28', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', 'deb0eef5-7216-51ca-a2e1-c36844e5f907', 600, 'g', NULL), +('c4068bfc-73a4-5f88-a545-0b84d85d7f96', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', 'ac6c9c88-b5bb-589d-af79-fca945dbf408', 10, 'g', NULL), +('16577255-5d8c-5d77-89f2-91e278b7c6ae', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', '0ea82148-adbe-5fca-8e11-b60caae5401d', 10, 'g', NULL), +('c2ee946e-73de-55e6-9ae8-004824aa5fa0', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', '97312907-8f92-540a-a6ab-64327b7bc0b4', 15, 'g', NULL), +('6766c17e-a88c-554f-847f-77ab65727c9d', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('2a83c0fb-d715-580f-a0f3-57ab86338256', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', '2eb9b0fa-616c-558e-a3b0-b25e772bb295', 200, 'g', NULL), +('03a27c33-afaa-52ad-9392-3b9e657a30a9', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 15, 'g', NULL), +('9092b834-2c0a-555c-bb8c-55369930a98e', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', '4e706f33-b81b-53ab-b88a-d3bc03c1a8c2', 22.5, 'g', NULL), +('62449477-db95-5311-8254-a3f56e601910', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 22.5, 'g', NULL), +('ded9a84b-b058-5138-9c30-cb16fb3f88f0', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', 'b022ec51-1f8d-575b-913c-22164c09829e', 4, 'cây', NULL), +('5e0b4738-677c-518b-b186-644ef8521ab4', '7d4f1feb-c0f5-5d81-b28d-b35f15db62e0', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 15, 'g', NULL), +('16602d1a-3ec6-544e-9b48-7e27201f4a41', '59686b97-13a9-5fd7-8f10-89146df7d380', 'c08ef5ed-6848-54ac-9b96-e23a570ce919', 80, 'g', NULL), +('8dc6fcfe-5f8d-5e8d-b32e-af8c04dd0cfa', '59686b97-13a9-5fd7-8f10-89146df7d380', '458b0ad2-4e8e-5fcf-8d7a-d563ef641539', 100, 'g', NULL), +('5da2686b-85ef-592b-a912-2ae234ce032b', '59686b97-13a9-5fd7-8f10-89146df7d380', '1852107f-7e3b-56c3-8515-89dd41c241b5', 100, 'g', NULL), +('fbd223e2-635e-5752-91ef-cf408fe452c6', '59686b97-13a9-5fd7-8f10-89146df7d380', 'a2b33611-915b-5571-b554-0b4d61a45097', 100, 'g', NULL), +('66242f62-6172-531f-92aa-57db49b0b1e2', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', '6ef4c0e7-dccb-5e7e-8d6d-d8e77ee000f1', 300, 'g', NULL), +('a67e46d7-ab0c-5a27-825c-1c0f8eafa2a2', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', 'ceb574fd-bb16-51d1-9ab9-ff545864258a', 100, 'g', NULL), +('2e89e836-3b74-51aa-b1b0-36e476042dfc', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', '9cbabcae-f6ae-5631-8508-d53587721693', 100, 'g', NULL), +('cbd332e1-00fb-5374-8f25-093d1d211569', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', '94e18e46-5a05-5053-b1be-d463a82c03e2', 150, 'g', NULL), +('70221b31-a827-596b-a459-dcd71af51723', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', 'ea000025-1111-2222-3333-444444444444', 100, 'g', NULL), +('b761e3e7-6173-5986-99ff-c34c12dfb99c', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', 'c9930b83-7899-57fd-aebb-6ada2dc60e82', 1, 'chén', NULL), +('53717186-5da0-5bcb-bdf5-43d8cf1545ef', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', 'a3197cbe-1ad5-58ab-bc0c-7e338261a145', 100, 'g', NULL), +('49483624-621a-5ba1-b398-651fafbbf4e2', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', 'b2d624b7-88bf-5389-9572-25ce188893dc', 22.5, 'g', NULL), +('b6d4ba9e-1abc-5348-8529-a0182d07dc5e', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('55b6b5bb-0bc0-5f31-950f-8ae6d9284528', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('34380c63-a2f9-5872-816c-129a21fdf7f7', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 15, 'g', NULL), +('46255f69-6105-5f78-b97c-1d8129a19646', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', 'e599e212-c4e7-507c-a3fe-9704649a9794', 5, 'g', NULL), +('b718ed32-d75b-5a40-a56a-1f91ce836038', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('97bc5327-0c94-5dae-9ecc-ba042cbebcce', 'b8a46ea2-0bda-509b-8b43-c6a11ab8a8b5', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('bf4972f0-aa62-54df-a6d7-999e1d96f11d', 'aeedff90-6f79-5b7b-86f0-34266f43b4d1', '3a9e3fc2-0aeb-5d27-87a8-c56bae206608', 100, 'g', NULL), +('4f23840b-f49f-54cf-ad46-0eaee5a3f776', 'aeedff90-6f79-5b7b-86f0-34266f43b4d1', '36044cfb-1667-5625-9982-0a1b41f3a316', 200, 'g', NULL), +('bbdf335c-9b22-54fc-ac26-f733d3900164', 'aeedff90-6f79-5b7b-86f0-34266f43b4d1', 'ea000025-1111-2222-3333-444444444444', 60, 'g', NULL), +('ded366d4-1563-54c9-8475-40f211226d3e', 'aeedff90-6f79-5b7b-86f0-34266f43b4d1', '86eda42e-989d-5587-8f1d-96a2d9416a85', 20, 'g', NULL), +('9d82b314-9d92-5d84-9b28-0055f1056638', 'aeedff90-6f79-5b7b-86f0-34266f43b4d1', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 100, 'g', NULL), +('3fdfc3b5-24c0-52f5-906e-d69d11049cf9', 'aeedff90-6f79-5b7b-86f0-34266f43b4d1', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('769bce0b-15fb-5865-89ec-3ca78f7dd9d6', 'aeedff90-6f79-5b7b-86f0-34266f43b4d1', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('649129bd-69c2-54ff-8be3-4db38bd52e37', 'aeedff90-6f79-5b7b-86f0-34266f43b4d1', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('b9a4fd37-43a7-5228-aa69-145d5c92f1c7', 'a423b8df-6179-54b1-9cc8-baf478411cd5', '3fa2e8f4-7a57-5d93-9bd4-fc77bc94f39c', 114, 'g', NULL), +('4ae5954d-c854-582e-a94f-9a7b3d25ce54', 'a423b8df-6179-54b1-9cc8-baf478411cd5', '5e0e50c1-1eaf-53e5-937a-7e2bdb1d6cac', 300, 'g', NULL), +('8c1ea2cb-1f7f-5261-8e10-14e39bbea264', 'a423b8df-6179-54b1-9cc8-baf478411cd5', 'ea000027-1111-2222-3333-444444444444', 100, 'g', NULL), +('f1d4b7cd-99eb-5658-8908-569bd3897922', 'a423b8df-6179-54b1-9cc8-baf478411cd5', 'ed51eb54-3dc6-53cf-a660-c7ebbe2b6a00', 150, 'g', NULL), +('1d729e95-c54e-5c04-b473-9816da3dac9e', 'a423b8df-6179-54b1-9cc8-baf478411cd5', 'b2d624b7-88bf-5389-9572-25ce188893dc', 15, 'g', NULL), +('2a34ec2a-5576-50f3-af4c-5987893db9f4', 'a423b8df-6179-54b1-9cc8-baf478411cd5', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('6a793f30-af6f-582d-8d30-9a936ca4f8b5', 'a423b8df-6179-54b1-9cc8-baf478411cd5', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 10, 'g', NULL), +('ba4889cd-2ce0-57d6-b179-983d130060fa', 'a423b8df-6179-54b1-9cc8-baf478411cd5', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('66bd93d0-8b67-5ccf-b21d-c4a2f4282268', 'a423b8df-6179-54b1-9cc8-baf478411cd5', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2.5, 'g', NULL), +('f59bc68d-8158-5792-a210-d41eb9ad954a', 'a423b8df-6179-54b1-9cc8-baf478411cd5', '6a6e9965-b1d7-577a-ac3a-5010a7e40aa0', 30, 'g', NULL), +('0cd0786d-f75c-5cbf-b714-833672159f98', 'a423b8df-6179-54b1-9cc8-baf478411cd5', '1a314bd4-61c1-5a61-b1e3-f0dc7fea88ba', 5, 'g', NULL), +('ce8f2507-1210-5e9f-a846-32a7c96bbbac', 'a423b8df-6179-54b1-9cc8-baf478411cd5', '19cec053-aed7-5719-82c5-b44b9e897f44', 2.5, 'g', NULL), +('81377237-a7fb-51ae-955f-64f50cedeff4', 'a423b8df-6179-54b1-9cc8-baf478411cd5', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('fa77bc55-b725-5de4-8fa2-97cb318e857b', 'a423b8df-6179-54b1-9cc8-baf478411cd5', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('721581ac-4431-5890-8e19-90c037059af1', 'a423b8df-6179-54b1-9cc8-baf478411cd5', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('fa9b24ef-fec9-5d33-b5c7-ae44f436125c', 'a423b8df-6179-54b1-9cc8-baf478411cd5', '301eecc8-c8ef-57c8-a19c-f5288d454a43', 20, 'g', NULL), +('9af343c7-1a61-5741-a963-195710d5d7f9', '76822912-edd7-5d39-9540-d12ee63006a5', '397de771-d68f-5d3b-b228-8fc7edd3985a', 20, 'g', NULL), +('bf35e5b6-6d2b-54fc-b32a-e1ff18498210', '76822912-edd7-5d39-9540-d12ee63006a5', '964e36c0-5e03-5c54-974c-8dd2eecb35a2', 50, 'g', NULL), +('8aaeb43a-554d-5129-8d25-20750027fc3d', '76822912-edd7-5d39-9540-d12ee63006a5', '96ce5f09-806d-5d70-8075-29f5ee2dcf33', 8, 'quả', NULL), +('c0fd411b-6070-58ef-8559-7dfe81d481a2', '76822912-edd7-5d39-9540-d12ee63006a5', 'ea000036-1111-2222-3333-444444444444', 60, 'g', NULL), +('520a77a4-bd8f-587c-823e-1f6269b7b83b', '76822912-edd7-5d39-9540-d12ee63006a5', '558dd7f9-1690-5e57-bd3c-580e91b23323', 5, 'g', NULL), +('42ced5e0-f835-577a-9dd1-37a18c942e2b', '76822912-edd7-5d39-9540-d12ee63006a5', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 1.25, 'g', NULL), +('10bb8dd1-467c-5817-8182-da5fe373c859', '76822912-edd7-5d39-9540-d12ee63006a5', 'ea000008-1111-2222-3333-444444444444', 15, 'g', NULL), +('e7a39c29-4310-5481-a4ca-f740c8d60129', '76822912-edd7-5d39-9540-d12ee63006a5', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('c6ec6c94-fafe-532b-9048-1ca1132c436b', '76822912-edd7-5d39-9540-d12ee63006a5', '21256138-c99f-5b07-9b64-cf44702a8048', 2.5, 'g', NULL), +('44648045-18d2-5323-98c4-eab1518d1449', '76822912-edd7-5d39-9540-d12ee63006a5', '99157107-8cbc-5715-97f1-620017377993', 15, 'g', NULL), +('bcdb722d-f8b7-5921-8fcb-25411e4209ca', '434a07c3-135d-578c-ab26-960f95d48d96', '9a21aa1a-d07b-5a9e-9ee3-a9ab1a44b0c7', 400, 'g', NULL), +('8548df9f-155f-5e26-a795-c4a7568e341d', '434a07c3-135d-578c-ab26-960f95d48d96', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 100, 'g', NULL), +('c2eaabfc-d7ae-531c-bf18-9e2a911d81c1', '434a07c3-135d-578c-ab26-960f95d48d96', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 100, 'g', NULL), +('755b3d22-d519-5c94-b26f-3a52b3b51021', '434a07c3-135d-578c-ab26-960f95d48d96', '27e27737-581e-50d3-9794-e4d25e4c2041', 0.5, 'trái', NULL), +('bfc652c9-a9eb-542f-aaf5-036b79880f4f', '434a07c3-135d-578c-ab26-960f95d48d96', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 1, 'g', NULL), +('a6f6e11d-2c7d-54db-9498-61cf5ac3ec4a', '434a07c3-135d-578c-ab26-960f95d48d96', '271e387d-fec5-58d0-9f28-81b8dafa72fd', 30, 'g', NULL), +('3ee635bb-ae3d-5a25-b1cd-a6cf65610169', '434a07c3-135d-578c-ab26-960f95d48d96', 'b98fe1b1-a832-590c-af49-51ef8bb51756', 1, 'trái', NULL), +('692ab654-bb7e-566c-b935-a0184d42b8d7', '434a07c3-135d-578c-ab26-960f95d48d96', '8a216df6-d053-5fcd-8d46-92cb41669b35', 2.5, 'g', NULL), +('5cb639f4-a3b1-5033-9298-1e55b97cbce0', '434a07c3-135d-578c-ab26-960f95d48d96', 'ab284a6b-7b7a-574f-9025-41ea4f8cbd65', 30, 'g', NULL), +('5ad5c6b1-1dbb-58f3-ae22-2cc57199421c', '434a07c3-135d-578c-ab26-960f95d48d96', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('ae1ece09-610a-59c2-be47-7384740ba57e', '434a07c3-135d-578c-ab26-960f95d48d96', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 20, 'g', NULL), +('d88ddd78-f8d6-5026-a11a-1605797ca4d6', '36c2eefe-deaa-5210-b54f-f94221a40df2', '5716aac3-265c-5ee8-9969-1699861ecbe8', 200, 'g', NULL), +('e72d5f05-c71d-5bbc-b2e7-0fad5e2e7232', '36c2eefe-deaa-5210-b54f-f94221a40df2', '7dc38594-9e93-57f7-8322-d21658edeedd', 100, 'g', NULL), +('ee2501b2-7055-5a1f-b8e6-c930fc517009', '36c2eefe-deaa-5210-b54f-f94221a40df2', '86eda42e-989d-5587-8f1d-96a2d9416a85', 10, 'g', NULL), +('8fdaf585-0c79-5d2c-a2f0-1393308db25e', '36c2eefe-deaa-5210-b54f-f94221a40df2', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 5, 'g', NULL), +('7071ee5c-e1ee-5ade-9cf6-f402f8561d53', '36c2eefe-deaa-5210-b54f-f94221a40df2', 'ea000034-1111-2222-3333-444444444444', 5, 'g', NULL), +('4be29aa4-4ba2-54dc-a51d-8e90e3ef1138', '36c2eefe-deaa-5210-b54f-f94221a40df2', '82433693-c8bf-52c7-953d-94567db3cb05', 2, 'trái', NULL), +('327573f2-7784-5397-9acd-133ff15f6680', '36c2eefe-deaa-5210-b54f-f94221a40df2', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 2, 'trái', NULL), +('d22ec77e-b357-5558-9917-022a180ca663', '36c2eefe-deaa-5210-b54f-f94221a40df2', '152109fb-25ac-55cc-ad5a-341010f2bb98', 20, 'g', NULL), +('56431aea-2169-5b9f-815e-b4aa8c043b1e', '36c2eefe-deaa-5210-b54f-f94221a40df2', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('09e7a7b6-d639-528b-af35-fba6e66e0be8', '36c2eefe-deaa-5210-b54f-f94221a40df2', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('8d2450c4-cfaf-508e-99c5-195f58f21840', '36c2eefe-deaa-5210-b54f-f94221a40df2', '97312907-8f92-540a-a6ab-64327b7bc0b4', 5, 'g', NULL), +('614f720e-6ed5-5449-9efd-2331644924c6', '36c2eefe-deaa-5210-b54f-f94221a40df2', '301eecc8-c8ef-57c8-a19c-f5288d454a43', 20, 'g', NULL), +('7c5109f5-6175-5827-9d29-b768613bf1ee', '36c2eefe-deaa-5210-b54f-f94221a40df2', '19cec053-aed7-5719-82c5-b44b9e897f44', 5, 'g', NULL), +('47b8ced0-45a1-5545-9ae3-d87a22105afa', '36c2eefe-deaa-5210-b54f-f94221a40df2', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('b9a6df63-3b0f-53db-8d9e-d04757fc551a', '34a2bc84-8c4f-55a9-b79b-d33cbfadfc6a', 'c2e8872d-d4d7-5931-a76f-55779c8ae614', 150, 'g', NULL), +('bb517341-7e01-5bcd-a33c-e52e0c7d94f2', '34a2bc84-8c4f-55a9-b79b-d33cbfadfc6a', '09e8d049-f5f7-5237-825a-867d81e049a8', 100, 'g', NULL), +('cc8700e6-f0eb-5895-a358-e704d3c80f59', '34a2bc84-8c4f-55a9-b79b-d33cbfadfc6a', '6c1ec9f9-0406-5616-82a9-9082034cc0f8', 100, 'g', NULL), +('d8802722-f30d-5c0e-96ec-c14613ba9adf', '34a2bc84-8c4f-55a9-b79b-d33cbfadfc6a', '23fd8ef2-e68c-53a1-8b37-16d989cd41cb', 50, 'g', NULL), +('48b0dc4b-9f4a-50df-8086-4a0dbd2dab69', '34a2bc84-8c4f-55a9-b79b-d33cbfadfc6a', 'ea000010-1111-2222-3333-444444444444', 50, 'g', NULL), +('fa8475ab-0dfd-592f-ae2a-315f6293e36d', '34a2bc84-8c4f-55a9-b79b-d33cbfadfc6a', '6b6d3478-c6ea-5a59-ad81-b339d844074e', 2, 'cây', NULL), +('23c700be-d7b2-536c-b304-800534f122b9', '34a2bc84-8c4f-55a9-b79b-d33cbfadfc6a', '75241a41-9d99-5e76-adc0-48a50b364e95', 5, 'g', NULL), +('b0f2613a-fd83-5639-841e-9b24c3ab97d0', '34a2bc84-8c4f-55a9-b79b-d33cbfadfc6a', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('ac3da74f-4ced-5b03-9a4e-dcfb635c50e7', 'd515c11c-1146-5d38-abc0-fbea5bc77b07', '2b1d2730-a829-5f8b-b7df-c09b60921a0a', 150, 'g', NULL), +('6e4744f6-68fb-5420-958b-436602448d9a', 'd515c11c-1146-5d38-abc0-fbea5bc77b07', 'ea000023-1111-2222-3333-444444444444', 100, 'g', NULL), +('3373c650-cff6-5518-98f4-1f1787118ad7', 'd515c11c-1146-5d38-abc0-fbea5bc77b07', '86eda42e-989d-5587-8f1d-96a2d9416a85', 5, 'g', NULL), +('c70097e1-5d77-59eb-99ae-eeacdaf52a37', 'd515c11c-1146-5d38-abc0-fbea5bc77b07', 'ea000034-1111-2222-3333-444444444444', 10, 'g', NULL), +('3cdb96d8-6c18-57f4-9540-cf1267ab9e4f', 'd515c11c-1146-5d38-abc0-fbea5bc77b07', '152109fb-25ac-55cc-ad5a-341010f2bb98', 20, 'g', NULL), +('d1ca6228-c4f1-55a5-b389-0be36d398b1a', 'd515c11c-1146-5d38-abc0-fbea5bc77b07', '97312907-8f92-540a-a6ab-64327b7bc0b4', 5, 'g', NULL), +('b06c4d16-c91a-5bc2-83fa-c1de92c58f66', 'd515c11c-1146-5d38-abc0-fbea5bc77b07', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('65380f7f-6469-559b-bb1c-a78e084e0fd4', 'd515c11c-1146-5d38-abc0-fbea5bc77b07', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('bdec916b-f4d0-5f5b-8b93-77f149f76ff6', 'd515c11c-1146-5d38-abc0-fbea5bc77b07', '8aefd378-92f5-575b-8801-511d610bb7f6', 80, 'g', NULL), +('c25e7d4d-bc8c-5dbd-9a8a-95064f72d16c', 'd515c11c-1146-5d38-abc0-fbea5bc77b07', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('bcc40ee8-78b7-5304-a97b-00171562f618', '403c0bfc-9673-5255-aaf8-4b7d586435f1', '152109fb-25ac-55cc-ad5a-341010f2bb98', 300, 'g', NULL), +('eadc8f0b-700b-5af6-8940-7e9bec7c9b27', '403c0bfc-9673-5255-aaf8-4b7d586435f1', 'd0a8304d-4d13-5095-9317-08328ca04c85', 150, 'g', NULL), +('11b321d7-8fc7-51b0-9cde-907ca7836e49', '403c0bfc-9673-5255-aaf8-4b7d586435f1', 'ea000042-1111-2222-3333-444444444444', 30, 'g', NULL), +('ccf65058-8a61-584f-aba7-a0e7598c99bb', '403c0bfc-9673-5255-aaf8-4b7d586435f1', '09f86239-76c0-512a-ad02-f9ff2f45c5ff', 30, 'g', NULL), +('d5029458-9883-5c9c-a7f0-ec8ac74f3498', '403c0bfc-9673-5255-aaf8-4b7d586435f1', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'nhánh', NULL), +('8caa1ecb-89e0-5d4b-a483-d8064cd8e29a', '403c0bfc-9673-5255-aaf8-4b7d586435f1', 'ea000004-1111-2222-3333-444444444444', 4, 'quả', NULL), +('e90c50a5-d460-5419-a011-f56ee03918b8', '403c0bfc-9673-5255-aaf8-4b7d586435f1', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 30, 'g', NULL), +('11b1126f-c67b-5c1c-96e2-8276a9126a06', '403c0bfc-9673-5255-aaf8-4b7d586435f1', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('041060ce-0315-5e4b-b58c-c34584fe81e9', '403c0bfc-9673-5255-aaf8-4b7d586435f1', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('bf1769f1-89e8-589b-b5cc-75121253af60', '403c0bfc-9673-5255-aaf8-4b7d586435f1', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('58fd4fe0-3e20-5840-a27d-ed41fd3a084d', '403c0bfc-9673-5255-aaf8-4b7d586435f1', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('88128be0-fc3c-52b7-858b-59c1222bf2b4', '403c0bfc-9673-5255-aaf8-4b7d586435f1', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('877c26f5-7c8b-5b35-8370-6a6a3c0db9c6', '944240f8-ee0f-5d99-be2f-478e7d058a6e', 'de32fe32-80df-5cc8-8271-3d18d9088636', 200, 'g', NULL), +('7cb47567-d3b5-54a5-acbd-0828c9970581', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '1a76e495-e8c2-5e3e-873b-7cfd4109adb3', 50, 'g', NULL), +('7e178a08-2134-5a58-b878-58288e67d541', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '973575c1-c353-5592-85a2-a7a5040a8b71', 80, 'g', NULL), +('bda612b9-7c13-57b8-8424-e26390c330e9', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '3d7842c8-c0ba-5ec9-9376-68a9578b3444', 50, 'g', NULL), +('765b0dad-5c33-5c9a-b318-d19c6fba2419', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '8abaac01-8d35-5524-818e-c5b7a22f656f', 50, 'g', NULL), +('d1b7d9b8-5939-5fcf-9961-e3fe42833dd3', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '78a5e6aa-6f32-5e6b-bfd3-d55d6472a17f', 20, 'g', NULL), +('8f0f72cc-937a-5e55-b329-da9482d24852', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '72ddd845-7697-51f7-9029-16df74b3a929', 40, 'g', NULL), +('d2685e75-1b0a-57d2-b6b1-13bc922a6902', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 100, 'ml', NULL), +('d286e074-9038-5728-b438-6676ae452ace', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 10, 'g', NULL), +('5a5c49d9-cbb0-5534-b250-feddfbe2bf07', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 15, 'g', NULL), +('9919c27d-1019-53e8-aa1c-e2af1be0e5c3', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('d0ad3752-b8ff-5a86-96a3-5db19f36c3c5', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 15, 'g', NULL), +('9f09c2d4-bafb-5e3e-bc9a-09292977eef1', '944240f8-ee0f-5d99-be2f-478e7d058a6e', '7248883b-832e-5f90-8d99-7cea0854c072', 100, 'ml', NULL), +('4fbd792a-b7b0-59f0-8fb0-254c71bfd3e1', '944240f8-ee0f-5d99-be2f-478e7d058a6e', 'd18203ed-13ea-59ab-8859-056331896798', 45, 'g', NULL), +('03511978-e26a-513e-9c01-512d786a2abe', 'e8ee76e7-0fa9-5052-8224-bb389888cb97', '5c198382-665a-51b9-b6e2-507489107042', 100, 'g', NULL), +('f47cbd89-d300-542c-a5b4-d74892066d29', 'e8ee76e7-0fa9-5052-8224-bb389888cb97', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 60, 'g', NULL), +('b1198e25-7614-5b88-a2a0-d2c7b7fb6c27', 'e8ee76e7-0fa9-5052-8224-bb389888cb97', '152109fb-25ac-55cc-ad5a-341010f2bb98', 300, 'g', NULL), +('0ce75e3e-a780-58c2-b61b-bc3b83aa0864', 'e8ee76e7-0fa9-5052-8224-bb389888cb97', 'ea000004-1111-2222-3333-444444444444', 1, 'quả', NULL), +('a01f1ac4-2e4e-5aac-9723-03ac1137fe71', 'e8ee76e7-0fa9-5052-8224-bb389888cb97', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'nhánh', NULL), +('2bebd3ec-b006-5f8d-977d-1da1327f4dbd', 'e8ee76e7-0fa9-5052-8224-bb389888cb97', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 20, 'g', NULL), +('19d78a43-246f-5c7c-9d73-f8fa541c08c9', 'e8ee76e7-0fa9-5052-8224-bb389888cb97', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('6b5b093e-e150-562d-9774-cdde58583096', 'e8ee76e7-0fa9-5052-8224-bb389888cb97', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('e9ff471d-fd0c-5c34-9049-28e741867c1a', 'e8ee76e7-0fa9-5052-8224-bb389888cb97', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('b601ac31-9516-5625-819c-06c23e7e01ab', 'e8ee76e7-0fa9-5052-8224-bb389888cb97', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('78f783ab-15fa-5e64-8025-af6ff780abcd', 'cd61c422-d90a-5642-9ee3-a2d501087e13', '3fd0596e-be17-56fa-9806-2c1837f95a77', 150, 'g', NULL), +('6c9fdc0f-bc41-5b45-aeb2-4bbe310635d5', 'cd61c422-d90a-5642-9ee3-a2d501087e13', '44daddfa-6b69-5457-ad59-9c0d4df64a84', 100, 'g', NULL), +('d2c29d71-7327-5b51-96fd-5fa1821fda85', 'cd61c422-d90a-5642-9ee3-a2d501087e13', 'c00f36a2-52fc-5426-93a8-5f6d8fe54794', 30, 'g', NULL), +('c7fb8f8f-bc56-5936-bcf3-97625577fda3', 'cd61c422-d90a-5642-9ee3-a2d501087e13', '4b3ad42c-8632-57fa-9310-0078d6afad0f', 50, 'g', NULL), +('32332f59-cfd3-5af1-b1dc-e7685cb42834', 'cd61c422-d90a-5642-9ee3-a2d501087e13', 'e8398483-40c1-5610-a688-bbe877f565d2', 100, 'g', NULL), +('006aeb41-1aea-5a2c-a9d4-d8f2d1c7e13f', 'cd61c422-d90a-5642-9ee3-a2d501087e13', '0ace680a-5f4d-5ef1-ab4c-06225bbef2dd', 220, 'g', NULL), +('ce05d32d-2f3c-5051-8a98-706dd8564863', 'cd61c422-d90a-5642-9ee3-a2d501087e13', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 45, 'g', NULL), +('29b45aa0-97a4-5d89-ae54-e105126c8284', 'cd61c422-d90a-5642-9ee3-a2d501087e13', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('eed9e610-07eb-5901-a449-87765324768d', 'cd61c422-d90a-5642-9ee3-a2d501087e13', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 45, 'g', NULL), +('2f2049e9-2154-5f9d-a049-9099fab63096', 'cd61c422-d90a-5642-9ee3-a2d501087e13', '21256138-c99f-5b07-9b64-cf44702a8048', 1.25, 'g', NULL), +('184cd6b5-d645-5e50-bc5b-864c212b9668', 'cd61c422-d90a-5642-9ee3-a2d501087e13', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('a0884249-5a54-5e77-9a25-b248baae3952', 'cd61c422-d90a-5642-9ee3-a2d501087e13', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 1.67, 'g', NULL), +('b75ad9cb-6891-56e7-9eb9-19ddde346fe2', 'cd61c422-d90a-5642-9ee3-a2d501087e13', 'b3810951-f282-5566-a028-894730e0528a', 30, 'g', NULL), +('034c106d-ed2e-5751-9b74-be570c6107aa', 'cd61c422-d90a-5642-9ee3-a2d501087e13', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 2.5, 'g', NULL), +('f44cb2e5-95fd-530d-af8e-8074e96261c3', 'cd61c422-d90a-5642-9ee3-a2d501087e13', 'ea000023-1111-2222-3333-444444444444', 80, 'g', NULL), +('fed76f60-ea4a-539d-9d80-bb740f78f3dd', 'cd61c422-d90a-5642-9ee3-a2d501087e13', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 80, 'g', NULL), +('fb245b37-3ec0-57d2-91ca-aa53d2489c8e', 'cd61c422-d90a-5642-9ee3-a2d501087e13', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('8c822975-e965-5ede-89c1-0763d27fffe2', 'cd61c422-d90a-5642-9ee3-a2d501087e13', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('efe47e2b-9f90-5884-9e5b-634831c6cc77', 'dac6bfff-2dde-5dfb-b0ed-7c953b706187', '288e2c53-d0ac-54c7-bd51-c3216933933b', 80, 'g', NULL), +('198108fa-aac9-5ace-9efe-98d25b8da688', 'dac6bfff-2dde-5dfb-b0ed-7c953b706187', 'ea000025-1111-2222-3333-444444444444', 40, 'g', NULL), +('784f1b02-0f9c-5e70-92f2-269a63e49e58', 'dac6bfff-2dde-5dfb-b0ed-7c953b706187', '4a3f2c69-e7ff-5a07-b0d2-22da8b5b8c2c', 15, 'g', NULL), +('6dd13be0-5f36-5b73-b1bc-2abb89f1da1f', 'dac6bfff-2dde-5dfb-b0ed-7c953b706187', '14c8a225-c702-541c-9c17-b591eb9f0b49', 6, 'cái', NULL), +('2b1b994d-7c65-5dfc-bb88-81c072a61a5d', 'dac6bfff-2dde-5dfb-b0ed-7c953b706187', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('42e2f643-ae6c-5d91-9e3c-b2c413f6860b', 'dac6bfff-2dde-5dfb-b0ed-7c953b706187', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('60d06e2d-9f70-533b-b5a1-3d2fb87ad988', '388afcb0-b41e-51c6-b976-6e943103411e', '6525d058-32fa-52e1-8bd8-9153a14c18b5', 300, 'g', NULL), +('5417d5c6-6505-5f1b-b280-4d6b9628b121', '388afcb0-b41e-51c6-b976-6e943103411e', 'ea000025-1111-2222-3333-444444444444', 80, 'g', NULL), +('69278052-9ed6-5ec2-9011-455ae131c636', '388afcb0-b41e-51c6-b976-6e943103411e', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 150, 'g', NULL), +('3122a450-abe0-5c45-af1b-36540f638b08', '388afcb0-b41e-51c6-b976-6e943103411e', 'ea000034-1111-2222-3333-444444444444', 20, 'g', NULL), +('8221118a-27ac-53da-a953-d53aba4ac2f3', '388afcb0-b41e-51c6-b976-6e943103411e', '725e64c6-e003-54c3-b1a3-5c562700b224', 90, 'g', NULL), +('da81e221-0256-5475-a029-77d9e8a79fd3', '388afcb0-b41e-51c6-b976-6e943103411e', 'b1d542a3-4740-5c3c-89e5-c4fcc56473d6', 100, 'g', NULL), +('e9d29001-d970-5e64-a2ed-d99c80f3fc70', '388afcb0-b41e-51c6-b976-6e943103411e', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('855e18f4-365c-58fe-86cb-3f5120563002', '388afcb0-b41e-51c6-b976-6e943103411e', 'a73c9fa5-ca63-50ea-a11e-bad792c9c9bb', 50, 'g', NULL), +('52f14f3a-35e9-5ff7-96a3-eb3c0e6f2718', '388afcb0-b41e-51c6-b976-6e943103411e', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 1, 'trái', NULL), +('279a3ab3-54f0-5f69-ac71-3850226dc794', '388afcb0-b41e-51c6-b976-6e943103411e', '71c3ed0f-ca07-5730-84d0-cbfe5370128c', 3, 'cọng', NULL), +('c1bde141-5c2f-5daa-a0e6-ce328407b6f4', '388afcb0-b41e-51c6-b976-6e943103411e', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('b67cc581-95b0-5a1a-bfd8-4d6c8d936dcb', 'b429e162-91ca-5675-be33-df01c9a89af9', '787134df-5dbd-5188-a3ee-8ca10669bad2', 600, 'g', NULL), +('fc8d562f-e0fe-5548-93d6-d143408ee312', 'b429e162-91ca-5675-be33-df01c9a89af9', '2c615779-c65f-5246-9bde-17690884776c', 150, 'g', NULL), +('ac45c8e8-86c6-55a7-a792-ba5c0c9a373f', 'b429e162-91ca-5675-be33-df01c9a89af9', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 160, 'g', NULL), +('b2d9210f-d60d-5e15-af49-dc5daf5ea9f8', 'b429e162-91ca-5675-be33-df01c9a89af9', '94e18e46-5a05-5053-b1be-d463a82c03e2', 200, 'g', NULL), +('a423367a-e7ed-5bf2-be9d-03810a7be32c', 'b429e162-91ca-5675-be33-df01c9a89af9', '50417267-f38e-579b-937a-07dd7b41bdb6', 1, 'chén', NULL), +('b2f9a035-ffc1-55f9-9b35-12419370a782', 'b429e162-91ca-5675-be33-df01c9a89af9', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 2, 'trái', NULL), +('6061ca5b-59a2-587e-801e-01f462e4d1aa', 'b429e162-91ca-5675-be33-df01c9a89af9', 'bdab64ef-8278-5e28-b96c-95704f7608a8', 100, 'g', NULL), +('0f8b29c7-b3ea-5985-be96-40867bcb7d9e', 'b429e162-91ca-5675-be33-df01c9a89af9', 'bb76d349-8d68-5aef-b586-4cceedd93fc8', 100, 'g', NULL), +('2143e2f3-ef3b-5aeb-a7e5-b9bd06a394ee', 'b429e162-91ca-5675-be33-df01c9a89af9', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 30, 'g', NULL), +('ba924196-949f-5a2a-a1a6-67e31044e1de', 'b429e162-91ca-5675-be33-df01c9a89af9', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 37.5, 'g', NULL), +('9710940e-05b7-5388-b899-fa316f5ff266', 'b429e162-91ca-5675-be33-df01c9a89af9', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 7.5, 'g', NULL), +('97f57cc8-d970-5c21-aade-3e424f8301e9', 'b429e162-91ca-5675-be33-df01c9a89af9', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 7.5, 'g', NULL), +('d43721b3-bc3e-5409-bfe5-7e5119f5d44d', 'b429e162-91ca-5675-be33-df01c9a89af9', 'fbd16485-f749-5246-808b-5adc5e361503', 45, 'g', NULL), +('46ece605-0b46-542e-ae42-cfadb490e98c', 'b429e162-91ca-5675-be33-df01c9a89af9', '79f7723f-ee6f-54c6-8f27-d567c20a8457', 7, 'trái', NULL), +('f3aaa31e-f2ed-53ac-8185-04b1e98113d9', 'b429e162-91ca-5675-be33-df01c9a89af9', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 15, 'g', NULL), +('ef989a0d-17ce-5323-9e02-281a3eae809b', 'b429e162-91ca-5675-be33-df01c9a89af9', 'ce4c63d5-b8e9-55ff-9588-45d2195a1c92', 4, 'cây', NULL), +('334f2e4f-c3a6-57f8-8dbc-50b56f28cba9', 'b429e162-91ca-5675-be33-df01c9a89af9', '7c6d5294-e1da-5ddc-907f-030322abbd3d', 0.5, 'chén', NULL), +('34c5a163-b61f-5afe-be7f-1d2f720363f1', '65e69561-b8e9-5c64-b266-17eb6e8275d5', 'b9b9a180-4df0-5b6e-a2b2-1daed4e36aa5', 320, 'g', NULL), +('e77237b9-0299-57fe-a711-b9b568f7b517', '65e69561-b8e9-5c64-b266-17eb6e8275d5', 'e1f523d1-956f-5786-be5b-93285248593b', 150, 'g', NULL), +('9de267b7-749b-52f6-ae30-147e9b0bbaf3', '65e69561-b8e9-5c64-b266-17eb6e8275d5', '94e18e46-5a05-5053-b1be-d463a82c03e2', 100, 'g', NULL), +('584e25d2-62d7-5db5-9ec1-02aa2a15378c', '65e69561-b8e9-5c64-b266-17eb6e8275d5', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 60, 'g', NULL), +('24139cab-ceaa-5a3d-a90f-0ac9aa0bda6f', '65e69561-b8e9-5c64-b266-17eb6e8275d5', 'a778c04b-d4ac-5a47-849e-390e817874b4', 20, 'g', NULL), +('38a3630b-d637-5101-9d57-343ab0574611', '65e69561-b8e9-5c64-b266-17eb6e8275d5', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 80, 'g', NULL), +('d2dab7d4-85ae-5134-a555-48ab163bb921', '65e69561-b8e9-5c64-b266-17eb6e8275d5', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 7.5, 'g', NULL), +('8d14e0e0-4a4b-55b5-a999-cbf671e73613', '65e69561-b8e9-5c64-b266-17eb6e8275d5', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('f75b99dc-bf3f-5926-b9f0-126580745553', '65e69561-b8e9-5c64-b266-17eb6e8275d5', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('31d9de2a-52c0-5a4a-89f8-2cf858626080', '65e69561-b8e9-5c64-b266-17eb6e8275d5', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('dbf29ae6-6579-506f-b8a9-999e96caee3f', '65e69561-b8e9-5c64-b266-17eb6e8275d5', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 22.5, 'g', NULL), +('04ccb6a7-5c45-58c2-857f-31a48f52ca62', '65e69561-b8e9-5c64-b266-17eb6e8275d5', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('db11ea02-b749-5504-8425-8d326ca5955e', '65e69561-b8e9-5c64-b266-17eb6e8275d5', '641f1206-7440-54ad-ad8d-709933c7917e', 80, 'g', NULL), +('caebbd12-f798-58d3-a397-29b749d30e24', '65e69561-b8e9-5c64-b266-17eb6e8275d5', '00224658-7dc1-59d7-a649-afa32e8306ec', 20, 'g', NULL), +('e38dd068-9219-5993-a3c3-4e803cdb345b', '65e69561-b8e9-5c64-b266-17eb6e8275d5', '4bbb2703-742d-5cf9-be8d-90cfc553590c', 20, 'g', NULL), +('01d136c5-65ed-5b38-9029-b0668fdb4b34', '65e69561-b8e9-5c64-b266-17eb6e8275d5', '4d223977-a251-5efa-b1c0-1e86aa3e8760', 20, 'g', NULL), +('b258d999-df84-55b3-b998-4a5f27551048', '65e69561-b8e9-5c64-b266-17eb6e8275d5', '33923ff7-3942-50ca-9237-b00a5b23ed14', 80, 'g', NULL), +('4f1953b3-e6e0-546a-8f79-b31106ed8f60', '65e69561-b8e9-5c64-b266-17eb6e8275d5', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('0b2e27d6-a9d2-5377-acd4-8fcf4b4ee78c', '1b63c604-1ff8-5d78-9291-0dba252a058d', '7c4dfea3-30a3-5116-977d-f5b87afa153c', 200, 'g', NULL), +('4a51a040-2822-517b-98bb-a2266cae85bc', '1b63c604-1ff8-5d78-9291-0dba252a058d', 'd3fe4466-cc31-5399-a49c-6b0829a6ca56', 50, 'g', NULL), +('cc4a246c-678c-56b3-8f4c-af501df781eb', '1b63c604-1ff8-5d78-9291-0dba252a058d', 'b8724dc0-7281-5b6a-b7f9-3c281e3fae8e', 50, 'g', NULL), +('560c378e-eae1-5e3d-9d79-563b02e2e1fd', '1b63c604-1ff8-5d78-9291-0dba252a058d', 'ea000025-1111-2222-3333-444444444444', 50, 'g', NULL), +('130e90de-da26-5417-a582-1930d78d1613', '1b63c604-1ff8-5d78-9291-0dba252a058d', '0881dc7b-0907-51bf-9cf2-0179084ea4a2', 10, 'g', NULL), +('e81fd270-bd87-5cac-88bf-dd62f8de3cde', '1b63c604-1ff8-5d78-9291-0dba252a058d', '152109fb-25ac-55cc-ad5a-341010f2bb98', 20, 'g', NULL), +('0f6c1aa4-219a-53b4-b8bf-10070ee06e9e', '1b63c604-1ff8-5d78-9291-0dba252a058d', '300b9a61-bd25-5035-8b3d-f3b094c3dca7', 20, 'g', NULL), +('99b18755-b752-5b96-9fcf-8a6a36b45065', '1b63c604-1ff8-5d78-9291-0dba252a058d', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('ef0b7d28-c70f-5136-908e-1289f1cefa4a', '1b63c604-1ff8-5d78-9291-0dba252a058d', '506b7b48-1a25-5e6d-87f9-a345ebb45f17', 20, 'g', NULL), +('a269f7cf-8c6a-57a0-ad39-3b81f2a47095', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', '42da84a2-6542-5f80-9f16-07f2238e4d3a', 300, 'g', NULL), +('09b12dc8-9aab-5bbc-9b96-d782f846c96e', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', 'd5bb3bc9-81ca-5eaf-98ba-911a82fe6496', 80, 'g', NULL), +('9e4b290d-074f-5b9f-be7a-d4c2d17c1896', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', 'ea000007-1111-2222-3333-444444444444', 80, 'g', NULL), +('03acf085-1705-5fae-9ac5-f2e8c4675d78', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', '03cdcbd3-eb4b-51f3-a509-442fa4f83a1d', 80, 'g', NULL), +('2294347c-8f8b-5151-b659-018430df0e4d', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', 'ea000006-1111-2222-3333-444444444444', 80, 'g', NULL), +('88816bb0-5f5b-5f62-8fe5-e5e9c793c73e', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', '6448be8c-54c1-5eec-acfa-7285f67d621a', 80, 'g', NULL), +('c9dc91d2-2b28-5543-bcff-934ccd98d643', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', '9fb90ef3-e2c1-5e65-8965-69fbcd2376c7', 1, 'quả', NULL), +('e84a181d-321a-5d42-9902-3bd2a16c9d12', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 35, 'g', NULL), +('255095b1-5ce7-5700-a964-f3692efc414c', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('79084fb7-c701-5331-9f4f-0bba884b91ba', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', 'd670ecbf-b24f-5b0b-82b2-d4578feba00c', 30, 'g', NULL), +('53b6a364-807a-5827-af55-65d6d0892e34', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 15, 'g', NULL), +('5210e30c-035f-52ef-a6fb-1fcdfe29ac43', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', '72323f09-1484-5581-ac71-5bcbc042dd56', 7.5, 'g', NULL), +('1294cb99-0ca4-555b-b6e4-a6dcf602a7fa', '2bdf29f8-8454-5a6e-95ec-46c2c70d169e', '99157107-8cbc-5715-97f1-620017377993', 100, 'g', NULL), +('92766ede-d4e3-5da1-96ea-f9aab860275f', '23c787a3-80f0-531b-9181-8bbf6e8583b8', '0f7bb485-05a8-5fb9-b2a3-f3ecb9f7a538', 300, 'g', NULL), +('d41b5f46-4ed8-5bb2-be73-b5f056db7922', '23c787a3-80f0-531b-9181-8bbf6e8583b8', '8eac82e0-f30e-5265-99e9-b9fa4c254698', 130, 'g', NULL), +('fe29f682-a762-5d8a-add9-18c631be9dc6', '23c787a3-80f0-531b-9181-8bbf6e8583b8', '62a49695-09af-5494-8650-c4cf5551d9a5', 20, 'g', NULL), +('8722fea3-d123-51a8-8416-db10b9185007', '23c787a3-80f0-531b-9181-8bbf6e8583b8', '1580ab05-9658-5cdd-9157-4aeddc092125', 45, 'g', NULL), +('a8918797-09fa-5aaf-87aa-30059bd4ca57', '23c787a3-80f0-531b-9181-8bbf6e8583b8', 'a6d272a4-5c80-5f6d-bcd6-463e6092b9d3', 30, 'g', NULL), +('92105119-f1e4-5dff-a150-f0f5a150ea6f', '23c787a3-80f0-531b-9181-8bbf6e8583b8', 'ea000029-1111-2222-3333-444444444444', 670, 'g', NULL), +('6a7dd79f-d280-5549-91bd-ffb471fd30c2', '23c787a3-80f0-531b-9181-8bbf6e8583b8', 'b6332786-b190-5600-871e-e582de462c31', 400, 'g', NULL), +('afdc5a90-180d-5261-805f-54166084cf47', '23c787a3-80f0-531b-9181-8bbf6e8583b8', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('e2dff767-6ec7-5bb0-afc3-5b5feb0b655f', '23c787a3-80f0-531b-9181-8bbf6e8583b8', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 45, 'g', NULL), +('5a0a8efa-b1a8-5f25-bef0-088d5a7b3f8a', '23c787a3-80f0-531b-9181-8bbf6e8583b8', '7567abf1-f0c0-5fff-b414-ee5be6bc8f98', 7.5, 'g', NULL), +('96002a49-b496-533c-a898-67b446045e52', '23c787a3-80f0-531b-9181-8bbf6e8583b8', 'b932b410-9496-504c-8f1d-ed9868c15331', 15, 'g', NULL), +('53b4f7f3-a67c-5577-abce-3eb408ec3272', '23c787a3-80f0-531b-9181-8bbf6e8583b8', 'ea000025-1111-2222-3333-444444444444', 15, 'g', NULL), +('4cdf984d-3a9a-54ae-ab73-53c2f2b1aa72', '23c787a3-80f0-531b-9181-8bbf6e8583b8', '33923ff7-3942-50ca-9237-b00a5b23ed14', 15, 'g', NULL), +('70a83fea-0deb-573b-a8cc-a40e2f35914f', '059169ca-39f9-530b-9bfc-b009292ab6be', '6c1ec9f9-0406-5616-82a9-9082034cc0f8', 200, 'g', NULL), +('6beae313-ec78-5b8a-bbac-c71b6ad192e5', '059169ca-39f9-530b-9bfc-b009292ab6be', '234e57c7-21c6-5053-9421-084574249a27', 200, 'g', NULL), +('019f70a1-2399-5aa1-ab2d-4e4a0a1200e1', '059169ca-39f9-530b-9bfc-b009292ab6be', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 30, 'g', NULL), +('3d92b260-a6ca-5630-a786-9db51f4110d3', '059169ca-39f9-530b-9bfc-b009292ab6be', 'be1f13f5-af04-5fc6-945c-8c3493c38f1a', 15, 'g', NULL), +('36d1d6e8-61c5-5a33-88a3-9161a7ce7bae', '059169ca-39f9-530b-9bfc-b009292ab6be', '2d1c8a02-22b5-5384-843b-fad5ccd8fda3', 1, 'quả', NULL), +('7052a57d-c56f-5742-aec8-7bab95eafaea', '059169ca-39f9-530b-9bfc-b009292ab6be', 'ea000034-1111-2222-3333-444444444444', 30, 'g', NULL), +('5872c6db-ef49-579c-ad7d-02e1f6d6b0e1', '059169ca-39f9-530b-9bfc-b009292ab6be', '3b48d889-3d0e-5f49-9bb4-3505dde171af', 700, 'ml', NULL), +('bcf60ff7-8eff-5aae-a2c1-1c2590294f4a', '059169ca-39f9-530b-9bfc-b009292ab6be', 'b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 0.5, 'trái', NULL), +('46be2418-a909-5e5b-a3e3-961d9238ea5e', '059169ca-39f9-530b-9bfc-b009292ab6be', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 30, 'g', NULL), +('3e0467fd-a0c5-585c-81de-5fbaedb4d898', '059169ca-39f9-530b-9bfc-b009292ab6be', '301eecc8-c8ef-57c8-a19c-f5288d454a43', 15, 'g', NULL), +('cd33415a-6e06-55d8-ba31-fbf24c011e22', '059169ca-39f9-530b-9bfc-b009292ab6be', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('d094a2ff-5c04-582a-bc01-557bd835f870', '059169ca-39f9-530b-9bfc-b009292ab6be', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 7.5, 'g', NULL), +('e8dd24da-7f48-5f3b-85f5-d0f75d0aef25', '059169ca-39f9-530b-9bfc-b009292ab6be', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('76c650a5-4574-59a0-a85a-38b7b7cd7461', '059169ca-39f9-530b-9bfc-b009292ab6be', 'dd711f5b-3ba5-5681-a8b5-05908f41e15b', 5, 'g', NULL), +('ee4475f6-8a42-5570-abc6-a4e8fbc6ec76', '059169ca-39f9-530b-9bfc-b009292ab6be', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('a611f6a6-00dd-5b6e-99b8-534cb4f1a69a', '7c8cd9aa-bd67-52a0-bcae-22625923361c', '6c1ec9f9-0406-5616-82a9-9082034cc0f8', 100, 'g', NULL), +('c436c406-12b7-516b-9268-38f87075c57a', '7c8cd9aa-bd67-52a0-bcae-22625923361c', 'ea000026-1111-2222-3333-444444444444', 80, 'g', NULL), +('6627e70a-8d51-52eb-8ba3-91219c67d115', '7c8cd9aa-bd67-52a0-bcae-22625923361c', '3ecb33c9-77f0-5922-85e7-17d568e6119a', 30, 'g', NULL), +('daf4b875-4a11-5970-8ebe-a986257d2c1b', '7c8cd9aa-bd67-52a0-bcae-22625923361c', 'ea000034-1111-2222-3333-444444444444', 10, 'g', NULL), +('2a007ff1-6340-5b6c-839f-185c11469b39', '7c8cd9aa-bd67-52a0-bcae-22625923361c', '86eda42e-989d-5587-8f1d-96a2d9416a85', 5, 'g', NULL), +('24acfbe2-b7bf-57fd-9ff4-0d598ce09941', '7c8cd9aa-bd67-52a0-bcae-22625923361c', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('ec5cbd75-9153-5bdb-b2ab-89bc2f251851', '7c8cd9aa-bd67-52a0-bcae-22625923361c', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('2d674f13-8821-55a9-92ba-357cca21426f', '7c8cd9aa-bd67-52a0-bcae-22625923361c', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('b382d5f8-9429-5600-ac07-2cce4a8eef04', '7c8cd9aa-bd67-52a0-bcae-22625923361c', '19cec053-aed7-5719-82c5-b44b9e897f44', 5, 'g', NULL), +('71eff344-ada9-52d9-a6b9-5669113b609b', '7c8cd9aa-bd67-52a0-bcae-22625923361c', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('a70a766f-edb6-5844-8629-416c9131d93c', '7c8cd9aa-bd67-52a0-bcae-22625923361c', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('cc3a23cb-10e8-5d98-a0a8-3134dafec3fb', 'e143f353-f108-5d2b-84cd-68c151829f1c', 'a66febcf-1f43-5fd1-9807-6a613d00b209', 1000, 'ml', NULL), +('922a2249-6ca9-5a09-a034-5be90b732efe', 'e143f353-f108-5d2b-84cd-68c151829f1c', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 4, 'quả', NULL), +('eb46e1a5-947c-54ab-a110-bd6ebc822f2d', 'e143f353-f108-5d2b-84cd-68c151829f1c', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('fbcf4efd-4a9d-5ae9-8964-673a86d6eb8b', 'e143f353-f108-5d2b-84cd-68c151829f1c', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('68fea519-9474-5158-9d60-cf1c06245393', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', 'bc6d5018-8def-5a19-a995-e9edabe617dc', 160, 'g', NULL), +('c9d423ac-0140-58f6-9580-71e5f43f0719', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', 'a7862dcc-da60-5970-98b3-3d2a131c6ee6', 150, 'g', NULL), +('fa1951a2-e16f-5037-908b-e80590358a2a', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', 'ac81d1e9-8e6c-51a0-9d25-769606f4e921', 20, 'g', NULL), +('dc04ec47-e8b1-5900-beff-660756d4ec7c', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', 'a66febcf-1f43-5fd1-9807-6a613d00b209', 40, 'g', NULL), +('b3678cfb-3da9-5568-be6f-af302c4ffe4b', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('abb0cc5b-78d4-54d3-8c14-7086383944be', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', '6b6d3478-c6ea-5a59-ad81-b339d844074e', 100, 'g', NULL), +('e66e5e11-09c7-5a46-8421-2898bb8bd6b3', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('4a95f7f1-ff2a-5e2f-9bc6-d9cbf7cdf28e', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('49312e46-465b-5401-a99a-cbd7ad03068f', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('e118c3f8-fafa-5dea-9495-00d1e6a99b8e', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('88013d83-a500-5d83-87e9-8e8c8f980e71', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('fb08070a-a1a6-5e8c-a55e-df30498f47da', '6e1fbcff-fd82-5dc9-9082-6050995ad7ee', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('3e4ac62d-4b2c-5ca4-aa7e-c262cb21f51b', '03b3b84c-b064-54e7-b626-1557ecd827bc', '85491f42-8a26-5869-bad6-384d7f1b6036', 100, 'g', NULL), +('3640f30e-dd23-5ace-ba26-0ac46d65dee0', '03b3b84c-b064-54e7-b626-1557ecd827bc', 'ea000004-1111-2222-3333-444444444444', 1, 'quả', NULL), +('af6ca9f5-405e-5240-b835-3fdc28610b39', '03b3b84c-b064-54e7-b626-1557ecd827bc', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('aff4ee61-d6ac-57c0-8d4f-60c6e0ef18c6', '03b3b84c-b064-54e7-b626-1557ecd827bc', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('0c5e54b1-03d5-524f-9a28-e0fba928b568', '03b3b84c-b064-54e7-b626-1557ecd827bc', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('fd7e8c42-257b-5ee4-b0cc-e1f525d3e3cc', '03b3b84c-b064-54e7-b626-1557ecd827bc', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('8124b540-d6e2-501d-9289-5f4e4f89feb3', '03b3b84c-b064-54e7-b626-1557ecd827bc', '19cec053-aed7-5719-82c5-b44b9e897f44', 5, 'g', NULL), +('a50aac01-89c8-59b1-8a04-da98396860e5', '700efaf4-d68c-5821-875d-6ef08ddb9573', 'ea000026-1111-2222-3333-444444444444', 150, 'g', NULL), +('1c711cbf-da4e-553b-9b4a-14c03dcceece', '700efaf4-d68c-5821-875d-6ef08ddb9573', 'ea000010-1111-2222-3333-444444444444', 70, 'g', NULL), +('fbaa66c4-d293-5474-9972-afcb031f87f9', '700efaf4-d68c-5821-875d-6ef08ddb9573', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('87113e49-4ade-51f5-91a1-9013639d42d1', '700efaf4-d68c-5821-875d-6ef08ddb9573', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('bdcd1e32-a2e5-57b0-8f18-588d55265f26', '700efaf4-d68c-5821-875d-6ef08ddb9573', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 20, 'g', NULL), +('a42ec2b2-45dc-593c-aa56-ab0c3940ebf7', '700efaf4-d68c-5821-875d-6ef08ddb9573', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('aab389a0-d1f2-57a3-9a29-d1a4b5d46f74', '700efaf4-d68c-5821-875d-6ef08ddb9573', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('82cf7856-d264-5a03-88d7-9ff486e54d8e', '700efaf4-d68c-5821-875d-6ef08ddb9573', '23d2f15d-4fc0-518e-8770-dbbc5cb881a5', 80, 'g', NULL), +('d9645fce-8d9f-581f-a1b3-2a700fa0fa50', '700efaf4-d68c-5821-875d-6ef08ddb9573', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('ad0d3f56-aed9-56d8-b88d-8ce1de7da860', '700efaf4-d68c-5821-875d-6ef08ddb9573', '19cec053-aed7-5719-82c5-b44b9e897f44', 5, 'g', NULL), +('d9f5e76c-ddd9-50fe-9155-36221fc2a359', '7944f574-0f38-5656-9330-1a54a4183ed4', 'a121b4bf-0fd8-5457-bcfd-dd57464fff34', 250, 'g', NULL), +('3e824fd9-cc06-5596-accb-a9567a086dc4', '7944f574-0f38-5656-9330-1a54a4183ed4', '4b8aab89-cdc8-572e-8052-f43a69b2e78a', 100, 'g', NULL), +('737ab552-f224-5c8a-b805-bffa4c35f990', '7944f574-0f38-5656-9330-1a54a4183ed4', '771d556c-e0c3-5473-93aa-8afb147eea8c', 100, 'g', NULL), +('be41792b-b130-5750-9d2f-f4af7fc7e06e', '7944f574-0f38-5656-9330-1a54a4183ed4', 'ea000007-1111-2222-3333-444444444444', 100, 'g', NULL), +('d2bb0cf6-541b-575e-92b2-3a53829a5760', '7944f574-0f38-5656-9330-1a54a4183ed4', 'ea000042-1111-2222-3333-444444444444', 100, 'g', NULL), +('1ecf750a-6861-5e89-8fe9-8ad0dcd1cce8', '7944f574-0f38-5656-9330-1a54a4183ed4', 'cf6b3000-929c-5350-ae1a-1e38fc86a71e', 50, 'g', NULL), +('50a416e3-7370-549b-aa0c-7618f70b6b62', '7944f574-0f38-5656-9330-1a54a4183ed4', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('311e3766-7c41-54b0-860e-d6c7e6941087', '7944f574-0f38-5656-9330-1a54a4183ed4', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 0.5, 'chén', NULL), +('4a20b74f-dbca-5b59-8994-8571bc395d0e', '7944f574-0f38-5656-9330-1a54a4183ed4', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('8a18b763-d236-557f-bd2b-652abf54e6a3', '7944f574-0f38-5656-9330-1a54a4183ed4', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('74072671-32cb-5b31-b3a9-34997ce51e31', '7944f574-0f38-5656-9330-1a54a4183ed4', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('2566228f-8ffa-5a68-a671-b9c7b1581d3d', '7944f574-0f38-5656-9330-1a54a4183ed4', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('cbac34c0-986e-5c9f-ba99-247b81eedbc9', '7944f574-0f38-5656-9330-1a54a4183ed4', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('060d0d75-d137-562a-bba4-035d2162d75b', '7944f574-0f38-5656-9330-1a54a4183ed4', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('bfd67c3d-e2be-5225-a1ba-9b270cc9b943', '7944f574-0f38-5656-9330-1a54a4183ed4', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('38881e87-d0ac-5105-bc87-db4fbddc612f', '7944f574-0f38-5656-9330-1a54a4183ed4', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('41ed5d43-03e0-5ca8-9876-0eed0aab06a6', '6844ee20-8ed8-5940-adce-769a1141e4a8', 'e3ac931a-da22-5606-a475-47a0b80a07ee', 400, 'g', NULL), +('2fc7a90f-2ae3-53ee-b351-d309799ab5cb', '6844ee20-8ed8-5940-adce-769a1141e4a8', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('22e5995c-25aa-55de-b11f-b222d6f89330', '6844ee20-8ed8-5940-adce-769a1141e4a8', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 0.25, 'trái', NULL), +('fe4f0e01-ff11-5a8a-a614-c9d957f6a0fd', '6844ee20-8ed8-5940-adce-769a1141e4a8', '4c3ead82-434e-5b54-81b0-15f5010b1ed4', 150, 'g', NULL), +('22781781-1812-5047-af94-0dae19598c6e', '6844ee20-8ed8-5940-adce-769a1141e4a8', 'b5536bed-4860-5fd5-8e4c-f0b7d8e6be95', 150, 'g', NULL), +('c687d281-e025-557d-ade5-e86f8c7db987', '6844ee20-8ed8-5940-adce-769a1141e4a8', '242aeea8-c0c7-5190-a0e6-92c3e49ae0a3', 150, 'g', NULL), +('25bde44a-b990-50ae-9d3a-e5d50ef4ef62', '6844ee20-8ed8-5940-adce-769a1141e4a8', '725e64c6-e003-54c3-b1a3-5c562700b224', 2, 'miếng', NULL), +('26314994-610e-53b8-9176-4c5da75c5e32', '6844ee20-8ed8-5940-adce-769a1141e4a8', 'cf7fa287-4c62-5caf-8393-001028d03360', 150, 'g', NULL), +('47f8829b-420c-55ad-9ab1-2fa90addb7df', '6844ee20-8ed8-5940-adce-769a1141e4a8', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('bc3d9405-dc21-5467-aae5-664c83a16e54', '6844ee20-8ed8-5940-adce-769a1141e4a8', '641f1206-7440-54ad-ad8d-709933c7917e', 80, 'g', NULL), +('c00ec767-7743-5d27-bddd-bd57d098ecaa', '6844ee20-8ed8-5940-adce-769a1141e4a8', 'ea000029-1111-2222-3333-444444444444', 500, 'g', NULL), +('03ab1461-f06b-5baa-9f97-e2ad6d0f06ba', '6844ee20-8ed8-5940-adce-769a1141e4a8', 'b022ec51-1f8d-575b-913c-22164c09829e', 3, 'cây', NULL), +('69c3d9dc-ac51-52cf-bea9-2e249f0042cd', '4825fd88-5f5c-5821-9062-7f8f04ebd302', 'b0a4b9d7-c6c6-556b-839f-35232eded1ba', 1200, 'ml', NULL), +('64c6461e-11a1-5c50-85e2-08e3104d76dc', '4825fd88-5f5c-5821-9062-7f8f04ebd302', '5716aac3-265c-5ee8-9969-1699861ecbe8', 1, 'miếng', NULL), +('be47ae59-c0d4-56e5-8cac-2e07b4899fee', '4825fd88-5f5c-5821-9062-7f8f04ebd302', '00bf9726-71aa-5a08-ac4f-d4163cb08bb4', 100, 'g', NULL), +('9889d0d9-e2b6-5c9c-9496-b708dfa8eed1', '4825fd88-5f5c-5821-9062-7f8f04ebd302', '02f66156-6c1b-5fe8-8c44-9bfde4332475', 100, 'g', NULL), +('c36ffa73-ccba-51ad-b84e-77933f14c016', '4825fd88-5f5c-5821-9062-7f8f04ebd302', 'ea000034-1111-2222-3333-444444444444', 20, 'g', NULL), +('d69a16f4-e2dd-5e4e-92ec-e391a9d7581e', '4825fd88-5f5c-5821-9062-7f8f04ebd302', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 5, 'g', NULL), +('730f54bc-3f9b-5a68-a4a7-d146d69b9b67', '4825fd88-5f5c-5821-9062-7f8f04ebd302', '1c18a717-6327-5563-a0c5-361511d83208', 100, 'g', NULL), +('b78e35b5-09da-5103-9279-605d9966bfdb', '4825fd88-5f5c-5821-9062-7f8f04ebd302', '1d206061-41c5-542f-9bfa-643881ce9976', 80, 'g', NULL), +('ec13730a-c405-5dee-be73-4f506cea24f5', '4825fd88-5f5c-5821-9062-7f8f04ebd302', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('7be57e22-e486-5660-8573-53240dd5c77e', '4825fd88-5f5c-5821-9062-7f8f04ebd302', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 10, 'g', NULL), +('971aa7da-c307-5a7e-860b-01535553f354', '4825fd88-5f5c-5821-9062-7f8f04ebd302', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 2.5, 'g', NULL), +('fd6a7617-39c6-5463-b570-135b228c5783', '4825fd88-5f5c-5821-9062-7f8f04ebd302', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2.5, 'g', NULL), +('5c401d17-5781-5e68-981c-78b2f69996be', '4825fd88-5f5c-5821-9062-7f8f04ebd302', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 4, 'g', NULL), +('6f3c2e71-8231-51c3-b354-3ad953627699', '4825fd88-5f5c-5821-9062-7f8f04ebd302', 'f6080ac8-739e-5a97-8faf-e25a7afe7bec', 50, 'g', NULL), +('d7701222-6c99-5e5a-b13c-d46b24c3ef8e', '8133d712-b664-5bae-85d5-1d8688942392', 'ea000002-1111-2222-3333-444444444444', 250, 'g', NULL), +('8c4f2e03-c064-5a28-970f-ff4d5ca578b1', '8133d712-b664-5bae-85d5-1d8688942392', '771d556c-e0c3-5473-93aa-8afb147eea8c', 150, 'g', NULL), +('00f030e9-63b7-5e54-a5ed-e91d3c7a56b3', '8133d712-b664-5bae-85d5-1d8688942392', '5b1f71a2-8d75-5a5f-afee-e05752a582d5', 50, 'g', NULL), +('e1b676dd-60ef-5e8c-8144-49c45552f3ac', '8133d712-b664-5bae-85d5-1d8688942392', '189e4982-e150-59bf-aaf2-7227ccb9d61a', 50, 'g', NULL), +('ed765887-b1af-55c1-90d9-ea2baf3bd011', '8133d712-b664-5bae-85d5-1d8688942392', '78b52eb8-1d9b-5a75-9186-34349231d948', 100, 'g', NULL), +('c4c141dd-2cad-5e73-9c29-04d40ab178c6', '8133d712-b664-5bae-85d5-1d8688942392', '8f7466ee-dd75-5c32-86b1-87a9cc3a8ce4', 20, 'g', NULL), +('ea208164-1aa8-572c-897e-76b4acafb32f', '8133d712-b664-5bae-85d5-1d8688942392', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 1.25, 'g', NULL), +('cfc28935-ab01-5b90-8146-f2da2b47ddaf', '8133d712-b664-5bae-85d5-1d8688942392', 'cff07683-f25b-5db5-b0a1-fadf7016f351', 90, 'g', NULL), +('96708faf-828b-53bd-80f9-ffb60b400391', '8133d712-b664-5bae-85d5-1d8688942392', '99157107-8cbc-5715-97f1-620017377993', 15, 'g', NULL), +('180c0116-fda5-507b-8aee-8f0949cbca23', '8133d712-b664-5bae-85d5-1d8688942392', '21256138-c99f-5b07-9b64-cf44702a8048', 1.25, 'g', NULL), +('352152f9-ace4-5a0e-8905-45c574328967', '8133d712-b664-5bae-85d5-1d8688942392', '0ad9ea3b-d13d-5240-ab95-881d485d7d15', 30, 'g', NULL), +('a8e19d81-8816-5979-a79b-f971ab4bd406', '8133d712-b664-5bae-85d5-1d8688942392', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 10, 'g', NULL), +('87aae04b-5b82-5b93-bc32-bcfbd51aa71a', '8133d712-b664-5bae-85d5-1d8688942392', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('56e03e94-c3f3-50a6-9741-0cb86b4a80c0', '63cee79e-bd9b-5de3-84cb-f700c331f757', 'a91e77a1-304b-5dbd-949c-d77f7992dc25', 400, 'g', NULL), +('659f53ea-00c3-527d-a378-cd0f333f9fb0', '63cee79e-bd9b-5de3-84cb-f700c331f757', 'd63c24c4-d607-5d62-b1f0-e80096546ff4', 1, 'trái', NULL), +('63f3ef7a-d427-5de6-9541-b15b04b42910', '63cee79e-bd9b-5de3-84cb-f700c331f757', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 5, 'g', NULL), +('e536a645-e0e5-5253-bd05-4a2b967a1edb', '63cee79e-bd9b-5de3-84cb-f700c331f757', 'd78a4d96-6aac-5040-b57b-babf098ab792', 150, 'g', NULL), +('5a9afe4d-c76b-5e2e-9e20-64d1df50414a', '63cee79e-bd9b-5de3-84cb-f700c331f757', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 2.5, 'g', NULL), +('be9ac97a-bf8f-5dbc-a189-75e8da5aa8d7', '63cee79e-bd9b-5de3-84cb-f700c331f757', 'fa3242cd-3343-52e0-bec7-7f93f5e3e473', 7.5, 'g', NULL), +('09c83e08-bb54-584e-8b77-0d729621b1bd', '63cee79e-bd9b-5de3-84cb-f700c331f757', 'df224a67-8f36-55c5-a5a3-8e7938166089', 30, 'g', NULL), +('72252767-b136-5794-a59b-1f9072ceaa5f', '63cee79e-bd9b-5de3-84cb-f700c331f757', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 10, 'g', NULL), +('bb3e2c9d-8126-5ebf-b90b-259dc33cf1a8', '63cee79e-bd9b-5de3-84cb-f700c331f757', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 22.5, 'g', NULL), +('796d9b31-eb3d-53f7-9630-1572561e0a9c', '63cee79e-bd9b-5de3-84cb-f700c331f757', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 30, 'g', NULL), +('b916366e-1d78-56c1-962f-46736042765b', '63cee79e-bd9b-5de3-84cb-f700c331f757', '19cec053-aed7-5719-82c5-b44b9e897f44', 30, 'g', NULL), +('7d249093-3c79-5fa1-8e7a-603faf591c7e', '63cee79e-bd9b-5de3-84cb-f700c331f757', '923020f1-ade0-5759-b669-81c263bba409', 2, 'cm', NULL), +('2fcc6af3-14b6-5de6-9ee4-c5f0a5218fa7', 'b32a4ff5-bdca-5ce2-9f12-f85198cb2821', '39b46b2e-90ce-503a-89d0-a79e2563e18c', 250, 'g', NULL), +('0bf4f8c4-5826-5e18-97c9-3aa7f18ea8cb', 'b32a4ff5-bdca-5ce2-9f12-f85198cb2821', 'd89ad7b7-4734-5b29-bc15-671bd5491023', 20, 'g', NULL), +('c0c23dfc-0f43-58d7-ad77-c59dc956e8d2', 'b32a4ff5-bdca-5ce2-9f12-f85198cb2821', 'ea000004-1111-2222-3333-444444444444', 1, 'quả', NULL), +('df5d8515-9944-5645-b345-37a64d063c37', 'b32a4ff5-bdca-5ce2-9f12-f85198cb2821', '02a08be7-827c-5b20-b186-951ea8973ae5', 10, 'g', NULL), +('d64bdecf-0d34-5012-bb7b-a8ac26d7d4e1', 'b32a4ff5-bdca-5ce2-9f12-f85198cb2821', '4a3f2c69-e7ff-5a07-b0d2-22da8b5b8c2c', 30, 'g', NULL), +('ad7873d9-0d56-59cc-ac71-1578828d05ad', 'b32a4ff5-bdca-5ce2-9f12-f85198cb2821', 'ea000023-1111-2222-3333-444444444444', 30, 'g', NULL), +('703e8db2-25ea-520d-b968-53a5cc23abb5', 'b32a4ff5-bdca-5ce2-9f12-f85198cb2821', '09f86239-76c0-512a-ad02-f9ff2f45c5ff', 30, 'g', NULL), +('56d582c6-9c88-5d65-9759-29b8129c1911', 'b32a4ff5-bdca-5ce2-9f12-f85198cb2821', 'ac87af18-4a3c-59e0-b3d1-f0d700a3c5d1', 20, 'g', NULL), +('7be1644e-88f4-560e-8e7e-de99715a59ff', 'b32a4ff5-bdca-5ce2-9f12-f85198cb2821', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('85ec3d65-8ed1-5850-ad17-4ed3df2627c1', 'b32a4ff5-bdca-5ce2-9f12-f85198cb2821', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('db1c0536-bc27-5e10-bc3d-87adebe3a5ae', 'b32a4ff5-bdca-5ce2-9f12-f85198cb2821', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('1b174272-9248-53f5-8908-5f9d2d82c836', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', 'd8260c28-d006-5fed-ae3d-7c58d437431f', 50, 'g', NULL), +('f3b93699-b934-5edf-ab54-ac7fd8cc7b33', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', 'ea000010-1111-2222-3333-444444444444', 100, 'g', NULL), +('9cfe1025-643e-5318-833d-b97f31f454eb', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', '1a311698-63bb-50eb-b4b3-a6f834e0f4f1', 100, 'g', NULL), +('760adda1-ae90-5cf0-b3dc-58a076258e37', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', 'a25aa58d-29d7-5e64-bfcf-95bd7b865dee', 50, 'g', NULL), +('12b69cf8-48f6-5f26-96a3-e5f18b9151a2', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', '063a3b03-799e-5887-81aa-b1e1fa711805', 200, 'g', NULL), +('89ffe9e1-4bde-5f23-ba50-2f1e063d4b1e', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', '4ade6bf1-bce0-5697-af55-766b0e71374e', 50, 'g', NULL), +('5b62c30a-33a5-5a3c-b041-680cdcd92982', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', '7d8bed93-7686-5645-928a-551847c4c287', 10, 'g', NULL), +('437bb7ad-cddd-5a92-a1b0-2de8a30d2e48', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 60, 'g', NULL), +('e7b57c67-e473-584e-a0db-5443372d70b5', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 2.5, 'g', NULL), +('00c5306d-216d-5489-ba72-948d93b3fdb3', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('696e633d-2e74-52cc-ac87-517d5b213fa7', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('55dd60a9-415b-55ed-927d-7fdd2e64b0b6', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', '99157107-8cbc-5715-97f1-620017377993', 15, 'g', NULL), +('817a1504-541f-5525-bece-c1e3e892b7cf', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 5, 'g', NULL), +('b1bee586-34ce-549f-aeee-1debe52a0dca', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 5, 'g', NULL), +('27e1ae08-72d2-5df3-a88d-83209c0f7b3b', '26b96e49-8e91-539b-baec-35d2c0f9e8e0', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('28fa0410-071b-59bd-8b23-11907187c37b', 'f81aeffe-7080-53cd-8c22-b2c534391879', '1385f5d5-aa06-5fca-9ff1-c83f1353a53d', 120, 'g', NULL), +('27de72c7-ada2-595b-8f84-267cb6dab724', 'f81aeffe-7080-53cd-8c22-b2c534391879', 'b30db8fd-855d-5155-94a8-b3bb057092d8', 100, 'g', NULL), +('9beb7696-438a-5c85-bb78-accae82a908f', 'f81aeffe-7080-53cd-8c22-b2c534391879', 'ea000027-1111-2222-3333-444444444444', 250, 'g', NULL), +('9c1a413a-ecf3-5222-9988-f6e13a8c4e52', 'f81aeffe-7080-53cd-8c22-b2c534391879', 'db46976e-4d73-58fb-a99f-fb8fcca4080d', 300, 'g', NULL), +('60dd8c0f-72ab-5f9e-89d0-22fb43aa8217', 'f81aeffe-7080-53cd-8c22-b2c534391879', '7e666b30-7a9f-58c2-8f0f-23d05b3f6b35', 0.7, 'cm', NULL), +('4003c8ff-92bf-500a-996a-deb33ee4594c', 'f81aeffe-7080-53cd-8c22-b2c534391879', 'ea000010-1111-2222-3333-444444444444', 100, 'g', NULL), +('f1d45808-e72b-5508-af08-9a4aad4a347e', 'f81aeffe-7080-53cd-8c22-b2c534391879', 'baaac527-87ab-5faa-8d92-18e9f7e0955b', 2.5, 'g', NULL), +('589f2b7c-3aeb-50ff-8345-e1c5db6eed48', 'f81aeffe-7080-53cd-8c22-b2c534391879', 'c5cb7b51-7aee-5824-b8f9-96a3dc4dbde1', 30, 'g', NULL), +('2ba1e287-c96d-596c-87e0-b76c0dcdb1c4', 'f81aeffe-7080-53cd-8c22-b2c534391879', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('e9dd1212-2068-5f2b-ac4e-df54cce86a4d', 'f81aeffe-7080-53cd-8c22-b2c534391879', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('4ee0745d-f555-5866-a3c2-9c8e48bddba9', 'f81aeffe-7080-53cd-8c22-b2c534391879', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 2.5, 'g', NULL), +('b63f320f-f93d-5628-9666-232e2b109c6c', 'f81aeffe-7080-53cd-8c22-b2c534391879', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('01e925d6-ae2c-5090-8dfc-dfd3dce692e0', 'f81aeffe-7080-53cd-8c22-b2c534391879', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 45, 'g', NULL), +('d12bdce0-99bd-5910-9f71-b9c0d8aa74b2', 'f81aeffe-7080-53cd-8c22-b2c534391879', 'ad803e48-099c-5e51-808e-cbd8e22cc1d9', 20, 'g', NULL), +('00542ae6-87cd-51ed-9df9-30659598cb7e', 'f81aeffe-7080-53cd-8c22-b2c534391879', 'e8fd0bba-5a75-5ef8-b71f-30f7e810ad9d', 20, 'g', NULL), +('2cef6a4e-15ed-5d86-893c-e4579054986f', 'f81aeffe-7080-53cd-8c22-b2c534391879', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('ae77b454-5c25-5c78-ae00-54e8d34e7990', 'f81aeffe-7080-53cd-8c22-b2c534391879', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('c7742ea3-1945-5232-94f0-f8af2ba9d0aa', '1716bba2-c823-5ffe-9d0f-f501f152751c', '1ff1af0f-b06c-5ea6-9af3-3354e1841f65', 150, 'g', NULL), +('c1a7115a-7931-5710-b4f5-14a58bbe3f16', '1716bba2-c823-5ffe-9d0f-f501f152751c', '626b0f6f-d701-5c63-bd4d-ce664d6fac7b', 150, 'g', NULL), +('0f91103b-131b-5c48-8764-232dc06e4f4d', '1716bba2-c823-5ffe-9d0f-f501f152751c', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 100, 'g', NULL), +('c3d0a54e-dbde-51ed-9856-94cf7313ba03', '1716bba2-c823-5ffe-9d0f-f501f152751c', '332bdc1d-789c-55d9-a123-e7e30822992c', 50, 'g', NULL), +('465cf3c8-a431-5a13-a2c6-4e061fb810b1', '1716bba2-c823-5ffe-9d0f-f501f152751c', '09f86239-76c0-512a-ad02-f9ff2f45c5ff', 50, 'g', NULL), +('cc44c05c-54d6-5561-8a03-c828360c4aa3', '1716bba2-c823-5ffe-9d0f-f501f152751c', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('856c5cf3-0cff-5aef-9d5c-43ea02e9c251', '1716bba2-c823-5ffe-9d0f-f501f152751c', 'bb527379-88e9-5ef5-8fc6-bc210accb6a0', 20, 'g', NULL), +('83037180-82a0-5270-a91d-106d2d0eea83', '0b9dc0c8-a923-582f-a1ac-c1a5c8e793a0', 'd4d7d595-972d-57fc-9407-dd02944435d1', 200, 'g', NULL), +('e45f3ca3-9663-51a8-b42a-0b4db80a12f4', '0b9dc0c8-a923-582f-a1ac-c1a5c8e793a0', '7f4fdcbc-054b-579a-8128-b7cf5065eca0', 100, 'g', NULL), +('c31ace04-f2d2-52a0-b205-3742e5827800', '0b9dc0c8-a923-582f-a1ac-c1a5c8e793a0', 'a56bece1-24f5-5615-b990-ee8b353730d4', 20, 'g', NULL), +('c7cfc88f-9ce9-5a98-926b-de27a9721e16', '0b9dc0c8-a923-582f-a1ac-c1a5c8e793a0', '693eb4c6-fdb6-5ae8-a6fb-0d309e43b2ee', 10, 'g', NULL), +('a2c88e00-2d8a-5e0a-b6a3-0d4fb067cb7a', '0b9dc0c8-a923-582f-a1ac-c1a5c8e793a0', '60abf488-564e-56ab-9aaf-e1c416e24c2a', 5, 'g', NULL), +('5ae7c5a0-56d9-5135-9b0c-a3f585e44d63', '0b9dc0c8-a923-582f-a1ac-c1a5c8e793a0', '3ffde083-de57-5e0b-aed6-e015e442d36c', 40, 'g', NULL), +('88fce3c3-8dd3-5ddb-a37c-7817209ee575', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '8f477352-04d4-50b0-8844-840f1cea7294', 300, 'g', NULL), +('ebca226d-f53e-55ff-9c3a-658c970ba0cb', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '5c90d2f0-bbb2-59c1-b6d0-3e6f0f4cdff1', 8, 'quả', NULL), +('00733566-2750-5d61-9366-f391a3cb30da', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 80, 'g', NULL), +('5680c7c7-0143-5a1f-9ae4-ed00228c6918', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 0.5, 'trái', NULL), +('e55daaf4-ed75-5881-89bf-bef95688da7a', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', 'ea000042-1111-2222-3333-444444444444', 4, 'cọng', NULL), +('d40f18e0-4fb4-54dc-a96b-3bb3883f1b4b', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '6fe9cc09-aa47-5630-9fb7-4f20ec7fc15c', 6, 'trái', NULL), +('04d98f3c-46ee-5fe1-beba-f6d1d616318d', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '78b52eb8-1d9b-5a75-9186-34349231d948', 100, 'g', NULL), +('80c654f3-a4ef-5e7c-b061-8a1c480b1edf', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('f027bbc5-43d7-5a00-a60c-565fbc070f50', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '301eecc8-c8ef-57c8-a19c-f5288d454a43', 5, 'g', NULL), +('e80ae925-f2fe-54de-8e9c-5982e646f444', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 52.5, 'g', NULL), +('81e88cac-92d1-5e5b-b1c8-c4f5caf780fd', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 10, 'g', NULL), +('ce51917c-da5a-5284-ab3c-8f2be76e26cd', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('60eea388-1804-52eb-a8eb-a7dd26e46ad7', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '10205986-c894-59e8-9054-829ba8404a76', 15, 'g', NULL), +('15a9eede-3ea5-51f6-8257-59ce769d0973', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', 'e1071dc8-2c05-52ed-8d41-74c030ac4986', 2.5, 'g', NULL), +('5909198d-8c73-56c1-a000-c5bb51c56198', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 2, 'chén', NULL), +('02ff5b4c-4639-50ba-8179-28a6b3adde50', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 3, 'cây', NULL), +('7395df2f-3cb1-5f7c-b7e9-e84b05d34fb5', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 5, 'g', NULL), +('84c8b9bb-7876-5375-ae71-947c1cf8c0f9', 'c8eda2c5-1919-55d2-8bbb-e8dadfaddcdd', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('476c78f8-7e14-5bbf-ae86-5f6f65e3b62e', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', 'dc442a10-3234-534a-9bdd-476630e71ae0', 200, 'g', NULL), +('2b16db11-cf15-593a-a77e-1566f77cefdb', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', 'ba3940bb-4b77-5d74-80cb-a42462a155e3', 7.5, 'g', NULL), +('49cb2951-869d-552a-8ba6-c025f55f9b2f', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '2d4a1c9c-17b7-552d-bb7e-378db3258424', 20000, 'ml', NULL), +('1af768c1-5bb6-53e6-9ab6-868f77b40fd2', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '9fb90ef3-e2c1-5e65-8965-69fbcd2376c7', 1, 'quả', NULL), +('4c268cc3-2cb2-5c02-8e3e-0368261ad2c8', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', 'c67982e5-41d2-5e27-b4d5-6ac379d98601', 7.5, 'g', NULL), +('51953b63-9b0e-5edb-8e5c-9d368db2e98b', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '3ffde083-de57-5e0b-aed6-e015e442d36c', 100, 'g', NULL), +('1a5c5294-16c4-57aa-b68c-cf5e0764a891', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('8e01eb1e-11c6-5227-a449-c60a94a31633', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '0f2ec806-af5c-52d8-bf62-fa807af79d11', 30, 'g', NULL), +('f2f98b45-4105-5e36-98c3-b11165fe339e', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 30, 'g', NULL), +('536866fa-5f24-534d-a300-cd3eaffeae27', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '99157107-8cbc-5715-97f1-620017377993', 15, 'g', NULL), +('1099a109-7aee-5571-b608-bbc417a750fb', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '3018ce68-ac47-5f29-90d0-6ef844524302', 45, 'g', NULL), +('cb8c5e9e-1718-5f01-aaa1-33b5dc745cb9', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 5, 'g', NULL), +('d26cd630-bb54-5d81-b402-ae3cd05d405c', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 1, 'trái', NULL), +('e6493d5e-4473-5922-85c8-3ae2f6462005', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('253936c4-6715-5374-ad53-d2213b5e897d', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('8c0737b7-4c66-5b6f-a247-099deca1f3e9', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '50417267-f38e-579b-937a-07dd7b41bdb6', 20, 'g', NULL), +('ccfc9983-2e5b-50c7-b3d7-4607dc1226e3', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('dc98c74d-91a6-515c-96c2-1dcebf37c221', '7b7e0bb4-0b0f-5f9f-8886-f61d475d9828', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('ba8f8c8a-2fb0-50a3-93f1-460b821bd655', '68cb9558-603b-57e4-b03e-3b9642f54d8c', 'ac6c9c88-b5bb-589d-af79-fca945dbf408', 30, 'g', NULL), +('c567ae8b-b88a-5409-84e1-f5c38f7ed58e', '68cb9558-603b-57e4-b03e-3b9642f54d8c', 'eb01e9bc-7ce7-523c-a7bd-21ce9c548150', 5, 'g', NULL), +('23237e15-7350-5475-9dd1-048f3c197939', '68cb9558-603b-57e4-b03e-3b9642f54d8c', '02f66156-6c1b-5fe8-8c44-9bfde4332475', 100, 'g', NULL), +('f70aade9-7102-5ade-a00b-822494b46d23', '68cb9558-603b-57e4-b03e-3b9642f54d8c', '571ffa42-b119-548a-b6a0-025ba442d66c', 25, 'g', NULL), +('be0160f3-ab98-5e0f-b166-62876726186f', '68cb9558-603b-57e4-b03e-3b9642f54d8c', '5a55c889-360f-53d2-8d8c-63711ce9d678', 20, 'g', NULL), +('6e3d9bf8-211a-5b17-9b76-1f4d4a3c05d1', '68cb9558-603b-57e4-b03e-3b9642f54d8c', 'be1f13f5-af04-5fc6-945c-8c3493c38f1a', 10, 'g', NULL), +('73892384-cbb2-50ae-b7b2-7de50cb1cef6', '68cb9558-603b-57e4-b03e-3b9642f54d8c', 'ea000037-1111-2222-3333-444444444444', 15, 'g', NULL), +('3825488d-1fb5-5751-b5d5-40c725e9224b', '68cb9558-603b-57e4-b03e-3b9642f54d8c', 'd4475c8a-592a-5118-8358-2de506a90a19', 10000, 'ml', NULL), +('b0bd70c2-fb90-5a2c-8eee-747ce02e4604', '68cb9558-603b-57e4-b03e-3b9642f54d8c', 'dd711f5b-3ba5-5681-a8b5-05908f41e15b', 100, 'g', NULL), +('ae13e1ef-2e7c-5f1d-953e-662e84de61b3', '68cb9558-603b-57e4-b03e-3b9642f54d8c', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 2.5, 'g', NULL), +('05246d76-eaa9-57cd-9d69-9375f729aa79', '68cb9558-603b-57e4-b03e-3b9642f54d8c', '2793729c-0925-5307-9e16-fe50da07ce0e', 8, 'g', NULL), +('71351ec5-deae-5051-a36b-e5f51e0f8aef', '68cb9558-603b-57e4-b03e-3b9642f54d8c', '793fd94a-59c6-5e1c-93d7-b9248d95559d', 20, 'g', NULL), +('d4fe4e67-26d3-513e-bb51-60f0034e3312', '044dba2e-0aca-5776-92be-ac369b6d1f5b', '782f8c77-588b-5b64-bdc7-1edaec0da425', 120, 'g', NULL), +('50244613-3336-52d0-9116-dd00decf087f', '044dba2e-0aca-5776-92be-ac369b6d1f5b', '5225965d-124e-5b6f-8700-5cd4f3e908f2', 200, 'g', NULL), +('01cb934d-d0ee-53aa-b85e-14c75e09c413', '044dba2e-0aca-5776-92be-ac369b6d1f5b', '85491f42-8a26-5869-bad6-384d7f1b6036', 40, 'g', NULL), +('dbd69bc2-bb81-5f36-ab85-a0f82579d508', '044dba2e-0aca-5776-92be-ac369b6d1f5b', 'ea000025-1111-2222-3333-444444444444', 50, 'g', NULL), +('fdcc9274-584a-5c8a-bc00-bd9e99913f35', '044dba2e-0aca-5776-92be-ac369b6d1f5b', '78a5e6aa-6f32-5e6b-bfd3-d55d6472a17f', 5, 'tai', NULL), +('63074438-927d-5f5c-a9ce-23b2c4f5d3dc', '044dba2e-0aca-5776-92be-ac369b6d1f5b', 'db62359e-0ef9-5d64-a55d-0a18b675a94e', 1, 'củ', NULL), +('71ccf0b4-9359-5a27-b67d-4b50b9544888', '044dba2e-0aca-5776-92be-ac369b6d1f5b', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('c615b185-9e5a-5c20-8230-64a96caa9b5a', '044dba2e-0aca-5776-92be-ac369b6d1f5b', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('de3ba5bb-035e-5bd0-8c85-446647fbc321', '044dba2e-0aca-5776-92be-ac369b6d1f5b', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('3d39bb7d-28ac-5c54-a7af-eeec9e5ce7b9', '044dba2e-0aca-5776-92be-ac369b6d1f5b', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('fe863a8b-78a6-5b70-8837-f4402dc54dbe', '044dba2e-0aca-5776-92be-ac369b6d1f5b', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('09d4fe34-e10e-5a3a-ac41-d09624a4fa03', '044dba2e-0aca-5776-92be-ac369b6d1f5b', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('b5596556-80dc-58f4-b1a8-cbc32f2f6c9e', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', '6448be8c-54c1-5eec-acfa-7285f67d621a', 600, 'g', NULL), +('8321b195-ffdc-5df4-89ed-2baa19c4edbf', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', '57f37444-bb1d-5b59-bc51-9dfbdab2a4aa', 200, 'g', NULL), +('a97fd5e0-a4ae-5f4b-8065-cc4a51676027', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 250, 'g', NULL), +('1e2c1b58-c447-5b68-a309-7dfebe38ef05', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('1002f433-0fd7-5f38-848e-7cace9ed1726', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', 'a5a2e5c3-9cb4-56a3-9ff7-ee7d62847d2e', 100, 'g', NULL), +('a10c90bc-9fbb-5016-af79-846cd9e5d41f', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', '3ffde083-de57-5e0b-aed6-e015e442d36c', 150, 'g', NULL), +('86cb5c0e-39c4-552c-8b02-5b7f07cfc55f', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('fec4e286-3c7c-586b-9ff4-8a300055c9e8', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('01502c26-5605-5e5d-9ef7-c74c309703a4', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', '0f72e431-84b8-5b62-a981-d22b46d20e85', 80, 'g', NULL), +('a11f281a-241c-5e97-ad51-a679ac61f65f', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', 'c20bdeec-7741-5e9e-ba55-b49ecbde0531', 80, 'g', NULL), +('cceec05a-2896-5ee0-8cb5-4b8327d7ef67', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('f729f92b-10cc-527f-8569-93f251d0f176', '93d91c8e-ecee-54f4-ad68-f3a177145d0d', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('cf325cde-629f-5bdb-b477-da04d2524a27', '9de675ab-2bc5-540a-8b53-2eeea872c909', '9a21aa1a-d07b-5a9e-9ee3-a9ab1a44b0c7', 2, 'cánh', NULL), +('51df8049-b545-5338-8f0f-f3b053e38541', '9de675ab-2bc5-540a-8b53-2eeea872c909', 'cd2e6540-c31c-5d4a-855f-a65611cd8816', 400, 'g', NULL), +('75308442-f598-5eaa-8ca7-c0c7d0d87f1c', '9de675ab-2bc5-540a-8b53-2eeea872c909', 'ea000042-1111-2222-3333-444444444444', 100, 'g', NULL), +('8e278b48-a24f-5496-a4c6-f7ef2c14dd76', '9de675ab-2bc5-540a-8b53-2eeea872c909', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 20, 'g', NULL), +('46f8705b-8f4f-5c2e-a2f2-8ae54028228b', '9de675ab-2bc5-540a-8b53-2eeea872c909', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('c3f2a02c-fa20-57ae-8570-c65c590974b6', '9de675ab-2bc5-540a-8b53-2eeea872c909', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('22608eca-e439-5b2a-a4ba-1d82bf66fd77', '9de675ab-2bc5-540a-8b53-2eeea872c909', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('23eb7fc9-3b0e-5ed3-8eaa-7cc0696185c1', '129129da-b564-5442-b318-bc53770a8e91', 'b9b9a180-4df0-5b6e-a2b2-1daed4e36aa5', 150, 'g', NULL), +('1dc061a4-aae1-5e5b-a3a1-4f96fac2483e', '129129da-b564-5442-b318-bc53770a8e91', '9bd7d8df-ac2a-57c0-a1a7-4ef831253120', 2, 'cái', NULL), +('fc45aaaa-886e-5908-996b-ecd997459772', '129129da-b564-5442-b318-bc53770a8e91', 'dd37a043-70dd-5ccb-be57-1d629be323ab', 1, 'quả', NULL), +('58284801-2a68-56f1-a2da-3303248e5641', '129129da-b564-5442-b318-bc53770a8e91', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 5, 'g', NULL), +('d52005ea-451c-5a00-8441-643c6d2be65d', '129129da-b564-5442-b318-bc53770a8e91', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'nhánh', NULL), +('a4a99f2c-d64e-58d5-af1e-8d4b8e838e50', '129129da-b564-5442-b318-bc53770a8e91', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'quả', NULL), +('f8b148c6-53c6-5fa3-9dec-55594b13a8fd', '129129da-b564-5442-b318-bc53770a8e91', '565898d5-15d7-53f8-84ad-d90df61f2e97', 15, 'g', NULL), +('7f731745-e01b-543c-9061-4523a2c19fb8', '129129da-b564-5442-b318-bc53770a8e91', '850655e3-efd1-5cc1-9e3a-fc0dd9191f9e', 5, 'g', NULL), +('546d3516-4e7c-5fe4-ad64-823e60f3c1d5', '129129da-b564-5442-b318-bc53770a8e91', '300b9a61-bd25-5035-8b3d-f3b094c3dca7', 5, 'g', NULL), +('dacb5d21-8b30-58c6-973c-4b1778d29101', '129129da-b564-5442-b318-bc53770a8e91', 'ea44af36-bee4-50d0-8bb1-eab63f2c5571', 100, 'g', NULL), +('bcbd6c16-c7dc-52f3-8e55-8d8853b7d00e', '129129da-b564-5442-b318-bc53770a8e91', 'cfd7f343-0504-5e75-af36-fd32b57c7f8c', 5, 'g', NULL), +('46c76c5c-3d25-5b80-9d65-6c7923f19cda', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', 'c821cab5-99d4-5d2e-852e-6050c8375fa2', 16, 'cái', NULL), +('d7dd9668-b9c0-5285-b7e9-0a73c7897eae', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', '5c90d2f0-bbb2-59c1-b6d0-3e6f0f4cdff1', 16, 'quả', NULL), +('ea18afe4-8e7d-5a95-8677-33d072b80a1d', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', 'e9d326ca-951c-5602-ab44-c93afe6cfdec', 20, 'g', NULL), +('5945ce29-6895-570e-a591-01faa45d011d', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'nhánh', NULL), +('027cf81d-efe5-5b7b-8255-7942e564c09a', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('e9ad4736-0fb0-5349-9aa5-fd7776c69e65', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', 'd7eb4972-ecc9-560e-b85b-13d6b80943ac', 2, 'tai', NULL), +('fefb756d-2327-59e1-a1cc-bbde3c419a8b', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', 'ea000042-1111-2222-3333-444444444444', 15, 'g', NULL), +('bb7848bd-1be4-5b1b-9d5f-dab181d4eaa6', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('71cd9ecf-6201-5f00-9024-999393e6c789', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', '2d2141b3-b474-5126-9f88-857d504c7d16', 20, 'g', NULL), +('2ccce5d7-49a3-5bbf-b440-c32ea35ddfba', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', '5bfb90b8-9c2b-598a-a23d-619b289c0c9e', 80, 'g', NULL), +('af400f18-123b-573d-a7e5-0af3ad06c3ec', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('6d658aa5-3b20-576a-85f0-f1ac9fe2457a', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('2906625e-41a4-5342-b5cd-01dc1ee08744', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('b3b61f81-8770-57e7-a3ef-8544390db4db', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('7743ede5-036d-5dc8-9395-d21e0292cfe2', '5c9db5c1-5f21-5f73-a53d-9438d64d3ef4', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('2bf5667f-29b3-5bcf-bd11-69a7686af255', 'f05e3d8b-228d-5356-bf82-227a74db0cae', 'a5480d78-d949-5040-9343-1bb1175e8fbd', 300, 'g', NULL), +('fe2997ac-5190-532e-a9b7-7bdc36d6e2ae', 'f05e3d8b-228d-5356-bf82-227a74db0cae', '9a7cf327-db40-53e0-a1e0-d0efdf9abac8', 130, 'g', NULL), +('304b9fdb-f969-5fdd-8b37-903876385c1e', 'f05e3d8b-228d-5356-bf82-227a74db0cae', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 50, 'g', NULL), +('f1ee922f-ec4f-555a-86f0-40f98a71643c', 'f05e3d8b-228d-5356-bf82-227a74db0cae', 'e1f523d1-956f-5786-be5b-93285248593b', 300, 'g', NULL), +('5bb16171-1def-5284-b907-c91b1e13eaa0', 'f05e3d8b-228d-5356-bf82-227a74db0cae', 'ea000034-1111-2222-3333-444444444444', 30, 'g', NULL), +('ab55f3ca-d57d-5d0e-bd87-a1945548783c', 'f05e3d8b-228d-5356-bf82-227a74db0cae', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('ca02139c-722b-5ab6-ba68-0e70f55fe9d1', 'f05e3d8b-228d-5356-bf82-227a74db0cae', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('80f8a227-7f28-5da7-b5b2-a27f26f21886', 'f05e3d8b-228d-5356-bf82-227a74db0cae', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('f52d17d1-4086-5fa8-9b4e-dae8884b9217', 'f05e3d8b-228d-5356-bf82-227a74db0cae', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('2a191a9c-126b-54a6-aba7-62253b1e88c0', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', '68bff08a-f1b1-5d97-aa5d-0dd39c74778e', 350, 'g', NULL), +('b253d698-2170-571a-8db5-e130c667a35b', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', 'e06b9e4a-cf0a-5b83-8328-f46c1c8ca36c', 6, 'con', NULL), +('b5e982d9-8259-58f1-9849-ec10781ec95b', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', '31ebfa6f-29a8-5815-82d8-3bf6583fdd8a', 60, 'g', NULL), +('ebd645ad-cb05-509b-97ab-b002be42d76b', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', '03352f39-1d36-5eb3-b23b-43824e253fdc', 40, 'g', NULL), +('e13c51c6-56f7-5873-9200-3203ea754379', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', '2907b80a-705e-5a30-b281-5630f4020f9d', 40, 'g', NULL), +('9c610e09-ad7f-5045-8fa8-e5124274ab07', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', 'ea000025-1111-2222-3333-444444444444', 0.25, 'củ', NULL), +('9c526676-2a94-5596-b0eb-ee4583e3c835', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', 'ea000042-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('33bf753e-5913-5d66-916d-a7896025ab76', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('4fb0ec69-7ec5-57b1-aea5-a5e834b64f60', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('2619d79c-e485-524f-8733-cb1f9ef7e89f', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('a988d1ae-9a89-5f65-8285-1b4dc7169051', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('d2f1362e-d7eb-519e-8621-a283414d6fb8', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', '6dddc43d-22c7-52d3-92e9-7b838b9eefa4', 80, 'g', NULL), +('b4ad7763-5ca5-5de9-bc7d-5984a9826fb4', '68a5d71b-d05c-574d-8b4f-a7040169f6ae', 'fe9a1e40-3e09-5b22-a21a-f4139a9390ec', 15, 'g', NULL), +('7c10defd-7567-5dcc-8700-d0614f8a4fb2', '22fd276f-7653-587a-97a2-74f1a33febaf', '7b2bc1bd-182e-5699-b2cc-2ee1ea712457', 300, 'g', NULL), +('4d44c288-fac0-593f-ae26-37eda3cfed52', '22fd276f-7653-587a-97a2-74f1a33febaf', 'b904fccd-c193-5f8f-ba23-5da4fdad93bf', 250, 'g', NULL), +('405970cd-2009-56d2-b132-0a3231515696', '22fd276f-7653-587a-97a2-74f1a33febaf', 'e974808f-cc91-5a88-94c2-cf549c094e2a', 200, 'g', NULL), +('02dfe8af-a7c2-5066-a7df-b6d5e2aeb498', '22fd276f-7653-587a-97a2-74f1a33febaf', '14404b22-1116-5caa-b804-ecc2001a7e11', 20, 'g', NULL), +('dbeae712-75ed-5c26-9979-3622cd278ecf', '22fd276f-7653-587a-97a2-74f1a33febaf', 'd1a08c91-4864-5eef-846e-4d8b6691d5d1', 100, 'g', NULL), +('a14b7447-0f01-5d30-b6c4-e25beea428cb', '22fd276f-7653-587a-97a2-74f1a33febaf', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('577b9feb-70a8-5e14-a9ac-d3582caf970c', '22fd276f-7653-587a-97a2-74f1a33febaf', '3f875012-7423-5136-ad62-f360fc63eb4d', 20, 'g', NULL), +('66389010-4551-5d45-88f5-d3a9b4c851e1', '22fd276f-7653-587a-97a2-74f1a33febaf', 'a5b52709-479f-5f5c-b6f2-b86b261d9947', 100, 'g', NULL), +('95a9d886-445a-579b-b67f-2468c171a702', '3c2a87d0-e085-57f8-8a47-ba270b33d660', 'cd2e6540-c31c-5d4a-855f-a65611cd8816', 250, 'g', NULL), +('2ed340dd-6922-5c66-bd61-215fb942dcc3', '3c2a87d0-e085-57f8-8a47-ba270b33d660', 'd32a496e-ef42-5675-a875-309785ea849f', 100, 'g', NULL), +('42fb9675-0f49-5169-8bdd-35f7ef61000b', '3c2a87d0-e085-57f8-8a47-ba270b33d660', 'ea000042-1111-2222-3333-444444444444', 70, 'g', NULL), +('e84f63f8-e452-59dc-aec6-df07063f5be4', '3c2a87d0-e085-57f8-8a47-ba270b33d660', '4ca18f3b-44c0-5104-a96e-28bd971a9cde', 30, 'g', NULL), +('be950bba-678f-5b58-a18a-b2d881f72f36', '3c2a87d0-e085-57f8-8a47-ba270b33d660', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('e7ec19a8-3871-5bf1-b86f-daf84bedcc63', '3c2a87d0-e085-57f8-8a47-ba270b33d660', '60abf488-564e-56ab-9aaf-e1c416e24c2a', 60, 'g', NULL), +('7a70e1bc-eb2f-51f6-af13-57814307401f', '3c2a87d0-e085-57f8-8a47-ba270b33d660', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('6be5b8d6-c4f2-5316-9062-b2986e1faaec', '3c2a87d0-e085-57f8-8a47-ba270b33d660', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('4d80447a-69a7-56e4-ac8f-60889f42cd3f', '852227b0-8f9d-5067-b2a4-2016f65dff95', 'cd228bb1-534a-50b5-a392-1fe84d667f2b', 300, 'g', NULL), +('8fd09aaf-3bce-51a4-9e25-113dc16a0463', '852227b0-8f9d-5067-b2a4-2016f65dff95', '33862835-7b0e-5b3a-bdf6-e24fa1d55fc5', 200, 'g', NULL), +('d2979192-d802-541a-a55b-d2270094b98a', '852227b0-8f9d-5067-b2a4-2016f65dff95', '07a9d7da-5f23-5973-8918-448610af3ba1', 5, 'tai', NULL), +('04edc2c0-b0b7-5fa8-aae5-7f87b9fec2aa', '852227b0-8f9d-5067-b2a4-2016f65dff95', '30aab0ce-a3fc-57d2-9dd8-5152c824ea28', 50, 'g', NULL), +('c9e6801d-dee2-545f-a16c-911cee8b9a60', '852227b0-8f9d-5067-b2a4-2016f65dff95', 'c662f006-bd06-5097-af04-3c45ff5327fe', 30, 'g', NULL), +('740fb52e-5d66-5443-ad79-90406fea210f', '852227b0-8f9d-5067-b2a4-2016f65dff95', '0f72e431-84b8-5b62-a981-d22b46d20e85', 80, 'g', NULL), +('c54fe310-8c73-5e9c-9464-fe3548ae224d', '852227b0-8f9d-5067-b2a4-2016f65dff95', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('3bc24581-46c4-55cf-b245-ba499f0643e5', '852227b0-8f9d-5067-b2a4-2016f65dff95', '4e5710aa-5629-5735-878c-e8922636dfd3', 60, 'g', NULL), +('9997b53f-0195-5578-bdd8-7754bbf10c13', '852227b0-8f9d-5067-b2a4-2016f65dff95', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('56897397-4165-5d65-a504-98c4982d2ac7', '852227b0-8f9d-5067-b2a4-2016f65dff95', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('73f170ce-de49-52b6-aff7-3761bb1259ff', '852227b0-8f9d-5067-b2a4-2016f65dff95', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('9a38cfb7-f47e-557c-b6fb-5d768d45e6cc', '852227b0-8f9d-5067-b2a4-2016f65dff95', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('6140673b-944a-5e6d-a4e3-8b581a54c609', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '4c3dbc44-6156-5901-93a9-e0f1b29b2f73', 700, 'g', NULL), +('60132edd-2426-5e26-98e6-b6dcd7cb1c61', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '1749200c-a2db-517b-afff-2a92c7e3611a', 200, 'g', NULL), +('d465067c-d800-5e91-a428-35d477290c5a', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '84b9602f-6a87-512c-8655-44a2cc226d46', 50, 'g', NULL), +('e6a095aa-73ce-5db4-b93c-47160c14f9c6', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '03cdcbd3-eb4b-51f3-a509-442fa4f83a1d', 0.5, 'củ', NULL), +('a22c9c29-618d-53e1-a430-c2000618ba7f', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '86eda42e-989d-5587-8f1d-96a2d9416a85', 0.5, 'chén', NULL), +('b9080f6a-d542-5049-955c-7fac2ef0d442', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '4bbb2703-742d-5cf9-be8d-90cfc553590c', 0.5, 'chén', NULL), +('453a630c-4e78-5c76-9619-3775786130e7', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '62a49695-09af-5494-8650-c4cf5551d9a5', 100, 'g', NULL), +('fe4da035-0514-5973-ba4a-d60fcdbe2d4a', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 1, 'nhánh', NULL), +('f94b8e81-3a71-57ea-bd71-2dcc60898cec', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('787ad67a-f2d4-50d1-a45b-c2a476c520e8', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('917e9c12-8287-515e-8f3b-816cf07cdaef', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('17f18f92-8dbd-5cdd-b8bc-0757fa079f5c', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('639c47ff-63d8-5860-834e-22cd71943d57', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('be6155cc-666a-5c25-9480-842d6d3ae6d6', 'cfb3e9ac-4ec7-5b13-9391-381c46d0c030', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('b614522c-d8c8-50a6-a345-9c05848ea68d', 'bad53ebc-dda4-59f0-9666-f1037266120a', '152109fb-25ac-55cc-ad5a-341010f2bb98', 300, 'g', NULL), +('801b29d0-dd8b-51d7-b118-9d7e61e0f5bb', 'bad53ebc-dda4-59f0-9666-f1037266120a', '71e11e1b-3b44-5c51-b066-a26ba5a70c37', 2000, 'ml', NULL), +('438b9d7e-30ad-5dfe-87f3-a1098a937a7e', 'bad53ebc-dda4-59f0-9666-f1037266120a', '3c55cd24-57da-5e7c-85bb-cd07c591e357', 1, 'cây', NULL), +('6c514406-2d01-513a-9341-2927f708dbd3', 'bad53ebc-dda4-59f0-9666-f1037266120a', 'ea000023-1111-2222-3333-444444444444', 0.25, 'trái', NULL), +('6edc7b0c-da80-5501-8683-eafddfea9bca', 'bad53ebc-dda4-59f0-9666-f1037266120a', 'ea000042-1111-2222-3333-444444444444', 0.25, 'củ', NULL), +('e435de0f-2a63-5b83-a880-1d6ee25d02e7', 'bad53ebc-dda4-59f0-9666-f1037266120a', '25fb604e-e3e0-5961-9a24-23605e86e5b0', 30, 'g', NULL), +('659bb7ac-d2cd-5da3-8fc0-8507ae7834ac', 'bad53ebc-dda4-59f0-9666-f1037266120a', 'a66febcf-1f43-5fd1-9807-6a613d00b209', 2000, 'ml', NULL), +('8d47c5ed-34e5-53a6-8734-68753e1267e3', 'bad53ebc-dda4-59f0-9666-f1037266120a', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 100, 'g', NULL), +('1f1f270b-c7d4-583a-af3f-2ac06f6eb1a8', 'bad53ebc-dda4-59f0-9666-f1037266120a', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('9ac5d204-5374-5601-94e6-c8652baf2e24', 'dddbc633-913f-566a-9116-4fb7674801b3', '533f30e6-d49a-5431-9971-fbffa1d0f593', 500, 'g', NULL), +('2443fe6c-69cf-5d0a-8343-21606b395c5e', 'dddbc633-913f-566a-9116-4fb7674801b3', 'a53f5493-7376-59c5-85b6-a4aa69557043', 160, 'g', NULL), +('f44bcc32-3f61-5b70-be71-b0f77adf56e3', 'dddbc633-913f-566a-9116-4fb7674801b3', '27249a7b-f215-5798-827a-48690f703968', 100, 'g', NULL), +('9341ab64-226c-5f21-a69a-81b3bf9b8ffb', 'dddbc633-913f-566a-9116-4fb7674801b3', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('41f537e6-28b8-55f2-a2d8-99ea08e5d161', 'dddbc633-913f-566a-9116-4fb7674801b3', 'ea000034-1111-2222-3333-444444444444', 15, 'g', NULL), +('e4ce63ee-5a5f-583b-af28-48578eead919', 'dddbc633-913f-566a-9116-4fb7674801b3', 'bc138390-c36c-51fa-a33c-bdf8b80cff11', 1, 'quả', NULL), +('252b6e04-eadc-5c1c-be4d-9a5aafe62d9b', 'dddbc633-913f-566a-9116-4fb7674801b3', '3ffde083-de57-5e0b-aed6-e015e442d36c', 15, 'g', NULL), +('797c5111-b79f-5040-809d-d96c22e9d2c0', 'dddbc633-913f-566a-9116-4fb7674801b3', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('130fe3e6-18f4-568e-b6ee-f6d1ffa5e74a', 'dddbc633-913f-566a-9116-4fb7674801b3', 'ea44af36-bee4-50d0-8bb1-eab63f2c5571', 100, 'g', NULL), +('f4f9ca64-2670-5f52-ba90-62b48842c5aa', 'dddbc633-913f-566a-9116-4fb7674801b3', '26b90c28-e3b8-55c3-88a4-d46a4b8944b7', 5, 'g', NULL), +('f408d799-6106-5cfe-85d0-02f074b5bee6', '9b84c752-6d5a-5856-902c-7a2147b9a116', '36842df0-8bdd-522b-9815-c2457183b26f', 300, 'g', NULL), +('621707e8-9c51-5453-8e31-76115af56e53', '9b84c752-6d5a-5856-902c-7a2147b9a116', '659a5a17-0c6d-5ddb-b5e6-140cc1df7b63', 150, 'g', NULL), +('9738cfab-227b-5680-8932-125ce3ab26a7', '9b84c752-6d5a-5856-902c-7a2147b9a116', 'd73304d0-489a-5057-817f-3467df1330d4', 100, 'g', NULL), +('6527b882-cd7d-5b5c-af73-ba5cd2d59c2e', '9b84c752-6d5a-5856-902c-7a2147b9a116', 'd18203ed-13ea-59ab-8859-056331896798', 30, 'g', NULL), +('6f568ea6-3ef9-57c1-8885-fbefb5980bc3', '9b84c752-6d5a-5856-902c-7a2147b9a116', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('7b2236e7-67fb-5ab9-afc8-caafe23cf779', '9b84c752-6d5a-5856-902c-7a2147b9a116', 'b7724908-4670-5a66-9b84-10421d4d4a69', 2, 'miếng', NULL), +('0368cc66-821e-5f6d-9ab0-4b349925d385', '9b84c752-6d5a-5856-902c-7a2147b9a116', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('ac037d8a-f284-5a79-8d71-5d7f1e437390', '9b84c752-6d5a-5856-902c-7a2147b9a116', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('67a6b3e8-25e2-5694-8854-d21d3ca7cc9e', '9b84c752-6d5a-5856-902c-7a2147b9a116', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('e4a62556-f1a4-5293-a3da-c6b5ce615723', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', 'c369bedf-cda6-5c53-ad63-01b4313493a2', 700, 'g', NULL), +('5ccc3613-7ec0-5ed7-ad9a-eb5aa942c25d', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', '6a4bd517-52b9-5a2b-abdb-64ed65c53593', 20, 'g', NULL), +('5d6415a0-eeb5-550e-af66-55d9b61242dd', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', '59d0aaa8-74ea-59b3-b6b1-fad2b2bbeecd', 7.5, 'g', NULL), +('1a74df6b-2ac9-5680-bb91-599a081f6fe6', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', '13c47c47-16a2-5776-a160-70c1f80f834b', 30, 'g', NULL), +('c6557c38-5520-5797-8a27-0ff6de3afbe5', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 45, 'g', NULL), +('55f2d8b2-5fbb-5651-9775-829e8e12e671', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', 'b6332786-b190-5600-871e-e582de462c31', 80, 'g', NULL), +('a9d5bcd6-af18-5efb-b60c-c8364c15b42e', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', 'deb0eef5-7216-51ca-a2e1-c36844e5f907', 100, 'g', NULL), +('936b5c2d-cef1-5a5d-b960-dbf7b5a6cd3a', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', 'ea000026-1111-2222-3333-444444444444', 100, 'g', NULL), +('2c1737eb-b927-51b3-b695-8d525872e608', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', 'f3a90a8e-d33b-5277-b932-6c70c420d4ed', 100, 'g', NULL), +('7e6bfc2f-a967-510a-8409-fa3dd663faac', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', 'a89033d9-66f5-514e-aa60-aeaba0973414', 20, 'g', NULL), +('99731247-72dd-55c4-9e58-a169d157a2be', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('83a586c7-8f6e-5c4f-ab6f-a8d0079fa2c2', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', '37a25c66-fb81-5bee-b99d-dd95a19baf07', 20, 'g', NULL), +('f229bdba-04f1-58fa-880e-c168774d02b0', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', 'ea000008-1111-2222-3333-444444444444', 20, 'g', NULL), +('2a5023d4-26dc-5a72-8c69-380a6a90e82c', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', 'ea000055-1111-2222-3333-444444444444', 60, 'g', NULL), +('61dca2cf-857a-52ff-bfd8-452cf43f9ff7', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('f35cf084-4469-5639-af5b-b62a8ba267b7', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', 'a2bfb1fb-be3d-5285-81f6-f2ab64f105cf', 60, 'g', NULL), +('bd4177f4-7231-519f-9bf1-b750732f3af4', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('cd5f0fe4-2113-5e2f-b9ef-0f79f8908f5d', '2e0f6db7-11c5-58ac-99d6-05deb1d97070', 'b4213064-6072-598a-9cb7-bde3a80717d1', 80, 'g', NULL), +('9c908abf-aafc-520d-a82f-74985a7fefd8', '003d3539-f53e-5aee-af59-626f2d79796e', 'ea000002-1111-2222-3333-444444444444', 300, 'g', NULL), +('5dab6ef1-f85b-5620-9f1b-4616549e1a4b', '003d3539-f53e-5aee-af59-626f2d79796e', '4acc893d-05d8-5346-9fe4-1eedd96fcf22', 1, 'chén', NULL), +('00d1a339-17f9-55f6-9b5a-4ea4a41bc308', '003d3539-f53e-5aee-af59-626f2d79796e', 'b18fa243-2ac1-5b36-ba27-8b3233668db7', 30, 'g', NULL), +('5fb5936d-f510-5d17-8243-c4137565b6a8', '003d3539-f53e-5aee-af59-626f2d79796e', '8a216df6-d053-5fcd-8d46-92cb41669b35', 2, 'quả', NULL), +('873ad776-c32f-513b-aea4-9647bbe998da', '003d3539-f53e-5aee-af59-626f2d79796e', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 2.5, 'g', NULL), +('7071ae0d-9621-5b1b-821e-8caf9d474387', '003d3539-f53e-5aee-af59-626f2d79796e', 'dddfabc8-3e67-5d7a-b1b2-c92ebbf7e2f5', 2.5, 'g', NULL), +('c855570b-0c64-5009-ace3-9f4f6c77f31c', '003d3539-f53e-5aee-af59-626f2d79796e', '6ac8cc1d-df05-52f2-a38d-1332f7938779', 300, 'g', NULL), +('fa8494ba-443f-50b2-a9bf-63856cf3b6b7', '003d3539-f53e-5aee-af59-626f2d79796e', '4d223977-a251-5efa-b1c0-1e86aa3e8760', 20, 'g', NULL), +('f3954746-5d82-542d-b3e9-85994b4dbd47', '003d3539-f53e-5aee-af59-626f2d79796e', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 20, 'g', NULL), +('c7d3a40f-94a0-575a-b4ec-08a363133e35', '003d3539-f53e-5aee-af59-626f2d79796e', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('7c50239f-eeb7-5ad1-850b-4506b87335c4', '003d3539-f53e-5aee-af59-626f2d79796e', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('baabb0cb-9eae-50a5-9c5e-1baf279a4a0a', '003d3539-f53e-5aee-af59-626f2d79796e', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('26847f7f-9a4b-5469-aa1c-5d32ec25a1d8', '003d3539-f53e-5aee-af59-626f2d79796e', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('78fbb5c7-e5cf-5e13-acc7-9a88e4517a87', '019db368-3bfe-570a-bd1c-24b55236907d', '9f04f1db-2211-57cc-a7c7-ca8608485df5', 300, 'g', NULL), +('efd8d408-8558-5a4d-a269-167e55dbc5df', '019db368-3bfe-570a-bd1c-24b55236907d', 'f3f3e2c4-1a0a-5222-8e6b-0b57a2298511', 50, 'g', NULL), +('b5751610-121a-5663-8a80-90ba52e763e3', '019db368-3bfe-570a-bd1c-24b55236907d', 'a51d0788-4ff5-538d-8719-9c54387b6af7', 1, 'trái', NULL), +('6dae57b8-5e0d-572e-8271-9075a57d0f3c', '019db368-3bfe-570a-bd1c-24b55236907d', 'ea000034-1111-2222-3333-444444444444', 10, 'g', NULL), +('09a2f83b-fc1e-5d5e-ae0e-aaa0f5a143be', '019db368-3bfe-570a-bd1c-24b55236907d', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 10, 'g', NULL), +('b076eb8f-ccc9-5d02-9268-691f2e10ed61', '019db368-3bfe-570a-bd1c-24b55236907d', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 15, 'g', NULL), +('68630c5b-e721-52ae-b712-13b6097d8a38', '019db368-3bfe-570a-bd1c-24b55236907d', 'fef9ad90-3041-51d7-ae31-afc99c4635f2', 1, 'g', NULL), +('97579222-45a8-503e-a9f3-108cecddcc32', '019db368-3bfe-570a-bd1c-24b55236907d', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('80f00e37-8fe0-5340-8b50-8d17be3ce4a3', '14e1fb8f-a03a-5714-840b-c4a07d97f12f', '63d6c399-e96e-5cca-a5d4-c71e94e458f3', 250, 'g', NULL), +('72066c07-6680-5149-968a-9f8313108586', '14e1fb8f-a03a-5714-840b-c4a07d97f12f', '2d1c8a02-22b5-5384-843b-fad5ccd8fda3', 1, 'quả', NULL), +('57f48151-aa70-5ff8-b008-99af9322fdd2', '14e1fb8f-a03a-5714-840b-c4a07d97f12f', 'dc1189f0-95ab-52f8-a010-e29e2019e0ba', 4, 'cm', NULL), +('ba80e278-cc99-57ad-b768-4226c1d0c730', '14e1fb8f-a03a-5714-840b-c4a07d97f12f', '9093aa47-b2a1-5096-bff4-1240de57413d', 5, 'trái', NULL), +('ba9c1dc3-7ae8-5d44-bc8e-e62790bc4a91', '14e1fb8f-a03a-5714-840b-c4a07d97f12f', 'd2158f0b-ece5-56ff-919d-2e1ec3ced4a8', 80, 'g', NULL), +('5f58ebc5-a153-5d2b-8ac3-6d5e8bfab143', '14e1fb8f-a03a-5714-840b-c4a07d97f12f', '55be2990-bc6b-58ca-8b7d-092baa7b84a6', 10, 'g', NULL), +('670a9b42-4de4-52f6-8961-d9f2c883cee7', '103fb1fe-2297-5255-b86a-9a66ad357d2f', 'ea000026-1111-2222-3333-444444444444', 1, 'xấp', NULL), +('56f8fd86-459f-5781-aa7c-d28deb3a4a59', '103fb1fe-2297-5255-b86a-9a66ad357d2f', '01619128-a551-5bcb-84a9-5f7ddf562db4', 1, 'miếng', NULL), +('ac8e8a5d-8e0d-5189-8b02-5ce51a554246', '103fb1fe-2297-5255-b86a-9a66ad357d2f', '0d5ca274-5c36-5d97-a4d8-944d02f7d07c', 10, 'g', NULL), +('e4460b05-df38-5dfe-bd35-d5194ab46307', '103fb1fe-2297-5255-b86a-9a66ad357d2f', '89fa5fd0-b46d-5f46-a2fc-20193a4876f8', 200, 'g', NULL), +('729e5bd7-e1e5-56a1-bee7-e63869fe2e25', '103fb1fe-2297-5255-b86a-9a66ad357d2f', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('a66a8eaf-7d84-5b78-87c5-113e72d76c1b', '103fb1fe-2297-5255-b86a-9a66ad357d2f', '5a62ba4e-40c3-5969-afbc-21dfeff8e81d', 30, 'g', NULL), +('f80e5d50-bf19-5dc8-8a0d-648a665c4052', '103fb1fe-2297-5255-b86a-9a66ad357d2f', '19f9bea6-3184-5833-8bbe-c45594a8b398', 15, 'g', NULL), +('6518bf53-1f4f-5dcd-81a8-e6ba20e93a07', '103fb1fe-2297-5255-b86a-9a66ad357d2f', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 45, 'g', NULL), +('35dd9542-6480-5c85-9d8b-ccf0f48adfef', '103fb1fe-2297-5255-b86a-9a66ad357d2f', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 100, 'g', NULL), +('03b26c23-b4f8-589b-887f-abd5ce35c960', '103fb1fe-2297-5255-b86a-9a66ad357d2f', 'f3d9ff72-e3d4-5f14-a949-427e3abe7ba7', 30, 'g', NULL), +('aa4338c8-6171-5159-8aae-2738686ea332', '103fb1fe-2297-5255-b86a-9a66ad357d2f', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('cafca56a-b196-5a61-a3db-b4684f8a944f', '103fb1fe-2297-5255-b86a-9a66ad357d2f', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('58a91f3c-9773-557e-8b61-2d6a0646049a', '103fb1fe-2297-5255-b86a-9a66ad357d2f', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('4a7ff9a0-6f4b-5c8a-a982-2e5eae0a1d3f', '103fb1fe-2297-5255-b86a-9a66ad357d2f', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('32c5c697-c8cd-5b43-9262-e8999305fb32', '103fb1fe-2297-5255-b86a-9a66ad357d2f', '60abf488-564e-56ab-9aaf-e1c416e24c2a', 60, 'g', NULL), +('3e5ae90f-2122-5d71-a706-760c8ea0a8ae', '1e5d5d1b-6ce3-5ab5-b098-f99500d63fc5', '916938bd-cf0d-51ca-a968-1794b42338dd', 300, 'g', NULL), +('77c46f7a-6066-50d9-ba4a-458550328e43', '1e5d5d1b-6ce3-5ab5-b098-f99500d63fc5', '5f9fca18-73fd-511b-8e4b-c72573da5510', 100, 'g', NULL), +('9c7d866e-9de1-5e93-be76-03fae14b9b1b', '1e5d5d1b-6ce3-5ab5-b098-f99500d63fc5', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 80, 'g', NULL), +('14879280-ac65-5eeb-b5be-52b76df45680', '1e5d5d1b-6ce3-5ab5-b098-f99500d63fc5', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('4c4f42c3-a5d9-56ec-b3b7-376f8b752ed4', '1e5d5d1b-6ce3-5ab5-b098-f99500d63fc5', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('73d18449-b863-5d56-9b37-e8b3b28fedc2', '1e5d5d1b-6ce3-5ab5-b098-f99500d63fc5', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('dabbca7a-4be7-52d7-9a88-4926c4d59adf', '1e5d5d1b-6ce3-5ab5-b098-f99500d63fc5', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('8d56ca7f-0001-51fb-9d86-1fff5329260b', '1e5d5d1b-6ce3-5ab5-b098-f99500d63fc5', '3ea4241d-c101-52e2-b926-bcebba2e912a', 5, 'g', NULL), +('0d756b59-1b36-52db-8bb0-d7af95f78d0b', '1e5d5d1b-6ce3-5ab5-b098-f99500d63fc5', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('21fedae2-c973-56ff-a99a-4a95c228d202', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', '2bb6d806-606b-59a1-a104-d66b081566c4', 200, 'g', NULL), +('b024c500-5e0f-5f17-9252-2ef07fd18625', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 10, 'g', NULL), +('babcac9e-2b6b-537e-84bf-b83218d80cbc', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', 'd32a496e-ef42-5675-a875-309785ea849f', 150, 'g', NULL), +('296b1b8f-3a57-5ea4-81aa-43c4641d0afb', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', '5c90d2f0-bbb2-59c1-b6d0-3e6f0f4cdff1', 10, 'quả', NULL), +('39556d06-09ab-509f-a49c-538dd1500c69', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', 'd7eb4972-ecc9-560e-b85b-13d6b80943ac', 60, 'g', NULL), +('29a5575f-40b1-563f-9e49-e3c69523b99d', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', 'd1a08c91-4864-5eef-846e-4d8b6691d5d1', 500, 'g', NULL), +('f9a53979-421b-508e-bc86-b9db008af2d8', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('7c070b82-8515-5225-a965-6b939934fab6', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('73d12033-5114-5912-8f9e-45d3cb83c85c', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', '68cba44d-1217-551c-9cbd-2375419d11ad', 80, 'g', NULL), +('ca311ab0-0de9-51df-96ea-0b21dce1f1ee', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('c9b2d214-e5d1-53aa-be1a-8cdcafe7b9cb', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('a5847056-cc5f-5924-8aa7-6aeed3cc229a', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('cacb8e21-1c59-552b-a82b-66934b4cbd90', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('2669cf24-38d3-5fd1-92dc-0de19f7099a9', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('40e01f55-fa13-5275-9a0f-6511f0ed2479', 'b49b8cd1-4f74-5ddc-92cc-41afd59f9d0d', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('ed6c86a6-4fbf-5653-b331-d60af831a9c2', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', 'a770e603-601f-5be2-b4bc-75d27efd046d', 100, 'g', NULL), +('0dab058d-fac4-536d-956e-ca9ca9f87ede', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '00bf9726-71aa-5a08-ac4f-d4163cb08bb4', 50, 'g', NULL), +('4135c522-9e2c-5405-aec9-d1671f0802e0', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '11c86a56-9c03-5e28-b484-71cb953c02e7', 30, 'g', NULL), +('5192d88a-0d8c-5b1e-9bc5-8a24a897a88f', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '1a311698-63bb-50eb-b4b3-a6f834e0f4f1', 30, 'g', NULL), +('90c54690-13b9-573e-b877-e63156df1b0f', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '03352f39-1d36-5eb3-b23b-43824e253fdc', 30, 'g', NULL), +('fbee8ecf-845c-5edf-b059-94d62cb0082c', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', 'ea000042-1111-2222-3333-444444444444', 30, 'g', NULL), +('75f79155-e4bb-5734-90b6-9209a024c6fc', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '7e666b30-7a9f-58c2-8f0f-23d05b3f6b35', 30, 'g', NULL), +('5d7abd8f-df54-5c0c-b8e3-d8eb98e24cc3', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '352dd949-b8f8-5265-b436-699fede7f4f0', 50, 'g', NULL), +('7aa2bb67-c8aa-544c-937d-3cf49be98fca', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 1, 'cây', NULL), +('5ea75eae-0dd4-56a5-a342-d43f97b52f06', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '17c517a4-0f06-5590-91d4-2f08b8be2fa3', 3, 'tai', NULL), +('6d453d33-7fca-5d7a-ac89-4271ecba777b', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', 'd7eb4972-ecc9-560e-b85b-13d6b80943ac', 3, 'tai', NULL), +('f66b1da5-a8d6-5c3d-874c-3146f6f6c988', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 1, 'trái', NULL), +('16486bc7-2873-5569-a1ee-e355b9505cb2', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '80d58e97-bfc3-5f97-a75d-3bd764a7f9e9', 1, 'miếng', NULL), +('0628832a-5247-5f54-a1fd-4c79baa17a23', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 1, 'chén', NULL), +('2dc3c6a7-c3f6-5cb3-b5ca-d38a4f540ab3', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('70b20add-67ba-5b4a-98c6-e0e5328e0574', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('2c09fcf8-d2c1-581d-8d3d-16ac19e1d5d8', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('a2abb92b-62b2-5f03-9199-2cc1a5696ec1', '7fd9c627-c4be-5111-9cb6-1ea1b4ae1c77', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('150a67c6-2465-5bb4-ae3d-b4c012e1a389', '66ab85b1-eb9c-51c8-8349-bb28ef8e7173', '35a51c14-43c4-560a-aeac-59b5cc0a8483', 300, 'g', NULL), +('a0d06808-49cc-5366-93e2-495beda897dc', '66ab85b1-eb9c-51c8-8349-bb28ef8e7173', 'b26105e5-580b-5b44-a73e-316459f15c51', 60, 'g', NULL), +('d6a14d8e-7d52-5ac1-8c4d-9749164c3445', '66ab85b1-eb9c-51c8-8349-bb28ef8e7173', '55f5ae60-ea08-597b-8be1-1beff05b1401', 5, 'cây', NULL), +('abd52dd8-4a40-5ca5-a952-e6c1ab152a91', '66ab85b1-eb9c-51c8-8349-bb28ef8e7173', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('35a4735b-af01-5008-8bf5-c78918e3fcaf', '66ab85b1-eb9c-51c8-8349-bb28ef8e7173', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 5, 'g', NULL), +('0195a0d6-bb84-5762-8e62-09032d55436e', '66ab85b1-eb9c-51c8-8349-bb28ef8e7173', '02934214-0147-59a9-9b44-57b8a552a6a2', 60, 'g', NULL), +('f0b0b2b7-4d13-5087-9e5e-cc68854e5a29', '66ab85b1-eb9c-51c8-8349-bb28ef8e7173', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('134e0952-468e-547b-a3dc-cbc4797cbc5d', '66ab85b1-eb9c-51c8-8349-bb28ef8e7173', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('58ff0d9a-9e1e-5b20-a943-64c2494b9e62', '66ab85b1-eb9c-51c8-8349-bb28ef8e7173', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('837af1ca-4dfe-5764-ae06-f8d92df4c61d', '66ab85b1-eb9c-51c8-8349-bb28ef8e7173', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('a5708dc0-0ba8-5cbd-9a12-925ab4b17333', '7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', 'a69ea5b9-8a2e-52a0-a99b-387916885c83', 50, 'g', NULL), +('8bc98ed9-f04d-5f8a-871c-5fde8b0fef5f', '7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', 'ea000023-1111-2222-3333-444444444444', 1, 'quả', NULL), +('52b137de-e24d-52eb-8273-3778cd539a45', '7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', '3725ae13-e88b-5a51-a645-2789c7182b8b', 1, 'quả', NULL), +('c69f25fe-b765-5252-b91f-674458402995', '7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 100, 'g', NULL), +('27d0cb26-a558-5640-913d-73e716857cd2', '7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('89d74693-5081-53db-aed0-1c38d789d2a9', '7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', 'ea000022-1111-2222-3333-444444444444', 50, 'g', NULL), +('c684d274-94b7-5afc-9359-920cbc5fb685', '7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('138ee2d3-f41e-59b0-9e32-b04ec8ea6167', '7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', '5824249f-4a90-5eb8-ab3e-fe00ffdbf0bb', 100, 'g', NULL), +('c03551da-427b-58d1-9a8c-9a28bb53378a', '7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', 'ea000008-1111-2222-3333-444444444444', 20, 'g', NULL), +('3e494371-403c-5f5f-a8e4-01c7d2bd808d', '7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', '510c2a6d-805a-57d5-a85e-b6c1ab73b1cf', 20, 'g', NULL), +('3a062fa5-e7f0-5622-bf3d-de3ec71007b0', '7c2fa4f9-d8c0-54a6-8fae-0f7eaa8c293d', 'f1cf6282-f421-51e8-ad71-3df778bb97ac', 5, 'g', NULL), +('bf1f17ff-eb10-55b1-a3fd-df5dfb30f43d', '0c46ac26-e2e9-5603-9187-a79fb1296307', '6a38aa9f-fd6e-55db-a1e0-5a84022178b4', 1, 'quả', NULL), +('88cbd9ae-fcee-5876-b6fc-c5eef771a43f', '0c46ac26-e2e9-5603-9187-a79fb1296307', 'ea000027-1111-2222-3333-444444444444', 50, 'g', NULL), +('2d030401-941e-526d-8903-17c19aeb75fe', '0c46ac26-e2e9-5603-9187-a79fb1296307', '2de3a426-762c-526a-9b1d-149fbbb0bd7d', 100, 'g', NULL), +('3b138abf-a1ab-51fc-b264-94daf0e3eeae', '0c46ac26-e2e9-5603-9187-a79fb1296307', '91f7bd41-e7ab-594b-ac86-71c9bb6bc2cd', 150, 'g', NULL), +('7426f67c-e6b8-50bd-b182-4c92dbd4972f', '0c46ac26-e2e9-5603-9187-a79fb1296307', '30aab0ce-a3fc-57d2-9dd8-5152c824ea28', 50, 'g', NULL), +('07e8d49f-bd7a-5930-9f64-87400f09cca5', '0c46ac26-e2e9-5603-9187-a79fb1296307', '78a5e6aa-6f32-5e6b-bfd3-d55d6472a17f', 4, 'tai', NULL), +('be389934-757a-50c6-b9eb-b8fef55e8dd7', '0c46ac26-e2e9-5603-9187-a79fb1296307', '874a0b93-963e-5d37-aa0d-9a41df35b4e4', 50, 'g', NULL), +('33e4a368-ca40-561c-9114-1f6b353ea59d', '0c46ac26-e2e9-5603-9187-a79fb1296307', '8a216df6-d053-5fcd-8d46-92cb41669b35', 0.5, 'trái', NULL), +('d2754eb8-5d8f-50c8-ac49-952effa5c29b', '0c46ac26-e2e9-5603-9187-a79fb1296307', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('f8a62a87-4e26-5ad7-8dbf-e4ce2db1e72c', '0c46ac26-e2e9-5603-9187-a79fb1296307', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('1bb66183-39f7-5342-a7e2-aa1380aac6a5', '0c46ac26-e2e9-5603-9187-a79fb1296307', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('79a42145-9bb1-5152-b0d6-afc4a6364a1b', '0c46ac26-e2e9-5603-9187-a79fb1296307', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('977b94d5-18cc-55b5-970d-859c00d590fc', '0c46ac26-e2e9-5603-9187-a79fb1296307', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('46bf3415-5070-51ff-bf73-c5f8a5f6b2ff', '0c46ac26-e2e9-5603-9187-a79fb1296307', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('2b5cfdc1-caf8-52af-81e4-0585703bd09a', '152d12c2-b100-5b73-9d58-53a63cc8196b', '3a72d7f6-d4d3-51ec-aa9a-12c821be64b1', 4, 'cây', NULL), +('2a4809c8-b8ce-5f09-b635-a1c4dd719f5d', '152d12c2-b100-5b73-9d58-53a63cc8196b', '01e87a6a-c938-56f4-9dfa-f651d7d82e22', 100, 'g', NULL), +('111ff33a-0f56-5663-b7ac-741a10b53435', '152d12c2-b100-5b73-9d58-53a63cc8196b', '4fe8f4ee-a2a3-5db4-9993-ee0262225471', 15, 'g', NULL), +('224cf05a-7f33-520f-841d-019f5dcaa4cb', '152d12c2-b100-5b73-9d58-53a63cc8196b', 'd18203ed-13ea-59ab-8859-056331896798', 5, 'cọng', NULL), +('cd451b7b-6636-5f09-b60c-f5f8a576a425', '152d12c2-b100-5b73-9d58-53a63cc8196b', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 0.5, 'chén', NULL), +('45815323-4813-5f95-85c5-c27052921f28', '152d12c2-b100-5b73-9d58-53a63cc8196b', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 15, 'g', NULL), +('66f795e3-588d-562e-9575-1e9b8f0457cf', '152d12c2-b100-5b73-9d58-53a63cc8196b', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('ce40f3ae-e2b0-5229-ae69-3407b72a1194', '152d12c2-b100-5b73-9d58-53a63cc8196b', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('6a646329-6a19-5a62-be1d-682af8f0b7d6', '45634f69-1306-5728-bacc-aae078f2d954', 'ea000027-1111-2222-3333-444444444444', 150, 'g', NULL), +('ee545db8-2672-59e8-b0a2-36227d37bc7a', '45634f69-1306-5728-bacc-aae078f2d954', '38e53e71-2b53-56ba-bbcf-2b9ebdbe9b94', 1, 'quả', NULL), +('18c0beb8-7214-5cc5-9236-d2ac8ee3d9da', '45634f69-1306-5728-bacc-aae078f2d954', 'ea000044-1111-2222-3333-444444444444', 100, 'g', NULL), +('4a61464e-8e8f-51ad-8d94-875754498481', '45634f69-1306-5728-bacc-aae078f2d954', '5a62ba4e-40c3-5969-afbc-21dfeff8e81d', 50, 'g', NULL), +('1d4e042a-690f-5faa-874c-c1463e8a5cb7', '45634f69-1306-5728-bacc-aae078f2d954', 'ea000023-1111-2222-3333-444444444444', 1, 'quả', NULL), +('f8f08856-c77e-5185-8d56-1fa702de0d93', '45634f69-1306-5728-bacc-aae078f2d954', 'b98fe1b1-a832-590c-af49-51ef8bb51756', 1, 'quả', NULL), +('fe39da29-07c9-56b7-8949-286556699385', '45634f69-1306-5728-bacc-aae078f2d954', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('49213beb-c8b0-5719-857e-fb6bf07a40f7', '45634f69-1306-5728-bacc-aae078f2d954', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('e3d516b4-afd3-544a-8a79-4ee2802e72b4', '45634f69-1306-5728-bacc-aae078f2d954', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('766750fe-c8ba-54dd-a549-8d48179b5513', '45634f69-1306-5728-bacc-aae078f2d954', '60abf488-564e-56ab-9aaf-e1c416e24c2a', 60, 'g', NULL), +('90f8963b-17cb-56bd-9303-164f91dcebcd', '6c780824-df81-56db-bb3a-77854d890d5b', '351046a2-52fa-527d-b9e1-cc0e7ae12aec', 1500, 'g', NULL), +('245fed91-f263-5b7c-b9d5-4ec453725d48', '6c780824-df81-56db-bb3a-77854d890d5b', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 1, 'cây', NULL), +('2efa790e-26a8-5d6a-892d-20e3952eb83b', '6c780824-df81-56db-bb3a-77854d890d5b', 'bc138390-c36c-51fa-a33c-bdf8b80cff11', 0.33, 'chén', NULL), +('9ad1f56b-53bc-50b9-845e-805c4209221a', '6c780824-df81-56db-bb3a-77854d890d5b', '0cf0c08e-95d0-5012-aa68-976012719c24', 3, 'củ', NULL), +('99ffbf93-d22d-5291-bfc8-4bf16272263a', '6c780824-df81-56db-bb3a-77854d890d5b', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('9204a953-d0ba-584f-bc6d-cf444f022fd4', '6c780824-df81-56db-bb3a-77854d890d5b', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 15, 'g', NULL), +('8d928ff3-e66a-58b4-bbd3-89bce607e500', '6c780824-df81-56db-bb3a-77854d890d5b', 'ea000055-1111-2222-3333-444444444444', 60, 'g', NULL), +('f3f34e45-f057-5824-b5c0-845e680f7c7b', '6c780824-df81-56db-bb3a-77854d890d5b', '60abf488-564e-56ab-9aaf-e1c416e24c2a', 60, 'g', NULL), +('689fb0e6-8c68-562c-98df-d1ac6b471aa8', '6c780824-df81-56db-bb3a-77854d890d5b', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('9faa74f5-416e-53f8-a871-945e8687e2f4', '6c780824-df81-56db-bb3a-77854d890d5b', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('53bfd8ce-569b-59d8-a566-c78b4d341229', '6c780824-df81-56db-bb3a-77854d890d5b', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('54333fcf-444c-54b3-8641-09d4fa0547da', '6c780824-df81-56db-bb3a-77854d890d5b', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('917a25ec-81ae-5f1b-bcaf-120dc4e1ec6c', '6c780824-df81-56db-bb3a-77854d890d5b', 'f7d4ff23-0aac-5a04-8c77-7c4e778598dc', 5, 'g', NULL), +('de7bb7de-81d0-5c84-993c-f0e78d0057ad', '11c31a55-d6e9-5b2b-966a-16390a66cac9', '197fd433-4561-5175-9f04-35ba4ae89b68', 1, 'con', NULL), +('05316982-4de2-586b-ab7f-ab00b8c97393', '11c31a55-d6e9-5b2b-966a-16390a66cac9', '1044d6af-f340-522c-b3f0-6aaf7c998538', 100, 'g', NULL), +('87b3da82-3cb7-5808-b6f1-36a839de3731', '11c31a55-d6e9-5b2b-966a-16390a66cac9', 'ea000024-1111-2222-3333-444444444444', 50, 'g', NULL), +('c2e8d9eb-5eb3-5876-9a85-aba255ec239c', '11c31a55-d6e9-5b2b-966a-16390a66cac9', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 1, 'củ', NULL), +('8dbe8ecf-66df-5f50-96e2-266874ac02f4', '11c31a55-d6e9-5b2b-966a-16390a66cac9', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('8b2551a4-9b6b-5c7c-8274-8a73a41fb8fa', '11c31a55-d6e9-5b2b-966a-16390a66cac9', '49c0ae89-9790-56d9-b3b7-0e2cefba6262', 30, 'g', NULL), +('2723cf48-ea2f-5a1d-87eb-40463f668287', '11c31a55-d6e9-5b2b-966a-16390a66cac9', '2f483ba2-e616-5b82-a3ca-b23901303b81', 5, 'củ', NULL), +('974785bf-f032-5129-8676-72229d244d40', '11c31a55-d6e9-5b2b-966a-16390a66cac9', '5824249f-4a90-5eb8-ab3e-fe00ffdbf0bb', 100, 'g', NULL), +('d4ddcfa3-2998-5437-8aec-40aff764538c', '11c31a55-d6e9-5b2b-966a-16390a66cac9', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('b7ba12de-a333-5ce1-a586-39d2feebd9f7', '11c31a55-d6e9-5b2b-966a-16390a66cac9', '68cba44d-1217-551c-9cbd-2375419d11ad', 80, 'g', NULL), +('2a247dee-e7ec-5a0e-83af-d1059881e644', '11c31a55-d6e9-5b2b-966a-16390a66cac9', '78d9cd2a-80b3-5337-9959-d941f3678fdc', 150, 'g', NULL), +('ba48467e-5fb2-569b-9e61-f85f414a20e5', '11c31a55-d6e9-5b2b-966a-16390a66cac9', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('411f1b81-1829-5505-90fb-a0afa8ed3e54', '11c31a55-d6e9-5b2b-966a-16390a66cac9', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('e20e3a8b-f4ef-5ed3-be0d-0f4391d7a796', '11c31a55-d6e9-5b2b-966a-16390a66cac9', '562b3c6b-cbe5-51ac-a395-106a12c3bb3c', 100, 'g', NULL), +('43a5acf4-6b38-5bbd-81b7-8e597bbe284b', '714b1258-baab-553b-9faf-94de5b6c9288', 'd5bb3bc9-81ca-5eaf-98ba-911a82fe6496', 300, 'g', NULL), +('ce0a359d-c52f-576f-987e-938c11b759e2', '714b1258-baab-553b-9faf-94de5b6c9288', 'e62586b0-5f12-508e-83a6-7368584f1b2c', 100, 'g', NULL), +('1d507f12-dd37-5097-a26d-e225add8a1e0', '714b1258-baab-553b-9faf-94de5b6c9288', '72ddd845-7697-51f7-9029-16df74b3a929', 2, 'miếng', NULL), +('e476dadd-5ea2-5605-a9a0-a9cba18e8f9e', '714b1258-baab-553b-9faf-94de5b6c9288', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 0.5, 'cây', NULL), +('96cb83c6-ec54-5f4b-8dcf-704465c3b7fa', '714b1258-baab-553b-9faf-94de5b6c9288', '03352f39-1d36-5eb3-b23b-43824e253fdc', 50, 'g', NULL), +('4a6d9a12-5138-5591-a11e-a6b21ee1fe8a', '714b1258-baab-553b-9faf-94de5b6c9288', '1dfd46f5-c134-5384-877e-6251caab3ae7', 2, 'cây', NULL), +('3e60c9e4-68ad-5294-ba23-629c5c81d902', '714b1258-baab-553b-9faf-94de5b6c9288', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('9cd54137-0c7a-53af-be88-4b8bc5ab5561', '714b1258-baab-553b-9faf-94de5b6c9288', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('afcff276-2927-5ff2-80b8-3c35eae80b96', '714b1258-baab-553b-9faf-94de5b6c9288', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('7dba5c17-4e65-5075-9471-12f379885529', '714b1258-baab-553b-9faf-94de5b6c9288', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('aa29021a-2713-5e92-90cb-a901b37109f7', 'b45c5975-3e99-5946-9801-1792aa9bdecd', 'c7fa6b11-30ef-572c-9db6-2656a9e3626e', 250, 'g', NULL), +('37ba4d99-ae06-5c54-970b-6e2bbfce9f84', 'b45c5975-3e99-5946-9801-1792aa9bdecd', 'a591bfd4-6bb8-53de-9752-6de093088a8f', 30, 'g', NULL), +('badda960-8fde-5310-a3f0-57f41691c7a3', 'b45c5975-3e99-5946-9801-1792aa9bdecd', '6049fe3d-13de-57f6-872a-f043dbe82e6f', 30, 'g', NULL), +('468b1eb2-b21c-51c9-863d-206b991abf79', 'b45c5975-3e99-5946-9801-1792aa9bdecd', 'b022ec51-1f8d-575b-913c-22164c09829e', 8, 'cây', NULL), +('9ea7baf0-27a5-5aa4-aa03-d13ed2932cdc', 'b45c5975-3e99-5946-9801-1792aa9bdecd', 'e5f9bddc-28d0-558d-8508-9e77ccf723e6', 25, 'g', NULL), +('5136ac99-9969-57ce-923d-8c27d82562b3', 'b45c5975-3e99-5946-9801-1792aa9bdecd', '64f13316-7d3a-5d72-ad5d-c2fb531e4548', 300, 'g', NULL), +('685b5e73-5be7-59cf-b614-e96657d2a802', 'b45c5975-3e99-5946-9801-1792aa9bdecd', '3f1a24f2-cb63-581c-a7a6-155df140fb3b', 100, 'g', NULL), +('6a458f5b-c0db-5fe3-a9f1-11cdd6184c3f', 'b45c5975-3e99-5946-9801-1792aa9bdecd', '8a216df6-d053-5fcd-8d46-92cb41669b35', 15, 'g', NULL), +('ce50fc28-d044-58e2-88fd-9daca275303c', 'b45c5975-3e99-5946-9801-1792aa9bdecd', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('5307dcb3-138a-5119-9700-e05fd78de04e', 'b45c5975-3e99-5946-9801-1792aa9bdecd', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('2267aefa-7d2a-54db-9516-fb2b1fbe399c', 'b45c5975-3e99-5946-9801-1792aa9bdecd', 'dc47447e-9b44-5004-8e13-74fc8e41ded3', 100, 'g', NULL), +('1991c690-a870-58df-be97-8c2c0526db39', 'b45c5975-3e99-5946-9801-1792aa9bdecd', 'f3d9ff72-e3d4-5f14-a949-427e3abe7ba7', 60, 'g', NULL), +('6822247f-9a87-57e2-a6e5-60cb04b0e597', 'b45c5975-3e99-5946-9801-1792aa9bdecd', 'b6332786-b190-5600-871e-e582de462c31', 80, 'g', NULL), +('c14f00a9-dfe1-519c-9b02-471e65ce8069', 'b45c5975-3e99-5946-9801-1792aa9bdecd', '19626091-3a65-5951-ade1-37aa3e3b4a99', 80, 'g', NULL), +('574c863f-d3a9-5459-9bf4-162857c0902f', '805702b2-90d5-5075-8796-eab70aa027e9', '1a62e92c-89eb-5875-b15c-b3129bff82f6', 100, 'g', NULL), +('2440a8f3-aa21-5744-a610-d4d819f2886e', '805702b2-90d5-5075-8796-eab70aa027e9', '756b58fa-c9b9-5cdc-9c72-5064d5d0fa0e', 100, 'g', NULL), +('3dff54c9-53f6-5f08-b0da-af5a1a63fd5a', '805702b2-90d5-5075-8796-eab70aa027e9', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 0.25, 'trái', NULL), +('78f37ccc-6c83-532f-9bdb-efd9a7a8c467', '805702b2-90d5-5075-8796-eab70aa027e9', 'ea000042-1111-2222-3333-444444444444', 0.33, 'củ', NULL), +('c01c5977-305e-5d11-b555-9f85de5812da', '805702b2-90d5-5075-8796-eab70aa027e9', 'dadc720f-40a5-587f-bf96-5d8b943195fb', 50, 'g', NULL), +('cb800768-37fa-50d3-95e0-545806d67470', '805702b2-90d5-5075-8796-eab70aa027e9', 'e6b33c24-99a0-55a0-80b3-593578050739', 1, 'khúc', NULL), +('1901649b-121b-5f34-a4a3-fb1df2c10a77', '805702b2-90d5-5075-8796-eab70aa027e9', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('cfc858ba-d2c8-5898-899d-ccaa8cbf9c5b', '805702b2-90d5-5075-8796-eab70aa027e9', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('7323fb88-39c3-5753-8576-89e798b28ff1', '4269252d-788e-55b0-b425-cb92701a1c05', '6ae82397-4908-5dd8-8083-36d7bad288dd', 150, 'g', NULL), +('b3b53a29-ee1a-52b3-bdc3-24c3d0529803', '4269252d-788e-55b0-b425-cb92701a1c05', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 100, 'g', NULL), +('cbec47e9-044c-5543-87c8-5f8f58aafd1c', '4269252d-788e-55b0-b425-cb92701a1c05', 'c35c92b4-d2cf-5a0b-9909-f3123537e1d0', 30, 'g', NULL), +('77e36f19-4829-534e-ae6c-b8f302f96667', '4269252d-788e-55b0-b425-cb92701a1c05', 'd7eb4972-ecc9-560e-b85b-13d6b80943ac', 45, 'g', NULL), +('76b5c172-261e-5aa8-8bc5-e3e7f953dbf9', '4269252d-788e-55b0-b425-cb92701a1c05', 'a08518a5-6e2e-5dd7-89c6-5288a970fbce', 100, 'g', NULL), +('e044640c-f856-5fa8-a0cd-7ffe9025f44c', '4269252d-788e-55b0-b425-cb92701a1c05', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('71a8090c-19c4-568f-93cd-dab9fdd250aa', '4269252d-788e-55b0-b425-cb92701a1c05', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 5, 'g', NULL), +('e16be77e-402a-5b64-aff8-9279c96f2d8e', '4269252d-788e-55b0-b425-cb92701a1c05', 'b4213064-6072-598a-9cb7-bde3a80717d1', 80, 'g', NULL), +('d4b75d17-7c58-5c13-b9a9-e230ab04c98f', '4269252d-788e-55b0-b425-cb92701a1c05', 'a0e8fcd6-90bb-5ed2-8fc6-49a25af48f6b', 20, 'g', NULL), +('e0ae99b0-e1ab-5302-8c34-d962df52a10c', '4269252d-788e-55b0-b425-cb92701a1c05', '562b3c6b-cbe5-51ac-a395-106a12c3bb3c', 100, 'g', NULL), +('6cbf3848-4e9b-5806-ad16-88448ea5f3de', '4269252d-788e-55b0-b425-cb92701a1c05', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('425c6a0e-5fcc-5f7a-80d8-3e19a4c0e395', '4269252d-788e-55b0-b425-cb92701a1c05', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('ed23894c-5c3c-53dc-9f7e-7c38c51c2d51', '4269252d-788e-55b0-b425-cb92701a1c05', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('219ca624-463e-5f51-94fe-5911cf2f5f05', '112378a3-1c21-530b-9824-b4e29efbe29f', 'c5480600-bab4-505b-839e-c5e34b634a94', 600, 'g', NULL), +('d13397db-99db-5c6f-a4f6-72b8d13d2ca3', '112378a3-1c21-530b-9824-b4e29efbe29f', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 45, 'g', NULL), +('c346ace0-a0af-5f2e-97d1-aa917a6ffed5', '112378a3-1c21-530b-9824-b4e29efbe29f', '733e6a3b-b73a-5d0a-96df-7e062aded138', 1, 'củ', NULL), +('80519ac6-9cb0-5975-a047-bc2346633651', '112378a3-1c21-530b-9824-b4e29efbe29f', 'ea000034-1111-2222-3333-444444444444', 15, 'g', NULL), +('13f5450c-3f23-5642-b98c-0a2fb70645e2', '112378a3-1c21-530b-9824-b4e29efbe29f', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 5, 'g', NULL), +('fd3c3bae-01b3-5744-a6ed-542f9e5ddc49', '112378a3-1c21-530b-9824-b4e29efbe29f', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('257e4f2c-ddc0-544f-ab91-1d582a6b27cd', '112378a3-1c21-530b-9824-b4e29efbe29f', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('4f13e0cd-13cf-5bde-9cf4-d6432b346e9f', '112378a3-1c21-530b-9824-b4e29efbe29f', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('c8859bbf-76f5-5800-937f-7bffeb6b3fdc', '112378a3-1c21-530b-9824-b4e29efbe29f', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('c9ef3298-7e97-50dc-92f2-3bbe603e2f8e', '112378a3-1c21-530b-9824-b4e29efbe29f', '53aa2eb8-e5c5-525a-a1bf-0f697cb5f048', 60, 'g', NULL), +('055f09f4-671d-5631-b36b-8f4ad0c85f29', '112378a3-1c21-530b-9824-b4e29efbe29f', '133e98ce-ffa5-54d5-a022-f4b1503d49d1', 80, 'g', NULL), +('400a2996-9e67-5165-90b8-5c73c8c6085e', 'cb598433-e532-5686-b512-34210281a9d7', '3ffde083-de57-5e0b-aed6-e015e442d36c', 200, 'g', NULL), +('245c19f4-0918-5b29-a886-94f670816956', 'cb598433-e532-5686-b512-34210281a9d7', 'dc47447e-9b44-5004-8e13-74fc8e41ded3', 15, 'g', NULL), +('e418c726-43a7-5875-a7cb-77d633906e7d', 'cb598433-e532-5686-b512-34210281a9d7', '7112b5bd-2814-59c2-a33f-024069ad3f21', 5, 'g', NULL), +('983c7290-b0c4-59cd-8e07-99e4b10662a8', 'cb598433-e532-5686-b512-34210281a9d7', 'e8d9cc0e-110c-5121-bc75-b17a006b32ab', 150, 'g', NULL), +('20290496-2eba-5ea5-91a3-b03c3eb38016', 'cb598433-e532-5686-b512-34210281a9d7', '6842de28-9e34-5a78-87e4-7453a9d0701d', 200, 'g', NULL), +('a708add4-4f75-5dea-8240-c5157212aa83', 'cb598433-e532-5686-b512-34210281a9d7', '7e0528d8-b090-5fbd-8078-964c66343887', 50, 'g', NULL), +('9e667736-1d66-5edb-9724-c4e19679b954', 'cb598433-e532-5686-b512-34210281a9d7', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('0043cf66-d190-589f-80b7-90277e5d7255', 'cb598433-e532-5686-b512-34210281a9d7', 'ae838177-790f-56f1-ada8-d95edc9ed44c', 50, 'g', NULL), +('8c0198f1-d2a9-5e70-ac5a-d908c563d33d', 'cb598433-e532-5686-b512-34210281a9d7', 'f2ae1f4e-9d6a-5acc-a267-b22b729b0147', 1, 'tô', NULL), +('b7c138aa-09d7-5a0c-8996-63aa6a63c323', 'cb598433-e532-5686-b512-34210281a9d7', 'e789a65c-00b9-5b74-b83c-65df716aafe1', 100, 'g', NULL), +('711e9582-103b-5cad-b081-55e615a4118e', 'cb598433-e532-5686-b512-34210281a9d7', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('7826bcaf-1053-5e1d-9d5c-1d1a80a355bd', 'cb598433-e532-5686-b512-34210281a9d7', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('2ec2f179-6a3d-5c92-bd4b-50fb05cb08b3', 'cb598433-e532-5686-b512-34210281a9d7', 'd0fbfe83-7811-5254-a74f-6fbf80b99480', 80, 'g', NULL), +('8b5adf90-f874-5b79-8a25-d4d6975cecd0', 'cb598433-e532-5686-b512-34210281a9d7', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('95031c63-c7c6-5004-9274-15d17a7b4fa0', 'cb598433-e532-5686-b512-34210281a9d7', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('19c85797-240e-5895-9a57-04b415e302de', 'cb598433-e532-5686-b512-34210281a9d7', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('96645928-a994-59b6-a6a6-92e92660c848', 'cb598433-e532-5686-b512-34210281a9d7', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('ebb0d2a3-aeab-5d94-8cc5-a6d33ca7ed77', 'cb598433-e532-5686-b512-34210281a9d7', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('cbe380ed-e41f-5196-9d8c-0985c662bc74', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', '617618a0-0f75-5d45-9b37-0f15b9a27f6c', 2, 'trái', NULL), +('b94c21af-861a-5c5d-a977-6a0ee9c6a599', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', '725e64c6-e003-54c3-b1a3-5c562700b224', 1, 'miếng', NULL), +('bab2f1e0-d971-57a3-bc0e-daffe923a9f7', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', 'd7eb4972-ecc9-560e-b85b-13d6b80943ac', 3, 'tai', NULL), +('51fa48bf-a26f-5d69-8ccb-d56cfd2552b7', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', '2434416d-0031-51fe-9db4-6faf9dbb7a81', 2000, 'ml', NULL), +('0e532819-98a2-5e3f-a7d1-fe21ab5f6fa0', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 1, 'chén', NULL), +('60e21f95-e5da-5a6e-a60c-7da895a5c8b8', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', '2e77fb9f-f27f-5af8-a693-73586a509eac', 30, 'g', NULL), +('fe80c2d3-4b7b-5ec1-a026-32a62bcf4d3a', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('84f24c26-de5d-5228-8ee1-456ce2477ef8', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('06c26a5b-364c-5347-8657-06627bfbb689', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('8e95a465-ebd6-5ea7-811d-a16ca48bb62d', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('3d43a709-4597-5c19-a2b4-4e11fb6532dc', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('348efefb-5643-5232-8c05-9cd8862cb159', '1631cb80-5df9-5d0f-8a46-bcc14b4638f3', '55886a17-0140-5de3-95ab-dd355411cee0', 5, 'g', NULL), +('5666fb00-2a4a-55de-b2da-2c6ed260385c', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', 'eee18c13-5a9b-5096-8e09-5b87fb51fafc', 300, 'g', NULL), +('880d27df-a0fa-541d-964e-48e3218c2ab2', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', 'bd1b7186-47e9-5195-8188-cc3851f30ba2', 200, 'g', NULL), +('1d3f3381-75bc-53f4-9df4-b33c808abc41', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', 'a91ed20d-3a8e-5009-b663-94387b94649b', 150, 'g', NULL), +('17d1de07-aeb7-5d22-83c9-0fdd50d1b857', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 2, 'trái', NULL), +('d5ea998c-cad6-5244-9e38-0d7a1feab7f1', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', 'a3197cbe-1ad5-58ab-bc0c-7e338261a145', 100, 'g', NULL), +('2ceecdb4-5894-5460-809c-ab7554cc4696', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', '50417267-f38e-579b-937a-07dd7b41bdb6', 0.5, 'chén', NULL), +('301eeccd-d038-5c82-8f37-a957bdff7b30', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 2, 'trái', NULL), +('71df0454-68b0-5b8d-8213-6779f1f6269f', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', '641f1206-7440-54ad-ad8d-709933c7917e', 80, 'g', NULL), +('ce878c6a-0074-5eb9-aa4d-79d1ff936e7b', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('d831d510-3aba-548f-91a6-30dea60f58c5', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('28c4bb0b-81ed-575c-a2a9-9f63f75ae3a3', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', '33923ff7-3942-50ca-9237-b00a5b23ed14', 80, 'g', NULL), +('4832d1ad-e2c1-5652-836d-97f1b3d37b5b', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('87260660-c1f6-5fca-b4cc-9adee8b4361d', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('f389f272-e774-55f3-ac6b-0b60b191d1cf', 'e8f00e6c-e98d-52e5-a8b8-9a15bc2d3aae', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('81394ff9-e89b-5e95-a0ae-dc475254c192', 'b4396b09-7b13-5d67-96f7-8a03803241a0', '5716aac3-265c-5ee8-9969-1699861ecbe8', 1, 'hộp', NULL), +('253c63d0-3fa3-5d32-bf26-649549480fa6', 'b4396b09-7b13-5d67-96f7-8a03803241a0', 'e4eb3e6b-102c-50b5-8c9c-d5a570624fe1', 100, 'g', NULL), +('cec7b40e-3cf3-5091-a116-309fd3d27c94', 'b4396b09-7b13-5d67-96f7-8a03803241a0', 'd1ab6e4c-acba-5fe4-99cb-4ab205734096', 20, 'g', NULL), +('d00f12d4-4d0b-5c80-92f4-673bfa52f5bf', 'b4396b09-7b13-5d67-96f7-8a03803241a0', '5b1f71a2-8d75-5a5f-afee-e05752a582d5', 50, 'g', NULL), +('fe21d9c5-5337-580d-85ca-540c2002f8dc', 'b4396b09-7b13-5d67-96f7-8a03803241a0', 'f207aec8-d2c2-5e7b-abb1-456ecf7d473f', 50, 'g', NULL), +('a6363b7d-e91e-5de8-93a9-aa39c68dc2de', 'b4396b09-7b13-5d67-96f7-8a03803241a0', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('64125dd3-edb0-5b1f-8364-8e72f0f04083', 'b4396b09-7b13-5d67-96f7-8a03803241a0', 'cf6b3000-929c-5350-ae1a-1e38fc86a71e', 30, 'g', NULL), +('9ff0668f-b3ca-5d6c-a4b9-feec3542fda5', 'b4396b09-7b13-5d67-96f7-8a03803241a0', '1c5a7608-c7da-5128-925e-274c54684932', 50, 'g', NULL), +('6e307e37-1575-5dd9-95f6-3c2b1175bf25', 'b4396b09-7b13-5d67-96f7-8a03803241a0', 'd18203ed-13ea-59ab-8859-056331896798', 20, 'g', NULL), +('c583a454-7e80-5108-bb4a-63bd11c34ce9', 'b4396b09-7b13-5d67-96f7-8a03803241a0', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('b8f9da01-ce22-51f4-adc3-3003d0b207f9', 'b4396b09-7b13-5d67-96f7-8a03803241a0', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('3eaabcf5-cf2d-59a8-8b92-7db91c74620c', 'b4396b09-7b13-5d67-96f7-8a03803241a0', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('711f5efd-ca6d-5fbf-ae46-b8433cc38bed', 'b4396b09-7b13-5d67-96f7-8a03803241a0', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('d74a4fbd-9c60-5240-a91d-f721073b7b2c', 'b4396b09-7b13-5d67-96f7-8a03803241a0', 'b84ac3c1-2460-5abf-ab3f-264c9c61d46e', 20, 'g', NULL), +('b2c5d210-bcca-5387-a045-b5b784308242', 'b4396b09-7b13-5d67-96f7-8a03803241a0', '97312907-8f92-540a-a6ab-64327b7bc0b4', 5, 'g', NULL), +('91588754-3349-5dd7-aea8-11fdfaa96ab0', 'b4396b09-7b13-5d67-96f7-8a03803241a0', 'ea000008-1111-2222-3333-444444444444', 20, 'g', NULL), +('2b46526f-612e-5d2c-9596-a744e5006dc0', 'b4396b09-7b13-5d67-96f7-8a03803241a0', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('4758e6ee-3c74-5a92-9cd4-1f0a8b5e00cf', 'b4396b09-7b13-5d67-96f7-8a03803241a0', '3ffde083-de57-5e0b-aed6-e015e442d36c', 100, 'g', NULL), +('327384cc-6f7b-5467-81f9-98b20b775810', 'd9d7740f-5c52-5de6-8689-f857779fd051', '7e6b6dae-5a20-58ac-a623-eeb7e1f018bf', 500, 'g', NULL), +('6a52746d-2efe-56e8-a318-5c622bd25e8d', 'd9d7740f-5c52-5de6-8689-f857779fd051', '79efd86a-6394-5a8e-b9f8-a0b7d5931ae0', 250, 'g', NULL), +('d1946632-a801-5099-91e3-76cacc63401a', 'd9d7740f-5c52-5de6-8689-f857779fd051', '6448be8c-54c1-5eec-acfa-7285f67d621a', 200, 'g', NULL), +('221688e5-ff6a-50d4-922e-f33f77e4e511', 'd9d7740f-5c52-5de6-8689-f857779fd051', 'a6afeb5c-7f53-51b9-abf1-722ca8fa1e87', 300, 'g', NULL), +('1eaf69be-e1df-5c1d-85fd-d081083c7e24', 'd9d7740f-5c52-5de6-8689-f857779fd051', '1c4c4dd4-74c1-5c44-a458-7ef332d74cb5', 300, 'g', NULL), +('0d4ce247-9e8e-55a5-b685-69baa5e67fc7', 'd9d7740f-5c52-5de6-8689-f857779fd051', '99a78ed3-82eb-5862-8011-e56cc4611f01', 15, 'g', NULL), +('dbb13880-8f04-5f4d-8788-c7b38907b2bb', 'd9d7740f-5c52-5de6-8689-f857779fd051', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 50, 'g', NULL), +('ea92f80b-78a8-599a-843d-00800fddf8ed', 'd9d7740f-5c52-5de6-8689-f857779fd051', 'aedb2e8c-cd12-5b62-978e-0dae74c3b580', 80, 'g', NULL), +('48fa4dd9-f44e-59cf-b10d-245db73c8a5c', 'd9d7740f-5c52-5de6-8689-f857779fd051', '75b386d8-4608-5b5d-b193-c28db8f4d65f', 2, 'củ', NULL), +('35403d55-3885-5350-a511-cfbb920dc7f0', 'd9d7740f-5c52-5de6-8689-f857779fd051', 'e125c9a3-22c2-58db-bb7f-8d0040380a06', 500, 'g', NULL), +('223f56a2-3096-55ca-8c17-53e36c647e78', 'd9d7740f-5c52-5de6-8689-f857779fd051', 'f47eab47-66bf-5e46-805a-cbe1e89a40ab', 80, 'g', NULL), +('3a7504e2-83e7-52b3-96ff-279c7e263713', 'd9d7740f-5c52-5de6-8689-f857779fd051', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('49030787-3c33-56de-82bf-74b5a6cd925d', 'd9d7740f-5c52-5de6-8689-f857779fd051', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('2ac86794-724d-5073-886f-297a5133954d', 'd9d7740f-5c52-5de6-8689-f857779fd051', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('f4374326-d4d5-537b-b88b-a7116a62b108', 'd9d7740f-5c52-5de6-8689-f857779fd051', '4280eabb-c763-59a4-b9dc-fc1348434303', 20, 'g', NULL), +('7e8e6d21-1448-546c-8c5b-b172daa5b135', 'd9d7740f-5c52-5de6-8689-f857779fd051', '97312907-8f92-540a-a6ab-64327b7bc0b4', 5, 'g', NULL), +('946f48be-f1d9-59e2-b954-b7fe836fde92', '2146b6ec-8515-51d1-aad7-45418e123659', 'f19d150e-69d9-5ff6-96bd-1b3e934e5442', 500, 'g', NULL), +('779b4212-f32d-526a-8ed0-efaae224c998', '2146b6ec-8515-51d1-aad7-45418e123659', '91002502-3942-5ea4-9e95-bcce290ae096', 100, 'g', NULL), +('3ac18c4d-5fa2-5e97-ae72-69eb98e61420', '2146b6ec-8515-51d1-aad7-45418e123659', '5824249f-4a90-5eb8-ab3e-fe00ffdbf0bb', 100, 'g', NULL), +('c231d116-aff2-5427-bf40-56d3b0297452', '2146b6ec-8515-51d1-aad7-45418e123659', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('9829a74c-35f0-5542-a873-060731591c68', '2146b6ec-8515-51d1-aad7-45418e123659', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('de1ac977-65dd-54d6-8109-a5746b617e76', '2146b6ec-8515-51d1-aad7-45418e123659', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('a55cafe3-d97e-5ed8-a67d-5c6ff6f64745', '2146b6ec-8515-51d1-aad7-45418e123659', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('8625b58a-c5c6-5516-a808-5d9c8d78e8d6', '2146b6ec-8515-51d1-aad7-45418e123659', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('bbdc0187-8c80-5646-b077-86d8f026a11f', '2146b6ec-8515-51d1-aad7-45418e123659', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('c7a55f02-b3ab-5611-8248-c989107b3e45', '2146b6ec-8515-51d1-aad7-45418e123659', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('802cc009-14cb-5bd4-9616-695cf97de179', '2146b6ec-8515-51d1-aad7-45418e123659', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('fe8e0ca1-ae61-5f43-9d90-593bbc4d6425', 'b3d389b6-1c6e-5cce-9717-e9209854de4c', '0e89a14e-b059-54bb-b056-801cddc31119', 100, 'g', NULL), +('5d71be1f-18ca-5ccc-b88d-5411c8a0851c', 'b3d389b6-1c6e-5cce-9717-e9209854de4c', '79057839-1f37-5822-8125-c087a0abc556', 100, 'g', NULL), +('6b71f60e-2081-542f-a7fa-e289d3921a2e', 'b3d389b6-1c6e-5cce-9717-e9209854de4c', 'd6bb90fa-036d-59fd-ba14-2f03542abbb0', 100, 'g', NULL), +('94f9df6d-e767-55be-9a2c-bd57279181d8', 'b3d389b6-1c6e-5cce-9717-e9209854de4c', 'ea000042-1111-2222-3333-444444444444', 100, 'g', NULL), +('02060f98-ac26-526e-8299-1cc07bb0fd9b', 'b3d389b6-1c6e-5cce-9717-e9209854de4c', '03352f39-1d36-5eb3-b23b-43824e253fdc', 50, 'g', NULL), +('c37905d5-e399-58b7-b0d9-793e60af3534', 'b3d389b6-1c6e-5cce-9717-e9209854de4c', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 5000, 'ml', NULL), +('f4d0f5ac-865f-548d-bca8-002d398b6f48', 'b3d389b6-1c6e-5cce-9717-e9209854de4c', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('c544df6c-8be4-5fc9-98f4-aecd3c63eb73', 'b3d389b6-1c6e-5cce-9717-e9209854de4c', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('8d1ab222-eebb-5189-a3aa-0fb2a2d11321', 'b3d389b6-1c6e-5cce-9717-e9209854de4c', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('e943e38a-7730-5fe6-959c-40bbe54a82b8', 'b3d389b6-1c6e-5cce-9717-e9209854de4c', '6b8d9e9b-ba63-5ef8-bef4-c881d8d6ae6f', 80, 'g', NULL), +('6463fe57-0d6f-5c52-851f-3ea26ec0139c', '60011023-f034-5a56-b241-f7d880cea4e6', 'd09bc163-4b00-5906-940c-5be33861b080', 200, 'g', NULL), +('8a0b3483-316c-5c36-bb47-a4d60ce47aff', '60011023-f034-5a56-b241-f7d880cea4e6', 'a5f776bf-436a-5eb6-810a-00f411275088', 100, 'g', NULL), +('9fa1bb84-c6e1-53d9-97b6-129934478e48', '60011023-f034-5a56-b241-f7d880cea4e6', '72ce8ea1-d53f-54f4-9b16-fecab28286fe', 200, 'g', NULL), +('e4ca5cb5-dbe8-5b4c-b4df-4e206b4ef615', '60011023-f034-5a56-b241-f7d880cea4e6', 'd18203ed-13ea-59ab-8859-056331896798', 1, 'cây', NULL), +('0b39b8c8-1d47-5861-aec9-95b483724245', '60011023-f034-5a56-b241-f7d880cea4e6', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('ac7194b7-4b20-5ffe-b898-6fea7b7b0cf4', '60011023-f034-5a56-b241-f7d880cea4e6', 'e33dbe29-6989-50dc-9159-768c8500ae5d', 10, 'tai', NULL), +('a66240a0-cba9-51f3-be07-73e50e1f15b8', '60011023-f034-5a56-b241-f7d880cea4e6', '352dd949-b8f8-5265-b436-699fede7f4f0', 100, 'g', NULL), +('e8118977-fb94-5387-9159-32c39b1c935c', '60011023-f034-5a56-b241-f7d880cea4e6', '47916239-0e29-598c-b01a-4687f4c52475', 800, 'g', NULL), +('e1a9e76d-f899-5279-831a-fd613cea46ff', '60011023-f034-5a56-b241-f7d880cea4e6', '1ea97d2d-e036-5fb9-9db2-ff3640724a46', 15, 'g', NULL), +('5c3dfd27-6305-5866-afc8-8fd43375a5ff', '60011023-f034-5a56-b241-f7d880cea4e6', '4a971a8b-8396-56d2-82de-9ddd3a5b9541', 2, 'viên', NULL), +('2efcad98-781f-50ba-8175-7361dc514abc', '60011023-f034-5a56-b241-f7d880cea4e6', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('432187b7-6f5f-592b-bb32-7e138166d8db', '60011023-f034-5a56-b241-f7d880cea4e6', 'dd711f5b-3ba5-5681-a8b5-05908f41e15b', 5, 'g', NULL), +('77718328-37cf-5ff6-bcd9-aef6ded31348', '60011023-f034-5a56-b241-f7d880cea4e6', 'eeb142cf-7f4b-58ae-ad35-6aa02ee3880f', 100, 'g', NULL), +('e7ef47b9-9caf-538f-aecc-a8668122e196', '60011023-f034-5a56-b241-f7d880cea4e6', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('066e2c28-f64d-5049-9f17-0a5bba0c8bc4', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', '72ddd845-7697-51f7-9029-16df74b3a929', 50, 'g', NULL), +('23bae353-1374-554b-849c-ac55289a7b3c', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', 'ba03b888-7cbe-537b-a514-0a00dea263bb', 80, 'g', NULL), +('8efd4e13-5ad8-5319-b808-16dab8be2b11', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 30, 'g', NULL), +('b597c980-6b3f-5764-9d06-b0e9773a7814', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', 'd18203ed-13ea-59ab-8859-056331896798', 20, 'g', NULL), +('67a1ba85-33af-5718-a529-bf4e075cf762', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', '679a3e05-1ba1-5eb0-b224-54b3479496ef', 30, 'g', NULL), +('3dc4ee09-ad96-5731-b687-69acc274f8dd', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', 'caaaf560-77df-5161-9f9c-ae0827a4814f', 20, 'g', NULL), +('94bfd685-f18c-5080-b9a9-ebc393aa3052', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', 'bb2be091-a733-5319-a2d9-751f72620738', 20, 'g', NULL), +('cc334831-0151-573e-aea3-b999faaa087d', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', 'ea000042-1111-2222-3333-444444444444', 80, 'g', NULL), +('1d8ac006-b989-5677-8d1c-548d40a7d4a1', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', '6b1c6e79-efc2-58d7-b588-27f32c3c1ec1', 80, 'g', NULL), +('f3590d60-d8ca-5f35-b506-fb1a88a72fab', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', '23e082ab-b2fd-51a1-b63a-dcbe21a5e034', 100, 'g', NULL), +('b388d466-518c-5681-b246-ecc7c786a076', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', 'ea7d99d0-548b-520a-98d3-9cce64abb929', 20, 'g', NULL), +('1c69ef00-4c89-5c46-a471-87be8e06c212', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', '15970d80-4266-57fc-9f2e-5dcbdd151917', 80, 'g', NULL), +('d6299da4-9959-5bc6-aaca-4245c3914abc', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('1c3f102c-db60-54fc-83df-dfed4f343644', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('774bcbf9-8602-5694-9942-f149993dedf8', 'a1aeba19-fa06-585b-8271-10785bfaa2d9', '8aefd378-92f5-575b-8801-511d610bb7f6', 80, 'g', NULL), +('76394e71-670f-5610-ba34-2d7af7ea8018', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '0ab11bb3-56fa-5529-aee3-6a66bb3d438b', 150, 'g', NULL), +('1294fbec-c430-5bb5-a282-5830a7a6e5bf', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', 'd3fe4466-cc31-5399-a49c-6b0829a6ca56', 0.25, 'quả', NULL), +('ba951233-31a0-56c4-8185-59f574d378ff', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '1302279a-cfc8-5fe5-9456-32ffae493144', 0.5, 'quả', NULL), +('a4a7123c-d047-5d4d-be37-9f07046d3b65', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '725e64c6-e003-54c3-b1a3-5c562700b224', 2, 'miếng', NULL), +('f12629b6-542b-5f3f-9eda-dfc98cb1c0b7', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '10a5746c-051f-5054-a9f5-a22dfbd0c279', 80, 'g', NULL), +('d300dcfa-8339-5292-b042-836c1c8f05ef', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', 'a3197cbe-1ad5-58ab-bc0c-7e338261a145', 100, 'g', NULL), +('a43b318a-3a2e-532c-bde6-7b2b5d3c6c3e', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '7e666b30-7a9f-58c2-8f0f-23d05b3f6b35', 1, 'cọng', NULL), +('ca771b17-019a-5870-a720-082e88cac1eb', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '220f219b-a118-50a7-87ca-306f0508e3f8', 15, 'g', NULL), +('c89146d5-045a-51e2-a522-ed0c2da7fec3', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '1689f7c0-466a-5cca-bc9e-2ff58a49c080', 20, 'g', NULL), +('d31cb134-452f-503e-bb50-6065ca3428cf', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '0c641474-099a-56ce-9123-688260258182', 60, 'g', NULL), +('50c3dc9d-8793-5922-b214-e1b4bf34332e', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', 'f1355e6f-b76c-5f50-b57d-daeb4f1458e7', 20, 'g', NULL), +('317e2024-b7af-5e99-b59b-16e8ed1038f0', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '4d223977-a251-5efa-b1c0-1e86aa3e8760', 20, 'g', NULL), +('39daa26a-bc8d-5fa2-bbe3-8a8d945bdc0e', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('d6c17450-0134-5ba2-b9dc-ce10df3f1471', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('f6f9ab7d-eb2b-56b4-8ae9-25e1a3563226', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', 'b84ac3c1-2460-5abf-ab3f-264c9c61d46e', 20, 'g', NULL), +('2481e2b4-1ce6-5170-8d4d-cecf61605249', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('e9f4a8a7-e5a7-50f2-8643-746a360aee25', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('ea995bda-73ca-5623-ab8c-badd93494d41', '8a579ee2-5467-5fb1-bf47-acf4ffb0d282', '1fbaa285-f917-5a0f-a0d4-b0f2efffd56a', 5, 'g', NULL), +('6798ad03-909c-53db-81db-560ba8afe8a4', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', '243ba87e-97a1-56a6-b670-78737836b6c0', 300, 'g', NULL), +('49910266-bd13-5984-9509-9848fb12b059', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', '60318bd8-9102-50a4-9b01-1fca66851017', 500, 'g', NULL), +('3370507b-de94-53b1-a1ba-214780749ad8', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', 'ea000025-1111-2222-3333-444444444444', 150, 'g', NULL), +('6adc9442-531d-5a9a-8fd5-870e7768cd47', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', '945dd726-5f35-5633-8a50-80221ee31e03', 50, 'g', NULL), +('8878899c-9867-59a2-b7ef-eafcf6ff53b3', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 500, 'ml', NULL), +('9661a27f-b663-5207-8a0f-119fdc14356c', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('dcb086c4-d083-51e1-bc92-2f4d6bed87e7', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('72129309-5fad-5769-821e-b8bdb7684938', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('8865845b-1387-55de-992c-009ca96da14e', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('1f599fb1-e3d2-5db7-802c-9585eceef210', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', '8aefd378-92f5-575b-8801-511d610bb7f6', 80, 'g', NULL), +('a709dfc3-9816-54ff-8529-404837849f66', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('6fc7cce3-b0dc-5b2f-885f-12a0e0314494', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('a882a68f-06fd-5300-a79d-b263171fb304', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', '152109fb-25ac-55cc-ad5a-341010f2bb98', 20, 'g', NULL), +('f9e6db62-62ce-5216-a1b3-27fb6ba8e988', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('96d05b5d-b167-5a38-ac11-fdcbf9c68b1b', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', 'b6332786-b190-5600-871e-e582de462c31', 80, 'g', NULL), +('e126e8be-fbb2-5d1c-aced-30bbb2784f36', '665f3bd1-fb35-52f9-b2ee-b1bc4d620469', 'ad701cb7-ec79-5b26-8866-792eba06a7b3', 20, 'g', NULL), +('b40e2c5e-1134-5a9c-9120-2ef98d7480fd', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', '3446b061-8fc0-5069-b3dd-514c74d4a112', 2, 'khúc', NULL), +('40a23dfe-9906-56b5-872d-5d58f8390764', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', 'b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 1, 'trái', NULL), +('0400f7c7-d756-5fb7-887b-d5e8517f2b0e', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 1, 'cây', NULL), +('acbd39e2-af6e-5968-8d92-1e7e4bf188eb', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', 'ea000042-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('3442b73f-0931-5546-854a-34674a2c96aa', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', '79efd86a-6394-5a8e-b9f8-a0b7d5931ae0', 0.5, 'củ', NULL), +('4696cfa2-7122-5f0a-944b-734cfa5c4656', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', 'ea000007-1111-2222-3333-444444444444', 100, 'g', NULL), +('b23059a8-0d8d-53a6-940e-6c1357086ec3', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', 'f5d0ae4c-1ed2-5292-9f1a-7b1dff6e90ea', 300, 'g', NULL), +('6d3e8ffd-70fc-5f8f-8e36-0bdc5f0c71e7', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', '01619128-a551-5bcb-84a9-5f7ddf562db4', 1, 'miếng', NULL), +('a92fd458-c7c6-5c9d-b583-45ec1842ef20', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', 'c27eef97-5820-5a92-9eb7-afe0c31d4032', 100, 'g', NULL), +('c4f5a1b6-c697-5a2c-b7fd-c82f1e37f0ee', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', '7a15b4a0-5105-5336-bc29-0b2bc0965dc8', 60, 'g', NULL), +('97b920c8-acca-5635-b42b-ce73dc264e21', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('cad7ee6e-d921-5c0e-a85c-66f88d588430', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('de8275d3-4abd-55ba-92c7-b0a259d65e50', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('b38b2283-0954-5a47-b424-39aab409aaa4', '236f7c55-ddf8-522c-ae9b-44489ebe14f5', '7df3ba80-cf98-534e-9887-ff8ad6ac0d20', 5, 'g', NULL), +('d3507b7a-5517-5bd2-9cb0-04de7b7e89a2', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('307afc81-15f1-5173-a8f0-f394730b5c94', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', 'ea000032-1111-2222-3333-444444444444', 50, 'g', NULL), +('805bb964-e3c8-5126-859d-a0eff3ce06cd', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', '1aa07bca-e8ad-5bc5-b9c9-60b553fb185a', 20, 'g', NULL), +('c617fc71-170d-5b0c-9fa1-b5c25b35a41c', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', '4ea537ab-bb5f-52be-bbaa-8967b7c08aa7', 60, 'g', NULL), +('71ac0706-ca26-517e-8ad9-0e2b8576510a', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', '3c42abb2-c2d2-599f-b46a-25f736761c46', 200, 'g', NULL), +('85a07b96-d830-5243-ab7c-88172e88eba2', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', '89fa5fd0-b46d-5f46-a2fc-20193a4876f8', 50, 'g', NULL), +('2f38257b-608b-5c6e-9791-cf754d618596', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', '7e06e0e9-ec30-5a39-bef6-76b4c0cd24ad', 100, 'g', NULL), +('cbec04f7-ea7d-5085-a9e3-caa2115a70a8', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 30, 'g', NULL), +('a1094ad4-3ac1-51c6-b9b5-82f19e9cb0d0', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', 'ea000024-1111-2222-3333-444444444444', 80, 'g', NULL), +('2b60f432-f24a-56d0-8395-fe159b0a8f50', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('ce24ccb2-e9af-59d5-bb98-d74618200301', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', '60abf488-564e-56ab-9aaf-e1c416e24c2a', 60, 'g', NULL), +('c268c623-3cbc-5235-85b6-46ddea9fe013', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('d12f46e2-71d9-56e5-a0cd-b03c2372b1bd', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('f56b7989-9716-5cc7-8c13-e9af3cf511bf', '12a32d8d-aa86-5d9f-b3a2-44d7237e797b', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('62999656-257a-5d02-a091-fca0e3ed19e5', '1ad07a36-d046-5c78-ba8f-eecf6c44fc20', 'b7724908-4670-5a66-9b84-10421d4d4a69', 100, 'g', NULL), +('faa9ccc4-20b9-5737-aa84-8f03e8d407fb', '1ad07a36-d046-5c78-ba8f-eecf6c44fc20', '764c4116-fc7b-51bf-a82a-dea1650c2857', 300, 'g', NULL), +('309384f9-41a5-5b1d-b65d-0c285f18cc94', '1ad07a36-d046-5c78-ba8f-eecf6c44fc20', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('4b066ca7-9f89-5127-92a0-8bfb382d65a1', '1ad07a36-d046-5c78-ba8f-eecf6c44fc20', 'b8724dc0-7281-5b6a-b7f9-3c281e3fae8e', 50, 'g', NULL), +('ae461318-50c5-5b8d-a6b4-c1a0621d1aac', '1ad07a36-d046-5c78-ba8f-eecf6c44fc20', 'd3fe4466-cc31-5399-a49c-6b0829a6ca56', 50, 'g', NULL), +('2dbac76c-de53-55a3-a9d4-d1710d83e53c', '1ad07a36-d046-5c78-ba8f-eecf6c44fc20', 'e1abd57d-c0f7-5dcb-a8f3-61ad79210b3a', 1, 'cây', NULL), +('c92680bf-4478-5c13-8747-e7da4311c3e9', '1ad07a36-d046-5c78-ba8f-eecf6c44fc20', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('64d66015-a77c-5d61-af6f-b0c972935411', '1ad07a36-d046-5c78-ba8f-eecf6c44fc20', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('adfdbfc8-8b91-522c-b61c-06f70ea96daa', '1ad07a36-d046-5c78-ba8f-eecf6c44fc20', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('71f8d6f6-f676-5273-a7aa-603a43a094c5', '1ad07a36-d046-5c78-ba8f-eecf6c44fc20', 'e1071dc8-2c05-52ed-8d41-74c030ac4986', 20, 'g', NULL), +('08ec1dc6-5ff7-50be-b3b0-996b2525a713', '1ad07a36-d046-5c78-ba8f-eecf6c44fc20', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('b71c01ae-a278-5962-8561-2f0baf8e1f90', '03bf54e4-600f-56f7-a7bb-c7697bea73dd', 'e62586b0-5f12-508e-83a6-7368584f1b2c', 40, 'g', NULL), +('a03551c6-2e6f-5e49-80b8-6979ab397dce', '03bf54e4-600f-56f7-a7bb-c7697bea73dd', 'd32a496e-ef42-5675-a875-309785ea849f', 100, 'g', NULL), +('0309d2a1-1fa3-55a3-9d53-0891bbeb6440', '03bf54e4-600f-56f7-a7bb-c7697bea73dd', 'ea000023-1111-2222-3333-444444444444', 1, 'trái', NULL), +('18908c06-f254-54cd-a176-cbe4f1a69953', '03bf54e4-600f-56f7-a7bb-c7697bea73dd', 'ea000055-1111-2222-3333-444444444444', 50, 'g', NULL), +('69b7d235-18dd-5a2c-8790-5e9a518605a1', '03bf54e4-600f-56f7-a7bb-c7697bea73dd', 'ea000042-1111-2222-3333-444444444444', 1, 'củ', NULL), +('7fae6c5c-b28a-57f3-8674-a72fcd266d66', '03bf54e4-600f-56f7-a7bb-c7697bea73dd', 'ea000024-1111-2222-3333-444444444444', 1, 'nhúm', NULL), +('5f600f8d-7b42-5df4-bfa6-caf79fc2ad11', '03bf54e4-600f-56f7-a7bb-c7697bea73dd', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('2b63365e-11eb-53c3-91be-a3a66bc2c714', '03bf54e4-600f-56f7-a7bb-c7697bea73dd', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('44e36d2b-f2ca-50b9-a4a7-d7f84b6a7a25', '03bf54e4-600f-56f7-a7bb-c7697bea73dd', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('83cbc83c-03b4-52df-91b8-f4da08260a94', '03bf54e4-600f-56f7-a7bb-c7697bea73dd', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('bc1a1726-4934-5c22-9fd2-8b768c9434eb', '03bf54e4-600f-56f7-a7bb-c7697bea73dd', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('b9da92a1-6360-5c55-8930-0763d3158e16', '7c8d3973-174d-5c49-8866-2255325f0021', '246f0677-2ffa-5dc7-8247-5ce8a00ccd66', 100, 'g', NULL), +('164d6f40-365f-5514-8906-bd2695da3676', '7c8d3973-174d-5c49-8866-2255325f0021', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 50, 'g', NULL), +('6e179870-e0e9-596a-a9db-665fecb39ac6', '7c8d3973-174d-5c49-8866-2255325f0021', 'bdab64ef-8278-5e28-b96c-95704f7608a8', 30, 'g', NULL), +('a1c7c015-5d2e-5c0b-a14e-7d1be549e61c', '7c8d3973-174d-5c49-8866-2255325f0021', '5c90d2f0-bbb2-59c1-b6d0-3e6f0f4cdff1', 8, 'quả', NULL), +('dfff7ad7-767a-524d-b236-fc5e98ebda3b', '7c8d3973-174d-5c49-8866-2255325f0021', 'a5a2e5c3-9cb4-56a3-9ff7-ee7d62847d2e', 1, 'chén', NULL), +('88e071ec-9ace-5286-a882-11d2fa640c4e', '7c8d3973-174d-5c49-8866-2255325f0021', 'ea000004-1111-2222-3333-444444444444', 1, 'quả', NULL), +('76687d46-0daf-5c3a-ad85-cd5439be18ad', '7c8d3973-174d-5c49-8866-2255325f0021', 'a17288e0-dd06-5fd8-9722-a28a0443debe', 45, 'g', NULL), +('0ea2df90-d529-56e0-b76f-8cd67114be02', '7c8d3973-174d-5c49-8866-2255325f0021', '8c666743-84a7-5dba-ac3c-a45617e59113', 30, 'g', NULL), +('a62255e4-6e3b-54b5-a3f0-bdc86fa54cfa', '7c8d3973-174d-5c49-8866-2255325f0021', '99157107-8cbc-5715-97f1-620017377993', 100, 'g', NULL), +('59a8a53e-c275-5a89-ae3e-b4d7e9f55bc2', '7c8d3973-174d-5c49-8866-2255325f0021', 'ea000042-1111-2222-3333-444444444444', 80, 'g', NULL), +('2ab706f0-2f8a-5cc4-9a0d-a08165fb0128', '7c8d3973-174d-5c49-8866-2255325f0021', 'f1851389-83c4-51cc-993c-a39d0d8cd0ee', 20, 'g', NULL), +('99cdbe88-2921-5444-9c66-7b9b2cc9c3de', '7c8d3973-174d-5c49-8866-2255325f0021', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('ec789f98-3465-5eb1-ba7d-6feb24beedf8', '7c8d3973-174d-5c49-8866-2255325f0021', '29ba96ab-e03e-54ce-8c15-5d641deacb40', 20, 'g', NULL), +('50bb70b0-48f0-5ab8-a88a-04526598375f', '7c8d3973-174d-5c49-8866-2255325f0021', 'c67982e5-41d2-5e27-b4d5-6ac379d98601', 60, 'g', NULL), +('f71dca08-a717-536d-aa12-10a7854c2d80', '7c8d3973-174d-5c49-8866-2255325f0021', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('7035e45a-b3af-5431-b210-6413e41694f9', '7c8d3973-174d-5c49-8866-2255325f0021', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('4b8b2422-19d2-578d-a47f-b2d6fead2905', '7c8d3973-174d-5c49-8866-2255325f0021', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('117ef8d4-6978-5289-964e-ff7a31c2d2cd', '7c8d3973-174d-5c49-8866-2255325f0021', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('bc21f96c-3dd2-5749-9a6f-d4a8874d60d0', '47d448f1-8630-52f9-aa1c-043f8017bc58', 'b05a5592-0e08-5524-aadc-73d0ef3278bc', 150, 'g', NULL), +('d8c5d4ad-02f8-55ef-a2e0-2d5415707c0e', '47d448f1-8630-52f9-aa1c-043f8017bc58', 'ea000031-1111-2222-3333-444444444444', 50, 'g', NULL), +('4dd14c01-15a6-5404-8589-a64fc4bc396b', '47d448f1-8630-52f9-aa1c-043f8017bc58', 'd571c58f-84ff-5757-b054-691981709fb6', 300, 'g', NULL), +('124453ff-690f-5c8b-9c61-bbba36382b11', '47d448f1-8630-52f9-aa1c-043f8017bc58', '7bcb82b2-cc63-5ef4-a1d8-3239bf410365', 200, 'g', NULL), +('f3814a44-fea8-504e-a551-f98fb9707c75', '47d448f1-8630-52f9-aa1c-043f8017bc58', '36062c40-d2ab-53db-9f7a-bc177319bd1c', 20, 'g', NULL), +('adb1b844-2d22-5af9-bc2a-467a1c633d80', '47d448f1-8630-52f9-aa1c-043f8017bc58', 'ad701cb7-ec79-5b26-8866-792eba06a7b3', 20, 'g', NULL), +('f250c539-1d6f-52f5-845e-a7a7cc05e484', '47d448f1-8630-52f9-aa1c-043f8017bc58', 'deb0eef5-7216-51ca-a2e1-c36844e5f907', 100, 'g', NULL), +('7162e23a-8288-5ea6-b867-07065dffba85', '47d448f1-8630-52f9-aa1c-043f8017bc58', '0f72e431-84b8-5b62-a981-d22b46d20e85', 80, 'g', NULL), +('c6fbcae3-b9aa-5d91-b9de-4aa53b0afdeb', '47d448f1-8630-52f9-aa1c-043f8017bc58', '4fdd6404-34db-594e-bc63-d22458563d72', 20, 'g', NULL), +('aef7bc52-aec2-522c-bd7e-d0c7cf553e0a', '47d448f1-8630-52f9-aa1c-043f8017bc58', '5824249f-4a90-5eb8-ab3e-fe00ffdbf0bb', 100, 'g', NULL), +('93087593-2a85-581e-8898-bbbc0f8e58d2', '47d448f1-8630-52f9-aa1c-043f8017bc58', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('4653b42c-b498-5530-84a4-1dbebcb77a77', '47d448f1-8630-52f9-aa1c-043f8017bc58', 'af2bc91a-1e49-5c64-97c3-866397e23213', 80, 'g', NULL), +('bc9ece86-893e-5465-afdf-fd5ca6f41130', '47d448f1-8630-52f9-aa1c-043f8017bc58', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 20, 'g', NULL), +('963e4258-8cd8-576c-8c38-fbf9c719dbaf', '47d448f1-8630-52f9-aa1c-043f8017bc58', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('e4cd2942-edd1-59f8-af7a-327981e3b863', '47d448f1-8630-52f9-aa1c-043f8017bc58', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('a0031812-c3b2-523a-b1fa-d409a5d374d0', '47d448f1-8630-52f9-aa1c-043f8017bc58', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('cd55248a-72a5-52d2-b900-48cec0244945', '47d448f1-8630-52f9-aa1c-043f8017bc58', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('996f96d5-adcb-5b4c-9c42-3deac21b9854', 'e67140eb-db2b-55ee-bd62-e94f678327e5', 'ea000027-1111-2222-3333-444444444444', 150, 'g', NULL), +('183fd18b-e6e4-5548-8d78-0979d13cd230', 'e67140eb-db2b-55ee-bd62-e94f678327e5', '0a4cc380-9bf1-5bac-923d-5f49da7b5d5b', 0.5, 'con', NULL), +('1ed349b4-8d0b-5e27-bcd2-367c6a8ceddc', 'e67140eb-db2b-55ee-bd62-e94f678327e5', '08d1829f-bf51-5ea2-a239-084586479cfa', 100, 'g', NULL), +('2243ce92-a130-52e9-95b4-63760f5f803a', 'e67140eb-db2b-55ee-bd62-e94f678327e5', 'ea000042-1111-2222-3333-444444444444', 0.25, 'củ', NULL), +('b82b5396-2b4e-599a-912a-170a027f5249', 'e67140eb-db2b-55ee-bd62-e94f678327e5', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('2a8d81e8-b707-5438-b6c0-fb24850e8b33', 'e67140eb-db2b-55ee-bd62-e94f678327e5', '86eda42e-989d-5587-8f1d-96a2d9416a85', 3, 'cây', NULL), +('62a672a3-82ce-5780-9f36-3eb21c286a7c', 'e67140eb-db2b-55ee-bd62-e94f678327e5', 'ea000004-1111-2222-3333-444444444444', 3, 'quả', NULL), +('afa7f036-0168-5eb2-ad63-4b6e6dca9787', 'e67140eb-db2b-55ee-bd62-e94f678327e5', 'f7778c46-6288-57ae-9fe7-6514d5703ee1', 1, 'g', NULL), +('e58c4b2f-3807-5c69-92d7-a90df5ca6a61', 'e67140eb-db2b-55ee-bd62-e94f678327e5', '25fb604e-e3e0-5961-9a24-23605e86e5b0', 1, 'g', NULL), +('eda0cd6e-aca1-5b6a-b97a-36a1d114bb40', 'e67140eb-db2b-55ee-bd62-e94f678327e5', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('04c8418a-5b3e-511b-a0e2-ed2109d4e981', 'e67140eb-db2b-55ee-bd62-e94f678327e5', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('2f3d31d7-6894-5793-9fe3-a751bf0ffbe3', 'e67140eb-db2b-55ee-bd62-e94f678327e5', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('156c9f3f-739c-5cfe-aeb8-a96ac5de88ec', 'e67140eb-db2b-55ee-bd62-e94f678327e5', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('505afa6c-635c-5927-8ef0-9ba18ccf87cd', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', 'e6e8517e-fc87-5b69-9860-67894412b1e6', 300, 'g', NULL), +('184cb071-d4db-5b20-b70c-d03cfa48e105', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', '2b1d2730-a829-5f8b-b7df-c09b60921a0a', 100, 'g', NULL), +('3a7f2ca5-b7ed-57cb-b870-5e168633e87f', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', 'ea000027-1111-2222-3333-444444444444', 4, 'con', NULL), +('e5a55746-c7df-5e66-88ee-237b0f883e7d', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', '0595657d-790b-5c3c-bde1-d2637bfb2263', 1, 'chén', NULL), +('91fa5daf-f6ce-5631-a959-7e83d8d9064d', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', '4bbb2703-742d-5cf9-be8d-90cfc553590c', 50, 'g', NULL), +('169c5347-164d-5dd2-ad11-b04fe41906ad', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 7, 'quả', NULL), +('c42c98c1-faf6-52bf-bcd5-df6ef5807088', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', '0b84b404-bf59-522c-a6df-2e5deaf6ae3c', 10, 'củ', NULL), +('86f027f2-02a9-5c8e-a83a-223951308a43', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 5, 'quả', NULL), +('dcdb0efb-0cfd-5635-b154-8aae7fa01771', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', '5824249f-4a90-5eb8-ab3e-fe00ffdbf0bb', 100, 'g', NULL), +('789adbbb-3da1-5491-ade0-8a41c28fe711', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', 'db2040b5-5fd9-5564-8e30-a1b02c4d2420', 60, 'g', NULL), +('ddec0373-958a-56eb-9790-1c6adae220d9', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', '52969432-55c1-5eb0-860f-4dbc888e85bd', 20, 'g', NULL), +('c5bf80f6-bce7-5521-a16c-2d9961f46b6c', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 20, 'g', NULL), +('af63d2da-fe31-5901-9d55-a6684d8a2180', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('e14bef56-9506-5902-a813-513050d96fda', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', 'eeab99c4-7cfd-589a-a958-a48cbe917b9a', 20, 'g', NULL), +('fdd48d1a-cdc6-566d-bddf-021754a5dfd1', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('2556b8a0-3e94-5779-bd43-446be80447c7', 'bceb8f18-cb8a-5dce-bce6-dda5418db7c0', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('20ac51db-b4f0-5c01-91b2-bf9e3f0188b5', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '1a311698-63bb-50eb-b4b3-a6f834e0f4f1', 100, 'g', NULL), +('49bfa5d1-611a-5ca3-aef8-4419274f1c49', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', 'ea000006-1111-2222-3333-444444444444', 100, 'g', NULL), +('d3bed76f-d57b-5b67-a2ce-ea366107a668', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '89fa5fd0-b46d-5f46-a2fc-20193a4876f8', 150, 'g', NULL), +('23f0ffdd-48c8-59b7-bbee-f34c78a6b5a8', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', 'ea000042-1111-2222-3333-444444444444', 30, 'g', NULL), +('b1678ca0-3875-5032-97b7-702ecc91e0b6', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '01a59acd-69eb-5ae7-9e15-3ba3c5e6f0fa', 300, 'g', NULL), +('ab8ddd76-9abb-5e2d-a7be-d897136c72fd', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '725e64c6-e003-54c3-b1a3-5c562700b224', 1, 'miếng', NULL), +('b709b893-707e-5966-bde8-216402214fff', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '2434416d-0031-51fe-9db4-6faf9dbb7a81', 1000, 'ml', NULL), +('938a9e90-1986-56e1-ab83-31302c8fe8ef', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', 'e247097b-be73-5f33-81c5-756b5917481c', 1, 'cọng', NULL), +('ca626ed0-cb88-5cef-8f4d-057eb9d9f90f', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('4f74a730-f96b-59d3-8ebd-076463bd655e', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', 'b6b3819e-c4ea-511f-834a-f2aefae94602', 3, 'củ', NULL), +('dead5eba-d8d8-5469-ac32-a20a97d2afed', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 1, 'chén', NULL), +('54e74514-1f2e-5912-8693-8781068dddc2', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('079f380c-42a6-585a-bc17-c501097da929', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('75a4370b-c777-57cc-9ed5-1524e2248c4f', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('210257f9-3064-5f0b-9fad-bf06ae0c2f41', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('dd405c37-3071-5090-b14b-43c908a7d32b', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', '05f433c5-0ecc-5701-aca3-aaeb30d47d09', 20, 'g', NULL), +('72c22a6a-1440-5d01-abe3-7be420591e1e', '69ebaa3e-e239-56da-a2c3-3e51e5eca82d', 'ea000026-1111-2222-3333-444444444444', 100, 'g', NULL), +('1867d1b2-657f-527c-a3c9-1f432ae193cd', 'be1cafbd-a7b9-56cd-9753-e01f6154adee', '8c5a7c39-87a1-53eb-b6bd-53720e3a4f42', 500, 'g', NULL), +('2a6b7c6a-00c1-5413-abfc-4e32d8ee98a8', 'be1cafbd-a7b9-56cd-9753-e01f6154adee', 'e885a4ab-d856-5b71-9312-11c823ebcb84', 200, 'g', NULL), +('672edcac-b107-5c89-b5bd-0b67ebdcbdbe', 'be1cafbd-a7b9-56cd-9753-e01f6154adee', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 100, 'g', NULL), +('068fb07e-11f5-5076-9c5a-83509b373290', 'be1cafbd-a7b9-56cd-9753-e01f6154adee', '8addc9d9-f6bc-578b-9163-6028b31f44a2', 20, 'g', NULL), +('a5447b7e-ca40-5d91-a9c8-89456977497a', 'be1cafbd-a7b9-56cd-9753-e01f6154adee', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('c41b6594-d83f-5ca2-97d4-2252a3be061c', 'be1cafbd-a7b9-56cd-9753-e01f6154adee', 'a41546c5-11cf-58cb-9160-ae836b329161', 5, 'g', NULL), +('c6223ccc-ef81-58d1-8ddd-24ddf581141d', 'be1cafbd-a7b9-56cd-9753-e01f6154adee', 'b312b8b7-12e5-507a-95a6-d7835e7bc5ca', 20, 'g', NULL), +('352e3c5c-0962-5a05-8462-506b42680a8e', 'aba31d9b-1314-5946-8089-0fad951a64da', 'a7d8c05e-2a03-5473-a68b-ee91b2a0e1db', 300, 'g', NULL), +('eabb0320-eef3-58dd-8353-bfacb65fd278', 'aba31d9b-1314-5946-8089-0fad951a64da', '2f483ba2-e616-5b82-a3ca-b23901303b81', 10, 'củ', NULL), +('71debaa1-3005-5286-94c2-07031dbe69ea', 'aba31d9b-1314-5946-8089-0fad951a64da', 'b022ec51-1f8d-575b-913c-22164c09829e', 6, 'cây', NULL), +('dacbac66-21e1-5178-b9ad-faf5214cb875', 'aba31d9b-1314-5946-8089-0fad951a64da', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 2, 'quả', NULL), +('db340a99-dabd-5935-bbcc-f65db19038b1', 'aba31d9b-1314-5946-8089-0fad951a64da', '86eda42e-989d-5587-8f1d-96a2d9416a85', 3, 'cây', NULL), +('372a2b19-dc8c-56dc-8590-561343e5e8d7', 'aba31d9b-1314-5946-8089-0fad951a64da', 'fb355158-e1db-50ad-9bb2-2d62f52621ea', 30, 'g', NULL), +('0ede3ede-0267-58ac-9840-c534a3fe5b2f', 'aba31d9b-1314-5946-8089-0fad951a64da', '99a78ed3-82eb-5862-8011-e56cc4611f01', 15, 'g', NULL), +('70c8a958-3bca-58ac-8192-55a2f8fb6169', 'aba31d9b-1314-5946-8089-0fad951a64da', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('f678fe57-1cc0-5efd-b38f-fd4e999861ab', 'aba31d9b-1314-5946-8089-0fad951a64da', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('86f3dc67-d424-5602-8281-59a2ca997a89', 'aba31d9b-1314-5946-8089-0fad951a64da', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('dc9dabce-390d-59cf-8e34-ca017b201733', 'aba31d9b-1314-5946-8089-0fad951a64da', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('a8e76667-3417-5cd8-a26b-465a3b63a1f1', 'aba31d9b-1314-5946-8089-0fad951a64da', '300b9a61-bd25-5035-8b3d-f3b094c3dca7', 20, 'g', NULL), +('0a0fa6ff-e2e8-51ac-9b11-4bf3b3cc580d', 'aba31d9b-1314-5946-8089-0fad951a64da', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('42e333d6-95e0-5391-9595-6f3c0b56202d', '5cf498d3-9ed4-54f3-a592-2c6e2c637009', 'c51e0fe5-3bdd-5457-bdd9-41abd624c6a2', 400, 'g', NULL), +('95b6b60e-a301-501c-9c47-4bf8e44d2843', '5cf498d3-9ed4-54f3-a592-2c6e2c637009', 'dfb3e5d4-7ed2-5cda-b155-2ee5c3e37a7a', 45, 'g', NULL), +('ff27487b-b89d-52d7-bafd-b37eeab8b3ed', '5cf498d3-9ed4-54f3-a592-2c6e2c637009', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 3, 'quả', NULL), +('faac58a0-bb0a-51eb-bac8-42049df121e7', '5cf498d3-9ed4-54f3-a592-2c6e2c637009', 'db62359e-0ef9-5d64-a55d-0a18b675a94e', 1, 'củ', NULL), +('55d2fad3-6ee7-5234-a69e-7df5b00cb7fd', '5cf498d3-9ed4-54f3-a592-2c6e2c637009', 'ba4cda31-3269-504f-a54f-4314050df9b7', 2, 'củ', NULL), +('707dc6e1-744c-56f4-b524-0b4c422ec057', '5cf498d3-9ed4-54f3-a592-2c6e2c637009', '1580ab05-9658-5cdd-9157-4aeddc092125', 20, 'g', NULL), +('6b909470-10c8-57d7-9122-0e0d9ce9122b', '5cf498d3-9ed4-54f3-a592-2c6e2c637009', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('f1a91cd3-3417-58ad-a912-c88982f75955', '5cf498d3-9ed4-54f3-a592-2c6e2c637009', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('e62fecfe-1aad-5679-b6ac-2c5a95a433e9', '5cf498d3-9ed4-54f3-a592-2c6e2c637009', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('63133bec-a361-5cb9-82d7-6a26ca5e4269', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '17bf3b68-6063-5154-a18e-2f9913fa4f93', 700, 'g', NULL), +('3e39117d-56a9-503d-a86f-321a3c469fae', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 2, 'chén', NULL), +('57f76523-8b1c-595c-8444-563c66785837', '0f4947ed-0252-5910-b30c-d4c8bda057dc', 'ea000042-1111-2222-3333-444444444444', 250, 'g', NULL), +('b345c055-f990-5a75-afea-85cfda911d74', '0f4947ed-0252-5910-b30c-d4c8bda057dc', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('f6042b3a-afb9-5627-b347-bd9de5d59f63', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('315dd16c-7567-5c44-bbab-78e009d6d15f', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '4088bd2e-c113-5b1c-9404-410a5d4138e0', 1, 'miếng', NULL), +('0f6d7ae4-7883-5374-88d8-d71fd4bd1118', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '5bcc8b1b-bb10-56ce-9081-3ae1ee324381', 0.67, 'cái', NULL), +('a3fca7d8-bd6b-5033-bd19-daa042e78030', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '790621a1-c068-5f8e-b886-a5e60799ed99', 20, 'g', NULL), +('430a192f-901b-5f7c-a508-9cc41cb7185c', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('96852f7d-cb83-5aa9-b439-33a271d7228a', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '4d223977-a251-5efa-b1c0-1e86aa3e8760', 20, 'g', NULL), +('bd3ea003-b055-51a6-8fd8-9ba80b117d30', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '5824249f-4a90-5eb8-ab3e-fe00ffdbf0bb', 100, 'g', NULL), +('3834d35a-1710-5565-a70f-de73a8157503', '0f4947ed-0252-5910-b30c-d4c8bda057dc', 'b022ec51-1f8d-575b-913c-22164c09829e', 80, 'g', NULL), +('61959e07-3ac8-5400-97dc-ed909e04e835', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 20, 'g', NULL), +('a2f31716-a808-547d-9f35-1720a75f144e', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('49d06cba-5f9c-57c7-8816-3a9466bbb40f', '0f4947ed-0252-5910-b30c-d4c8bda057dc', 'ba3940bb-4b77-5d74-80cb-a42462a155e3', 100, 'g', NULL), +('c8b19436-ffc7-5840-9eab-5704c2cecfa0', '0f4947ed-0252-5910-b30c-d4c8bda057dc', 'ac664fb9-7297-510d-ae5a-25f7ecb8ef70', 5, 'g', NULL), +('5423902f-6126-5db9-9d03-0025c37ed592', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '24e08a1c-ee21-529d-ba5f-036a78918ce8', 100, 'g', NULL), +('541762ac-a386-574d-8cca-87904064c771', '0f4947ed-0252-5910-b30c-d4c8bda057dc', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('a0139616-7c38-546e-b1d4-60988cf125e3', '46387bfc-26ee-5681-b014-3371e7d194c5', 'ec529570-f735-5c5c-8550-e22e8a7db027', 500, 'g', NULL), +('f9f8cd77-6c3d-5b28-999c-41f4f1dbda7d', '46387bfc-26ee-5681-b014-3371e7d194c5', '9cbabcae-f6ae-5631-8508-d53587721693', 150, 'g', NULL), +('03ca205a-4221-5d9d-a882-bf1b5242a015', '46387bfc-26ee-5681-b014-3371e7d194c5', 'd65768cc-fa9f-538b-839d-1e63a94f1a0e', 30, 'g', NULL), +('34bd4a77-1a01-5a29-b8f9-3dd9228b153d', '46387bfc-26ee-5681-b014-3371e7d194c5', 'c4adb2cf-2dc8-5e03-ba1a-b422c99b07c0', 1, 'chén', NULL), +('87ea0e74-d354-51dc-a823-30118719e5ed', '46387bfc-26ee-5681-b014-3371e7d194c5', 'ee6a86c9-9766-55a3-a6f6-b36fe659ad61', 150, 'g', NULL), +('45f86377-665b-5dc1-a6a0-77b9254379f1', '46387bfc-26ee-5681-b014-3371e7d194c5', '48307845-3543-5b0a-98be-88b2125f3ec3', 2, 'cây', NULL), +('2882029b-777c-59b3-98a1-aee3a7545565', '46387bfc-26ee-5681-b014-3371e7d194c5', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'cây', NULL), +('4739d9c7-1616-505b-947e-5008220ae573', '46387bfc-26ee-5681-b014-3371e7d194c5', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('10a63b60-ccc4-5579-af2c-952c5fe5667d', '46387bfc-26ee-5681-b014-3371e7d194c5', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('2d363f0c-31f6-5767-bde7-8607ee7dc734', '46387bfc-26ee-5681-b014-3371e7d194c5', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('3aecc6db-7179-51e0-87d2-0ca14a74edbe', '46387bfc-26ee-5681-b014-3371e7d194c5', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('0923624e-8fbf-52ac-a20e-ba4b4d3c5151', '46387bfc-26ee-5681-b014-3371e7d194c5', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('41c82748-515d-5c8f-83e5-ac9628deae6b', '46387bfc-26ee-5681-b014-3371e7d194c5', 'd43ec7aa-768e-58c0-a905-878b96c9904e', 20, 'g', NULL), +('7ffe50a3-21d5-50f9-a1a2-a50b549b9c5e', '46387bfc-26ee-5681-b014-3371e7d194c5', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('459382a2-22dc-587c-937e-1594f0eb2503', '46387bfc-26ee-5681-b014-3371e7d194c5', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('b7cd09ac-caa6-5ad7-bb7a-4e0a062f2162', '36fb1b9a-9870-5572-ab08-bfae3a37502f', '519ac738-2fd3-5e46-8207-1ce507fc5a82', 100, 'g', NULL), +('400931f5-cff2-5d12-b278-77f34c08d1b2', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'cc0af2b2-0756-51f1-b3d4-28b2f3174916', 50, 'g', NULL), +('519edd38-f8b2-5000-950d-286272ac99bf', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'a42c2290-88d6-5349-ac78-e294e36ef89d', 300, 'g', NULL), +('49e88925-b7ff-5176-b04b-77fc9f9c9ce1', '36fb1b9a-9870-5572-ab08-bfae3a37502f', '5f9fca18-73fd-511b-8e4b-c72573da5510', 150, 'g', NULL), +('f692541c-0829-5d9a-96a2-ba56cfad01aa', '36fb1b9a-9870-5572-ab08-bfae3a37502f', '0665943a-9e13-5276-ac4f-49c0acc7e2ac', 1, 'trái', NULL), +('1729888a-1a95-5603-bf14-5389c53cd069', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'bc138390-c36c-51fa-a33c-bdf8b80cff11', 1, 'trái', NULL), +('1a626b69-7432-5439-9047-c1b427ec5cea', '36fb1b9a-9870-5572-ab08-bfae3a37502f', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 2, 'trái', NULL), +('a7ae5b3f-7239-507d-ae7d-74d4b4be8ea8', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 5, 'cây', NULL), +('14c89582-4970-5ad7-ab86-779d9eac1e01', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'ea000034-1111-2222-3333-444444444444', 45, 'g', NULL), +('f1856a54-a2a1-5695-b588-5be8364c740e', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'ed99a404-344d-5888-857e-b8ce7b610f6f', 80, 'g', NULL), +('4e92a464-c0a8-57eb-a6b2-13d591501b4c', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'f9053c9a-927f-5307-adcc-3de46d1bf7d3', 20, 'g', NULL), +('834576cf-934a-5bee-9dca-112aea1df4f8', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'b3237b39-d611-5057-b736-1bf997501d68', 20, 'g', NULL), +('2b95eb87-bbf2-505f-bc2a-ecf58dc21cfc', '36fb1b9a-9870-5572-ab08-bfae3a37502f', '44e3358f-7afe-5802-8675-0ae6fc10ce0d', 100, 'g', NULL), +('998992c3-7b54-59b3-b563-7de2f1500b01', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'a91ed20d-3a8e-5009-b663-94387b94649b', 80, 'g', NULL), +('6663b34a-08d7-5549-9bc9-009cba8567d7', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'cc67cfbc-4408-5035-b630-d17e1981c6db', 80, 'g', NULL), +('b8211b03-6a16-5713-bef4-90391a7657b4', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'd4b9a3a8-8d87-5ff3-9bab-45ee60030750', 20, 'g', NULL), +('5563ceb9-58c6-5c4d-90f7-b25a72a4edc0', '36fb1b9a-9870-5572-ab08-bfae3a37502f', '87b78424-2278-5646-ae9e-1017c9b18a33', 80, 'g', NULL), +('4a7a0ac9-784f-5501-8955-fe9d58f56fb6', '36fb1b9a-9870-5572-ab08-bfae3a37502f', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('829f5183-d556-573f-8376-b4eb73c258e8', '9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', '4090cfd8-e420-59b5-8f1d-2a59e09753d2', 200, 'g', NULL), +('da875152-3cc0-55e2-b5a7-bc2a145b34e2', '9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', 'f5b11733-01b1-5840-b568-4658abd0fee3', 10, 'g', NULL), +('44ee9b2e-3437-5bee-980e-49fa65a2178e', '9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', '86eda42e-989d-5587-8f1d-96a2d9416a85', 200, 'g', NULL), +('2d8100e7-560d-507b-a4a6-87d5c554de00', '9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', '2bb6d806-606b-59a1-a104-d66b081566c4', 1, 'chén', NULL), +('ba98cddf-20ef-5641-992c-f114ed2c64a6', '9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 15, 'g', NULL), +('5af1c387-37f5-595d-87b3-8b2e5629200b', '9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', '3033ab31-7ff4-5ef0-8b6d-0b8563bda73a', 2, 'chén', NULL), +('7767b0a2-a446-58e3-bbd7-451f081cbbf5', '9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', '6ed6e527-649f-51d2-ad1f-1af104f46cdd', 3, 'trái', NULL), +('cc49c842-fedb-56ec-bc56-65de5b44b2a8', '9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('4c9dafa5-2145-52a6-b9e5-78165f1e820a', '9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('8e3300c7-b14d-59e0-a752-d65ae30a363f', '9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('29f0664d-df32-59fb-994e-7b2e6d33134f', '9294c323-f8bc-5c00-8e3c-f3fd86f2c26a', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('ae70a967-9baf-56ff-b6ff-af495407f8eb', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', 'ea000022-1111-2222-3333-444444444444', 120, 'g', NULL), +('9b0e0b03-f92e-5e3c-9298-699a1124d70c', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', '125f629c-5ce0-533a-ae70-9c28adc7603f', 100, 'g', NULL), +('0a2bf06a-7e8c-53e8-a4ac-dfe891023a89', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', '73cb3e0a-5abc-5c6c-a7a2-7a9ac350f4cd', 1, 'cái', NULL), +('393c2b1b-e172-5341-9d5e-15b8b02a3e84', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', 'ea000004-1111-2222-3333-444444444444', 1, 'quả', NULL), +('a34464ee-e2ef-55f0-b450-b2bd39bd012b', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', 'd8651f86-7b78-5812-818c-3e307e6acfc9', 300, 'g', NULL), +('4d05ceef-f02a-567d-a5c9-edd7e3280ddb', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 8, 'quả', NULL), +('14305dd1-c19f-5527-9599-195bd0a6e65e', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', 'ea000034-1111-2222-3333-444444444444', 15, 'g', NULL), +('dd4e3727-676a-5576-a6fa-b42b0b86ccbd', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', '99157107-8cbc-5715-97f1-620017377993', 5, 'g', NULL), +('4b81a7b9-c3d9-58b7-9657-ebe006ae5fdb', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', '510c2a6d-805a-57d5-a85e-b6c1ab73b1cf', 5, 'g', NULL), +('5de46c5d-06f9-50cd-a7e7-b25a4df8d19b', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('883c2e0f-8c40-52c7-b479-3fc0098d86f6', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('e4ce88ae-277d-5935-8960-5255cd803fce', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('69a5ca77-2128-564d-b13a-324d0ecd047c', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', '388eee9b-99af-5992-9740-ae4361ee4d4c', 80, 'g', NULL), +('54130448-a13d-53e0-91ed-095ea9bc1392', 'a2d332cc-3511-5971-8373-25fcd8ec83a5', 'eeab99c4-7cfd-589a-a958-a48cbe917b9a', 20, 'g', NULL), +('2cec17f9-885e-5ae3-9dd7-8722fab1d71c', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '47916239-0e29-598c-b01a-4687f4c52475', 100, 'g', NULL), +('c2adbe71-b2d1-595a-81a3-8b3df6398840', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', 'ae9ceca5-5436-5c9d-8a1c-b999714d7ae8', 1000, 'g', NULL), +('a9323f2b-e13c-5169-b278-556cf89ae038', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', 'cac62ffc-2dde-57f6-86e3-9e7fd28c2bc1', 600, 'g', NULL), +('766cc578-755b-5fab-aeb1-efc4ff8eac88', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', 'd4009935-6483-51ea-ae27-50887303e5a7', 300, 'g', NULL), +('23aa5213-ea3e-53b5-bf6a-e6f2d4bbeb54', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '7ba1b03e-c9fc-5c30-a2d7-df3b3b980a82', 50, 'g', NULL), +('135e2641-bbcb-5bc7-9184-22b6e994afcc', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '023e1a35-f2de-51cf-beae-6aea36e3d1e5', 25, 'g', NULL), +('025fd776-403c-5798-b492-a8269b591a0a', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', 'dd711f5b-3ba5-5681-a8b5-05908f41e15b', 20, 'g', NULL), +('b42e720f-e149-50f3-8758-f6e6866b9841', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('75786411-c291-568a-9bea-653d0285a41c', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 1, 'cây', NULL), +('8e9bd78b-6693-5c5c-ad1a-28c36f2a6ab7', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '7e666b30-7a9f-58c2-8f0f-23d05b3f6b35', 0.5, 'cọng', NULL), +('b739be5b-b4d1-5b4a-a5e5-77abcf81dd53', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '52283f02-6c9e-5235-967e-3b9bed93cf5b', 6000, 'ml', NULL), +('ab09aa22-a36d-59a3-bd9e-3c934dba5915', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '25095d90-d227-525f-a05a-0770e3c10854', 5, 'g', NULL), +('42c27f36-db29-5abe-bc8f-c34e0c85f7e0', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('55348d7a-ba2c-5eec-bfa8-8b864bb18242', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', 'f3bed613-150b-591a-9af9-e44772c255c2', 5, 'g', NULL), +('fcc8a6a8-2bc4-53c5-a85f-089aa76f9796', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '9f3d2e15-f61e-5be1-bc18-0f43e180f52e', 80, 'g', NULL), +('5c000693-6311-575f-af36-6e50a4b8531f', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('7180311f-ca9f-5901-87b7-ff3bd715024d', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('0f341382-c24b-582f-9ddc-68006aaea175', '6c2a4ecc-a8bf-59c0-b59e-ff7bcd09ada8', '5824249f-4a90-5eb8-ab3e-fe00ffdbf0bb', 100, 'g', NULL), +('af21c25a-91cf-5923-9022-084a269298aa', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', '60caf4ea-dd12-51d8-adca-add337a24b4c', 150, 'g', NULL), +('b861de28-d9fd-5d7c-8e4f-d98902559bd7', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', 'b482a52b-f5dd-51ce-a1f2-257e2af60acf', 0.5, 'quả', NULL), +('1d720348-7404-5486-83c0-edbeac3daa64', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', '4271606a-27ec-54f3-abaa-d7c27944dbc9', 0.25, 'củ', NULL), +('392e9318-c07e-5997-b233-c3ec0480eec5', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 3, 'tép', NULL), +('b1bea804-ac6f-5a3d-8550-1474e51f0e35', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', 'ea000034-1111-2222-3333-444444444444', 2, 'củ', NULL), +('3f70662f-d5ba-5f7f-b57c-c4b04ee76681', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 5, 'g', NULL), +('2e7a8d62-cff7-520f-a776-df06ab3e1a9c', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'quả', NULL), +('8cc0e3f2-1880-598b-82f8-75bc3f2e0304', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', 'ea000005-1111-2222-3333-444444444444', 50, 'ml', NULL), +('c709a338-1a5d-5f14-8b92-afeb4095c4bd', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('529aaa4c-fbc5-5311-855c-b51905d04e76', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', '603a021a-ef88-5229-93ba-f57c239d1d11', 80, 'g', NULL), +('20c090eb-1b04-5754-95fe-ab36d4d20942', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('b5449f45-190f-5715-bb46-f3f09f2c6d80', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('73301d45-c0c9-57c3-9847-5a7ab5a8546e', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 20, 'g', NULL), +('3b3c06a1-8f04-59e7-b04a-bebd547842aa', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('ba5cc30d-ea0b-560a-9104-997ee869b361', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('7db7f5ec-cdee-5541-9064-0531ca403e5e', 'e91e02b2-0c12-5d61-9c31-22db6bc613bb', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('e62f4c25-2acc-5cb0-8df2-64572bdb2079', '98e7174f-aa61-529a-8cbe-8fc3860499a1', '21d71bdf-0b83-5a9b-aaee-75959a123bd6', 250, 'g', NULL), +('95be7e1b-15eb-5f44-8915-767a52139554', '98e7174f-aa61-529a-8cbe-8fc3860499a1', '352dd949-b8f8-5265-b436-699fede7f4f0', 50, 'g', NULL), +('bf85b255-497b-544d-ae5b-3267ebe24000', '98e7174f-aa61-529a-8cbe-8fc3860499a1', '874a0b93-963e-5d37-aa0d-9a41df35b4e4', 25, 'g', NULL), +('4c756d12-4e47-5414-b81b-c5e3aabf13b6', '98e7174f-aa61-529a-8cbe-8fc3860499a1', 'ea000025-1111-2222-3333-444444444444', 25, 'g', NULL), +('c232be1c-adc6-5d64-98b8-530abb55cc44', '98e7174f-aa61-529a-8cbe-8fc3860499a1', '565898d5-15d7-53f8-84ad-d90df61f2e97', 2.5, 'g', NULL), +('c1232d7c-108f-55a2-b8be-e8db18974301', '98e7174f-aa61-529a-8cbe-8fc3860499a1', 'fbbd5c2e-1b10-5ba4-a666-1d0ac61a482f', 5, 'g', NULL), +('6b122656-f3f8-5897-a638-e03730d3116f', '98e7174f-aa61-529a-8cbe-8fc3860499a1', 'ea000034-1111-2222-3333-444444444444', 5, 'g', NULL), +('2f25e671-a509-55a5-87cd-8a0fb9629b54', '98e7174f-aa61-529a-8cbe-8fc3860499a1', 'ea000042-1111-2222-3333-444444444444', 25, 'g', NULL), +('d3db2e7c-5551-56eb-900c-70e8c7f92742', '98e7174f-aa61-529a-8cbe-8fc3860499a1', '2d2141b3-b474-5126-9f88-857d504c7d16', 20, 'g', NULL), +('6e414ecf-e916-569e-9921-bc7f116cd6b3', '98e7174f-aa61-529a-8cbe-8fc3860499a1', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('cca1ff71-78fc-56f0-a5fd-b499d7fdae67', '98e7174f-aa61-529a-8cbe-8fc3860499a1', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('aedb16d5-063f-59ad-9dd7-804a711a41bf', '98e7174f-aa61-529a-8cbe-8fc3860499a1', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('ebc78850-0fcc-5319-b0ed-95c81c59f390', '98e7174f-aa61-529a-8cbe-8fc3860499a1', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('429f957f-eecf-5823-a97e-ea59bc82a4b6', '98e7174f-aa61-529a-8cbe-8fc3860499a1', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('eb27b12b-4d29-5e9d-accf-715b49956e54', '98e7174f-aa61-529a-8cbe-8fc3860499a1', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('bd9da82e-1823-52a7-bc97-76297d7c5035', '3bfb15cb-cae4-51e7-a93a-f75b762f6696', '4b5a9b84-4cb3-51c8-a26c-08c9e15eeed2', 500, 'g', NULL), +('0a8d1d17-7070-554a-b495-ec2612b25c05', '3bfb15cb-cae4-51e7-a93a-f75b762f6696', '99a78ed3-82eb-5862-8011-e56cc4611f01', 22.5, 'g', NULL), +('1c6befb3-b8d9-53da-b832-8c277858694d', '3bfb15cb-cae4-51e7-a93a-f75b762f6696', 'ea000006-1111-2222-3333-444444444444', 300, 'g', NULL), +('74bf89c9-334a-5022-99ce-138504a8568c', '3bfb15cb-cae4-51e7-a93a-f75b762f6696', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 100, 'g', NULL), +('62554ef5-1f59-56a1-a7ae-d786a873fa7a', '3bfb15cb-cae4-51e7-a93a-f75b762f6696', 'ea000008-1111-2222-3333-444444444444', 5, 'g', NULL), +('d169dfe9-6eff-5c95-8704-a077ae167283', '3bfb15cb-cae4-51e7-a93a-f75b762f6696', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('ad19fbf6-2cf0-5e69-9957-4c4ff9df60bb', '3bfb15cb-cae4-51e7-a93a-f75b762f6696', 'ea000023-1111-2222-3333-444444444444', 80, 'g', NULL), +('325563e7-e659-5f41-9942-cc7ba0d293d3', '3bfb15cb-cae4-51e7-a93a-f75b762f6696', '300b9a61-bd25-5035-8b3d-f3b094c3dca7', 20, 'g', NULL), +('b3b6b903-f612-5492-ae86-a74366148326', '3bfb15cb-cae4-51e7-a93a-f75b762f6696', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('a13ac88d-bb20-5a9c-81b7-142422999108', '5c3b5cd3-e649-5a3d-b327-548d0c6784bd', '2515b373-ef20-55fa-a573-f7909d9774ef', 170, 'g', NULL), +('819d3d42-8fe7-52ef-8a73-baf54cb09e89', '5c3b5cd3-e649-5a3d-b327-548d0c6784bd', '776ad2a4-690f-5d21-84ee-0636eb8a99f1', 50, 'g', NULL), +('8d99df08-8266-5969-8f69-5fcb3580a0dd', '5c3b5cd3-e649-5a3d-b327-548d0c6784bd', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 70, 'g', NULL), +('6ef4cd9e-8eb0-5da2-97a3-26d9a5f824f5', '5c3b5cd3-e649-5a3d-b327-548d0c6784bd', 'ea000025-1111-2222-3333-444444444444', 25, 'g', NULL), +('42880088-493e-5a1b-bf75-a13d605cab56', '5c3b5cd3-e649-5a3d-b327-548d0c6784bd', 'd64ca918-99ed-5514-8ed3-1f86bd341db1', 150, 'g', NULL), +('c14cc7b3-d04c-5a9a-866a-76775f34e7a1', '5c3b5cd3-e649-5a3d-b327-548d0c6784bd', '20e1aae0-283e-5221-80b3-bd4d904a01ef', 5, 'g', NULL), +('b8222e02-27fe-5b64-8676-e6f5d4254ad5', '5c3b5cd3-e649-5a3d-b327-548d0c6784bd', 'e82bdd27-1bd0-52dc-a4a3-9088594676a5', 1.25, 'g', NULL), +('316247c7-df76-50e1-92b3-3cdf788c96d2', '5c3b5cd3-e649-5a3d-b327-548d0c6784bd', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('28d2d190-fc26-58cf-8ab6-74259080b4a5', '5c3b5cd3-e649-5a3d-b327-548d0c6784bd', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('66546968-3bb9-57be-b930-15505735c9d0', '5c3b5cd3-e649-5a3d-b327-548d0c6784bd', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('fecc1600-aa65-5422-a4d3-a3289edb524f', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '688a3ac1-2eb5-595e-a65b-d374b0380c7f', 150, 'g', NULL), +('02c87f12-590d-5aa2-88f9-767bfb408b15', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '903e2f0e-8459-51ca-bb6c-1d7d46f6618f', 150, 'g', NULL), +('5267668d-b7c4-5703-9932-a296017ad5cc', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '2f419da2-67d5-52c6-9ee0-303540c3e36a', 250, 'g', NULL), +('87add405-5e1a-563b-8a7c-2af3c17e90d6', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '03cdcbd3-eb4b-51f3-a509-442fa4f83a1d', 94, 'g', NULL), +('01a8f2ef-3e48-5cd4-b7d2-8b852c13da0c', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 100, 'g', NULL), +('01404540-19de-561e-a91b-ebfccc7cd183', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '1dfd46f5-c134-5384-877e-6251caab3ae7', 2, 'cây', NULL), +('d55db5a1-10b7-5d93-aab9-4b9fe3e4d1ec', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'quả', NULL), +('1b349bc5-e91e-51d2-86c6-5dc9184c116c', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '72db415f-2878-5b2f-8967-3772186098b6', 30, 'g', NULL), +('041633ba-b67e-5c12-8388-1737ef2009d0', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '73cb3e0a-5abc-5c6c-a7a2-7a9ac350f4cd', 400, 'g', NULL), +('f2e85917-c2e0-585d-baf7-196f12b99099', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '5ed2e437-dee0-5183-bff2-3b3038e91798', 20, 'g', NULL), +('93bada70-0d9a-518e-9885-ef7bbb9fad99', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('ef33f72c-1333-51d3-8cf6-b9672a0ab097', '6e91a518-aea2-5093-98e8-d6d651e1faf6', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('517aab4b-21ac-56f1-b2e9-260e8c71b78e', '29af46b1-5482-592d-945e-b2f79da74e13', 'd352fad5-3cd2-55b3-b60c-142e7d08e68b', 150, 'g', NULL), +('65459d80-9bf1-5ddd-80a7-aae769c4c513', '29af46b1-5482-592d-945e-b2f79da74e13', '6e92502e-7e8f-599a-b5d1-be201fd7d4cb', 200, 'g', NULL), +('7703dfef-ccbe-5047-9e34-34e42e0dba5f', '29af46b1-5482-592d-945e-b2f79da74e13', 'ea000042-1111-2222-3333-444444444444', 70, 'g', NULL), +('af32b3ef-a2d8-564a-af3f-c8b7f3590580', '29af46b1-5482-592d-945e-b2f79da74e13', 'e33dbe29-6989-50dc-9159-768c8500ae5d', 30, 'g', NULL), +('0e98bed7-8ff3-57c1-acfd-4cbfba539be1', '29af46b1-5482-592d-945e-b2f79da74e13', '76ee661d-61b8-5660-8d2a-b54bd7bcb652', 60, 'g', NULL), +('0eab2363-d68d-52a5-a94c-9ac401f93f14', '29af46b1-5482-592d-945e-b2f79da74e13', 'ab2202d8-365f-55db-9a4d-b56e64c5f66f', 70, 'g', NULL), +('7757e1b0-abda-570b-921a-15e18e135622', '29af46b1-5482-592d-945e-b2f79da74e13', 'de451944-0e5f-5b75-9b9f-b4e4173c6821', 3, 'tép', NULL), +('91da4619-5985-5948-a55e-b0059fec3a7f', '29af46b1-5482-592d-945e-b2f79da74e13', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'cọng', NULL), +('38f6d213-d825-524d-a62c-2b3f3c9f33e5', '29af46b1-5482-592d-945e-b2f79da74e13', '565898d5-15d7-53f8-84ad-d90df61f2e97', 4, 'g', NULL), +('5dadb2ef-03c3-589b-8034-7a0bc2b262a4', '29af46b1-5482-592d-945e-b2f79da74e13', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('8e9d5db8-e474-5472-ac74-a6d103075e7b', '29af46b1-5482-592d-945e-b2f79da74e13', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('3c52c730-9644-5958-92ee-b8d504cebdc4', '29af46b1-5482-592d-945e-b2f79da74e13', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('e0666341-dcd0-509f-bb6d-19851d1ce802', '29af46b1-5482-592d-945e-b2f79da74e13', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('668223a7-3f57-5d42-8d48-f18fc61c46dc', '29af46b1-5482-592d-945e-b2f79da74e13', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('2041873c-46c0-58c3-9e97-0778e4ee9297', '29af46b1-5482-592d-945e-b2f79da74e13', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('555f65a1-3453-537f-97fe-5897816a45c9', 'e407387d-944e-5937-8439-687f94ddccd7', '771d556c-e0c3-5473-93aa-8afb147eea8c', 100, 'g', NULL), +('4c2593dd-6e8b-5e57-a663-98cd71103fe0', 'e407387d-944e-5937-8439-687f94ddccd7', 'ed51eb54-3dc6-53cf-a660-c7ebbe2b6a00', 50, 'g', NULL), +('8c978217-e86a-5156-86cf-014e724a1f75', 'e407387d-944e-5937-8439-687f94ddccd7', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('5db30d79-e477-593a-a93c-01058f3ba850', 'e407387d-944e-5937-8439-687f94ddccd7', '23e082ab-b2fd-51a1-b63a-dcbe21a5e034', 50, 'g', NULL), +('c566f999-9a30-5d2f-acea-a6a8b8cb0656', 'e407387d-944e-5937-8439-687f94ddccd7', '0ace680a-5f4d-5ef1-ab4c-06225bbef2dd', 150, 'g', NULL), +('b39337c3-93cc-5b44-a56b-e5a4a7043cd6', 'e407387d-944e-5937-8439-687f94ddccd7', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('ed520dd6-b938-5f55-9e58-0bc175c163bf', 'e407387d-944e-5937-8439-687f94ddccd7', 'a73c9fa5-ca63-50ea-a11e-bad792c9c9bb', 100, 'g', NULL), +('f8ef19f2-5c17-5e1e-bbce-05852e0ca9fa', 'e407387d-944e-5937-8439-687f94ddccd7', 'f8aff0b3-42ca-55c8-b221-262492113a51', 5, 'g', NULL), +('fad39a24-b2b5-53ee-84a3-6bf638d6f804', 'cb56f92b-8e96-5c55-9038-51be6c29572b', '18872757-52d6-535c-ba24-683941c11fbe', 200, 'g', NULL), +('fbaffc05-b4f1-538d-bfdb-f46b600a8228', 'cb56f92b-8e96-5c55-9038-51be6c29572b', 'deb0eef5-7216-51ca-a2e1-c36844e5f907', 200, 'g', NULL), +('53ef0078-21fc-5e53-b4a3-c43525c2e822', 'cb56f92b-8e96-5c55-9038-51be6c29572b', 'ea000026-1111-2222-3333-444444444444', 96, 'g', NULL), +('38a230c9-a946-5247-a49a-2155eea2f46e', 'cb56f92b-8e96-5c55-9038-51be6c29572b', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 100, 'g', NULL), +('2ee5a0cd-e1c2-5e3e-8239-7e98d6bb2b16', 'cb56f92b-8e96-5c55-9038-51be6c29572b', 'ad701cb7-ec79-5b26-8866-792eba06a7b3', 50, 'g', NULL), +('c32b0cfc-a21b-5dc6-b653-1d84f9ab2c55', 'cb56f92b-8e96-5c55-9038-51be6c29572b', '569a5bc6-b48a-5bb7-9c58-791b6092c095', 50, 'g', NULL), +('d844bd9e-d846-51ae-9ef8-a95db6db3923', 'cb56f92b-8e96-5c55-9038-51be6c29572b', 'ea000023-1111-2222-3333-444444444444', 80, 'g', NULL), +('7a527ea1-8b74-5a16-ae97-23ebfb5ff34e', 'cb56f92b-8e96-5c55-9038-51be6c29572b', 'b6332786-b190-5600-871e-e582de462c31', 100, 'g', NULL), +('88d7b1c6-e1ba-5af2-8411-6f2409880e67', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', '5716aac3-265c-5ee8-9969-1699861ecbe8', 50, 'g', NULL), +('68797765-b6ba-59e3-aff0-7b6f6df60c68', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', 'ea000042-1111-2222-3333-444444444444', 30, 'g', NULL), +('382fa6a0-cea8-5d96-9150-704d2cf20fc9', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', 'ea000004-1111-2222-3333-444444444444', 100, 'g', NULL), +('d86d270e-4f2d-5cee-9a32-38c85f142d56', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', '838cbd7c-b7c0-5fe3-a85f-870e0405cbda', 20, 'g', NULL), +('e7639922-693b-5e11-a0b1-536f847a377e', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', 'ea000034-1111-2222-3333-444444444444', 2, 'củ', NULL), +('d8316a77-9891-565f-a7a8-cacfb3be5960', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 2, 'tép', NULL), +('7fdd16a6-dd5f-587c-992f-ac5fda833601', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', '565898d5-15d7-53f8-84ad-d90df61f2e97', 10, 'g', NULL), +('7d854165-8f04-5815-b431-1567a2b760c0', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'cọng', NULL), +('dda2aa69-0f65-562d-a0a4-d64466dd0384', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', 'e5c4facf-00d0-508a-ac6a-37b377e27867', 5, 'g', NULL), +('b5a9ad9f-8d7b-57ab-b40c-f10e8a613457', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('679032f8-fe65-544e-b971-4888e80c100a', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', 'bb3a0324-6bb1-5921-bc0c-2c2732af144a', 80, 'g', NULL), +('a310f409-878d-513d-99b7-e0e07dfce2e7', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('9537aa61-ee9e-524f-8c4a-cdacf06f237a', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('7593cbb6-cf15-5bcc-a0cc-6dbffe0dc7f1', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('0fa72b7e-7d2a-5fbe-8825-d01b3e933d78', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('568cea4a-6526-5a71-ae58-7dd4b960c4b4', '0d8b1c24-fae8-5e00-8caa-0f5bf6f34f75', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('aff81782-ff0c-54b0-ac96-bdc268b41d63', 'c4529a65-83e1-5489-a284-b937f9e2373f', '2c01232c-01f1-57e7-a8ef-d19a140ca266', 100, 'g', NULL), +('cc531281-3423-570a-9f4b-a87d617d79a4', 'c4529a65-83e1-5489-a284-b937f9e2373f', '7474b19a-adee-59e5-82f6-a2bcb873e62b', 50, 'g', NULL), +('083b4259-0235-5afa-8750-06dcec724fb0', 'c4529a65-83e1-5489-a284-b937f9e2373f', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 3, 'tép', NULL), +('22d26b59-28df-5ec3-a097-5e39776e956b', 'c4529a65-83e1-5489-a284-b937f9e2373f', 'ea000034-1111-2222-3333-444444444444', 2, 'củ', NULL), +('fa4959de-ee0a-5f3b-ac5c-e47ea9967104', 'c4529a65-83e1-5489-a284-b937f9e2373f', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('172b5991-ea7f-5486-94e3-280aa399f7a8', 'c4529a65-83e1-5489-a284-b937f9e2373f', 'b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 0.33, 'trái', NULL), +('11ec9883-fc42-5cb4-9152-bb266822a1c1', 'c4529a65-83e1-5489-a284-b937f9e2373f', 'a28ad55b-f830-5498-b1ff-35558457a573', 50, 'g', NULL), +('902d50d3-a309-5c5e-ba49-171710a822f7', 'c4529a65-83e1-5489-a284-b937f9e2373f', 'e33dbe29-6989-50dc-9159-768c8500ae5d', 20, 'g', NULL), +('613e58cc-d585-5cf3-9b69-3a061bb0afa6', 'c4529a65-83e1-5489-a284-b937f9e2373f', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('f6d39c0d-ac27-560e-849e-fe243ca6774e', 'c4529a65-83e1-5489-a284-b937f9e2373f', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('5ecad0bf-2b7c-5043-b905-f2c638903c57', 'c4529a65-83e1-5489-a284-b937f9e2373f', '410d0065-9ced-58c0-8b70-55bfb0a27e83', 150, 'g', NULL), +('1a9b9cd0-2d4e-58c0-8bd4-45e4b65095a5', 'c4529a65-83e1-5489-a284-b937f9e2373f', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('cdd161b0-99ef-5e7a-8b26-53ede6dbbfe4', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', '1ecd2d26-c7bb-5fbc-893e-c224a8636ead', 2, 'hộp', NULL), +('6c99ccc8-0f70-5b69-a2b7-68ba0c199d1d', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', 'ea000025-1111-2222-3333-444444444444', 0.25, 'củ', NULL), +('b664aea0-10c1-5182-bb12-a8a75f0fcb95', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 0.25, 'trái', NULL), +('3247053f-6673-5607-b20e-76259911c568', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 1, 'trái', NULL), +('7655945e-28b8-5151-966c-1e68786c766c', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 2, 'tép', NULL), +('adca345e-5186-532f-820a-87b2820d8aec', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 2, 'củ', NULL), +('9e5a8e80-82e9-5b07-8921-4202ab4ea7f6', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', 'deb0eef5-7216-51ca-a2e1-c36844e5f907', 200, 'g', NULL), +('56276680-504e-5f28-b083-25e8b38f7a52', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('3025dc5c-25b5-50bc-b17f-34839382ff9f', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('91b57a99-9107-55ab-ad9a-b686a5019ad4', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', 'ad701cb7-ec79-5b26-8866-792eba06a7b3', 20, 'g', NULL), +('91985774-3116-56aa-a69d-3341fe2e4de1', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', 'd0fbfe83-7811-5254-a74f-6fbf80b99480', 80, 'g', NULL), +('cba68267-a495-545a-b246-4a7f32804ffc', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', '798af4e1-ab9f-57a6-9613-9e01e483e0ae', 5, 'g', NULL), +('457adfae-3dcd-5490-b22b-12f00201a7e2', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('327d849d-3e32-5315-97c4-e62ac45e175b', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('d796b2ce-67d7-5340-8375-5cbe13823eec', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('0027b8e1-d67f-5a34-a4db-6a69fcb52b5c', '2e4e3818-cf8b-551e-8619-69e5fa8cb599', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('83bb5ee9-fec2-508f-8263-e0a8d44594a1', '29ee01f2-34a6-58d1-ab99-bb43bbdfd468', '771d556c-e0c3-5473-93aa-8afb147eea8c', 200, 'g', NULL), +('9d4e865a-8294-5b47-bbd2-4d5832d0c3b2', '29ee01f2-34a6-58d1-ab99-bb43bbdfd468', 'd8260c28-d006-5fed-ae3d-7c58d437431f', 200, 'g', NULL), +('c2631e2f-5997-5e46-b098-08d7216023ed', '29ee01f2-34a6-58d1-ab99-bb43bbdfd468', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 100, 'g', NULL), +('7cf6bcff-391a-54be-a6a4-4fae77faaadf', '29ee01f2-34a6-58d1-ab99-bb43bbdfd468', 'ea000042-1111-2222-3333-444444444444', 100, 'g', NULL), +('f06fb76b-39c6-5e07-b94e-8c232c907183', '29ee01f2-34a6-58d1-ab99-bb43bbdfd468', 'ea000010-1111-2222-3333-444444444444', 150, 'g', NULL), +('04d41e83-f124-5629-b1c3-bdd7bb487700', '29ee01f2-34a6-58d1-ab99-bb43bbdfd468', 'f38d0f11-1b0b-537f-843a-b41e06c70f5f', 20, 'g', NULL), +('b6a3c478-a179-5bb5-81a3-d45a59d55aa9', '29ee01f2-34a6-58d1-ab99-bb43bbdfd468', 'd18203ed-13ea-59ab-8859-056331896798', 20, 'g', NULL), +('6039b8cc-23bb-5d57-9e79-ac0023b75190', '29ee01f2-34a6-58d1-ab99-bb43bbdfd468', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('d2d006ce-8d0d-5a08-bd43-4cb5d744b569', '29ee01f2-34a6-58d1-ab99-bb43bbdfd468', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('69d68364-c17b-5fe0-baf2-89d1decf231b', '29ee01f2-34a6-58d1-ab99-bb43bbdfd468', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('27c06335-8724-5791-abe0-cf57a5f2c822', 'fe5bfd59-393e-5d14-825c-405c984841db', '7dc0e5b9-b3cf-56a4-9d48-ed3be332d895', 400, 'g', NULL), +('9afbf803-8c32-5590-9d34-b9a466dcb8a6', 'fe5bfd59-393e-5d14-825c-405c984841db', 'ee6a86c9-9766-55a3-a6f6-b36fe659ad61', 100, 'g', NULL), +('058acd05-3d40-56e5-98d0-a446ce87e24f', 'fe5bfd59-393e-5d14-825c-405c984841db', '04929742-8b5f-5518-a1a0-beeba27a665d', 15, 'g', NULL), +('0a22c14c-76b5-5ef4-b597-2e5c4bb27c1d', 'fe5bfd59-393e-5d14-825c-405c984841db', '8a216df6-d053-5fcd-8d46-92cb41669b35', 2, 'trái', NULL), +('0a951c40-3557-57b3-9af1-24a484008d81', 'fe5bfd59-393e-5d14-825c-405c984841db', 'c9ec444c-57a7-590e-a40d-9b2398269eba', 100, 'g', NULL), +('cad7b326-a25b-54cb-a982-1d1043631ec0', 'fe5bfd59-393e-5d14-825c-405c984841db', '9890c8c0-8f20-5d26-b558-814cb4f980e0', 50, 'g', NULL), +('c07828cb-5577-55de-9f07-101c783211b8', 'fe5bfd59-393e-5d14-825c-405c984841db', '99157107-8cbc-5715-97f1-620017377993', 15, 'g', NULL), +('721411c7-11ac-5eb4-8b95-041e96a02460', 'fe5bfd59-393e-5d14-825c-405c984841db', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('0699e155-8b9f-56b7-b539-7c4a046a5fad', 'fe5bfd59-393e-5d14-825c-405c984841db', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('00f7d971-0dd5-50a5-a123-e130f890c72c', 'fe5bfd59-393e-5d14-825c-405c984841db', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('15d428c7-6f8b-54ce-89aa-3bddc96b411c', 'fe5bfd59-393e-5d14-825c-405c984841db', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('a0d97903-df6e-5493-b308-54a1d47c1ea4', 'fe5bfd59-393e-5d14-825c-405c984841db', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('700d5849-f9e9-50eb-99fc-637509b9b847', '3ca38057-0862-5f00-9217-05d3d4495104', '439eb7b3-e605-564e-8e67-f284e5df846a', 300, 'g', NULL), +('d4c7ea25-a469-5f30-894f-a1de57aeb38a', '3ca38057-0862-5f00-9217-05d3d4495104', '562b3c6b-cbe5-51ac-a395-106a12c3bb3c', 10000, 'ml', NULL), +('0c937787-fecb-56f8-bc99-4b1d89e6af7e', '3ca38057-0862-5f00-9217-05d3d4495104', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 30, 'g', NULL), +('4d0a0adc-2d0c-50cb-ac70-dcbe0032e8f5', '3ca38057-0862-5f00-9217-05d3d4495104', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('18b825c4-645a-5019-b3ba-ab5d6904cc25', '3ca38057-0862-5f00-9217-05d3d4495104', 'b9376b84-b7e3-5ef4-9170-01080df62050', 5, 'g', NULL), +('5b4d9dec-8ece-502e-94af-9b4bb68f94cc', '3ca38057-0862-5f00-9217-05d3d4495104', '1a311aa9-5b81-5eb9-85e7-15cd4727bf2b', 20, 'g', NULL), +('84f5e4e4-5ac3-5dc8-842a-5c7702091208', '3ca38057-0862-5f00-9217-05d3d4495104', '4130379f-0cbf-580a-a63e-0b9a7946e653', 20, 'g', NULL), +('57eb1c25-e234-5298-8875-b92183167cf9', '3ca38057-0862-5f00-9217-05d3d4495104', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('7d8fb5d5-69d9-5539-8373-6959fbd99a06', '3ca38057-0862-5f00-9217-05d3d4495104', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('96770547-b52e-54bb-8f72-f6bf8fc8ffe7', '3ca38057-0862-5f00-9217-05d3d4495104', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('e90ee1d5-ab48-5065-bb42-9c41d32a0a21', '3ca38057-0862-5f00-9217-05d3d4495104', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('49a4f7fe-a06d-5ab2-84ee-4182a4663740', '3ca38057-0862-5f00-9217-05d3d4495104', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('473bf2d4-aa26-5093-8c94-c50296b8e13a', '3ca38057-0862-5f00-9217-05d3d4495104', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('b4dff6aa-11b3-5302-b398-77bfd2d03d33', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', '3ec9fed3-3ee6-5a19-9ee7-f2138c40b11f', 600, 'g', NULL), +('bd535ef6-c38d-59d9-8ffa-7dbc57c09383', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', 'ea000029-1111-2222-3333-444444444444', 500, 'g', NULL), +('487153d8-320f-579c-bdd9-0922155b1abe', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', '00bf9726-71aa-5a08-ac4f-d4163cb08bb4', 100, 'g', NULL), +('51e0997b-aa6e-5d14-a025-d08b3ef14c65', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 2, 'quả', NULL), +('0c9d0ff5-c3c7-555c-8d10-dcd86a7bc3f1', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', '289c9228-be9b-5cca-a1f2-c8c0b4b741ff', 80, 'g', NULL), +('73ae69c6-4524-54e3-9c2f-98626fb6f1ba', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', 'a91ed20d-3a8e-5009-b663-94387b94649b', 80, 'g', NULL), +('6e8ecb7d-b21f-501e-8c04-efa0710a7b25', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', 'bd1b7186-47e9-5195-8188-cc3851f30ba2', 20, 'g', NULL), +('16e7a927-ef96-5f7b-8574-3e36b003acf5', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', 'b53759d7-5ba3-52f5-8244-42813f76ff4f', 100, 'g', NULL), +('3298d71b-698a-5376-bfff-c81c42d889ea', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', '94e18e46-5a05-5053-b1be-d463a82c03e2', 20, 'g', NULL), +('343b24d1-d152-503a-a13f-44bed9d0d52e', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', '641f1206-7440-54ad-ad8d-709933c7917e', 80, 'g', NULL), +('5f9a7cc0-cc76-5e7f-be57-2e05afc29228', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('4288f8b4-e0fc-507a-8340-3f5042be967d', 'ef122924-64ac-562b-bb45-5d5d4e261f0a', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 4, 'cây', NULL), +('b3855349-f586-50b2-93e0-8758baaf1f60', 'c17e789b-a513-541e-a66e-801de6322923', '01e668b1-12a7-58ff-98ff-127b23ce891c', 4, 'quả', NULL), +('aa0e498f-040c-5e46-a729-d01de23a5674', 'c17e789b-a513-541e-a66e-801de6322923', '06e73bfa-dc1f-51a1-9971-be17cef62b4f', 50, 'g', NULL), +('55bf7c00-cc58-5122-8e5b-346c0e81b81d', 'c17e789b-a513-541e-a66e-801de6322923', 'ea000004-1111-2222-3333-444444444444', 4, 'quả', NULL), +('f118133d-f8a0-5748-8bfa-d3c7ecbf0fce', 'c17e789b-a513-541e-a66e-801de6322923', '18e626bc-96fb-5559-a2e5-de1335d52ddf', 40, 'g', NULL), +('6c66bac2-9465-5644-89eb-31e8a6a20f0b', 'c17e789b-a513-541e-a66e-801de6322923', '7248883b-832e-5f90-8d99-7cea0854c072', 40, 'g', NULL), +('6e960c4e-7a6d-5562-bdcc-6c5c69211566', 'c17e789b-a513-541e-a66e-801de6322923', '99157107-8cbc-5715-97f1-620017377993', 5, 'g', NULL), +('214a9aa8-68b1-5544-9463-46ddbe1f5d37', 'c17e789b-a513-541e-a66e-801de6322923', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('92b4acaf-f963-543d-b810-fac954bef185', 'c17e789b-a513-541e-a66e-801de6322923', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('b6bd4005-3a5b-5b9f-abd8-049d4daee34a', 'c17e789b-a513-541e-a66e-801de6322923', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('ad476df3-53a8-588b-ab86-8ce42819ef5f', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', '9a21aa1a-d07b-5a9e-9ee3-a9ab1a44b0c7', 500, 'g', NULL), +('fc75e16f-f775-5529-870c-dde6f135232f', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 5, 'củ', NULL), +('630a3f7a-cff7-5bcd-b720-bb6477a617a9', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', 'ea000034-1111-2222-3333-444444444444', 5, 'củ', NULL), +('44d638eb-592e-5a65-bcd4-e203184b529f', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 0.5, 'cây', NULL), +('b471f343-bdd4-598d-b82d-a8af6a40e8bc', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 1, 'nhánh', NULL), +('b3a0845b-5128-5920-80f7-6642142caad2', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('5e66cc69-ec30-51c2-9d7c-dd8f2883b2e1', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', 'be1f13f5-af04-5fc6-945c-8c3493c38f1a', 15, 'g', NULL), +('3f369275-291c-5481-acfb-f49788daddbe', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', '4ebc499e-6a0f-59da-a508-b3a104f5db87', 10, 'trái', NULL), +('8b7581ec-1e49-5f58-97c7-a89089d04dbc', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 2, 'nhánh', NULL), +('67e62790-2e8f-5c4e-9e97-99cb8e06c9a8', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', '9ed5deee-7f30-5dee-8507-71e0b95c3db6', 20, 'g', NULL), +('5dc00e7c-a9f6-58b1-bca4-457f0ea0c4e9', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('4a4fde5f-0555-5ea3-aaf7-535933ced126', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('e6147898-aa53-5cee-be89-1e3784e33936', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('3b8e93b9-392d-5b89-b360-12972bebfb12', 'ad39a790-7d24-5513-ad3e-5aaaf27d8557', '3998da7a-47d0-5e66-91b0-f4c096214b38', 20, 'g', NULL), +('5cead201-fa6d-5bc5-857a-66fbf849a860', '626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', '9cbabcae-f6ae-5631-8508-d53587721693', 400, 'g', NULL), +('426fc8e8-1525-5c72-bc19-837667697a09', '626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', 'f1d95a8e-3b84-589e-bc1e-3e3ab12bd15c', 30, 'g', NULL), +('29d82f69-d113-5fbc-a84c-096c998d60c4', '626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 30, 'g', NULL), +('a1427d0d-8981-5035-8ab7-5dddc1746195', '626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 5, 'g', NULL), +('443755e1-5b0b-5a39-b20a-a1e48e9f4e15', '626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('d3cea1dd-5dea-5ab7-90d1-8394461fcc4b', '626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', '99157107-8cbc-5715-97f1-620017377993', 5, 'g', NULL), +('baffaeb8-7fdf-506a-99bd-36f91242b9bd', '626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', '19626091-3a65-5951-ade1-37aa3e3b4a99', 80, 'g', NULL), +('c26e2d5b-3709-5ea1-aed8-a5b36d53db8b', '626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', '37fb7227-892d-5d9a-ba6f-1ff67130f6b5', 80, 'g', NULL), +('aed97a5e-7982-5503-b8c2-b0ef4b05263a', '626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('bb9bc820-e2c0-5c17-8e68-896c6fae415e', '626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('13974d83-dea1-5837-acde-a38bec29d7aa', '626ca73b-c8ef-5a18-9bf0-c36d38cd07ff', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('eb7e39b3-f96b-5cfa-92a7-808cf98026c5', '3b28d946-dbdd-572e-95a8-0f01cee280df', '6ae82397-4908-5dd8-8083-36d7bad288dd', 200, 'g', NULL), +('20ac6eb2-c8fa-57de-963f-1c4967fc38c8', '3b28d946-dbdd-572e-95a8-0f01cee280df', 'a89033d9-66f5-514e-aa60-aeaba0973414', 2, 'trái', NULL), +('88240127-e5e2-5ac9-864d-f0342b9b370a', '3b28d946-dbdd-572e-95a8-0f01cee280df', '508d6574-1a99-51da-afb4-03bfc73bf4d6', 5000, 'ml', NULL), +('da8c6ba1-dfef-5f32-9dfa-b292f510d3c5', '3b28d946-dbdd-572e-95a8-0f01cee280df', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('37715c0e-7be0-5634-b8f4-92446ded9327', '3b28d946-dbdd-572e-95a8-0f01cee280df', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('013d845a-b54e-527a-b69c-b501f789fcfb', '3b28d946-dbdd-572e-95a8-0f01cee280df', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('70a946c8-10b9-52eb-9e5b-d2698d7abebe', '3b28d946-dbdd-572e-95a8-0f01cee280df', '42b6459b-8052-59e6-9bd8-e2b96bff7a6f', 20, 'g', NULL), +('abfb25b2-7c5e-5fda-bc45-3d1b4d5f83a3', '3b28d946-dbdd-572e-95a8-0f01cee280df', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('142d7d14-d645-55d9-a4ca-d1a1cbfaad26', '3b28d946-dbdd-572e-95a8-0f01cee280df', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('59852491-ae90-591c-a4cf-9ff3fd0298a4', '3b28d946-dbdd-572e-95a8-0f01cee280df', '9ed5deee-7f30-5dee-8507-71e0b95c3db6', 20, 'g', NULL), +('35660090-e88c-55c8-9278-8c9f0cb337a2', '3b28d946-dbdd-572e-95a8-0f01cee280df', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('fbdefa48-a788-50bf-bd5a-95a3932234fd', '3b28d946-dbdd-572e-95a8-0f01cee280df', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('31d560e5-c0d7-5943-abd3-97fd598afbf5', '3b28d946-dbdd-572e-95a8-0f01cee280df', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('2351f524-8fe0-5f60-b451-38d3d15ec85c', '3b28d946-dbdd-572e-95a8-0f01cee280df', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('a72607b8-bd82-5796-9ddc-d9afb621460c', '929da23d-66f5-5731-b64a-11db674702fc', '00bf9726-71aa-5a08-ac4f-d4163cb08bb4', 150, 'g', NULL), +('0d50a3eb-4caa-5983-a51a-044ad641af4b', '929da23d-66f5-5731-b64a-11db674702fc', 'e33dbe29-6989-50dc-9159-768c8500ae5d', 150, 'g', NULL), +('9e3c884d-bd29-53e4-b863-8f53624a4c01', '929da23d-66f5-5731-b64a-11db674702fc', 'cd2e6540-c31c-5d4a-855f-a65611cd8816', 100, 'g', NULL), +('06dc0309-e633-5fb2-8743-1074fb5f5e2f', '929da23d-66f5-5731-b64a-11db674702fc', 'ea000042-1111-2222-3333-444444444444', 100, 'g', NULL), +('e4bce823-3374-5cf5-b01f-4152ec7e371d', '929da23d-66f5-5731-b64a-11db674702fc', 'ea000025-1111-2222-3333-444444444444', 30, 'g', NULL), +('d1a95ffd-a880-569e-af54-0fc985794117', '929da23d-66f5-5731-b64a-11db674702fc', '8a216df6-d053-5fcd-8d46-92cb41669b35', 30, 'g', NULL), +('62b84799-75db-570d-8182-24bc450d1527', '929da23d-66f5-5731-b64a-11db674702fc', 'ea000055-1111-2222-3333-444444444444', 5, 'g', NULL), +('faea6c52-d9ef-5de2-8ed7-082cbc8d23e7', '929da23d-66f5-5731-b64a-11db674702fc', '3b680478-272c-5584-89ed-d295a095795d', 100, 'g', NULL), +('8d058357-637a-58bb-852d-b56628c7f34d', '929da23d-66f5-5731-b64a-11db674702fc', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('29c29f09-ced4-5d6b-8611-0a1151ccdcc6', '929da23d-66f5-5731-b64a-11db674702fc', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('e2832229-07d7-5677-8808-08ea6a14dc17', '929da23d-66f5-5731-b64a-11db674702fc', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('9332e788-de00-5595-ac07-fb53af650436', '929da23d-66f5-5731-b64a-11db674702fc', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('b00fce66-2791-52ce-acbf-ad89d4cd49c2', '929da23d-66f5-5731-b64a-11db674702fc', '0f91c86e-fc36-56ad-a708-373c3f07fb0e', 60, 'g', NULL), +('3d139ee0-2e87-5ed2-ac7b-f9f8bf879ae6', '929da23d-66f5-5731-b64a-11db674702fc', 'c67982e5-41d2-5e27-b4d5-6ac379d98601', 60, 'g', NULL), +('47ec565c-f98f-53bb-90fd-5952589d70dd', '53f96de7-f903-543a-8f26-c3f6001d7332', 'a8950a73-cfe1-5a88-bc0b-c8f225b6d7a1', 300, 'g', NULL), +('7d4d6fec-2b09-5abf-b420-30d30aaab2a4', '53f96de7-f903-543a-8f26-c3f6001d7332', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'nhánh', NULL), +('10fc2da1-ce34-53d2-b249-c718fdf861c4', '53f96de7-f903-543a-8f26-c3f6001d7332', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('6afccdc4-3372-51b3-8c06-b952364b5c22', '53f96de7-f903-543a-8f26-c3f6001d7332', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('2aca95cc-ab62-52b0-ae1c-b6c1e6d3b0a3', '53f96de7-f903-543a-8f26-c3f6001d7332', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 80, 'g', NULL), +('6371e0b5-a6e2-5d07-ad1a-76478e63107d', '53f96de7-f903-543a-8f26-c3f6001d7332', 'd0fbfe83-7811-5254-a74f-6fbf80b99480', 80, 'g', NULL), +('b3310470-31c5-55ca-89b4-460f9dd93bdf', '53f96de7-f903-543a-8f26-c3f6001d7332', '3a5bb34d-b161-564e-a043-27083083e0e2', 5, 'g', NULL), +('77a8988b-2e34-5f6d-8e0d-1ddd1a4dad3c', 'ae26005a-573f-53a4-9712-4253845db35b', '197fd433-4561-5175-9f04-35ba4ae89b68', 600, 'g', NULL), +('d9fa7067-da94-50ea-87a6-8e8e18d9e2bb', 'ae26005a-573f-53a4-9712-4253845db35b', '93c1d11f-a849-5e9e-88cb-1366dd71ce1e', 100, 'g', NULL), +('40382a16-ed50-57de-9eca-f9e109a4cf47', 'ae26005a-573f-53a4-9712-4253845db35b', '82a3905c-2967-58e7-9018-75fa7cdc57d3', 50, 'g', NULL), +('c191181b-8a4d-57d5-9499-6c034a898d12', 'ae26005a-573f-53a4-9712-4253845db35b', '30badee6-e8cb-5b8a-9824-15ab5b3eea17', 50, 'g', NULL), +('2bb7ff17-6c97-5e75-8a23-7a58c7ed3076', 'ae26005a-573f-53a4-9712-4253845db35b', '5185ca4a-4bad-5bd1-85a1-49a1516c01bd', 50, 'g', NULL), +('71bde584-384d-5c9f-95da-91bf7932c9e2', 'ae26005a-573f-53a4-9712-4253845db35b', 'ea000042-1111-2222-3333-444444444444', 200, 'g', NULL), +('c394b3d8-5bb0-5120-abc0-82c50148f069', 'ae26005a-573f-53a4-9712-4253845db35b', 'e33dbe29-6989-50dc-9159-768c8500ae5d', 100, 'g', NULL), +('46b8f756-144f-59fe-abb1-087c5e060afb', 'ae26005a-573f-53a4-9712-4253845db35b', '27226863-6866-55d6-9148-7efcb4773123', 1, 'trái', NULL), +('e2bf9aac-9ed0-5906-a349-b8c3510faa06', 'ae26005a-573f-53a4-9712-4253845db35b', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('1202141d-caf7-53fa-b49e-68d6d59f2657', 'ae26005a-573f-53a4-9712-4253845db35b', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('3e35d8c9-3d3a-5b35-acd4-a7f5fb506e7e', 'ae26005a-573f-53a4-9712-4253845db35b', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('9445193e-6fb7-5872-9c75-25d5f8bb8ba3', 'ae26005a-573f-53a4-9712-4253845db35b', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('b3a9f336-e66e-548c-93e6-40bce88639bc', 'ae26005a-573f-53a4-9712-4253845db35b', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('d53938fc-91b8-5041-a6a4-033d231ccac2', '816b2ba2-d648-5390-839d-e1f27d06aeee', 'b262e009-25ff-5bd2-b7a4-683244bc41e7', 4, 'g', NULL), +('7c5856b1-2b61-51ac-b419-33397b9a47c1', '816b2ba2-d648-5390-839d-e1f27d06aeee', '1adfc700-6dc3-55f0-beee-01294fe52270', 200, 'g', NULL), +('bae9d367-74d8-5655-b876-6459349a1c27', '816b2ba2-d648-5390-839d-e1f27d06aeee', '95e83aef-b266-56dc-bbe1-1576f124d638', 1, 'quả', NULL), +('79889b02-aef8-5d0d-a168-bc8543696b09', '816b2ba2-d648-5390-839d-e1f27d06aeee', '58c64ab7-d695-51f1-a253-32dd995d9eeb', 100, 'g', NULL), +('3e752554-6f74-52f9-961e-7bd75ee062dd', '816b2ba2-d648-5390-839d-e1f27d06aeee', '2e0d5c2b-b8be-5eb2-8397-4811b41512f8', 5, 'g', NULL), +('784cf684-742c-55f1-a366-affcabf4c25c', '816b2ba2-d648-5390-839d-e1f27d06aeee', 'e91f0f61-d618-5236-813a-f96546c23e55', 20, 'g', NULL), +('697243dc-7571-5186-9b5c-cda1625bb50c', '9ce6e1bc-56eb-5bd0-98ca-6a484d601f2f', '18872757-52d6-535c-ba24-683941c11fbe', 200, 'g', NULL), +('45b79392-017b-512c-bfb9-12d404b0ebad', '9ce6e1bc-56eb-5bd0-98ca-6a484d601f2f', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 100, 'g', NULL), +('82b9e5ba-30b0-51a1-a887-70a34131e3ed', '9ce6e1bc-56eb-5bd0-98ca-6a484d601f2f', '3fd538d1-5d38-51d6-96e1-09dfa1050c3a', 350, 'g', NULL), +('c149d59e-ab31-53a6-bce1-050ba3d4e8c8', '9ce6e1bc-56eb-5bd0-98ca-6a484d601f2f', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'nhánh', NULL), +('8590c012-7301-5e0d-937d-c84571b14db4', '9ce6e1bc-56eb-5bd0-98ca-6a484d601f2f', '1dfd46f5-c134-5384-877e-6251caab3ae7', 1, 'nhánh', NULL), +('483758f3-28e1-5a72-9521-d1344fa6aa1c', '9ce6e1bc-56eb-5bd0-98ca-6a484d601f2f', 'ea000034-1111-2222-3333-444444444444', 5, 'g', NULL), +('6f995b1c-60c4-5f0f-8e03-0e061817c16b', '9ce6e1bc-56eb-5bd0-98ca-6a484d601f2f', '9ed5deee-7f30-5dee-8507-71e0b95c3db6', 20, 'g', NULL), +('ef6644f2-e174-567e-89de-40ac380a8aee', '9ce6e1bc-56eb-5bd0-98ca-6a484d601f2f', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('8ed1a98c-b3c7-5e96-96b6-c4a926fed054', '9ce6e1bc-56eb-5bd0-98ca-6a484d601f2f', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('946e93a6-d187-5e6b-81f0-8420e5915ae7', 'd589b5d0-924c-53d5-adcc-31209842ca2c', 'cae5ce12-646a-5076-935c-585b31c54337', 2, 'cái', NULL), +('3f588c74-ce3a-5712-8ac0-a4e88057eda7', 'd589b5d0-924c-53d5-adcc-31209842ca2c', '0050f70e-5ea3-5f28-bc39-12a5b29bd65d', 30, 'ml', NULL), +('a5470652-7a82-5051-98bd-058f2f0f6637', 'd589b5d0-924c-53d5-adcc-31209842ca2c', 'cccceb75-9097-58b3-96ab-61245f8cf526', 150, 'ml', NULL), +('7a44fbe0-6aad-589f-9ab2-9fa9ffb23240', 'd589b5d0-924c-53d5-adcc-31209842ca2c', 'a0e8fcd6-90bb-5ed2-8fc6-49a25af48f6b', 1, 'nhánh', NULL), +('6d2b4f9b-3cb1-5c50-b1cd-eb6b77404cee', 'd589b5d0-924c-53d5-adcc-31209842ca2c', 'dd37a043-70dd-5ccb-be57-1d629be323ab', 1, 'quả', NULL), +('1d30fad0-e8d6-5632-8721-0d3db40a44b7', 'd589b5d0-924c-53d5-adcc-31209842ca2c', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'nhánh', NULL), +('41a19419-3902-596d-901e-0960b9bd38dd', 'd589b5d0-924c-53d5-adcc-31209842ca2c', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'quả', NULL), +('725c88db-7dce-5ca9-87b7-77a0c0453cca', 'd589b5d0-924c-53d5-adcc-31209842ca2c', '2d2141b3-b474-5126-9f88-857d504c7d16', 20, 'g', NULL), +('1b27cb63-544f-5c43-b125-c70036f5a681', 'd589b5d0-924c-53d5-adcc-31209842ca2c', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('484f6ad3-d31e-54bf-b9bd-6ed22920d73e', '49f92884-9e37-580c-9c1b-e879981b20b3', '725e64c6-e003-54c3-b1a3-5c562700b224', 300, 'g', NULL), +('23bb4602-ad55-5349-a426-3ea83814bf1e', '49f92884-9e37-580c-9c1b-e879981b20b3', '31413b05-b2b0-506a-95da-68f83bd570c7', 100, 'g', NULL), +('0073e919-2a11-55b0-b212-5ffbb0651799', '49f92884-9e37-580c-9c1b-e879981b20b3', '46e409da-4d37-51e2-b6d6-eb5474fdb88e', 100, 'g', NULL), +('5ade7676-a7ae-5e2d-b2cd-1bd342d4c61d', '49f92884-9e37-580c-9c1b-e879981b20b3', '5e242c0f-421e-5dfd-b3b4-904b01cc85c9', 80, 'g', NULL), +('1d7e3f64-8354-5e8f-9701-874ac9f48830', '49f92884-9e37-580c-9c1b-e879981b20b3', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 1, 'trái', NULL), +('57930847-cb61-55f8-b5da-0b372b4ded1a', '49f92884-9e37-580c-9c1b-e879981b20b3', '220f219b-a118-50a7-87ca-306f0508e3f8', 15, 'g', NULL), +('fd498dc7-b786-5937-b09f-327081d4362a', '49f92884-9e37-580c-9c1b-e879981b20b3', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 15, 'g', NULL), +('dd7e4bee-294b-5a7c-afad-803314729f01', '49f92884-9e37-580c-9c1b-e879981b20b3', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('7fdcaa6e-e6a5-541d-9c1b-a12114a30bb4', '49f92884-9e37-580c-9c1b-e879981b20b3', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 2.5, 'g', NULL), +('47825030-288d-5a86-a2d9-12473033e0a5', '49f92884-9e37-580c-9c1b-e879981b20b3', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('99d98bc4-abd6-555a-9e26-c821b299512f', '49f92884-9e37-580c-9c1b-e879981b20b3', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('abc7c21b-bc36-58bd-a74e-ef859927aa5b', '49f92884-9e37-580c-9c1b-e879981b20b3', '4280eabb-c763-59a4-b9dc-fc1348434303', 15, 'g', NULL), +('7878be2e-c05c-508f-b703-189caf4b7951', '57272f4b-d7cf-581f-af85-bcb67ef04d75', '823ec176-1d30-524a-80ad-8c4aab8e1117', 500, 'g', NULL), +('a82082f5-ac30-5e7b-afa5-9600e711aaa7', '57272f4b-d7cf-581f-af85-bcb67ef04d75', '562b3c6b-cbe5-51ac-a395-106a12c3bb3c', 10000, 'ml', NULL), +('790cc4c8-6c5a-5430-b46f-b1fc7700877c', '57272f4b-d7cf-581f-af85-bcb67ef04d75', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 1, 'g', NULL), +('1a95b9ca-b35e-586d-95a6-c063b1d22a9b', '57272f4b-d7cf-581f-af85-bcb67ef04d75', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 5, 'g', NULL), +('1ece1fb5-3eb6-5e27-9dcb-afd03fb7728f', '57272f4b-d7cf-581f-af85-bcb67ef04d75', 'bc44b704-2eb7-5aac-9c48-d38f9b61dfca', 80, 'g', NULL), +('bff2fd2a-0a27-5ecf-ba1c-fee045da3d4e', '57272f4b-d7cf-581f-af85-bcb67ef04d75', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('09f4f80f-5cb1-570e-a45a-f2dbe46e383c', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', '5e2e5a59-c9d0-5457-b7a1-719e7d238555', 400, 'g', NULL), +('7b3c1c05-b431-5572-8d55-4bc89472a292', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', '0d69188e-bae9-50fe-830e-d7349bc5b7dd', 1, 'cây', NULL), +('7adc7da8-0ddd-5e79-813f-c1a8e8e12133', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', '03cdcbd3-eb4b-51f3-a509-442fa4f83a1d', 0.5, 'củ', NULL), +('0feda6a1-d32b-517b-843f-b784d3b0fffd', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', '5fd44726-6889-508f-b395-472ebbd28797', 0.5, 'quả', NULL), +('1cc8d901-8a82-56e7-b8c0-075fbe1b42ec', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', '895657ca-7a96-5c5a-9374-5a9a725087e6', 0.5, 'cây', NULL), +('aa4c5c3f-7392-53ab-a380-0b3f4f3e8d2a', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('18a0f8db-4be6-52d4-af86-ac83709a6bb7', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('86c19430-8ca0-58d5-a4b3-86206fff7fcb', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('4e47ae5d-bc8e-55d8-8660-f3ea4cc7fa97', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', '56b6eca5-5e55-52c4-aa0e-e1f1c9c0ab8e', 80, 'g', NULL), +('144f9492-d414-56e2-9010-e31fc6cd2594', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('e4fb53c0-aa49-5984-927d-08dd65f6e06c', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('0411564b-8d85-5c5b-b461-a57757514555', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('838064aa-d729-58bf-b5b1-405e70ae2b6c', '61f06e3c-a8e3-5cbc-9fd3-acd713234e16', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('0a1c22ef-1ca0-5492-b85c-da3aa1dec9c1', 'de029987-33e8-5e45-830d-9c8593303a2e', '0a57db2d-c90a-502f-b3b4-75a09401eb1e', 250, 'g', NULL), +('246d1c08-ffda-5f0b-9d3d-c18aeb59a8d4', 'de029987-33e8-5e45-830d-9c8593303a2e', 'ea000004-1111-2222-3333-444444444444', 100, 'g', NULL), +('2c8cbd83-77df-5083-826d-4806db6f3933', 'de029987-33e8-5e45-830d-9c8593303a2e', 'd8260c28-d006-5fed-ae3d-7c58d437431f', 100, 'g', NULL), +('bcdcad9a-0546-5ba8-9cb5-dd507c08cf59', 'de029987-33e8-5e45-830d-9c8593303a2e', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('3b855add-be3e-5f85-aa87-1975492de056', 'de029987-33e8-5e45-830d-9c8593303a2e', '1d6ed989-0905-57a0-b21d-9a6bb0f9a012', 200, 'g', NULL), +('e049742d-90e0-5d87-a96e-d7ff16518410', 'de029987-33e8-5e45-830d-9c8593303a2e', 'ea000025-1111-2222-3333-444444444444', 50, 'g', NULL), +('70a452f3-3959-5b6b-8817-bce4c7e96297', 'de029987-33e8-5e45-830d-9c8593303a2e', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 60, 'g', NULL), +('48ee6e1c-0203-5564-95cb-acf1b6355dd4', 'de029987-33e8-5e45-830d-9c8593303a2e', '6d1d4481-bae6-5af8-a86a-525b20f38c1f', 30, 'g', NULL), +('a5960e07-6a09-56ee-81d3-af485bce4c58', 'de029987-33e8-5e45-830d-9c8593303a2e', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 20, 'g', NULL), +('6cac1e81-b20a-5c9d-a817-81d2cdf8ddfe', 'de029987-33e8-5e45-830d-9c8593303a2e', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 15, 'g', NULL), +('7f6177df-353c-575f-8f7a-263df5586edf', 'de029987-33e8-5e45-830d-9c8593303a2e', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 1.25, 'g', NULL), +('de0029b7-1442-5f84-b2ce-16d6aec626af', 'de029987-33e8-5e45-830d-9c8593303a2e', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 10, 'g', NULL), +('d6094505-04b1-55fe-9340-bcc4d8a98ed9', 'de029987-33e8-5e45-830d-9c8593303a2e', 'ea44af36-bee4-50d0-8bb1-eab63f2c5571', 250, 'g', NULL), +('35a9491a-0d50-59a3-b9cf-7fba4145a1b0', '908f165a-46fb-5095-aabb-c78c33a90543', 'ea000004-1111-2222-3333-444444444444', 4, 'quả', NULL), +('3afe805c-492d-53bd-8fa6-7fe9a45a1ab2', '908f165a-46fb-5095-aabb-c78c33a90543', 'c1307b38-1d09-5380-bb3b-e8fd3f3ca8a1', 1, 'quả', NULL), +('f7645b37-ba3f-5aeb-b906-e28d67f16ca2', '908f165a-46fb-5095-aabb-c78c33a90543', 'fc63613e-bf10-55cc-9b60-b6c095afb98d', 80, 'g', NULL), +('39e75f9a-2139-56e1-8022-8bb076cbbf78', '908f165a-46fb-5095-aabb-c78c33a90543', 'b70777fc-5bda-5bb2-8d55-de1cccb5e759', 80, 'g', NULL), +('ce5cc26c-378d-57d6-a439-a6d28e61dcab', '908f165a-46fb-5095-aabb-c78c33a90543', 'ea000025-1111-2222-3333-444444444444', 50, 'g', NULL), +('1490affe-2ef1-58f0-a0b2-6ed81799cf82', '908f165a-46fb-5095-aabb-c78c33a90543', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 100, 'g', NULL), +('928bed2f-4141-5399-b20e-7ae5230ad3e9', '908f165a-46fb-5095-aabb-c78c33a90543', 'ea000023-1111-2222-3333-444444444444', 1, 'quả', NULL), +('a02eee3f-291c-56fc-8cf4-bd1f313b56d2', '908f165a-46fb-5095-aabb-c78c33a90543', 'febc629f-e635-50c2-ac56-c8acf5859ee7', 50, 'g', NULL), +('53ecb58a-50ff-50d2-9361-60f5f8a44e62', '908f165a-46fb-5095-aabb-c78c33a90543', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('1f326ae8-4694-5e8e-a282-e653d29b8182', '908f165a-46fb-5095-aabb-c78c33a90543', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 30, 'g', NULL), +('c623ea20-e075-56d9-935b-0cd828b96359', '908f165a-46fb-5095-aabb-c78c33a90543', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('24332781-5e72-51dc-ab83-92aa510f60de', '908f165a-46fb-5095-aabb-c78c33a90543', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('c2987750-4636-5172-90ff-c584236cdb97', '908f165a-46fb-5095-aabb-c78c33a90543', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('4c5d09c6-e7c0-5592-a584-4c992f6d6f26', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', '18d08bf8-b23f-5018-b6a5-c43a9f60a81f', 250, 'g', NULL), +('57428348-d5c3-593f-82b5-61e2c2e2ffda', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 2, 'cây', NULL), +('630118d9-bebe-535d-8b95-26e9a14a4019', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', '289c9228-be9b-5cca-a1f2-c8c0b4b741ff', 150, 'g', NULL), +('4c0bd9fb-4a81-5a64-92d2-fec382d1e128', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', 'e6fca3a6-0bde-5410-b824-eca8d0d22c46', 150, 'g', NULL), +('fde3d968-0d97-5caa-bf91-fbc41a2803a9', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', '74b8d815-a01f-5a3b-b774-6c669c0eda36', 50, 'g', NULL), +('53a6c552-3300-5590-a7a8-3ee009781cb9', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', '30009462-35e8-5edb-a607-57b5f6368893', 50, 'g', NULL), +('0baec213-5888-503f-a25e-257f1fbbb9a8', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', 'fbd16485-f749-5246-808b-5adc5e361503', 50, 'g', NULL), +('a9cc2ead-2d35-54f8-bd6e-24ff46ced269', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 1, 'trái', NULL), +('6ba6d2d6-9fed-54a3-9de9-38e6fae466a4', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('3137355d-0d7c-5cae-ad3a-fb632e674a74', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 22.5, 'g', NULL), +('ec8c0d4d-a9b8-5019-a903-0e957e2e08dd', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 7.5, 'g', NULL), +('026cd003-9e67-510e-bdc9-ce034b7242b7', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 10, 'g', NULL), +('0bb24499-e211-590b-bfcc-0d788824c277', 'c99a4302-538d-5cbf-89d9-2c46f57659e6', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('62933047-d787-50ac-9160-5a45de08686f', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', '197fd433-4561-5175-9f04-35ba4ae89b68', 0.5, 'con', NULL), +('7cbc147a-792a-5240-bbd8-2db3f3454df7', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', '7e666b30-7a9f-58c2-8f0f-23d05b3f6b35', 100, 'g', NULL), +('57f7d105-deeb-5b74-b217-8aa0b63d90e6', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', '8c0c2675-bbd6-53a0-8866-ba8a18cd79e6', 100, 'g', NULL), +('7550b037-7ec6-5e20-9097-ad027f536981', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', 'ea000042-1111-2222-3333-444444444444', 1.5, 'củ', NULL), +('d4001bc4-3400-5da5-a7de-76174a866637', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', '03cdcbd3-eb4b-51f3-a509-442fa4f83a1d', 0.5, 'củ', NULL), +('24be96f3-f676-5df7-8411-7bbe53d43aa0', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', '81018087-374c-536e-ac9e-380b6bce6b41', 1.5, 'cái', NULL), +('0436bcb6-0ddd-5592-b19f-82d3bbe91765', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('7ab5a52f-c5ea-5099-ae29-5ac6f55818d3', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', 'dfb3e5d4-7ed2-5cda-b155-2ee5c3e37a7a', 15, 'g', NULL), +('c085faa1-c1e1-5bac-bdf1-6f70d57c7dcc', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 20, 'g', NULL), +('bdd75a4f-a6cc-5414-9fcf-90b93dbeacdd', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', 'af2bc91a-1e49-5c64-97c3-866397e23213', 2, 'g', NULL), +('dace5e70-daec-5b39-97aa-ffd04cbc8600', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 2.5, 'g', NULL), +('6e749691-a0fd-5db8-935f-e25c9a68b989', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 7.5, 'g', NULL), +('50e7e814-8c4b-5296-bc23-4280b83355ba', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 15, 'g', NULL), +('3f8f6008-5e39-51da-a11d-a9282a7bf037', '2a658e7f-547e-5b2b-820e-4d9cdcfa3fcd', 'db2e184c-1548-5fc7-9771-0175a87a3b64', 0.75, 'chén', NULL), +('e133dd03-3c90-50c9-aad3-4b3d974ea1b6', '60c772f2-f627-5803-9913-70c32796d57b', 'da18f0fd-cf75-58fd-a651-8336ecf2f4da', 200, 'g', NULL), +('4feadb09-209c-5a1e-b3b4-951e18deb3ab', '60c772f2-f627-5803-9913-70c32796d57b', '288e2c53-d0ac-54c7-bd51-c3216933933b', 200, 'g', NULL), +('b0024bd8-2b9f-5f77-8e75-caf189392a92', '60c772f2-f627-5803-9913-70c32796d57b', '2e8312e1-e835-5cfa-b418-c8c0872e7aa0', 3000, 'ml', NULL), +('d01fa780-4a5e-5487-8381-202be095f313', '60c772f2-f627-5803-9913-70c32796d57b', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('7697d618-478f-5835-b77e-aa2a7017ad6c', '60c772f2-f627-5803-9913-70c32796d57b', '82a3905c-2967-58e7-9018-75fa7cdc57d3', 2.5, 'g', NULL), +('5a822a60-54fd-54fb-a87c-329986f75f2d', '60c772f2-f627-5803-9913-70c32796d57b', '1ab2a26c-0da4-5f8e-ac69-7deaf0d9737b', 30, 'g', NULL), +('06974797-6832-5461-8c0f-d517d76ed533', '60c772f2-f627-5803-9913-70c32796d57b', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 0.75, 'bắp', NULL), +('38acc35f-b339-53db-88c8-48fda218bfaf', '60c772f2-f627-5803-9913-70c32796d57b', '21256138-c99f-5b07-9b64-cf44702a8048', 2.5, 'g', NULL), +('c6c4dc1f-d97e-5db1-bf37-0472f5518dd4', '60c772f2-f627-5803-9913-70c32796d57b', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 2.5, 'g', NULL), +('48e758dc-a52b-55ed-860c-a957072ee85c', '60c772f2-f627-5803-9913-70c32796d57b', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'nhánh', NULL), +('5190f637-cece-519f-97a1-6dca2761fb42', '60c772f2-f627-5803-9913-70c32796d57b', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('11050a94-b222-5414-a0af-9a657860f12b', '60c772f2-f627-5803-9913-70c32796d57b', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 20, 'g', NULL), +('b4bff6c2-f996-55a9-bbcd-38e0b01ed380', '60c772f2-f627-5803-9913-70c32796d57b', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 15, 'g', NULL), +('7f26cb23-af95-53ca-b726-eb279441ffcd', 'a40de972-1fe3-50ff-909a-573e1a34e855', 'cf7fa287-4c62-5caf-8393-001028d03360', 300, 'g', NULL), +('8ecd1673-d03a-590b-8c10-e259b26ebb51', 'a40de972-1fe3-50ff-909a-573e1a34e855', 'deb0eef5-7216-51ca-a2e1-c36844e5f907', 600, 'g', NULL), +('7f26ae7c-410a-5db7-8c55-27a7f91ad97e', 'a40de972-1fe3-50ff-909a-573e1a34e855', '058dd291-12c7-52a4-812b-b55c0e2bd1c2', 100, 'g', NULL), +('5de4f751-3270-54e8-aa26-632a555b3655', 'a40de972-1fe3-50ff-909a-573e1a34e855', '60318bd8-9102-50a4-9b01-1fca66851017', 100, 'g', NULL), +('3ccf5790-c4e0-55d8-93e4-3a821d88c204', 'a40de972-1fe3-50ff-909a-573e1a34e855', '289c9228-be9b-5cca-a1f2-c8c0b4b741ff', 50, 'g', NULL), +('80940c9f-eabf-5475-a74d-15b934a9e58a', 'a40de972-1fe3-50ff-909a-573e1a34e855', 'ea000025-1111-2222-3333-444444444444', 50, 'g', NULL), +('aa2f3d29-9423-556e-a1a9-c8050d0eae79', 'a40de972-1fe3-50ff-909a-573e1a34e855', '5f52b3be-1f77-54e3-9083-16eef9fff3bf', 50, 'g', NULL), +('60ebfab7-8e35-503e-9b17-8741d59574dc', 'a40de972-1fe3-50ff-909a-573e1a34e855', 'ad701cb7-ec79-5b26-8866-792eba06a7b3', 50, 'g', NULL), +('f034b81c-ddd8-5ad8-8687-ec727599dc90', 'a40de972-1fe3-50ff-909a-573e1a34e855', 'd0fbfe83-7811-5254-a74f-6fbf80b99480', 50, 'g', NULL), +('4e23284e-f516-5db9-8401-854c7a1c4c1d', 'a40de972-1fe3-50ff-909a-573e1a34e855', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 30, 'g', NULL), +('3ec6e209-270a-5e07-b270-1d26d58fddd7', 'a40de972-1fe3-50ff-909a-573e1a34e855', 'a73c9fa5-ca63-50ea-a11e-bad792c9c9bb', 54, 'g', NULL), +('98fbc7c2-c5e7-56ae-a942-636a65029d05', 'a40de972-1fe3-50ff-909a-573e1a34e855', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 15, 'g', NULL), +('69361a75-8f6c-5143-be2a-0c2297d92327', 'a40de972-1fe3-50ff-909a-573e1a34e855', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 2.5, 'g', NULL), +('17cd3e45-82cc-52a7-a7d6-657cf8682e11', 'a40de972-1fe3-50ff-909a-573e1a34e855', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 10, 'g', NULL), +('00ebfab0-d484-5088-b1c5-6b55f153b24f', 'b63e91ad-9ba1-556c-acdb-ae2c5213fcb2', '18d08bf8-b23f-5018-b6a5-c43a9f60a81f', 600, 'g', NULL), +('2ddb88d6-dc1e-5535-a687-58a4cfb7f287', 'b63e91ad-9ba1-556c-acdb-ae2c5213fcb2', '11769a0a-4d22-5096-bd4c-4d25ef5d796f', 1, 'bó', NULL), +('cefdf3f8-6775-5dd5-8c1d-45a43a278103', 'b63e91ad-9ba1-556c-acdb-ae2c5213fcb2', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 150, 'g', NULL), +('09965cda-abfa-5e96-939b-4145246ac303', 'b63e91ad-9ba1-556c-acdb-ae2c5213fcb2', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 10, 'g', NULL), +('52c82555-c171-5286-a37d-0096178e35a5', 'b63e91ad-9ba1-556c-acdb-ae2c5213fcb2', '3e2f7780-8acc-5e47-8d2e-78853dadcd3b', 7.5, 'g', NULL), +('a187c5a6-5029-5193-a5e7-bf3036495626', 'b63e91ad-9ba1-556c-acdb-ae2c5213fcb2', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 1, 'g', NULL), +('b09b1a2c-3132-5fb6-8226-071ec390d942', 'b63e91ad-9ba1-556c-acdb-ae2c5213fcb2', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 7.5, 'g', NULL), +('8b36c9ff-12ea-5a16-8820-62b86d8c1cb2', 'b63e91ad-9ba1-556c-acdb-ae2c5213fcb2', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2, 'g', NULL), +('7af14ac8-a7bb-59d0-a5a9-64624314b2b4', 'b63e91ad-9ba1-556c-acdb-ae2c5213fcb2', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 13.5, 'g', NULL), +('02e369ed-93ac-5dd7-9ac1-5425cf863b28', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', 'e3ac931a-da22-5606-a475-47a0b80a07ee', 700, 'g', NULL), +('62729c84-6175-58b3-b6fc-860511131bf8', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', '82a3905c-2967-58e7-9018-75fa7cdc57d3', 30, 'g', NULL), +('76dbec3b-c9b3-541b-adb5-234a9e89f0c0', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', 'e0a84ef6-27fc-5720-87c5-e374e7d52ea5', 100, 'g', NULL), +('b086637f-1ec3-5ffd-9435-43b2a39577d2', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', 'ea000042-1111-2222-3333-444444444444', 100, 'g', NULL), +('239adf8c-658d-5587-9eb8-cb2efc1fbc2c', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', 'a48d650b-2fa5-57a3-bce9-7311b707ab69', 50, 'g', NULL), +('a8977073-7d0c-51a0-b674-6a2f914e62a8', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 1, 'trái', NULL), +('32ab241b-2a4e-54a8-8ab8-f61d4dc404a3', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', 'a0830a0b-a4f1-5a7d-8a2b-c73f13ec0352', 50, 'g', NULL), +('1477b8a0-a395-504d-9bf5-869b6d8b7911', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', '97258277-5aa8-5522-97b9-dbcd44a2c377', 45, 'g', NULL), +('bfcd6e9f-86bc-54d6-b1e3-28750a605890', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 10, 'g', NULL), +('e06bd5b4-8d12-5994-98a2-1cbc4cf5402b', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('3ab42b50-91ed-560b-8079-bb5cbc9c71b0', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 30, 'g', NULL), +('9d26cc7c-cab6-556e-8cef-b0f97b2f7191', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 15, 'g', NULL), +('5576c8d7-e8ed-5c61-a55a-45ad47b55ce8', '04d8cdf5-35e3-5fba-a5c0-ed430bbcb7cd', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 22.5, 'g', NULL), +('3a7eed86-cdf0-5350-928c-61deebb0f225', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', '43f07fe6-a1df-5592-b81b-a3609f133b7c', 400, 'g', NULL), +('faa05aa7-9f9e-5458-b8b1-49dd4996a8cd', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', 'ea000025-1111-2222-3333-444444444444', 40, 'g', NULL), +('fad06592-acdb-57d6-8755-a163934a5905', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 100, 'g', NULL), +('2f9492f5-0c98-5373-b1a8-ed24c7298445', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', 'b3b2c540-f470-5301-8d26-2a9e6d136660', 100, 'g', NULL), +('01333155-842c-560a-84d2-069087239d82', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', '291603b6-d350-53ad-ba0f-1bc13bda04ba', 5, 'g', NULL), +('aab97b05-ec9a-5124-8710-8388835da27b', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('66db5f57-d30f-57fc-b9fc-540e0a42b901', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', 'bb527379-88e9-5ef5-8fc6-bc210accb6a0', 10, 'g', NULL), +('c9791c9e-d4af-58d6-b7ef-99f7c09ba3e0', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 15, 'g', NULL), +('fc903969-9909-5336-82ed-df2fd3a5cc7a', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', 'f2da94e5-efba-5853-b57e-8aba2f13ca48', 15, 'g', NULL), +('dbf66ddb-fa5a-5a5b-a1a1-7c316a1e38e0', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 10, 'g', NULL), +('1beac047-d834-557d-836c-e0c16b3ae658', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 22.5, 'g', NULL), +('a7411ed3-8e76-5021-ac85-c8ff29dd9bce', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', '1e27539b-7e79-5894-89aa-45939cd64a93', 10, 'g', NULL), +('c0e128ef-afd2-57ec-8c53-86cc1fc37562', 'e00e4a58-e47c-549c-9be7-5e1a828a2735', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 10, 'g', NULL), +('e6276251-6e29-5190-97ee-37503c7eee16', '0400002c-9b01-51b3-aebe-11b6503254fd', '5f8ff4f4-608e-51d6-81e7-539bafd6d54e', 300, 'g', NULL), +('3b6f53c6-ed7f-55a1-bff8-4521c07a9b8e', '0400002c-9b01-51b3-aebe-11b6503254fd', '152109fb-25ac-55cc-ad5a-341010f2bb98', 600, 'g', NULL), +('e278f58d-0c51-5c2d-b882-a454800c798e', '0400002c-9b01-51b3-aebe-11b6503254fd', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 15, 'g', NULL), +('794b8ee3-95dc-55cf-b5e8-a0f38ed4a131', '0400002c-9b01-51b3-aebe-11b6503254fd', '17c517a4-0f06-5590-91d4-2f08b8be2fa3', 50, 'g', NULL), +('64ba5384-3f92-5a1e-8040-173553c34e6a', '0400002c-9b01-51b3-aebe-11b6503254fd', '71e11e1b-3b44-5c51-b066-a26ba5a70c37', 5, 'g', NULL), +('7350fd3c-09e9-51de-8480-bc94519a7e51', '0400002c-9b01-51b3-aebe-11b6503254fd', '45f73e8d-8416-599a-887f-9156c0f6b1cb', 37.5, 'g', NULL), +('56d62282-1d9c-556e-bf7a-97a998bb34a2', '0400002c-9b01-51b3-aebe-11b6503254fd', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('7afa4fe0-f2de-5a23-91c1-90921b952a98', '0400002c-9b01-51b3-aebe-11b6503254fd', '75241a41-9d99-5e76-adc0-48a50b364e95', 15, 'g', NULL), +('372871bc-52eb-5393-990c-b731e3dd1af2', '0400002c-9b01-51b3-aebe-11b6503254fd', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2.5, 'g', NULL), +('a0036f52-d291-5361-98db-6f2576ed0c3a', '0400002c-9b01-51b3-aebe-11b6503254fd', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('4068bfe7-ffe0-542d-83d1-c4b161f2884d', '0400002c-9b01-51b3-aebe-11b6503254fd', '99a78ed3-82eb-5862-8011-e56cc4611f01', 10, 'g', NULL), +('a431bb76-c83a-5b31-be6c-da555fb0fe97', '0400002c-9b01-51b3-aebe-11b6503254fd', '86eda42e-989d-5587-8f1d-96a2d9416a85', 30, 'g', NULL), +('7677a300-a339-5d95-a583-7a200410e8cf', '0400002c-9b01-51b3-aebe-11b6503254fd', '21256138-c99f-5b07-9b64-cf44702a8048', 1.25, 'g', NULL), +('f03244a7-6c4a-505f-8fc0-c60dc1953961', '0400002c-9b01-51b3-aebe-11b6503254fd', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('8f6d240b-647e-563e-bbbf-0ba7b41b539c', '2c4b2aef-1d13-50af-98b9-589d647a7f30', 'a6c33948-38d4-544d-a015-4f2c59156743', 44, 'g', NULL), +('ac7d0e06-ebf1-5a2d-bed8-0def0ed1e3c7', '2c4b2aef-1d13-50af-98b9-589d647a7f30', '8377aefd-c35f-5cb1-ab1e-4f77e554c04f', 200, 'g', NULL), +('bb600cb5-7c93-52e2-b138-3ceddad56417', '2c4b2aef-1d13-50af-98b9-589d647a7f30', 'b90ef9fa-1f27-5550-9c5b-0065d29a2b7c', 4, 'g', NULL), +('d419a1a8-5514-5fd5-ae13-cc3a3e011e44', '2c4b2aef-1d13-50af-98b9-589d647a7f30', 'fd1e99f3-c575-5e68-b7aa-5ef8eae8ee2d', 20, 'g', NULL), +('a4628982-fc9e-5537-b874-d1165e892b80', '2c4b2aef-1d13-50af-98b9-589d647a7f30', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('6e2fd54a-f104-5f82-8624-8739c1b11bef', '2c4b2aef-1d13-50af-98b9-589d647a7f30', 'ea000037-1111-2222-3333-444444444444', 5, 'g', NULL), +('4cf7b776-181e-57e3-a360-b14401ab39c7', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', '165e5f2a-cc3d-5062-a0a3-21ced5cd90c3', 200, 'g', NULL), +('2c5ef5ce-11f1-540c-86d7-f96b764bba16', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', 'b3b2c540-f470-5301-8d26-2a9e6d136660', 80, 'g', NULL), +('8c0aff6f-f2c9-506b-8e3f-87be4ca5837a', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', '27e88dce-3658-5493-be20-5f4bfbaa5a9d', 100, 'g', NULL), +('67e0a842-e529-5560-a7f1-cf854a8228de', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 30, 'g', NULL), +('ed942bbd-976b-5623-a0bd-e153829bf8b9', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', '03cdcbd3-eb4b-51f3-a509-442fa4f83a1d', 20, 'g', NULL), +('73485a28-2679-557c-8f4f-c6a2d143fbf5', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', 'ea000042-1111-2222-3333-444444444444', 15, 'g', NULL), +('e858ce10-3142-5f56-a02d-f7b2101eb30f', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', 'f6080ac8-739e-5a97-8faf-e25a7afe7bec', 5, 'g', NULL), +('fdd64410-d488-5ac9-8233-6b7ecaac2e94', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', '044a2f65-e063-58be-8e18-cfb020a5d1f1', 30, 'g', NULL), +('5dd25866-c9bb-5ebd-9474-501749cd5e10', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', '1dfd46f5-c134-5384-877e-6251caab3ae7', 1, 'cây', NULL), +('8b55b95e-71b1-58a9-8b6a-d447647c6941', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', 'e8d9cc0e-110c-5121-bc75-b17a006b32ab', 80, 'g', NULL), +('5160aa64-0876-5726-ab49-dd572fb755dd', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', '84932308-e499-5312-b8df-2cd6dc4aba35', 5, 'g', NULL), +('16375f4c-0fb9-5e8a-837a-b88b32b3877b', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('30935655-0a3c-5001-915c-9311947a58e8', '46880f86-ce0e-52fd-8a15-4a2e1ae1787d', '6ade04c6-5af9-59a2-b733-791c5e5927af', 5, 'g', NULL), +('42b06f46-b804-5e1c-9e61-bb9e4766759f', '7a829f9d-b10c-556f-8cb5-9f94843dbecd', '36044cfb-1667-5625-9982-0a1b41f3a316', 200, 'g', NULL), +('782fa305-241c-5f4c-a621-5b7945fbff77', '7a829f9d-b10c-556f-8cb5-9f94843dbecd', '152109fb-25ac-55cc-ad5a-341010f2bb98', 400, 'g', NULL), +('2c3a09ad-7b94-5f85-998f-698567f9da86', '7a829f9d-b10c-556f-8cb5-9f94843dbecd', '23e082ab-b2fd-51a1-b63a-dcbe21a5e034', 100, 'g', NULL), +('416cacd5-18ea-5474-b828-a6256146c2af', '7a829f9d-b10c-556f-8cb5-9f94843dbecd', 'ea7d99d0-548b-520a-98d3-9cce64abb929', 100, 'g', NULL), +('f2e7d494-8d11-5edf-a83d-01f872307dae', '7a829f9d-b10c-556f-8cb5-9f94843dbecd', 'ea000042-1111-2222-3333-444444444444', 100, 'g', NULL), +('c35ac07a-fa38-51f9-a4b6-3e234c230215', '7a829f9d-b10c-556f-8cb5-9f94843dbecd', '771d556c-e0c3-5473-93aa-8afb147eea8c', 100, 'g', NULL), +('75185c27-0875-5e11-b0fb-356257e8acfe', '7a829f9d-b10c-556f-8cb5-9f94843dbecd', '7b7c6ff4-090f-589b-a1ac-00f91efde738', 60, 'g', NULL), +('fc75d911-fe44-53cc-9616-862f86d36c9a', '7a829f9d-b10c-556f-8cb5-9f94843dbecd', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 7.5, 'g', NULL), +('d9a3d7ac-8e99-5a25-b127-f681cd863457', '675ac590-9803-5148-8a07-24221f56b884', 'f4c12ac7-30b7-5764-9d07-c03588cce3f2', 500, 'g', NULL), +('6d008f5f-12d1-56d8-bd6b-27f8094f0c46', '675ac590-9803-5148-8a07-24221f56b884', '9cbabcae-f6ae-5631-8508-d53587721693', 50, 'g', NULL), +('4a60a630-0780-5d61-88c2-fbcf77f29619', '675ac590-9803-5148-8a07-24221f56b884', '2a4314aa-00ea-5661-84cc-2ad4d9231986', 200, 'g', NULL), +('6e34fb9a-b596-512f-ae42-03602dd92652', '675ac590-9803-5148-8a07-24221f56b884', '645c333b-2324-5f21-8cef-18929c180feb', 100, 'g', NULL), +('8a027b3c-89bc-50a4-93f7-cfa51f41b9d3', '675ac590-9803-5148-8a07-24221f56b884', '2532c602-2103-51fe-be0d-bb49de949bad', 40, 'cm', NULL), +('e7b4e979-b074-5f3b-8df3-22718133c207', '675ac590-9803-5148-8a07-24221f56b884', 'ca27ea34-089f-51e4-bfa2-9071fee67daa', 80, 'g', NULL), +('f9db9226-b8ec-5a17-9414-3859dbc4dada', '675ac590-9803-5148-8a07-24221f56b884', 'db6f65cf-2e34-5d8e-861a-688f86322c2c', 80, 'g', NULL), +('5ffdb06a-e582-5766-9b4e-1c2afc42c3cd', '675ac590-9803-5148-8a07-24221f56b884', '6d834b0d-f496-5bb4-a097-e210a76f2171', 80, 'g', NULL), +('c74586bf-7c98-5939-9e11-f6d6dc64736d', '675ac590-9803-5148-8a07-24221f56b884', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 3.75, 'g', NULL), +('06263590-0ce5-5825-b4ca-953bf82ff0b8', '675ac590-9803-5148-8a07-24221f56b884', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2.5, 'g', NULL), +('a4ccf2e7-5f68-5602-9498-1abc91ca16ca', '675ac590-9803-5148-8a07-24221f56b884', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 75, 'g', NULL), +('8e725407-4459-5dbe-9da5-92ac6f750827', '675ac590-9803-5148-8a07-24221f56b884', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 15, 'g', NULL), +('0abf797b-be70-5edb-bec6-874cef1f0a79', '675ac590-9803-5148-8a07-24221f56b884', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 2.5, 'g', NULL), +('5bc82c65-a4e1-58cc-8668-99adb63a4163', '675ac590-9803-5148-8a07-24221f56b884', '41c6177e-4ab7-5db4-b88e-95911b643501', 5, 'g', NULL), +('4fc12766-f12b-5bc3-a1a3-0fa1b39f2b66', '675ac590-9803-5148-8a07-24221f56b884', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('e03e37fe-9ebf-511b-acc3-214fec97236e', '675ac590-9803-5148-8a07-24221f56b884', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('cc1f726d-cf03-59fd-aa92-cd9afc0b28f0', '675ac590-9803-5148-8a07-24221f56b884', 'cdc9b6f7-2af2-5cb3-bee1-ee516c43b335', 5, 'g', NULL), +('1e939ee1-df83-5445-920a-472a3527ed4b', '675ac590-9803-5148-8a07-24221f56b884', '9a61c2b5-63c6-5d47-b42a-2c823a6ee202', 5, 'g', NULL), +('a2d4dbd4-42d4-563f-94a7-dcc360695f8f', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', '952cd843-dd0e-5555-ac7b-5fdfb0616b0f', 500, 'g', NULL), +('02743c8e-4658-5749-9982-ed13c528b3d7', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'cọng', NULL), +('998478c8-fb9c-580a-b274-b8e612536f18', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', 'ea000025-1111-2222-3333-444444444444', 40, 'g', NULL), +('f9a0aa67-879b-5b13-94c7-29e838f1bf7a', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('623ddc58-0169-5367-b917-fa02dea28c67', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('140c242f-7681-580f-bef0-fa2726c88c06', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 15, 'g', NULL), +('302da0e0-0dd9-53b4-b555-2c06a4fbaf02', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('512061f1-0152-539f-9755-17e79b94c5c3', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('f3cefa06-606a-588a-94fe-1088a1d19b14', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 15, 'g', NULL), +('8046c2b5-c548-5418-b133-bb8fb74ef084', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', 'c5e4635b-2288-5b57-b2dd-2c1eb8eacbf0', 5, 'g', NULL), +('39703ba3-bf54-5915-9d6c-c32c66e89c8a', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('fab631b1-e0d4-5143-b6a4-390b236bd79c', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', '152109fb-25ac-55cc-ad5a-341010f2bb98', 20, 'g', NULL), +('27a96500-642c-558b-a5db-de6d4e7fce6a', '2721ff42-7a5a-58fd-9dac-0b8ff0619086', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('ab71cdf8-2209-5435-a93b-94356528dfc6', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', '8c5a7c39-87a1-53eb-b6bd-53720e3a4f42', 800, 'g', NULL), +('12019c83-bf60-50ae-a3bc-a9414bf0a6c2', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 2, 'nhánh', NULL), +('5b609f04-46d7-548f-bcfd-e2858cf36335', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', 'a6afeb5c-7f53-51b9-abf1-722ca8fa1e87', 400, 'g', NULL), +('249696cd-452a-53ec-a712-b77d89f41283', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('bfbabe8a-3d89-5031-b15f-379508da3821', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', 'ea000034-1111-2222-3333-444444444444', 15, 'g', NULL), +('55844a04-0a4a-542f-9a2b-0898e5d948cf', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'nhánh', NULL), +('7c7874d9-4288-56eb-ad00-3424f002a8f2', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 1, 'trái', NULL), +('7419b8c4-423c-5c70-8e3a-4d57c827903e', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', 'b2d624b7-88bf-5389-9572-25ce188893dc', 5, 'g', NULL), +('a111eb0d-7459-5b11-81a3-18868da70fd3', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 5, 'g', NULL), +('3aa3beba-9804-59d8-af28-6015a4e64474', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', 'c9db1763-4a06-59e3-9a02-0daa1c23d7ee', 10, 'g', NULL), +('e84dac63-93bd-52b8-87f2-cc2ef2ea5f94', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('a8ec1ffd-3c7c-513a-863a-a1461c2bcb54', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 10, 'g', NULL), +('8e699391-536d-5aff-bb75-59f9faeae2f2', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('72a6336d-7444-5baa-919d-278a4d1aed37', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', 'e222113e-eb60-50a0-960b-ac3c9b9d17d0', 100, 'g', NULL), +('43aff4de-c69b-56bb-b57e-caa672f38107', '5683ed5c-9d00-5caa-afe2-2356c7cc4167', 'cbed3aec-c819-5b48-acc1-13c7ed737d10', 5, 'g', NULL), +('5e245215-f216-5bcb-8961-408fd2880e97', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', '25f4e5f4-f971-5881-83ec-2d8cf1716906', 250, 'g', NULL), +('c9db7ed5-805b-57cb-8f2b-7301600c7b33', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', 'c00f36a2-52fc-5426-93a8-5f6d8fe54794', 200, 'g', NULL), +('b2188267-6b88-5043-bf06-27d226271f85', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('375d28f6-b187-5e83-a80a-577a62e01363', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('e46527ee-c803-5d2b-a5a9-b66a9d532796', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('bc060232-9d50-5cf9-b8c5-f14c39833524', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 15, 'g', NULL), +('5e6df009-d482-514d-8635-cf18129526f8', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', 'ea000024-1111-2222-3333-444444444444', 20, 'g', NULL), +('5f9cc5a5-b3e8-54bd-9ce2-21e01fd5ae76', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 15, 'g', NULL), +('3a6789ba-7520-539a-b791-c75d61e87233', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 2.5, 'g', NULL), +('f70725ae-38d1-5821-ad2a-0277e3faa52b', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('ec29d964-5329-56b9-a4f4-aba87c47fd1d', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', 'f4bb6b37-5068-534f-b6e5-703b8ceb3455', 15, 'g', NULL), +('921cb9f1-ccfb-51e9-9f9e-c435858e1543', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 1.67, 'g', NULL), +('91da3139-a866-5027-a96a-b22f471499b9', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', '030e505f-577b-5b8e-b74c-5798f2a471a0', 20, 'g', NULL), +('9bd2ec49-e3be-55b7-b116-86aa3f54718b', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', 'c6123924-fe43-526a-a802-18a7c2d3a69c', 5, 'g', NULL), +('54e635fd-369f-5fe7-9d1c-e0f5d869604c', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', '088d5a90-5899-5bc3-80ac-34f0ac34f19e', 5, 'g', NULL), +('6ba008fb-99c3-533f-8920-eded43a81b38', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('7740c62d-3bf7-5a4c-a970-defe01772d26', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('1245fd80-b6cf-5485-9965-f33c03e60fbf', '52c8212c-4b67-56dc-ba58-9edb9fa7af57', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('60c5fd74-3f62-5179-bb3c-532b1abba7af', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', '607befc4-eb51-5b51-9ce3-a50bcec4c1c0', 200, 'g', NULL), +('0188972c-c872-53a6-b3bf-0f3939f16f7f', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', '00003d5b-6c7e-52c5-8462-835b7f66855d', 3, 'tai', NULL), +('4be38b62-f797-561f-99c9-596d48e29ad0', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', 'd1ab6e4c-acba-5fe4-99cb-4ab205734096', 3, 'tai', NULL), +('14f5c9ea-9043-548d-8a6f-1347acdc3671', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', 'b82b90fe-4236-581e-81dc-404daa4cd0eb', 130, 'ml', NULL), +('b94753d6-3b2d-5e60-b768-0204be402a9f', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', '5afddcf1-f3bf-590e-9937-bb49300c4fd8', 2, 'chén', NULL), +('f663aa49-f36e-5cb0-85c4-20ab76a66556', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', '7d8bed93-7686-5645-928a-551847c4c287', 10, 'g', NULL), +('f81a64aa-21fb-5c90-81a5-74102cd1082d', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', '2434416d-0031-51fe-9db4-6faf9dbb7a81', 100, 'g', NULL), +('921b5cc5-ea8e-59e7-99b6-9ff536ed9232', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('45a5d4b7-f3cd-5539-966f-92ffd46c34d4', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', 'afbbac0c-67f6-5caa-b47a-46ea6002f1df', 3, 'ổ', NULL), +('b9912802-3123-541d-8858-e7d16d6037c6', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('056d06f4-cb1c-5ed2-b8f1-c1037267cc68', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('b6d83f8c-c591-57ba-b2a5-4aa34c1b7c93', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', 'ba3940bb-4b77-5d74-80cb-a42462a155e3', 15, 'g', NULL), +('34c67e79-6862-56c0-8f16-7f4378e8c1e5', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 5, 'cây', NULL), +('edb3f284-834f-590c-97a0-5d869b3a2201', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', 'b312b8b7-12e5-507a-95a6-d7835e7bc5ca', 20, 'g', NULL), +('c7d7a751-f01c-5446-bce6-50622c036720', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', 'ea000055-1111-2222-3333-444444444444', 45, 'g', NULL), +('ba37ef57-fc86-550d-b90d-03dfd021c937', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', '65f20e37-a808-55c5-aff4-a2c5729ad836', 5, 'cây', NULL), +('fa3e7492-5951-5455-9920-387dc4550205', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('92ab8f86-3bc2-558d-b4c4-a02201df9a59', 'b74a55a4-e366-5677-a9ec-6bb95b1b813c', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('14a7bacb-ba98-5d2c-aa67-367d59ad1f61', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', '47e4a935-7612-5796-a234-5dcbf61e3aa5', 200, 'g', NULL), +('1f9bd39d-09d2-5c59-93ac-5dc1d5a7f3ea', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', 'f4ce4761-9e74-577f-b82f-c8679ebfabd5', 150, 'g', NULL), +('d4ea4246-b293-5544-a0aa-261c534bf932', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', 'ea000057-1111-2222-3333-444444444444', 100, 'g', NULL), +('2d90a8b7-a834-5318-a87e-ab36f9a4de56', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', 'be1f13f5-af04-5fc6-945c-8c3493c38f1a', 10, 'g', NULL), +('236fd927-d19d-53f7-9df2-e30079737fa5', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', '38e53e71-2b53-56ba-bbcf-2b9ebdbe9b94', 5, 'trái', NULL), +('a92ff480-2585-55e8-88f5-5581a3e31183', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', '8d085d4b-0de7-5365-b9e6-82f74a03cef9', 1, 'cọng', NULL), +('30f4257f-7c86-56b8-92df-80177cdccdfb', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', 'dce1bb6f-bbe6-5252-a70f-7afa5b83a835', 200, 'g', NULL), +('b0fb6b2c-85e8-56eb-93a6-1de0993dde93', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', 'fc3b65a2-ae75-5d65-9f70-6157e317c167', 200, 'g', NULL), +('62f5d73f-9e84-599b-9a60-4fe473488bd8', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', '79efd86a-6394-5a8e-b9f8-a0b7d5931ae0', 150, 'g', NULL), +('25b7834b-682c-5870-b114-d3e08d48d07f', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', 'be669f28-0a52-5d28-ae17-4796f5aeb10a', 20, 'g', NULL), +('775d95de-7971-5fe5-af07-878403baffbf', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', 'c27eef97-5820-5a92-9eb7-afe0c31d4032', 100, 'g', NULL), +('79f2fe6b-a9e2-5a41-a9d9-9805183f3d59', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', '64f25371-ef62-59da-8a6a-8252cf96b96e', 20, 'g', NULL), +('c1fed5a5-850c-5f00-838a-2546b571e6b9', 'ae0d747d-873a-582c-821a-8ce0a4164a5d', '97312907-8f92-540a-a6ab-64327b7bc0b4', 5, 'g', NULL), +('4023431f-9806-56b1-87cc-c73b549ce0b3', '75844654-714c-5686-976b-f14fb5aec155', 'c0b5b242-c8d5-5775-aac7-e1c2250d42f0', 250, 'g', NULL), +('bb7729f9-0368-5d90-9ef4-78492fc8157d', '75844654-714c-5686-976b-f14fb5aec155', 'bdab64ef-8278-5e28-b96c-95704f7608a8', 50, 'g', NULL), +('9eabc541-60aa-5aaf-9ebe-404965cd576c', '75844654-714c-5686-976b-f14fb5aec155', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'cây', NULL), +('1c451524-f36a-5414-83c2-61c84fde9133', '75844654-714c-5686-976b-f14fb5aec155', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('b6503f8b-1eaa-5c04-85b3-c4dc44a9bbc7', '75844654-714c-5686-976b-f14fb5aec155', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 30, 'g', NULL), +('db5d8775-d585-54e9-81d3-d0a242a0859d', '75844654-714c-5686-976b-f14fb5aec155', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 3, 'trái', NULL), +('cecb9832-e023-568b-b6ae-75aabc7e0e7f', '75844654-714c-5686-976b-f14fb5aec155', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 10, 'g', NULL), +('0a1a3ed1-5a1a-5c41-9faa-f0677e3f4edc', '75844654-714c-5686-976b-f14fb5aec155', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 15, 'g', NULL), +('e919a18e-47dc-5973-83d6-d9d964dd4b9e', '75844654-714c-5686-976b-f14fb5aec155', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('2bd8548e-a506-5a04-9d01-af4951b00fd2', '75844654-714c-5686-976b-f14fb5aec155', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 2.5, 'g', NULL), +('d0b75136-3007-52f3-a409-d54bdae2c468', '75844654-714c-5686-976b-f14fb5aec155', '2d2141b3-b474-5126-9f88-857d504c7d16', 20, 'g', NULL), +('7995efa2-815e-57b6-bfad-a2e35c999e73', '75844654-714c-5686-976b-f14fb5aec155', '27a2b47b-2dcb-59aa-b8d9-b8c99cf7dd11', 20, 'g', NULL), +('64f16dfc-a1d1-5808-9c3f-a715792625c8', '75844654-714c-5686-976b-f14fb5aec155', 'ff195276-9070-582e-a972-c13feafbcf70', 5, 'g', NULL), +('9fbc84ee-5c62-5b54-9cae-de3f57d49dd9', '75844654-714c-5686-976b-f14fb5aec155', 'cc6e3292-5132-59e9-9914-e7b1952b2ad8', 100, 'g', NULL), +('b9f84025-49d8-5946-a73e-f60e45a3c110', '75844654-714c-5686-976b-f14fb5aec155', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('4283d18d-01ca-5109-9826-ce7ffd3b83e9', '75844654-714c-5686-976b-f14fb5aec155', '8aefd378-92f5-575b-8801-511d610bb7f6', 80, 'g', NULL), +('f98bb415-51d4-5ab7-9c17-ef52e99eabfd', '75844654-714c-5686-976b-f14fb5aec155', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('ba771e7e-6b1e-5df4-8e61-162686e77837', '8e571db1-cbce-5da7-9158-0ee896d5a66b', '72ddd845-7697-51f7-9029-16df74b3a929', 50, 'g', NULL), +('4a2023ee-8788-5d06-a1dd-ba136e878190', '8e571db1-cbce-5da7-9158-0ee896d5a66b', 'b13ad09b-c777-5794-aabc-f57170bba894', 200, 'g', NULL), +('fc1403bb-ad9c-5b66-8b47-3eeba2d37820', '8e571db1-cbce-5da7-9158-0ee896d5a66b', '281e6fca-f116-5d1f-b38b-7adb9f6c4c09', 100, 'g', NULL), +('5f6476b2-dfb0-5292-ac61-e94ea9ffde88', '8e571db1-cbce-5da7-9158-0ee896d5a66b', 'ea000042-1111-2222-3333-444444444444', 25, 'g', NULL), +('756276a3-88b1-59b7-bd05-f048e39bf78c', '8e571db1-cbce-5da7-9158-0ee896d5a66b', 'e885a4ab-d856-5b71-9312-11c823ebcb84', 300, 'g', NULL), +('6652226c-d19c-5c20-888c-7f553d17176e', '8e571db1-cbce-5da7-9158-0ee896d5a66b', 'ea000007-1111-2222-3333-444444444444', 100, 'g', NULL), +('f1746226-eae8-5309-879a-f0a98b4f3799', '8e571db1-cbce-5da7-9158-0ee896d5a66b', 'b0a4b9d7-c6c6-556b-839f-35232eded1ba', 1000, 'ml', NULL), +('9e45189c-b705-53bb-8630-edd53fa39be2', '8e571db1-cbce-5da7-9158-0ee896d5a66b', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 10, 'g', NULL), +('26a99ab0-81c7-5b75-aded-9650fb936f71', '8e571db1-cbce-5da7-9158-0ee896d5a66b', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 2.5, 'g', NULL), +('a3c9102d-6805-53b3-91b3-5ce9f99ab39f', '8e571db1-cbce-5da7-9158-0ee896d5a66b', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 45, 'g', NULL), +('1b03ac0a-774c-54bf-84a8-c4907d9ea3c2', '8e571db1-cbce-5da7-9158-0ee896d5a66b', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 15, 'g', NULL), +('154bdfc0-45cf-5491-a7b9-ffd029aec3e5', '8e571db1-cbce-5da7-9158-0ee896d5a66b', '945dd726-5f35-5633-8a50-80221ee31e03', 22.5, 'g', NULL), +('b66d6f76-d511-54f3-bcbb-71c027a8fbf2', '8e571db1-cbce-5da7-9158-0ee896d5a66b', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 5, 'g', NULL), +('49dc68e7-6421-5c06-ba8a-ec75315f1224', '8e571db1-cbce-5da7-9158-0ee896d5a66b', 'c11dc748-780d-556f-9599-703a1dfcd799', 3, 'nhánh', NULL), +('07b339e5-6fc5-5a26-bb32-9f1c0cbb3a30', '8e571db1-cbce-5da7-9158-0ee896d5a66b', '6ae905d7-01a5-5f56-bd9a-85f1d8f4a4f0', 5, 'g', NULL), +('3c184585-fa0e-5aaa-98a8-a2375b24af07', '8e571db1-cbce-5da7-9158-0ee896d5a66b', '2d2141b3-b474-5126-9f88-857d504c7d16', 20, 'g', NULL), +('5bf23653-34ec-5a28-abbd-7dddab2be712', '8e571db1-cbce-5da7-9158-0ee896d5a66b', 'c9b8aaeb-119c-545d-bcc8-e7a6e4ea72cc', 80, 'g', NULL), +('b615bdb9-ac88-5070-a6d7-0f98baba3aec', '8e571db1-cbce-5da7-9158-0ee896d5a66b', 'b3cb2a05-6c04-5991-8d95-0cd85016bc34', 80, 'g', NULL), +('912db961-42ef-5577-ad19-58cdd89f2d5e', 'dfbc86e2-2348-529d-83da-12e3ff813232', '79efd86a-6394-5a8e-b9f8-a0b7d5931ae0', 250, 'g', NULL), +('063b14ae-7944-5466-9135-e743be995fc1', 'dfbc86e2-2348-529d-83da-12e3ff813232', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 20, 'g', NULL), +('5710008e-cd63-5ed8-93dc-eb7bea635763', 'dfbc86e2-2348-529d-83da-12e3ff813232', '23267bd3-8cad-5000-b2cb-c4d43c8be065', 500, 'g', NULL), +('14578e0a-b31a-58ed-8c9f-6f1e34359135', 'dfbc86e2-2348-529d-83da-12e3ff813232', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 37.5, 'g', NULL), +('4723bfc6-22c2-5039-bf61-0fde6d6c94bf', 'dfbc86e2-2348-529d-83da-12e3ff813232', '71309de6-09e6-5cb4-8274-3c2f5f2770bc', 6, 'g', NULL), +('365bf224-1d0b-5abc-aa5a-2e52a9ae5352', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', 'ea000010-1111-2222-3333-444444444444', 150, 'g', NULL), +('4285c7aa-d7c4-5fda-a903-7c80d0e2f139', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', 'e3e12474-62a6-58d7-97eb-ef9631f10697', 60, 'g', NULL), +('fccb4378-f9bb-5e0d-b6e0-242dfecda598', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', '1a76e495-e8c2-5e3e-873b-7cfd4109adb3', 30, 'g', NULL), +('a2d57486-cbff-571f-9e57-c3715aecd506', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', '38e53e71-2b53-56ba-bbcf-2b9ebdbe9b94', 30, 'g', NULL), +('1a5abc03-da30-503c-be42-f5a8b5e59665', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', 'd1ab6e4c-acba-5fe4-99cb-4ab205734096', 30, 'g', NULL), +('eb84ee3b-1791-53e3-a609-fc868d5ed4df', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', 'ea000042-1111-2222-3333-444444444444', 30, 'g', NULL), +('1f8f3ffa-ae3d-5c6c-a904-2dd47b816564', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', 'ea000025-1111-2222-3333-444444444444', 30, 'g', NULL), +('c029a350-068c-5fc0-8a4f-b63f2a87324f', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 1, 'nhánh', NULL), +('2e90cb87-5446-5235-b257-57436cecefcf', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', '895657ca-7a96-5c5a-9374-5a9a725087e6', 20, 'g', NULL), +('be3ae855-4078-530d-b923-7c6ec991c187', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 10, 'g', NULL), +('8836184e-09e8-5f5c-938b-7639930f3773', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 10, 'g', NULL), +('c6696b44-8470-5fbc-b2da-9f83bc6162e5', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2.5, 'g', NULL), +('f44129f7-b944-54d6-9e2e-af65834dfb9a', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 10, 'g', NULL), +('948fbe9f-5783-5a3a-b6ba-448d65407891', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 15, 'g', NULL), +('43e309ad-a169-5e6a-a6e3-e77115fc8b65', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', 'e599e212-c4e7-507c-a3fe-9704649a9794', 5, 'g', NULL), +('840c7869-8292-5bec-a32a-76ff6488883a', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', '42d45f17-18c3-5d7e-9654-43a5c13782ab', 80, 'g', NULL), +('07909ada-b70c-5ed2-98d7-4f8d6b0c116d', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('ea72057f-ed9f-508a-b2f0-391d9ad3a3ce', 'aedead08-dd13-5cae-9c15-4108dbf55ac1', '9ee772eb-bb6f-559f-9a82-1d973da099bc', 20, 'g', NULL), +('ea0242d1-370f-59ac-bef5-14da89fce56b', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '0a57db2d-c90a-502f-b3b4-75a09401eb1e', 300, 'g', NULL), +('963a1c94-04ce-52f9-8f6b-4815ccdc5f03', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '7e666b30-7a9f-58c2-8f0f-23d05b3f6b35', 50, 'g', NULL), +('5b623b31-d927-5668-87c7-899c7bd61142', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '5fd44726-6889-508f-b395-472ebbd28797', 100, 'g', NULL), +('1bff18cb-ef60-5bcc-8412-929951009826', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '84b9602f-6a87-512c-8655-44a2cc226d46', 84, 'g', NULL), +('0fa0cb96-7c83-5cf4-bbd4-c05b4d48ada2', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '03cdcbd3-eb4b-51f3-a509-442fa4f83a1d', 47, 'g', NULL), +('acf422b9-337d-581f-a076-e9fb931c04b1', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '9ecd1bb8-ab91-5552-9062-6e06f77c14b0', 80, 'g', NULL), +('3a503a4b-7ba9-57b5-9456-16fda7b405ad', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', 'b98fe1b1-a832-590c-af49-51ef8bb51756', 1, 'quả', NULL), +('43306c6e-c4f1-5d62-9217-dc64867e3911', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '75241a41-9d99-5e76-adc0-48a50b364e95', 22.5, 'g', NULL), +('a5466c15-4cee-571f-b229-c7a90fead4fb', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('8b2497ed-d875-5b86-a1da-e9bedc30964a', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', 'bb527379-88e9-5ef5-8fc6-bc210accb6a0', 7.5, 'g', NULL), +('65624c89-0c1d-58f1-ab51-3c3363382a52', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 2.5, 'g', NULL), +('d31c4559-a506-58ee-a373-531d4cd64571', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 7.5, 'g', NULL), +('be521423-1812-5b64-8352-8fb309b63ceb', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '7567abf1-f0c0-5fff-b414-ee5be6bc8f98', 30, 'g', NULL), +('08a3d807-b97a-554b-a4c8-ad6b25019b58', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '21256138-c99f-5b07-9b64-cf44702a8048', 1.67, 'g', NULL), +('0b4cf096-608a-5c2b-8b4a-9efdc25e1977', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '8d272d83-ec20-5335-a465-bb7fb17c16ec', 21, 'g', NULL), +('326b2b99-501c-5e18-b550-0cac4f629357', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '60abf488-564e-56ab-9aaf-e1c416e24c2a', 10, 'g', NULL), +('733c0c8e-7743-5f77-b08e-d8fedd38195e', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 7.5, 'g', NULL), +('260d0067-3e53-5477-8937-c5f580261001', '9e2c6861-1ee7-5c49-9ad0-63e6538c02c4', '5a4f6c65-74eb-554f-869e-9e7a17cf511d', 20, 'g', NULL), +('17e8096f-3e7c-5298-abae-b3f472fd1388', '0ac07414-54c6-5508-b875-26e9572e99f9', '4041cbba-d25f-562d-a1fc-42453db08cf1', 300, 'g', NULL), +('8de27c6b-b40d-5737-a216-0d04106bb3c9', '0ac07414-54c6-5508-b875-26e9572e99f9', '86eda42e-989d-5587-8f1d-96a2d9416a85', 20, 'g', NULL), +('7881cefa-5bee-5add-9ef8-9763399e94cf', '0ac07414-54c6-5508-b875-26e9572e99f9', '8a216df6-d053-5fcd-8d46-92cb41669b35', 10, 'g', NULL), +('848b2b7b-a262-5ca1-872f-92c22f1a3dc8', '0ac07414-54c6-5508-b875-26e9572e99f9', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 25, 'g', NULL), +('bc56437e-5ff5-5ddd-953c-48cd25b9658c', '0ac07414-54c6-5508-b875-26e9572e99f9', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 5, 'g', NULL), +('3d290869-814b-509a-b10c-c966dfd99a69', '0ac07414-54c6-5508-b875-26e9572e99f9', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 30, 'g', NULL), +('c6539866-7471-5718-b20e-ed2b7d984627', '0ac07414-54c6-5508-b875-26e9572e99f9', 'f4bb6b37-5068-534f-b6e5-703b8ceb3455', 22.5, 'g', NULL), +('6186cfeb-e484-5a19-b5b8-0a5e77000ef7', '0ac07414-54c6-5508-b875-26e9572e99f9', '8aefd378-92f5-575b-8801-511d610bb7f6', 5, 'g', NULL), +('437f2af7-d56e-548d-b61a-db4bab21a004', '0ac07414-54c6-5508-b875-26e9572e99f9', '21256138-c99f-5b07-9b64-cf44702a8048', 1.67, 'g', NULL), +('eb418dbb-d923-565d-b814-df59d90c3070', '0ac07414-54c6-5508-b875-26e9572e99f9', 'b2d624b7-88bf-5389-9572-25ce188893dc', 30, 'g', NULL), +('1c334ee9-d608-5386-8c0c-db9c8ac3ba50', '0ac07414-54c6-5508-b875-26e9572e99f9', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 15, 'g', NULL), +('a7d51144-8cc9-5735-9f0b-e88f64e9b729', '0ac07414-54c6-5508-b875-26e9572e99f9', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 10, 'g', NULL), +('48fed49c-2cc4-5209-b864-314fd3c94f0a', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', '4c654ae6-ab48-5893-b896-63c2ad5dabe1', 400, 'g', NULL), +('c5ffa572-54e2-5156-8d30-e16def4cd558', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'cọng', NULL), +('b7c1c7d1-067f-5cb1-ac19-65ea8aee654b', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', '1dfd46f5-c134-5384-877e-6251caab3ae7', 2, 'cọng', NULL), +('961b9ce7-6317-5744-8c4a-db662dcace45', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', 'ea000004-1111-2222-3333-444444444444', 55, 'g', NULL), +('4f7012ba-c7ea-55bb-b8ea-2ef9b460216b', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', '99157107-8cbc-5715-97f1-620017377993', 5, 'g', NULL), +('f111ecbd-3c70-5dfd-9690-b9388c0bc738', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 84, 'g', NULL), +('8b991ea3-b6af-5c07-aced-230a7b4e8f7b', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 15, 'g', NULL), +('94d3ea21-0dc4-51f6-a326-ec33c4921b8d', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', '4fd889a8-3315-5c06-851d-6c90b87679ef', 30, 'g', NULL), +('ecac1906-da77-5244-b962-6b54d1aa1918', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', '21256138-c99f-5b07-9b64-cf44702a8048', 2.5, 'g', NULL), +('43f740be-72db-56f3-b764-16f10cd1cdf8', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 10, 'g', NULL), +('9672f741-9660-5d9b-8939-252ddd9f5a00', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('a094a22c-42d4-548e-a0af-1e8d4c5645fd', 'b818de6b-9db6-5482-88a5-e1fdabcf8565', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('0100ffd2-11a5-54f8-baea-345ba3ce8304', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', 'a38e235d-b34f-5245-b670-7971df44045f', 500, 'g', NULL), +('3ca7af33-dd0a-572a-9f10-a9437d0b9a87', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', '27d6a45d-cf9b-5edb-bdd6-81ee0e70974f', 1, 'chén', NULL), +('44547f3e-a585-5105-9c81-d7045e918068', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', 'ea000034-1111-2222-3333-444444444444', 30, 'g', NULL), +('bc8cca82-49ee-54cc-98ad-f024dab81d3b', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 5, 'g', NULL), +('a9b9aa81-64c4-5aaf-ad85-678969be43cb', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', '52b94f69-9958-57e3-ad4a-e3f3c4e80d47', 200, 'g', NULL), +('beb732cb-a12a-585d-a7de-4bc843cb7435', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 500, 'ml', NULL), +('47314935-fdea-587a-973d-b4b3a20d2d40', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'cọng', NULL), +('28a86553-a870-56a0-93e9-bb009d63531d', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', 'e789a65c-00b9-5b74-b83c-65df716aafe1', 2.5, 'g', NULL), +('9d008588-5c9a-5b9d-9019-ad367f3f5f47', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('e7e5494a-6820-5e4e-a550-be6839eac56a', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('45ae52e1-c36f-5e27-8295-929e2103c319', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('c0cf0788-544d-5207-be03-abc71025f170', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('a87af3c7-b282-52e3-a86f-bcee81569aa7', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', 'ccfe2cc5-c6f4-5f2c-bf2d-4709c070332a', 100, 'g', NULL), +('ece2af03-7059-5d02-aac2-d62eb940104b', '9c00e524-6497-5b1b-b8f4-5fff05f4a201', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('95e3ce17-16dc-57d9-a453-9ffb6987e730', '12a522da-90b8-52a8-9033-b3e2294414df', '6c1ec9f9-0406-5616-82a9-9082034cc0f8', 200, 'g', NULL), +('43d0a9d9-3b25-5750-9632-3b71459aa43b', '12a522da-90b8-52a8-9033-b3e2294414df', 'ea000025-1111-2222-3333-444444444444', 30, 'g', NULL), +('63def6b2-6182-5c6a-9b11-77ebf773f3f5', '12a522da-90b8-52a8-9033-b3e2294414df', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 1, 'cây', NULL), +('23be3f52-499f-5dc4-b39e-908ab6929e01', '12a522da-90b8-52a8-9033-b3e2294414df', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 1, 'trái', NULL), +('93f66bab-abc7-58a9-9969-25e9bf38a383', '12a522da-90b8-52a8-9033-b3e2294414df', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 5, 'g', NULL), +('e3e75c25-14c7-59f7-af3b-5964711040bf', '12a522da-90b8-52a8-9033-b3e2294414df', 'af9ce6dc-d6c2-5483-ad05-4de440ba20fe', 1, 'g', NULL), +('481d5458-b33b-56b3-8831-14127be5d33f', '12a522da-90b8-52a8-9033-b3e2294414df', 'eaf1ffa0-44d9-5213-bf92-f14c9ba83da1', 5, 'g', NULL), +('f551ca29-ae95-538b-bb17-18249ac512e0', '12a522da-90b8-52a8-9033-b3e2294414df', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('6d51657b-5120-52e7-bf31-ea242baea4f8', '12a522da-90b8-52a8-9033-b3e2294414df', 'e599e212-c4e7-507c-a3fe-9704649a9794', 2.5, 'g', NULL), +('90737a0e-47bb-502b-b881-78cfb81880cc', '12a522da-90b8-52a8-9033-b3e2294414df', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 1.67, 'g', NULL), +('1ef8a622-8c18-51a7-b54f-99b2209b1741', '12a522da-90b8-52a8-9033-b3e2294414df', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 15, 'g', NULL), +('e0975e66-1600-5f1b-ab88-e94cc8b8f2a2', '12a522da-90b8-52a8-9033-b3e2294414df', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('984a2ea1-4edc-53c3-86d6-8836d60d970b', '12a522da-90b8-52a8-9033-b3e2294414df', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('e2b0e89c-dae0-561b-b1ce-8505a6e1f549', '12a522da-90b8-52a8-9033-b3e2294414df', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('c2ef38bf-6180-57a9-9823-3950e5c15bac', '12a522da-90b8-52a8-9033-b3e2294414df', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('c63b0bfd-949b-5f1c-8bdb-0de95bd1f3da', 'd6f7c305-7108-5f92-b212-6a25e5de3096', 'f4ce4761-9e74-577f-b82f-c8679ebfabd5', 100, 'g', NULL), +('828a41e3-fcad-5921-8fc8-7f0bd585fe90', 'd6f7c305-7108-5f92-b212-6a25e5de3096', '10880f33-14c5-53d6-9862-dec02ec04752', 100, 'g', NULL), +('f7b4dcea-cf99-585e-a013-a53aca92280d', 'd6f7c305-7108-5f92-b212-6a25e5de3096', '84f28e02-ecae-59f4-9113-caf4a9332ff5', 600, 'g', NULL), +('ae9a8b16-0aac-566e-b49b-3bdca43093d3', 'd6f7c305-7108-5f92-b212-6a25e5de3096', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('7fa5cfca-77af-5819-89ad-0152d8bc47ef', 'd6f7c305-7108-5f92-b212-6a25e5de3096', '86eda42e-989d-5587-8f1d-96a2d9416a85', 3, 'cây', NULL), +('98d77768-b7b8-5fcc-864c-a630c1746305', 'd6f7c305-7108-5f92-b212-6a25e5de3096', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 15, 'g', NULL), +('9c8fceac-0aac-5bcc-9086-f09cbe91bf5f', 'd6f7c305-7108-5f92-b212-6a25e5de3096', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('7fcf92e4-b83a-5fc1-bad7-fd3434557c11', 'd6f7c305-7108-5f92-b212-6a25e5de3096', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 7.5, 'g', NULL), +('dcf5807c-3da0-5a51-84db-9f62bc64ce10', 'd6f7c305-7108-5f92-b212-6a25e5de3096', '2a25ae01-c36e-588e-ac7c-2718a9e78c0f', 100, 'g', NULL), +('e4d4dc2c-a5bf-557a-a808-cd0ec43c780b', 'd6f7c305-7108-5f92-b212-6a25e5de3096', '6d1d4481-bae6-5af8-a86a-525b20f38c1f', 15, 'g', NULL), +('149a010c-8b9e-5cfd-bf38-b8db9c80d726', 'd6f7c305-7108-5f92-b212-6a25e5de3096', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('563e8fba-ea40-5d17-84d5-bb56c3c3f0c0', 'd6f7c305-7108-5f92-b212-6a25e5de3096', '6f834874-ecea-5bf3-8147-38ec708d6432', 20, 'g', NULL), +('255f2c39-75de-5e5b-9304-a6af7b513738', 'd6f7c305-7108-5f92-b212-6a25e5de3096', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('9b101b4c-fa80-5523-90e9-0e0bba154de8', 'd6f7c305-7108-5f92-b212-6a25e5de3096', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('2c2d1818-90f5-5906-b3f8-5c60e9b91d38', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', '48a2e86f-62e1-5dd4-8c23-714e8237c70e', 400, 'g', NULL), +('15db92a9-7a54-5fdf-bf32-445855bd86de', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', 'ef898520-e0ad-515f-a261-91e8a18e8938', 20, 'g', NULL), +('01033a6d-e091-58a0-be35-5c7507b8da50', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', 'ea000034-1111-2222-3333-444444444444', 50, 'g', NULL), +('001b9098-3e34-5ef4-927d-d5766f27e0bc', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', '86eda42e-989d-5587-8f1d-96a2d9416a85', 20, 'g', NULL), +('a177a3f5-a271-5bc6-b5e9-de6312f958f8', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', '39cd8b9f-fc4d-53a6-b8c3-0411ed21935f', 3, 'trái', NULL), +('886ad50b-5698-5e9d-8145-1d7d124428a2', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 30, 'g', NULL), +('51c521c4-18df-599c-a148-bf8a9790d1be', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('5dfec633-f590-536f-9c8a-e568de6ba7fb', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 75, 'g', NULL), +('e8ad8144-1479-5be6-be28-af831f7bbca6', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('9b5fee91-64c3-524a-b382-36e924f326dd', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('2e9f0a4c-1215-5b5b-974a-bdf8b018bb22', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 15, 'g', NULL), +('e67960a4-d0b4-571d-9a5e-c1743cfb8f21', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', '41c6177e-4ab7-5db4-b88e-95911b643501', 15, 'g', NULL), +('012d8a91-db2b-5d52-a7d5-c4f55cca0a03', '818b76ac-e33c-5f3f-ba25-fa02fc3f86fc', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('1fea6ed4-c442-5a0b-bad6-5cb68a06f495', '08bf2738-67df-5756-a0ae-f1ab88335cd6', '189e4982-e150-59bf-aaf2-7227ccb9d61a', 70, 'g', NULL), +('332fcd10-9bf4-599d-a335-413d166fa37f', '08bf2738-67df-5756-a0ae-f1ab88335cd6', '7f4fdcbc-054b-579a-8128-b7cf5065eca0', 70, 'g', NULL), +('ca0f4def-8a49-52fa-ac6f-d11221d9c5eb', '08bf2738-67df-5756-a0ae-f1ab88335cd6', 'd1c740b5-2dec-5a07-8aeb-24b5cb12f044', 50, 'g', NULL), +('1a025608-a40c-5ca8-9e5d-7814352d8a0e', '08bf2738-67df-5756-a0ae-f1ab88335cd6', 'ea000004-1111-2222-3333-444444444444', 3, 'quả', NULL), +('01239d37-a954-55c2-980c-8b7bc119271a', '08bf2738-67df-5756-a0ae-f1ab88335cd6', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 50, 'g', NULL), +('e2a13b28-a4e4-59f7-a379-975464db2d0f', '08bf2738-67df-5756-a0ae-f1ab88335cd6', 'ea000023-1111-2222-3333-444444444444', 50, 'g', NULL), +('136f86ad-95d7-577e-93e7-81de3d56c507', '08bf2738-67df-5756-a0ae-f1ab88335cd6', '5a62ba4e-40c3-5969-afbc-21dfeff8e81d', 30, 'g', NULL), +('bcc61dc7-2529-53f8-92d5-8a1846090d7f', '08bf2738-67df-5756-a0ae-f1ab88335cd6', 'cff07683-f25b-5db5-b0a1-fadf7016f351', 45, 'g', NULL), +('320d3841-bb3b-5a86-9507-22ef2e2aa5c7', '08bf2738-67df-5756-a0ae-f1ab88335cd6', '54997d25-b037-5076-9ad3-c2c6a6b7efdb', 20, 'g', NULL), +('08825abe-0839-5483-8426-6fc08d7209ce', 'd431308f-b674-5afa-b91e-0230248602b9', 'a4476348-35b6-57b2-a04c-83bf6989852e', 300, 'g', NULL), +('c5e592c9-e6e9-5290-a95d-80f695ffc8eb', 'd431308f-b674-5afa-b91e-0230248602b9', '098ea6e8-4c41-5c91-9144-80209178311b', 40, 'g', NULL), +('93f4bf6d-0422-5465-8861-64ec7317ea61', 'd431308f-b674-5afa-b91e-0230248602b9', 'a51d0788-4ff5-538d-8719-9c54387b6af7', 15, 'g', NULL), +('a731c5ad-02da-5ce8-a286-b81ddcd8aea1', 'd431308f-b674-5afa-b91e-0230248602b9', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 30, 'g', NULL), +('786bf63b-e897-53ea-8d4a-bc7398958c0b', 'd431308f-b674-5afa-b91e-0230248602b9', '510c2a6d-805a-57d5-a85e-b6c1ab73b1cf', 5, 'g', NULL), +('89cfbf1a-cd78-590f-8c47-6e9c184a3bbb', 'd431308f-b674-5afa-b91e-0230248602b9', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('d152434a-6335-5772-b9f2-355635fafab0', '3fe74751-05c9-5b1d-9758-ae59423d8402', 'f28f36fa-5c1f-532d-b01f-c00afbf81878', 300, 'g', NULL), +('3dddb522-ed69-5ad1-ba8f-5c8918ff6829', '3fe74751-05c9-5b1d-9758-ae59423d8402', '107be8bd-35c9-5d5a-bc23-57c02555f249', 250, 'g', NULL), +('5bfa87d0-0c7b-53e0-bf0d-2aeec6f69ee4', '3fe74751-05c9-5b1d-9758-ae59423d8402', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 180, 'g', NULL), +('1898112e-ee0b-57fc-9a4e-3bb057f8aa70', '3fe74751-05c9-5b1d-9758-ae59423d8402', '23e082ab-b2fd-51a1-b63a-dcbe21a5e034', 80, 'g', NULL), +('e1512b44-f181-5157-8ed2-7a88f1ce61be', '3fe74751-05c9-5b1d-9758-ae59423d8402', '30009462-35e8-5edb-a607-57b5f6368893', 40, 'g', NULL), +('1d42e046-7e6e-54f0-bbd8-99bcf27c08e9', '3fe74751-05c9-5b1d-9758-ae59423d8402', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('e283ee28-0866-5915-ab52-fd74cf7806eb', '3fe74751-05c9-5b1d-9758-ae59423d8402', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 2, 'trái', NULL), +('a5ae653d-8ae1-5a0b-b949-ae2ae97a4a58', '3fe74751-05c9-5b1d-9758-ae59423d8402', '641f1206-7440-54ad-ad8d-709933c7917e', 80, 'g', NULL), +('d693e13d-1e88-5dff-acef-d2b482b1dc32', '3fe74751-05c9-5b1d-9758-ae59423d8402', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('987bed14-8715-51ae-b930-6e62ff65ee6d', '3fe74751-05c9-5b1d-9758-ae59423d8402', '33923ff7-3942-50ca-9237-b00a5b23ed14', 30, 'g', NULL), +('cdf57092-5512-575d-adee-b5000e485c0e', '3fe74751-05c9-5b1d-9758-ae59423d8402', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 10, 'g', NULL), +('c9a0d676-9642-5775-85fb-6a2186b28fc5', '3fe74751-05c9-5b1d-9758-ae59423d8402', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 22.5, 'g', NULL), +('b6bd43ed-9833-51d9-a28c-c79bbd2f329a', '3fe74751-05c9-5b1d-9758-ae59423d8402', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('c063c97c-ba11-5562-96ef-6d0e2cb4ac8a', '3fe74751-05c9-5b1d-9758-ae59423d8402', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 45, 'g', NULL), +('07913e92-c88e-5171-9dd6-80a6b84ffe84', '3fe74751-05c9-5b1d-9758-ae59423d8402', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('b8f63ea8-a9ae-55e5-8753-1439ba6cb254', '3fe74751-05c9-5b1d-9758-ae59423d8402', '030e505f-577b-5b8e-b74c-5798f2a471a0', 20, 'g', NULL), +('6b1d5099-18bd-5d01-9d8f-748e4346b529', '3fe74751-05c9-5b1d-9758-ae59423d8402', '6fd68881-e98e-5166-9d11-e0c53b93807b', 5, 'g', NULL), +('58fa7281-3dfb-57b5-91cd-cf9f6999b1fe', '3fe74751-05c9-5b1d-9758-ae59423d8402', '28d20365-8074-544a-8f77-d85767e96f22', 150, 'g', NULL), +('426a344a-08a1-594e-9620-e5997ea53187', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', '8da0b2b7-159c-5ae6-9078-3004be2fddaf', 400, 'g', NULL), +('178d0826-0e32-5562-b2e9-bcd88c504513', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 2, 'cây', NULL), +('77bf343e-aa77-5756-aeaf-a0bdec8ce753', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 7.5, 'g', NULL), +('ffc7ecf7-d2d3-5ecb-bf68-db5c2c0c07db', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', 'ea000034-1111-2222-3333-444444444444', 7.5, 'g', NULL), +('71b3aefd-9af0-5032-9811-a0bd874ea23f', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 5, 'g', NULL), +('765b1ddb-d891-5c79-9b67-35c13d681167', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', 'f4c45dd4-6088-5762-b03f-7b07df9a99ac', 200, 'g', NULL), +('bb294b85-bd0b-5584-b0b9-f93583b52eae', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', 'd786b586-2c37-5f65-ab07-9d2a1c8ca354', 3, 'viên', NULL), +('f628b2eb-ac02-510a-8c1f-b9fca479ae0c', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', '261c6e12-807f-5d82-a3ec-5b108d497e3c', 500, 'ml', NULL), +('4892df3e-25a9-5bf5-8f95-6937e2ebe08c', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', '97312907-8f92-540a-a6ab-64327b7bc0b4', 15, 'g', NULL), +('d201b1a9-60d9-5645-a9b3-20762ff11304', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 15, 'g', NULL), +('bce775e0-a48d-58cf-81c6-4bfc4d0d0ee3', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 15, 'g', NULL), +('e8025010-f37a-5396-876d-04b2a5fa4ae0', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('209a15c4-8972-5f4c-a367-bccc9de58bf5', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('d244fc87-df0c-5afd-a832-7879c9f065c1', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', 'd45fbbf9-d7c5-5194-a2bd-0089175939ab', 20, 'g', NULL), +('6de503ad-81f5-550f-8638-3fd097e5c471', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', '2233ac9c-7c41-5f9c-afd2-d61296b92ce8', 100, 'g', NULL), +('e65be2fa-c79e-5a84-873d-04ba63403e83', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', '37d03c6b-dbae-5c0c-90b8-30ad4cdef85f', 80, 'g', NULL), +('10feb911-8272-575c-80a1-60f7f421fc3c', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', '39819809-370c-5fcb-94cf-d7c2063957c8', 20, 'g', NULL), +('ba79f51d-e8c3-5e8e-a4c8-c9ed32dbcdb1', 'a133a29c-91ce-5e1e-8e86-8dda1d3e7135', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('207c17ff-308d-53d3-af03-a295480753eb', 'e2bea117-f795-523b-86e5-b22088d8f96f', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 300, 'g', NULL), +('6911d2f1-a350-5d28-b7f6-932749c93590', 'e2bea117-f795-523b-86e5-b22088d8f96f', '545c29ae-aaac-5ed3-8f27-dcc2ca503172', 45, 'g', NULL), +('e00f9d36-6d0f-56fc-a38e-98424ba8d504', 'e2bea117-f795-523b-86e5-b22088d8f96f', '83bab723-bae1-502e-b368-333a7b3830e5', 100, 'g', NULL), +('c79d8c2c-e6a2-5483-92c3-19bde40832dd', 'e2bea117-f795-523b-86e5-b22088d8f96f', 'b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 15, 'g', NULL), +('a32284ea-2960-5b83-955f-e0fb5d36e330', 'e2bea117-f795-523b-86e5-b22088d8f96f', '7e666b30-7a9f-58c2-8f0f-23d05b3f6b35', 15, 'g', NULL), +('ec62153a-057e-5671-b5e6-a0a88a7929cc', 'e2bea117-f795-523b-86e5-b22088d8f96f', 'ea000042-1111-2222-3333-444444444444', 30, 'g', NULL), +('40a5cc9b-5774-575a-9641-de031d905e41', 'e2bea117-f795-523b-86e5-b22088d8f96f', 'bd94f5b0-80c2-5c6c-8ac9-e0b17a62be3c', 1, 'g', NULL), +('b40ad1a6-24f5-5597-a106-076e3b7153fe', 'e2bea117-f795-523b-86e5-b22088d8f96f', '2094b9c8-eb1a-5c56-bae9-effbc837baab', 20, 'g', NULL), +('d7c83f67-ae8c-57bf-80db-7f8c39e4d1d0', 'e2bea117-f795-523b-86e5-b22088d8f96f', 'ab284a6b-7b7a-574f-9025-41ea4f8cbd65', 80, 'g', NULL), +('cf30a846-5943-5312-a7f6-7efb81e51325', 'e2bea117-f795-523b-86e5-b22088d8f96f', 'e4eedfa7-f180-549d-a7d0-ffe1c6624445', 20, 'g', NULL), +('ea500342-fce5-5ded-baff-f0a80cd275b1', 'e2bea117-f795-523b-86e5-b22088d8f96f', '84b9602f-6a87-512c-8655-44a2cc226d46', 20, 'g', NULL), +('496e9c1a-d9b8-5e82-b649-36b6a96af319', 'e2bea117-f795-523b-86e5-b22088d8f96f', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('898cdd44-2198-5f4b-b287-b96edf399a3c', 'e2bea117-f795-523b-86e5-b22088d8f96f', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 5, 'g', NULL), +('bf7fef3e-2911-5905-a2b7-cc2e66545125', 'e2bea117-f795-523b-86e5-b22088d8f96f', '0fed2b60-73de-5aa4-ae5c-f7ef7153fa52', 20, 'g', NULL), +('adc2b0dc-fee0-5132-9c48-f4e09723b812', 'e2bea117-f795-523b-86e5-b22088d8f96f', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('c42b6224-15c1-51c3-8ad3-2584271f5aa6', 'e2bea117-f795-523b-86e5-b22088d8f96f', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('8083d0ab-5809-5b7d-92b0-5ebfbaf0cd51', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '96995e24-07ae-5c50-9d6f-94e43ee4a35e', 300, 'g', NULL), +('ff9c05d2-3b0c-56c2-ba17-c0d5b565729c', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', 'c771f986-30a3-529c-8f78-de6152d7d118', 100, 'g', NULL), +('913e0ee3-d667-53ee-b83f-9a558fa58edc', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '351046a2-52fa-527d-b9e1-cc0e7ae12aec', 240, 'g', NULL), +('48cb178f-8dd8-5e10-ae30-b07127c5f705', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', 'ea000049-1111-2222-3333-444444444444', 200, 'g', NULL), +('117b1d04-01c8-5d19-bd47-1fcc49e66966', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '60679900-1fa7-5ff7-90f1-f3916a1fb3f6', 100, 'g', NULL), +('ee20b6bc-7651-5bd7-875d-571844694d96', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('c02d4973-9822-5586-a8b7-97fbd2e50054', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', 'ea000034-1111-2222-3333-444444444444', 5, 'củ', NULL), +('1dddd8d1-ba59-50d2-8ec3-ee90d77e41d4', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '6d1d4481-bae6-5af8-a86a-525b20f38c1f', 15, 'g', NULL), +('222bb286-5050-5561-b2a4-e00de198d0c7', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 7.5, 'g', NULL), +('9a1e0396-71f2-5398-816b-78937c2711ec', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 2.5, 'g', NULL), +('6400165a-fd6f-577a-8e9b-927ac247bec3', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 15, 'g', NULL), +('a1b78bc1-3058-5306-9448-7ec6a0bfa518', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('34534e84-3023-5967-a8d0-d6f2a552ad94', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('eb5d55e1-014f-5a3a-951b-230e292866c6', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '18be328c-bd53-56ff-afe8-03690ba9789d', 100, 'g', NULL), +('e8c211c2-36d8-5d21-aef5-3c3849772988', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('66e5f075-f983-5fd5-a0eb-cd9c7fc21038', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '68cba44d-1217-551c-9cbd-2375419d11ad', 80, 'g', NULL), +('4419b365-4fca-5943-bc73-82f33ae2f233', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', '42fff92b-077c-55ec-9885-6bd7ff9636f3', 80, 'g', NULL), +('72c09712-5c6d-5072-83f4-82f1f30663da', 'ade7f5d5-c6cd-5231-b685-f2092e7de7cf', 'eaf1ffa0-44d9-5213-bf92-f14c9ba83da1', 5, 'g', NULL), +('b4c50f44-5ace-5e73-aa04-6164de825082', 'debf8298-3c06-5a9d-afc8-c92e963aa235', '84780212-bef0-5d77-b42e-d3d9766ffa56', 500, 'g', NULL), +('6767c9f3-10d7-5a68-8d64-59be72a0e987', 'debf8298-3c06-5a9d-afc8-c92e963aa235', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 2.5, 'g', NULL), +('a2fe77c1-4cd5-54a4-8622-ea64484f633d', 'debf8298-3c06-5a9d-afc8-c92e963aa235', 'ea000034-1111-2222-3333-444444444444', 15, 'g', NULL), +('626a6a08-ff51-55da-badb-9764eef3891f', 'debf8298-3c06-5a9d-afc8-c92e963aa235', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 5, 'g', NULL), +('d137e098-7383-55b7-9408-5aa7ff8b2e19', 'debf8298-3c06-5a9d-afc8-c92e963aa235', 'ea000025-1111-2222-3333-444444444444', 0.25, 'củ', NULL), +('8e4f8803-8183-5bce-b1f1-8d7451c2bbe4', 'debf8298-3c06-5a9d-afc8-c92e963aa235', '82433693-c8bf-52c7-953d-94567db3cb05', 2, 'trái', NULL), +('59a36a08-2d76-5498-81c1-a77dfc845cba', 'debf8298-3c06-5a9d-afc8-c92e963aa235', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'nhánh', NULL), +('38f1aff6-1c39-5d74-bd01-26de3da41bc2', 'debf8298-3c06-5a9d-afc8-c92e963aa235', '2a25ae01-c36e-588e-ac7c-2718a9e78c0f', 4, 'cây', NULL), +('d521fe7e-2976-5181-8129-d847cf7608d6', 'debf8298-3c06-5a9d-afc8-c92e963aa235', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 60, 'g', NULL), +('c69d8749-b2f9-5930-a19a-67fdcd4a2075', 'debf8298-3c06-5a9d-afc8-c92e963aa235', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('0ac98406-29fc-5f44-b69c-2cfd7c539947', 'debf8298-3c06-5a9d-afc8-c92e963aa235', '1051ad15-9839-5684-85dc-43faff974f2c', 5, 'g', NULL), +('c16b4ce5-23a0-5c96-8cf2-2b079ed0bbae', 'debf8298-3c06-5a9d-afc8-c92e963aa235', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('c58f137a-e05e-5b20-aa57-50442dff28d8', 'debf8298-3c06-5a9d-afc8-c92e963aa235', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('1d9637f1-272c-5eec-b23e-9ad8d181aea7', 'debf8298-3c06-5a9d-afc8-c92e963aa235', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('f82c5960-d02a-5625-9aae-84d76345e56e', 'debf8298-3c06-5a9d-afc8-c92e963aa235', '300b9a61-bd25-5035-8b3d-f3b094c3dca7', 20, 'g', NULL), +('4777a714-307d-58af-bf2f-7cd0d5db6450', '047979f6-aa00-50c4-a7ce-98a995a9d674', '197fd433-4561-5175-9f04-35ba4ae89b68', 400, 'g', NULL), +('4cd5ee25-a16b-5c1f-a301-cbbc7cfaaf66', '047979f6-aa00-50c4-a7ce-98a995a9d674', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 100, 'g', NULL), +('c22c8864-76a4-5e79-8784-895065c9f361', '047979f6-aa00-50c4-a7ce-98a995a9d674', 'ea000042-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('7e91dee8-47c0-5482-8946-93b26c29bf27', '047979f6-aa00-50c4-a7ce-98a995a9d674', '78a5e6aa-6f32-5e6b-bfd3-d55d6472a17f', 20, 'g', NULL), +('a4c8ebf9-c421-5c98-ac69-c4230291d16d', '047979f6-aa00-50c4-a7ce-98a995a9d674', 'd7eb4972-ecc9-560e-b85b-13d6b80943ac', 2, 'tai', NULL), +('f02da980-3c68-5f1a-bb4f-c81ca8843c60', '047979f6-aa00-50c4-a7ce-98a995a9d674', '1dfd46f5-c134-5384-877e-6251caab3ae7', 7.5, 'g', NULL), +('e9af3382-ac89-5f05-a554-87c1e049b288', '047979f6-aa00-50c4-a7ce-98a995a9d674', '82a3905c-2967-58e7-9018-75fa7cdc57d3', 15, 'g', NULL), +('45cc85aa-aebc-5678-9f92-956d627092d6', '047979f6-aa00-50c4-a7ce-98a995a9d674', '0c93d091-6181-5fae-aced-b734ac496b56', 7.5, 'g', NULL), +('b514bfb9-6369-5571-b831-7f364fde6872', '047979f6-aa00-50c4-a7ce-98a995a9d674', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('72d944f9-3d31-53a5-b964-f0c078f1ea31', '047979f6-aa00-50c4-a7ce-98a995a9d674', 'e599e212-c4e7-507c-a3fe-9704649a9794', 2.5, 'g', NULL), +('ea371b5e-8be5-5e33-a39d-356751c03386', '047979f6-aa00-50c4-a7ce-98a995a9d674', '13e532ec-c064-519e-b413-6063876a20ee', 2.5, 'g', NULL), +('05a5c24c-326b-55f7-95a7-1b254da80b9a', '7df9b175-ddbe-5ca3-8648-c39f5221b350', 'e885b299-531e-54bf-814d-fd8a4698e220', 300, 'g', NULL), +('695a4d1b-3627-5aa4-ab4e-5d85bf9ea045', '7df9b175-ddbe-5ca3-8648-c39f5221b350', 'ea000034-1111-2222-3333-444444444444', 15, 'g', NULL), +('020ad699-1b08-5fd2-a918-8c52fa9842cb', '7df9b175-ddbe-5ca3-8648-c39f5221b350', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 5, 'g', NULL), +('e714866a-6cb6-5809-9508-daebde33f5b1', '7df9b175-ddbe-5ca3-8648-c39f5221b350', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 2.5, 'g', NULL), +('7369f3ee-d214-55fd-acb3-a0a126500a0a', '7df9b175-ddbe-5ca3-8648-c39f5221b350', '23e082ab-b2fd-51a1-b63a-dcbe21a5e034', 8, 'quả', NULL), +('46292818-2155-53e8-bbc6-fb5aec220b1c', '7df9b175-ddbe-5ca3-8648-c39f5221b350', 'b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 1, 'trái', NULL), +('0b936186-5074-5fe5-bd3b-64f1edcceb1b', '7df9b175-ddbe-5ca3-8648-c39f5221b350', 'e1071dc8-2c05-52ed-8d41-74c030ac4986', 5, 'g', NULL), +('7afc0b48-c546-57a9-9ac0-7fee292aa184', '7df9b175-ddbe-5ca3-8648-c39f5221b350', '139178b2-d2b0-575d-b493-d529da2bd5bc', 15, 'g', NULL), +('3296451e-b579-5940-831c-b94bb5c1b095', '7df9b175-ddbe-5ca3-8648-c39f5221b350', 'b2d624b7-88bf-5389-9572-25ce188893dc', 5, 'g', NULL), +('a103ba4b-9df0-5bfd-95f9-9e3cac61d7b9', '7df9b175-ddbe-5ca3-8648-c39f5221b350', 'c5e4635b-2288-5b57-b2dd-2c1eb8eacbf0', 5, 'g', NULL), +('1ad25b42-992c-512c-be56-ace096e73559', '7df9b175-ddbe-5ca3-8648-c39f5221b350', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 15, 'g', NULL), +('c5c9d3e7-f390-5b41-b700-cd1affc345cc', '7df9b175-ddbe-5ca3-8648-c39f5221b350', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('803e3777-a6c1-5d7c-934e-70603d9fa33b', '7df9b175-ddbe-5ca3-8648-c39f5221b350', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('02460653-7165-5c67-ad40-556b8bd7b54c', '8891ca88-5d6e-5516-8644-5b919da5663c', '6842de28-9e34-5a78-87e4-7453a9d0701d', 100, 'g', NULL), +('5a595595-edb6-52a8-903d-05389b54bc93', '8891ca88-5d6e-5516-8644-5b919da5663c', 'c829ccb5-6d2c-5284-8c9f-113dbe9faa55', 100, 'g', NULL), +('07125a1c-c087-58fa-89d5-7059cd40cf80', '8891ca88-5d6e-5516-8644-5b919da5663c', 'ec8834d7-bba4-517f-88f1-dfec06976502', 120, 'g', NULL), +('a218680d-d6ad-5aca-9f6e-8b4f3d411efa', '8891ca88-5d6e-5516-8644-5b919da5663c', '36062c40-d2ab-53db-9f7a-bc177319bd1c', 1000, 'ml', NULL), +('3c89ffdd-a5c5-510c-abf1-43bc238747d7', '8891ca88-5d6e-5516-8644-5b919da5663c', 'ea000034-1111-2222-3333-444444444444', 5, 'g', NULL), +('c3d5a5b4-679c-5350-bf6b-1b89bddda234', '8891ca88-5d6e-5516-8644-5b919da5663c', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('b8f99e67-edde-5fc3-bca7-e12e1f3f5946', '8891ca88-5d6e-5516-8644-5b919da5663c', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('9553b342-3c66-5b76-b1d9-a0294e8059e4', '8891ca88-5d6e-5516-8644-5b919da5663c', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 2.5, 'g', NULL), +('c3e3c9e4-1962-5dca-bddf-547579f6ca99', '8891ca88-5d6e-5516-8644-5b919da5663c', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 7.5, 'g', NULL), +('0fcb8706-f4e3-504e-a6e7-64aa964acfc7', '8891ca88-5d6e-5516-8644-5b919da5663c', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('65d40eb6-70a6-54a6-b81f-3ad2b6a7e2ad', '8b3740e4-039a-538e-9139-6057fa01e627', '8da0b2b7-159c-5ae6-9078-3004be2fddaf', 300, 'g', NULL), +('cdd1dc09-b28b-5332-802c-5347100abc6f', '8b3740e4-039a-538e-9139-6057fa01e627', '2a12868f-e04d-523e-8868-01b6254a8c6a', 50, 'g', NULL), +('8b0e25a9-edfa-5c0b-bb35-6a3b08bf9d08', '8b3740e4-039a-538e-9139-6057fa01e627', 'fbc19558-2fd3-5227-8d39-dab80160b181', 2, 'cây', NULL), +('334276eb-48a4-5731-9800-8134190b0710', '8b3740e4-039a-538e-9139-6057fa01e627', 'ea000034-1111-2222-3333-444444444444', 3, 'củ', NULL), +('a3472e1d-fd9a-50c7-963a-91f59a09f640', '8b3740e4-039a-538e-9139-6057fa01e627', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 2.5, 'g', NULL), +('ef6f80d5-8205-5911-8e05-6feaac68b0c1', '8b3740e4-039a-538e-9139-6057fa01e627', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 10, 'g', NULL), +('fa5f7b1c-27a9-5e78-bd9b-b1d325f15013', '8b3740e4-039a-538e-9139-6057fa01e627', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('1831a7bb-7699-5013-8b69-4991255dadcf', '8b3740e4-039a-538e-9139-6057fa01e627', '21256138-c99f-5b07-9b64-cf44702a8048', 1.67, 'g', NULL), +('4021c3f7-1af0-5ca8-94db-84e6f6b5ca6a', '8b3740e4-039a-538e-9139-6057fa01e627', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('61a28a63-7159-59e4-ad2f-af75a68f35d6', '8b3740e4-039a-538e-9139-6057fa01e627', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 10, 'g', NULL), +('cec1fae9-7db3-5473-953b-60540a4de592', '8b3740e4-039a-538e-9139-6057fa01e627', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('5008495d-238b-50ac-b0c1-59c11044f35a', '8b3740e4-039a-538e-9139-6057fa01e627', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('ea892473-c9b2-5292-b9c1-2b668c3a067d', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', 'ea000027-1111-2222-3333-444444444444', 250, 'g', NULL), +('b1b6e6ef-6864-561d-a847-f1b260bfbe6a', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', '6f834874-ecea-5bf3-8147-38ec708d6432', 30, 'g', NULL), +('4c9e5e49-8f4c-5ad8-b708-d707d75c69eb', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', 'f9d1c4ce-6457-575a-9bed-5d716044412d', 10, 'củ', NULL), +('3f3e1c77-d40e-5707-9154-52d7fd105d5d', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', 'de451944-0e5f-5b75-9b9f-b4e4173c6821', 10, 'tép', NULL), +('7dce211d-b9d5-502b-8a9a-2e4e5ad6549e', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 3, 'trái', NULL), +('bc94ceb3-e2c9-5dde-a6df-424dc927c110', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', 'ea000055-1111-2222-3333-444444444444', 15, 'g', NULL), +('7a79a0ea-efe3-54a0-a323-8676b609d716', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 7.5, 'g', NULL), +('d6e4296c-5626-5e79-aed3-d4605662b871', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 30, 'g', NULL), +('3f1c6c50-606f-5794-a444-683bf815558a', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', '21256138-c99f-5b07-9b64-cf44702a8048', 7.5, 'g', NULL), +('32e0b163-6d45-50bc-ae05-b4625024ecfe', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 30, 'g', NULL), +('937da6a2-a95d-52b7-b753-f3d0f9968d24', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('c337acac-d7e8-53cb-814d-1d9b7b2920b9', 'c13b11a3-82dc-5608-81e1-eb654d880d1c', 'b6332786-b190-5600-871e-e582de462c31', 80, 'g', NULL), +('8169d7e0-20b5-5229-b3ff-eadaa649aa03', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '35a51c14-43c4-560a-aeac-59b5cc0a8483', 250, 'g', NULL), +('fd879069-6df6-525a-bd60-e06b8711469e', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', 'e885a4ab-d856-5b71-9312-11c823ebcb84', 150, 'g', NULL), +('11fbe69a-aea9-5c7e-85c0-8dd591f5adf3', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '00bf9726-71aa-5a08-ac4f-d4163cb08bb4', 50, 'g', NULL), +('7b1da662-e3b0-5746-a4de-1d70948b9f77', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 1, 'trái', NULL), +('0a0dfd76-b561-5197-bd30-ec78547487cc', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'nhánh', NULL), +('a932994a-6240-5b6f-88d0-7e814ead8d3b', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 30, 'g', NULL), +('d066d583-50d8-57ef-86eb-844a42aa3027', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 22.5, 'g', NULL), +('c3917ada-972d-5743-92e9-cd0d04e11d87', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 10, 'g', NULL), +('2fadfbb4-ed0f-501c-878d-3a79639e6aa6', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('88380538-8713-5dae-9e3e-0076f6dc9d09', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('473cf68c-e48a-548c-934f-b147dbc20383', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 1, 'nhánh', NULL), +('24857301-8f8b-5141-9794-f86a0f50b38b', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '59d0aaa8-74ea-59b3-b6b1-fad2b2bbeecd', 25, 'g', NULL), +('d1e24ea0-3a02-5fac-85b7-bcbd2e88eecb', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('d46e9285-8dfb-51e5-8e3c-ae3dedfa46ad', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '030e505f-577b-5b8e-b74c-5798f2a471a0', 20, 'g', NULL), +('974cb01d-b3e9-539d-9902-fe942b94e84f', 'f3dda0b0-b227-5330-9ebf-40105c57edf6', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('d3f075f1-e68e-56b8-9c4b-aea3bf1e2bdd', '78347c17-8322-5e80-b555-c191ee490ca9', '2051386a-3ebc-5e7a-bfc0-9d7a33172ba0', 2, 'chén', NULL), +('fc964ee7-b4e5-5baa-b4e3-e7eca41179fc', '78347c17-8322-5e80-b555-c191ee490ca9', '1a76e495-e8c2-5e3e-873b-7cfd4109adb3', 100, 'g', NULL), +('4287c7fd-2e92-5b28-860f-9b2822b96135', '78347c17-8322-5e80-b555-c191ee490ca9', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('1eb2e532-8c86-5fac-b154-950e37fd408c', '78347c17-8322-5e80-b555-c191ee490ca9', '725e64c6-e003-54c3-b1a3-5c562700b224', 100, 'g', NULL), +('ca96663d-63ee-508b-af05-912305057c54', '78347c17-8322-5e80-b555-c191ee490ca9', '00bf9726-71aa-5a08-ac4f-d4163cb08bb4', 100, 'g', NULL), +('a6512e4e-a66b-50f4-bb08-507b9a4233d6', '78347c17-8322-5e80-b555-c191ee490ca9', 'd18203ed-13ea-59ab-8859-056331896798', 1, 'cây', NULL), +('35443009-beec-51d9-be03-3b3ff76d5f2d', '78347c17-8322-5e80-b555-c191ee490ca9', 'f0979cba-c275-571b-b6dc-56ad08d0e83e', 1000, 'ml', NULL), +('2fe88c47-9c17-5859-b5a5-c43c7d11c951', '78347c17-8322-5e80-b555-c191ee490ca9', '4e706f33-b81b-53ab-b88a-d3bc03c1a8c2', 2.5, 'g', NULL), +('5d1fc490-738b-51b6-a4a4-b453d5b6f47e', '78347c17-8322-5e80-b555-c191ee490ca9', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2.5, 'g', NULL), +('4b73fdf7-3d00-5ce5-9db5-098fe7e62443', '78347c17-8322-5e80-b555-c191ee490ca9', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 1, 'nhánh', NULL), +('09580998-54dc-5147-8084-2c2b69480168', '78347c17-8322-5e80-b555-c191ee490ca9', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 5, 'g', NULL), +('23d66237-3d94-5077-aa05-55e11cad5428', '78347c17-8322-5e80-b555-c191ee490ca9', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('758d1b73-1c51-5678-9a9e-da00f3f04f59', '78347c17-8322-5e80-b555-c191ee490ca9', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('6979549b-c541-5f34-8e3b-32c7b4c817cf', '78347c17-8322-5e80-b555-c191ee490ca9', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('16f5ffc4-d95c-5da5-9079-42fd9404efae', '78347c17-8322-5e80-b555-c191ee490ca9', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('21d6796c-1ccc-55f5-9ddf-45a3e1e1c3f5', '78347c17-8322-5e80-b555-c191ee490ca9', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('49817ece-3254-5369-9000-1ddfe7c6d8df', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '725e64c6-e003-54c3-b1a3-5c562700b224', 180, 'g', NULL), +('e5087185-2312-5b53-96ce-110d79b9eb1b', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', 'cd8c8924-8c72-55c9-bfd6-7f540234d8cd', 1, 'g', NULL), +('feb55824-8df4-5dd3-b872-07c7de4488c7', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '972ebe15-74ae-5d4b-a76b-72238e6099ec', 22, 'g', NULL), +('28e27335-b00a-5c12-8269-88cf119d4411', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '07a9d7da-5f23-5973-8918-448610af3ba1', 20, 'g', NULL), +('cdac2568-0fb6-5043-b12a-4a21641eecf6', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '45a4a10e-32d1-56c1-a9f7-4f96a6243c4d', 80, 'g', NULL), +('a574dadc-17a7-54da-8d36-5f98fc7bcabb', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 1, 'nhánh', NULL), +('0f4131a5-0baf-595a-942a-a0946bd0d1e9', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '1b8928d0-c525-51e9-b6e8-383b3bd5f2b5', 15, 'g', NULL), +('de9ddbc6-4595-56c6-9a58-7fa8e525ebec', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '0f91c86e-fc36-56ad-a708-373c3f07fb0e', 45, 'g', NULL), +('4d9c0635-d66b-5cc2-bd8a-0d4d82137ecf', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('6fa8a9ff-ab44-51d9-b5e8-8d398db54368', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 2.5, 'g', NULL), +('7ae69c0c-76ba-55b2-bd9e-5a4461720932', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2.5, 'g', NULL), +('f49a54a2-5c8c-569c-aec5-ca51b78d51b2', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 60, 'g', NULL), +('ecf9694d-6cb9-5eb7-985b-e458c638887b', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '99157107-8cbc-5715-97f1-620017377993', 7.5, 'g', NULL), +('5963be02-9864-5ad2-8528-a90276b4ea4d', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', 'fa39c20c-5ffd-5cc0-bf07-9758f0f05884', 30, 'g', NULL), +('894239d0-c7ea-529f-9bab-1dadb411f915', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '3f1a24f2-cb63-581c-a7a6-155df140fb3b', 20, 'g', NULL), +('703ab6a6-1d52-5fb6-92b3-44cb6ae60e70', '9fee44e7-6bbb-5ebb-8f6d-f2b0a6cfd5ea', '491429aa-68d1-50ff-bbc5-b1da1d540328', 30, 'g', NULL), +('4bb28310-f487-5ac5-a4b4-c830b872a3ac', '35ec5263-af67-5daf-a06e-c9d5a016574f', '9fe7ea3f-5306-501c-bfad-7d684fda5f77', 260, 'g', NULL), +('bb7885e9-edbb-55e1-9884-6ecd7c3bb695', '35ec5263-af67-5daf-a06e-c9d5a016574f', '374da59b-40a7-5960-9a59-973f226ed92d', 15, 'g', NULL), +('834ea7b0-39f5-5e21-a7ab-23b807d2474c', '35ec5263-af67-5daf-a06e-c9d5a016574f', 'd3a99dcc-d806-5e05-88f5-d81e85224c30', 2, 'g', NULL), +('f79f36a0-da45-5eb9-b40f-fd596559118d', '35ec5263-af67-5daf-a06e-c9d5a016574f', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 20, 'g', NULL), +('006fc9c6-2848-567f-a70e-99f8c4007bb5', '35ec5263-af67-5daf-a06e-c9d5a016574f', '24072ae2-364a-5315-ab6c-c78a5dfb75b3', 8, 'trái', NULL), +('b7e78b87-1313-5c4d-becb-804b1c7b4838', '35ec5263-af67-5daf-a06e-c9d5a016574f', '52aed6c0-8478-5d02-8dc6-fecae5ecb5a3', 4, 'g', NULL), +('b59870cf-e31f-54b0-ae31-efd26c6b03bf', '35ec5263-af67-5daf-a06e-c9d5a016574f', '452953fe-297f-5958-9397-53c694db5fe6', 20, 'g', NULL), +('b5a3dcc8-429d-5ee7-a598-b166f18f24cc', '35ec5263-af67-5daf-a06e-c9d5a016574f', '6f84a797-a647-5676-a8a9-196a2873485c', 20, 'g', NULL), +('008b789b-771e-5972-aad8-d74f15641ce3', '35ec5263-af67-5daf-a06e-c9d5a016574f', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('e67e27e1-bc65-5a74-9f31-6c13a0d57c7f', 'ab4194bd-14d0-5ea5-b6fe-62ac657572e8', 'ac01cd45-33a0-5a67-b45c-86b5e2da0ae7', 200, 'g', NULL), +('51acd8a1-e83f-5fb3-92b7-b8b76b817fc6', 'ab4194bd-14d0-5ea5-b6fe-62ac657572e8', '545c29ae-aaac-5ed3-8f27-dcc2ca503172', 3, 'cây', NULL), +('aa971848-1dc2-58f5-a4b7-5dc7c9f76b5f', 'ab4194bd-14d0-5ea5-b6fe-62ac657572e8', 'b98fe1b1-a832-590c-af49-51ef8bb51756', 1, 'trái', NULL), +('43f6ad26-4914-5a6f-8f16-290068e22212', 'ab4194bd-14d0-5ea5-b6fe-62ac657572e8', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 30, 'g', NULL), +('41ab1b36-075e-5c73-b5c6-dcbd1f798eab', 'ab4194bd-14d0-5ea5-b6fe-62ac657572e8', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 15, 'g', NULL), +('4becdab0-e37a-5c9b-90a1-f4b7deec08ae', 'ab4194bd-14d0-5ea5-b6fe-62ac657572e8', 'bd94f5b0-80c2-5c6c-8ac9-e0b17a62be3c', 1, 'g', NULL), +('2dab57c1-2055-531f-a332-3e02ba6d0fe6', 'ab4194bd-14d0-5ea5-b6fe-62ac657572e8', '37cd9baf-8feb-589f-8dff-44e844ac2b29', 80, 'g', NULL), +('418f61fc-8cd4-563c-b283-5ec02c214698', 'ab4194bd-14d0-5ea5-b6fe-62ac657572e8', '6d1d4481-bae6-5af8-a86a-525b20f38c1f', 20, 'g', NULL), +('ac2a8fa2-ed6b-548a-b37e-2624c1d2fc76', '37b25212-03f7-56bf-8a28-755b63fd1cee', '6ae82397-4908-5dd8-8083-36d7bad288dd', 75, 'g', NULL), +('3b434130-4a05-5c4b-9edc-cf16415918f4', '37b25212-03f7-56bf-8a28-755b63fd1cee', '1b6f9a1f-c299-550f-919a-d1602f06c7fa', 75, 'g', NULL), +('cd155bb7-21bd-57a9-babf-b6735895e937', '37b25212-03f7-56bf-8a28-755b63fd1cee', 'a6afeb5c-7f53-51b9-abf1-722ca8fa1e87', 200, 'g', NULL), +('332f1d1f-3eee-5f2c-a260-8ba1252c9b48', '37b25212-03f7-56bf-8a28-755b63fd1cee', '338b73e7-8557-5399-baaf-61cd9e10518f', 200, 'g', NULL), +('dd865ce4-f792-52e2-95a4-649df00160fc', '37b25212-03f7-56bf-8a28-755b63fd1cee', '00bf9726-71aa-5a08-ac4f-d4163cb08bb4', 50, 'g', NULL), +('7234fda5-ceec-5773-aa49-e199b876d334', '37b25212-03f7-56bf-8a28-755b63fd1cee', 'ea000034-1111-2222-3333-444444444444', 5, 'g', NULL), +('b8d9451b-2a13-5853-91f4-a7479831b8bc', '37b25212-03f7-56bf-8a28-755b63fd1cee', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 0.5, 'củ', NULL), +('b4e7d0f1-0de8-56c4-9e7a-8c30d98b6f38', '37b25212-03f7-56bf-8a28-755b63fd1cee', 'bd94f5b0-80c2-5c6c-8ac9-e0b17a62be3c', 1, 'g', NULL), +('cbbe1122-cf23-521e-89ef-9eba118e4545', '37b25212-03f7-56bf-8a28-755b63fd1cee', '030e505f-577b-5b8e-b74c-5798f2a471a0', 20, 'g', NULL), +('d143e4f6-6e63-5af9-8faa-823b7bcbad85', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', '776ad2a4-690f-5d21-84ee-0636eb8a99f1', 200, 'g', NULL), +('3ce27c65-007c-50e9-8759-57ffc6cfc2fb', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', 'e885a4ab-d856-5b71-9312-11c823ebcb84', 200, 'g', NULL), +('9f648c6f-8fd5-5635-b382-1149336a5b84', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', '1e3e8fab-c862-5009-ba9f-aadd65e325bc', 100, 'g', NULL), +('cc645217-b2bb-5f85-a34a-051ef44213da', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', 'fe262953-d756-5fd4-b56a-76696de7fb11', 100, 'g', NULL), +('8a1e0c76-bd8d-5ccd-b7b4-d75478db9a10', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 10, 'g', NULL), +('93dda681-044d-572f-9ad0-db38d07e6f2d', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 45, 'g', NULL), +('677bf8b9-b248-5452-8670-fee743dad6e7', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', 'ea000005-1111-2222-3333-444444444444', 15, 'g', NULL), +('0df7689a-53a8-5f6d-b6d3-7c0fee3e05d4', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', '510c2a6d-805a-57d5-a85e-b6c1ab73b1cf', 2.5, 'g', NULL), +('5e88bc3a-b187-5164-a14f-79a687c31512', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', 'b98fe1b1-a832-590c-af49-51ef8bb51756', 0.5, 'trái', NULL), +('cfa49c21-87eb-537b-bf62-219adeb79376', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('02511949-d6b5-502d-9ebe-08cb07209adf', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('05ba7d1e-a439-5ed2-a657-13b905115d6e', '69f35d0a-a441-5ff7-8cb4-240b3efd186e', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('49b6616e-c121-5f32-92ff-0b287ef7225c', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', '30aab0ce-a3fc-57d2-9dd8-5152c824ea28', 200, 'g', NULL), +('960f4b03-0598-522d-a638-22d3e827122c', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', '79057839-1f37-5822-8125-c087a0abc556', 200, 'g', NULL), +('827c92b9-cdfd-5b29-927e-b8cb87ab03f7', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', '01619128-a551-5bcb-84a9-5f7ddf562db4', 2, 'miếng', NULL), +('85273bda-c837-5200-8350-55d966dfb018', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', '00003d5b-6c7e-52c5-8462-835b7f66855d', 3, 'tai', NULL), +('86e5b4a9-c3f3-528d-8932-f6faf9c88648', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', '78a5e6aa-6f32-5e6b-bfd3-d55d6472a17f', 5, 'tai', NULL), +('1f79c280-720d-5c85-9394-65b14e53a47d', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', 'ea000042-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('3615cc40-ed79-5868-881b-e9045e3e1d09', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', 'b022ec51-1f8d-575b-913c-22164c09829e', 4, 'cây', NULL), +('e3c9ff10-4441-56cc-b9b2-c20b989e06a4', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', 'b82b90fe-4236-581e-81dc-404daa4cd0eb', 1, 'chén', NULL), +('3fc15cfa-1fda-5048-b1c6-8d2fa4e2dee6', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', '82a3905c-2967-58e7-9018-75fa7cdc57d3', 60, 'g', NULL), +('38d59019-21cc-50b7-b4ad-be0ace5e2bba', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', '21250e63-865a-557a-8bf5-c4f3dfefdb21', 1, 'tô', NULL), +('7a645c7e-98e5-57a6-a207-c9d1c9420e01', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', 'ba3940bb-4b77-5d74-80cb-a42462a155e3', 15, 'g', NULL), +('56b7ac1a-3722-5bcb-a03b-ef3bcaa8446b', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', 'a46b01a1-10c5-5f9a-9074-1caf1239344e', 30, 'g', NULL), +('86a63272-4382-5741-a552-529791f0d9f9', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('5cc2b721-dca9-57e3-bc6a-db1fbc4d20f2', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', '763ce2c3-d4a2-5b49-9251-44a10eb815eb', 2, 'nhánh', NULL), +('ef7c8cbb-665f-5a1f-9a9c-a69a5838da48', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 15, 'g', NULL), +('f02f757e-27f7-5531-9918-7b290bef439d', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('c21ecf2f-9a18-5625-b854-6fb9c5f9b1cf', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('f8bbfb3b-1e7a-569e-8e72-4dd0318862e2', 'f3fe0748-1cd9-51a4-bda1-7460fad14963', 'd18203ed-13ea-59ab-8859-056331896798', 20, 'g', NULL), +('ca95e504-b7c3-5c7b-8063-5c89904210de', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', '1ff1af0f-b06c-5ea6-9af3-3354e1841f65', 300, 'g', NULL), +('d4a14dcd-ff59-5387-a9ae-9c71d2a3b1bc', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', 'e25b1f47-ce58-5a50-af68-73d417f43ec3', 200, 'g', NULL), +('d365a292-79cc-5fce-8b06-ff1505f63415', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', 'c00f36a2-52fc-5426-93a8-5f6d8fe54794', 100, 'g', NULL), +('c03b5cf6-da09-5962-8a55-57e95946da7b', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', 'ea000004-1111-2222-3333-444444444444', 80, 'g', NULL), +('6e72601a-8073-50f6-8e0b-7e62fe761c15', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('81f4a794-4783-508c-aa10-5431bc014afa', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', 'e8fd0bba-5a75-5ef8-b71f-30f7e810ad9d', 20, 'g', NULL), +('8069abad-12d1-5d5f-98d9-f0b5f7a92730', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', 'ea000025-1111-2222-3333-444444444444', 1, 'củ', NULL), +('b17769ec-e511-5090-8765-22eecb122b32', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 22.5, 'g', NULL), +('70ab824c-cd8c-5bc7-bf43-ff72173eddab', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', 'da18f0fd-cf75-58fd-a651-8336ecf2f4da', 15, 'g', NULL), +('1b573d47-cb31-5dd1-a710-8fc46dfbccf0', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('b0d9e112-f647-5cc9-8493-bb82df1e912f', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 15, 'g', NULL), +('567e30e3-f9a1-5c69-bde9-c57e40f16c8e', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', '1ecd2d26-c7bb-5fbc-893e-c224a8636ead', 5, 'g', NULL), +('f30ddad6-75ad-5193-90c4-24ce8d1cf408', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', '1e27539b-7e79-5894-89aa-45939cd64a93', 22.5, 'g', NULL), +('e3099b6c-177a-58d9-a479-83e07a474b25', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 7.5, 'g', NULL), +('cca10002-eb02-58a7-98c9-8061399fb7e2', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', 'b2d624b7-88bf-5389-9572-25ce188893dc', 15, 'g', NULL), +('7246b690-a087-50c6-8f54-1e3d6bc83ce8', 'dc6ceb3f-3e01-58c4-8755-bc42ec761ae9', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('ea8f50db-2574-5a36-be9f-e9574549a95b', '70b1fb0a-0baa-594e-a65d-cc38a948036b', 'd8c52647-0022-52d9-8690-3f1f1d65243d', 1000, 'g', NULL), +('d264d0c8-757e-5875-bdff-284b7bc4b2ed', '70b1fb0a-0baa-594e-a65d-cc38a948036b', '51c3ad2f-4df8-5a80-876a-9f41e77bd1c2', 15, 'g', NULL), +('2b9ef301-f695-53d8-a85d-5f41a8c149b3', '70b1fb0a-0baa-594e-a65d-cc38a948036b', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('dd26a9f7-2c03-5320-9c8c-249caee480f5', '70b1fb0a-0baa-594e-a65d-cc38a948036b', '8a216df6-d053-5fcd-8d46-92cb41669b35', 15, 'g', NULL), +('bd18a196-396e-5aee-ad67-8ca580ea3b57', '70b1fb0a-0baa-594e-a65d-cc38a948036b', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 2, 'quả', NULL), +('4693d9bf-247c-51b1-a13b-0f61e2c460da', '70b1fb0a-0baa-594e-a65d-cc38a948036b', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'nhánh', NULL), +('9f18165a-dc84-5065-8a4e-bfea2f5768f9', '70b1fb0a-0baa-594e-a65d-cc38a948036b', '5a75f354-be21-5524-b51a-60a0cd275504', 500, 'ml', NULL), +('33c0733a-5441-5bf9-aa8d-b04a9beb199a', '70b1fb0a-0baa-594e-a65d-cc38a948036b', 'aafd1691-a1f2-5d23-bcd6-22cef34ebf2d', 30, 'g', NULL), +('308b5271-e967-513c-a6db-d5ecf8e775af', '70b1fb0a-0baa-594e-a65d-cc38a948036b', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('10303852-a707-5abe-9667-b878e84da198', '70b1fb0a-0baa-594e-a65d-cc38a948036b', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 15, 'g', NULL), +('0a9f3b3e-c9d7-5118-b509-6e624ba804e6', '70b1fb0a-0baa-594e-a65d-cc38a948036b', '5abddb73-a86c-5df2-be57-46d3bf38f983', 160, 'g', NULL), +('c30156d2-7e5f-5b2b-9e50-ef2b87e39d2d', '70b1fb0a-0baa-594e-a65d-cc38a948036b', 'a73c9fa5-ca63-50ea-a11e-bad792c9c9bb', 84, 'g', NULL), +('fb13f218-6c95-57af-b5cd-70f1320715c6', '70b1fb0a-0baa-594e-a65d-cc38a948036b', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('c02d36c7-cd4b-5536-893f-3900f8ab6048', '70b1fb0a-0baa-594e-a65d-cc38a948036b', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('2b92499b-118e-50a9-92e5-0c0caef550af', '70b1fb0a-0baa-594e-a65d-cc38a948036b', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 80, 'g', NULL), +('a40468cc-cf67-547a-86ab-c4d9cf8e6fd5', 'a93a3ed3-77d7-5da0-aa80-1abf1c1095db', '8075195a-671b-5c23-aaaf-7e19e24f2d9b', 150, 'g', NULL), +('fdb10311-00e6-5283-bc25-05281f3986c9', 'a93a3ed3-77d7-5da0-aa80-1abf1c1095db', '3f8eda7c-6c14-58f0-8600-04cabe334d03', 150, 'g', NULL), +('0347d7f8-3c7f-5b1e-9413-29d877491bec', 'a93a3ed3-77d7-5da0-aa80-1abf1c1095db', '637ee269-d869-570d-9078-aa02ab43c3fb', 50, 'g', NULL), +('f7a67623-d405-5333-b5cf-25781b3469e9', 'a93a3ed3-77d7-5da0-aa80-1abf1c1095db', '352dd949-b8f8-5265-b436-699fede7f4f0', 200, 'g', NULL), +('ea7914f9-06c1-5d41-b8ab-69c4320a29e5', 'a93a3ed3-77d7-5da0-aa80-1abf1c1095db', '03352f39-1d36-5eb3-b23b-43824e253fdc', 150, 'g', NULL), +('c0caeb32-0404-5762-9cb4-f915e4784fe1', 'a93a3ed3-77d7-5da0-aa80-1abf1c1095db', '6dac1b7d-da28-58dd-aad1-af9c6cd171eb', 1, 'cây', NULL), +('abb7ca43-f78c-50f7-a083-d775e12778a7', 'a93a3ed3-77d7-5da0-aa80-1abf1c1095db', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('da392173-23dd-5e28-8dc9-6829346f9a15', 'a93a3ed3-77d7-5da0-aa80-1abf1c1095db', '7655ef20-209c-5d90-9b12-90434133bf3e', 100, 'g', NULL), +('937037d0-e4db-505b-95dc-0802256dce68', 'a93a3ed3-77d7-5da0-aa80-1abf1c1095db', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('53375a8d-ecba-5092-93f1-149b09cf459b', 'a93a3ed3-77d7-5da0-aa80-1abf1c1095db', 'bd94f5b0-80c2-5c6c-8ac9-e0b17a62be3c', 1, 'g', NULL), +('5d9de353-7712-5568-95e4-10958dbd789c', 'a93a3ed3-77d7-5da0-aa80-1abf1c1095db', '895657ca-7a96-5c5a-9374-5a9a725087e6', 80, 'g', NULL), +('dd967319-f308-564c-94e9-e8c4835e5589', '1be687ef-bfab-5088-a77d-64ff43035e6f', '216df387-ec64-5ecc-9345-48865dcfbae9', 600, 'g', NULL), +('9d0a99b2-432f-5f60-878f-0072cad6e985', '1be687ef-bfab-5088-a77d-64ff43035e6f', '645c333b-2324-5f21-8cef-18929c180feb', 50, 'g', NULL), +('6e51c67a-afa4-5040-8fab-953351ba111c', '1be687ef-bfab-5088-a77d-64ff43035e6f', '4c8aefd1-9515-59ca-a7f9-db1510310413', 10, 'g', NULL), +('e718f228-7694-5881-99ac-45d71f0500b5', '1be687ef-bfab-5088-a77d-64ff43035e6f', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 30, 'g', NULL), +('8e01eb4f-a552-548b-8037-f350d2bc552d', '1be687ef-bfab-5088-a77d-64ff43035e6f', 'ea000034-1111-2222-3333-444444444444', 15, 'g', NULL), +('170bee2f-5a32-5c29-8536-c1a618fc1fac', '1be687ef-bfab-5088-a77d-64ff43035e6f', 'c7830d28-5f54-5d35-8ec4-4a2a8b86025d', 45, 'g', NULL), +('383ec94c-ffd9-5797-b650-8f5eda2830b5', '1be687ef-bfab-5088-a77d-64ff43035e6f', '27226863-6866-55d6-9148-7efcb4773123', 1, 'trái', NULL), +('533d0e6a-0021-5627-880d-b429b0580591', '1be687ef-bfab-5088-a77d-64ff43035e6f', '86eda42e-989d-5587-8f1d-96a2d9416a85', 30, 'g', NULL), +('053220e7-60c5-50d6-8b05-689e0e2015af', '1be687ef-bfab-5088-a77d-64ff43035e6f', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 45, 'g', NULL), +('7b483030-7ff5-5d4e-ace4-47bd54b45b22', '1be687ef-bfab-5088-a77d-64ff43035e6f', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('fe9b4570-845b-5694-a449-e10da806f562', '1be687ef-bfab-5088-a77d-64ff43035e6f', '2ccb022f-44ad-592f-bab2-a295f707bb29', 15, 'g', NULL), +('1f945967-40e5-5fa2-9344-0229a60fe1c2', '1be687ef-bfab-5088-a77d-64ff43035e6f', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 30, 'g', NULL), +('b536a7ce-ed6b-5792-8a36-1363e353dc99', '1be687ef-bfab-5088-a77d-64ff43035e6f', '81352d27-2e9f-52ee-9865-a97f5a5dd6aa', 20, 'g', NULL), +('96ac6c7f-989e-5eea-b6ac-3b151c3b7fa8', '1be687ef-bfab-5088-a77d-64ff43035e6f', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('fc1c975d-bc6c-5e6a-a055-09b66553da1b', '49bd1af1-6aea-5de8-b322-4867c7322084', '73cb3e0a-5abc-5c6c-a7a2-7a9ac350f4cd', 200, 'g', NULL), +('84a79c94-56e3-5f4a-a3fe-29a2ad9fe94b', '49bd1af1-6aea-5de8-b322-4867c7322084', '18e626bc-96fb-5559-a2e5-de1335d52ddf', 5, 'g', NULL), +('54fb9fa3-dcfe-54ca-b3b1-ed762480c21a', '49bd1af1-6aea-5de8-b322-4867c7322084', 'ea000022-1111-2222-3333-444444444444', 50, 'g', NULL), +('fdb0da13-10e0-56d2-8b9a-5103008c00aa', '49bd1af1-6aea-5de8-b322-4867c7322084', 'ea000004-1111-2222-3333-444444444444', 80, 'g', NULL), +('94600373-b66c-5ae7-ad59-64d45737899e', '49bd1af1-6aea-5de8-b322-4867c7322084', '3ffde083-de57-5e0b-aed6-e015e442d36c', 60, 'g', NULL), +('7f19cc9b-12b4-5887-9be1-8e94116deb77', '49bd1af1-6aea-5de8-b322-4867c7322084', '4337af1d-dfd7-5fdb-bb5e-f978c380e67d', 20, 'g', NULL), +('d6b73625-6c84-510d-ba39-f5cf54a98ffe', '49bd1af1-6aea-5de8-b322-4867c7322084', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('bfb9f90d-0f87-58c9-a625-29625ca1b4d1', '49bd1af1-6aea-5de8-b322-4867c7322084', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 30, 'g', NULL), +('4d065da9-8381-5f5a-a20b-c07bd365dbe8', '49bd1af1-6aea-5de8-b322-4867c7322084', '99157107-8cbc-5715-97f1-620017377993', 1.67, 'g', NULL), +('32d3972e-45f5-585c-8e57-fbf8f4dbaa04', '49bd1af1-6aea-5de8-b322-4867c7322084', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 1.67, 'g', NULL), +('d65d17f7-28d3-535f-aa9b-c9b43d8a2aa9', '49bd1af1-6aea-5de8-b322-4867c7322084', 'a0e1c75b-6562-50b5-81a6-717d202606c1', 15, 'g', NULL), +('a544f13d-6e3d-5341-a1bd-02dca5aad15c', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '00003d5b-6c7e-52c5-8462-835b7f66855d', 50, 'g', NULL), +('cc90c183-f8f5-5a3b-b45c-955bf86fdb38', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', 'f2009226-7ffd-5736-9a29-a58ababedc01', 150, 'g', NULL), +('c82a25cf-ed2e-5eeb-b3a4-136c3b3ee44c', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', 'ea000004-1111-2222-3333-444444444444', 1, 'quả', NULL), +('8abc0156-8a86-547a-80d1-f4ae31a8890f', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '36062c40-d2ab-53db-9f7a-bc177319bd1c', 1000, 'ml', NULL), +('63399ab9-6a85-5061-b776-ec2d50e8d7ea', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 5, 'g', NULL), +('d9945360-a2c1-5871-b954-f0b515fd562d', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '08d1829f-bf51-5ea2-a239-084586479cfa', 200, 'g', NULL), +('662d2420-89b3-539b-98b2-0c0f6f96b259', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 45, 'g', NULL), +('679ddb5b-0834-515b-98f9-3cc0519af925', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '725e64c6-e003-54c3-b1a3-5c562700b224', 0.5, 'miếng', NULL), +('ea0a142d-f595-5ff3-86ac-576b66ac16ea', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '288e2c53-d0ac-54c7-bd51-c3216933933b', 4, 'cây', NULL), +('5a2c5c53-e060-5e27-b290-c46cadad4ffc', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '4fb0b0e1-e745-5e30-b55f-2ef3bad257d9', 100, 'g', NULL), +('2585c903-918c-5e3a-967d-84725917bade', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 15, 'g', NULL), +('f3e8960f-1f5b-5550-9ccb-aff54789ccfb', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', 'b2d624b7-88bf-5389-9572-25ce188893dc', 7.5, 'g', NULL), +('031636af-a08a-5ba8-8c77-6f69c82872d0', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', 'a46b01a1-10c5-5f9a-9074-1caf1239344e', 7.5, 'g', NULL), +('815cb063-1a28-5fbd-9a00-56e5ee324f1b', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 7.5, 'g', NULL), +('4771ca16-ff41-59ef-bd66-af42709021ee', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', 'dd711f5b-3ba5-5681-a8b5-05908f41e15b', 2.5, 'g', NULL), +('e6fb90d2-46b4-52c8-a0b5-66c472eced2d', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('2c211f46-ad15-5ea0-b933-7480a63af373', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', 'e599e212-c4e7-507c-a3fe-9704649a9794', 60, 'g', NULL), +('27400551-d13b-5db5-963f-549c69d15bde', 'b9f3dc29-b4e1-5e7c-ac60-bbc72f325e4d', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('06889a1f-ec17-52eb-9717-a9dd1e3d0055', 'dfaecf70-c5ce-59eb-8f66-8504455e3809', 'ea000004-1111-2222-3333-444444444444', 160, 'g', NULL), +('3988e378-8aff-57cc-a927-8ac6e0fb40af', 'dfaecf70-c5ce-59eb-8f66-8504455e3809', 'b18fa243-2ac1-5b36-ba27-8b3233668db7', 5, 'g', NULL), +('da93c6ed-e2cd-5a52-8f7a-78634f5cefba', 'dfaecf70-c5ce-59eb-8f66-8504455e3809', 'ea000005-1111-2222-3333-444444444444', 50, 'g', NULL), +('db59b622-33f0-51d2-8125-840444ec4781', 'dfaecf70-c5ce-59eb-8f66-8504455e3809', '6b6d3478-c6ea-5a59-ad81-b339d844074e', 100, 'g', NULL), +('95026fc1-55f3-5703-a7da-1ede2dc2c159', 'dfaecf70-c5ce-59eb-8f66-8504455e3809', '86eda42e-989d-5587-8f1d-96a2d9416a85', 3, 'nhánh', NULL), +('8da1cbcf-cb5f-5034-88c1-cf92be0e374a', 'dfaecf70-c5ce-59eb-8f66-8504455e3809', '18e626bc-96fb-5559-a2e5-de1335d52ddf', 4, 'miếng', NULL), +('595a5149-2448-51b3-9dcc-bd2e5a4fa8fe', 'dfaecf70-c5ce-59eb-8f66-8504455e3809', 'af9ce6dc-d6c2-5483-ad05-4de440ba20fe', 200, 'g', NULL), +('364aa83b-c967-5a05-ba7a-a2a8a16c9f42', 'dfaecf70-c5ce-59eb-8f66-8504455e3809', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('82349dce-2ff5-56cd-8756-a0a12541474a', 'dfaecf70-c5ce-59eb-8f66-8504455e3809', '1ea97d2d-e036-5fb9-9db2-ff3640724a46', 30, 'g', NULL), +('20966deb-e969-5416-928e-0b53a152b7b5', 'dfaecf70-c5ce-59eb-8f66-8504455e3809', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('4045e6ef-3d4a-58fc-aa12-7292af8ac1a8', 'dfaecf70-c5ce-59eb-8f66-8504455e3809', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('3c0caf0c-809b-5064-b7a1-1b22916a446f', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', '197fd433-4561-5175-9f04-35ba4ae89b68', 500, 'g', NULL), +('1d1eb419-7e27-5442-8bd7-e3c31a56317e', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', 'b022ec51-1f8d-575b-913c-22164c09829e', 1, 'cây', NULL), +('5811c72c-9310-5178-b24c-36df916aee4d', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', '6f834874-ecea-5bf3-8147-38ec708d6432', 20000, 'ml', NULL), +('fb47e5fd-c156-5388-9987-5cb5638d5473', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', '4f9b93c5-e0cb-55d8-aa81-707d91b6d5c2', 30, 'g', NULL), +('43f451a6-043c-5673-987d-37d83c8333e4', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', '4b14b4cd-3fc2-565a-984a-9f75d0c8272b', 15, 'g', NULL), +('5c4a81b3-5a4b-5a56-8cbe-784e769611c7', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', '3ffde083-de57-5e0b-aed6-e015e442d36c', 15, 'g', NULL), +('b96013f9-ebec-547c-adbf-5aec1b5b7249', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('3f844c2f-111c-5dba-b2ca-df1ae7ce8973', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 15, 'g', NULL), +('b2c40572-b133-577e-a7d5-fd5bd85bcdbf', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('8d56a890-9e2a-585f-8202-d62a0b286f6a', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('3f2e32c2-7086-5f41-bf21-1ecb00f2dc23', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('8e692531-ea35-5c2d-b7a0-fba16c9ec00f', '0dc61ae0-7ba9-5bf3-8529-86d7e380551c', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('81c8283f-6c7c-5a5f-84a5-4014d49f4866', 'b60d8e7c-43a7-5f1c-96c2-44e0684d03d9', 'ea000005-1111-2222-3333-444444444444', 220, 'ml', NULL), +('0bbf6879-5b06-53eb-80f0-a3ad2b384ffb', 'b60d8e7c-43a7-5f1c-96c2-44e0684d03d9', 'ea000004-1111-2222-3333-444444444444', 160, 'g', NULL), +('f3ad493c-f2ca-56b6-a3c6-3aa4c8197ec1', 'b60d8e7c-43a7-5f1c-96c2-44e0684d03d9', '1e3e8fab-c862-5009-ba9f-aadd65e325bc', 80, 'g', NULL), +('79eac2c9-3014-53f0-bb5a-3cb7819173d3', 'b60d8e7c-43a7-5f1c-96c2-44e0684d03d9', '6b6d3478-c6ea-5a59-ad81-b339d844074e', 40, 'g', NULL), +('6092bf8f-a5eb-50a4-b960-9683b4d52d23', 'b60d8e7c-43a7-5f1c-96c2-44e0684d03d9', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'nhánh', NULL), +('779d1208-f2fa-5d6e-9987-2d1530c96f34', 'b60d8e7c-43a7-5f1c-96c2-44e0684d03d9', '66e14d2e-88cc-50db-b418-bfee995f9873', 1, 'g', NULL), +('cb91e3db-0401-5d85-9f73-747ec27231f3', 'b60d8e7c-43a7-5f1c-96c2-44e0684d03d9', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('112c913d-40ed-5584-988c-555d948b77a0', '7f2a51f2-b3cc-579d-a10b-297b97ae4dac', '04e261d0-df24-5d41-8518-9612e8ecbd1f', 200, 'g', NULL), +('1fab0ff3-b28b-5072-870d-2b0f5c61b13b', '7f2a51f2-b3cc-579d-a10b-297b97ae4dac', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 30, 'g', NULL), +('8ac3dc72-1c66-57a2-9965-ba3c0d67c3ea', '7f2a51f2-b3cc-579d-a10b-297b97ae4dac', 'c67982e5-41d2-5e27-b4d5-6ac379d98601', 7.5, 'g', NULL), +('ea7ea848-650d-5286-ac4b-0cfd3df7d9e4', '7f2a51f2-b3cc-579d-a10b-297b97ae4dac', '91b500a5-04fd-51e2-ab6d-50609fe3dddb', 15, 'g', NULL), +('71150baa-ce6e-5524-bc25-9ac906446ebd', '7f2a51f2-b3cc-579d-a10b-297b97ae4dac', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 50, 'g', NULL), +('a28be017-cc2f-5ea5-8fe3-1c58610b9740', '7f2a51f2-b3cc-579d-a10b-297b97ae4dac', '6d1d4481-bae6-5af8-a86a-525b20f38c1f', 20, 'g', NULL), +('7cdd3fe5-2da8-52dc-9a81-5ac79d26053e', '7f2a51f2-b3cc-579d-a10b-297b97ae4dac', '10205986-c894-59e8-9054-829ba8404a76', 80, 'g', NULL), +('fafd2d08-b82b-53d8-be00-53d289a870b2', '7f2a51f2-b3cc-579d-a10b-297b97ae4dac', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('ceb6be9e-a867-5d25-9aec-1cbfa1baef7e', '7f2a51f2-b3cc-579d-a10b-297b97ae4dac', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('38c7b46c-32cf-5147-b0cc-364e94038e82', '7f2a51f2-b3cc-579d-a10b-297b97ae4dac', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('564d5a25-db58-5b60-ba17-8a84f762c7af', 'd16ecb5b-eefc-5fb4-9d15-42edac19985a', '5f9fca18-73fd-511b-8e4b-c72573da5510', 300, 'g', NULL), +('25bf7754-02d4-5892-aaa6-6be75ffe37c7', 'd16ecb5b-eefc-5fb4-9d15-42edac19985a', 'ea000004-1111-2222-3333-444444444444', 50, 'g', NULL), +('6a913924-0cc0-5524-bd69-ffd4f87e48dc', 'd16ecb5b-eefc-5fb4-9d15-42edac19985a', 'fe0a7f24-4012-5ea3-af39-7a7e06cd5691', 0.5, 'g', NULL), +('41ed1cdc-12d1-5351-8527-d40ca4e42692', 'd16ecb5b-eefc-5fb4-9d15-42edac19985a', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 12, 'g', NULL), +('dd35605b-66f3-59d5-b5da-718d88d3ef17', 'd16ecb5b-eefc-5fb4-9d15-42edac19985a', 'ea000007-1111-2222-3333-444444444444', 320, 'g', NULL), +('4a1e4f55-6963-54c3-adfb-5871fee8a3b9', 'd16ecb5b-eefc-5fb4-9d15-42edac19985a', 'ea000042-1111-2222-3333-444444444444', 80, 'g', NULL), +('d407593a-2880-5e42-8e2d-18ad71dd8fdb', '03c5c948-ffcd-5f0b-b8d8-12a43636a4f2', 'b2f3e90c-24a9-5ed0-bf3f-39d7717dde9a', 200, 'g', NULL), +('12560c41-3636-5d00-8eea-0947ecf926df', '03c5c948-ffcd-5f0b-b8d8-12a43636a4f2', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 50, 'g', NULL), +('30d12dda-f1cf-54a2-9412-492bd67c6477', '03c5c948-ffcd-5f0b-b8d8-12a43636a4f2', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 20, 'g', NULL), +('7ff57787-3550-541b-9a31-d92b3a754394', '849a88ac-f4e2-5fe0-beb9-c1688045570d', 'e3ac931a-da22-5606-a475-47a0b80a07ee', 500, 'g', NULL), +('ebac8dbf-d732-53a7-8cf8-3f21493c1360', '849a88ac-f4e2-5fe0-beb9-c1688045570d', '79057839-1f37-5822-8125-c087a0abc556', 200, 'g', NULL), +('df97a990-9804-5501-8b21-ca6c8f3c5b26', '849a88ac-f4e2-5fe0-beb9-c1688045570d', 'd18203ed-13ea-59ab-8859-056331896798', 50, 'g', NULL), +('eec1392b-3b94-5b4d-a6b3-06378f8cafcd', '849a88ac-f4e2-5fe0-beb9-c1688045570d', '2cdcb094-33c3-5341-8f20-b6baddf8508e', 100, 'g', NULL), +('2e32b98c-6d56-5f37-b6b9-c83a43b1d6bd', '849a88ac-f4e2-5fe0-beb9-c1688045570d', '874a0b93-963e-5d37-aa0d-9a41df35b4e4', 100, 'g', NULL), +('aea6517c-4354-54b8-8577-0f4658b0f8c2', '5a31efba-2d55-5a63-9c28-e0170f452a2f', '6b1c6e79-efc2-58d7-b588-27f32c3c1ec1', 150, 'g', NULL), +('29efb691-b404-5083-b86c-df8e6dc051b3', '5a31efba-2d55-5a63-9c28-e0170f452a2f', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('5fd191ab-ca09-506c-9626-e2c076ec5ce7', '5a31efba-2d55-5a63-9c28-e0170f452a2f', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 22, 'g', NULL), +('ea446fcd-813d-59e8-b2a4-ebe970879ed8', '5a31efba-2d55-5a63-9c28-e0170f452a2f', 'c1ea17fe-fc3a-571e-b0f5-45bc30de660b', 5, 'g', NULL), +('b3fe5d15-560c-57ce-933f-08a5ddd0b29b', 'db880aae-2705-57ca-bee6-b3aa5799a857', 'f65e6447-52c5-5033-8533-db43ec3c01ca', 400, 'g', NULL), +('ba08b575-57ec-5795-8173-07d03dd03723', 'db880aae-2705-57ca-bee6-b3aa5799a857', 'ea000034-1111-2222-3333-444444444444', 40, 'g', NULL), +('cff847ae-8669-599b-ab5f-61c730435653', 'db880aae-2705-57ca-bee6-b3aa5799a857', 'e9fcf788-e426-5129-ab18-332eed40ebeb', 40, 'g', NULL), +('81b34f0b-5fb4-5d49-ab45-d1d3b2b88a86', 'db880aae-2705-57ca-bee6-b3aa5799a857', '80a2f2dd-b1bc-56ae-b8a6-fdb1120053f8', 1, 'quả', NULL), +('07001a06-9a56-565a-afa3-ee7ca6dedfcb', 'db880aae-2705-57ca-bee6-b3aa5799a857', '679a3e05-1ba1-5eb0-b224-54b3479496ef', 4, 'g', NULL), +('2bf1ff2e-9fb3-53a6-83d6-d84ac67abd37', 'db880aae-2705-57ca-bee6-b3aa5799a857', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 20, 'g', NULL), +('9c99d688-95b2-558b-8b00-ab7a55f34f92', 'db880aae-2705-57ca-bee6-b3aa5799a857', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 3, 'quả', NULL), +('b1d20731-ba18-5a3d-86ed-791a8f0eaba6', 'db880aae-2705-57ca-bee6-b3aa5799a857', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 2, 'tép', NULL), +('8ea6715f-10a4-5d2d-8ac4-c8250cce67a8', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', 'e0ad5c7e-39e2-546e-b4eb-b58aace28a91', 150, 'g', NULL), +('f00051c1-75a2-5807-b09a-8908b7cb575b', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', 'a121b4bf-0fd8-5457-bcfd-dd57464fff34', 100, 'g', NULL), +('1365863d-4c7e-5386-8380-ef9f1cc0a5a2', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', 'e7c4aaed-2c2b-5086-988f-92fa29cdd552', 50, 'g', NULL), +('688f0408-2e77-53c1-8101-d5d8ca1db3ca', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', 'b30db8fd-855d-5155-94a8-b3bb057092d8', 100, 'g', NULL), +('20feff27-7d9f-54de-82ba-fdd0fa419a1c', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', '00bf9726-71aa-5a08-ac4f-d4163cb08bb4', 100, 'g', NULL), +('4423cdc4-e2ef-5e24-9eb6-ea2a86120ff8', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', 'dd1bfb18-aa3c-5de5-aaaf-f2f3c3e36f22', 100, 'g', NULL), +('0db2259c-ebb8-58e8-91ab-a0c1ed7ebda8', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', '36062c40-d2ab-53db-9f7a-bc177319bd1c', 1500, 'ml', NULL), +('5951ffa3-a9e4-5f83-baea-4e26ccfdafbb', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', '7b79c355-b42c-5c96-b95a-5d1e311434a7', 100, 'g', NULL), +('00fba724-97e2-55b6-b84f-2ced76b1b12e', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('adc535d9-fbf2-560d-a772-425d7b0f1b71', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 20, 'g', NULL), +('37b2080c-3500-5316-9b4a-d95ed8f862b1', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('ae9bba23-5670-5c2c-8606-db82bc53daa8', 'ea40f14f-aca7-5948-97b8-4442d60e9d3e', 'dd711f5b-3ba5-5681-a8b5-05908f41e15b', 5, 'g', NULL), +('1a395840-4bdd-51bf-aad9-fd8b8963b90a', '36bba4ed-be21-539a-bd9a-6db762e28a76', 'ddda7b85-32b1-5d4d-9516-237f59f6e5d8', 40, 'g', NULL), +('8937206a-42c5-552d-bf7f-14b26fdc11f9', '36bba4ed-be21-539a-bd9a-6db762e28a76', '0b0416c4-8080-5c99-b4d0-424df6ded579', 30, 'g', NULL), +('e810c2c4-f803-554b-aae8-375f43625c29', '36bba4ed-be21-539a-bd9a-6db762e28a76', '86eda42e-989d-5587-8f1d-96a2d9416a85', 10, 'g', NULL), +('c5c5939c-2a9f-5883-9875-a6bc6ce20b50', '36bba4ed-be21-539a-bd9a-6db762e28a76', 'ea000004-1111-2222-3333-444444444444', 100, 'g', NULL), +('7ff91d5c-0ff1-5fb5-9a33-ed75a33aa05f', '36bba4ed-be21-539a-bd9a-6db762e28a76', '09f86239-76c0-512a-ad02-f9ff2f45c5ff', 50, 'g', NULL), +('71b4f461-e9f4-58d1-a903-31cbcce1c622', '36bba4ed-be21-539a-bd9a-6db762e28a76', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('48a2440f-f2a0-5fac-afc3-845f66714123', '36bba4ed-be21-539a-bd9a-6db762e28a76', '1dfd46f5-c134-5384-877e-6251caab3ae7', 5, 'g', NULL), +('ad5dafc2-c015-5aaf-b105-2373324ad094', '36bba4ed-be21-539a-bd9a-6db762e28a76', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 200, 'g', NULL), +('7ca11eb2-e4bc-559a-8ec7-d4d258a549c5', '36bba4ed-be21-539a-bd9a-6db762e28a76', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 80, 'g', NULL), +('a37e2e4e-a638-510a-aaa7-f899a70add0e', '36bba4ed-be21-539a-bd9a-6db762e28a76', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 20, 'g', NULL), +('1254db12-d767-5ee4-b827-0be02ad322a8', '36bba4ed-be21-539a-bd9a-6db762e28a76', '1e27539b-7e79-5894-89aa-45939cd64a93', 20, 'g', NULL), +('700fbef6-4078-5d2c-a013-add28d52f401', '0d61c9eb-12d8-5438-abee-48aab18cc889', 'ea000002-1111-2222-3333-444444444444', 300, 'g', NULL), +('517db8fb-b52e-5664-984b-12b6dbd2624c', '0d61c9eb-12d8-5438-abee-48aab18cc889', '0595657d-790b-5c3c-bde1-d2637bfb2263', 20, 'g', NULL), +('76e57f64-1e1a-56c9-80f9-c7f02273e48b', '0d61c9eb-12d8-5438-abee-48aab18cc889', 'e06cbc37-28eb-5a7e-9f8e-830807f11760', 200, 'g', NULL), +('2265c091-e554-5df0-9ec4-0d4d182b9482', '0d61c9eb-12d8-5438-abee-48aab18cc889', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 100, 'g', NULL), +('791bebab-c80c-582f-81c6-f364007bc5d3', '0d61c9eb-12d8-5438-abee-48aab18cc889', 'ea000023-1111-2222-3333-444444444444', 100, 'g', NULL), +('4603902d-ecfa-5bfb-a912-bfba5d8da941', '0d61c9eb-12d8-5438-abee-48aab18cc889', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('06557e59-37c8-5da5-abcc-6e02530495e2', '0d61c9eb-12d8-5438-abee-48aab18cc889', '7e666b30-7a9f-58c2-8f0f-23d05b3f6b35', 100, 'g', NULL), +('d5fd82f2-8568-5682-9978-19ed9f6e2cca', '0d61c9eb-12d8-5438-abee-48aab18cc889', '616badad-8904-5bf3-83f7-c8096d537221', 50, 'g', NULL), +('51ed6e89-4b5f-5904-be53-7d1a7c78a396', '0d61c9eb-12d8-5438-abee-48aab18cc889', 'ea000025-1111-2222-3333-444444444444', 100, 'g', NULL), +('94ab4df0-e66e-59c7-abe5-1ff27a808ef5', '0d61c9eb-12d8-5438-abee-48aab18cc889', '5824249f-4a90-5eb8-ab3e-fe00ffdbf0bb', 0.5, 'trái', NULL), +('51bd9b6f-61ff-5e87-b0ed-bd83d25d1976', '0d61c9eb-12d8-5438-abee-48aab18cc889', 'ea000008-1111-2222-3333-444444444444', 5, 'g', NULL), +('98b654bc-5d6b-5081-91b0-935d4706fe3a', '0d61c9eb-12d8-5438-abee-48aab18cc889', '1e27539b-7e79-5894-89aa-45939cd64a93', 28, 'g', NULL), +('fe505818-615e-5649-9d6a-5e3d2c21c21a', '0d61c9eb-12d8-5438-abee-48aab18cc889', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 14, 'g', NULL), +('1de66f9f-e876-5510-981a-66448d8953a0', '0d61c9eb-12d8-5438-abee-48aab18cc889', '679a3e05-1ba1-5eb0-b224-54b3479496ef', 5, 'g', NULL), +('1484cbaf-cc57-530a-a016-2107cb4db001', '0d61c9eb-12d8-5438-abee-48aab18cc889', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('c601f04b-9a5c-5508-95c1-916f2bed52bf', '0d61c9eb-12d8-5438-abee-48aab18cc889', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('27dbaf1a-52c9-52f4-8091-0f15a9622e9a', '67755ec3-6df0-56dd-a5af-c141defd7c2d', '0a57db2d-c90a-502f-b3b4-75a09401eb1e', 150, 'g', NULL), +('ab980d7a-7c03-5663-8d66-6cefbb69623c', '67755ec3-6df0-56dd-a5af-c141defd7c2d', 'ddda7b85-32b1-5d4d-9516-237f59f6e5d8', 100, 'g', NULL), +('fe812200-ecb4-52e9-998d-f0e79e7c3e5e', '67755ec3-6df0-56dd-a5af-c141defd7c2d', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('7cf15108-134b-5fea-bdcf-3e8a34bcf70f', '67755ec3-6df0-56dd-a5af-c141defd7c2d', 'ed51eb54-3dc6-53cf-a660-c7ebbe2b6a00', 100, 'g', NULL), +('7d6e8fe0-8538-51da-b548-1884c473ec8a', '67755ec3-6df0-56dd-a5af-c141defd7c2d', 'ea000060-1111-2222-3333-444444444444', 100, 'g', NULL), +('74a81158-cad2-510c-92c6-5d7ee33106eb', '67755ec3-6df0-56dd-a5af-c141defd7c2d', 'af2bc91a-1e49-5c64-97c3-866397e23213', 80, 'g', NULL), +('f1ed9f4c-f31a-5502-9144-49aff736f5bd', '67755ec3-6df0-56dd-a5af-c141defd7c2d', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('93fd3145-b60d-5a1b-b72a-c81a777f12e2', '67755ec3-6df0-56dd-a5af-c141defd7c2d', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('50b08888-1547-58a8-a22e-b66007e79bd4', '67755ec3-6df0-56dd-a5af-c141defd7c2d', '5a75f354-be21-5524-b51a-60a0cd275504', 20, 'g', NULL), +('ec8d48c6-dc91-552a-9071-bf639614357f', 'aa51707a-de5f-59cd-bc43-86d86642ac36', 'ea000004-1111-2222-3333-444444444444', 4, 'quả', NULL), +('6a5fb13d-f619-598f-a7aa-3ed56495ad25', 'aa51707a-de5f-59cd-bc43-86d86642ac36', '7248883b-832e-5f90-8d99-7cea0854c072', 80, 'g', NULL), +('9e86fe01-e9a4-58a7-8d0b-8fc656cc884e', 'aa51707a-de5f-59cd-bc43-86d86642ac36', '53173c43-ceb6-5e4d-970c-bde40e42e7b1', 20, 'g', NULL), +('c8317f61-b87f-5ad1-b81a-10b5983feaa6', 'aa51707a-de5f-59cd-bc43-86d86642ac36', '50c21f91-3f06-56dd-90cb-35326b517168', 7.5, 'g', NULL), +('8c18ecea-b0af-5cc2-ae5d-c12c7665be3a', 'aa51707a-de5f-59cd-bc43-86d86642ac36', '1b49e6f9-d40f-5223-8fc3-61c0c20cb669', 200, 'g', NULL), +('15cc3838-9ed9-59d8-a32e-6172fb2d1a2f', 'aa51707a-de5f-59cd-bc43-86d86642ac36', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 30, 'g', NULL), +('584ce920-c2a8-5d03-b150-d3201b94e11a', 'aa51707a-de5f-59cd-bc43-86d86642ac36', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 2, 'g', NULL), +('b206355d-d48b-55eb-9022-e67cc6599f08', 'aa51707a-de5f-59cd-bc43-86d86642ac36', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 20, 'g', NULL), +('1eb9c924-8a70-54df-bbce-eaafd4d28155', 'aa51707a-de5f-59cd-bc43-86d86642ac36', 'c73fbfb2-02bc-5f98-9722-11c82ef8b03b', 5, 'g', NULL), +('fbe3f6f2-5744-5868-b458-b7e2c91452c1', '81a8f66a-8bce-528c-851e-ec5789754765', '5e0e50c1-1eaf-53e5-937a-7e2bdb1d6cac', 200, 'g', NULL), +('b5a8efb4-ac27-541d-bdbb-d249d0f9a742', '81a8f66a-8bce-528c-851e-ec5789754765', 'f9fec473-971f-55bd-8f91-daece04470d7', 100, 'g', NULL), +('e6129363-48ea-5192-b838-41ccd731f616', '81a8f66a-8bce-528c-851e-ec5789754765', '677e06b4-2913-50ac-9d18-1a37804ebc1a', 100, 'g', NULL), +('23a3379d-d69e-5487-8be2-2c5277afa899', '81a8f66a-8bce-528c-851e-ec5789754765', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('aa40f1b3-f6c6-5c56-a672-53e81f706d46', '81a8f66a-8bce-528c-851e-ec5789754765', '352dd949-b8f8-5265-b436-699fede7f4f0', 100, 'g', NULL), +('a0e7238d-b575-5d83-b6d6-11b30a19671d', '81a8f66a-8bce-528c-851e-ec5789754765', '5b1f71a2-8d75-5a5f-afee-e05752a582d5', 100, 'g', NULL), +('817c4924-80ac-57c1-ba8b-3ecaa73b5bb9', '81a8f66a-8bce-528c-851e-ec5789754765', '00bf9726-71aa-5a08-ac4f-d4163cb08bb4', 50, 'g', NULL), +('74102e29-9c96-5f2e-ab7f-7ccf0d3227fc', '81a8f66a-8bce-528c-851e-ec5789754765', '4bbb2703-742d-5cf9-be8d-90cfc553590c', 30, 'g', NULL), +('0f1c57f3-a8c0-529e-bbd9-df75702566ad', '81a8f66a-8bce-528c-851e-ec5789754765', '99a78ed3-82eb-5862-8011-e56cc4611f01', 80, 'g', NULL), +('7ac3e59c-5528-5329-a587-0623960aeb44', '81a8f66a-8bce-528c-851e-ec5789754765', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('ab8cc91d-338d-56ab-b65c-bf81ba0c92ca', '81a8f66a-8bce-528c-851e-ec5789754765', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('0a5d9537-7af4-5658-9aa7-8b9636f3ec2e', '81a8f66a-8bce-528c-851e-ec5789754765', '7510fed2-dbca-5710-9332-9227131281bd', 5, 'g', NULL), +('fa95b458-bc48-5656-bf2b-0a3a23a74688', '81a8f66a-8bce-528c-851e-ec5789754765', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('a8a9be21-3864-5952-ab2e-9e3336800da6', 'fd296df8-c1d3-5f7d-b468-3cbff0b856b3', '1e3e8fab-c862-5009-ba9f-aadd65e325bc', 50, 'g', NULL), +('a2302a99-a842-5f5a-9d11-e0bc7a5c6f90', 'fd296df8-c1d3-5f7d-b468-3cbff0b856b3', '589a55db-a30b-5804-becb-96940dd94240', 30, 'g', NULL), +('debc4e48-f9f8-5eb5-af1f-cae9801402db', 'fd296df8-c1d3-5f7d-b468-3cbff0b856b3', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 50, 'g', NULL), +('0a95b986-93fb-564c-9612-a9b7681e1c88', 'fd296df8-c1d3-5f7d-b468-3cbff0b856b3', '03cdcbd3-eb4b-51f3-a509-442fa4f83a1d', 30, 'g', NULL), +('1323426b-347f-505b-a92b-f6de2fb819d7', 'fd296df8-c1d3-5f7d-b468-3cbff0b856b3', 'ea000023-1111-2222-3333-444444444444', 50, 'g', NULL), +('58370d0a-b4d5-5af8-8c45-7d6c09fec883', 'fd296df8-c1d3-5f7d-b468-3cbff0b856b3', '5f70184d-5059-57a5-9ac5-fa10b1ab6fff', 20, 'g', NULL), +('c6410314-1df6-5466-815f-ef5b1a74d48d', 'fd296df8-c1d3-5f7d-b468-3cbff0b856b3', '7f4fdcbc-054b-579a-8128-b7cf5065eca0', 50, 'g', NULL), +('416d3444-8236-55c7-be69-3638bbd206c8', 'fd296df8-c1d3-5f7d-b468-3cbff0b856b3', '99157107-8cbc-5715-97f1-620017377993', 5, 'g', NULL), +('f8113847-c2c9-5707-b945-80ca88e48824', 'fd296df8-c1d3-5f7d-b468-3cbff0b856b3', 'a56bece1-24f5-5615-b990-ee8b353730d4', 100, 'g', NULL), +('54dd9d7f-0d12-55a9-8600-1b8c46e56136', 'fd296df8-c1d3-5f7d-b468-3cbff0b856b3', '7248883b-832e-5f90-8d99-7cea0854c072', 100, 'g', NULL), +('18ef318d-de66-5f7f-855d-a7819737dd3f', 'fd296df8-c1d3-5f7d-b468-3cbff0b856b3', '3f875012-7423-5136-ad62-f360fc63eb4d', 20, 'g', NULL), +('befc1922-d327-5cf1-9935-c7e0aab2fa7c', '3ea0d10f-dc2a-57f3-bc78-8d3855659f2e', 'ea000026-1111-2222-3333-444444444444', 80, 'g', NULL), +('836bb005-cece-509d-9968-f6e9a2054f65', '3ea0d10f-dc2a-57f3-bc78-8d3855659f2e', 'ea000004-1111-2222-3333-444444444444', 150, 'g', NULL), +('6925b2d5-e560-5ae5-9e19-393f7bec25c2', '3ea0d10f-dc2a-57f3-bc78-8d3855659f2e', 'ea000024-1111-2222-3333-444444444444', 10, 'g', NULL), +('83d82262-5ae6-5534-a4e9-55dba3d4a087', '3ea0d10f-dc2a-57f3-bc78-8d3855659f2e', 'af2bc91a-1e49-5c64-97c3-866397e23213', 10, 'g', NULL), +('1f1bc6cc-68c8-5391-92a9-619c1b54e2ea', '3ea0d10f-dc2a-57f3-bc78-8d3855659f2e', '97312907-8f92-540a-a6ab-64327b7bc0b4', 10, 'g', NULL), +('01f9d5b3-f795-5fea-acff-1c5d6e6d54c3', '89d49b81-7804-5ee7-b3de-95891503dcbf', 'fe3a8185-ae11-50cd-b7ac-9c576affe5aa', 300, 'g', NULL), +('29d1ef89-4630-5f7d-9d1c-e1192391b155', '89d49b81-7804-5ee7-b3de-95891503dcbf', 'b022ec51-1f8d-575b-913c-22164c09829e', 20, 'g', NULL), +('46f2b1b8-0174-595e-bfbc-212d32c5c73b', '89d49b81-7804-5ee7-b3de-95891503dcbf', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 20, 'g', NULL), +('05deb870-942a-5fd2-9d4a-a51003fed535', '89d49b81-7804-5ee7-b3de-95891503dcbf', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 200, 'g', NULL), +('ecf10b1e-9d5f-58bb-8b31-227fa16ebd73', '89d49b81-7804-5ee7-b3de-95891503dcbf', 'da18f0fd-cf75-58fd-a651-8336ecf2f4da', 100, 'g', NULL), +('d2ada36c-500f-5016-ad6c-a1785f0ce191', '89d49b81-7804-5ee7-b3de-95891503dcbf', 'd0fbfe83-7811-5254-a74f-6fbf80b99480', 50, 'g', NULL), +('9081dad2-4a27-5424-8e68-850ba28702f6', '4a1b6033-5414-533c-acc7-60eecd438a50', 'cf7fa287-4c62-5caf-8393-001028d03360', 300, 'g', NULL), +('19b351fc-2800-5d72-8411-ed6745c0e022', '4a1b6033-5414-533c-acc7-60eecd438a50', 'a6afeb5c-7f53-51b9-abf1-722ca8fa1e87', 300, 'g', NULL), +('af2a73cb-522e-5373-b1b6-6522b2b04f48', '4a1b6033-5414-533c-acc7-60eecd438a50', '9f5e61fb-41bb-565c-ba7d-f1ec5078bee6', 100, 'g', NULL), +('b855ad9a-e70d-5da0-9760-c0fdb1e5c626', '4a1b6033-5414-533c-acc7-60eecd438a50', 'ea000029-1111-2222-3333-444444444444', 600, 'g', NULL), +('3fe0d1a6-c4a5-574b-9f9d-dd409152f8ca', '4a1b6033-5414-533c-acc7-60eecd438a50', '3ea4241d-c101-52e2-b926-bcebba2e912a', 5, 'g', NULL), +('2a130cfb-8364-5300-893d-adc144a97dcf', '4a1b6033-5414-533c-acc7-60eecd438a50', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('9be4235e-4fcf-54f6-bafd-7f70e7a37903', '4a1b6033-5414-533c-acc7-60eecd438a50', 'a46b01a1-10c5-5f9a-9074-1caf1239344e', 5, 'g', NULL), +('3c70c16a-9c47-5359-98fb-f5379aa09f80', '4a1b6033-5414-533c-acc7-60eecd438a50', '5a75f354-be21-5524-b51a-60a0cd275504', 1500, 'ml', NULL), +('bb9e07f3-344c-58c5-b183-169553f97982', '4a1b6033-5414-533c-acc7-60eecd438a50', '9b952022-cec3-5610-9286-831d3770e084', 8, 'g', NULL), +('dd421069-2275-525f-98a6-85ee263b0a33', '4a1b6033-5414-533c-acc7-60eecd438a50', '679a3e05-1ba1-5eb0-b224-54b3479496ef', 2, 'g', NULL), +('9c9545fd-2cab-569e-a0ad-378db2715ebe', '4a1b6033-5414-533c-acc7-60eecd438a50', '213bb763-4705-5b91-95fd-ad3b3507bf5d', 20, 'g', NULL), +('d7c2ae68-06a4-555e-885a-48d76ea8db82', '4a1b6033-5414-533c-acc7-60eecd438a50', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('013f3da6-f55b-5327-adc4-466370459e76', '4a1b6033-5414-533c-acc7-60eecd438a50', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('3df85ef8-d47f-55fc-8b99-11bddd6c57d1', '4a1b6033-5414-533c-acc7-60eecd438a50', '8a216df6-d053-5fcd-8d46-92cb41669b35', 80, 'g', NULL), +('89f37ebb-7c23-5686-b212-2b27188f18f1', '406a11a7-2500-56d0-921a-0d87b49024c4', '36044cfb-1667-5625-9982-0a1b41f3a316', 200, 'g', NULL), +('41e8456e-d1e8-5b16-b268-8e4f3f465124', '406a11a7-2500-56d0-921a-0d87b49024c4', '3c185637-5bee-5a75-8123-6f6367e1de28', 400, 'g', NULL), +('914d2008-2d65-552e-b656-aa098d731f1c', '406a11a7-2500-56d0-921a-0d87b49024c4', 'ea000034-1111-2222-3333-444444444444', 3, 'củ', NULL), +('27fb6a6d-6130-506c-8f1b-fa0bebd27d00', '406a11a7-2500-56d0-921a-0d87b49024c4', '78c45107-8cfc-5d2a-af55-d1ec73021452', 5, 'g', NULL), +('01bce9bc-5873-5a29-9166-621da6aaeb83', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', '904abff1-731f-5bb9-ae41-e47d055b3e63', 150, 'g', NULL), +('3229ef1a-4804-5022-9998-077bbd7634ef', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', '18872757-52d6-535c-ba24-683941c11fbe', 150, 'g', NULL), +('02d53aed-74c4-5ab6-9685-dfb58687781e', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', 'ea000007-1111-2222-3333-444444444444', 150, 'g', NULL), +('b0f686b5-c54b-5a42-9de6-0573d9de0a17', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', 'ed51eb54-3dc6-53cf-a660-c7ebbe2b6a00', 150, 'g', NULL), +('88ab81b8-6f4e-582e-831b-bbff249486b7', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', 'ea000042-1111-2222-3333-444444444444', 100, 'g', NULL), +('cedce37b-68e0-5f88-8717-474d296176c8', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', 'b022ec51-1f8d-575b-913c-22164c09829e', 1, 'cây', NULL), +('cd5677a9-dc06-5df1-bc4f-26516be550fd', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 30, 'g', NULL), +('379fbb6d-a506-5ac1-9446-208c9e0fbf47', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', 'ddda7b85-32b1-5d4d-9516-237f59f6e5d8', 3, 'g', NULL), +('ac876e86-d389-5d80-97a3-be8e9079c288', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', 'ea000004-1111-2222-3333-444444444444', 2, 'quả', NULL), +('810c7c8f-f6c8-5139-a096-166f82e2e70e', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 15, 'g', NULL), +('c3358b16-ea15-59f3-ad9d-f43f7009c027', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('4bbccb46-f5bb-5ec6-960c-a5d9c19b950b', 'f3cf5fd6-d159-5c24-b878-eec28f05786f', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('0b1fcbd6-844e-5ae1-859d-8435e7ad8459', '3bac29b5-1895-5081-8974-478370205440', 'ce29b86c-a557-5c9d-ac62-6fed9172dd6f', 4, 'quả', NULL), +('766157b8-3929-5cfc-94ea-36471b391e8b', '3bac29b5-1895-5081-8974-478370205440', '6d18148f-cf0d-570f-afda-4804c108efed', 400, 'g', NULL), +('0a66b307-28f7-5c0c-83c9-9075ca03e87e', '3bac29b5-1895-5081-8974-478370205440', 'dce1bb6f-bbe6-5252-a70f-7afa5b83a835', 200, 'g', NULL), +('303a504f-afb7-550a-804d-31de35f4bb98', '3bac29b5-1895-5081-8974-478370205440', '86eda42e-989d-5587-8f1d-96a2d9416a85', 20, 'g', NULL), +('8644664f-ff6f-56ad-8785-bad3a7bbb3de', '3bac29b5-1895-5081-8974-478370205440', 'ea000024-1111-2222-3333-444444444444', 10, 'g', NULL), +('80d835a5-d502-5aa6-95e0-69ea99aa9747', '3bac29b5-1895-5081-8974-478370205440', 'ea000050-1111-2222-3333-444444444444', 10, 'g', NULL), +('22d822f9-1fec-506d-a266-358259a24542', '3bac29b5-1895-5081-8974-478370205440', 'ea000034-1111-2222-3333-444444444444', 20, 'g', NULL), +('c9d72c3f-0acd-55ac-af16-c8c92aa5736d', '3bac29b5-1895-5081-8974-478370205440', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('cfb4ed9b-e470-5480-8ff4-9a8bb98adaf8', '3bac29b5-1895-5081-8974-478370205440', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('66796e8a-2c57-5a8c-9f8f-686d3e7a52b5', '3bac29b5-1895-5081-8974-478370205440', '3ea4241d-c101-52e2-b926-bcebba2e912a', 5, 'g', NULL), +('d4033a33-8fb6-56a6-8667-eddbf8485710', '3bac29b5-1895-5081-8974-478370205440', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('0903b2ba-326e-5e64-95bb-34bba9814c96', 'ea16bf15-34ee-5286-9f53-89fb107f2948', '9e20917a-4186-5bea-ac6e-816c9802195e', 600, 'g', NULL), +('1b86f08e-ee37-5e75-8a02-efaa1c809c7e', 'ea16bf15-34ee-5286-9f53-89fb107f2948', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 70, 'g', NULL), +('153ac051-565f-58d8-a76c-8e5c47bbe501', 'ea16bf15-34ee-5286-9f53-89fb107f2948', '0595657d-790b-5c3c-bde1-d2637bfb2263', 10, 'g', NULL), +('5af08075-64bf-5770-9667-d63b0313e584', 'ea16bf15-34ee-5286-9f53-89fb107f2948', '8b6a2a03-cff6-51bc-a07e-ea8e7424dd70', 700, 'g', NULL), +('31e555b7-da4a-5ab9-ac11-d1815236a288', 'ea16bf15-34ee-5286-9f53-89fb107f2948', 'b022ec51-1f8d-575b-913c-22164c09829e', 80, 'g', NULL), +('b780ec8c-cfea-5333-93a4-1aa2bd19fd76', 'ea16bf15-34ee-5286-9f53-89fb107f2948', '55f5ae60-ea08-597b-8be1-1beff05b1401', 80, 'g', NULL), +('a0dcaa9c-5f57-5e9b-9179-60ae7e18b07b', 'ea16bf15-34ee-5286-9f53-89fb107f2948', '4f52383a-b333-5f9f-97d2-8f5fd3ac97e5', 80, 'g', NULL), +('53e18d99-b62c-5b54-b863-a52c46f32519', 'ea16bf15-34ee-5286-9f53-89fb107f2948', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('0bd7e894-86e1-5039-b1ce-10f803f026b5', 'ea16bf15-34ee-5286-9f53-89fb107f2948', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('0f5a68c7-620f-5e53-a367-0e75ad704994', 'ea16bf15-34ee-5286-9f53-89fb107f2948', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('6dc5abb7-6bf2-5884-9ebf-d26409f18ae1', 'ea16bf15-34ee-5286-9f53-89fb107f2948', 'dff2948e-9dd1-52b0-8315-c377ee24e3a5', 80, 'g', NULL), +('d276f1b4-b21f-5fb1-bc9f-d25b90a7a7ae', 'ea16bf15-34ee-5286-9f53-89fb107f2948', 'ad701cb7-ec79-5b26-8866-792eba06a7b3', 20, 'g', NULL), +('50ae3c6c-d43d-59a8-a29e-c1e3b1d10592', 'ea16bf15-34ee-5286-9f53-89fb107f2948', '44e3358f-7afe-5802-8675-0ae6fc10ce0d', 100, 'g', NULL), +('fad6372d-ffd7-583d-ba69-efcf670fb307', 'ea16bf15-34ee-5286-9f53-89fb107f2948', 'd0fbfe83-7811-5254-a74f-6fbf80b99480', 80, 'g', NULL), +('a26e3d01-58da-5c48-8cdf-643fa03a2b24', 'ea16bf15-34ee-5286-9f53-89fb107f2948', '5824249f-4a90-5eb8-ab3e-fe00ffdbf0bb', 100, 'g', NULL), +('52ae2f2c-614d-55e1-baf6-a6ca9e5ed46a', 'ea16bf15-34ee-5286-9f53-89fb107f2948', '04d08dc2-e887-5d46-94de-dba081d58a2a', 5, 'g', NULL), +('b5083b56-cd1b-5840-ac06-870811674b45', '18030120-83d9-584b-940e-6c4b9731db19', '6c1ec9f9-0406-5616-82a9-9082034cc0f8', 200, 'g', NULL), +('ecbd06b6-017a-5710-b45c-f2504d3bcbf1', '18030120-83d9-584b-940e-6c4b9731db19', '2cdcb094-33c3-5341-8f20-b6baddf8508e', 100, 'g', NULL), +('66df394d-6d60-55a1-b31f-dc6271642bca', '18030120-83d9-584b-940e-6c4b9731db19', '17c517a4-0f06-5590-91d4-2f08b8be2fa3', 25, 'g', NULL), +('aed11573-30a3-56cc-8114-0fc21804f3f5', '18030120-83d9-584b-940e-6c4b9731db19', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 10, 'g', NULL), +('caaf0a82-b925-5f0c-a827-843dfe0b104d', '18030120-83d9-584b-940e-6c4b9731db19', 'ea000042-1111-2222-3333-444444444444', 25, 'g', NULL), +('c43b3b76-1c77-5928-8388-09444a4a3fba', '18030120-83d9-584b-940e-6c4b9731db19', 'f4e32a37-005b-562e-869e-27bc051c6391', 2, 'g', NULL), +('a8b8643a-b148-5cb2-ad04-6896be256e14', '18030120-83d9-584b-940e-6c4b9731db19', '626f6b05-59dd-5859-8bfa-e54daa3f6501', 150, 'g', NULL), +('f0ef414b-a734-56e1-a2b9-11a3d5dbbd9b', '18030120-83d9-584b-940e-6c4b9731db19', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('e3f8fb99-afd9-50aa-b3bc-c804a59a7ef6', '18030120-83d9-584b-940e-6c4b9731db19', '1f1dc666-1e72-59b6-8241-0d7d511d2332', 60, 'g', NULL), +('148a1697-1dc5-54fd-854e-e8f17ff829b1', '18030120-83d9-584b-940e-6c4b9731db19', '33923ff7-3942-50ca-9237-b00a5b23ed14', 80, 'g', NULL), +('d9726f1f-2751-524f-9bbd-686724c40614', '18030120-83d9-584b-940e-6c4b9731db19', 'b2d624b7-88bf-5389-9572-25ce188893dc', 20, 'g', NULL), +('ffc29a44-d9c0-5264-9e26-5b1bdf0f8253', '18030120-83d9-584b-940e-6c4b9731db19', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('dc238c49-6f4e-5ee8-b967-9b3631833788', '18030120-83d9-584b-940e-6c4b9731db19', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('b70790ac-d137-5451-b5ab-5c5fe56bd115', '18030120-83d9-584b-940e-6c4b9731db19', '4e5710aa-5629-5735-878c-e8922636dfd3', 60, 'g', NULL), +('a1be7dff-1d2c-5b55-81b9-dcc93d3fa7dd', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', 'ee60b02b-d2b2-596d-8415-5bdf65a7a8fe', 400, 'g', NULL), +('ee155839-645f-5fbc-ada5-dc6c9dfc987e', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', 'ab2202d8-365f-55db-9a4d-b56e64c5f66f', 50, 'g', NULL), +('a99b76db-c74e-5cca-8ba1-2bba46c5b0e1', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', 'd3fe4466-cc31-5399-a49c-6b0829a6ca56', 50, 'g', NULL), +('9307bf15-574d-5ced-bf8a-234dab088af7', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', 'b8724dc0-7281-5b6a-b7f9-3c281e3fae8e', 50, 'g', NULL), +('4db0ba93-8f74-5692-8154-13c53a7f1632', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', 'ea000025-1111-2222-3333-444444444444', 25, 'g', NULL), +('52f8f015-02b9-545a-89ad-bcbc25ea3186', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', 'ea000034-1111-2222-3333-444444444444', 80, 'g', NULL), +('46bd535c-f9df-53d8-a56d-0c02e16979f1', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 80, 'g', NULL), +('77e9f8c7-bb12-50fb-941f-2012e02dafc9', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 5, 'g', NULL), +('1a802f9f-e0c5-559b-b66c-c4e364013671', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('aa2ec077-2a30-5a28-a5d2-d4c6c2c4f54c', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('10be9a86-1199-5ddb-8e7b-479f606b90ed', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', '1e27539b-7e79-5894-89aa-45939cd64a93', 20, 'g', NULL), +('cc39ff7d-94c5-57a7-b307-897799467860', 'e73d7b7a-34d7-5ee8-9e9a-3a026ab43a64', 'b10cff9b-6339-5df8-83e4-57d632ee456f', 80, 'g', NULL), +('e04a2ce7-98e5-529a-9530-c459ee893cd8', '54d2cf83-f7bc-5125-9157-b470b5a40639', 'a1c85263-b003-5139-b40a-cfb8ec56452f', 400, 'g', NULL), +('cef74d79-73dc-5323-9dcd-818c774355a9', '54d2cf83-f7bc-5125-9157-b470b5a40639', '01619128-a551-5bcb-84a9-5f7ddf562db4', 150, 'g', NULL), +('1d4840fe-6920-507d-8422-76e1e87ba41e', '54d2cf83-f7bc-5125-9157-b470b5a40639', 'd3d73630-ab9e-54ed-a8b9-af9858954cee', 50, 'g', NULL), +('9fcb8d84-8866-5b26-9462-fc3abe349f6f', '54d2cf83-f7bc-5125-9157-b470b5a40639', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 5, 'g', NULL), +('9bf5c549-dc0b-5606-9a2f-4251f8e9502b', '54d2cf83-f7bc-5125-9157-b470b5a40639', '645c333b-2324-5f21-8cef-18929c180feb', 20, 'g', NULL), +('9ce36dcc-1665-59ca-8e83-f7d323c8ff93', '54d2cf83-f7bc-5125-9157-b470b5a40639', '562b3c6b-cbe5-51ac-a395-106a12c3bb3c', 3000, 'ml', NULL), +('56a7d1a6-7fbe-5b87-8e18-bbdb1735a59e', '54d2cf83-f7bc-5125-9157-b470b5a40639', 'ea000034-1111-2222-3333-444444444444', 30, 'g', NULL), +('b14e1552-f341-5004-8697-8bcf6845fc78', '54d2cf83-f7bc-5125-9157-b470b5a40639', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 15, 'g', NULL), +('8bbef573-1988-5307-a57e-640d267de61b', '54d2cf83-f7bc-5125-9157-b470b5a40639', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('b0c3ef26-d2aa-5bb2-89f7-2ebcd62e791d', '54d2cf83-f7bc-5125-9157-b470b5a40639', '0595657d-790b-5c3c-bde1-d2637bfb2263', 10, 'g', NULL), +('133925f8-8599-5214-84af-d354f219fc5f', '54d2cf83-f7bc-5125-9157-b470b5a40639', '41ca400f-ff98-59ec-9d24-7fa59edb0022', 20, 'g', NULL), +('527519c2-68ce-54fd-b9dd-7bdb7956a8b9', '54d2cf83-f7bc-5125-9157-b470b5a40639', '289c9228-be9b-5cca-a1f2-c8c0b4b741ff', 80, 'g', NULL), +('59079d73-b541-5d16-bf29-d6554594adc6', '54d2cf83-f7bc-5125-9157-b470b5a40639', '5f52b3be-1f77-54e3-9083-16eef9fff3bf', 100, 'g', NULL), +('2da882df-3a14-57e7-ac3e-6ead92fa2a1d', '54d2cf83-f7bc-5125-9157-b470b5a40639', '30fcb9de-8c4b-5c93-8de4-4decdc7bb250', 80, 'g', NULL), +('be1e255e-9baa-58af-a9f3-64fe4b7a7af6', '54d2cf83-f7bc-5125-9157-b470b5a40639', '6f834874-ecea-5bf3-8147-38ec708d6432', 20, 'g', NULL), +('4aaf5e99-245d-5ba0-9372-e39ac066214b', '54d2cf83-f7bc-5125-9157-b470b5a40639', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 5, 'g', NULL), +('be3d8c18-dfab-5318-a9f3-7f53707d6787', '54d2cf83-f7bc-5125-9157-b470b5a40639', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 5, 'g', NULL), +('ce7d62cf-692d-5527-9e81-8a5fbe92d293', '54d2cf83-f7bc-5125-9157-b470b5a40639', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 5, 'g', NULL), +('b1669209-fd86-57f8-8e47-7ecddd84ff7f', '4ea03a7d-a2d6-5c56-aadc-d3a588d68a54', 'ba1296c1-d3d5-5856-a62e-f31806ab4273', 4, 'g', NULL), +('ddeb88f0-cdeb-57e1-8015-6cfe3590e0e9', '4ea03a7d-a2d6-5c56-aadc-d3a588d68a54', '9af4bfbb-9d40-5b84-b551-c4dae0bf882f', 5, 'g', NULL), +('32188803-4142-553f-aea2-4c3d931f1566', '4ea03a7d-a2d6-5c56-aadc-d3a588d68a54', 'd4475c8a-592a-5118-8358-2de506a90a19', 2000, 'ml', NULL), +('d896ddba-3795-5736-9ee1-0ce1c0852b60', '4ea03a7d-a2d6-5c56-aadc-d3a588d68a54', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 5, 'g', NULL), +('69406673-5c44-5001-b4a3-a091beeccfd0', '4ea03a7d-a2d6-5c56-aadc-d3a588d68a54', '818e8f24-1bea-5787-80f1-c3f04237c864', 200, 'ml', NULL), +('46607531-aa15-57e2-a1bf-872c949fcd90', '4ea03a7d-a2d6-5c56-aadc-d3a588d68a54', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 50, 'g', NULL), +('30358d6d-48fc-5398-a54f-1e7c417828b1', '4ea03a7d-a2d6-5c56-aadc-d3a588d68a54', '99157107-8cbc-5715-97f1-620017377993', 2.5, 'g', NULL), +('6ebbeb33-9ae3-5f92-b2d7-a40b1519571c', '4ea03a7d-a2d6-5c56-aadc-d3a588d68a54', '5a75f354-be21-5524-b51a-60a0cd275504', 500, 'ml', NULL), +('be1a81e6-3017-5f09-a375-4644a5789d8e', '306ad7dd-c5f9-55ea-8a79-cec885d987f2', '3a9e3fc2-0aeb-5d27-87a8-c56bae206608', 100, 'g', NULL), +('1c629d54-8ab7-5168-9d99-4e09ea78e2d9', '306ad7dd-c5f9-55ea-8a79-cec885d987f2', 'f355f94f-4670-54e1-8d7e-55433ed91f6c', 100, 'g', NULL), +('0b21147d-8dc3-5a52-8d86-6a100d1fb1f8', '306ad7dd-c5f9-55ea-8a79-cec885d987f2', '1dfd46f5-c134-5384-877e-6251caab3ae7', 20, 'g', NULL), +('c4e66964-14bb-551f-be3b-04001d3e35c2', '306ad7dd-c5f9-55ea-8a79-cec885d987f2', 'ea000025-1111-2222-3333-444444444444', 80, 'g', NULL), +('f55fd68b-d94c-57f9-84d0-0cd81812925e', '306ad7dd-c5f9-55ea-8a79-cec885d987f2', 'ea000034-1111-2222-3333-444444444444', 10, 'g', NULL), +('acc645db-fe9c-556c-b27f-1e793a1d7442', '306ad7dd-c5f9-55ea-8a79-cec885d987f2', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 10, 'g', NULL), +('0159d964-4189-5f74-b1cb-f333df9cdff7', '306ad7dd-c5f9-55ea-8a79-cec885d987f2', '9d91d511-d5b0-5597-b74a-0ba076fba6eb', 5, 'g', NULL), +('73cc0300-dbc2-521d-91db-93e38d945f5f', '306ad7dd-c5f9-55ea-8a79-cec885d987f2', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 50, 'g', NULL), +('da14058c-db2b-5bf4-9f7d-462021e0b1ca', '306ad7dd-c5f9-55ea-8a79-cec885d987f2', '8f11460f-ffa8-5da9-a62d-673394a79284', 300, 'g', NULL), +('7eb7bd17-ea02-5b8c-b786-db2c4d482980', '8e1d1748-f32a-5364-b8a2-5409f0efaa8c', 'fda9a86e-73c9-5b0a-965d-8777aabe08c4', 3, 'g', NULL), +('0eb12bd6-7119-593b-85d9-85a9a12f5522', '8e1d1748-f32a-5364-b8a2-5409f0efaa8c', 'a81b2cb7-49a0-5ba1-9aed-e42e76c56dc1', 1000, 'ml', NULL), +('f92803f8-105d-5438-9393-8d56bbe79980', '6d69b864-b821-5005-ada4-795896531603', '09f86239-76c0-512a-ad02-f9ff2f45c5ff', 200, 'g', NULL), +('68b3d630-0903-5bb2-8ea7-97295065f6cb', '6d69b864-b821-5005-ada4-795896531603', 'c4875dda-8b00-5b57-8f86-e57abd5148b1', 120, 'g', NULL), +('6aa6f241-4770-5535-94f7-f306d379262d', '6d69b864-b821-5005-ada4-795896531603', 'ea000004-1111-2222-3333-444444444444', 4, 'quả', NULL), +('a3926f6d-5008-51d9-bb40-89390a7ea200', '6d69b864-b821-5005-ada4-795896531603', '86eda42e-989d-5587-8f1d-96a2d9416a85', 2, 'nhánh', NULL), +('f810018f-87b3-58f2-9abe-779924ef4b62', '6d69b864-b821-5005-ada4-795896531603', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 2.5, 'g', NULL), +('582ab5ce-58e6-52f3-a0b8-dd5f7ff446ad', '6d69b864-b821-5005-ada4-795896531603', '8f11460f-ffa8-5da9-a62d-673394a79284', 40, 'g', NULL), +('da43879a-45dc-5143-8fdb-e2aacfe8a6e4', '5865204c-0a2b-59c1-b869-561dc814eafb', '9cbabcae-f6ae-5631-8508-d53587721693', 300, 'g', NULL), +('04daeebc-5e26-53e9-838d-2c8c5209e03d', '5865204c-0a2b-59c1-b869-561dc814eafb', 'ea000034-1111-2222-3333-444444444444', 10, 'g', NULL), +('fd0a16a0-b7ec-5b5d-84b0-c129c44749ff', '5865204c-0a2b-59c1-b869-561dc814eafb', 'c24ae4fc-c929-5fd1-be87-40ae18adb0ad', 5, 'g', NULL), +('79888034-6a31-5f5c-8b0b-77f798fe5030', '5865204c-0a2b-59c1-b869-561dc814eafb', '86eda42e-989d-5587-8f1d-96a2d9416a85', 1, 'nhánh', NULL), +('6289e751-92df-5a68-8922-e32b4b814a15', '5865204c-0a2b-59c1-b869-561dc814eafb', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 7, 'g', NULL), +('711c5f21-2fa9-53e8-ae6b-c91bfc4157a4', 'fdfdd3c3-32b8-503a-806d-04a9d7eada4c', '01e668b1-12a7-58ff-98ff-127b23ce891c', 2, 'quả', NULL), +('6c96f1c1-1d55-5c07-84c4-e180337d6b80', 'fdfdd3c3-32b8-503a-806d-04a9d7eada4c', '06e73bfa-dc1f-51a1-9971-be17cef62b4f', 30, 'g', NULL), +('37602b1c-0696-5ce2-93ff-4372167b44c2', 'fdfdd3c3-32b8-503a-806d-04a9d7eada4c', '18e626bc-96fb-5559-a2e5-de1335d52ddf', 2, 'miếng', NULL), +('3b51933e-6285-5ce3-b7b0-df1f8c7112c7', '995a8ba2-f365-5ede-8f3b-3200f68aa9b6', 'b0a819a3-caeb-5e21-abe5-c724bb16bc21', 200, 'g', NULL), +('90fe5182-b2b0-500d-b11b-056a37436d93', '995a8ba2-f365-5ede-8f3b-3200f68aa9b6', 'b3b2c540-f470-5301-8d26-2a9e6d136660', 100, 'g', NULL), +('6f895b92-94f6-5da7-9978-8ecd772bea29', '995a8ba2-f365-5ede-8f3b-3200f68aa9b6', 'e7899cc4-71d9-5cdd-93a6-e02952760f28', 25, 'g', NULL), +('cc45f030-a3ec-5eea-929d-01b6fc224e06', '995a8ba2-f365-5ede-8f3b-3200f68aa9b6', '76ee661d-61b8-5660-8d2a-b54bd7bcb652', 25, 'g', NULL), +('29fc56bc-315e-51de-ba8c-aa5784e85558', '995a8ba2-f365-5ede-8f3b-3200f68aa9b6', '01d5b429-e836-5d10-8cad-3b97191c4af7', 50, 'g', NULL), +('dea343c7-86a0-5bb9-bdbe-02e4c3fb27c1', '995a8ba2-f365-5ede-8f3b-3200f68aa9b6', '212b0e7b-4c17-55d0-8668-74aa8d5afd32', 50, 'g', NULL), +('381c15e6-3e45-5071-85bf-927fa2909ebe', '995a8ba2-f365-5ede-8f3b-3200f68aa9b6', '4a3f2c69-e7ff-5a07-b0d2-22da8b5b8c2c', 15, 'g', NULL), +('c0fd330b-aae9-53e3-b0b3-550461f3e3f7', '995a8ba2-f365-5ede-8f3b-3200f68aa9b6', '71e11e1b-3b44-5c51-b066-a26ba5a70c37', 5000, 'ml', NULL), +('4f1a3cf6-19ee-58ba-aed4-b677c6e55b1c', '995a8ba2-f365-5ede-8f3b-3200f68aa9b6', '8da4f7a7-fe5e-5745-913e-6b9af8c7fd0d', 2.5, 'g', NULL), +('05a4971b-5026-5bc3-bcd2-d82292bad975', '995a8ba2-f365-5ede-8f3b-3200f68aa9b6', 'ee6ec04b-c2b3-5cf5-8f59-cf0f0146d78a', 30, 'g', NULL), +('9271be6b-5d7d-58fb-809b-4dd8801a693b', 'ac74ff1c-9771-547f-92ed-bac7f6ac2634', '751109b2-1bba-56de-8780-a1f6105e2330', 100, 'g', NULL), +('8071fbb1-eaab-5a55-aabf-4fefb5f870c7', 'ac74ff1c-9771-547f-92ed-bac7f6ac2634', '169333d8-040f-5002-9883-4890ebedfef9', 1, 'chén', NULL), +('29576272-eafa-5e52-ae5e-73aa08be6ae3', 'ac74ff1c-9771-547f-92ed-bac7f6ac2634', '36400ca8-a1f6-5b7c-b24b-a8bb4305016e', 30, 'g', NULL), +('81975f60-b0f8-532a-9e7d-8b5e48d879e6', 'ac74ff1c-9771-547f-92ed-bac7f6ac2634', 'af9ce6dc-d6c2-5483-ad05-4de440ba20fe', 1, 'g', NULL), +('f716ecbc-7ef5-55f9-979d-2fdf47f96d6e', '4e7a1557-da6c-5142-986c-91bcbf17d946', '7dc38594-9e93-57f7-8322-d21658edeedd', 70, 'g', NULL), +('ce7df923-691b-5ddf-91a7-2e1fe14d555a', '4e7a1557-da6c-5142-986c-91bcbf17d946', '691c7ff8-a66c-5889-9c71-017046f3ae5d', 200, 'g', NULL), +('a7bad471-a1ab-54d2-b1e3-ce1aad070d04', '4e7a1557-da6c-5142-986c-91bcbf17d946', 'f723dcfe-312e-58c8-9fd1-49b6c726f287', 200, 'g', NULL), +('d6062ce3-c17b-58e2-b7ba-eca04a6e2787', '4e7a1557-da6c-5142-986c-91bcbf17d946', '86eda42e-989d-5587-8f1d-96a2d9416a85', 10, 'g', NULL), +('c11033d2-c131-50d8-9911-89d9f1937a45', '4e7a1557-da6c-5142-986c-91bcbf17d946', 'ea000034-1111-2222-3333-444444444444', 10, 'g', NULL), +('04789cfb-b410-5dbf-b514-21da13a6a12c', '4e7a1557-da6c-5142-986c-91bcbf17d946', 'f2da5201-befe-5315-a03b-119ab86c15d8', 10, 'g', NULL), +('e66c3532-5587-5b54-aaf9-06e5c0c0afee', '4e7a1557-da6c-5142-986c-91bcbf17d946', '1dfd46f5-c134-5384-877e-6251caab3ae7', 10, 'g', NULL), +('5713d568-89cd-5818-b4cc-7dd849539877', '4e7a1557-da6c-5142-986c-91bcbf17d946', 'af2bc91a-1e49-5c64-97c3-866397e23213', 30, 'g', NULL), +('348dd294-3075-5f97-9e00-f6324d3b927d', '4e7a1557-da6c-5142-986c-91bcbf17d946', '166fc215-e44e-5d4c-abed-438af97e3163', 0.5, 'quả', NULL), +('7aee7b52-a4df-57b3-bd9d-4124f33680a9', '4e7a1557-da6c-5142-986c-91bcbf17d946', 'b44122b2-13d9-57d5-9f75-4fd9207368ed', 5, 'g', NULL), +('cd630f16-d9f3-50c8-925d-1c7d674fd64a', '4e7a1557-da6c-5142-986c-91bcbf17d946', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 80, 'g', NULL), +('2b972902-9c79-507e-b7ee-69702fb5a32a', '4e7a1557-da6c-5142-986c-91bcbf17d946', 'e031cee9-e7e0-5b73-bc9f-3d3d43c7a6cb', 5, 'g', NULL), +('4899584d-2f32-5ca1-92ff-065874b84b54', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', 'e8c0f81a-b21e-505e-a6ac-ad4f852310e1', 200, 'g', NULL), +('75b19e9b-eb70-5312-98d1-2304763a9682', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', 'ad36f109-4746-55df-9118-14d2d4cc7e22', 6, 'quả', NULL), +('bc16a913-89ab-5442-a4a9-4ee5a341207e', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', '69a740ff-e6b0-5e60-a480-ab7dfad9ae2b', 100, 'g', NULL), +('949196d1-dbd7-514e-a1df-12d7d3a87452', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 100, 'g', NULL), +('dd79ee65-c2f0-5144-90b4-526b33ea1e6b', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', '21ce7501-cac0-5b37-a813-b63d938bd7ac', 1, 'chén', NULL), +('874d1ede-d9e5-5d65-9c1d-8020b8007042', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', 'bdab64ef-8278-5e28-b96c-95704f7608a8', 15, 'g', NULL), +('8b1094e4-defb-589a-a364-a68420b6624e', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('56c70b87-b0fb-53f0-a6e3-5b10bfd104de', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 2.5, 'g', NULL), +('7c175938-10ec-59ed-8aad-ec8124bd4af0', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 15, 'g', NULL), +('78548900-7e6a-599a-ad55-0d8ab9690e61', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2.5, 'g', NULL), +('fabe187f-87f2-536b-bc47-411f45d4e18b', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', 'ba4cda31-3269-504f-a54f-4314050df9b7', 15, 'g', NULL), +('0e07c372-fc7e-5884-a692-f1e0119ed1d5', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('0150c18f-88e9-5e54-8fca-6b04f5b5e787', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', 'fccb3b78-c4a9-50f7-8e34-8473f9237553', 20, 'g', NULL), +('bdba7208-1558-5692-b975-eaa4d1aa3c63', 'e2ee6804-bc28-50ef-b2ad-14d8d1493a35', '80a2f2dd-b1bc-56ae-b8a6-fdb1120053f8', 80, 'g', NULL), +('c29a20b7-fec8-5d9c-941b-a228807b70e7', '5c5a5081-9182-5557-9fc0-d64ec57a5391', '559475b5-ba64-50a5-b1d9-4f1081f0923f', 300, 'g', NULL), +('6e6cdb48-0a2b-5aab-9705-b8a33306d4f4', '5c5a5081-9182-5557-9fc0-d64ec57a5391', 'ea4e2ee6-73f6-52e3-b2f0-cb5fe27219e8', 150, 'g', NULL), +('562ba98e-2f3f-5379-9d57-da4d96aab1a8', '5c5a5081-9182-5557-9fc0-d64ec57a5391', '3f8d635c-e059-54a2-a584-b74216151539', 20, 'g', NULL), +('50beaefe-91ba-569f-ab0e-a2667fd36cca', '5c5a5081-9182-5557-9fc0-d64ec57a5391', 'ea000034-1111-2222-3333-444444444444', 3, 'củ', NULL), +('549856d5-103a-57be-9fb4-729b5c23666a', '5c5a5081-9182-5557-9fc0-d64ec57a5391', '5edd1291-8845-53fa-8334-c3b59f8be842', 1, 'củ', NULL), +('5581095c-e56b-5fc9-9aba-348d83d5d38f', '5c5a5081-9182-5557-9fc0-d64ec57a5391', 'b18fa243-2ac1-5b36-ba27-8b3233668db7', 22.5, 'g', NULL), +('4c338c04-ab67-53a9-a7e5-cb6488da83d9', '5c5a5081-9182-5557-9fc0-d64ec57a5391', 'fdbca817-503b-53fe-8982-1aea00dc5abf', 15, 'g', NULL), +('c82584a5-c1e4-5e74-8314-cb2712d2e405', '5c5a5081-9182-5557-9fc0-d64ec57a5391', 'f649299b-f168-5b1e-a19b-c5226bee10fc', 7.5, 'g', NULL), +('0816bf62-dfaa-5606-b08a-85ea5d1c9496', '5c5a5081-9182-5557-9fc0-d64ec57a5391', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2.5, 'g', NULL), +('a382f524-752e-54cc-a366-e7c5d3921303', '5c5a5081-9182-5557-9fc0-d64ec57a5391', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('1b48a567-bf11-5b79-b70e-2753908ce944', '5c5a5081-9182-5557-9fc0-d64ec57a5391', '8da4f7a7-fe5e-5745-913e-6b9af8c7fd0d', 5, 'g', NULL), +('4fa664ab-fd11-51d5-b82e-6c0b3009a65e', '5c5a5081-9182-5557-9fc0-d64ec57a5391', '5bc33c36-941f-5343-9772-5cf21c9ce029', 5, 'g', NULL), +('e51f897c-c2a6-5e69-a953-a5f0ac980ef9', '5c5a5081-9182-5557-9fc0-d64ec57a5391', '21256138-c99f-5b07-9b64-cf44702a8048', 5, 'g', NULL), +('fff70f28-d206-5bb2-a8af-88ee7c12ada8', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '559475b5-ba64-50a5-b1d9-4f1081f0923f', 300, 'g', NULL), +('0890b959-2f68-5b27-ab97-e4ff1f7417f9', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', 'f333ad9c-3baa-5bdc-bae8-d6697467281c', 12, 'cái', NULL), +('f996e528-8d59-5a6e-b393-1e08e7dde009', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 150, 'g', NULL), +('c83d8b88-39ea-58f0-9ed3-11655576537a', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', 'ea000023-1111-2222-3333-444444444444', 1, 'trái', NULL), +('5f580f98-b686-5afd-97c6-5f0cb6ef4858', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '9a7cf327-db40-53e0-a1e0-d0efdf9abac8', 0.25, 'trái', NULL), +('fb16f571-3711-5a2d-94ce-097ef873ab25', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '19626091-3a65-5951-ade1-37aa3e3b4a99', 120, 'g', NULL), +('52a4eb9d-c632-58c8-9b37-cf6e2beb3698', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', 'a8a1ac33-6785-59a4-8ed6-bd587cd4061d', 22.5, 'g', NULL), +('0918928d-6d3c-5b50-acf1-c29a727ee62e', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '5e94d3cb-21b3-5803-a6dd-59b0d62fbe10', 22.5, 'g', NULL), +('008103ca-bcd8-5083-946c-8a7079407e29', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '1f1dc666-1e72-59b6-8241-0d7d511d2332', 22.5, 'g', NULL), +('8c3de146-a741-5652-a598-6354a75fe675', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', 'ea000034-1111-2222-3333-444444444444', 37.5, 'g', NULL), +('e2146547-99b5-5f8c-998d-9f06aebb17d6', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '20e3dacf-134e-5750-944a-ef86c50b6d2a', 15, 'g', NULL), +('4003bcb3-32ae-5a51-a20d-96637f154d03', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 2.5, 'g', NULL), +('616752d7-c944-56b8-8ed2-f2ffd03054ee', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 2.5, 'g', NULL), +('a20ff5af-b276-5930-b2a2-11ccc7e5a216', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '75241a41-9d99-5e76-adc0-48a50b364e95', 37.5, 'g', NULL), +('10781027-43df-5e87-9093-ee680917b4ed', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 15, 'g', NULL), +('1150b146-b53f-5e29-810b-c932c4d0553b', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', 'ea000008-1111-2222-3333-444444444444', 22.5, 'g', NULL), +('bcae0825-7e08-52ef-87e2-67fc73e7bbd4', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', 'e599e212-c4e7-507c-a3fe-9704649a9794', 7.5, 'g', NULL), +('3b97b0d6-aeb0-52dd-8ad1-c3db8611c971', 'da1f0ad1-39f8-57c2-88aa-e787c8b6f2f4', '6fb22ddf-4831-5701-b354-e85eada109af', 5, 'g', NULL), +('b20015de-8024-580f-90bd-e01732a8986d', '6160caf8-7221-57cd-ac0e-b4945b9a30e0', 'c27eef97-5820-5a92-9eb7-afe0c31d4032', 200, 'g', NULL), +('a1bb5aad-0272-566c-a0e5-963be6d109bf', '6160caf8-7221-57cd-ac0e-b4945b9a30e0', '6c1ec9f9-0406-5616-82a9-9082034cc0f8', 300, 'g', NULL), +('6f990a10-39ee-54dc-bbf4-7bc91c658ce5', '6160caf8-7221-57cd-ac0e-b4945b9a30e0', '9f5e61fb-41bb-565c-ba7d-f1ec5078bee6', 50, 'g', NULL), +('33091cbf-d6ae-5351-adee-2caf5ddc0406', '6160caf8-7221-57cd-ac0e-b4945b9a30e0', 'ea000042-1111-2222-3333-444444444444', 100, 'g', NULL), +('ddcb1e15-f71c-5e25-aa4e-3936200be947', '6160caf8-7221-57cd-ac0e-b4945b9a30e0', '2a25ae01-c36e-588e-ac7c-2718a9e78c0f', 150, 'g', NULL), +('bc33c401-5cc1-5002-a2d7-7201975ee24c', '6160caf8-7221-57cd-ac0e-b4945b9a30e0', 'ea000025-1111-2222-3333-444444444444', 0.5, 'củ', NULL), +('449b02a9-8cf5-530a-b43b-10b393d95cfb', '6160caf8-7221-57cd-ac0e-b4945b9a30e0', '123c7d62-aaba-5871-9af0-d3cb3a14c37a', 15, 'g', NULL), +('2b76858a-5cb8-5e95-a36e-427722bdd51b', '6160caf8-7221-57cd-ac0e-b4945b9a30e0', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 5, 'g', NULL), +('25a56e45-5339-5484-bc64-87f362532618', '6160caf8-7221-57cd-ac0e-b4945b9a30e0', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 2.5, 'g', NULL), +('420c26f4-193b-5229-980b-3f713c502b30', 'e04cd6e8-1e5d-5b89-8788-93654c85a727', '93d4e61a-c669-5002-b7d5-14d9113ab6c6', 2000, 'g', NULL), +('6a4b5a3c-0ed8-5418-acf2-89d6ba5f0e86', 'e04cd6e8-1e5d-5b89-8788-93654c85a727', 'e885a4ab-d856-5b71-9312-11c823ebcb84', 40, 'g', NULL), +('e2bf98b1-924f-5fac-a25b-cfb9352fa65d', 'e04cd6e8-1e5d-5b89-8788-93654c85a727', 'ea000042-1111-2222-3333-444444444444', 40, 'g', NULL), +('87336129-58fc-54bc-9746-4c32775a5e13', 'e04cd6e8-1e5d-5b89-8788-93654c85a727', 'b940aa78-6475-56b0-906c-90ad93bbb183', 40, 'g', NULL), +('e0871057-9999-5223-ac06-3ef02d7f4ea5', 'e04cd6e8-1e5d-5b89-8788-93654c85a727', '86eda42e-989d-5587-8f1d-96a2d9416a85', 80, 'g', NULL), +('1943ca2e-d4ce-5daa-9fbe-0184ece78803', 'e04cd6e8-1e5d-5b89-8788-93654c85a727', '81d8c5d5-4bc9-5c71-86a5-70672e7764b4', 6000, 'ml', NULL), +('321f1440-a4cc-541f-9c98-6f02f11ffce2', 'e04cd6e8-1e5d-5b89-8788-93654c85a727', '1ea97d2d-e036-5fb9-9db2-ff3640724a46', 20, 'g', NULL), +('9f3bfdb4-0e77-58f1-a75e-b947c42f889b', 'e04cd6e8-1e5d-5b89-8788-93654c85a727', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 1.25, 'g', NULL), +('28e444d6-71c8-5dc7-9ac2-7b591f55f7f9', 'e04cd6e8-1e5d-5b89-8788-93654c85a727', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 1.67, 'g', NULL), +('8dc91ed1-809b-5b8c-83a0-1ea706f681ac', 'e04cd6e8-1e5d-5b89-8788-93654c85a727', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 2.5, 'g', NULL), +('d2a6db51-3e00-5931-803f-b6440a207f67', 'c55cc27a-a56b-51d2-8c87-a855748e999f', 'ec529570-f735-5c5c-8550-e22e8a7db027', 500, 'g', NULL), +('feb6d98e-7506-59f1-8f94-1078207bc752', 'c55cc27a-a56b-51d2-8c87-a855748e999f', '8a216df6-d053-5fcd-8d46-92cb41669b35', 1, 'trái', NULL), +('df9a616f-7bb1-5281-8193-d63e1a50fb84', 'c55cc27a-a56b-51d2-8c87-a855748e999f', '6a4bd517-52b9-5a2b-abdb-64ed65c53593', 30, 'g', NULL), +('572a5fbe-3806-5554-8dcd-05d1eae9f639', 'c55cc27a-a56b-51d2-8c87-a855748e999f', 'ab2202d8-365f-55db-9a4d-b56e64c5f66f', 15, 'g', NULL), +('3d95b231-42ed-5276-93c8-3b098514a354', 'c55cc27a-a56b-51d2-8c87-a855748e999f', 'ea000042-1111-2222-3333-444444444444', 50, 'g', NULL), +('ba3289cd-968b-526d-a69d-516b2a6d8c09', 'c55cc27a-a56b-51d2-8c87-a855748e999f', 'c4acb0b4-be72-5e01-8f29-c21ffcb34975', 5, 'tép', NULL), +('76ad60c9-60f9-5859-97fe-fdb421282a5b', 'c55cc27a-a56b-51d2-8c87-a855748e999f', '4e214f2f-ce39-5d05-899f-1beae9a426dd', 600, 'g', NULL), +('6dfd2fba-f2ad-52b6-8863-b86145784a7b', 'c55cc27a-a56b-51d2-8c87-a855748e999f', 'ea000025-1111-2222-3333-444444444444', 50, 'g', NULL), +('38e15e7c-5e6e-502b-b2fa-fdef6bf81b2b', 'c55cc27a-a56b-51d2-8c87-a855748e999f', '6da4c6d6-14a6-5f68-a181-d5be2a282f3f', 5, 'g', NULL), +('42294a81-61c9-5006-ad6c-3c955c514a2d', 'c55cc27a-a56b-51d2-8c87-a855748e999f', 'ff2b884c-8f4d-5519-a6f0-023a16e62df2', 7.5, 'g', NULL), +('7e7f4174-24df-5545-a4c3-a1fdf6cde5dc', 'c55cc27a-a56b-51d2-8c87-a855748e999f', 'f0f723c9-56df-56de-b28f-f4ea98a68987', 7.5, 'g', NULL), +('327a1be9-59be-5593-9d39-55d939763dac', 'c55cc27a-a56b-51d2-8c87-a855748e999f', 'a56bece1-24f5-5615-b990-ee8b353730d4', 30, 'g', NULL), +('cdb6df05-3663-5d47-8938-1d1332a01c87', 'c55cc27a-a56b-51d2-8c87-a855748e999f', '99157107-8cbc-5715-97f1-620017377993', 15, 'g', NULL), +('675c0b32-8ace-5820-bc51-e361da6fccbe', 'c55cc27a-a56b-51d2-8c87-a855748e999f', '91d32d35-8176-513f-a7c5-aa9fa11cc158', 2.5, 'g', NULL), +('59b945d4-25eb-5942-8085-8e328f76f243', 'c55cc27a-a56b-51d2-8c87-a855748e999f', '9e7eda9e-2d56-530b-829e-d8e0503f8823', 5, 'g', NULL), +('62f7ae2b-0018-5273-a43e-01cb76416470', 'c55cc27a-a56b-51d2-8c87-a855748e999f', 'a4a119db-1019-5ee1-92a6-6e45dd7dbb1b', 15, 'g', NULL), +('3952d134-18ee-5c5f-b77e-38a0cd5fc005', 'e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', '11c1defb-c8cd-5038-ae23-1b7786411002', 100, 'g', NULL), +('beb6ec6f-e54b-53f6-8e8c-7caf29de7b4a', 'e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', 'e4cadbb7-1a84-557a-871d-16eb02c6eac5', 100, 'g', NULL), +('9b662420-ffe8-59b9-8207-462d5802d5af', 'e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', 'ea000057-1111-2222-3333-444444444444', 100, 'g', NULL), +('010690b0-37d6-5b28-8d0a-b1c570bf1d81', 'e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', 'ea000025-1111-2222-3333-444444444444', 100, 'g', NULL), +('9ca024b2-f31a-5918-9586-eacf1f9cdcff', 'e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', '725e64c6-e003-54c3-b1a3-5c562700b224', 70, 'g', NULL), +('12a50a6f-fc84-5d92-924b-46047aaf5df4', 'e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', 'f5d0ae4c-1ed2-5292-9f1a-7b1dff6e90ea', 200, 'g', NULL), +('10bfab47-d0dd-53b3-9562-7d4072ef5853', 'e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', 'f4c45dd4-6088-5762-b03f-7b07df9a99ac', 400, 'g', NULL), +('acedab57-26ff-5c9e-9454-c18d8e7ae7b8', 'e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', '47916239-0e29-598c-b01a-4687f4c52475', 600, 'g', NULL), +('3f53f540-94bf-5dc4-949e-368eeb98ce63', 'e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', 'a7fa47c5-9727-5093-8183-6681487656a8', 200, 'g', NULL), +('81328889-5897-507f-ba3c-d135c63dd846', 'e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('92a15011-e0b8-5fd4-9c08-d29a564d14e6', 'e99c476a-b8c0-5a3a-a296-9bdfa2cdbb28', 'b022ec51-1f8d-575b-913c-22164c09829e', 4, 'cây', NULL), +('074e94c5-1e8e-58a1-a634-7654381c72f7', '3f4f83f7-cf47-56b2-b40a-2b8b806d5df6', '3a4b0729-2721-5e39-ae0e-dcf1db2ff705', 400, 'g', NULL), +('5b8c7e69-a356-5162-bdec-588c7e48be71', '3f4f83f7-cf47-56b2-b40a-2b8b806d5df6', '0b736acc-59a9-5b52-afda-5121ee17c0f5', 200, 'g', NULL), +('df1388ff-c933-5348-aaca-180c6346f68b', '3f4f83f7-cf47-56b2-b40a-2b8b806d5df6', '440c8863-bd10-5c95-8e41-7a3f3e5e8611', 300, 'g', NULL), +('ebd0d3e7-7786-53d7-8ea4-358438574a7f', '3f4f83f7-cf47-56b2-b40a-2b8b806d5df6', '725e64c6-e003-54c3-b1a3-5c562700b224', 150, 'g', NULL), +('d457e973-8142-545d-bde9-3f47ccb95533', '3f4f83f7-cf47-56b2-b40a-2b8b806d5df6', 'ea000025-1111-2222-3333-444444444444', 100, 'g', NULL), +('341fba59-c092-5d7f-a29e-096ce144d0c5', '3f4f83f7-cf47-56b2-b40a-2b8b806d5df6', '6c224f0b-9b70-5342-8487-c7a49e2aaed4', 200, 'g', NULL), +('81a2ce52-0804-53a8-90dc-a3ce11225a9a', '3f4f83f7-cf47-56b2-b40a-2b8b806d5df6', '0c09e262-4438-5ed1-bd0c-75e0ae6817ab', 30, 'g', NULL), +('ea612f23-5fcb-5e33-9cc0-58734ec27fee', '3f4f83f7-cf47-56b2-b40a-2b8b806d5df6', 'd6be87b8-1388-5bf8-ac0f-6695f42fb87e', 5, 'g', NULL), +('f0ed4ff2-ed7f-5862-9126-a049fb0bf630', '3f4f83f7-cf47-56b2-b40a-2b8b806d5df6', 'e9d6b267-0afa-5f01-8eaa-6596ba8b69a2', 15, 'g', NULL) +ON CONFLICT ("Id") DO UPDATE SET + "Quantity" = EXCLUDED."Quantity", "Unit" = EXCLUDED."Unit"; +-- END GENERATED MNMN CATALOG COMMIT; diff --git a/backend/database/24_meal_plan_headers.sql b/backend/database/24_meal_plan_headers.sql index 485ca828..933094f0 100644 --- a/backend/database/24_meal_plan_headers.sql +++ b/backend/database/24_meal_plan_headers.sql @@ -10,6 +10,7 @@ DROP TABLE IF EXISTS meal_plan_headers CASCADE; CREATE TABLE meal_plan_headers ( "Id" uuid NOT NULL, "UserId" uuid NOT NULL, + "CoachId" uuid NULL, "Title" character varying(255) NULL, "PlanType" character varying(50) NULL, "StartDate" date NULL, @@ -27,10 +28,14 @@ CREATE TABLE meal_plan_headers ( "MaxCalories" integer NULL, "CoachNotes" character varying(2000) NULL, CONSTRAINT "PK_meal_plan_headers" PRIMARY KEY ("Id"), + CONSTRAINT "FK_meal_plan_headers_users_CoachId" + FOREIGN KEY ("CoachId") REFERENCES users ("Id") ON DELETE SET NULL, CONSTRAINT "FK_meal_plan_headers_users_UserId" FOREIGN KEY ("UserId") REFERENCES users ("Id") ON DELETE CASCADE ); +CREATE INDEX IF NOT EXISTS "IX_meal_plan_headers_CoachId" + ON meal_plan_headers ("CoachId"); CREATE INDEX IF NOT EXISTS "IX_meal_plan_headers_Status" ON meal_plan_headers ("Status"); @@ -191,28 +196,9 @@ VALUES ) ON CONFLICT DO NOTHING; --- Backfill Coach plans that were already submitted before Status existed. --- Uses matching meal_plan_approved notification as proof of submission. -UPDATE meal_plan_headers AS plan -SET - "Status" = 'Approved', - "ApprovedAt" = approval."ApprovedAt" -FROM ( - SELECT - plan_inner."Id" AS "PlanId", - MAX(notification."CreatedAt") AS "ApprovedAt" - FROM meal_plan_headers AS plan_inner - JOIN notifications AS notification - ON notification."UserId" = plan_inner."UserId" - AND LOWER(notification."Type") = 'meal_plan_approved' - AND notification."CreatedAt" >= COALESCE( - plan_inner."CreatedAt", - '-infinity'::timestamptz - ) - WHERE UPPER(COALESCE(plan_inner."GeneratedBy", '')) = 'COACH' - GROUP BY plan_inner."Id" -) AS approval -WHERE plan."Id" = approval."PlanId" - AND plan."Status" <> 'Approved'; +-- Status is seeded explicitly above. Do not infer it from an old notification: +-- during a repeat seed, notifications are recreated later (file 35), so stale +-- rows from the previous run could incorrectly turn every Coach draft into an +-- Approved plan and lock the Gymer's plan-creation screen. COMMIT; diff --git a/backend/database/26_meal_logs.sql b/backend/database/26_meal_logs.sql index 6850b79b..be753c2e 100644 --- a/backend/database/26_meal_logs.sql +++ b/backend/database/26_meal_logs.sql @@ -19,6 +19,8 @@ CREATE TABLE meal_logs ( "FatG" numeric NULL, "SourceType" text NULL, "CustomName" character varying(200) NULL, + "IngredientSnapshotJson" jsonb NULL, + "ConsumptionRatio" numeric(8,4) NULL, "Notes" text NULL, "LoggedAt" timestamp with time zone NULL, "MealPlanItemId" uuid NULL, @@ -27,7 +29,9 @@ CREATE TABLE meal_logs ( CONSTRAINT "FK_meal_logs_foods_FoodId" FOREIGN KEY ("FoodId") REFERENCES foods ("Id") ON DELETE SET NULL, CONSTRAINT "FK_meal_logs_meal_plan_items_MealPlanItemId" FOREIGN KEY ("MealPlanItemId") REFERENCES meal_plan_items ("Id") ON DELETE SET NULL, CONSTRAINT "FK_meal_logs_recipes_RecipeId" FOREIGN KEY ("RecipeId") REFERENCES recipes ("Id") ON DELETE SET NULL, - CONSTRAINT "FK_meal_logs_users_UserId" FOREIGN KEY ("UserId") REFERENCES users ("Id") ON DELETE CASCADE + CONSTRAINT "FK_meal_logs_users_UserId" FOREIGN KEY ("UserId") REFERENCES users ("Id") ON DELETE CASCADE, + CONSTRAINT "CK_meal_logs_ConsumptionRatio_Positive" + CHECK ("ConsumptionRatio" IS NULL OR "ConsumptionRatio" > 0) ); INSERT INTO meal_logs ("Id", "UserId", "FoodId", "RecipeId", "MealType", "QuantityG", "CaloriesKcal", "ProteinG", "CarbsG", "FatG", "SourceType", "Notes", "LoggedAt", "MealPlanItemId", "IsFromMealPlan") @@ -266,38 +270,82 @@ VALUES ('50000000-0000-0000-0000-000000000002', 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'fd000002-0000-0000-0000-000000000002', NULL, 'Lunch', 300.00, 500.0, 35.0, 60.0, 12.0, 'PlanConvert', 'Ăn trưa theo kế hoạch', now() - interval '6 hours', NULL, true) ON CONFLICT DO NOTHING; --- ============================================================================= --- Add CoachId to meal_plan_headers (merged from 26_meal_plan_coach.sql) --- Goal: track which meal plans were created by a Coach on behalf of a Gymer. --- Idempotent migration: safe to run multiple times. --- ============================================================================= -DO $$ -BEGIN - IF NOT EXISTS ( - SELECT 1 - FROM information_schema.columns - WHERE table_name = 'meal_plan_headers' - AND column_name = 'CoachId' - ) THEN - ALTER TABLE meal_plan_headers - ADD COLUMN "CoachId" uuid NULL; - END IF; -END $$; +-- Backfill legacy log projections that were copied to a plan without their +-- nutrition snapshot or source-log link. Safe when there are no matches. +CREATE TEMP TABLE meal_log_plan_pairs ON COMMIT DROP AS +WITH plan_candidates AS ( + SELECT + item."Id" AS item_id, + header."UserId" AS user_id, + item."PlannedDate" AS planned_date, + lower(trim(coalesce(item."MealType", 'snack'))) AS meal_type, + lower(trim(coalesce(item."CustomName", ''))) AS item_name, + coalesce(item."TargetCalories", 0) AS calories, + row_number() OVER ( + PARTITION BY header."UserId", item."PlannedDate", + lower(trim(coalesce(item."MealType", 'snack'))), + lower(trim(coalesce(item."CustomName", ''))), + coalesce(item."TargetCalories", 0) + ORDER BY item."CreatedAt", item."Id" + ) AS occurrence + FROM meal_plan_items item + JOIN meal_plan_headers header ON header."Id" = item."MealPlanId" + WHERE item."IsCompleted" = true + AND lower(coalesce(item."SourceType", '')) = 'meal_log' + AND NOT EXISTS ( + SELECT 1 FROM meal_logs linked_log + WHERE linked_log."MealPlanItemId" = item."Id" + ) +), +log_candidates AS ( + SELECT + log."Id" AS log_id, + log."UserId" AS user_id, + (log."LoggedAt" AT TIME ZONE 'Asia/Ho_Chi_Minh')::date AS logged_date, + lower(trim(coalesce(log."MealType", 'snack'))) AS meal_type, + lower(trim(coalesce(log."CustomName", log."Notes", ''))) AS log_name, + round(coalesce(log."CaloriesKcal", 0))::integer AS calories, + row_number() OVER ( + PARTITION BY log."UserId", + (log."LoggedAt" AT TIME ZONE 'Asia/Ho_Chi_Minh')::date, + lower(trim(coalesce(log."MealType", 'snack'))), + lower(trim(coalesce(log."CustomName", log."Notes", ''))), + round(coalesce(log."CaloriesKcal", 0))::integer + ORDER BY log."LoggedAt", log."Id" + ) AS occurrence + FROM meal_logs log + WHERE log."MealPlanItemId" IS NULL + AND log."LoggedAt" IS NOT NULL +) +SELECT plan.item_id, source.log_id +FROM plan_candidates plan +JOIN log_candidates source + ON source.user_id = plan.user_id + AND source.logged_date = plan.planned_date + AND source.meal_type = plan.meal_type + AND source.log_name = plan.item_name + AND source.calories = plan.calories + AND source.occurrence = plan.occurrence; -DO $$ -BEGIN - IF NOT EXISTS ( - SELECT 1 - FROM information_schema.table_constraints - WHERE constraint_name = 'FK_meal_plan_headers_users_CoachId' - ) THEN - ALTER TABLE meal_plan_headers - ADD CONSTRAINT "FK_meal_plan_headers_users_CoachId" - FOREIGN KEY ("CoachId") REFERENCES users ("Id") ON DELETE SET NULL; - END IF; -END $$; +UPDATE meal_plan_items item +SET + "FoodId" = source."FoodId", + "RecipeId" = source."RecipeId", + "QuantityG" = source."QuantityG", + "TargetCalories" = round(coalesce(source."CaloriesKcal", 0))::integer, + "ProteinG" = source."ProteinG", + "CarbsG" = source."CarbsG", + "FatG" = source."FatG", + "IngredientSnapshotJson" = source."IngredientSnapshotJson" +FROM meal_log_plan_pairs pair +JOIN meal_logs source ON source."Id" = pair.log_id +WHERE item."Id" = pair.item_id; -CREATE INDEX IF NOT EXISTS "IX_meal_plan_headers_CoachId" -ON meal_plan_headers ("CoachId"); +UPDATE meal_logs log +SET + "MealPlanItemId" = pair.item_id, + "IsFromMealPlan" = true +FROM meal_log_plan_pairs pair +WHERE log."Id" = pair.log_id; COMMIT; diff --git a/backend/database/35a_campaigns.sql b/backend/database/35_campaigns.sql similarity index 95% rename from backend/database/35a_campaigns.sql rename to backend/database/35_campaigns.sql index 95dc90f6..5598a466 100644 --- a/backend/database/35a_campaigns.sql +++ b/backend/database/35_campaigns.sql @@ -1,6 +1,6 @@ -- ============================================================================= -- MenuGreen Seed Data - Table: campaigns --- Sequence Number: 35a (must run before 35b_notifications.sql for FK) +-- Sequence Number: 35 (must run before 36_notifications.sql for FK) -- ============================================================================= BEGIN; diff --git a/backend/database/35b_notifications.sql b/backend/database/36_notifications.sql similarity index 99% rename from backend/database/35b_notifications.sql rename to backend/database/36_notifications.sql index 25e10115..d1d750b9 100644 --- a/backend/database/35b_notifications.sql +++ b/backend/database/36_notifications.sql @@ -1,8 +1,8 @@ -- ============================================================================= -- MenuGreen Seed Data - Table: notifications --- Sequence Number: 35b +-- Sequence Number: 36 -- Phase 8: merged from 35_notifications.sql + 58_notification_action_url.sql --- (Must run after 35a_campaigns.sql for FK constraint on CampaignId.) +-- (Must run after 35_campaigns.sql for FK constraint on CampaignId.) -- ============================================================================= BEGIN; diff --git a/backend/database/36_activity_logs.sql b/backend/database/37_activity_logs.sql similarity index 99% rename from backend/database/36_activity_logs.sql rename to backend/database/37_activity_logs.sql index ecc57091..a32e9561 100644 --- a/backend/database/36_activity_logs.sql +++ b/backend/database/37_activity_logs.sql @@ -1,6 +1,6 @@ -- ============================================================================= -- MenuGreen Seed Data - Table: activity_logs --- Sequence Number: 36 +-- Sequence Number: 37 -- ============================================================================= BEGIN; @@ -67,4 +67,4 @@ VALUES ('7c095881-3ca4-4b09-8e26-cecf1bdd6281', '212ea8ea-749e-44a1-92d2-636bd617cbc8', 'GenerateMenu', 'GenerateMenu', '1c870950-f843-45ee-be3a-ab94d5e677f3', '{"action": "generatemenu", "status": "completed"}', now()) ON CONFLICT DO NOTHING; -COMMIT; \ No newline at end of file +COMMIT; diff --git a/backend/database/37_meal_templates.sql b/backend/database/38_meal_templates.sql similarity index 98% rename from backend/database/37_meal_templates.sql rename to backend/database/38_meal_templates.sql index b2c46987..e348f93e 100644 --- a/backend/database/37_meal_templates.sql +++ b/backend/database/38_meal_templates.sql @@ -1,6 +1,6 @@ -- ============================================================================= -- MenuGreen Seed Data - Table: meal_templates --- Sequence Number: 37 +-- Sequence Number: 38 -- ============================================================================= BEGIN; @@ -31,4 +31,4 @@ VALUES ('99999999-9999-9999-9999-999999999902', 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee', 'Bữa trưa siết mỡ PT', 'Ức gà luộc, khoai lang và súp lơ xanh', 'Lunch', 0, true, now() - interval '3 days', now() - interval '3 days') ON CONFLICT DO NOTHING; -COMMIT; \ No newline at end of file +COMMIT; diff --git a/backend/database/38_meal_template_items.sql b/backend/database/39_meal_template_items.sql similarity index 75% rename from backend/database/38_meal_template_items.sql rename to backend/database/39_meal_template_items.sql index 3018891b..52a24217 100644 --- a/backend/database/38_meal_template_items.sql +++ b/backend/database/39_meal_template_items.sql @@ -1,6 +1,6 @@ -- ============================================================================= -- MenuGreen Seed Data - Table: meal_template_items --- Sequence Number: 38 +-- Sequence Number: 39 -- ============================================================================= BEGIN; @@ -13,6 +13,7 @@ CREATE TABLE meal_template_items ( "RecipeId" uuid NULL, "CustomName" character varying(200) NULL, "SourceType" character varying(50) NULL, + "MealType" character varying(50) NOT NULL DEFAULT 'Snack', "QuantityG" numeric(18,2) NOT NULL, "CaloriesKcal" numeric(18,2) NULL, "ProteinG" numeric(18,2) NULL, @@ -31,11 +32,11 @@ CREATE TABLE meal_template_items ( CREATE INDEX "IX_meal_template_items_MealTemplateId" ON meal_template_items ("MealTemplateId"); -- Seed Data for meal_template_items -INSERT INTO meal_template_items ("Id", "MealTemplateId", "FoodId", "RecipeId", "QuantityG", "Notes", "SortOrder", "CreatedAt") +INSERT INTO meal_template_items ("Id", "MealTemplateId", "FoodId", "RecipeId", "MealType", "QuantityG", "Notes", "SortOrder", "CreatedAt") VALUES -('bbbbbbbb-1111-1111-1111-bbbbbbbbbb01', '99999999-9999-9999-9999-999999999901', 'fd000004-0000-0000-0000-000000000004', NULL, 150.00, 'Ăn nguội hoặc quay nóng lại', 1, now() - interval '5 days'), -('bbbbbbbb-2222-2222-2222-bbbbbbbbbb02', '99999999-9999-9999-9999-999999999902', 'fd000001-0000-0000-0000-000000000001', NULL, 180.00, 'Ức gà nạc không da', 1, now() - interval '3 days'), -('bbbbbbbb-2222-2222-2222-bbbbbbbbbb03', '99999999-9999-9999-9999-999999999902', 'fd000002-0000-0000-0000-000000000002', NULL, 150.00, 'Gạo lứt đỏ', 2, now() - interval '3 days') +('bbbbbbbb-1111-1111-1111-bbbbbbbbbb01', '99999999-9999-9999-9999-999999999901', 'fd000004-0000-0000-0000-000000000004', NULL, 'Snack', 150.00, 'Ăn nguội hoặc quay nóng lại', 1, now() - interval '5 days'), +('bbbbbbbb-2222-2222-2222-bbbbbbbbbb02', '99999999-9999-9999-9999-999999999902', 'fd000001-0000-0000-0000-000000000001', NULL, 'Lunch', 180.00, 'Ức gà nạc không da', 1, now() - interval '3 days'), +('bbbbbbbb-2222-2222-2222-bbbbbbbbbb03', '99999999-9999-9999-9999-999999999902', 'fd000002-0000-0000-0000-000000000002', NULL, 'Lunch', 150.00, 'Gạo lứt đỏ', 2, now() - interval '3 days') ON CONFLICT DO NOTHING; COMMIT; diff --git a/backend/database/39_reminder_profiles.sql b/backend/database/40_reminder_profiles.sql similarity index 97% rename from backend/database/39_reminder_profiles.sql rename to backend/database/40_reminder_profiles.sql index ca9847e5..8310b54e 100644 --- a/backend/database/39_reminder_profiles.sql +++ b/backend/database/40_reminder_profiles.sql @@ -1,6 +1,6 @@ -- ============================================================================= -- MenuGreen Seed Data - Table: reminder_profiles --- Sequence Number: 39 +-- Sequence Number: 40 -- ============================================================================= BEGIN; @@ -27,4 +27,4 @@ VALUES ('77777777-7777-7777-7777-777777777703', 'ffffffff-ffff-ffff-ffff-ffffffffffff', '08:30:00', '13:00:00', '20:00:00', now()) ON CONFLICT DO NOTHING; -COMMIT; \ No newline at end of file +COMMIT; diff --git a/backend/database/40_goal_drift_alerts.sql b/backend/database/41_goal_drift_alerts.sql similarity index 98% rename from backend/database/40_goal_drift_alerts.sql rename to backend/database/41_goal_drift_alerts.sql index 84d72113..a69d9d31 100644 --- a/backend/database/40_goal_drift_alerts.sql +++ b/backend/database/41_goal_drift_alerts.sql @@ -1,6 +1,6 @@ -- ============================================================================= -- MenuGreen Seed Data - Table: goal_drift_alerts --- Sequence Number: 40 +-- Sequence Number: 41 -- ============================================================================= BEGIN; @@ -32,4 +32,4 @@ VALUES ('88888888-8888-8888-8888-888888888802', 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee', 'ProteinDeficit', 'Lượng đạm trung bình tuần qua thấp hơn 20% so với mục tiêu PT thiết lập', 96, 120, -20.0, false, false, now(), NULL, NULL) ON CONFLICT DO NOTHING; -COMMIT; \ No newline at end of file +COMMIT; diff --git a/backend/database/42_coach_profiles.sql b/backend/database/42_coach_profiles.sql index ef8b93cb..64521d8c 100644 --- a/backend/database/42_coach_profiles.sql +++ b/backend/database/42_coach_profiles.sql @@ -10,9 +10,24 @@ CREATE TABLE coach_profiles ( "Id" uuid NOT NULL, "UserId" uuid NOT NULL, "Specialty" character varying(255) NOT NULL, + "Headline" character varying(120) NOT NULL DEFAULT '', "Bio" text NOT NULL, "ExperienceYears" integer NOT NULL, "CertificateUrl" text NULL, + "PhoneNumber" character varying(30) NOT NULL DEFAULT '', + "City" character varying(120) NOT NULL DEFAULT '', + "LanguagesJson" text NOT NULL DEFAULT '[]', + "CoachingStylesJson" text NOT NULL DEFAULT '[]', + "ClientLevelsJson" text NOT NULL DEFAULT '[]', + "CertificatesJson" text NOT NULL DEFAULT '[]', + "GalleryUrlsJson" text NOT NULL DEFAULT '[]', + "Achievements" text NOT NULL DEFAULT '', + "IdentityDocumentUrl" character varying(1000) NULL, + "ApplicationStatus" character varying(30) NOT NULL DEFAULT 'Draft', + "ReviewNote" character varying(1000) NULL, + "SubmittedAt" timestamp with time zone NULL, + "ReviewedAt" timestamp with time zone NULL, + "ReviewedByUserId" uuid NULL, "PriceVnd" integer NOT NULL, "IsActive" boolean NOT NULL DEFAULT true, "CreatedAt" timestamp with time zone NOT NULL, @@ -21,10 +36,46 @@ CREATE TABLE coach_profiles ( CONSTRAINT "FK_coach_profiles_users_UserId" FOREIGN KEY ("UserId") REFERENCES users ("Id") ON DELETE CASCADE ); +CREATE UNIQUE INDEX "IX_coach_profiles_UserId" + ON coach_profiles ("UserId"); +CREATE INDEX "IX_coach_profiles_ApplicationStatus" + ON coach_profiles ("ApplicationStatus"); + -- Seed Data for coach_profiles -INSERT INTO coach_profiles ("Id", "UserId", "Specialty", "Bio", "ExperienceYears", "CertificateUrl", "PriceVnd", "IsActive", "CreatedAt", "UpdatedAt") +INSERT INTO coach_profiles ( + "Id", "UserId", "Specialty", "Headline", "Bio", "ExperienceYears", + "CertificateUrl", "PhoneNumber", "City", "LanguagesJson", + "CoachingStylesJson", "ClientLevelsJson", "CertificatesJson", + "GalleryUrlsJson", "Achievements", "IdentityDocumentUrl", + "ApplicationStatus", "SubmittedAt", "ReviewedAt", "PriceVnd", "IsActive", + "CreatedAt", "UpdatedAt" +) VALUES -('90000000-0000-0000-0000-000000000002', '77777777-7777-7777-7777-777777777777', 'Huấn luyện viên PT & Dinh dưỡng chuyên sâu', 'Chào bạn, tôi là PT Coach MenuGreen với nhiều năm kinh nghiệm tư vấn thực đơn và lên kế hoạch luyện tập chuyên biệt.', 6, 'https://example.com/certificates/pt_coach.pdf', 500000, true, now(), now()) +( + '90000000-0000-0000-0000-000000000002', + '77777777-7777-7777-7777-777777777777', + 'Giảm cân, giảm mỡ, tăng cơ, dinh dưỡng chuyên sâu', + 'PT tăng cơ và giảm mỡ dành cho người mới', + 'Chào bạn, tôi là PT Coach MenuGreen với nhiều năm kinh nghiệm tư vấn thực đơn và lên kế hoạch luyện tập chuyên biệt.', + 6, + 'https://example.com/certificates/pt_coach.pdf', + '0901234567', + 'TP. Hồ Chí Minh', + '["Tiếng Việt","English"]', + '["Theo sát số liệu","Nhẹ nhàng, động viên","Kỷ luật"]', + '["Người mới","Trung cấp"]', + '[{"Name":"NASM Certified Personal Trainer","Issuer":"National Academy of Sports Medicine","CredentialNumber":"NASM-CPT-MG-2024-0188","IssuedDate":"2024-01-15","ExpiryDate":"2028-01-15","ImageUrl":"https://placehold.co/1200x800/EAF4EF/14532D?text=NASM-CPT"},{"Name":"CPR and AED","Issuer":"American Safety Training Institute","CredentialNumber":"CPR-AED-2025-771","IssuedDate":"2025-02-10","ExpiryDate":"2027-02-10","ImageUrl":"https://placehold.co/1200x800/EFF6FF/1D4ED8?text=CPR-AED"}]', + '["https://images.unsplash.com/photo-1571019614242-c5c5dee9f50b?w=1200","https://images.unsplash.com/photo-1581009146145-b5ef050c2e1e?w=1200","https://images.unsplash.com/photo-1534438327276-14e5300c3a48?w=1200","https://images.unsplash.com/photo-1599058917212-d750089bc07e?w=1200"]', + 'Đã đồng hành cùng hơn 120 học viên.', + 'https://placehold.co/1200x800/F4F4F5/18181B?text=Identity+Coach+1', + 'Approved', + now() - interval '1 hour', + now(), + 500000, + true, + now(), + now() +) ON CONFLICT DO NOTHING; COMMIT; diff --git a/backend/database/55_PtReviewRequests.sql b/backend/database/55_PtReviewRequests.sql index 13fcb33a..3de56628 100644 --- a/backend/database/55_PtReviewRequests.sql +++ b/backend/database/55_PtReviewRequests.sql @@ -99,4 +99,48 @@ VALUES ) ON CONFLICT DO NOTHING; +-- Keep the Gymer-facing request status aligned with approved meal plans. +WITH matching_requests AS ( + SELECT + request."Id", + plan."ApprovedAt", + plan."TargetCalories", + ROW_NUMBER() OVER ( + PARTITION BY request."UserId" + ORDER BY request."CreatedAt" DESC + ) AS row_number + FROM "PtReviewRequests" AS request + JOIN meal_plan_headers AS plan + ON plan."UserId" = request."UserId" + AND plan."Status" = 'Approved' + AND COALESCE(plan."StartDate", plan."EndDate") + <= request."WeekStartDate" + 6 + AND COALESCE(plan."EndDate", plan."StartDate") + >= request."WeekStartDate" + WHERE request."Status" = 'Pending' + AND request."CreatedByRole" <> 'Coach' + AND ( + COALESCE(request."ReportDataJson", '') = '' + OR COALESCE( + request."ReportDataJson"::jsonb ->> 'requestType', + 'RouteApproval' + ) = 'RouteApproval' + ) +) +UPDATE "PtReviewRequests" AS request +SET + "Status" = 'Reviewed', + "ReviewedAt" = matching."ApprovedAt", + "PtComment" = COALESCE( + NULLIF(request."PtComment", ''), + 'PT đã duyệt và gửi lộ trình dinh dưỡng.' + ), + "SuggestedCalorieTarget" = COALESCE( + request."SuggestedCalorieTarget", + matching."TargetCalories" + ) +FROM matching_requests AS matching +WHERE request."Id" = matching."Id" + AND matching.row_number = 1; + COMMIT; diff --git a/backend/database/58_meal_plan_proposals.sql b/backend/database/58_meal_plan_proposals.sql index b95265aa..0f67b60f 100644 --- a/backend/database/58_meal_plan_proposals.sql +++ b/backend/database/58_meal_plan_proposals.sql @@ -1,5 +1,6 @@ -- ============================================================================= -- MenuGreen - Meal plan proposal tables + current mid-week proposal seed +-- Sequence Number: 58 -- Safe to run repeatedly: no DROP statements and all inserts are idempotent. -- ============================================================================= BEGIN; @@ -40,6 +41,10 @@ CREATE TABLE IF NOT EXISTS meal_plan_proposal_items ( "RecipeId" uuid NULL, "QuantityG" numeric(10,2) NULL, "TargetCalories" integer NULL, + "ProteinG" numeric(10,2) NULL, + "CarbsG" numeric(10,2) NULL, + "FatG" numeric(10,2) NULL, + "IngredientSnapshotJson" jsonb NULL, "SortOrder" integer NOT NULL, "CreatedAt" timestamp with time zone NOT NULL, CONSTRAINT "PK_meal_plan_proposal_items" PRIMARY KEY ("Id"), diff --git a/backend/database/58_sync_ptreview_from_mealplan.sql b/backend/database/58_sync_ptreview_from_mealplan.sql deleted file mode 100644 index c4b6fe4f..00000000 --- a/backend/database/58_sync_ptreview_from_mealplan.sql +++ /dev/null @@ -1,55 +0,0 @@ --- ============================================================================= --- MenuGreen Migration - Sync PtReviewRequests from meal_plan_headers --- Sequence Number: 58 --- Purpose: Move PtReviewRequests UPDATE from 24_meal_plan_headers.sql --- because PtReviewRequests table is created in migration 55 --- ============================================================================= -BEGIN; - --- Keep Gymer-facing "Tôi gửi PT" status in sync. --- When a Coach meal plan is approved, the matching PtReviewRequest should move --- from Pending -> Reviewed so the Gymer card shows "Đã duyệt". -WITH matching_requests AS ( - SELECT - request."Id", - plan."ApprovedAt", - plan."TargetCalories", - ROW_NUMBER() OVER ( - PARTITION BY request."UserId" - ORDER BY request."CreatedAt" DESC - ) AS row_number - FROM "PtReviewRequests" AS request - JOIN meal_plan_headers AS plan - ON plan."UserId" = request."UserId" - AND plan."Status" = 'Approved' - AND COALESCE(plan."StartDate", plan."EndDate") - <= request."WeekStartDate" + 6 - AND COALESCE(plan."EndDate", plan."StartDate") - >= request."WeekStartDate" - WHERE request."Status" = 'Pending' - AND request."CreatedByRole" <> 'Coach' - AND ( - COALESCE(request."ReportDataJson", '') = '' - OR COALESCE( - request."ReportDataJson"::jsonb ->> 'requestType', - 'RouteApproval' - ) = 'RouteApproval' - ) -) -UPDATE "PtReviewRequests" AS request -SET - "Status" = 'Reviewed', - "ReviewedAt" = matching."ApprovedAt", - "PtComment" = COALESCE( - NULLIF(request."PtComment", ''), - 'PT đã duyệt và gửi lộ trình dinh dưỡng.' - ), - "SuggestedCalorieTarget" = COALESCE( - request."SuggestedCalorieTarget", - matching."TargetCalories" - ) -FROM matching_requests AS matching -WHERE request."Id" = matching."Id" - AND matching.row_number = 1; - -COMMIT; diff --git a/backend/database/59_add_action_url_column.sql b/backend/database/59_add_action_url_column.sql deleted file mode 100644 index 3fda1c5c..00000000 --- a/backend/database/59_add_action_url_column.sql +++ /dev/null @@ -1,11 +0,0 @@ --- ============================================================================= --- MenuGreen Migration - Add ActionUrl column to notifications table --- Sequence Number: 59 --- Description: Add missing ActionUrl column for deep-link support --- Safe: uses IF NOT EXISTS to avoid errors on re-run --- ============================================================================= - -ALTER TABLE notifications ADD COLUMN IF NOT EXISTS "ActionUrl" character varying(500) NULL; - --- Optional: Add index for ActionUrl if needed for queries --- CREATE INDEX IF NOT EXISTS idx_notifications_action_url ON notifications("ActionUrl"); diff --git a/backend/database/59_current_week_reporting_demo.sql b/backend/database/59_current_week_reporting_demo.sql deleted file mode 100644 index 6071c1ae..00000000 --- a/backend/database/59_current_week_reporting_demo.sql +++ /dev/null @@ -1,151 +0,0 @@ --- ============================================================================= --- MenuGreen - Complete demo reporting data for the current week --- Target account: gymer@menugreen.app (ffffffff-ffff-ffff-ffff-ffffffffffff) --- Week: 03/08/2026 - 09/08/2026; actual data through 07/08/2026 00:53 +07. --- --- Monday-Wednesday data already exists. This script fills Thursday, creates --- Friday's planned meals (without future actual logs), and records weights at --- the start of the week and at the current check-in. --- Safe to run repeatedly. --- ============================================================================= -BEGIN; - --- The applied Friday adjustment uses a daily plan. Ensure it exists so this --- seed also works after loading the numbered database scripts from scratch. -INSERT INTO meal_plan_headers ( - "Id", "UserId", "Title", "PlanType", "StartDate", "EndDate", - "TargetCalories", "GeneratedBy", "IsActive", "CreatedAt", "UpdatedAt", - "Status", "ApprovedAt", "MinCalories", "MaxCalories", "CoachNotes" -) -SELECT - '801c5f80-5b29-4d5b-9c54-948c479f150f', - 'ffffffff-ffff-ffff-ffff-ffffffffffff', - 'Lộ trình ngày 07/08/2026', 'DAILY', - DATE '2026-08-07', DATE '2026-08-07', - 2000, 'PT_PROPOSAL', true, - TIMESTAMPTZ '2026-08-07 00:39:15+07', - TIMESTAMPTZ '2026-08-07 00:39:15+07', - 'Approved', TIMESTAMPTZ '2026-08-07 00:39:15+07', - NULL, NULL, 'Điều chỉnh giữa tuần từ PT' -WHERE EXISTS ( - SELECT 1 FROM users - WHERE "Id" = 'ffffffff-ffff-ffff-ffff-ffffffffffff' -) -ON CONFLICT ("Id") DO NOTHING; - --- Thursday and Friday planned meals in the active weekly plan. -INSERT INTO meal_plan_items ( - "Id", "MealPlanId", "MealType", "FoodId", "RecipeId", "PlannedDate", - "ScheduledTime", "TargetCalories", "QuantityG", "ProteinG", "CarbsG", - "FatG", "SourceType", "CustomName", "IngredientSnapshotJson", - "IsCompleted", "CreatedAt", "Origin" -) -VALUES -( - '86000001-0000-4000-8000-000000000001', - 'ee8bb747-45d4-41bf-a522-2384ef74e18c', - 'breakfast', 'fd000008-0000-0000-0000-000000000008', NULL, - DATE '2026-08-06', TIME '07:30:00', 450, 250, 20, 50, 12, - 'Food', NULL, NULL, true, TIMESTAMPTZ '2026-08-06 06:00:00+07', 'demo_current_week' -), -( - '86000002-0000-4000-8000-000000000002', - 'ee8bb747-45d4-41bf-a522-2384ef74e18c', - 'lunch', 'fd000015-0000-0000-0000-000000000015', NULL, - DATE '2026-08-06', TIME '12:00:00', 700, 350, 32, 78, 22, - 'Food', NULL, NULL, true, TIMESTAMPTZ '2026-08-06 06:00:00+07', 'demo_current_week' -), -( - '86000003-0000-4000-8000-000000000003', - 'ee8bb747-45d4-41bf-a522-2384ef74e18c', - 'dinner', 'fd110034-1000-4000-8000-000000000034', NULL, - DATE '2026-08-06', TIME '18:30:00', 650, 220, 56, 18, 28, - 'Food', NULL, NULL, true, TIMESTAMPTZ '2026-08-06 06:00:00+07', 'demo_current_week' -), -( - '87000001-0000-4000-8000-000000000001', - '801c5f80-5b29-4d5b-9c54-948c479f150f', - 'breakfast', 'fd000005-0000-0000-0000-000000000005', NULL, - DATE '2026-08-07', TIME '07:30:00', 450, 350, 12, 52, 22, - 'Food', NULL, NULL, false, TIMESTAMPTZ '2026-08-07 00:45:00+07', 'demo_current_week' -), -( - '87000002-0000-4000-8000-000000000002', - '801c5f80-5b29-4d5b-9c54-948c479f150f', - 'lunch', 'fd000049-0000-0000-0000-000000000049', NULL, - DATE '2026-08-07', TIME '12:00:00', 700, 350, 41, 70, 20, - 'Food', NULL, NULL, false, TIMESTAMPTZ '2026-08-07 00:45:00+07', 'demo_current_week' -), -( - '87000003-0000-4000-8000-000000000003', - '801c5f80-5b29-4d5b-9c54-948c479f150f', - 'dinner', 'fd110025-1000-4000-8000-000000000025', NULL, - DATE '2026-08-07', TIME '18:30:00', 650, 300, 53, 32, 26, - 'Food', NULL, NULL, false, TIMESTAMPTZ '2026-08-07 00:45:00+07', 'demo_current_week' -) -ON CONFLICT ("Id") DO UPDATE SET - "MealPlanId" = EXCLUDED."MealPlanId", - "MealType" = EXCLUDED."MealType", - "FoodId" = EXCLUDED."FoodId", - "RecipeId" = EXCLUDED."RecipeId", - "PlannedDate" = EXCLUDED."PlannedDate", - "ScheduledTime" = EXCLUDED."ScheduledTime", - "TargetCalories" = EXCLUDED."TargetCalories", - "QuantityG" = EXCLUDED."QuantityG", - "ProteinG" = EXCLUDED."ProteinG", - "CarbsG" = EXCLUDED."CarbsG", - "FatG" = EXCLUDED."FatG", - "IsCompleted" = EXCLUDED."IsCompleted", - "Origin" = EXCLUDED."Origin"; - --- Thursday actual logs. Friday is intentionally omitted because the current --- time is before breakfast; the weekly report will show Friday as planned only. -INSERT INTO meal_logs ( - "Id", "UserId", "FoodId", "RecipeId", "MealType", "QuantityG", - "CaloriesKcal", "ProteinG", "CarbsG", "FatG", "SourceType", - "CustomName", "Notes", "LoggedAt", "MealPlanItemId", "IsFromMealPlan" -) -VALUES -( - '96000001-0000-4000-8000-000000000001', - 'ffffffff-ffff-ffff-ffff-ffffffffffff', - 'fd000008-0000-0000-0000-000000000008', NULL, 'breakfast', 250, - 440, 20, 48, 11, 'Food', NULL, 'Bữa sáng đúng kế hoạch', - TIMESTAMPTZ '2026-08-06 07:25:00+07', - '86000001-0000-4000-8000-000000000001', true -), -( - '96000002-0000-4000-8000-000000000002', - 'ffffffff-ffff-ffff-ffff-ffffffffffff', - 'fd000015-0000-0000-0000-000000000015', NULL, 'lunch', 350, - 690, 31, 76, 21, 'Food', NULL, 'Bữa trưa đúng kế hoạch', - TIMESTAMPTZ '2026-08-06 12:10:00+07', - '86000002-0000-4000-8000-000000000002', true -), -( - '96000003-0000-4000-8000-000000000003', - 'ffffffff-ffff-ffff-ffff-ffffffffffff', - 'fd110034-1000-4000-8000-000000000034', NULL, 'dinner', 220, - 640, 55, 17, 27, 'Food', NULL, 'Bữa tối đúng kế hoạch', - TIMESTAMPTZ '2026-08-06 18:35:00+07', - '86000003-0000-4000-8000-000000000003', true -) -ON CONFLICT ("Id") DO NOTHING; - -INSERT INTO weight_logs ( - "Id", "UserId", "WeightKg", "BodyFatPercent", "RecordedAt" -) -VALUES -( - '97000001-0000-4000-8000-000000000001', - 'ffffffff-ffff-ffff-ffff-ffffffffffff', - 75.4, 20.3, TIMESTAMPTZ '2026-08-03 06:45:00+07' -), -( - '97000002-0000-4000-8000-000000000002', - 'ffffffff-ffff-ffff-ffff-ffffffffffff', - 75.0, 20.0, TIMESTAMPTZ '2026-08-07 00:45:00+07' -) -ON CONFLICT ("Id") DO NOTHING; - -COMMIT; diff --git a/backend/database/60_coach_application_review.sql b/backend/database/60_coach_application_review.sql deleted file mode 100644 index 3ed97986..00000000 --- a/backend/database/60_coach_application_review.sql +++ /dev/null @@ -1,176 +0,0 @@ --- PT application onboarding, Admin review workflow and profile seed. --- This script never creates a Coach account. It only completes coach_profiles --- for users that already have the Coach role. -BEGIN; - -ALTER TABLE coach_profiles - ADD COLUMN IF NOT EXISTS "Headline" character varying(120) NOT NULL DEFAULT '', - ADD COLUMN IF NOT EXISTS "PhoneNumber" character varying(30) NOT NULL DEFAULT '', - ADD COLUMN IF NOT EXISTS "City" character varying(120) NOT NULL DEFAULT '', - ADD COLUMN IF NOT EXISTS "LanguagesJson" text NOT NULL DEFAULT '[]', - ADD COLUMN IF NOT EXISTS "CoachingStylesJson" text NOT NULL DEFAULT '[]', - ADD COLUMN IF NOT EXISTS "ClientLevelsJson" text NOT NULL DEFAULT '[]', - ADD COLUMN IF NOT EXISTS "CertificatesJson" text NOT NULL DEFAULT '[]', - ADD COLUMN IF NOT EXISTS "GalleryUrlsJson" text NOT NULL DEFAULT '[]', - ADD COLUMN IF NOT EXISTS "Achievements" text NOT NULL DEFAULT '', - ADD COLUMN IF NOT EXISTS "IdentityDocumentUrl" character varying(1000) NULL, - ADD COLUMN IF NOT EXISTS "ApplicationStatus" character varying(30) NOT NULL DEFAULT 'Draft', - ADD COLUMN IF NOT EXISTS "ReviewNote" character varying(1000) NULL, - ADD COLUMN IF NOT EXISTS "SubmittedAt" timestamp with time zone NULL, - ADD COLUMN IF NOT EXISTS "ReviewedAt" timestamp with time zone NULL, - ADD COLUMN IF NOT EXISTS "ReviewedByUserId" uuid NULL; - -CREATE UNIQUE INDEX IF NOT EXISTS "IX_coach_profiles_UserId" - ON coach_profiles ("UserId"); - -CREATE INDEX IF NOT EXISTS "IX_coach_profiles_ApplicationStatus" - ON coach_profiles ("ApplicationStatus"); - --- Remove the temporary PT account created by the previous seed version. -DELETE FROM users -WHERE "Id" = '88888888-8888-8888-8888-888888888888' - AND "Email" = 'pt.pending@menugreen.app'; - --- Undo the temporary rename from the previous seed version without touching --- accounts whose owner has already edited their own name. -UPDATE profiles -SET "FullName" = 'Huấn luyện viên Coach (PT)', - "AvatarUrl" = 'https://i.pravatar.cc/150?u=77777777-7777-7777-7777-777777777777', - "UpdatedAt" = now() -WHERE "UserId" = '77777777-7777-7777-7777-777777777777' - AND "FullName" = 'Nguyễn Minh Khôi'; - --- Keep Coach accounts that had already been approved before this workflow. -UPDATE coach_profiles -SET "ApplicationStatus" = 'Approved', - "ReviewedAt" = COALESCE("ReviewedAt", "UpdatedAt") -WHERE "IsActive" = true - AND "ApplicationStatus" = 'Draft'; - --- Complete a profile for every existing Coach account. The first and second --- Coach receive different sample specialties/media so both profiles are easy --- to distinguish in the Admin UI. Existing content is kept, while every blank --- legacy field is backfilled even when the profile was already Approved. -WITH coach_accounts AS ( - SELECT - u."Id" AS "UserId", - u."CreatedAt", - row_number() OVER (ORDER BY u."CreatedAt", u."Id") AS position - FROM users u - INNER JOIN roles r ON r."Id" = u."RoleId" - WHERE lower(r."Name") = 'coach' - AND u."DeletedAt" IS NULL -) -INSERT INTO coach_profiles ( - "Id", "UserId", "Specialty", "Headline", "Bio", "ExperienceYears", - "CertificateUrl", "PhoneNumber", "City", "LanguagesJson", - "CoachingStylesJson", "ClientLevelsJson", "CertificatesJson", - "GalleryUrlsJson", "Achievements", "IdentityDocumentUrl", - "ApplicationStatus", "ReviewNote", "SubmittedAt", "ReviewedAt", - "ReviewedByUserId", "PriceVnd", "IsActive", "CreatedAt", "UpdatedAt" -) -SELECT - ca."UserId", - ca."UserId", - CASE WHEN ca.position % 2 = 1 - THEN 'Giảm cân, giảm mỡ, Tăng cơ, Body recomposition' - ELSE 'Giảm cân, Functional training, Cardio và sức bền' - END, - CASE WHEN ca.position % 2 = 1 - THEN 'PT tăng cơ và giảm mỡ dành cho người mới' - ELSE 'PT đồng hành giảm mỡ và cải thiện sức bền' - END, - CASE WHEN ca.position % 2 = 1 - THEN 'Tôi là huấn luyện viên cá nhân với nhiều năm kinh nghiệm đồng hành cùng người mới bắt đầu. Phương pháp của tôi ưu tiên kỹ thuật an toàn, theo sát số liệu và xây dựng thói quen bền vững thay vì ép cân ngắn hạn.' - ELSE 'Tôi là huấn luyện viên cá nhân chuyên hướng dẫn người mới và nhân viên văn phòng. Tôi tập trung vào kỹ thuật đúng, sức bền và những thay đổi nhỏ có thể duy trì lâu dài trong cuộc sống bận rộn.' - END, - CASE WHEN ca.position % 2 = 1 THEN 6 ELSE 4 END, - CASE WHEN ca.position % 2 = 1 - THEN 'https://placehold.co/1200x800/EAF4EF/14532D?text=NASM-CPT' - ELSE 'https://placehold.co/1200x800/FFF7ED/9A3412?text=ACE-CPT' - END, - CASE WHEN ca.position % 2 = 1 THEN '0901234567' ELSE '0912345678' END, - CASE WHEN ca.position % 2 = 1 THEN 'TP. Hồ Chí Minh' ELSE 'Hà Nội' END, - '["Tiếng Việt","English"]', - CASE WHEN ca.position % 2 = 1 - THEN '["Theo sát số liệu","Nhẹ nhàng, động viên","Kỷ luật"]' - ELSE '["Nhẹ nhàng, động viên","Linh hoạt theo lịch","Theo sát số liệu"]' - END, - '["Người mới","Trung cấp"]', - CASE WHEN ca.position % 2 = 1 - THEN '[{"Name":"NASM Certified Personal Trainer","Issuer":"National Academy of Sports Medicine","CredentialNumber":"NASM-CPT-MG-2024-0188","IssuedDate":"2024-01-15","ExpiryDate":"2028-01-15","ImageUrl":"https://placehold.co/1200x800/EAF4EF/14532D?text=NASM-CPT"},{"Name":"CPR và AED","Issuer":"American Safety Training Institute","CredentialNumber":"CPR-AED-2025-771","IssuedDate":"2025-02-10","ExpiryDate":"2027-02-10","ImageUrl":"https://placehold.co/1200x800/EFF6FF/1D4ED8?text=CPR-AED"}]' - ELSE '[{"Name":"ACE Certified Personal Trainer","Issuer":"American Council on Exercise","CredentialNumber":"ACE-MG-2023-0421","IssuedDate":"2023-06-20","ExpiryDate":"2027-06-20","ImageUrl":"https://placehold.co/1200x800/FFF7ED/9A3412?text=ACE-CPT"},{"Name":"First Aid và CPR","Issuer":"Vietnam Red Cross","CredentialNumber":"VNRC-CPR-2025-118","IssuedDate":"2025-03-12","ExpiryDate":"2027-03-12","ImageUrl":"https://placehold.co/1200x800/FEF2F2/B91C1C?text=First+Aid+CPR"}]' - END, - CASE WHEN ca.position % 2 = 1 - THEN '["https://images.unsplash.com/photo-1571019614242-c5c5dee9f50b?w=1200","https://images.unsplash.com/photo-1581009146145-b5ef050c2e1e?w=1200","https://images.unsplash.com/photo-1534438327276-14e5300c3a48?w=1200","https://images.unsplash.com/photo-1599058917212-d750089bc07e?w=1200"]' - ELSE '["https://images.unsplash.com/photo-1517836357463-d25dfeac3438?w=1200","https://images.unsplash.com/photo-1548690312-e3b507d8c110?w=1200","https://images.unsplash.com/photo-1594737625785-a6cbdabd333c?w=1200"]' - END, - CASE WHEN ca.position % 2 = 1 - THEN 'Đã đồng hành cùng hơn 120 học viên và chuyên xây dựng lộ trình tăng cơ, giảm mỡ cho người mới.' - ELSE 'Đã hướng dẫn hơn 70 học viên và hoàn thành chứng nhận huấn luyện nhóm, sơ cứu cơ bản.' - END, - CASE WHEN ca.position % 2 = 1 - THEN 'https://placehold.co/1200x800/F4F4F5/18181B?text=Identity+Coach+1' - ELSE 'https://placehold.co/1200x800/F4F4F5/18181B?text=Identity+Coach+2' - END, - 'PendingReview', - NULL, - now() - (ca.position * interval '1 hour'), - NULL, - NULL, - 0, - false, - ca."CreatedAt", - now() -FROM coach_accounts ca -ON CONFLICT ("UserId") DO UPDATE SET - "Specialty" = COALESCE(NULLIF(BTRIM(coach_profiles."Specialty"), ''), EXCLUDED."Specialty"), - "Headline" = COALESCE(NULLIF(BTRIM(coach_profiles."Headline"), ''), EXCLUDED."Headline"), - "Bio" = COALESCE(NULLIF(BTRIM(coach_profiles."Bio"), ''), EXCLUDED."Bio"), - "ExperienceYears" = CASE WHEN coach_profiles."ExperienceYears" > 0 THEN coach_profiles."ExperienceYears" ELSE EXCLUDED."ExperienceYears" END, - "CertificateUrl" = COALESCE(NULLIF(BTRIM(coach_profiles."CertificateUrl"), ''), EXCLUDED."CertificateUrl"), - "PhoneNumber" = COALESCE(NULLIF(BTRIM(coach_profiles."PhoneNumber"), ''), EXCLUDED."PhoneNumber"), - "City" = COALESCE(NULLIF(BTRIM(coach_profiles."City"), ''), EXCLUDED."City"), - "LanguagesJson" = CASE WHEN COALESCE(NULLIF(BTRIM(coach_profiles."LanguagesJson"), ''), '[]') IN ('[]', 'null') THEN EXCLUDED."LanguagesJson" ELSE coach_profiles."LanguagesJson" END, - "CoachingStylesJson" = CASE WHEN COALESCE(NULLIF(BTRIM(coach_profiles."CoachingStylesJson"), ''), '[]') IN ('[]', 'null') THEN EXCLUDED."CoachingStylesJson" ELSE coach_profiles."CoachingStylesJson" END, - "ClientLevelsJson" = CASE WHEN COALESCE(NULLIF(BTRIM(coach_profiles."ClientLevelsJson"), ''), '[]') IN ('[]', 'null') THEN EXCLUDED."ClientLevelsJson" ELSE coach_profiles."ClientLevelsJson" END, - "CertificatesJson" = CASE WHEN COALESCE(NULLIF(BTRIM(coach_profiles."CertificatesJson"), ''), '[]') IN ('[]', 'null') THEN EXCLUDED."CertificatesJson" ELSE coach_profiles."CertificatesJson" END, - "GalleryUrlsJson" = CASE WHEN COALESCE(NULLIF(BTRIM(coach_profiles."GalleryUrlsJson"), ''), '[]') IN ('[]', 'null') THEN EXCLUDED."GalleryUrlsJson" ELSE coach_profiles."GalleryUrlsJson" END, - "Achievements" = COALESCE(NULLIF(BTRIM(coach_profiles."Achievements"), ''), EXCLUDED."Achievements"), - "IdentityDocumentUrl" = COALESCE(NULLIF(BTRIM(coach_profiles."IdentityDocumentUrl"), ''), EXCLUDED."IdentityDocumentUrl"), - "ApplicationStatus" = CASE WHEN coach_profiles."ApplicationStatus" IN ('', 'Draft') THEN 'PendingReview' ELSE coach_profiles."ApplicationStatus" END, - "ReviewNote" = coach_profiles."ReviewNote", - "SubmittedAt" = COALESCE(coach_profiles."SubmittedAt", EXCLUDED."SubmittedAt"), - "IsActive" = coach_profiles."IsActive", - "UpdatedAt" = now() -WHERE COALESCE(BTRIM(coach_profiles."Specialty"), '') = '' - OR COALESCE(BTRIM(coach_profiles."Headline"), '') = '' - OR COALESCE(BTRIM(coach_profiles."Bio"), '') = '' - OR coach_profiles."ExperienceYears" <= 0 - OR COALESCE(BTRIM(coach_profiles."CertificateUrl"), '') = '' - OR COALESCE(BTRIM(coach_profiles."PhoneNumber"), '') = '' - OR COALESCE(BTRIM(coach_profiles."City"), '') = '' - OR COALESCE(NULLIF(BTRIM(coach_profiles."LanguagesJson"), ''), '[]') IN ('[]', 'null') - OR COALESCE(NULLIF(BTRIM(coach_profiles."CoachingStylesJson"), ''), '[]') IN ('[]', 'null') - OR COALESCE(NULLIF(BTRIM(coach_profiles."ClientLevelsJson"), ''), '[]') IN ('[]', 'null') - OR COALESCE(NULLIF(BTRIM(coach_profiles."CertificatesJson"), ''), '[]') IN ('[]', 'null') - OR COALESCE(NULLIF(BTRIM(coach_profiles."GalleryUrlsJson"), ''), '[]') IN ('[]', 'null') - OR COALESCE(BTRIM(coach_profiles."Achievements"), '') = '' - OR COALESCE(BTRIM(coach_profiles."IdentityDocumentUrl"), '') = '' - OR coach_profiles."ApplicationStatus" IN ('', 'Draft') - OR coach_profiles."SubmittedAt" IS NULL; - --- Public PT profiles read avatars from profiles, not coach_profiles. Only fill --- missing avatars so a PT-uploaded photo is never replaced by this seed. -UPDATE profiles p -SET - "AvatarUrl" = 'https://i.pravatar.cc/300?u=' || p."UserId"::text, - "UpdatedAt" = now() -FROM users u -INNER JOIN roles r ON r."Id" = u."RoleId" -WHERE p."UserId" = u."Id" - AND lower(r."Name") = 'coach' - AND u."DeletedAt" IS NULL - AND COALESCE(BTRIM(p."AvatarUrl"), '') = ''; - -COMMIT; diff --git a/backend/database/62_food_serving_consistency.sql b/backend/database/62_food_serving_consistency.sql deleted file mode 100644 index fe0dcc28..00000000 --- a/backend/database/62_food_serving_consistency.sql +++ /dev/null @@ -1,22 +0,0 @@ --- Food nutrition values represent one default serving. Require a positive --- gram basis so kcal/macros can always be scaled without assuming 100g. -BEGIN; - -ALTER TABLE foods - ALTER COLUMN "DefaultServingG" SET NOT NULL; - -DO $$ -BEGIN - IF NOT EXISTS ( - SELECT 1 - FROM pg_constraint - WHERE conname = 'CK_foods_DefaultServingG_Positive' - AND conrelid = 'foods'::regclass - ) THEN - ALTER TABLE foods - ADD CONSTRAINT "CK_foods_DefaultServingG_Positive" - CHECK ("DefaultServingG" > 0); - END IF; -END $$; - -COMMIT; diff --git a/backend/database/63_adjustable_recipe_portions.sql b/backend/database/63_adjustable_recipe_portions.sql deleted file mode 100644 index f7a8694e..00000000 --- a/backend/database/63_adjustable_recipe_portions.sql +++ /dev/null @@ -1,28 +0,0 @@ --- Adjustable recipe portions are immutable snapshots attached to a proposal, --- approved plan item and actual meal log. Catalog foods/recipes remain unchanged. -BEGIN; - -ALTER TABLE meal_plan_proposal_items - ADD COLUMN IF NOT EXISTS "ProteinG" numeric(10,2) NULL, - ADD COLUMN IF NOT EXISTS "CarbsG" numeric(10,2) NULL, - ADD COLUMN IF NOT EXISTS "FatG" numeric(10,2) NULL, - ADD COLUMN IF NOT EXISTS "IngredientSnapshotJson" jsonb NULL; - -ALTER TABLE meal_logs - ADD COLUMN IF NOT EXISTS "IngredientSnapshotJson" jsonb NULL, - ADD COLUMN IF NOT EXISTS "ConsumptionRatio" numeric(8,4) NULL; - -DO $$ -BEGIN - IF NOT EXISTS ( - SELECT 1 FROM pg_constraint - WHERE conname = 'CK_meal_logs_ConsumptionRatio_Positive' - AND conrelid = 'meal_logs'::regclass - ) THEN - ALTER TABLE meal_logs - ADD CONSTRAINT "CK_meal_logs_ConsumptionRatio_Positive" - CHECK ("ConsumptionRatio" IS NULL OR "ConsumptionRatio" > 0); - END IF; -END $$; - -COMMIT; diff --git a/backend/database/69_fix_payments_constraint_and_cleanup.sql b/backend/database/69_fix_payments_constraint_and_cleanup.sql deleted file mode 100644 index 9c6171dd..00000000 --- a/backend/database/69_fix_payments_constraint_and_cleanup.sql +++ /dev/null @@ -1,24 +0,0 @@ --- Migration: 69_fix_payments_constraint_and_cleanup --- Date: 2026-08-12 --- Description: Fix CK_payments_status constraint then cleanup old pending payments --- This is the single definitive migration that supersedes 63, 65, 66, 67, 68 - --- Step 1: Fix constraint to include CANCELLED status -ALTER TABLE payments DROP CONSTRAINT IF EXISTS CK_payments_status; -ALTER TABLE payments ADD CONSTRAINT CK_payments_status - CHECK ("Status" IN ('PENDING','PAID','FAILED','EXPIRED','REFUNDED','CANCELLED')); - --- Step 2: Cleanup old pending payments (older than 7 days) -DO $$ -DECLARE - updated_count INTEGER; -BEGIN - UPDATE "payments" - SET "Status" = 'CANCELLED', - "UpdatedAt" = NOW() - WHERE "Status" = 'PENDING' - AND "CreatedAt" < NOW() - INTERVAL '7 days'; - - GET DIAGNOSTICS updated_count = ROW_COUNT; - RAISE NOTICE 'Cleaned up % old PENDING payments', updated_count; -END $$; diff --git a/backend/database/72_add_sourcename_to_recipes.sql b/backend/database/72_add_sourcename_to_recipes.sql new file mode 100644 index 00000000..01a78d95 --- /dev/null +++ b/backend/database/72_add_sourcename_to_recipes.sql @@ -0,0 +1,14 @@ +-- ============================================================================= +-- MenuGreen Migration - Add SourceName column to recipes table +-- Sequence Number: 72 +-- Purpose: Add SourceName column to track recipe source (e.g., AI, Manual, etc.) +-- ============================================================================= +BEGIN; + +-- Add SourceName column if not exists +ALTER TABLE recipes + ADD COLUMN IF NOT EXISTS "SourceName" character varying(255) NULL; + +COMMENT ON COLUMN recipes."SourceName" IS 'Source of the recipe (e.g., AI, Manual, Import)'; + +COMMIT; diff --git a/backend/database/73_add_sourceurl_to_recipes.sql b/backend/database/73_add_sourceurl_to_recipes.sql new file mode 100644 index 00000000..dead049a --- /dev/null +++ b/backend/database/73_add_sourceurl_to_recipes.sql @@ -0,0 +1,14 @@ +-- ============================================================================= +-- MenuGreen Migration - Add SourceUrl column to recipes table +-- Sequence Number: 73 +-- Purpose: Add SourceUrl column to track recipe source URL (e.g., external links) +-- ============================================================================= +BEGIN; + +-- Add SourceUrl column if not exists +ALTER TABLE recipes + ADD COLUMN IF NOT EXISTS "SourceUrl" character varying(2048) NULL; + +COMMENT ON COLUMN recipes."SourceUrl" IS 'URL source of the recipe (e.g., external reference link)'; + +COMMIT; diff --git a/backend/database/README.md b/backend/database/README.md new file mode 100644 index 00000000..4fd1e67b --- /dev/null +++ b/backend/database/README.md @@ -0,0 +1,10 @@ +# MenuGreen SQL organization + +- `01` through `58` are the canonical schema and seed files, ordered by foreign-key dependency. +- Put a table's columns, constraints, indexes, and canonical seed rows in that table's numbered file. + +When adding a field, update the owning table's `CREATE TABLE` statement and canonical seed directly. Do not add another numbered `fix`, `add_column`, or compatibility file. + +The 500-food catalog is embedded directly in `15_ingredients.sql` through +`18_recipe_ingredients.sql`. Generated nutrition values and prices are planning estimates +and should be reviewed before they are presented as authoritative values. diff --git a/backend/scripts/deploy-server.sh b/backend/scripts/deploy-server.sh index 45cb6b32..ec9409fb 100644 --- a/backend/scripts/deploy-server.sh +++ b/backend/scripts/deploy-server.sh @@ -654,7 +654,26 @@ for sql_file in /tmp/nginx-deploy/backend/database/*.sql; do PGPASSWORD="$DB_PASS_PRECHECK" psql -h "$DB_HOST_PRECHECK" -p "$DB_PORT_PRECHECK" -U "$DB_USER_PRECHECK" -d "$DB_NAME_PRECHECK" -c "DELETE FROM \"_RawSqlMigrations\" WHERE \"ScriptName\" = '$filename';" 2>/dev/null fi else - # Standard check for other migrations + # Files 35-41 were renumbered from the legacy 35a/35b/36-40 names. + # Honor the old migration record so a deployed database never reruns the + # destructive DROP/CREATE seed scripts under their new filenames. + legacy_filename="" + case "$filename" in + "35_campaigns.sql") legacy_filename="35a_campaigns.sql" ;; + "36_notifications.sql") legacy_filename="35b_notifications.sql" ;; + "37_activity_logs.sql") legacy_filename="36_activity_logs.sql" ;; + "38_meal_templates.sql") legacy_filename="37_meal_templates.sql" ;; + "39_meal_template_items.sql") legacy_filename="38_meal_template_items.sql" ;; + "40_reminder_profiles.sql") legacy_filename="39_reminder_profiles.sql" ;; + "41_goal_drift_alerts.sql") legacy_filename="40_goal_drift_alerts.sql" ;; + esac + + if [ -n "$legacy_filename" ] && PGPASSWORD="$DB_PASS_PRECHECK" psql -h "$DB_HOST_PRECHECK" -p "$DB_PORT_PRECHECK" -U "$DB_USER_PRECHECK" -d "$DB_NAME_PRECHECK" -tAc "SELECT 1 FROM \"_RawSqlMigrations\" WHERE \"ScriptName\" = '$legacy_filename';" 2>/dev/null | grep -q 1; then + PGPASSWORD="$DB_PASS_PRECHECK" psql -h "$DB_HOST_PRECHECK" -p "$DB_PORT_PRECHECK" -U "$DB_USER_PRECHECK" -d "$DB_NAME_PRECHECK" -c "INSERT INTO \"_RawSqlMigrations\" (\"ScriptName\") VALUES ('$filename') ON CONFLICT DO NOTHING;" >/dev/null 2>&1 || true + echo " ⊘ $filename (already applied as $legacy_filename)" + continue + fi + if PGPASSWORD="$DB_PASS_PRECHECK" psql -h "$DB_HOST_PRECHECK" -p "$DB_PORT_PRECHECK" -U "$DB_USER_PRECHECK" -d "$DB_NAME_PRECHECK" -tAc "SELECT 1 FROM \"_RawSqlMigrations\" WHERE \"ScriptName\" = '$filename';" 2>/dev/null | grep -q 1; then echo " ⊘ $filename (already applied)" continue diff --git a/docs/05-reports/office_reminder_feature_current_behavior.md b/docs/05-reports/office_reminder_feature_current_behavior.md index d40e850b..ccf16a7f 100644 --- a/docs/05-reports/office_reminder_feature_current_behavior.md +++ b/docs/05-reports/office_reminder_feature_current_behavior.md @@ -362,5 +362,5 @@ Nếu sản phẩm quyết định đây là quyền lợi trả phí, cần b - `backend/MenuGreen.DataAccessLayer/Entities/Notification.cs` - `backend/MenuGreen.DataAccessLayer/Entities/NotificationSetting.cs` - `backend/MenuGreen.DataAccessLayer/Configurations/ReminderProfileConfiguration.cs` -- `backend/database/39_reminder_profiles.sql` +- `backend/database/40_reminder_profiles.sql` diff --git a/docs/features/21-adjustable-recipe-portions.md b/docs/features/21-adjustable-recipe-portions.md index ccef9ef1..6e0b46a4 100644 --- a/docs/features/21-adjustable-recipe-portions.md +++ b/docs/features/21-adjustable-recipe-portions.md @@ -107,7 +107,7 @@ xem trước; backend vẫn tính lại lần cuối trước khi lưu snapshot. ## Triển khai cơ sở dữ liệu -Chạy migration `backend/database/63_adjustable_recipe_portions.sql` trước khi phát hành backend mới. Script chỉ bổ sung cột và ràng buộc, không thay đổi dữ liệu danh mục thực phẩm. +Schema mới nằm trực tiếp trong `26_meal_logs.sql` và `58_meal_plan_proposals.sql`. Khi dựng lại database, chạy tuần tự toàn bộ các file `01` đến `58`; dự án không còn dùng file compatibility riêng. Các bản ghi cũ không có snapshot vẫn dùng dữ liệu công thức hiện tại để tương thích ngược. diff --git a/docs/workflow/coach_workflow.md b/docs/workflow/coach_workflow.md index 2a5e51d5..7595802b 100644 --- a/docs/workflow/coach_workflow.md +++ b/docs/workflow/coach_workflow.md @@ -429,7 +429,7 @@ Migration và script liên quan: - Migration EF: `20260806093402_AddMealPlanProposals`. - `backend/database/58_meal_plan_proposals.sql`: tạo bảng, khóa ngoại và index theo cách idempotent. -- `backend/database/59_current_week_reporting_demo.sql`: dữ liệu mẫu từ đầu tuần hiện tại đến ngày chạy thử. +- `backend/database/demo/current_week_reporting.sql`: dữ liệu mẫu tùy chọn từ đầu tuần hiện tại đến ngày chạy thử. ## 15. Xử lý lỗi và bảo mật diff --git a/docs/workflow/gymer_workflow.md b/docs/workflow/gymer_workflow.md index bacc502c..3ff1e2b8 100644 --- a/docs/workflow/gymer_workflow.md +++ b/docs/workflow/gymer_workflow.md @@ -358,7 +358,7 @@ Migration chính: `20260806093402_AddMealPlanProposals`. Các script phục vụ cài đặt và dữ liệu mẫu tuần hiện tại: - `backend/database/58_meal_plan_proposals.sql` -- `backend/database/59_current_week_reporting_demo.sql` +- `backend/database/demo/current_week_reporting.sql` Script dữ liệu mẫu hiện tại tạo dữ liệu từ đầu tuần `03/08/2026` đến ngày `07/08/2026` và được thiết kế để có thể chạy lại an toàn. diff --git a/frontend-web/features/analytics/components/nutrition-analytics-dashboard.tsx b/frontend-web/features/analytics/components/nutrition-analytics-dashboard.tsx index 9343f5c1..9d603fd2 100644 --- a/frontend-web/features/analytics/components/nutrition-analytics-dashboard.tsx +++ b/frontend-web/features/analytics/components/nutrition-analytics-dashboard.tsx @@ -130,8 +130,8 @@ export function NutritionAnalyticsDashboard() { diff --git a/frontend-web/features/foods/components/food-management.tsx b/frontend-web/features/foods/components/food-management.tsx index 5b8468c7..d18073d6 100644 --- a/frontend-web/features/foods/components/food-management.tsx +++ b/frontend-web/features/foods/components/food-management.tsx @@ -10,6 +10,7 @@ import { FoodFormDialog } from "@/features/foods/components/food-form-dialog"; import { useFoods, defaultFoodFilters } from "@/features/foods/hooks/use-foods"; import type { Food } from "@/features/foods/types"; import { formatNumber, formatVnd } from "@/lib/utils/format"; +import { translateData } from "@/lib/utils/data-translator"; export function FoodManagement() { const { @@ -241,7 +242,7 @@ export function FoodManagement() { ) : null} - {food.category || "—"} + {food.category ? translateData(food.category) : "—"} {formatNumber(food.caloriesKcal)} diff --git a/frontend-web/features/ingredients/components/ingredient-management.tsx b/frontend-web/features/ingredients/components/ingredient-management.tsx index fe782c88..3aecf022 100644 --- a/frontend-web/features/ingredients/components/ingredient-management.tsx +++ b/frontend-web/features/ingredients/components/ingredient-management.tsx @@ -12,6 +12,7 @@ import { } from "@/features/ingredients/hooks/use-ingredients"; import type { Ingredient } from "@/features/ingredients/types"; import { formatNumber, formatVnd } from "@/lib/utils/format"; +import { translateData } from "@/lib/utils/data-translator"; export function IngredientManagement() { const { @@ -136,7 +137,7 @@ export function IngredientManagement() {
{item.nameVi}
{item.nameEn ?
{item.nameEn}
: null} - {item.category || "—"} + {item.category ? translateData(item.category) : "—"} {item.unitDefault || "—"} {formatNumber(item.caloriesKcal)} {formatVnd(item.estimatedPriceVnd)} diff --git a/frontend-web/features/meal-plans/components/distribute-meal-plan-dialog.tsx b/frontend-web/features/meal-plans/components/distribute-meal-plan-dialog.tsx index 0ac5a623..9f88f4f1 100644 --- a/frontend-web/features/meal-plans/components/distribute-meal-plan-dialog.tsx +++ b/frontend-web/features/meal-plans/components/distribute-meal-plan-dialog.tsx @@ -6,11 +6,10 @@ import { Input } from "@/components/ui/input"; import { Select } from "@/components/ui/select"; import type { MealPlan } from "@/features/meal-plans/types"; -const AUDIENCE_OPTIONS = ["Free", "Pro", "User", "Admin", "All"]; +const AUDIENCE_OPTIONS = ["Free", "Pro", "Admin", "All"]; const AUDIENCE_LABELS: Record = { Free: "Miễn phí", Pro: "Pro", - User: "Người dùng", Admin: "Quản trị viên", All: "Tất cả", }; diff --git a/frontend-web/features/meal-plans/components/meal-plan-form-dialog.tsx b/frontend-web/features/meal-plans/components/meal-plan-form-dialog.tsx index 632bed8d..a8c9ab40 100644 --- a/frontend-web/features/meal-plans/components/meal-plan-form-dialog.tsx +++ b/frontend-web/features/meal-plans/components/meal-plan-form-dialog.tsx @@ -166,7 +166,7 @@ export function MealPlanFormDialog({ ))} updateItemRow(index, { plannedDate: e.target.value })} /> - updateItemRow(index, { targetCalories: e.target.value })} /> + updateItemRow(index, { targetCalories: e.target.value })} />
diff --git a/frontend-web/features/users/components/assign-role-dialog.tsx b/frontend-web/features/users/components/assign-role-dialog.tsx index 27a53e35..f3a11590 100644 --- a/frontend-web/features/users/components/assign-role-dialog.tsx +++ b/frontend-web/features/users/components/assign-role-dialog.tsx @@ -5,7 +5,7 @@ import { Button } from "@/components/ui/button"; import { Select } from "@/components/ui/select"; import type { UserAdmin } from "@/features/users/types"; -const ROLE_OPTIONS = ["Free", "Pro", "User", "Coach", "Admin"]; +const ROLE_OPTIONS = ["Free", "Pro", "Coach", "Admin"]; interface AssignRoleDialogProps { user: UserAdmin | null; @@ -20,7 +20,7 @@ export function AssignRoleDialog({ onClose, onConfirm, }: AssignRoleDialogProps) { - const [role, setRole] = useState(user?.role ?? "User"); + const [role, setRole] = useState(user?.role ?? "Free"); useEffect(() => { if (user) setRole(user.role); diff --git a/frontend-web/lib/utils/data-translator.ts b/frontend-web/lib/utils/data-translator.ts new file mode 100644 index 00000000..658fedbf --- /dev/null +++ b/frontend-web/lib/utils/data-translator.ts @@ -0,0 +1,43 @@ +const dictionary: Record = { + // Meal Types + breakfast: "Bữa sáng", + lunch: "Bữa trưa", + dinner: "Bữa tối", + snack: "Bữa phụ", + // Statuses + pending: "Chờ duyệt", + accepted: "Đã duyệt", + approved: "Đã duyệt", + rejected: "Từ chối", + completed: "Hoàn thành", + // Categories + meat: "Thịt", + vegetables: "Rau củ", + vegetable: "Rau củ", + fruits: "Trái cây", + fruit: "Trái cây", + dairy: "Sữa", + seafood: "Hải sản", + carb: "Tinh bột", + carbs: "Tinh bột", + fat: "Chất béo", + fats: "Chất béo", + protein: "Đạm", + proteins: "Đạm", + spice: "Gia vị", + spices: "Gia vị", + drink: "Đồ uống", + drinks: "Đồ uống", + salad: "Salad", + soup: "Canh/Súp", + dessert: "Tráng miệng", + main: "Món chính", + side: "Món phụ", + appetizer: "Khai vị", +}; + +export function translateData(data?: string | null): string { + if (!data) return ""; + const key = data.trim().toLowerCase(); + return dictionary[key] ?? data; +} diff --git a/frontend/lib/backend_messages.json b/frontend/lib/backend_messages.json new file mode 100644 index 00000000..ecf02349 --- /dev/null +++ b/frontend/lib/backend_messages.json @@ -0,0 +1,314 @@ +[ + "If the email exists, an OTP has been sent.", + "You do not have permission to edit this custom unit.", + "Consent updated and saved to AI Profile preferences.", + "Coach application not found.", + "Client does not exist.", + "Default serving weight must be greater than 0 grams.", + "Feedback updated successfully.", + "Invalid or expired OTP.", + "The Basic plan is always available and does not require renewal.", + "Prep reminder is disabled.", + "Height and weight are required.", + "Conversation not found.", + "Budget configuration deleted successfully.", + "Meal template must contain at least one item.", + "Original ingredient quantity must be greater than 0.", + "Review request has not been responded to by PT or has already been processed.", + "Student has not set up their health profile.", + "Logged out successfully.", + "This meal plan was sent to another coach.", + "Food log not found.", + "Please complete health profile before finishing onboarding.", + "Each meal plan item must have either FoodId, RecipeId, or CustomName.", + "Account type must be User or PT.", + "Internal server error.", + "Payment order cancelled successfully.", + "You already have a pending SePay payment. Complete or wait for it to expire before creating a new order.", + "Conversation deleted successfully.", + "User premium program registration not found.", + "Account not found.", + "Unsupported review decision.", + "Meal plan not found or access denied.", + "JwtSettings:SecretKey is not configured.", + "PriceVnd must be greater than or equal to 0.", + "The start date must be before or equal to the end date.", + "Meal template deleted successfully.", + "Quantity is required.", + "At least one professional certificate is required.", + "Meal plan deleted successfully.", + "Menu template applied to today's plan successfully.", + "Meal plan not found.", + "Deleted successfully.", + "Snooze duration must be between 1 and 1440 minutes.", + "Empty webhook body.", + "Meal plan item must have FoodId or RecipeId.", + "Food not found.", + "You are not connected with this client.", + "Your nutrition data is stable, no goal drift detected.", + "Subscription plan not found.", + "Full name must not exceed 255 characters.", + "This plan is free and cannot be renewed via SePay.", + "Name is required.", + "Coach profile not found.", + "Biography must contain at least 80 characters.", + "FoodId or RecipeId or custom nutritional values are required.", + "User not found.", + "Food is inactive and cannot be added to favorites.", + "Report not found.", + "No current goal drift alert.", + "Password changed successfully.", + "AI service is rate-limited. Please try again in a few minutes.", + "SePay webhook request expired.", + "Hip measurement must be between 30cm and 250cm.", + "ConnectionStrings__DefaultConnection environment variable is not configured.", + "NotificationIds list cannot be empty", + "Please enter your date of birth in your profile first to calculate targets.", + "You do not have a valid coaching connection with this student.", + "Saved as quick add successfully.", + "You do not have access to this student's feedback.", + "Recipe not found.", + "Program enrollment not found.", + "Notification not found.", + "This meal plan does not belong to the specified student.", + "You do not have any active Premium programs.", + "Requested food/dish not found.", + "AI service did not return a job ID.", + "This program has not been paid for or is already activated.", + "Recommendation not found.", + "A future meal cannot be marked as eaten.", + "Invalid or expired Google sign-in token.", + "Equivalent weight is required.", + "Subscription plan not found or inactive.", + "Equivalent weight must be between 0.1g and 10000g.", + "Target calories is required.", + "Years of experience is required.", + "Email is required.", + "Start date is required.", + "A reason is required for this decision.", + "Outgoing transfer ignored.", + "Added to favorites successfully.", + "Bio is required.", + "Data access granted to Coach.", + "Payment already marked as paid.", + "Goal drift alert not found.", + "Password must be at least 6 characters long.", + "Conversion unit is required.", + "Invalid email or password.", + "Reminder time must be in the future.", + "Your account has been locked or does not exist.", + "Image stream is missing or empty.", + "DurationDays must be greater than or equal to 0.", + "Configuration deleted successfully.", + "Google sign-in is not configured on the server.", + "FoodId is required when converting a local portion unit.", + "Avatar URL must be a valid URL.", + "Notification deleted successfully.", + "Only active subscriptions can be renewed via SePay.", + "Weight must be between 30kg and 300kg.", + "The Basic plan is enabled by default and does not require a subscription.", + "Substitute ingredient not found.", + "Cooking time limit must be between 5 minutes and 1,440 minutes.", + "City is required.", + "The application is already being reviewed.", + "The image analysis task timed out on the AI service.", + "At least one language is required.", + "SePay payment not found.", + "CV service is not properly configured.", + "You do not have permission to delete this custom unit.", + "Registration successful. Please check your email for the verification OTP.", + "Image file is required.", + "Ingredient not found.", + "Default serving weight is required.", + "Substitute ingredient quantity must be greater than 0.", + "Connection with this coach not found.", + "This report has already been reviewed or closed.", + "Missing X-SePay-Signature header.", + "OTP code must be at least 6 characters long.", + "At least one specialty is required.", + "Invalid payment status. Please refresh and try again.", + "SePay bank account is not configured. Set SePay:BankAccount:AccountNumber and SePay:BankAccount:BankName in appsettings (values from your SePay dashboard).", + "Meal plan item not found.", + "Phone number is required.", + "Substitution configuration not found.", + "Current password is incorrect.", + "Actual ingredient substitution recorded successfully.", + "Token removed successfully.", + "Active connection with this coach not found.", + "Feedback content is required.", + "Calories must be positive.", + "Reminder not found.", + "Reminder notification sent successfully.", + "You do not have an active Premium program to get report from.", + "This micro-learning card does not have an attached quiz question.", + "Invalid SePay webhook API key.", + "AI service rejected the API key. Please contact support.", + "The application is being reviewed and cannot be edited.", + "This token is already registered by another user.", + "Please set up a budget (Budget Request) before automatically generating a plan.", + "Campaign not found.", + "Recalibration data collected and target calories updated successfully.", + "Ingredient substitution in plan applied successfully.", + "Unit name is required.", + "Your issue report has been successfully recorded.", + "Micro-learning card not found.", + "Receiver bank account in webhook does not match configured SePay bank account.", + "Meal in meal plan not found.", + "SePay:WebhookSecret is not configured.", + "The original program has been deleted.", + "Duplicate transaction ignored.", + "Subscription program registration details not found.", + "Invalid action. Only 'read', 'save', 'unsave', 'dismiss' are accepted.", + "Weight must be between 20kg and 500kg.", + "Unsupported AI action type.", + "Review request does not exist or token is invalid.", + "New password is required.", + "SePay:WebhookApiKey is not configured.", + "You need to graduate before exporting the certificate.", + "Reminder deleted successfully.", + "Title is required.", + "Feedback recorded successfully.", + "Conversion quantity must be between 0.01 and 1000.", + "Invalid email format.", + "Budget request not found.", + "Food ID is required.", + "No weight data in the last 7 days. Please log your weight before recalibrating.", + "budget_vnd is required for budget optimization.", + "weekStart must be yyyy-MM-dd.", + "Duplicate transaction ignored (database constraint).", + "Unit name cannot exceed 150 characters.", + "New password must be at least 6 characters long.", + "Carbs must be positive.", + "Target body fat percentage must be between 1% and 80%.", + "Student or Coach does not exist.", + "Budget must be between 1,000 VND and 100,000,000 VND.", + "Transfer content does not contain a valid payment code.", + "Meal template not found.", + "Missing or invalid Authorization Apikey header.", + "Invalid year.", + "You need to check in for all weeks to graduate from the program.", + "DefaultConnection is not configured.", + "Cannot cancel a payment that has already been paid.", + "Token is required.", + "Token not found.", + "Personal program has already been processed.", + "OTP verified successfully.", + "Program does not exist.", + "Personal program does not exist.", + "Password reset successful.", + "OTP code is required.", + "Dinner time must be in HH:mm format.", + "Avatar URL is required.", + "Protein must be positive.", + "Payment order has expired.", + "food_id or recipe_id is required to schedule a meal.", + "Missing or invalid X-SePay-Timestamp header.", + "Alerts are derived from meal plan compare and tracking data.", + "quantity_g or quantity is required to log a meal.", + "Recommendation history deleted successfully.", + "Link has expired.", + "Unsupported AI recommendation mode.", + "Review request does not exist.", + "OTP code must be 6 characters long.", + "Invalid SePay webhook signature.", + "Assistant message not found.", + "FoodId or MealLogId is required.", + "The coach account is suspended.", + "Password is required.", + "Only SePay payments can be cancelled via this endpoint.", + "Your account has been locked.", + "Webhook processed successfully.", + "Date of birth is required to calculate your profile and target metrics.", + "This plan is free. Use POST /api/UserSubscription/subscribe instead.", + "Waist measurement must be between 30cm and 250cm.", + "Could not generate a unique SePay payment code. Please try again.", + "No active device tokens found.", + "Specialty field is required.", + "No active device tokens found for user.", + "Password recovery OTP has been sent to your email.", + "Chest measurement must be between 30cm and 250cm.", + "Account not found. Please sign out and sign in again.", + "Full name is required.", + "Premium program not found.", + "A profile photo is required.", + "AI Coach session deleted successfully.", + "You do not have any active Premium program.", + "QuantityG or Quantity must be greater than 0.", + "You have already completed this quiz question.", + "You do not have access to this student's reports.", + "Height must be between 50cm and 300cm.", + "Coach data access revoked.", + "Worker response is empty.", + "AI service returned an empty status response.", + "Your account has been successfully deactivated per Google Play privacy and data deletion policy.", + "Invalid SePay transaction id.", + "Allergy not found.", + "Requested custom unit not found.", + "Meal reminder is disabled.", + "Activity log not found.", + "Body fat percentage must be between 1% and 80%.", + "Access denied.", + "Successfully disconnected from Coach.", + "Start date (from) cannot be greater than end date (to).", + "Alert dismissed successfully.", + "Certificate name, issuer and image are required.", + "Removed from favorites successfully.", + "Provider order code is required.", + "Student has not granted you access to their health data.", + "You do not have permission to access this report.", + "Connection request not found.", + "Meal template has no items.", + "This review request has already been responded to or applied.", + "Alert acknowledged successfully.", + "At least one portfolio image is required.", + "Google account does not have an email address.", + "User does not exist.", + "Invalid operation.", + "Connection request sent to Coach.", + "Invalid or expired refresh token.", + "Target weight must be between 30kg and 300kg.", + "Account type is required.", + "Feedback saved successfully.", + "Weekly report not found.", + "Invalid month (must be between 1 and 12).", + "Weight is required.", + "This report was sent to another coach.", + "Food applied to today's meal plan successfully.", + "Breakfast time must be in HH:mm format.", + "MealType must be Breakfast, Lunch, Dinner, or Snack.", + "Fat must be positive.", + "Professional headline is required.", + "Weight log not found.", + "Paid subscriptions must use SePay. Subscribe: POST /api/payments/sepay/create-order. Renew: POST /api/payments/sepay/create-renew-order.", + "You have an active Premium program. Please complete your current program before starting a new one.", + "Confirm password does not match.", + "Review submitted. Student has been notified.", + "Invalid SePay webhook payload.", + "This request was not sent by your coach.", + "Meal log not found.", + "Lunch time must be in HH:mm format.", + "Email is already registered.", + "Each template item must reference Food/Recipe or contain an AI scan snapshot.", + "Email does not exist.", + "User subscription not found.", + "Date of birth is required.", + "Firebase is not initialized. Check Firebase credential configuration.", + "Meal plan items cannot be null.", + "Service fee is required.", + "Subscription plan name already exists.", + "This request is not a mid-week or final weekly report.", + "Invalid or missing user identity in token.", + "Amount must be greater than zero.", + "Payment order not found.", + "An identity verification image is required.", + "Job not found.", + "Please verify your OTP before logging in.", + "Message not found.", + "Original program details not found.", + "No budget configuration found.", + "Feedback type is required.", + "Payment order not found by transfer content.", + "User id is invalid.", + "Invalid Google sign-in token.", + "Original ingredient not found." +] \ No newline at end of file diff --git a/frontend/lib/core/i18n/api_message_translator.dart b/frontend/lib/core/i18n/api_message_translator.dart index 625f7525..da7c780f 100644 --- a/frontend/lib/core/i18n/api_message_translator.dart +++ b/frontend/lib/core/i18n/api_message_translator.dart @@ -4,6 +4,54 @@ import 'dart:convert'; class ApiMessageTranslator { ApiMessageTranslator._(); + static const _dataDictionary = { + // Meal Types + 'breakfast': 'Bữa sáng', + 'lunch': 'Bữa trưa', + 'dinner': 'Bữa tối', + 'snack': 'Ăn vặt', + + // Statuses + 'pending': 'Chờ duyệt', + 'accepted': 'Đã duyệt', + 'approved': 'Đã duyệt', + 'rejected': 'Từ chối', + 'completed': 'Hoàn thành', + 'active': 'Đang hoạt động', + 'inactive': 'Ngừng hoạt động', + + // Categories & Common Terms + 'meat': 'Thịt', + 'vegetable': 'Rau củ', + 'vegetables': 'Rau củ', + 'fruit': 'Trái cây', + 'fruits': 'Trái cây', + 'dairy': 'Sữa', + 'seafood': 'Hải sản', + 'carb': 'Tinh bột', + 'carbs': 'Tinh bột', + 'protein': 'Đạm', + 'fat': 'Chất béo', + 'weight loss': 'Giảm cân', + 'muscle gain': 'Tăng cơ', + 'maintenance': 'Giữ dáng', + 'sedentary': 'Ít vận động', + + // Others + 'casual': 'Thông thường', + 'office': 'Văn phòng', + 'coach': 'Huấn luyện viên', + 'gymer': 'Người tập gym', + 'trainer': 'Huấn luyện viên', + }; + + /// Dịch dữ liệu động (Data payload) từ backend như mealType, status, category... + static String translateData(String? data) { + if (data == null || data.trim().isEmpty) return ''; + final key = data.trim().toLowerCase(); + return _dataDictionary[key] ?? data; + } + static const _exact = { // Auth 'OTP verified successfully.': 'Xác thực OTP thành công.', @@ -146,11 +194,283 @@ class ApiMessageTranslator { // Recalibrate gym goals — needs recent weight data 'No weight data in the last 7 days. Please log your weight before recalibrating.': 'Vui lòng cập nhật cân nặng ít nhất 1 lần trong 7 ngày qua trước khi hiệu chỉnh mục tiêu.', + + + // --- Backend API Auto-Translations --- + 'If the email exists, an OTP has been sent.': 'Nếu email tồn tại, mã OTP đã được gửi đến bạn.', + 'You do not have permission to edit this custom unit.': 'Bạn không có quyền chỉnh sửa đơn vị tùy chỉnh này.', + 'Coach application not found.': 'Không tìm thấy đơn đăng ký Huấn luyện viên.', + 'Client does not exist.': 'Khách hàng không tồn tại.', + 'Default serving weight must be greater than 0 grams.': 'Khối lượng phục vụ mặc định phải lớn hơn 0 gam.', + 'Feedback updated successfully.': 'Cập nhật phản hồi thành công.', + 'The Basic plan is always available and does not require renewal.': 'Gói Basic luôn có sẵn và không yêu cầu gia hạn.', + 'Conversation not found.': 'Không tìm thấy cuộc trò chuyện.', + 'Budget configuration deleted successfully.': 'Đã xóa cấu hình ngân sách thành công.', + 'Meal template must contain at least one item.': 'Mẫu bữa ăn phải chứa ít nhất một mục.', + 'Original ingredient quantity must be greater than 0.': 'Số lượng nguyên liệu gốc phải lớn hơn 0.', + 'Student has not set up their health profile.': 'Học viên chưa thiết lập hồ sơ sức khỏe.', + 'This meal plan was sent to another coach.': 'Kế hoạch bữa ăn này đã được gửi cho một huấn luyện viên khác.', + 'Food log not found.': 'Không tìm thấy nhật ký món ăn.', + 'Each meal plan item must have either FoodId, RecipeId, or CustomName.': 'Mỗi mục kế hoạch bữa ăn phải có FoodId, RecipeId hoặc Tên tùy chỉnh.', + 'Account type must be User or PT.': 'Loại tài khoản phải là Người dùng hoặc PT.', + 'Internal server error.': 'Lỗi máy chủ nội bộ.', + 'Payment order cancelled successfully.': 'Đã hủy đơn hàng thanh toán thành công.', + 'You already have a pending SePay payment. Complete or wait for it to expire before creating a new order.': 'Bạn đang có một khoản thanh toán SePay chờ xử lý. Hoàn thành hoặc đợi hết hạn trước khi tạo đơn hàng mới.', + 'Conversation deleted successfully.': 'Đã xóa cuộc trò chuyện thành công.', + 'User premium program registration not found.': 'Không tìm thấy đăng ký chương trình Premium của người dùng.', + 'Account not found.': 'Không tìm thấy tài khoản.', + 'Unsupported review decision.': 'Quyết định đánh giá không được hỗ trợ.', + 'JwtSettings:SecretKey is not configured.': 'JwtSettings:SecretKey chưa được cấu hình.', + 'PriceVnd must be greater than or equal to 0.': 'Giá VNĐ phải lớn hơn hoặc bằng 0.', + 'The start date must be before or equal to the end date.': 'Ngày bắt đầu phải trước hoặc bằng ngày kết thúc.', + 'Meal template deleted successfully.': 'Đã xóa mẫu bữa ăn thành công.', + 'Quantity is required.': 'Số lượng là bắt buộc.', + 'At least one professional certificate is required.': 'Cần ít nhất một chứng chỉ chuyên môn.', + 'Meal plan deleted successfully.': 'Đã xóa kế hoạch bữa ăn thành công.', + 'Deleted successfully.': 'Đã xóa thành công.', + 'Snooze duration must be between 1 and 1440 minutes.': 'Thời gian báo lại phải từ 1 đến 1440 phút.', + 'Empty webhook body.': 'Nội dung webhook trống.', + 'Your nutrition data is stable, no goal drift detected.': 'Dữ liệu dinh dưỡng của bạn ổn định, không phát hiện sai lệch mục tiêu.', + 'Subscription plan not found.': 'Không tìm thấy gói đăng ký.', + 'Full name must not exceed 255 characters.': 'Họ và tên không được vượt quá 255 ký tự.', + 'This plan is free and cannot be renewed via SePay.': 'Gói này miễn phí và không thể gia hạn qua SePay.', + 'Name is required.': 'Tên là bắt buộc.', + 'Coach profile not found.': 'Không tìm thấy hồ sơ huấn luyện viên.', + 'Biography must contain at least 80 characters.': 'Tiểu sử phải chứa ít nhất 80 ký tự.', + 'FoodId or RecipeId or custom nutritional values are required.': 'Yêu cầu có FoodId, RecipeId hoặc giá trị dinh dưỡng tùy chỉnh.', + 'Food is inactive and cannot be added to favorites.': 'Món ăn không hoạt động và không thể thêm vào mục yêu thích.', + 'Report not found.': 'Không tìm thấy báo cáo.', + 'No current goal drift alert.': 'Không có cảnh báo sai lệch mục tiêu hiện tại.', + 'Password changed successfully.': 'Đổi mật khẩu thành công.', + 'SePay webhook request expired.': 'Yêu cầu webhook SePay đã hết hạn.', + 'Hip measurement must be between 30cm and 250cm.': 'Số đo vòng hông phải từ 30cm đến 250cm.', + 'ConnectionStrings__DefaultConnection environment variable is not configured.': 'Biến môi trường ConnectionStrings__DefaultConnection chưa được cấu hình.', + 'NotificationIds list cannot be empty': 'Danh sách NotificationIds không được để trống.', + 'Please enter your date of birth in your profile first to calculate targets.': 'Vui lòng nhập ngày sinh trong hồ sơ của bạn trước để tính toán mục tiêu.', + 'You do not have a valid coaching connection with this student.': 'Bạn không có kết nối huấn luyện hợp lệ với học viên này.', + "You do not have access to this student's feedback.": 'Bạn không có quyền truy cập vào phản hồi của học viên này.', + 'Program enrollment not found.': 'Không tìm thấy đăng ký chương trình.', + 'This meal plan does not belong to the specified student.': 'Kế hoạch bữa ăn này không thuộc về học viên được chỉ định.', + 'You do not have any active Premium programs.': 'Bạn không có chương trình Premium nào đang hoạt động.', + 'Requested food/dish not found.': 'Không tìm thấy món ăn/thực phẩm yêu cầu.', + 'AI service did not return a job ID.': 'Dịch vụ AI không trả về ID công việc.', + 'This program has not been paid for or is already activated.': 'Chương trình này chưa được thanh toán hoặc đã được kích hoạt.', + 'Recommendation not found.': 'Không tìm thấy gợi ý.', + 'Invalid or expired Google sign-in token.': 'Mã đăng nhập Google không hợp lệ hoặc đã hết hạn.', + 'Equivalent weight is required.': 'Trọng lượng tương đương là bắt buộc.', + 'Equivalent weight must be between 0.1g and 10000g.': 'Trọng lượng tương đương phải từ 0.1g đến 10000g.', + 'Target calories is required.': 'Lượng calo mục tiêu là bắt buộc.', + 'Years of experience is required.': 'Số năm kinh nghiệm là bắt buộc.', + 'Start date is required.': 'Ngày bắt đầu là bắt buộc.', + 'A reason is required for this decision.': 'Cần có lý do cho quyết định này.', + 'Outgoing transfer ignored.': 'Giao dịch chuyển đi bị bỏ qua.', + 'Added to favorites successfully.': 'Đã thêm vào mục yêu thích thành công.', + 'Bio is required.': 'Tiểu sử là bắt buộc.', + 'Data access granted to Coach.': 'Đã cấp quyền truy cập dữ liệu cho Huấn luyện viên.', + 'Payment already marked as paid.': 'Thanh toán đã được đánh dấu là đã trả.', + 'Goal drift alert not found.': 'Không tìm thấy cảnh báo sai lệch mục tiêu.', + 'Password must be at least 6 characters long.': 'Mật khẩu phải dài ít nhất 6 ký tự.', + 'Conversion unit is required.': 'Đơn vị chuyển đổi là bắt buộc.', + 'Invalid email or password.': 'Email hoặc mật khẩu không hợp lệ.', + 'Reminder time must be in the future.': 'Thời gian nhắc nhở phải ở trong tương lai.', + 'Your account has been locked or does not exist.': 'Tài khoản của bạn đã bị khóa hoặc không tồn tại.', + 'Image stream is missing or empty.': 'Luồng hình ảnh bị thiếu hoặc trống.', + 'DurationDays must be greater than or equal to 0.': 'DurationDays phải lớn hơn hoặc bằng 0.', + 'Google sign-in is not configured on the server.': 'Đăng nhập Google chưa được cấu hình trên máy chủ.', + 'FoodId is required when converting a local portion unit.': 'FoodId là bắt buộc khi chuyển đổi đơn vị khẩu phần cục bộ.', + 'Avatar URL must be a valid URL.': 'URL hình đại diện phải là một URL hợp lệ.', + 'Notification deleted successfully.': 'Đã xóa thông báo thành công.', + 'Only active subscriptions can be renewed via SePay.': 'Chỉ các gói đăng ký đang hoạt động mới có thể được gia hạn qua SePay.', + 'Weight must be between 30kg and 300kg.': 'Cân nặng phải từ 30kg đến 300kg.', + 'The Basic plan is enabled by default and does not require a subscription.': 'Gói Basic được kích hoạt mặc định và không yêu cầu đăng ký.', + 'Substitute ingredient not found.': 'Không tìm thấy nguyên liệu thay thế.', + 'Cooking time limit must be between 5 minutes and 1,440 minutes.': 'Giới hạn thời gian nấu phải từ 5 phút đến 1.440 phút.', + 'City is required.': 'Thành phố là bắt buộc.', + 'The application is already being reviewed.': 'Đơn đăng ký đang được xem xét.', + 'The image analysis task timed out on the AI service.': 'Nhiệm vụ phân tích hình ảnh đã quá thời gian trên dịch vụ AI.', + 'At least one language is required.': 'Cần ít nhất một ngôn ngữ.', + 'SePay payment not found.': 'Không tìm thấy khoản thanh toán SePay.', + 'CV service is not properly configured.': 'Dịch vụ CV chưa được cấu hình đúng.', + 'You do not have permission to delete this custom unit.': 'Bạn không có quyền xóa đơn vị tùy chỉnh này.', + 'Registration successful. Please check your email for the verification OTP.': 'Đăng ký thành công. Vui lòng kiểm tra email của bạn để lấy mã xác minh OTP.', + 'Image file is required.': 'Tệp hình ảnh là bắt buộc.', + 'Default serving weight is required.': 'Khối lượng phục vụ mặc định là bắt buộc.', + 'Substitute ingredient quantity must be greater than 0.': 'Số lượng nguyên liệu thay thế phải lớn hơn 0.', + 'Connection with this coach not found.': 'Không tìm thấy kết nối với huấn luyện viên này.', + 'This report has already been reviewed or closed.': 'Báo cáo này đã được đánh giá hoặc đóng lại.', + 'Missing X-SePay-Signature header.': 'Thiếu tiêu đề X-SePay-Signature.', + 'OTP code must be at least 6 characters long.': 'Mã OTP phải dài ít nhất 6 ký tự.', + 'At least one specialty is required.': 'Cần ít nhất một chuyên môn.', + 'Invalid payment status. Please refresh and try again.': 'Trạng thái thanh toán không hợp lệ. Vui lòng làm mới và thử lại.', + 'SePay bank account is not configured. Set SePay:BankAccount:AccountNumber and SePay:BankAccount:BankName in appsettings (values from your SePay dashboard).': 'Tài khoản ngân hàng SePay chưa được cấu hình.', + 'Phone number is required.': 'Số điện thoại là bắt buộc.', + 'Substitution configuration not found.': 'Không tìm thấy cấu hình thay thế.', + 'Token removed successfully.': 'Đã xóa token thành công.', + 'Active connection with this coach not found.': 'Không tìm thấy kết nối hoạt động với huấn luyện viên này.', + 'Feedback content is required.': 'Nội dung phản hồi là bắt buộc.', + 'Calories must be positive.': 'Calo phải là số dương.', + 'Reminder not found.': 'Không tìm thấy lời nhắc.', + 'Reminder notification sent successfully.': 'Đã gửi thông báo nhắc nhở thành công.', + 'You do not have an active Premium program to get report from.': 'Bạn không có chương trình Premium nào đang hoạt động để lấy báo cáo.', + 'This micro-learning card does not have an attached quiz question.': 'Thẻ học tập vi mô này không có câu hỏi trắc nghiệm đính kèm.', + 'Invalid SePay webhook API key.': 'Khóa API webhook SePay không hợp lệ.', + 'AI service rejected the API key. Please contact support.': 'Dịch vụ AI đã từ chối khóa API. Vui lòng liên hệ hỗ trợ.', + 'The application is being reviewed and cannot be edited.': 'Đơn đăng ký đang được xem xét và không thể chỉnh sửa.', + 'This token is already registered by another user.': 'Token này đã được đăng ký bởi một người dùng khác.', + 'Campaign not found.': 'Không tìm thấy chiến dịch.', + 'Unit name is required.': 'Tên đơn vị là bắt buộc.', + 'Your issue report has been successfully recorded.': 'Báo cáo sự cố của bạn đã được ghi nhận thành công.', + 'Micro-learning card not found.': 'Không tìm thấy thẻ học tập vi mô.', + 'Receiver bank account in webhook does not match configured SePay bank account.': 'Tài khoản ngân hàng người nhận trong webhook không khớp với tài khoản SePay đã cấu hình.', + 'Meal in meal plan not found.': 'Không tìm thấy bữa ăn trong kế hoạch.', + 'SePay:WebhookSecret is not configured.': 'SePay:WebhookSecret chưa được cấu hình.', + 'The original program has been deleted.': 'Chương trình gốc đã bị xóa.', + 'Duplicate transaction ignored.': 'Giao dịch trùng lặp bị bỏ qua.', + 'Subscription program registration details not found.': 'Không tìm thấy chi tiết đăng ký chương trình.', + "Invalid action. Only 'read', 'save', 'unsave', 'dismiss' are accepted.": "Hành động không hợp lệ. Chỉ chấp nhận 'read', 'save', 'unsave', 'dismiss'.", + 'Weight must be between 20kg and 500kg.': 'Cân nặng phải từ 20kg đến 500kg.', + 'Unsupported AI action type.': 'Loại hành động AI không được hỗ trợ.', + 'New password is required.': 'Mật khẩu mới là bắt buộc.', + 'SePay:WebhookApiKey is not configured.': 'SePay:WebhookApiKey chưa được cấu hình.', + 'You need to graduate before exporting the certificate.': 'Bạn cần hoàn thành chương trình trước khi xuất chứng chỉ.', + 'Reminder deleted successfully.': 'Đã xóa lời nhắc thành công.', + 'Title is required.': 'Tiêu đề là bắt buộc.', + 'Feedback recorded successfully.': 'Phản hồi đã được ghi nhận thành công.', + 'Conversion quantity must be between 0.01 and 1000.': 'Số lượng chuyển đổi phải từ 0.01 đến 1000.', + 'Budget request not found.': 'Không tìm thấy yêu cầu ngân sách.', + 'Food ID is required.': 'Food ID là bắt buộc.', + 'budget_vnd is required for budget optimization.': 'budget_vnd là bắt buộc để tối ưu hóa ngân sách.', + 'weekStart must be yyyy-MM-dd.': 'weekStart phải có định dạng yyyy-MM-dd.', + 'Duplicate transaction ignored (database constraint).': 'Giao dịch trùng lặp bị bỏ qua (ràng buộc cơ sở dữ liệu).', + 'Unit name cannot exceed 150 characters.': 'Tên đơn vị không được vượt quá 150 ký tự.', + 'New password must be at least 6 characters long.': 'Mật khẩu mới phải dài ít nhất 6 ký tự.', + 'Carbs must be positive.': 'Carbs phải là số dương.', + 'Target body fat percentage must be between 1% and 80%.': 'Tỷ lệ mỡ cơ thể mục tiêu phải từ 1% đến 80%.', + 'Student or Coach does not exist.': 'Học viên hoặc Huấn luyện viên không tồn tại.', + 'Budget must be between 1,000 VND and 100,000,000 VND.': 'Ngân sách phải từ 1.000 VNĐ đến 100.000.000 VNĐ.', + 'Transfer content does not contain a valid payment code.': 'Nội dung chuyển khoản không chứa mã thanh toán hợp lệ.', + 'Meal template not found.': 'Không tìm thấy mẫu bữa ăn.', + 'Missing or invalid Authorization Apikey header.': 'Thiếu tiêu đề Authorization Apikey hoặc không hợp lệ.', + 'Invalid year.': 'Năm không hợp lệ.', + 'You need to check in for all weeks to graduate from the program.': 'Bạn cần check-in cho tất cả các tuần để hoàn thành chương trình.', + 'DefaultConnection is not configured.': 'DefaultConnection chưa được cấu hình.', + 'Cannot cancel a payment that has already been paid.': 'Không thể hủy khoản thanh toán đã được trả.', + 'Token is required.': 'Token là bắt buộc.', + 'Token not found.': 'Không tìm thấy token.', + 'Program does not exist.': 'Chương trình không tồn tại.', + 'Password reset successful.': 'Đặt lại mật khẩu thành công.', + 'OTP code is required.': 'Mã OTP là bắt buộc.', + 'Dinner time must be in HH:mm format.': 'Thời gian bữa tối phải ở định dạng HH:mm.', + 'Avatar URL is required.': 'URL hình đại diện là bắt buộc.', + 'Protein must be positive.': 'Protein phải là số dương.', + 'Payment order has expired.': 'Đơn hàng thanh toán đã hết hạn.', + 'food_id or recipe_id is required to schedule a meal.': 'Cần có food_id hoặc recipe_id để lên lịch bữa ăn.', + 'Missing or invalid X-SePay-Timestamp header.': 'Thiếu tiêu đề X-SePay-Timestamp hoặc không hợp lệ.', + 'Alerts are derived from meal plan compare and tracking data.': 'Cảnh báo được tạo từ so sánh kế hoạch bữa ăn và dữ liệu theo dõi.', + 'quantity_g or quantity is required to log a meal.': 'Bắt buộc có quantity_g hoặc quantity để ghi lại bữa ăn.', + 'Recommendation history deleted successfully.': 'Đã xóa lịch sử gợi ý thành công.', + 'Unsupported AI recommendation mode.': 'Chế độ gợi ý AI không được hỗ trợ.', + 'OTP code must be 6 characters long.': 'Mã OTP phải dài đúng 6 ký tự.', + 'Invalid SePay webhook signature.': 'Chữ ký webhook SePay không hợp lệ.', + 'Assistant message not found.': 'Không tìm thấy tin nhắn của trợ lý.', + 'The coach account is suspended.': 'Tài khoản huấn luyện viên đã bị đình chỉ.', + 'Only SePay payments can be cancelled via this endpoint.': 'Chỉ các khoản thanh toán SePay mới có thể bị hủy qua endpoint này.', + 'Your account has been locked.': 'Tài khoản của bạn đã bị khóa.', + 'Webhook processed successfully.': 'Đã xử lý webhook thành công.', + 'Date of birth is required to calculate your profile and target metrics.': 'Cần ngày sinh để tính toán hồ sơ và số đo mục tiêu của bạn.', + 'This plan is free. Use POST /api/UserSubscription/subscribe instead.': 'Gói này miễn phí. Vui lòng sử dụng đăng ký gói miễn phí.', + 'Waist measurement must be between 30cm and 250cm.': 'Số đo vòng eo phải từ 30cm đến 250cm.', + 'Could not generate a unique SePay payment code. Please try again.': 'Không thể tạo mã thanh toán SePay duy nhất. Vui lòng thử lại.', + 'No active device tokens found.': 'Không tìm thấy token thiết bị nào đang hoạt động.', + 'Specialty field is required.': 'Trường chuyên môn là bắt buộc.', + 'No active device tokens found for user.': 'Không tìm thấy token thiết bị hoạt động cho người dùng.', + 'Password recovery OTP has been sent to your email.': 'Mã OTP khôi phục mật khẩu đã được gửi đến email của bạn.', + 'Chest measurement must be between 30cm and 250cm.': 'Số đo vòng ngực phải từ 30cm đến 250cm.', + 'Full name is required.': 'Họ và tên là bắt buộc.', + 'Premium program not found.': 'Không tìm thấy chương trình Premium.', + 'A profile photo is required.': 'Cần có ảnh hồ sơ.', + 'AI Coach session deleted successfully.': 'Đã xóa phiên AI Coach thành công.', + 'You do not have any active Premium program.': 'Bạn không có chương trình Premium nào đang hoạt động.', + 'QuantityG or Quantity must be greater than 0.': 'Số lượng phải lớn hơn 0.', + 'You have already completed this quiz question.': 'Bạn đã hoàn thành câu hỏi trắc nghiệm này.', + "You do not have access to this student's reports.": 'Bạn không có quyền truy cập vào các báo cáo của học viên này.', + 'Height must be between 50cm and 300cm.': 'Chiều cao phải từ 50cm đến 300cm.', + 'Coach data access revoked.': 'Quyền truy cập dữ liệu của huấn luyện viên đã bị thu hồi.', + 'Worker response is empty.': 'Phản hồi từ Worker trống.', + 'AI service returned an empty status response.': 'Dịch vụ AI trả về trạng thái trống.', + 'Your account has been successfully deactivated per Google Play privacy and data deletion policy.': 'Tài khoản của bạn đã bị vô hiệu hóa thành công theo chính sách bảo mật của Google Play.', + 'Invalid SePay transaction id.': 'ID giao dịch SePay không hợp lệ.', + 'Allergy not found.': 'Không tìm thấy dữ liệu dị ứng.', + 'Requested custom unit not found.': 'Không tìm thấy đơn vị tùy chỉnh yêu cầu.', + 'Activity log not found.': 'Không tìm thấy nhật ký hoạt động.', + 'Body fat percentage must be between 1% and 80%.': 'Tỷ lệ mỡ cơ thể phải từ 1% đến 80%.', + 'Successfully disconnected from Coach.': 'Đã ngắt kết nối thành công với Huấn luyện viên.', + 'Start date (from) cannot be greater than end date (to).': 'Ngày bắt đầu không thể lớn hơn ngày kết thúc.', + 'Alert dismissed successfully.': 'Đã loại bỏ cảnh báo thành công.', + 'Certificate name, issuer and image are required.': 'Tên chứng chỉ, tổ chức cấp và hình ảnh là bắt buộc.', + 'Removed from favorites successfully.': 'Đã xóa khỏi mục yêu thích thành công.', + 'Provider order code is required.': 'Mã đơn hàng của nhà cung cấp là bắt buộc.', + 'Student has not granted you access to their health data.': 'Học viên chưa cấp cho bạn quyền truy cập vào dữ liệu sức khỏe của họ.', + 'You do not have permission to access this report.': 'Bạn không có quyền truy cập vào báo cáo này.', + 'Connection request not found.': 'Không tìm thấy yêu cầu kết nối.', + 'Meal template has no items.': 'Mẫu bữa ăn không có mục nào.', + 'Alert acknowledged successfully.': 'Đã xác nhận cảnh báo thành công.', + 'At least one portfolio image is required.': 'Cần ít nhất một hình ảnh hồ sơ năng lực.', + 'Google account does not have an email address.': 'Tài khoản Google không có địa chỉ email.', + 'User does not exist.': 'Người dùng không tồn tại.', + 'Invalid operation.': 'Thao tác không hợp lệ.', + 'Connection request sent to Coach.': 'Đã gửi yêu cầu kết nối đến Huấn luyện viên.', + 'Invalid or expired refresh token.': 'Token làm mới không hợp lệ hoặc đã hết hạn.', + 'Target weight must be between 30kg and 300kg.': 'Cân nặng mục tiêu phải từ 30kg đến 300kg.', + 'Account type is required.': 'Loại tài khoản là bắt buộc.', + 'Weekly report not found.': 'Không tìm thấy báo cáo hàng tuần.', + 'Invalid month (must be between 1 and 12).': 'Tháng không hợp lệ (phải từ 1 đến 12).', + 'Weight is required.': 'Cân nặng là bắt buộc.', + 'This report was sent to another coach.': 'Báo cáo này đã được gửi cho một huấn luyện viên khác.', + "Food applied to today's meal plan successfully.": 'Đã áp dụng món ăn vào kế hoạch hôm nay thành công.', + 'Breakfast time must be in HH:mm format.': 'Thời gian bữa sáng phải ở định dạng HH:mm.', + 'MealType must be Breakfast, Lunch, Dinner, or Snack.': 'Loại bữa ăn phải là Sáng, Trưa, Tối hoặc Ăn vặt.', + 'Fat must be positive.': 'Chất béo (Fat) phải là số dương.', + 'Professional headline is required.': 'Tiêu đề hồ sơ chuyên gia là bắt buộc.', + 'Paid subscriptions must use SePay. Subscribe: POST /api/payments/sepay/create-order. Renew: POST /api/payments/sepay/create-renew-order.': 'Đăng ký trả phí phải sử dụng SePay.', + 'You have an active Premium program. Please complete your current program before starting a new one.': 'Bạn có một chương trình Premium đang hoạt động. Vui lòng hoàn thành chương trình hiện tại trước khi bắt đầu chương trình mới.', + 'Review submitted. Student has been notified.': 'Đã gửi đánh giá. Học viên đã được thông báo.', + 'Invalid SePay webhook payload.': 'Dữ liệu webhook SePay không hợp lệ.', + 'Lunch time must be in HH:mm format.': 'Thời gian bữa trưa phải ở định dạng HH:mm.', + 'Email is already registered.': 'Email này đã được đăng ký.', + 'Each template item must reference Food/Recipe or contain an AI scan snapshot.': 'Mỗi mục mẫu phải liên kết đến Món ăn/Công thức hoặc chứa ảnh AI Scan.', + 'Email does not exist.': 'Email không tồn tại.', + 'Date of birth is required.': 'Ngày sinh là bắt buộc.', + 'Firebase is not initialized. Check Firebase credential configuration.': 'Firebase chưa được khởi tạo. Vui lòng kiểm tra cấu hình.', + 'Service fee is required.': 'Phí dịch vụ là bắt buộc.', + 'Subscription plan name already exists.': 'Tên gói đăng ký đã tồn tại.', + 'This request is not a mid-week or final weekly report.': 'Đây không phải là báo cáo giữa tuần hoặc cuối tuần.', + 'Invalid or missing user identity in token.': 'Danh tính người dùng trong token bị thiếu hoặc không hợp lệ.', + 'Amount must be greater than zero.': 'Số tiền phải lớn hơn 0.', + 'Payment order not found.': 'Không tìm thấy đơn hàng thanh toán.', + 'An identity verification image is required.': 'Cần có hình ảnh xác minh danh tính.', + 'Job not found.': 'Không tìm thấy công việc.', + 'Please verify your OTP before logging in.': 'Vui lòng xác minh mã OTP của bạn trước khi đăng nhập.', + 'Message not found.': 'Không tìm thấy tin nhắn.', + 'Original program details not found.': 'Không tìm thấy chi tiết chương trình gốc.', + 'No budget configuration found.': 'Không tìm thấy cấu hình ngân sách.', + 'Feedback type is required.': 'Loại phản hồi là bắt buộc.', + 'Payment order not found by transfer content.': 'Không tìm thấy đơn hàng thanh toán theo nội dung chuyển khoản.', + 'User id is invalid.': 'ID người dùng không hợp lệ.', + 'Invalid Google sign-in token.': 'Token đăng nhập Google không hợp lệ.', + 'Original ingredient not found.': 'Không tìm thấy nguyên liệu gốc.', + 'Action requires user confirmation.': 'Thao tác yêu cầu sự xác nhận của người dùng.', + 'This action type is reserved for the next implementation phase.': 'Loại thao tác này được dành riêng cho giai đoạn tiếp theo.', + 'Cannot create feedback event': 'Không thể tạo sự kiện phản hồi', + 'input_text and expected_output are required': 'input_text và expected_output là bắt buộc', + 'Cannot create training sample': 'Không thể tạo mẫu dữ liệu huấn luyện', + 'Sample not found': 'Không tìm thấy mẫu dữ liệu', }; /// Stable backend error codes. Use these instead of relying on the /// (translatable) message string when the caller needs to branch on the /// specific failure reason. + static const _errorCodes = { 'RECALIBRATE_NO_WEIGHT_DATA': 'Vui lòng cập nhật cân nặng ít nhất 1 lần trong 7 ngày qua trước khi hiệu chỉnh mục tiêu.', @@ -468,3 +788,8 @@ class ApiMessageTranslator { ).hasMatch(text); } } + +/// Tiện ích mở rộng giúp dễ dàng dịch data payload trên UI +extension DataTranslationExtension on String { + String get translatedData => ApiMessageTranslator.translateData(this); +} diff --git a/frontend/lib/core/widgets/calorie_adjustment_picker.dart b/frontend/lib/core/widgets/calorie_adjustment_picker.dart new file mode 100644 index 00000000..865ffd6c --- /dev/null +++ b/frontend/lib/core/widgets/calorie_adjustment_picker.dart @@ -0,0 +1,188 @@ +import 'package:flutter/material.dart'; + +import '../constants/app_colors.dart'; + +enum CalorieAdjustmentMode { below, balanced, above } + +@visibleForTesting +int calorieAdjustmentTotal({ + required int targetCalories, + required CalorieAdjustmentMode mode, + required int percentage, +}) { + final safePercentage = percentage.clamp(0, 50); + return switch (mode) { + CalorieAdjustmentMode.below => + (targetCalories * (100 - safePercentage) / 100).round(), + CalorieAdjustmentMode.balanced => targetCalories, + CalorieAdjustmentMode.above => + (targetCalories * (100 + safePercentage) / 100).round(), + }; +} + +Future showCalorieAdjustmentPicker({ + required BuildContext context, + required int targetCalories, +}) { + var mode = CalorieAdjustmentMode.balanced; + var percentage = 10; + + return showModalBottomSheet( + context: context, + isScrollControlled: true, + showDragHandle: true, + builder: (sheetContext) { + return StatefulBuilder( + builder: (context, setSheetState) { + final desiredCalories = calorieAdjustmentTotal( + targetCalories: targetCalories, + mode: mode, + percentage: percentage, + ); + final comparisonLabel = switch (mode) { + CalorieAdjustmentMode.below => 'Thấp hơn mục tiêu', + CalorieAdjustmentMode.balanced => 'Cân bằng đúng mục tiêu', + CalorieAdjustmentMode.above => 'Cao hơn mục tiêu', + }; + + return SafeArea( + child: Padding( + padding: EdgeInsets.fromLTRB( + 20, + 4, + 20, + 16 + MediaQuery.viewInsetsOf(sheetContext).bottom, + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const Text( + 'Chọn mức kcal mong muốn', + style: TextStyle(fontSize: 18, fontWeight: FontWeight.w800), + ), + const SizedBox(height: 6), + Text( + 'Mốc dinh dưỡng vẫn giữ ở $targetCalories kcal. ' + 'Chỉ khẩu phần các món được thay đổi.', + style: const TextStyle( + color: Color(0xFF6B7280), + height: 1.35, + ), + ), + const SizedBox(height: 16), + SegmentedButton( + segments: const [ + ButtonSegment( + value: CalorieAdjustmentMode.below, + icon: Icon(Icons.south_rounded), + label: Text('Thấp hơn'), + ), + ButtonSegment( + value: CalorieAdjustmentMode.balanced, + icon: Icon(Icons.balance_rounded), + label: Text('Cân bằng'), + ), + ButtonSegment( + value: CalorieAdjustmentMode.above, + icon: Icon(Icons.north_rounded), + label: Text('Cao hơn'), + ), + ], + selected: {mode}, + onSelectionChanged: (selection) { + setSheetState(() => mode = selection.first); + }, + ), + if (mode != CalorieAdjustmentMode.balanced) ...[ + const SizedBox(height: 18), + Row( + children: [ + Text( + 'Mức chênh lệch', + style: Theme.of(context).textTheme.titleSmall + ?.copyWith(fontWeight: FontWeight.w700), + ), + const Spacer(), + Text( + '$percentage%', + style: const TextStyle( + color: AppColors.primary, + fontWeight: FontWeight.w800, + ), + ), + ], + ), + Slider( + value: percentage.toDouble(), + min: 5, + max: 20, + divisions: 15, + label: '$percentage%', + onChanged: (value) { + setSheetState(() => percentage = value.round()); + }, + ), + ], + const SizedBox(height: 12), + Container( + padding: const EdgeInsets.all(14), + decoration: BoxDecoration( + color: const Color(0xFFECFDF5), + borderRadius: BorderRadius.circular(14), + border: Border.all(color: const Color(0xFFA7F3D0)), + ), + child: Row( + children: [ + const Icon( + Icons.restaurant_menu_rounded, + color: AppColors.primary, + ), + const SizedBox(width: 10), + Expanded( + child: Text( + comparisonLabel, + style: const TextStyle(fontWeight: FontWeight.w700), + ), + ), + Text( + '$desiredCalories kcal', + style: const TextStyle( + color: AppColors.primary, + fontSize: 17, + fontWeight: FontWeight.w900, + ), + ), + ], + ), + ), + const SizedBox(height: 16), + Row( + children: [ + Expanded( + child: OutlinedButton( + onPressed: () => Navigator.pop(sheetContext), + child: const Text('Hủy'), + ), + ), + const SizedBox(width: 12), + Expanded( + flex: 2, + child: FilledButton.icon( + onPressed: () => + Navigator.pop(sheetContext, desiredCalories), + icon: const Icon(Icons.auto_fix_high_rounded), + label: Text('Áp dụng $desiredCalories kcal'), + ), + ), + ], + ), + ], + ), + ), + ); + }, + ); + }, + ); +} diff --git a/frontend/lib/core/widgets/daily_calorie_balance_card.dart b/frontend/lib/core/widgets/daily_calorie_balance_card.dart index ff912d01..8913c32e 100644 --- a/frontend/lib/core/widgets/daily_calorie_balance_card.dart +++ b/frontend/lib/core/widgets/daily_calorie_balance_card.dart @@ -12,6 +12,8 @@ class DailyCalorieBalanceCard extends StatelessWidget { this.dateLabel, this.canAutoBalance = true, this.lockedLabel = 'Đã khóa', + this.actionLabel = 'Tự chỉnh', + this.allowAdjustmentWhenExact = false, this.width, }); @@ -22,6 +24,8 @@ class DailyCalorieBalanceCard extends StatelessWidget { final String? dateLabel; final bool canAutoBalance; final String lockedLabel; + final String actionLabel; + final bool allowAdjustmentWhenExact; final double? width; @override @@ -53,7 +57,7 @@ class DailyCalorieBalanceCard extends StatelessWidget { : (totalCalories / targetCalories).clamp(0.0, 1.0); final enabled = canAutoBalance && - !isExact && + (allowAdjustmentWhenExact || !isExact) && totalCalories > 0 && targetCalories > 0 && onAutoBalance != null; @@ -159,7 +163,7 @@ class DailyCalorieBalanceCard extends StatelessWidget { : Icons.lock_outline_rounded, size: 15, ), - label: Text(canAutoBalance ? 'Tự chỉnh' : lockedLabel), + label: Text(canAutoBalance ? actionLabel : lockedLabel), style: FilledButton.styleFrom( backgroundColor: AppColors.primary, padding: const EdgeInsets.symmetric(horizontal: 10), diff --git a/frontend/lib/features/adaptive_reminders/repositories/reminder_repository.dart b/frontend/lib/features/adaptive_reminders/repositories/reminder_repository.dart index 13870fbb..8470e507 100644 --- a/frontend/lib/features/adaptive_reminders/repositories/reminder_repository.dart +++ b/frontend/lib/features/adaptive_reminders/repositories/reminder_repository.dart @@ -44,6 +44,7 @@ class ReminderRepository { required String title, required String body, required DateTime scheduledAt, + String type = 'CUSTOM_REMINDER', int? repeatIntervalMinutes, }) async => ScheduledReminder.fromJson( await _object( @@ -51,7 +52,7 @@ class ReminderRepository { 'title': title, 'body': body, 'scheduledAt': scheduledAt.toUtc().toIso8601String(), - 'type': 'CUSTOM_REMINDER', + 'type': type, 'repeatIntervalMinutes': ?repeatIntervalMinutes, }), ), @@ -63,6 +64,7 @@ class ReminderRepository { String? body, DateTime? scheduledAt, bool? isEnabled, + int? repeatIntervalMinutes, }) async => ScheduledReminder.fromJson( await _object( _api.patchJson(ApiEndpoints.scheduledReminderById(id), { @@ -70,6 +72,7 @@ class ReminderRepository { 'body': ?body, 'scheduledAt': ?scheduledAt?.toUtc().toIso8601String(), 'isEnabled': ?isEnabled, + 'repeatIntervalMinutes': ?repeatIntervalMinutes, }), ), ); diff --git a/frontend/lib/features/adaptive_reminders/views/adaptive_reminder_widgets_part.dart b/frontend/lib/features/adaptive_reminders/views/adaptive_reminder_widgets_part.dart index bf694c34..b74858d4 100644 --- a/frontend/lib/features/adaptive_reminders/views/adaptive_reminder_widgets_part.dart +++ b/frontend/lib/features/adaptive_reminders/views/adaptive_reminder_widgets_part.dart @@ -52,7 +52,7 @@ class _ReminderTile extends StatelessWidget { ), title: Text(reminder.title), subtitle: Text( - '${_dateTimeLabel(reminder.scheduledAt)}${reminder.repeatIntervalMinutes == null ? '' : ' · Lặp mỗi ${reminder.repeatIntervalMinutes} phút'}${reminder.body.isEmpty ? '' : '\n${reminder.body}'}', + '${_dateTimeLabel(reminder.scheduledAt)}${_repeatLabel(reminder.repeatIntervalMinutes)}${reminder.body.isEmpty ? '' : '\n${reminder.body}'}', ), isThreeLine: reminder.body.isNotEmpty, trailing: Row( @@ -333,3 +333,10 @@ String _dateLabel(DateTime value) => String _dateTimeLabel(DateTime? value) => value == null ? 'Chưa có thời gian' : '${_dateLabel(value)} · ${_timeLabel(value)}'; + +String _repeatLabel(int? minutes) { + if (minutes == null) return ''; + if (minutes == 1440) return ' · Lặp hằng ngày'; + if (minutes % 60 == 0) return ' · Lặp mỗi ${minutes ~/ 60} giờ'; + return ' · Lặp mỗi $minutes phút'; +} diff --git a/frontend/lib/features/adaptive_reminders/views/adaptive_reminders_screen.dart b/frontend/lib/features/adaptive_reminders/views/adaptive_reminders_screen.dart index d325ca2a..b9413c2b 100644 --- a/frontend/lib/features/adaptive_reminders/views/adaptive_reminders_screen.dart +++ b/frontend/lib/features/adaptive_reminders/views/adaptive_reminders_screen.dart @@ -17,6 +17,8 @@ class AdaptiveRemindersScreen extends StatefulWidget { } class _AdaptiveRemindersScreenState extends State { + static const _dailyRepeatMinutes = 24 * 60; + final _repository = ReminderRepository(); ReminderProfile? _profile; List _reminders = const []; @@ -82,8 +84,14 @@ class _AdaptiveRemindersScreenState extends State { setState(() => _savingProfile = true); try { final saved = await _repository.updateProfile(profile); - if (mounted) setState(() => _profile = saved); - _message('Đã lưu giờ ăn ưu tiên.'); + if (!mounted) return; + setState(() => _profile = saved); + + await _syncMealReminders(saved); + final reminders = await _repository.getScheduled(); + if (!mounted) return; + setState(() => _reminders = reminders); + _message('Đã lưu giờ ăn và cập nhật 3 lịch nhắc hằng ngày.'); } catch (error) { if (mounted) _message(error.toString(), error: true); } finally { @@ -91,6 +99,69 @@ class _AdaptiveRemindersScreenState extends State { } } + Future _syncMealReminders(ReminderProfile profile) async { + final current = await _repository.getScheduled(); + final definitions = <({ + String type, + String title, + String body, + String time, + })>[ + ( + type: 'MEAL_REMINDER_BREAKFAST', + title: 'Nhắc bữa sáng', + body: 'Đến giờ dùng bữa sáng và ghi nhật ký.', + time: profile.optimalBreakfastTime, + ), + ( + type: 'MEAL_REMINDER_LUNCH', + title: 'Nhắc bữa trưa', + body: 'Đến giờ dùng bữa trưa và ghi nhật ký.', + time: profile.optimalLunchTime, + ), + ( + type: 'MEAL_REMINDER_DINNER', + title: 'Nhắc bữa tối', + body: 'Đến giờ dùng bữa tối và ghi nhật ký.', + time: profile.optimalDinnerTime, + ), + ]; + + for (final definition in definitions) { + final matches = current + .where( + (reminder) => + _normalizedReminderType(reminder.type) == definition.type, + ) + .toList(); + final scheduledAt = _nextMealReminderAt(definition.time); + + if (matches.isEmpty) { + await _repository.create( + title: definition.title, + body: definition.body, + scheduledAt: scheduledAt, + type: definition.type, + repeatIntervalMinutes: _dailyRepeatMinutes, + ); + continue; + } + + await _repository.update( + matches.first.id, + title: definition.title, + body: definition.body, + scheduledAt: scheduledAt, + isEnabled: true, + repeatIntervalMinutes: _dailyRepeatMinutes, + ); + + for (final duplicate in matches.skip(1)) { + await _repository.delete(duplicate.id); + } + } + } + Future _recalculate() async { if (_recalculating) return; setState(() => _recalculating = true); @@ -323,7 +394,7 @@ class _AdaptiveRemindersScreenState extends State { children: [ Expanded( child: Text( - 'Lịch nhắc tùy chỉnh', + 'Lịch nhắc đã lưu', style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, @@ -380,3 +451,18 @@ class _AdaptiveRemindersScreenState extends State { ); } } + +String _normalizedReminderType(String? value) { + final type = value?.toUpperCase() ?? ''; + return type.startsWith('DISABLED_') + ? type.substring('DISABLED_'.length) + : type; +} + +DateTime _nextMealReminderAt(String value) { + final time = _timeOfDay(value); + final now = DateTime.now(); + var result = DateTime(now.year, now.month, now.day, time.hour, time.minute); + if (!result.isAfter(now)) result = result.add(const Duration(days: 1)); + return result; +} diff --git a/frontend/lib/features/advanced/views/advanced_features_screen.dart b/frontend/lib/features/advanced/views/advanced_features_screen.dart index 97c65dad..db58ecac 100644 --- a/frontend/lib/features/advanced/views/advanced_features_screen.dart +++ b/frontend/lib/features/advanced/views/advanced_features_screen.dart @@ -38,9 +38,9 @@ class AdvancedFeaturesScreen extends StatelessWidget { .toLowerCase(); final isAdmin = role == 'admin'; final tabs = gymerOnly - ? const [Tab(text: 'PT Review'), Tab(text: 'Huấn luyện viên')] + ? const [Tab(text: 'Đánh giá của PT'), Tab(text: 'Huấn luyện viên')] : [ - const Tab(text: 'PT Review'), + const Tab(text: 'Đánh giá của PT'), const Tab(text: 'Ngân sách'), const Tab(text: 'Coach'), const Tab(text: 'Nguyên liệu'), @@ -3745,8 +3745,8 @@ class _UserTabState extends State<_UserTab> { PopupMenuItem(value: 'lock', child: Text('Khóa')), PopupMenuItem(value: 'unlock', child: Text('Mở khóa')), PopupMenuItem( - value: 'role:User', - child: Text('Gán User'), + value: 'role:Free', + child: Text('Gán Free'), ), PopupMenuItem( value: 'role:Coach', diff --git a/frontend/lib/features/auth/views/register_screen.dart b/frontend/lib/features/auth/views/register_screen.dart index 20363ab1..e682fb12 100644 --- a/frontend/lib/features/auth/views/register_screen.dart +++ b/frontend/lib/features/auth/views/register_screen.dart @@ -25,7 +25,7 @@ class _RegisterScreenState extends State final _confirmPasswordController = TextEditingController(); late final AuthRepository _authRepo; bool _isLoading = false; - String _accountType = 'User'; + String _accountType = 'Free'; String? _emailApiError; late AnimationController _animController; @@ -291,7 +291,7 @@ class _RegisterScreenState extends State children: [ Expanded( child: _buildAccountTypeOption( - value: 'User', + value: 'Free', icon: Icons.person_outline_rounded, title: 'Người dùng', subtitle: 'Theo dõi dinh dưỡng', diff --git a/frontend/lib/features/coach_pt/views/coach_create_meal_plan_screen.dart b/frontend/lib/features/coach_pt/views/coach_create_meal_plan_screen.dart index 210cfb6c..cc735d82 100644 --- a/frontend/lib/features/coach_pt/views/coach_create_meal_plan_screen.dart +++ b/frontend/lib/features/coach_pt/views/coach_create_meal_plan_screen.dart @@ -4,6 +4,7 @@ import 'package:provider/provider.dart'; import '../../../core/constants/app_colors.dart'; import '../../../core/utils/daily_calorie_portion_balancer.dart'; import '../../../core/utils/nutrition_format.dart'; +import '../../../core/widgets/calorie_adjustment_picker.dart'; import '../../../core/widgets/daily_calorie_balance_card.dart'; import '../../discover/models/food_models.dart'; import '../../discover/repositories/food_discovery_repository.dart'; @@ -1236,6 +1237,26 @@ class _CoachCreateMealPlanScreenState extends State { const SizedBox(height: 16), ], + SizedBox( + width: double.infinity, + child: OutlinedButton.icon( + key: const ValueKey('add-meal-entry-button'), + onPressed: _addMealEntry, + icon: const Icon(Icons.add_circle_outline_rounded, size: 20), + label: const Text('Thêm bữa ăn'), + style: OutlinedButton.styleFrom( + minimumSize: const Size.fromHeight(48), + foregroundColor: AppColors.primary, + side: const BorderSide(color: AppColors.primary), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + ), + textStyle: const TextStyle(fontWeight: FontWeight.w800), + ), + ), + ), + const SizedBox(height: 12), + // Meal Slots Accordions for (final mealType in const [ ( @@ -1274,7 +1295,7 @@ class _CoachCreateMealPlanScreenState extends State { bgColor: mealType.$4, textColor: mealType.$5, items: _itemsByMeal[mealType.$1]!, - onAdd: () => _pickItemFor(mealType.$1), + onAdd: () => _addMealEntry(initialMealType: mealType.$1), onRemove: (it) => setState(() => _itemsByMeal[mealType.$1]!.remove(it)), onEdit: _editDraftItem, @@ -1360,6 +1381,8 @@ class _CoachCreateMealPlanScreenState extends State { totalCalories: total, targetCalories: target, mealCount: mealCount, + actionLabel: 'Tùy chỉnh', + allowAdjustmentWhenExact: true, onAutoBalance: () => _autoBalanceDate(date), ); } @@ -1380,13 +1403,19 @@ class _CoachCreateMealPlanScreenState extends State { return result; } - void _autoBalanceDate(DateTime date) { + Future _autoBalanceDate(DateTime date) async { final target = _targetCalories ?? 0; final locations = _draftItemsForDate(date); if (target <= 0 || locations.isEmpty) return; - final result = DailyCaloriePortionBalancer.balance( + final desiredCalories = await showCalorieAdjustmentPicker( + context: context, targetCalories: target, + ); + if (desiredCalories == null || !mounted) return; + + final result = DailyCaloriePortionBalancer.balance( + targetCalories: desiredCalories, portions: locations .map( (location) => CaloriePortionInput( @@ -1413,12 +1442,18 @@ class _CoachCreateMealPlanScreenState extends State { final percent = ((result.scaleFactor - 1).abs() * 100).round(); final action = result.scaleFactor >= 1 ? 'tăng' : 'giảm'; + final targetComparison = desiredCalories == target + ? 'đúng mục tiêu' + : desiredCalories < target + ? 'thấp hơn mục tiêu' + : 'cao hơn mục tiêu'; ScaffoldMessenger.of(context) ..hideCurrentSnackBar() ..showSnackBar( SnackBar( content: Text( - 'Đã $action khẩu phần khoảng $percent% cho ngày ${_fmt(date)} để đạt $target kcal.', + 'Đã $action khẩu phần khoảng $percent% cho ngày ${_fmt(date)} ' + 'về $desiredCalories kcal ($targetComparison $target kcal).', ), ), ); @@ -1582,7 +1617,7 @@ class _CoachCreateMealPlanScreenState extends State { const SizedBox(width: 8), Expanded( child: _MacroStatCard( - label: 'Carbs', + label: 'Carb', value: '$averageCarbs g', color: AppColors.primary, bgColor: AppColors.primary.withValues(alpha: 0.05), @@ -1591,7 +1626,7 @@ class _CoachCreateMealPlanScreenState extends State { const SizedBox(width: 8), Expanded( child: _MacroStatCard( - label: 'Fat', + label: 'Chất béo', value: '$averageFat g', color: AppColors.primary, bgColor: AppColors.primary.withValues(alpha: 0.08), @@ -1787,6 +1822,7 @@ class _CoachCreateMealPlanScreenState extends State { Future _pickItemFor( String mealType, { _DraftItemDraft? replacing, + DateTime? plannedDate, }) async { final pick = await showModalBottomSheet<_PickResult>( context: context, @@ -1794,13 +1830,14 @@ class _CoachCreateMealPlanScreenState extends State { builder: (_) => const _IngredientPickerSheet(), ); if (pick != null && mounted) { - final plannedDate = replacing?.plannedDate ?? _resolvedRange.$1; + final resolvedDate = + replacing?.plannedDate ?? plannedDate ?? _resolvedRange.$1; final replacement = _DraftItemDraft( mealType: mealType, foodId: pick.kind == _IngredientKind.food ? pick.id : null, recipeId: pick.kind == _IngredientKind.recipe ? pick.id : null, label: pick.name, - plannedDate: plannedDate, + plannedDate: resolvedDate, scheduledTime: replacing?.scheduledTime ?? _mealDefaultTime(mealType), targetCalories: pick.calories, quantityG: pick.quantityG ?? replacing?.quantityG ?? 100, @@ -1821,6 +1858,78 @@ class _CoachCreateMealPlanScreenState extends State { } } + Future _addMealEntry({String initialMealType = 'snack'}) async { + var selectedMealType = initialMealType; + var selectedDate = _resolvedRange.$1; + final selection = await showDialog<({String mealType, DateTime date})>( + context: context, + builder: (dialogContext) => StatefulBuilder( + builder: (context, setDialogState) => AlertDialog( + title: const Text('Thêm bữa ăn'), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + DropdownButtonFormField( + initialValue: selectedMealType, + decoration: const InputDecoration( + labelText: 'Loại bữa ăn', + border: OutlineInputBorder(), + ), + items: const [ + DropdownMenuItem(value: 'breakfast', child: Text('Bữa sáng')), + DropdownMenuItem(value: 'lunch', child: Text('Bữa trưa')), + DropdownMenuItem(value: 'dinner', child: Text('Bữa tối')), + DropdownMenuItem(value: 'snack', child: Text('Bữa phụ')), + ], + onChanged: (value) { + if (value != null) { + setDialogState(() => selectedMealType = value); + } + }, + ), + const SizedBox(height: 12), + DropdownButtonFormField( + initialValue: selectedDate, + decoration: const InputDecoration( + labelText: 'Ngày dùng bữa', + border: OutlineInputBorder(), + ), + items: _planDates + .map( + (date) => DropdownMenuItem( + value: date, + child: Text(_fmt(date)), + ), + ) + .toList(), + onChanged: (value) { + if (value != null) { + setDialogState(() => selectedDate = value); + } + }, + ), + ], + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(dialogContext).pop(), + child: const Text('Hủy'), + ), + FilledButton.icon( + onPressed: () => Navigator.of( + dialogContext, + ).pop((mealType: selectedMealType, date: selectedDate)), + icon: const Icon(Icons.restaurant_menu_rounded, size: 18), + label: const Text('Chọn món'), + ), + ], + ), + ), + ); + if (selection == null || !mounted) return; + await _pickItemFor(selection.mealType, plannedDate: selection.date); + } + Future _editDraftItem(_DraftItemDraft item) async { var editableIngredients = List<_DraftIngredientPortion>.from( item.ingredients, @@ -2231,7 +2340,7 @@ class _CoachCreateMealPlanScreenState extends State { 'day' => 'Ngày', 'week' => 'Tuần', 'month' => 'Tháng', - _ => 'Profile', + _ => 'Hồ sơ', }; } } @@ -2798,13 +2907,26 @@ class _MealPickerRow extends StatelessWidget { ), ), const SizedBox(width: 8), - IconButton( - icon: const Icon(Icons.add_circle_rounded, size: 22), - color: textColor, - padding: EdgeInsets.zero, - constraints: const BoxConstraints(), + TextButton.icon( onPressed: onAdd, - tooltip: 'Thêm món', + icon: Icon( + Icons.add_circle_rounded, + size: 18, + color: textColor, + ), + label: Text( + 'Thêm', + style: TextStyle( + color: textColor, + fontWeight: FontWeight.w800, + fontSize: 12, + ), + ), + style: TextButton.styleFrom( + visualDensity: VisualDensity.compact, + padding: const EdgeInsets.symmetric(horizontal: 6), + minimumSize: const Size(0, 32), + ), ), ], ), diff --git a/frontend/lib/features/coach_pt/views/coach_meal_plan_detail_screen.dart b/frontend/lib/features/coach_pt/views/coach_meal_plan_detail_screen.dart index 20dad5ad..1147aaba 100644 --- a/frontend/lib/features/coach_pt/views/coach_meal_plan_detail_screen.dart +++ b/frontend/lib/features/coach_pt/views/coach_meal_plan_detail_screen.dart @@ -5,12 +5,28 @@ import '../../../core/constants/app_colors.dart'; import '../../../core/utils/daily_calorie_portion_balancer.dart'; import '../../../core/utils/meal_schedule_format.dart'; import '../../../core/utils/nutrition_format.dart'; +import '../../../core/widgets/calorie_adjustment_picker.dart'; import '../../../core/widgets/daily_calorie_balance_card.dart'; import '../../discover/repositories/food_discovery_repository.dart'; import '../../discover/views/food_detail_screen.dart'; import '../../discover/views/recipe_detail_screen.dart'; import '../coach_pt.dart'; +@visibleForTesting +List coachLogsForPlanRange( + Iterable logs, + DateTime? startDate, + DateTime? endDate, +) { + if (startDate == null) return logs.toList(); + final start = DateUtils.dateOnly(startDate); + final end = DateUtils.dateOnly(endDate ?? startDate); + return logs.where((log) { + final loggedDate = DateUtils.dateOnly(log.loggedAt.toLocal()); + return !loggedDate.isBefore(start) && !loggedDate.isAfter(end); + }).toList(); +} + /// Coach edits a specific Gymer's meal plan. /// /// * Tapping a meal item opens an inline edit sheet (Delete / Replace). @@ -181,6 +197,8 @@ class _CoachMealPlanDetailScreenState extends State .toSet() .length, canAutoBalance: !readOnly, + actionLabel: 'Tùy chỉnh', + allowAdjustmentWhenExact: true, onAutoBalance: readOnly ? null : () => _autoBalanceDraftDate(plan, date, target), @@ -197,15 +215,22 @@ class _CoachMealPlanDetailScreenState extends State ); } - void _autoBalanceDraftDate( + Future _autoBalanceDraftDate( CoachMealPlanDetail plan, DateTime date, int target, - ) { + ) async { final items = _draftItemsForDate(plan, date); if (items.isEmpty) return; - final result = DailyCaloriePortionBalancer.balance( + + final desiredCalories = await showCalorieAdjustmentPicker( + context: context, targetCalories: target, + ); + if (desiredCalories == null || !mounted) return; + + final result = DailyCaloriePortionBalancer.balance( + targetCalories: desiredCalories, portions: items .map( (item) => CaloriePortionInput( @@ -249,12 +274,18 @@ class _CoachMealPlanDetailScreenState extends State final percent = ((result.scaleFactor - 1).abs() * 100).round(); final action = result.scaleFactor >= 1 ? 'tăng' : 'giảm'; + final targetComparison = desiredCalories == target + ? 'đúng mục tiêu' + : desiredCalories < target + ? 'thấp hơn mục tiêu' + : 'cao hơn mục tiêu'; ScaffoldMessenger.of(context) ..hideCurrentSnackBar() ..showSnackBar( SnackBar( content: Text( - 'Đã $action khẩu phần khoảng $percent%. Hãy lưu hoặc duyệt để áp dụng.', + 'Đã $action khẩu phần khoảng $percent% về $desiredCalories kcal ' + '($targetComparison $target kcal). Hãy lưu hoặc duyệt để áp dụng.', ), ), ); @@ -942,7 +973,11 @@ class _NutritionTrackingTab extends StatelessWidget { Widget build(BuildContext context) { final nutritionProvider = context.watch(); final actualDays = nutritionProvider.nutritionSummary; - final actualLogs = actualDays.expand((day) => day.logs).toList(); + final actualLogs = coachLogsForPlanRange( + actualDays.expand((day) => day.logs), + plan.header.startDate, + plan.header.endDate, + ); final planType = plan.header.planType.toLowerCase(); // Determine display title based on plan type @@ -978,9 +1013,9 @@ class _NutritionTrackingTab extends StatelessWidget { final totalPlannedCalories = itemCalories > 0 ? itemCalories : dailyCalorieTarget * planDayCount; - final totalActualCalories = actualDays.fold( + final totalActualCalories = actualLogs.fold( 0, - (sum, day) => sum + day.actualCalories, + (sum, log) => sum + log.calories, ); final itemProtein = draft.fold( 0, @@ -989,9 +1024,9 @@ class _NutritionTrackingTab extends StatelessWidget { final totalPlannedProtein = itemProtein > 0 ? itemProtein : (plan.targetProteinG ?? 0) * planDayCount; - final totalActualProtein = actualDays.fold( + final totalActualProtein = actualLogs.fold( 0, - (sum, day) => sum + day.actualProtein, + (sum, log) => sum + log.proteinG.round(), ); final itemCarbs = draft.fold( 0, @@ -1000,9 +1035,9 @@ class _NutritionTrackingTab extends StatelessWidget { final totalPlannedCarbs = itemCarbs > 0 ? itemCarbs : (plan.targetCarbsG ?? 0) * planDayCount; - final totalActualCarbs = actualDays.fold( + final totalActualCarbs = actualLogs.fold( 0, - (sum, day) => sum + day.actualCarbs, + (sum, log) => sum + log.carbsG.round(), ); final itemFat = draft.fold( 0, @@ -1011,9 +1046,9 @@ class _NutritionTrackingTab extends StatelessWidget { final totalPlannedFat = itemFat > 0 ? itemFat : (plan.targetFatG ?? 0) * planDayCount; - final totalActualFat = actualDays.fold( + final totalActualFat = actualLogs.fold( 0, - (sum, day) => sum + day.actualFat, + (sum, log) => sum + log.fatG.round(), ); final completedCount = actualLogs.length; final linkedItemIds = actualLogs @@ -1935,7 +1970,7 @@ class _MacroComparisonSection extends StatelessWidget { ), const SizedBox(height: 10), _MacroBar( - label: 'Carbs', + label: 'Carb', subtitle: 'Tinh bột', planned: plannedCarbs, actual: actualCarbs, @@ -1947,7 +1982,7 @@ class _MacroComparisonSection extends StatelessWidget { ), const SizedBox(height: 10), _MacroBar( - label: 'Fat', + label: 'Chất béo', subtitle: 'Chất béo', planned: plannedFat, actual: actualFat, @@ -2425,7 +2460,7 @@ class _NutritionTargetsSection extends StatelessWidget { Expanded( child: _MacroCard( icon: Icons.bakery_dining_rounded, - label: 'Carbs', + label: 'Carb', value: '$totalC g', bgColor: AppColors.primary.withValues(alpha: 0.05), borderColor: AppColors.primary.withValues( @@ -2438,7 +2473,7 @@ class _NutritionTargetsSection extends StatelessWidget { Expanded( child: _MacroCard( icon: Icons.water_drop_outlined, - label: 'Fat', + label: 'Chất béo', value: '$totalF g', bgColor: AppColors.primary.withValues(alpha: 0.08), borderColor: AppColors.primary.withValues(alpha: 0.2), diff --git a/frontend/lib/features/discover/models/food_models.dart b/frontend/lib/features/discover/models/food_models.dart index 032ae66f..4ee0bf77 100644 --- a/frontend/lib/features/discover/models/food_models.dart +++ b/frontend/lib/features/discover/models/food_models.dart @@ -1,5 +1,75 @@ import 'dart:convert'; +class CatalogPage { + const CatalogPage({ + required this.items, + required this.totalCount, + required this.page, + required this.pageSize, + required this.totalPages, + }); + + final List items; + final int totalCount; + final int page; + final int pageSize; + final int totalPages; + + bool get hasPreviousPage => page > 1; + bool get hasNextPage => page < totalPages; + + factory CatalogPage.empty({int page = 1, int pageSize = 0}) { + return CatalogPage( + items: const [], + totalCount: 0, + page: page, + pageSize: pageSize, + totalPages: 0, + ); + } + + factory CatalogPage.fromJson( + Map json, + T Function(Map) itemFromJson, + ) { + int integer(List keys, {int fallback = 0}) { + for (final key in keys) { + final raw = json[key]; + if (raw is num) return raw.toInt(); + final parsed = int.tryParse(raw?.toString() ?? ''); + if (parsed != null) return parsed; + } + return fallback; + } + + final rawItems = json['items'] ?? json['Items']; + final items = rawItems is List + ? rawItems.whereType>().map(itemFromJson).toList() + : []; + final totalCount = integer(const [ + 'totalCount', + 'TotalCount', + ], fallback: items.length); + final page = integer(const ['page', 'Page'], fallback: 1); + final pageSize = integer(const [ + 'pageSize', + 'PageSize', + ], fallback: items.length); + final totalPages = integer(const [ + 'totalPages', + 'TotalPages', + ], fallback: pageSize > 0 ? (totalCount / pageSize).ceil() : 0); + + return CatalogPage( + items: items, + totalCount: totalCount, + page: page, + pageSize: pageSize, + totalPages: totalPages, + ); + } +} + class _RecommendationJson { const _RecommendationJson._(); diff --git a/frontend/lib/features/discover/repositories/food_discovery_repository.dart b/frontend/lib/features/discover/repositories/food_discovery_repository.dart index 57b9d130..fc417491 100644 --- a/frontend/lib/features/discover/repositories/food_discovery_repository.dart +++ b/frontend/lib/features/discover/repositories/food_discovery_repository.dart @@ -51,6 +51,22 @@ class FoodDiscoveryRepository { String allergyMode = 'warn', FoodSearchFilters? filters, String? region, + }) async { + return (await searchFoodsPage( + keyword: keyword, + allergyMode: allergyMode, + filters: filters, + region: region, + )).items; + } + + Future> searchFoodsPage({ + String? keyword, + String allergyMode = 'warn', + FoodSearchFilters? filters, + String? region, + int? page, + int? pageSize, }) async { try { final params = { @@ -69,21 +85,22 @@ class FoodDiscoveryRepository { 'category': filters.category!.trim(), if (region != null && region.isNotEmpty) 'region': region, if (region != null && region.isNotEmpty) 'sort': 'local-friendly', + if (page != null) 'page': '$page', + if (pageSize != null) 'pageSize': '$pageSize', }; final url = QueryMiddleware.buildUrl(ApiEndpoints.foods, params); final response = await _api.get(url); - if (response.statusCode != 200 || response.body.isEmpty) return []; + if (response.statusCode != 200 || response.body.isEmpty) { + return CatalogPage.empty(page: page ?? 1, pageSize: pageSize ?? 0); + } final decoded = jsonDecode(response.body); - if (decoded is! Map) return []; - final items = decoded['items'] ?? decoded['Items']; - if (items is! List) return []; - return items - .whereType>() - .map(FoodItem.fromJson) - .toList(); + if (decoded is! Map) { + return CatalogPage.empty(page: page ?? 1, pageSize: pageSize ?? 0); + } + return CatalogPage.fromJson(decoded, FoodItem.fromJson); } catch (e, stack) { AppLogger.error('FoodDiscoveryRepository.searchFoods', e, stack); - return []; + return CatalogPage.empty(page: page ?? 1, pageSize: pageSize ?? 0); } } @@ -124,27 +141,40 @@ class FoodDiscoveryRepository { Future> searchRecipes({ String? keyword, String allergyMode = 'warn', + }) async { + return (await searchRecipesPage( + keyword: keyword, + allergyMode: allergyMode, + )).items; + } + + Future> searchRecipesPage({ + String? keyword, + String allergyMode = 'warn', + int? page, + int? pageSize, }) async { try { final params = { if (QueryMiddleware.normalizeKeyword(keyword) != null) 'keyword': QueryMiddleware.normalizeKeyword(keyword)!, 'allergyMode': allergyMode, + if (page != null) 'page': '$page', + if (pageSize != null) 'pageSize': '$pageSize', }; final url = QueryMiddleware.buildUrl(ApiEndpoints.recipeSearch, params); final response = await _api.get(url); - if (response.statusCode != 200 || response.body.isEmpty) return []; + if (response.statusCode != 200 || response.body.isEmpty) { + return CatalogPage.empty(page: page ?? 1, pageSize: pageSize ?? 0); + } final decoded = jsonDecode(response.body); - if (decoded is! Map) return []; - final items = decoded['items'] ?? decoded['Items']; - if (items is! List) return []; - return items - .whereType>() - .map(RecipeItem.fromJson) - .toList(); + if (decoded is! Map) { + return CatalogPage.empty(page: page ?? 1, pageSize: pageSize ?? 0); + } + return CatalogPage.fromJson(decoded, RecipeItem.fromJson); } catch (e, stack) { AppLogger.error('FoodDiscoveryRepository.searchRecipes', e, stack); - return []; + return CatalogPage.empty(page: page ?? 1, pageSize: pageSize ?? 0); } } @@ -209,7 +239,8 @@ class FoodDiscoveryRepository { return const FavoriteFoodsLoadResult( items: [], isFromCache: false, - message: 'D\u1eef li\u1ec7u m\u00f3n y\u00eau th\u00edch kh\u00f4ng h\u1ee3p l\u1ec7.', + message: + 'D\u1eef li\u1ec7u m\u00f3n y\u00eau th\u00edch kh\u00f4ng h\u1ee3p l\u1ec7.', ); } final items = decoded @@ -253,7 +284,8 @@ class FoodDiscoveryRepository { item: rawItem is Map ? FavoriteFoodItem.fromJson(rawItem) : null, - message: '\u0110\u00e3 th\u00eam m\u00f3n v\u00e0o y\u00eau th\u00edch.', + message: + '\u0110\u00e3 th\u00eam m\u00f3n v\u00e0o y\u00eau th\u00edch.', ); } catch (error, stack) { AppLogger.error('FoodDiscoveryRepository.addFavorite', error, stack); @@ -404,29 +436,42 @@ class FoodDiscoveryRepository { Future> searchIngredients({ String? keyword, String allergyMode = 'warn', + }) async { + return (await searchIngredientsPage( + keyword: keyword, + allergyMode: allergyMode, + )).items; + } + + Future> searchIngredientsPage({ + String? keyword, + String allergyMode = 'warn', + int? page, + int? pageSize, }) async { try { final params = { if (QueryMiddleware.normalizeKeyword(keyword) != null) 'keyword': QueryMiddleware.normalizeKeyword(keyword)!, 'allergyMode': allergyMode, + if (page != null) 'page': '$page', + if (pageSize != null) 'pageSize': '$pageSize', }; final url = QueryMiddleware.buildUrl( ApiEndpoints.ingredientSearch, params, ); final response = await _api.get(url); - if (response.statusCode != 200 || response.body.isEmpty) return []; + if (response.statusCode != 200 || response.body.isEmpty) { + return CatalogPage.empty(page: page ?? 1, pageSize: pageSize ?? 0); + } final decoded = jsonDecode(response.body); - if (decoded is! Map) return []; - final items = decoded['items'] ?? decoded['Items']; - if (items is! List) return []; - return items - .whereType>() - .map(IngredientItem.fromJson) - .toList(); + if (decoded is! Map) { + return CatalogPage.empty(page: page ?? 1, pageSize: pageSize ?? 0); + } + return CatalogPage.fromJson(decoded, IngredientItem.fromJson); } catch (_) { - return []; + return CatalogPage.empty(page: page ?? 1, pageSize: pageSize ?? 0); } } diff --git a/frontend/lib/features/discover/views/discover_view.dart b/frontend/lib/features/discover/views/discover_view.dart index 6bcd88d8..ee14d5a2 100644 --- a/frontend/lib/features/discover/views/discover_view.dart +++ b/frontend/lib/features/discover/views/discover_view.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../../core/constants/app_colors.dart'; +import '../../../core/i18n/api_message_translator.dart'; import '../../../core/services/location_service.dart'; import '../../onboarding/repositories/user_ai_profile_repository.dart'; import '../../profile/views/allergies_screen.dart'; @@ -28,8 +29,13 @@ class DiscoverView extends StatefulWidget { class DiscoverViewState extends State with SingleTickerProviderStateMixin { + static const int _pageSize = 10; + final _repository = FoodDiscoveryRepository(); final _keywordController = TextEditingController(); + final _foodScrollController = ScrollController(); + final _recipeScrollController = ScrollController(); + final _ingredientScrollController = ScrollController(); late final TabController _tabController; final String _allergyMode = 'warn'; @@ -46,6 +52,15 @@ class DiscoverViewState extends State List _foods = []; List _recipes = []; List _ingredients = []; + int _foodPage = 1; + int _foodTotalCount = 0; + int _foodTotalPages = 0; + int _recipePage = 1; + int _recipeTotalCount = 0; + int _recipeTotalPages = 0; + int _ingredientPage = 1; + int _ingredientTotalCount = 0; + int _ingredientTotalPages = 0; int _loadGeneration = 0; bool _recipesLoaded = false; bool _ingredientsLoaded = false; @@ -75,6 +90,9 @@ class DiscoverViewState extends State _reloadDebounce?.cancel(); _tabController.removeListener(_onTabChanged); _keywordController.dispose(); + _foodScrollController.dispose(); + _recipeScrollController.dispose(); + _ingredientScrollController.dispose(); _tabController.dispose(); super.dispose(); } @@ -115,6 +133,7 @@ class DiscoverViewState extends State Future _reloadLists({ bool initial = false, bool checkAllergy = false, + bool resetPages = true, }) async { final gen = ++_loadGeneration; if (!mounted) return; @@ -127,6 +146,11 @@ class DiscoverViewState extends State _error = null; _recipesLoaded = false; _ingredientsLoaded = false; + if (resetPages) { + _foodPage = 1; + _recipePage = 1; + _ingredientPage = 1; + } }); try { @@ -139,17 +163,22 @@ class DiscoverViewState extends State setState(() => _hasAllergies = hasAllergies); } - final foods = await _repository - .searchFoods( + final foodsPage = await _repository + .searchFoodsPage( keyword: _keyword, allergyMode: _effectiveAllergyMode, filters: _foodFilters, region: _detectedRegion, + page: _foodPage, + pageSize: _pageSize, ) .timeout(const Duration(seconds: 20)); if (!mounted || gen != _loadGeneration) return; setState(() { - _foods = foods; + _foods = foodsPage.items; + _foodPage = foodsPage.page; + _foodTotalCount = foodsPage.totalCount; + _foodTotalPages = foodsPage.totalPages; _initialLoading = false; _refreshing = false; }); @@ -181,12 +210,20 @@ class DiscoverViewState extends State if (!mounted) return; setState(() => _recipesLoading = true); try { - final recipes = await _repository - .searchRecipes(keyword: _keyword, allergyMode: _effectiveAllergyMode) + final recipesPage = await _repository + .searchRecipesPage( + keyword: _keyword, + allergyMode: _effectiveAllergyMode, + page: _recipePage, + pageSize: _pageSize, + ) .timeout(const Duration(seconds: 20)); if (!mounted || gen != _loadGeneration) return; setState(() { - _recipes = recipes; + _recipes = recipesPage.items; + _recipePage = recipesPage.page; + _recipeTotalCount = recipesPage.totalCount; + _recipeTotalPages = recipesPage.totalPages; _recipesLoading = false; _recipesLoaded = true; }); @@ -205,15 +242,20 @@ class DiscoverViewState extends State if (!mounted) return; setState(() => _ingredientsLoading = true); try { - final items = await _repository - .searchIngredients( + final itemsPage = await _repository + .searchIngredientsPage( keyword: _keyword, allergyMode: _effectiveAllergyMode, + page: _ingredientPage, + pageSize: _pageSize, ) .timeout(const Duration(seconds: 20)); if (!mounted || gen != _loadGeneration) return; setState(() { - _ingredients = items; + _ingredients = itemsPage.items; + _ingredientPage = itemsPage.page; + _ingredientTotalCount = itemsPage.totalCount; + _ingredientTotalPages = itemsPage.totalPages; _ingredientsLoading = false; _ingredientsLoaded = true; }); @@ -227,6 +269,40 @@ class DiscoverViewState extends State } } + Future _goToPage(int page) async { + switch (_tabController.index) { + case 0: + if (_refreshing || page < 1 || page > _foodTotalPages) return; + setState(() => _foodPage = page); + await _reloadLists(resetPages: false); + _scrollToTop(_foodScrollController); + return; + case 1: + if (_recipesLoading || page < 1 || page > _recipeTotalPages) return; + setState(() => _recipePage = page); + await _loadRecipes(); + _scrollToTop(_recipeScrollController); + return; + case 2: + if (_ingredientsLoading || page < 1 || page > _ingredientTotalPages) { + return; + } + setState(() => _ingredientPage = page); + await _loadIngredients(); + _scrollToTop(_ingredientScrollController); + return; + } + } + + void _scrollToTop(ScrollController controller) { + if (!mounted || !controller.hasClients) return; + controller.animateTo( + 0, + duration: const Duration(milliseconds: 250), + curve: Curves.easeOut, + ); + } + Future _openFoodFilters() async { final result = await showDiscoverFoodFiltersSheet( context, @@ -558,10 +634,19 @@ class DiscoverViewState extends State return const Center(child: Text('Không có món phù hợp.')); } return ListView.separated( + controller: _foodScrollController, padding: const EdgeInsets.all(20), - itemCount: _foods.length, + itemCount: _foods.length + (_foodTotalPages > 1 ? 1 : 0), separatorBuilder: (_, _) => const SizedBox(height: 12), itemBuilder: (context, index) { + if (index == _foods.length) { + return _buildPaginationBar( + page: _foodPage, + totalPages: _foodTotalPages, + totalCount: _foodTotalCount, + loading: _refreshing, + ); + } final food = _foods[index]; return Consumer( builder: (context, favorites, _) => _FoodListTile( @@ -609,10 +694,19 @@ class DiscoverViewState extends State return const Center(child: Text('Không có công thức phù hợp.')); } return ListView.separated( + controller: _recipeScrollController, padding: const EdgeInsets.all(20), - itemCount: _recipes.length, + itemCount: _recipes.length + (_recipeTotalPages > 1 ? 1 : 0), separatorBuilder: (_, _) => const SizedBox(height: 12), itemBuilder: (context, index) { + if (index == _recipes.length) { + return _buildPaginationBar( + page: _recipePage, + totalPages: _recipeTotalPages, + totalCount: _recipeTotalCount, + loading: _recipesLoading, + ); + } final recipe = _recipes[index]; return ListTile( shape: RoundedRectangleBorder( @@ -672,10 +766,19 @@ class DiscoverViewState extends State return const Center(child: Text('Không có nguyên liệu phù hợp.')); } return ListView.separated( + controller: _ingredientScrollController, padding: const EdgeInsets.all(20), - itemCount: _ingredients.length, + itemCount: _ingredients.length + (_ingredientTotalPages > 1 ? 1 : 0), separatorBuilder: (_, _) => const SizedBox(height: 12), itemBuilder: (context, index) { + if (index == _ingredients.length) { + return _buildPaginationBar( + page: _ingredientPage, + totalPages: _ingredientTotalPages, + totalCount: _ingredientTotalCount, + loading: _ingredientsLoading, + ); + } final item = _ingredients[index]; return ListTile( shape: RoundedRectangleBorder( @@ -691,7 +794,7 @@ class DiscoverViewState extends State children: [ Text( [ - if (item.category != null) item.category!, + if (item.category != null) item.category!.translatedData, if (item.caloriesKcal != null) '${item.caloriesKcal!.round()} kcal', if (item.unitDefault != null) item.unitDefault!, @@ -726,6 +829,64 @@ class DiscoverViewState extends State }, ); } + + Widget _buildPaginationBar({ + required int page, + required int totalPages, + required int totalCount, + required bool loading, + }) { + return Semantics( + label: 'Phân trang, trang $page trên $totalPages', + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 6), + decoration: BoxDecoration( + color: AppColors.primary.withValues(alpha: 0.06), + borderRadius: BorderRadius.circular(14), + border: Border.all(color: AppColors.primary.withValues(alpha: 0.18)), + ), + child: Row( + children: [ + IconButton( + tooltip: 'Trang trước', + onPressed: !loading && page > 1 + ? () => _goToPage(page - 1) + : null, + icon: const Icon(Icons.chevron_left), + ), + Expanded( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Trang $page / $totalPages', + style: const TextStyle( + fontWeight: FontWeight.w600, + color: AppColors.textDark, + ), + ), + Text( + '$totalCount mục', + style: const TextStyle( + fontSize: 12, + color: AppColors.textSecondary, + ), + ), + ], + ), + ), + IconButton( + tooltip: 'Trang sau', + onPressed: !loading && page < totalPages + ? () => _goToPage(page + 1) + : null, + icon: const Icon(Icons.chevron_right), + ), + ], + ), + ), + ); + } } class _FoodListTile extends StatelessWidget { diff --git a/frontend/lib/features/discover/views/favorites_screen.dart b/frontend/lib/features/discover/views/favorites_screen.dart index 27d7572d..dce7e229 100644 --- a/frontend/lib/features/discover/views/favorites_screen.dart +++ b/frontend/lib/features/discover/views/favorites_screen.dart @@ -3,6 +3,7 @@ import 'package:provider/provider.dart'; import '../../../core/constants/app_colors.dart'; import '../../../core/constants/app_text_styles.dart'; +import '../../../core/i18n/api_message_translator.dart'; import '../models/food_models.dart'; import '../providers/favorite_food_provider.dart'; import 'food_detail_screen.dart'; @@ -126,7 +127,7 @@ class _FavoritesScreenState extends State { Padding( padding: const EdgeInsets.only(top: 2), child: Text( - item.category!, + item.category!.translatedData, style: beVietnamPro( fontSize: 11.5, color: AppColors.primary, diff --git a/frontend/lib/features/discover/views/food_detail_screen.dart b/frontend/lib/features/discover/views/food_detail_screen.dart index a2231124..3cb6857d 100644 --- a/frontend/lib/features/discover/views/food_detail_screen.dart +++ b/frontend/lib/features/discover/views/food_detail_screen.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../../core/constants/app_colors.dart'; +import '../../../core/i18n/api_message_translator.dart'; import '../../../core/utils/nutrition_format.dart'; import '../models/food_models.dart'; import '../providers/favorite_food_provider.dart'; @@ -222,7 +223,7 @@ class _FoodDetailScreenState extends State { ), if (food.estimatedPriceVnd != null) _chip(_formatPrice(food.estimatedPriceVnd!)), - if (food.category != null) _chip(food.category!), + if (food.category != null) _chip(food.category!.translatedData), if (food.region != null) _chip(food.region!), ], ), diff --git a/frontend/lib/features/discover/views/ingredient_detail_screen.dart b/frontend/lib/features/discover/views/ingredient_detail_screen.dart index 91287b71..4de63203 100644 --- a/frontend/lib/features/discover/views/ingredient_detail_screen.dart +++ b/frontend/lib/features/discover/views/ingredient_detail_screen.dart @@ -1,6 +1,9 @@ import 'package:flutter/material.dart'; import '../../../core/constants/app_colors.dart'; +import '../../../core/constants/app_text_styles.dart'; +import '../../../core/i18n/api_message_translator.dart'; +import '../../../core/utils/nutrition_format.dart'; import '../models/food_models.dart'; import '../repositories/food_discovery_repository.dart'; import '../widgets/allergy_risk_badge.dart'; @@ -101,7 +104,7 @@ class _IngredientDetailScreenState extends State { const SizedBox(height: 12), Text( [ - if (item.category != null) item.category!, + if (item.category != null) item.category!.translatedData, if (item.caloriesKcal != null) '${item.caloriesKcal!.round()} kcal', if (item.unitDefault != null) item.unitDefault!, ].join(' · '), diff --git a/frontend/lib/features/gymer/models/route_approval_detail.dart b/frontend/lib/features/gymer/models/route_approval_detail.dart index 2466fc21..63654afb 100644 --- a/frontend/lib/features/gymer/models/route_approval_detail.dart +++ b/frontend/lib/features/gymer/models/route_approval_detail.dart @@ -36,9 +36,9 @@ class RouteApprovalMeal { final int? fatG; final List ingredients; - RouteApprovalMeal copyWith({bool? isCompleted}) { + RouteApprovalMeal copyWith({String? id, bool? isCompleted}) { return RouteApprovalMeal( - id: id, + id: id ?? this.id, mealType: mealType, name: name, calories: calories, @@ -126,6 +126,7 @@ class RouteApprovalDetail { required this.ptComment, required this.studentNote, required this.days, + this.mealPlanId, this.suggestedCalorieTarget, this.suggestedProteinTarget, this.configuredCalorieTarget, @@ -140,6 +141,7 @@ class RouteApprovalDetail { }); final String requestId; + final String? mealPlanId; final String requestType; final DateTime weekStartDate; final DateTime? createdAt; @@ -179,6 +181,7 @@ class RouteApprovalDetail { RouteApprovalDetail copyWith({List? days}) { return RouteApprovalDetail( requestId: requestId, + mealPlanId: mealPlanId, requestType: requestType, weekStartDate: weekStartDate, createdAt: createdAt, @@ -222,6 +225,7 @@ class RouteApprovalDetail { return RouteApprovalDetail( requestId: _string(json, 'reportId') ?? '', + mealPlanId: _string(report, 'mealPlanId'), requestType: _string(json, 'requestType') ?? _string(report, 'requestType') ?? diff --git a/frontend/lib/features/gymer/views/personal_program_detail_screen.dart b/frontend/lib/features/gymer/views/personal_program_detail_screen.dart index acd2428a..2a43f037 100644 --- a/frontend/lib/features/gymer/views/personal_program_detail_screen.dart +++ b/frontend/lib/features/gymer/views/personal_program_detail_screen.dart @@ -304,13 +304,13 @@ class _PersonalProgramDetailScreenState ), _TargetRow( icon: Icons.bakery_dining_rounded, - label: 'Carbs', + label: 'Carb', value: '${p['targetCarbsG'] ?? '?'} g', color: const Color(0xFF8D6E63), ), _TargetRow( icon: Icons.water_drop_outlined, - label: 'Fat', + label: 'Chất béo', value: '${p['targetFatG'] ?? '?'} g', color: const Color(0xFFFFA000), ), diff --git a/frontend/lib/features/gymer/views/route_approval_detail_screen.dart b/frontend/lib/features/gymer/views/route_approval_detail_screen.dart index ed280e92..9e3cd9c7 100644 --- a/frontend/lib/features/gymer/views/route_approval_detail_screen.dart +++ b/frontend/lib/features/gymer/views/route_approval_detail_screen.dart @@ -1,8 +1,10 @@ import 'package:flutter/material.dart'; import '../../../core/constants/app_colors.dart'; +import '../../../core/i18n/api_message_translator.dart'; import '../../../core/utils/meal_schedule_format.dart'; import '../../../core/utils/nutrition_format.dart'; + import '../../advanced/repositories/advanced_repository.dart'; import '../../discover/views/food_detail_screen.dart'; import '../../discover/views/recipe_detail_screen.dart'; @@ -19,6 +21,47 @@ bool isRouteMealCompleted( ) => item.isCompleted || actualMeals.any((log) => log.mealPlanItemId == item.id); +@visibleForTesting +MealPlanItemModel? resolveCurrentRouteMealItem( + RouteApprovalMeal snapshot, + UserMealPlan currentPlan, +) { + for (final item in currentPlan.items) { + if (item.id == snapshot.id) return item; + } + + final mealType = snapshot.mealType.trim().toLowerCase(); + final candidates = currentPlan.items.where((item) { + if (item.mealType.trim().toLowerCase() != mealType) return false; + if (snapshot.plannedDate != null && + item.plannedDate != null && + !DateUtils.isSameDay(snapshot.plannedDate, item.plannedDate)) { + return false; + } + if (snapshot.foodId?.isNotEmpty == true) { + return item.foodId == snapshot.foodId; + } + if (snapshot.recipeId?.isNotEmpty == true) { + return item.recipeId == snapshot.recipeId; + } + return item.displayName.trim().toLowerCase() == + snapshot.name.trim().toLowerCase(); + }).toList(); + + if (candidates.length == 1) return candidates.single; + if (snapshot.scheduledTime?.isNotEmpty == true) { + final rawScheduled = snapshot.scheduledTime!; + final scheduled = rawScheduled.length > 5 + ? rawScheduled.substring(0, 5) + : rawScheduled; + for (final item in candidates) { + final currentTime = item.scheduledTime ?? ''; + if (currentTime.startsWith(scheduled)) return item; + } + } + return candidates.isEmpty ? null : candidates.first; +} + String _configurationScope(RouteApprovalDetail detail) => RouteApprovalPeriod.normalizeScope( requestType: detail.requestType, @@ -70,6 +113,7 @@ class _RouteApprovalDetailScreenState extends State { String? _error; bool _loading = true; final Set _updatingMealIds = {}; + final MealPlanRepository _mealPlanRepository = MealPlanRepository(); @override void initState() { @@ -115,10 +159,19 @@ class _RouteApprovalDetailScreenState extends State { final dates = _datesToDisplay(detail); if (dates.isEmpty) return detail; - final plansFuture = Future.wait(dates.map(MealPlanRepository().getByDate)); + // Route-approval reports contain a frozen meal snapshot. Always resolve the + // exact referenced plan first so a PT edit/approval cannot keep displaying + // the old total (for example 1845 instead of the current 2000 kcal). + final exactPlanFuture = detail.mealPlanId?.trim().isNotEmpty == true + ? _mealPlanRepository.getPlanDetail(detail.mealPlanId!) + : Future.value(null); + final plansFuture = Future.wait( + dates.map(_mealPlanRepository.getByDateFresh), + ); final actualMealsFuture = Future.wait( dates.map(NutritionTrackingRepository().getDailySummary), ); + final exactPlan = await exactPlanFuture; final plans = await plansFuture; final actualMealsByDay = await actualMealsFuture; final snapshotDays = { @@ -130,7 +183,52 @@ class _RouteApprovalDetailScreenState extends State { final date = dates[index]; final plan = plans[index]; final actualMeals = actualMealsByDay[index]?.mealLogs ?? const []; - if (plan != null && plan.items.isNotEmpty) { + final exactItems = + exactPlan?.items.where((item) { + if (item.plannedDate == null) return dates.length == 1; + return _dateKey(item.plannedDate!) == _dateKey(date); + }).toList() ?? + const []; + if (exactItems.isNotEmpty) { + resolvedDays.add( + RouteApprovalDay( + date: date, + meals: exactItems + .map( + (item) => RouteApprovalMeal( + id: item.id, + mealType: item.mealType ?? 'snack', + name: + (item.foodName ?? + item.recipeName ?? + item.customName ?? + '') + .trim() + .isNotEmpty + ? (item.foodName ?? item.recipeName ?? item.customName)! + : 'Món trong kế hoạch', + calories: item.targetCalories ?? 0, + isCompleted: + item.isCompleted || + actualMeals.any((log) => log.mealPlanItemId == item.id), + foodId: item.foodId, + recipeId: item.recipeId, + plannedDate: item.plannedDate ?? date, + scheduledTime: item.scheduledTime == null + ? null + : '${item.scheduledTime!.hour.toString().padLeft(2, '0')}:' + '${item.scheduledTime!.minute.toString().padLeft(2, '0')}', + quantityG: item.quantityG, + proteinG: item.proteinG, + carbsG: item.carbsG, + fatG: item.fatG, + ingredients: item.ingredients, + ), + ) + .toList(), + ), + ); + } else if (plan != null && plan.items.isNotEmpty) { resolvedDays.add( RouteApprovalDay( date: date, @@ -199,7 +297,20 @@ class _RouteApprovalDetailScreenState extends State { if (meal.id.isEmpty || _updatingMealIds.contains(meal.id)) return; setState(() => _updatingMealIds.add(meal.id)); try { - await MealPlanRepository().toggleItem(meal.id, value); + var currentItemId = meal.id; + if (meal.plannedDate != null) { + final currentPlan = await _mealPlanRepository.getByDateFresh( + meal.plannedDate!, + ); + if (currentPlan != null) { + final currentItem = resolveCurrentRouteMealItem(meal, currentPlan); + if (currentItem == null) { + throw Exception('Meal plan item not found.'); + } + currentItemId = currentItem.id; + } + } + await _mealPlanRepository.toggleItem(currentItemId, value); if (!mounted || _detail == null) return; setState(() { _detail = _detail!.copyWith( @@ -210,7 +321,10 @@ class _RouteApprovalDetailScreenState extends State { meals: day.meals .map( (item) => item.id == meal.id - ? item.copyWith(isCompleted: value) + ? item.copyWith( + id: currentItemId, + isCompleted: value, + ) : item, ) .toList(), @@ -641,7 +755,7 @@ class _SummaryCard extends StatelessWidget { Expanded( child: _MacroCard( icon: Icons.bakery_dining_rounded, - label: 'Carbs', + label: 'Carb', value: '${detail.targetCarbsG} g', bgColor: AppColors.primary.withValues( alpha: 0.05, @@ -658,7 +772,7 @@ class _SummaryCard extends StatelessWidget { Expanded( child: _MacroCard( icon: Icons.water_drop_outlined, - label: 'Fat', + label: 'Chất béo', value: '${detail.targetFatG} g', bgColor: AppColors.primary.withValues( alpha: 0.08, @@ -824,7 +938,7 @@ class _StatusInfoRow extends StatelessWidget { const Color(0xFFFECACA), ), _ => ( - status, + status.translatedData, const Color(0xFFF3F4F6), AppColors.textSecondary, const Color(0xFFE5E7EB), diff --git a/frontend/lib/features/gymer/widgets/route_approval_card.dart b/frontend/lib/features/gymer/widgets/route_approval_card.dart index 4602758a..9da325eb 100644 --- a/frontend/lib/features/gymer/widgets/route_approval_card.dart +++ b/frontend/lib/features/gymer/widgets/route_approval_card.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import '../../../core/constants/app_colors.dart'; +import '../../../core/i18n/api_message_translator.dart'; import '../utils/personal_program_period.dart'; import '../utils/route_approval_period.dart'; @@ -422,7 +423,7 @@ class _StatusChip extends StatelessWidget { const Color(0xFFFECACA), ), _ => ( - status, + status.translatedData, const Color(0xFFF3F4F6), AppColors.textSecondary, const Color(0xFFE5E7EB), diff --git a/frontend/lib/features/history/models/history_models.dart b/frontend/lib/features/history/models/history_models.dart index 029d6a6b..73c9d0fa 100644 --- a/frontend/lib/features/history/models/history_models.dart +++ b/frontend/lib/features/history/models/history_models.dart @@ -35,6 +35,7 @@ class HistoryMealEntry { this.foodId, this.recipeId, this.isRecipe = false, + this.isIngredient = false, this.ingredients = const [], }); @@ -49,8 +50,11 @@ class HistoryMealEntry { final String? foodId; final String? recipeId; final bool isRecipe; + final bool isIngredient; final List ingredients; + String get entryTypeLabel => isIngredient ? 'Nguyên liệu' : 'Món ăn'; + bool get canOpenDetail { bool valid(String? value) { if (value == null) return false; diff --git a/frontend/lib/features/history/views/history_view.dart b/frontend/lib/features/history/views/history_view.dart index d485e8e9..8bb68ba3 100644 --- a/frontend/lib/features/history/views/history_view.dart +++ b/frontend/lib/features/history/views/history_view.dart @@ -232,6 +232,7 @@ class HistoryViewState extends State { foodId: item.foodId, recipeId: item.recipeId, isRecipe: item.isRecipe, + isIngredient: item.isIngredient, ingredients: item.ingredients, ), ) @@ -1662,9 +1663,15 @@ class _MealCard extends StatelessWidget { height: 54, color: const Color(0xFFF1F5F9), ), - errorWidget: (_, _, _) => _imagePlaceholder(), + errorWidget: (_, _, _) => _imagePlaceholder( + isRecipe: meal.isRecipe, + isIngredient: meal.isIngredient, + ), ) - : _imagePlaceholder(meal.isRecipe), + : _imagePlaceholder( + isRecipe: meal.isRecipe, + isIngredient: meal.isIngredient, + ), ), const SizedBox(width: 12), Expanded( @@ -1680,8 +1687,33 @@ class _MealCard extends StatelessWidget { ), ), const SizedBox(height: 5), - Row( + Wrap( + crossAxisAlignment: WrapCrossAlignment.center, + spacing: 6, + runSpacing: 5, children: [ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 3, + ), + decoration: BoxDecoration( + color: meal.isIngredient + ? const Color(0xFFFFF7ED) + : const Color(0xFFECFDF5), + borderRadius: BorderRadius.circular(8), + ), + child: Text( + meal.entryTypeLabel, + style: TextStyle( + fontSize: 11.5, + fontWeight: FontWeight.w700, + color: meal.isIngredient + ? const Color(0xFFC2410C) + : AppColors.primary, + ), + ), + ), Container( padding: const EdgeInsets.symmetric( horizontal: 8, @@ -1700,7 +1732,6 @@ class _MealCard extends StatelessWidget { ), ), ), - const SizedBox(width: 6), Text( meal.portion, style: const TextStyle( @@ -1801,13 +1832,15 @@ class _MealCard extends StatelessWidget { ); } - Widget _imagePlaceholder([bool isRecipe = false]) { + Widget _imagePlaceholder({bool isRecipe = false, bool isIngredient = false}) { return Container( width: 54, height: 54, decoration: BoxDecoration( gradient: LinearGradient( - colors: isRecipe + colors: isIngredient + ? [const Color(0xFFFFF7ED), const Color(0xFFFFEDD5)] + : isRecipe ? [const Color(0xFFEEF2FF), const Color(0xFFE0E7FF)] : [const Color(0xFFECFDF5), const Color(0xFFD1FAE5)], begin: Alignment.topLeft, @@ -1815,8 +1848,16 @@ class _MealCard extends StatelessWidget { ), ), child: Icon( - isRecipe ? Icons.menu_book_rounded : Icons.restaurant_rounded, - color: isRecipe ? const Color(0xFF4F46E5) : AppColors.primary, + isIngredient + ? Icons.eco_outlined + : isRecipe + ? Icons.menu_book_rounded + : Icons.restaurant_rounded, + color: isIngredient + ? const Color(0xFFC2410C) + : isRecipe + ? const Color(0xFF4F46E5) + : AppColors.primary, size: 24, ), ); diff --git a/frontend/lib/features/home/widgets/home_calorie_section.dart b/frontend/lib/features/home/widgets/home_calorie_section.dart index ba7edca4..02462bca 100644 --- a/frontend/lib/features/home/widgets/home_calorie_section.dart +++ b/frontend/lib/features/home/widgets/home_calorie_section.dart @@ -207,7 +207,7 @@ class HomeCalorieSection extends StatelessWidget { ), SizedBox(height: macroRowSpacing), _MacroRow( - label: 'Carbs', + label: 'Carb', current: carbs, target: targetCarbs, color: const Color(0xFFF59E0B), // Warm Amber diff --git a/frontend/lib/features/home/widgets/home_search_sheet.dart b/frontend/lib/features/home/widgets/home_search_sheet.dart index e8bf3247..4b6873b8 100644 --- a/frontend/lib/features/home/widgets/home_search_sheet.dart +++ b/frontend/lib/features/home/widgets/home_search_sheet.dart @@ -135,6 +135,8 @@ class _HomeSearchSheetState extends State { 'adherence', 'adherence score', 'diem', + 'tuan thu', + 'tuân thủ', ], onTap: () { Navigator.pop(context); diff --git a/frontend/lib/features/main/views/main_screen.dart b/frontend/lib/features/main/views/main_screen.dart index 558f4ee5..b3bea97c 100644 --- a/frontend/lib/features/main/views/main_screen.dart +++ b/frontend/lib/features/main/views/main_screen.dart @@ -12,7 +12,9 @@ import '../../meal_plan/views/smart_meal_plan_router_screen.dart'; import '../../../core/services/push_notification_provider.dart'; class MainScreen extends StatefulWidget { - const MainScreen({super.key}); + const MainScreen({super.key, this.initialIndex = 2}); + + final int initialIndex; @override State createState() => _MainScreenState(); @@ -24,18 +26,18 @@ class _MainScreenState extends State { static const _historyTab = 3; static const _profileTab = 4; - int _currentIndex = _homeTab; + late int _currentIndex; final _homeKey = GlobalKey(); final _discoverKey = GlobalKey(); final _historyKey = GlobalKey(); DateTime? _lastHomeRefreshAt; - DateTime? _lastHistoryRefreshAt; late final List _pages; @override void initState() { super.initState(); + _currentIndex = widget.initialIndex.clamp(0, 4).toInt(); _pages = [ DiscoverView(key: _discoverKey), const SmartMealPlanRouterScreen(), @@ -51,7 +53,9 @@ class _MainScreenState extends State { key: _historyKey, onTrackingUpdated: () => _homeKey.currentState?.reloadSummary(), ), - ProfileView(onProfileUpdated: () => _homeKey.currentState?.refreshHeader()), + ProfileView( + onProfileUpdated: () => _homeKey.currentState?.refreshHeader(), + ), ]; unawaited(_initPushNotifications()); } @@ -79,14 +83,7 @@ class _MainScreenState extends State { } } - void _refreshHistoryIfStale() { - final last = _lastHistoryRefreshAt; - final now = DateTime.now(); - if (last == null || now.difference(last) > const Duration(seconds: 30)) { - _lastHistoryRefreshAt = now; - _historyKey.currentState?.reloadData(); - } - } + void _refreshHistory() => _historyKey.currentState?.reloadData(); void _selectTab(int index) { if (index < _discoverTab || index > _profileTab) return; @@ -98,7 +95,7 @@ class _MainScreenState extends State { } else if (index == _discoverTab) { _discoverKey.currentState?.refreshAllergyStatus(); } else if (index == _historyTab) { - _refreshHistoryIfStale(); + _refreshHistory(); } } @@ -111,10 +108,7 @@ class _MainScreenState extends State { children: [ _buildNavigationRail(), Expanded( - child: IndexedStack( - index: _currentIndex, - children: _pages, - ), + child: IndexedStack(index: _currentIndex, children: _pages), ), ], ) @@ -238,7 +232,12 @@ class _MainScreenState extends State { List _buildNavItems() { return [ _buildNavItem(Icons.explore_outlined, Icons.explore, 'Khám phá', 0), - _buildNavItem(Icons.restaurant_menu_outlined, Icons.restaurant_menu, 'Kế hoạch', 1), + _buildNavItem( + Icons.restaurant_menu_outlined, + Icons.restaurant_menu, + 'Kế hoạch', + 1, + ), _buildNavHomeItem(), _buildNavItem(Icons.history_outlined, Icons.history, 'Lịch sử', 3), _buildNavItem(Icons.person_outline, Icons.person, 'Cá nhân', 4), @@ -246,16 +245,14 @@ class _MainScreenState extends State { } BottomNavigationBarItem _buildNavItem( - IconData icon, IconData activeIcon, String label, int index) { + IconData icon, + IconData activeIcon, + String label, + int index, + ) { return BottomNavigationBarItem( - icon: SizedBox( - height: 44, - child: Icon(icon, size: 24), - ), - activeIcon: SizedBox( - height: 44, - child: Icon(activeIcon, size: 24), - ), + icon: SizedBox(height: 44, child: Icon(icon, size: 24)), + activeIcon: SizedBox(height: 44, child: Icon(activeIcon, size: 24)), label: label, ); } @@ -317,8 +314,18 @@ class _MainScreenState extends State { List _buildNavDrawerItems() { final items = [ - const _NavDrawerItem(Icons.explore_outlined, Icons.explore, 'Khám phá', 0), - const _NavDrawerItem(Icons.restaurant_menu_outlined, Icons.restaurant_menu, 'Kế hoạch', 1), + const _NavDrawerItem( + Icons.explore_outlined, + Icons.explore, + 'Khám phá', + 0, + ), + const _NavDrawerItem( + Icons.restaurant_menu_outlined, + Icons.restaurant_menu, + 'Kế hoạch', + 1, + ), const _NavDrawerItem(Icons.home_outlined, Icons.home, 'Trang chủ', 2), const _NavDrawerItem(Icons.history_outlined, Icons.history, 'Lịch sử', 3), const _NavDrawerItem(Icons.person_outline, Icons.person, 'Cá nhân', 4), @@ -348,7 +355,6 @@ class _MainScreenState extends State { ); }).toList(); } - } class _NavDrawerItem { diff --git a/frontend/lib/features/meal_plan/providers/meal_plan_provider.dart b/frontend/lib/features/meal_plan/providers/meal_plan_provider.dart index bcc00a91..e2d80c3b 100644 --- a/frontend/lib/features/meal_plan/providers/meal_plan_provider.dart +++ b/frontend/lib/features/meal_plan/providers/meal_plan_provider.dart @@ -11,13 +11,16 @@ import '../../../core/network/network_connectivity_service.dart'; /// State management cho Meal Plan class MealPlanProvider extends ChangeNotifier { - MealPlanProvider() { - _reconnectSub = NetworkConnectivityService.instance.onReconnected.listen((_) { + MealPlanProvider({MealPlanRepository? repository}) + : _repository = repository ?? MealPlanRepository() { + _reconnectSub = NetworkConnectivityService.instance.onReconnected.listen(( + _, + ) { refreshOnReconnected(); }); } - final MealPlanRepository _repository = MealPlanRepository(); + final MealPlanRepository _repository; StreamSubscription? _reconnectSub; // Disposed flag to prevent state updates after disposal @@ -190,6 +193,13 @@ class MealPlanProvider extends ChangeNotifier { _safeNotify(); } + /// Refreshes immediately after Lucky Wheel, Daily Starter, or Emotion + /// features mutate today's plan through a different repository instance. + Future refreshAfterExternalMutation() async { + _repository.invalidateCache(); + await loadAllForHome(); + } + // ==================== CRUD Operations ==================== /// Tạo plan mới @@ -447,10 +457,7 @@ class MealPlanProvider extends ChangeNotifier { final pendingIds = pendingItems.map((i) => i.id).toSet(); final newItems = _todayDashboard!.plannedItems.map((item) { if (pendingIds.contains(item.id)) { - return item.copyWith( - isCompleted: true, - status: 'done', - ); + return item.copyWith(isCompleted: true, status: 'done'); } return item; }).toList(); diff --git a/frontend/lib/features/meal_plan/repositories/meal_plan_repository.dart b/frontend/lib/features/meal_plan/repositories/meal_plan_repository.dart index eca8fc2d..5e1cd414 100644 --- a/frontend/lib/features/meal_plan/repositories/meal_plan_repository.dart +++ b/frontend/lib/features/meal_plan/repositories/meal_plan_repository.dart @@ -48,15 +48,35 @@ class MealPlanRepository { _dashboardCacheTime = null; } + /// Clears cached plan data after a mutation performed by another feature. + void invalidateCache() => _invalidateCache(); + // ==================== User Meal Plan (Daily) ==================== Future getByDate(DateTime date) async { + return _getByDate(date, forceRefresh: false); + } + + /// Reloads the effective plan from the database-facing API. Use this before + /// mutations that require a current item ID, because daily plans can be + /// regenerated while an approval snapshot is still open on screen. + Future getByDateFresh(DateTime date) async { + return _getByDate(date, forceRefresh: true); + } + + Future _getByDate( + DateTime date, { + required bool forceRefresh, + }) async { // Check cache for today's data final now = DateTime.now(); final today = DateTime(now.year, now.month, now.day); final queryDate = DateTime(date.year, date.month, date.day); - if (queryDate == today && _todayCache != null && _todayCacheTime != null) { + if (!forceRefresh && + queryDate == today && + _todayCache != null && + _todayCacheTime != null) { if (now.difference(_todayCacheTime!) < _todayCacheDuration) { return _todayCache; } @@ -64,7 +84,8 @@ class MealPlanRepository { try { final response = await _api.get( - '${ApiEndpoints.userMealPlans}?date=${_dateQuery(date)}', + '${ApiEndpoints.userMealPlans}?date=${_dateQuery(date)}' + '${forceRefresh ? '&refresh=true' : ''}', ); if (response.statusCode == 404) return null; if (response.statusCode != 200 || response.body.isEmpty) return null; @@ -357,12 +378,14 @@ class MealPlanRepository { required DateTime plannedDate, required int targetCalories, required List itemIds, + bool preservePlanTarget = false, }) async { final response = await _api .postJson(ApiEndpoints.mealPlanBalanceCalories(planId), { 'plannedDate': _dateQuery(plannedDate), 'targetCalories': targetCalories, 'itemIds': itemIds, + 'preservePlanTarget': preservePlanTarget, }); if (response.statusCode != 200) { throw Exception(_messageFromResponse(response)); diff --git a/frontend/lib/features/meal_plan/utils/fresh_meal_plan_navigation.dart b/frontend/lib/features/meal_plan/utils/fresh_meal_plan_navigation.dart new file mode 100644 index 00000000..1c119e83 --- /dev/null +++ b/frontend/lib/features/meal_plan/utils/fresh_meal_plan_navigation.dart @@ -0,0 +1,16 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import '../../main/views/main_screen.dart'; +import '../providers/meal_plan_provider.dart'; + +/// Reloads server-backed plan data before opening the Meal Plan tab. +Future openFreshMealPlan(BuildContext context) async { + await context.read().refreshAfterExternalMutation(); + if (!context.mounted) return; + + Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute(builder: (_) => const MainScreen(initialIndex: 1)), + (route) => false, + ); +} diff --git a/frontend/lib/features/meal_plan/views/create_meal_plan_screen.dart b/frontend/lib/features/meal_plan/views/create_meal_plan_screen.dart index e197deac..bf58f267 100644 --- a/frontend/lib/features/meal_plan/views/create_meal_plan_screen.dart +++ b/frontend/lib/features/meal_plan/views/create_meal_plan_screen.dart @@ -508,10 +508,10 @@ class _CreateMealPlanScreenState extends State { style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), ), const SizedBox(height: 12), - _buildSummaryRow('Calories', '$_targetCalories kcal/ngày'), + _buildSummaryRow('Calo', '$_targetCalories kcal/ngày'), _buildSummaryRow('Protein', '$_targetProteinG g'), - _buildSummaryRow('Carbs', '$_targetCarbsG g'), - _buildSummaryRow('Fat', '$_targetFatG g'), + _buildSummaryRow('Carb', '$_targetCarbsG g'), + _buildSummaryRow('Chất béo', '$_targetFatG g'), ], ), ), diff --git a/frontend/lib/features/meal_plan/views/meal_plan_calendar_screen.dart b/frontend/lib/features/meal_plan/views/meal_plan_calendar_screen.dart index bf5d52c6..4505bcfa 100644 --- a/frontend/lib/features/meal_plan/views/meal_plan_calendar_screen.dart +++ b/frontend/lib/features/meal_plan/views/meal_plan_calendar_screen.dart @@ -24,11 +24,11 @@ class _MealPlanCalendarScreenState extends State { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( - title: const Text('Lich ke hoach'), + title: const Text('Lịch kế hoạch'), actions: [ TextButton( onPressed: _goToToday, - child: const Text('Hom nay'), + child: const Text('Hôm nay'), ), ], ), @@ -171,7 +171,7 @@ class _MealPlanCalendarScreenState extends State { _buildLegendItem('>=80%', Colors.green), _buildLegendItem('50-80%', Colors.orange), _buildLegendItem('<50%', Colors.red), - _buildLegendItem('Chua co', Colors.grey), + _buildLegendItem('Chưa có', Colors.grey), ], ), ), @@ -303,7 +303,7 @@ class _MealPlanCalendarScreenState extends State { Expanded( child: _buildStatCard( icon: Icons.check_circle, - label: 'Bua an', + label: 'Bữa ăn', value: '${summary.completedMeals}/${summary.totalMeals}', color: Colors.green, ), @@ -312,7 +312,7 @@ class _MealPlanCalendarScreenState extends State { Expanded( child: _buildStatCard( icon: Icons.trending_up, - label: 'Adherence', + label: 'Tuân thủ', value: '${(summary.adherencePercent * 100).toStringAsFixed(0)}%', color: AppColors.primary, ), @@ -331,7 +331,7 @@ class _MealPlanCalendarScreenState extends State { ), const SizedBox(height: 8), const Text( - 'Chua co du lieu cho ngay nay', + 'Chưa có dữ liệu cho ngày này', style: TextStyle(color: AppColors.textSecondary), ), ], @@ -347,7 +347,7 @@ class _MealPlanCalendarScreenState extends State { backgroundColor: AppColors.primary, padding: const EdgeInsets.symmetric(vertical: 12), ), - child: const Text('Xem chi tiet'), + child: const Text('Xem chi tiết'), ), ), ], @@ -392,11 +392,11 @@ class _MealPlanCalendarScreenState extends State { } String _getDaySummaryText(DayPlanSummary? summary) { - if (summary == null) return 'Khong co ke hoach'; - if (summary.adherencePercent >= 0.8) return 'Hoan thanh tot'; - if (summary.adherencePercent >= 0.5) return 'Can cai thien'; - if (summary.adherencePercent > 0) return 'Chua dat muc tieu'; - return 'Chua co du lieu'; + if (summary == null) return 'Không có kế hoạch'; + if (summary.adherencePercent >= 0.8) return 'Hoàn thành tốt'; + if (summary.adherencePercent >= 0.5) return 'Cần cải thiện'; + if (summary.adherencePercent > 0) return 'Chưa đạt mục tiêu'; + return 'Chưa có dữ liệu'; } Color _getSummaryColor(DayPlanSummary? summary) { @@ -411,7 +411,7 @@ class _MealPlanCalendarScreenState extends State { final plans = provider.plans; if (plans.isEmpty) { ScaffoldMessenger.of(context).showSnackBar( - const SnackBar(content: Text('Khong co ke hoach nao')), + const SnackBar(content: Text('Không có kế hoạch nào')), ); return; } @@ -434,15 +434,15 @@ class _MealPlanCalendarScreenState extends State { String _formatMonth(DateTime date) { const months = [ - 'Thang 1', 'Thang 2', 'Thang 3', 'Thang 4', - 'Thang 5', 'Thang 6', 'Thang 7', 'Thang 8', - 'Thang 9', 'Thang 10', 'Thang 11', 'Thang 12' + 'Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', + 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', + 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12' ]; return '${months[date.month - 1]} ${date.year}'; } String _formatDate(DateTime date) { - const weekdays = ['Thu 2', 'Thu 3', 'Thu 4', 'Thu 5', 'Thu 6', 'Thu 7', 'Chu nhat']; + const weekdays = ['Thứ 2', 'Thứ 3', 'Thứ 4', 'Thứ 5', 'Thứ 6', 'Thứ 7', 'Chủ nhật']; return '${weekdays[date.weekday - 1]}, ${date.day.toString().padLeft(2, '0')}/${date.month.toString().padLeft(2, '0')}/${date.year}'; } diff --git a/frontend/lib/features/meal_plan/views/meal_plan_detail_screen.dart b/frontend/lib/features/meal_plan/views/meal_plan_detail_screen.dart index ac407018..f5371c8f 100644 --- a/frontend/lib/features/meal_plan/views/meal_plan_detail_screen.dart +++ b/frontend/lib/features/meal_plan/views/meal_plan_detail_screen.dart @@ -303,7 +303,7 @@ class _MealPlanDetailScreenState extends State { ), const SizedBox(height: 16), MacroProgressBar( - label: 'KCAL', + label: 'Calo', current: plan.totalCalories, target: calorieTarget, unit: 'kcal', @@ -311,7 +311,7 @@ class _MealPlanDetailScreenState extends State { ), const SizedBox(height: 12), MacroProgressBar( - label: 'PROTEIN', + label: 'Protein', current: plan.totalProteinG, target: plan.targetProtein ?? 840, unit: 'g', @@ -319,7 +319,7 @@ class _MealPlanDetailScreenState extends State { ), const SizedBox(height: 12), MacroProgressBar( - label: 'CARBS', + label: 'Carb', current: plan.totalCarbsG, target: plan.targetCarbs ?? 1750, unit: 'g', @@ -327,7 +327,7 @@ class _MealPlanDetailScreenState extends State { ), const SizedBox(height: 12), MacroProgressBar( - label: 'FAT', + label: 'Chất béo', current: plan.totalFatG, target: plan.targetFat ?? 420, unit: 'g', diff --git a/frontend/lib/features/meal_plan/widgets/calorie_progress_ring.dart b/frontend/lib/features/meal_plan/widgets/calorie_progress_ring.dart index 4be8cebd..2fdc9cc2 100644 --- a/frontend/lib/features/meal_plan/widgets/calorie_progress_ring.dart +++ b/frontend/lib/features/meal_plan/widgets/calorie_progress_ring.dart @@ -358,21 +358,21 @@ class TodayCaloriesCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ _MacroChip( - label: 'PROTEIN', + label: 'Protein', current: protein, target: proteinTarget, color: Colors.blue, ), const SizedBox(height: 8), _MacroChip( - label: 'CARBS', + label: 'Carb', current: carbs, target: carbsTarget, color: Colors.orange, ), const SizedBox(height: 8), _MacroChip( - label: 'FAT', + label: 'Chất béo', current: fat, target: fatTarget, color: Colors.purple, diff --git a/frontend/lib/features/meal_templates/views/meal_template_editor_part.dart b/frontend/lib/features/meal_templates/views/meal_template_editor_part.dart index 441f76c1..36dc645d 100644 --- a/frontend/lib/features/meal_templates/views/meal_template_editor_part.dart +++ b/frontend/lib/features/meal_templates/views/meal_template_editor_part.dart @@ -18,6 +18,7 @@ class _MealTemplateEditorScreenState extends State { final List _items = []; var _saving = false; var _loadingPreset = false; + var _loadingDetails = false; @override void initState() { @@ -26,6 +27,7 @@ class _MealTemplateEditorScreenState extends State { if (template != null) { _titleController.text = template.title; _descriptionController.text = template.description ?? ''; + _loadingDetails = true; _loadDetails(template.id); } } @@ -56,7 +58,7 @@ class _MealTemplateEditorScreenState extends State { recipeId: item.recipeId, customName: item.customName, sourceType: item.sourceType, - mealType: item.mealType ?? template.mealType ?? 'Snack', + mealType: _itemMealType(item, template), label: label, quantityG: item.quantityG, notes: item.notes, @@ -69,7 +71,16 @@ class _MealTemplateEditorScreenState extends State { }), ); }); - } catch (_) {} + } catch (error) { + if (mounted) { + _showEditorMessage( + 'Không thể tải các món trong thực đơn. ${error.toString().replaceFirst('Exception: ', '')}', + error: true, + ); + } + } finally { + if (mounted) setState(() => _loadingDetails = false); + } } Future _choosePreset() async { @@ -282,18 +293,24 @@ class _MealTemplateEditorScreenState extends State { style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), ), const SizedBox(height: 8), - ..._mealTypes.map( - (type) => _MealTypeEditorSection( - mealType: type, - items: _items, - onAdd: () => _addItem(type), - onEdit: _editItem, - onRemove: (index) => setState(() => _items.removeAt(index)), + if (_loadingDetails) + const Padding( + padding: EdgeInsets.symmetric(vertical: 32), + child: Center(child: CircularProgressIndicator()), + ) + else + ..._mealTypes.map( + (type) => _MealTypeEditorSection( + mealType: type, + items: _items, + onAdd: () => _addItem(type), + onEdit: _editItem, + onRemove: (index) => setState(() => _items.removeAt(index)), + ), ), - ), const SizedBox(height: 24), FilledButton( - onPressed: _saving ? null : _save, + onPressed: _saving || _loadingDetails ? null : _save, child: Text(_saving ? 'Đang lưu...' : 'Lưu thực đơn'), ), ], diff --git a/frontend/lib/features/micro_learning/models/micro_learning_models.dart b/frontend/lib/features/micro_learning/models/micro_learning_models.dart index ff957c25..bd97573e 100644 --- a/frontend/lib/features/micro_learning/models/micro_learning_models.dart +++ b/frontend/lib/features/micro_learning/models/micro_learning_models.dart @@ -32,7 +32,9 @@ class MicroLearningCard { final int? selectedQuizOption; bool get hasQuiz => - quizQuestion != null && quizQuestion!.trim().isNotEmpty && quizOptions.isNotEmpty; + quizQuestion != null && + quizQuestion!.trim().isNotEmpty && + quizOptions.isNotEmpty; MicroLearningCard copyWith({ bool? isSaved, @@ -60,15 +62,17 @@ class MicroLearningCard { } factory MicroLearningCard.fromJson(Map json) { - String text(String key) => (json[key] ?? json[_pascal(key)] ?? '').toString(); - int number(String key) => - (json[key] ?? json[_pascal(key)]) is num - ? ((json[key] ?? json[_pascal(key)]) as num).toInt() - : int.tryParse(text(key)) ?? 0; + String text(String key) => + (json[key] ?? json[_pascal(key)] ?? '').toString(); + int number(String key) => (json[key] ?? json[_pascal(key)]) is num + ? ((json[key] ?? json[_pascal(key)]) as num).toInt() + : int.tryParse(text(key)) ?? 0; bool flag(String key) => (json[key] ?? json[_pascal(key)]) == true; List strings(String key) { final raw = json[key] ?? json[_pascal(key)]; - return raw is List ? raw.map((item) => item.toString()).toList() : const []; + return raw is List + ? raw.map((item) => item.toString()).toList() + : const []; } final quizCorrect = json['isQuizCorrect'] ?? json['IsQuizCorrect']; @@ -87,7 +91,9 @@ class MicroLearningCard { isRead: flag('isRead'), isQuizCompleted: flag('isQuizCompleted'), isQuizCorrect: quizCorrect is bool ? quizCorrect : null, - selectedQuizOption: _intOrNull(json['selectedQuizOption'] ?? json['SelectedQuizOption']), + selectedQuizOption: _intOrNull( + json['selectedQuizOption'] ?? json['SelectedQuizOption'], + ), ); } } @@ -111,8 +117,10 @@ class MicroLearningCategory { final total = json['totalCards'] ?? json['TotalCards']; return MicroLearningCategory( name: (json['name'] ?? json['Name'] ?? '').toString(), - displayName: (json['displayName'] ?? json['DisplayName'] ?? '').toString(), - description: (json['description'] ?? json['Description'] ?? '').toString(), + displayName: (json['displayName'] ?? json['DisplayName'] ?? '') + .toString(), + description: (json['description'] ?? json['Description'] ?? '') + .toString(), icon: (json['icon'] ?? json['Icon'] ?? '').toString(), totalCards: total is num ? total.toInt() : int.tryParse('$total') ?? 0, ); @@ -147,14 +155,16 @@ class QuizSubmitResult { } } -String _pascal(String value) => '${value[0].toUpperCase()}${value.substring(1)}'; +String _pascal(String value) => + '${value[0].toUpperCase()}${value.substring(1)}'; String? _nullable(dynamic value) { final text = value?.toString().trim(); return text == null || text.isEmpty || text == 'null' ? null : text; } -int? _intOrNull(dynamic value) => value is num ? value.toInt() : int.tryParse('$value'); +int? _intOrNull(dynamic value) => + value is num ? value.toInt() : int.tryParse('$value'); class FoodMoodItem { const FoodMoodItem({ @@ -196,7 +206,8 @@ class FoodMoodItem { carbsG: 28.0, fatG: 5.5, estimatedPriceVnd: 45000, - description: 'Hạt sen dưỡng tâm an thần, kết hợp đạm gà dễ tiêu hóa.', + description: + 'Hạt sen dưỡng tâm an thần, kết hợp đạm gà dễ tiêu hóa.', ), RescueFood( name: 'Salad bơ quả mộng & ức gà', @@ -214,7 +225,8 @@ class FoodMoodItem { carbsG: 35.0, fatG: 3.0, estimatedPriceVnd: 25000, - description: 'Chuối giàu Tryptophan - tiền chất sản sinh Serotonin vui vẻ.', + description: + 'Chuối giàu Tryptophan - tiền chất sản sinh Serotonin vui vẻ.', ), ], ), @@ -235,7 +247,8 @@ class FoodMoodItem { carbsG: 22.0, fatG: 9.0, estimatedPriceVnd: 30000, - description: 'Chất xơ Pectin giải phóng năng lượng bền bỉ cả buổi chiều.', + description: + 'Chất xơ Pectin giải phóng năng lượng bền bỉ cả buổi chiều.', ), RescueFood( name: 'Trà xanh lạnh không đường & Chanh', @@ -244,7 +257,8 @@ class FoodMoodItem { carbsG: 3.0, fatG: 0.0, estimatedPriceVnd: 15000, - description: 'L-theanine trong trà xanh giúp tỉnh táo và tập trung cao.', + description: + 'L-theanine trong trà xanh giúp tỉnh táo và tập trung cao.', ), RescueFood( name: 'Sữa chua Kép hạt chia & Việt quất', @@ -253,7 +267,8 @@ class FoodMoodItem { carbsG: 16.0, fatG: 4.5, estimatedPriceVnd: 35000, - description: 'Probiotics giúp tiêu hóa nhẹ bụng, đẩy lùi cảm giác nặng nề.', + description: + 'Probiotics giúp tiêu hóa nhẹ bụng, đẩy lùi cảm giác nặng nề.', ), ], ), @@ -283,7 +298,8 @@ class FoodMoodItem { carbsG: 15.0, fatG: 11.0, estimatedPriceVnd: 30000, - description: 'Giàu Polyphenol chống oxy hóa và xoa dịu cơn thèm đường.', + description: + 'Giàu Polyphenol chống oxy hóa và xoa dịu cơn thèm đường.', ), RescueFood( name: 'Chè hạt sen nhãn nhục ít đường', @@ -313,7 +329,8 @@ class FoodMoodItem { carbsG: 40.0, fatG: 5.0, estimatedPriceVnd: 50000, - description: 'Tỷ lệ Đạm - Tinh bột chuẩn tối ưu cho sự phát triển cơ.', + description: + 'Tỷ lệ Đạm - Tinh bột chuẩn tối ưu cho sự phát triển cơ.', ), RescueFood( name: 'Sinh tố Whey Protein & Chuối', @@ -352,7 +369,8 @@ class FoodMoodItem { carbsG: 38.0, fatG: 4.5, estimatedPriceVnd: 35000, - description: 'Gừng tươi làm ấm bụng, giải cảm và êm dịu đường ruột.', + description: + 'Gừng tươi làm ấm bụng, giải cảm và êm dịu đường ruột.', ), RescueFood( name: 'Canh cua đồng rau đét & Cà muối', @@ -398,4 +416,14 @@ class RescueFood { final int estimatedPriceVnd; final String description; final String? imageUrl; + + Map toPlanMealJson(String mealType) => { + 'mealType': mealType, + 'customName': name, + 'quantityG': 100, + 'caloriesKcal': caloriesKcal, + 'proteinG': proteinG, + 'carbsG': carbsG, + 'fatG': fatG, + }; } diff --git a/frontend/lib/features/micro_learning/views/micro_learning_screen.dart b/frontend/lib/features/micro_learning/views/micro_learning_screen.dart index 6e0b58dc..e41150da 100644 --- a/frontend/lib/features/micro_learning/views/micro_learning_screen.dart +++ b/frontend/lib/features/micro_learning/views/micro_learning_screen.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import '../../../core/constants/app_colors.dart'; -import '../../tracking/widgets/meal_log_sheet.dart'; +import '../../meal_plan/utils/fresh_meal_plan_navigation.dart'; +import '../../vietnam_local/repositories/vietnam_local_repositories.dart'; import '../models/micro_learning_models.dart'; import '../repositories/micro_learning_repository.dart'; import '../../subscription/models/subscription_models.dart'; @@ -20,6 +21,7 @@ class MicroLearningScreen extends StatefulWidget { class _MicroLearningScreenState extends State { final _repository = MicroLearningRepository(); + final _dailyStarterRepository = DailyStarterRepository(); final _subscriptionRepository = UserSubscriptionRepository(); FeatureAccess _access = FeatureAccess.free; List _cards = const []; @@ -28,6 +30,7 @@ class _MicroLearningScreenState extends State { late FoodMoodItem _selectedMood; String? _category; bool _loading = true; + bool _addingFoodToPlan = false; @override void initState() { @@ -100,6 +103,74 @@ class _MicroLearningScreenState extends State { ); } + Future _addRescueFoodToPlan(RescueFood food) async { + if (_addingFoodToPlan) return; + final mealType = await showModalBottomSheet( + context: context, + useSafeArea: true, + showDragHandle: true, + builder: (sheetContext) => Padding( + padding: const EdgeInsets.fromLTRB(20, 0, 20, 20), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + 'Thêm vào bữa nào?', + style: TextStyle(fontSize: 19, fontWeight: FontWeight.w700), + ), + const SizedBox(height: 6), + Text( + food.name, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: const TextStyle(color: Colors.black54), + ), + const SizedBox(height: 12), + for (final option in const [ + ('Breakfast', 'Bữa sáng', Icons.wb_sunny_outlined), + ('Lunch', 'Bữa trưa', Icons.wb_sunny_rounded), + ('Dinner', 'Bữa tối', Icons.nights_stay_outlined), + ('Snack', 'Bữa phụ', Icons.local_cafe_outlined), + ]) + ListTile( + minTileHeight: 52, + leading: Icon(option.$3, color: AppColors.primary), + title: Text(option.$2), + trailing: const Icon(Icons.chevron_right_rounded), + onTap: () => Navigator.pop(sheetContext, option.$1), + ), + ], + ), + ), + ); + + if (mealType == null || !mounted) return; + setState(() => _addingFoodToPlan = true); + + try { + final result = await _dailyStarterRepository.selectMeal({ + 'meals': [food.toPlanMealJson(mealType)], + }); + if (!mounted) return; + if (!result.success) { + _message( + result.translatedMessage.isNotEmpty + ? result.translatedMessage + : 'Không thể thêm món vào kế hoạch.', + error: true, + ); + return; + } + + await openFreshMealPlan(context); + } catch (error) { + if (mounted) _message(error.toString(), error: true); + } finally { + if (mounted) setState(() => _addingFoodToPlan = false); + } + } + @override Widget build(BuildContext context) { final read = _cards.where((card) => card.isRead).length; @@ -123,84 +194,79 @@ class _MicroLearningScreenState extends State { padding: const EdgeInsets.all(16), children: [ if (_access.hasCasual) ...[ - // Mood Selector Header - Container( - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - AppColors.primary.withValues(alpha: 0.15), - Colors.green.shade50, - ], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - borderRadius: BorderRadius.circular(16), - border: Border.all( - color: AppColors.primary.withValues(alpha: 0.2), - ), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Row( - children: [ - Text('🎭', style: TextStyle(fontSize: 20)), - SizedBox(width: 8), - Text( - 'Hôm nay bạn cảm thấy thế nào?', - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - color: Colors.black87, - ), - ), + // Mood Selector Header + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColors.primary.withValues(alpha: 0.15), + Colors.green.shade50, ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, ), - const SizedBox(height: 6), - const Text( - 'Chọn trạng thái cảm xúc hoặc cơn thèm để MenuGreen gợi ý món ăn giải cứu phù hợp nhất!', - style: TextStyle(fontSize: 13, color: Colors.black54), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: AppColors.primary.withValues(alpha: 0.2), ), - const SizedBox(height: 14), - _MoodSelectionGrid( - moods: _moods, - selectedMood: _selectedMood, - onSelectMood: (mood) { - setState(() { - _selectedMood = mood; - }); - }, - ), - ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Row( + children: [ + Text('🎭', style: TextStyle(fontSize: 20)), + SizedBox(width: 8), + Text( + 'Hôm nay bạn cảm thấy thế nào?', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Colors.black87, + ), + ), + ], + ), + const SizedBox(height: 6), + const Text( + 'Chọn trạng thái cảm xúc hoặc cơn thèm để MenuGreen gợi ý món ăn giải cứu phù hợp nhất!', + style: TextStyle( + fontSize: 13, + color: Colors.black54, + ), + ), + const SizedBox(height: 14), + _MoodSelectionGrid( + moods: _moods, + selectedMood: _selectedMood, + onSelectMood: (mood) { + setState(() { + _selectedMood = mood; + }); + }, + ), + ], + ), ), - ), - const SizedBox(height: 20), + const SizedBox(height: 20), - // Selected Mood Insight & Rescue Foods - _MoodRescueSection( - mood: _selectedMood, - onAppliedFood: (food) async { - await showMealLogSheet( - context, - initialFoodName: food.name, - caloriesKcal: food.caloriesKcal, - proteinG: food.proteinG, - carbsG: food.carbsG, - fatG: food.fatG, - ); - }, - ), + // Selected Mood Insight & Rescue Foods + _MoodRescueSection( + mood: _selectedMood, + submitting: _addingFoodToPlan, + onAppliedFood: _addRescueFoodToPlan, + ), - const SizedBox(height: 24), + const SizedBox(height: 24), - _ProgressPanel( - read: read, - quizzes: quizzes, - total: _cards.length, - ), - const SizedBox(height: 20), + _ProgressPanel( + read: read, + quizzes: quizzes, + total: _cards.length, + ), + const SizedBox(height: 20), ], const Text( 'Chủ đề dinh dưỡng', diff --git a/frontend/lib/features/micro_learning/views/micro_learning_widgets_part.dart b/frontend/lib/features/micro_learning/views/micro_learning_widgets_part.dart index e1eb63af..eef4f136 100644 --- a/frontend/lib/features/micro_learning/views/micro_learning_widgets_part.dart +++ b/frontend/lib/features/micro_learning/views/micro_learning_widgets_part.dart @@ -25,7 +25,10 @@ class _MoodSelectionGrid extends StatelessWidget { onTap: () => onSelectMood(mood), child: AnimatedContainer( duration: const Duration(milliseconds: 200), - padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 10), + padding: const EdgeInsets.symmetric( + horizontal: 14, + vertical: 10, + ), decoration: BoxDecoration( color: isSelected ? AppColors.primary : Colors.white, borderRadius: BorderRadius.circular(12), @@ -40,7 +43,7 @@ class _MoodSelectionGrid extends StatelessWidget { color: AppColors.primary.withValues(alpha: 0.3), blurRadius: 6, offset: const Offset(0, 2), - ) + ), ] : [], ), @@ -52,8 +55,9 @@ class _MoodSelectionGrid extends StatelessWidget { mood.title, style: TextStyle( fontSize: 13, - fontWeight: - isSelected ? FontWeight.bold : FontWeight.w600, + fontWeight: isSelected + ? FontWeight.bold + : FontWeight.w600, color: isSelected ? Colors.white : Colors.black87, ), ), @@ -71,10 +75,12 @@ class _MoodSelectionGrid extends StatelessWidget { class _MoodRescueSection extends StatelessWidget { const _MoodRescueSection({ required this.mood, + required this.submitting, required this.onAppliedFood, }); final FoodMoodItem mood; + final bool submitting; final ValueChanged onAppliedFood; @override @@ -135,7 +141,11 @@ class _MoodRescueSection extends StatelessWidget { ), child: Row( children: [ - const Icon(Icons.lightbulb_outline, color: Colors.amber, size: 20), + const Icon( + Icons.lightbulb_outline, + color: Colors.amber, + size: 20, + ), const SizedBox(width: 10), Expanded( child: Text( @@ -158,7 +168,13 @@ class _MoodRescueSection extends StatelessWidget { ), const SizedBox(height: 10), - ...mood.rescueFoods.map((food) => _RescueFoodTile(food: food, onAppliedFood: onAppliedFood)), + ...mood.rescueFoods.map( + (food) => _RescueFoodTile( + food: food, + submitting: submitting, + onAppliedFood: onAppliedFood, + ), + ), ], ), ); @@ -168,10 +184,12 @@ class _MoodRescueSection extends StatelessWidget { class _RescueFoodTile extends StatelessWidget { const _RescueFoodTile({ required this.food, + required this.submitting, required this.onAppliedFood, }); final RescueFood food; + final bool submitting; final ValueChanged onAppliedFood; @override @@ -223,50 +241,81 @@ class _RescueFoodTile extends StatelessWidget { style: TextStyle(fontSize: 12.5, color: Colors.grey.shade700), ), const SizedBox(height: 8), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + Wrap( + spacing: 12, + runSpacing: 4, + crossAxisAlignment: WrapCrossAlignment.center, children: [ Row( + mainAxisSize: MainAxisSize.min, children: [ - const Icon(Icons.local_fire_department, size: 16, color: Colors.orange), + const Icon( + Icons.local_fire_department, + size: 16, + color: Colors.orange, + ), const SizedBox(width: 4), Text( '${food.caloriesKcal.toStringAsFixed(0)} kcal', - style: const TextStyle(fontSize: 12, fontWeight: FontWeight.w600), - ), - const SizedBox(width: 12), - Text( - 'P: ${food.proteinG}g C: ${food.carbsG}g F: ${food.fatG}g', - style: TextStyle(fontSize: 11.5, color: Colors.grey.shade600), + style: const TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + ), ), ], ), - InkWell( - onTap: () => onAppliedFood(food), - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6), - decoration: BoxDecoration( - color: AppColors.primary, - borderRadius: BorderRadius.circular(8), - ), - child: const Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.add, size: 14, color: Colors.white), - SizedBox(width: 4), - Text( - 'Ăn món này', - style: TextStyle( - fontSize: 11.5, - fontWeight: FontWeight.bold, + Text( + 'P: ${food.proteinG}g C: ${food.carbsG}g F: ${food.fatG}g', + style: TextStyle(fontSize: 11.5, color: Colors.grey.shade600), + ), + ], + ), + const SizedBox(height: 8), + Align( + alignment: Alignment.centerRight, + child: InkWell( + borderRadius: BorderRadius.circular(8), + onTap: submitting ? null : () => onAppliedFood(food), + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 8, + ), + decoration: BoxDecoration( + color: AppColors.primary, + borderRadius: BorderRadius.circular(8), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (submitting) + const SizedBox( + width: 14, + height: 14, + child: CircularProgressIndicator( + strokeWidth: 2, color: Colors.white, ), + ) + else + const Icon( + Icons.add_to_photos_outlined, + size: 14, + color: Colors.white, ), - ], - ), + const SizedBox(width: 4), + Text( + submitting ? 'Đang thêm...' : 'Thêm vào kế hoạch', + style: const TextStyle( + fontSize: 11.5, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + ], ), ), - ], + ), ), ], ), @@ -409,6 +458,7 @@ class _QuizPanel extends StatelessWidget { onSelected?.call(value); } } + return Container( padding: const EdgeInsets.all(16), decoration: BoxDecoration( @@ -505,5 +555,3 @@ String _categoryLabel(String value) { return 'Dinh dưỡng cơ bản'; } } - - diff --git a/frontend/lib/features/notifications/views/notification_settings_screen.dart b/frontend/lib/features/notifications/views/notification_settings_screen.dart index 83e9d44f..5129b834 100644 --- a/frontend/lib/features/notifications/views/notification_settings_screen.dart +++ b/frontend/lib/features/notifications/views/notification_settings_screen.dart @@ -174,7 +174,7 @@ class _NotificationSettingsScreenState extends State ), ), _buildSettingCard( - title: 'Push notification', + title: 'Thông báo đẩy', subtitle: 'Nhận thông báo ngay cả khi app đóng', icon: Icons.phone_android_outlined, iconColor: Colors.green, diff --git a/frontend/lib/features/office/views/office_meal_plan_screen.dart b/frontend/lib/features/office/views/office_meal_plan_screen.dart index 09faa958..e5f5e4f4 100644 --- a/frontend/lib/features/office/views/office_meal_plan_screen.dart +++ b/frontend/lib/features/office/views/office_meal_plan_screen.dart @@ -314,6 +314,7 @@ class _OfficeMealPlanScreenState extends State { final targetChanged = previousAmount != input.amount || previousMinutes != input.minutes; + var budgetSaved = false; setState(() => _savingBudget = true); try { final saved = await _budgetRepository.saveBudget( @@ -321,27 +322,49 @@ class _OfficeMealPlanScreenState extends State { amount: input.amount, minutes: input.minutes, ); + budgetSaved = true; if (!mounted) return; - setState(() { - _budget = saved; - if (targetChanged) { + setState(() => _budget = saved); + if (targetChanged) { + setState(() => _generating = true); + await _generateAndSyncPlan(); + _notice('Đã tạo lại món ăn và danh sách đi chợ theo ngân sách mới.'); + } else { + _notice('Đã lưu mục tiêu ngân sách tuần.'); + } + } catch (error) { + if (mounted && budgetSaved && targetChanged) { + setState(() { _plan = null; _groceryList = null; _budgetStatus = null; - } - }); - _notice( - targetChanged - ? 'Ngân sách đã thay đổi. Hãy tạo lại kế hoạch cơm hộp.' - : 'Đã lưu mục tiêu ngân sách tuần.', - ); - } catch (error) { + }); + } _notice(error); } finally { - if (mounted) setState(() => _savingBudget = false); + if (mounted) { + setState(() { + _savingBudget = false; + _generating = false; + }); + } } } + Future _generateAndSyncPlan() async { + final plan = await _mealPlanRepository.generateBudgetLunchboxPlan(); + final results = await Future.wait([ + _mealPlanRepository.getGroceryList(plan.id), + _mealPlanRepository.getBudgetStatus(plan.id), + ]); + if (!mounted) return; + setState(() { + _plan = plan; + _groceryList = results[0]; + _budgetStatus = results[1]; + }); + } + Future _generatePlan() async { if (!_canUseOfficeFeature()) return; if (_budget == null) { @@ -352,17 +375,7 @@ class _OfficeMealPlanScreenState extends State { setState(() => _generating = true); try { - final plan = await _mealPlanRepository.generateBudgetLunchboxPlan(); - final results = await Future.wait([ - _mealPlanRepository.getGroceryList(plan.id), - _mealPlanRepository.getBudgetStatus(plan.id), - ]); - if (!mounted) return; - setState(() { - _plan = plan; - _groceryList = results[0]; - _budgetStatus = results[1]; - }); + await _generateAndSyncPlan(); } catch (error) { _notice(error); } finally { diff --git a/frontend/lib/features/profile/views/profile_view.dart b/frontend/lib/features/profile/views/profile_view.dart index b02ade7b..c4daf6d8 100644 --- a/frontend/lib/features/profile/views/profile_view.dart +++ b/frontend/lib/features/profile/views/profile_view.dart @@ -2,7 +2,10 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; + import '../../../core/constants/app_colors.dart'; +import '../../../core/i18n/api_message_translator.dart'; +import '../../../core/network/token_storage.dart'; import '../../casual/views/casual_hub_screen.dart'; import '../repositories/profile_repository.dart'; import '../../auth/views/welcome_screen.dart'; @@ -872,7 +875,7 @@ class _ProfileViewState extends State { ) else if (activeSubscription != null) Text( - 'Trạng thái: ${activeSubscription.status}', + 'Trạng thái: ${activeSubscription.status.translatedData}', style: const TextStyle( color: AppColors.textSecondary, fontSize: 14, diff --git a/frontend/lib/features/subscription/repositories/sepay_payment_repository.dart b/frontend/lib/features/subscription/repositories/sepay_payment_repository.dart index 7d5dd04f..9f95b228 100644 --- a/frontend/lib/features/subscription/repositories/sepay_payment_repository.dart +++ b/frontend/lib/features/subscription/repositories/sepay_payment_repository.dart @@ -41,7 +41,7 @@ class SepayPaymentRepository { Future<({bool success, String message})> cancelOrder(String paymentId) async { final response = await _api.delete(ApiEndpoints.sepayCancelOrder(paymentId)); if (response.statusCode == 200) { - return (success: true, message: 'Payment order cancelled successfully.'); + return (success: true, message: 'Hủy giao dịch thanh toán thành công.'); } return (success: false, message: _extractErrorMessage(response.body)); } diff --git a/frontend/lib/features/subscription/views/upgrade_plan_screen.dart b/frontend/lib/features/subscription/views/upgrade_plan_screen.dart index 83b528d3..d35a4f4c 100644 --- a/frontend/lib/features/subscription/views/upgrade_plan_screen.dart +++ b/frontend/lib/features/subscription/views/upgrade_plan_screen.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import '../../../core/constants/app_colors.dart'; +import '../../../core/i18n/api_message_translator.dart'; import '../../../core/network/token_storage.dart'; import '../../auth/views/login_screen.dart'; import '../../casual/views/casual_hub_screen.dart'; @@ -491,7 +492,7 @@ class _UpgradePlanScreenState extends State { (tick) => tick, ), builder: (context, snapshot) => Text( - 'Trạng thái: ${current.status} • ' + 'Trạng thái: ${current.status.translatedData} • ' '${formatSubscriptionRemaining(current.endDate)}', style: const TextStyle( color: AppColors.textSecondary, @@ -776,8 +777,8 @@ class _GymerPackageCard extends StatelessWidget { final price = plan?.priceVnd; const features = <({IconData icon, String label})>[ (icon: Icons.track_changes_rounded, label: 'Mục tiêu'), - (icon: Icons.rate_review_outlined, label: 'PT Review'), - (icon: Icons.sports_gymnastics_rounded, label: 'Coach'), + (icon: Icons.rate_review_outlined, label: 'Đánh giá của PT'), + (icon: Icons.sports_gymnastics_rounded, label: 'Huấn luyện viên'), (icon: Icons.emoji_events_outlined, label: 'Lộ trình'), ]; diff --git a/frontend/lib/features/tracking/models/catalog_item.dart b/frontend/lib/features/tracking/models/catalog_item.dart index 5b5057fb..16e45905 100644 --- a/frontend/lib/features/tracking/models/catalog_item.dart +++ b/frontend/lib/features/tracking/models/catalog_item.dart @@ -2,24 +2,45 @@ class CatalogItem { CatalogItem({ required this.id, required this.name, + this.caloriesKcal, + this.proteinG, + this.carbsG, + this.fatG, }); final String id; final String name; + final double? caloriesKcal; + final double? proteinG; + final double? carbsG; + final double? fatG; factory CatalogItem.fromJson( Map json, { required String fallbackNameKey, }) { - final name = (json[fallbackNameKey] ?? - json['nameVi'] ?? - json['title'] ?? - json['name'] ?? - '') - .toString(); + final name = + (json[fallbackNameKey] ?? + json['nameVi'] ?? + json['title'] ?? + json['name'] ?? + '') + .toString(); return CatalogItem( id: (json['id'] ?? '').toString(), name: name.isEmpty ? 'Không tên' : name, + caloriesKcal: _optionalNumber( + json['caloriesKcal'] ?? json['CaloriesKcal'], + ), + proteinG: _optionalNumber(json['proteinG'] ?? json['ProteinG']), + carbsG: _optionalNumber(json['carbsG'] ?? json['CarbsG']), + fatG: _optionalNumber(json['fatG'] ?? json['FatG']), ); } + + static double? _optionalNumber(dynamic value) { + if (value == null) return null; + if (value is num) return value.toDouble(); + return double.tryParse(value.toString()); + } } diff --git a/frontend/lib/features/tracking/models/meal_log_item.dart b/frontend/lib/features/tracking/models/meal_log_item.dart index f06612c5..ff9b429a 100644 --- a/frontend/lib/features/tracking/models/meal_log_item.dart +++ b/frontend/lib/features/tracking/models/meal_log_item.dart @@ -43,6 +43,19 @@ class MealLogItem { (recipeId != null && recipeId!.isNotEmpty) || sourceType?.toLowerCase() == 'recipe'; + bool get isIngredient { + final normalizedSource = sourceType?.trim().toLowerCase(); + if (normalizedSource == 'aiingredientscan' || + normalizedSource == 'ingredient') { + return true; + } + + // Keep records created before SourceType was split recognizable. + final normalizedNotes = notes?.trim().toLowerCase(); + return normalizedNotes?.startsWith('nguyên liệu nhận diện từ ai scan:') == + true; + } + static double _asDouble(dynamic value) { if (value is num) return value.toDouble(); return 0; @@ -98,8 +111,8 @@ class MealLogItem { displayName: resolvedName, foodId: _parseOptionalId(json['foodId'] ?? json['FoodId']), recipeId: _parseOptionalId(json['recipeId'] ?? json['RecipeId']), - notes: json['notes']?.toString(), - sourceType: json['sourceType']?.toString(), + notes: (json['notes'] ?? json['Notes'])?.toString(), + sourceType: (json['sourceType'] ?? json['SourceType'])?.toString(), customName: customName, mealPlanItemId: _parseOptionalId( json['mealPlanItemId'] ?? json['MealPlanItemId'], diff --git a/frontend/lib/features/tracking/repositories/nutrition_tracking_repository.dart b/frontend/lib/features/tracking/repositories/nutrition_tracking_repository.dart index af890b06..498d782d 100644 --- a/frontend/lib/features/tracking/repositories/nutrition_tracking_repository.dart +++ b/frontend/lib/features/tracking/repositories/nutrition_tracking_repository.dart @@ -57,6 +57,7 @@ class NutritionTrackingRepository { double? carbsG, double? fatG, String? customName, + String? sourceType, }) async { final response = await _api.postJson( ApiEndpoints.nutritionMealLogs, @@ -72,6 +73,7 @@ class NutritionTrackingRepository { carbsG: carbsG, fatG: fatG, customName: customName, + sourceType: sourceType, ), ); return response.statusCode == 200; @@ -216,6 +218,24 @@ class NutritionTrackingRepository { .toList(); } + Future> getIngredients({String? keyword}) async { + final response = await _api.get( + QueryMiddleware.buildUrl(ApiEndpoints.ingredientSearch, { + 'keyword': keyword, + 'isActive': 'true', + }), + ); + if (response.statusCode != 200 || response.body.isEmpty) return []; + final decoded = jsonDecode(response.body); + if (decoded is! Map) return []; + final items = decoded['items'] ?? decoded['Items']; + if (items is! List) return []; + return items + .whereType>() + .map((e) => CatalogItem.fromJson(e, fallbackNameKey: 'nameVi')) + .toList(); + } + Future> getRecipes({String? keyword}) async { final response = await _api.get( QueryMiddleware.buildUrl(ApiEndpoints.recipeSearch, {'keyword': keyword}), @@ -243,6 +263,7 @@ class NutritionTrackingRepository { double? carbsG, double? fatG, String? customName, + String? sourceType, }) { return { 'foodId': foodId, @@ -250,12 +271,15 @@ class NutritionTrackingRepository { 'mealType': mealType, 'quantityG': quantityG, 'notes': notes, - 'loggedAt': loggedAt?.toIso8601String(), + // Always include the UTC marker. A timestamp without an offset can be + // interpreted in the API server's timezone and fall on yesterday. + 'loggedAt': loggedAt?.toUtc().toIso8601String(), 'caloriesKcal': caloriesKcal, 'proteinG': proteinG, 'carbsG': carbsG, 'fatG': fatG, 'customName': customName, + 'sourceType': sourceType, 'addToMealPlan': true, }; } @@ -328,7 +352,9 @@ class NutritionTrackingRepository { } final decoded = jsonDecode(response.body); if (decoded is! Map) { - throw const FormatException('Kết quả phân tích món ăn không đúng định dạng.'); + throw const FormatException( + 'Kết quả phân tích món ăn không đúng định dạng.', + ); } return decoded; } diff --git a/frontend/lib/features/tracking/views/ingredient_scan_screen.dart b/frontend/lib/features/tracking/views/ingredient_scan_screen.dart index cfcadeef..b402e731 100644 --- a/frontend/lib/features/tracking/views/ingredient_scan_screen.dart +++ b/frontend/lib/features/tracking/views/ingredient_scan_screen.dart @@ -102,33 +102,59 @@ class _IngredientScanScreenState extends State imageQuality: 85, ); if (image == null) return; + await _analyzeImage(image); + } catch (e) { + if (mounted) { + _stopLoading(); + _showErrorSnackBar('Không thể chọn hoặc xử lý ảnh. Vui lòng thử lại!'); + } + } + } - final bytes = await image.readAsBytes(); - if (!mounted) return; - setState(() => _selectedImageBytes = bytes); - - _startLoadingSteps(); - - if (widget.officeMode) { - final result = await _repository.analyzeFoodImage( - bytes, - image.name, - mimeType: _imageMimeType(image), - ); + Future _showUploadSourcePicker() async { + if (_loading) return; - if (!mounted) return; - _stopLoading(); + await showModalBottomSheet( + context: context, + showDragHandle: true, + builder: (sheetContext) => SafeArea( + child: Padding( + padding: const EdgeInsets.only(bottom: 12), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const ListTile( + title: Text( + 'Chọn ảnh tải lên', + style: TextStyle(fontWeight: FontWeight.w700), + ), + subtitle: Text('Chọn ảnh từ thư viện trên thiết bị'), + ), + ListTile( + leading: const Icon(Icons.photo_library_outlined), + title: const Text('Thư viện ảnh'), + subtitle: const Text('Ảnh và ảnh chụp màn hình trên thiết bị'), + onTap: () { + Navigator.of(sheetContext).pop(); + _pickImage(ImageSource.gallery); + }, + ), + ], + ), + ), + ), + ); + } - if (result == null) { - _showErrorSnackBar('Không thể phân tích hình ảnh. Vui lòng thử lại!'); - return; - } + Future _analyzeImage(XFile image) async { + final bytes = await image.readAsBytes(); + if (!mounted) return; + setState(() => _selectedImageBytes = bytes); - _showResultBottomSheet(result); - return; - } + _startLoadingSteps(); - final result = await _repository.analyzePreparedMealImage( + if (widget.officeMode) { + final result = await _repository.analyzeFoodImage( bytes, image.name, mimeType: _imageMimeType(image), @@ -137,20 +163,34 @@ class _IngredientScanScreenState extends State if (!mounted) return; _stopLoading(); - if (result['status'] != 'done' || result['result'] is! Map) { - _showErrorSnackBar('Chưa thể hoàn tất phân tích món ăn. Vui lòng thử lại.'); + if (result == null) { + _showErrorSnackBar('Không thể phân tích hình ảnh. Vui lòng thử lại!'); return; } - _showPreparedMealBottomSheet( - Map.from(result['result'] as Map), + _showResultBottomSheet(result); + return; + } + + final result = await _repository.analyzePreparedMealImage( + bytes, + image.name, + mimeType: _imageMimeType(image), + ); + + if (!mounted) return; + _stopLoading(); + + if (result['status'] != 'done' || result['result'] is! Map) { + _showErrorSnackBar( + 'Chưa thể hoàn tất phân tích món ăn. Vui lòng thử lại.', ); - } catch (e) { - if (mounted) { - _stopLoading(); - _showErrorSnackBar('Không thể hoàn tất phân tích món ăn. Vui lòng thử lại.'); - } + return; } + + _showPreparedMealBottomSheet( + Map.from(result['result'] as Map), + ); } void _showErrorSnackBar(String message) { @@ -217,7 +257,10 @@ class _IngredientScanScreenState extends State const SizedBox(height: 16), Text( result['dish_name']?.toString() ?? 'Món ăn đã quét', - style: const TextStyle(fontSize: 22, fontWeight: FontWeight.bold), + style: const TextStyle( + fontSize: 22, + fontWeight: FontWeight.bold, + ), ), const SizedBox(height: 4), Text( @@ -242,11 +285,15 @@ class _IngredientScanScreenState extends State ), ); }), - if (result['estimation_note']?.toString().isNotEmpty ?? false) ...[ + if (result['estimation_note']?.toString().isNotEmpty ?? + false) ...[ const SizedBox(height: 12), Text( result['estimation_note'].toString(), - style: const TextStyle(fontSize: 12, color: AppColors.textSecondary), + style: const TextStyle( + fontSize: 12, + color: AppColors.textSecondary, + ), ), ], ], @@ -272,7 +319,11 @@ class _IngredientScanScreenState extends State children: [ Text( '${calories.toStringAsFixed(0)} kcal', - style: const TextStyle(fontSize: 26, fontWeight: FontWeight.bold, color: AppColors.primary), + style: const TextStyle( + fontSize: 26, + fontWeight: FontWeight.bold, + color: AppColors.primary, + ), ), const SizedBox(height: 4), Text( @@ -294,6 +345,7 @@ class _IngredientScanScreenState extends State keyword: ing.tenNguyenLieu, defaultGrams: ing.khoiLuongUocTinhG, isRecipe: false, + isIngredient: true, ); } @@ -316,7 +368,11 @@ class _IngredientScanScreenState extends State // Dùng Dialog ở root Navigator — không bị Sheet/Dialog/DatePicker che if (result.success) { - final (title, message) = _successInfo(result.action, dish, widget.officeMode); + final (title, message) = _successInfo( + result.action, + dish, + widget.officeMode, + ); await showResultFeedbackDialog( context, title: title, @@ -325,7 +381,12 @@ class _IngredientScanScreenState extends State actionLabel: 'Đóng', ); } else { - final (title, message) = _errorInfo(result.action, dish, result.errorMessage, widget.officeMode); + final (title, message) = _errorInfo( + result.action, + dish, + result.errorMessage, + widget.officeMode, + ); await showResultFeedbackDialog( context, title: title, @@ -336,7 +397,11 @@ class _IngredientScanScreenState extends State } } - (String title, String message) _successInfo(String action, CvSuggestedDish dish, bool officeMode) { + (String title, String message) _successInfo( + String action, + CvSuggestedDish dish, + bool officeMode, + ) { return switch (action) { 'today' => ( 'Lưu thành công', @@ -354,7 +419,12 @@ class _IngredientScanScreenState extends State }; } - (String title, String message) _errorInfo(String action, CvSuggestedDish dish, String? error, bool officeMode) { + (String title, String message) _errorInfo( + String action, + CvSuggestedDish dish, + String? error, + bool officeMode, + ) { return switch (action) { 'today' => ( 'Lưu thất bại', @@ -413,6 +483,7 @@ class _IngredientScanScreenState extends State required String keyword, required double defaultGrams, required bool isRecipe, + bool isIngredient = false, CvNutritionInfo? fallbackNutrition, double fallbackNutritionMultiplier = 1, MealLogSubmitter? submitter, @@ -426,6 +497,7 @@ class _IngredientScanScreenState extends State keyword: keyword, defaultGrams: defaultGrams, isRecipe: isRecipe, + isIngredient: isIngredient, fallbackNutrition: fallbackNutrition, fallbackNutritionMultiplier: fallbackNutritionMultiplier, submitter: submitter, @@ -1061,7 +1133,7 @@ class _IngredientScanScreenState extends State icon: Icons.photo_library_outlined, label: 'TẢI LÊN', isLightMode: true, - onTap: () => _pickImage(ImageSource.gallery), + onTap: _showUploadSourcePicker, ), // Shutter button (Center) diff --git a/frontend/lib/features/tracking/widgets/meal_log_sheet.dart b/frontend/lib/features/tracking/widgets/meal_log_sheet.dart index 527533e5..0791b86f 100644 --- a/frontend/lib/features/tracking/widgets/meal_log_sheet.dart +++ b/frontend/lib/features/tracking/widgets/meal_log_sheet.dart @@ -16,189 +16,41 @@ Future showMealLogSheet( double? proteinG, double? carbsG, double? fatG, + NutritionTrackingRepository? repository, }) async { - final lockedToRecipe = initialRecipeId != null; - String sourceType = lockedToRecipe ? 'recipe' : 'food'; - String mealType = 'breakfast'; - final quantityController = TextEditingController(text: '100'); - final keywordController = TextEditingController( - text: initialFoodName ?? '', - ); - final repository = NutritionTrackingRepository(); - List items = []; - String? selectedId = initialFoodId ?? initialRecipeId; - bool loadingItems = false; - - Future loadItems(void Function(void Function()) setModalState) async { - if (initialFoodId != null || initialRecipeId != null) return; - setModalState(() => loadingItems = true); - final keyword = keywordController.text.trim(); - final loaded = sourceType == 'food' - ? await repository.getFoods(keyword: keyword.isEmpty ? null : keyword) - : await repository.getRecipes(keyword: keyword.isEmpty ? null : keyword); - setModalState(() { - items = loaded; - selectedId ??= initialFoodId ?? (items.isNotEmpty ? items.first.id : null); - loadingItems = false; - }); - } - - final confirmed = await showDialog( + final trackingRepository = repository ?? NutritionTrackingRepository(); + final draft = await showDialog<_MealLogDraft>( context: context, - builder: (ctx) => StatefulBuilder( - builder: (ctx, setModalState) { - if (initialFoodId == null && initialRecipeId == null && items.isEmpty && !loadingItems) { - WidgetsBinding.instance.addPostFrameCallback((_) => loadItems(setModalState)); - } - return AlertDialog( - title: const Text('Ghi vào nhật ký'), - content: SingleChildScrollView( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - if (initialFoodId != null && initialFoodName != null) - Padding( - padding: const EdgeInsets.only(bottom: 12), - child: Text( - 'Món: $initialFoodName', - style: const TextStyle(fontWeight: FontWeight.w600), - ), - ), - if (initialRecipeId != null && initialRecipeName != null) - Padding( - padding: const EdgeInsets.only(bottom: 12), - child: Text( - 'Công thức: $initialRecipeName', - style: const TextStyle(fontWeight: FontWeight.w600), - ), - ), - InputDecorator( - decoration: const InputDecoration(labelText: 'Nguồn'), - child: DropdownButtonHideUnderline( - child: DropdownButton( - value: sourceType, - isExpanded: true, - items: const [ - DropdownMenuItem(value: 'food', child: Text('Món ăn')), - DropdownMenuItem(value: 'recipe', child: Text('Công thức')), - ], - onChanged: initialFoodId != null || initialRecipeId != null - ? null - : (value) { - if (value == null) return; - setModalState(() { - sourceType = value; - selectedId = null; - items = []; - }); - loadItems(setModalState); - }, - ), - ), - ), - if (initialFoodId == null && initialRecipeId == null) ...[ - const SizedBox(height: 12), - TextField( - controller: keywordController, - decoration: const InputDecoration( - labelText: 'Tìm kiếm', - hintText: 'Nhập từ khóa', - ), - ), - const SizedBox(height: 8), - Align( - alignment: Alignment.centerRight, - child: TextButton( - onPressed: () => loadItems(setModalState), - child: const Text('Tải danh sách'), - ), - ), - ], - if (loadingItems) - const Padding( - padding: EdgeInsets.symmetric(vertical: 8), - child: CircularProgressIndicator(color: AppColors.primary), - ) - else if (initialFoodId == null && initialRecipeId == null && items.isNotEmpty) - InputDecorator( - decoration: InputDecoration( - labelText: sourceType == 'food' ? 'Chọn món' : 'Chọn công thức', - ), - child: DropdownButtonHideUnderline( - child: DropdownButton( - value: selectedId, - isExpanded: true, - items: items - .map( - (e) => DropdownMenuItem( - value: e.id, - child: Text(e.name, overflow: TextOverflow.ellipsis), - ), - ) - .toList(), - onChanged: (value) => setModalState(() => selectedId = value), - ), - ), - ), - const SizedBox(height: 12), - InputDecorator( - decoration: const InputDecoration(labelText: 'Loại bữa'), - child: DropdownButtonHideUnderline( - child: DropdownButton( - value: mealType, - isExpanded: true, - items: const [ - DropdownMenuItem(value: 'breakfast', child: Text('Bữa sáng')), - DropdownMenuItem(value: 'lunch', child: Text('Bữa trưa')), - DropdownMenuItem(value: 'dinner', child: Text('Bữa tối')), - DropdownMenuItem(value: 'snack', child: Text('Bữa phụ')), - ], - onChanged: (value) { - if (value == null) return; - setModalState(() => mealType = value); - }, - ), - ), - ), - const SizedBox(height: 12), - TextField( - controller: quantityController, - keyboardType: TextInputType.number, - decoration: InputDecoration( - labelText: sourceType == 'recipe' - ? 'Phần ăn (100 = 1 khẩu phần)' - : 'Khối lượng (gram)', - hintText: sourceType == 'recipe' ? 'Ví dụ: 100' : 'Ví dụ: 150', - ), - ), - ], - ), - ), - actions: [ - TextButton(onPressed: () => Navigator.pop(ctx, false), child: const Text('Hủy')), - ElevatedButton(onPressed: () => Navigator.pop(ctx, true), child: const Text('Ghi')), - ], - ); - }, + builder: (_) => _MealLogDialog( + repository: trackingRepository, + initialFoodId: initialFoodId, + initialFoodName: initialFoodName, + initialRecipeId: initialRecipeId, + initialRecipeName: initialRecipeName, ), ); - quantityController.dispose(); - keywordController.dispose(); + if (draft == null) return false; - if (confirmed != true) return false; - - final quantity = double.tryParse(quantityController.text.trim()) ?? 100.0; - final isCustomDish = initialFoodId == null && initialRecipeId == null && initialFoodName != null; - final foodId = initialFoodId ?? (!isCustomDish && sourceType == 'food' ? selectedId : null); - final recipeId = initialRecipeId ?? (!isCustomDish && sourceType == 'recipe' ? selectedId : null); + final isCustomDish = + initialFoodId == null && + initialRecipeId == null && + initialFoodName?.trim().isNotEmpty == true; + final foodId = + initialFoodId ?? + (!isCustomDish && draft.sourceType == 'food' ? draft.selectedId : null); + final recipeId = + initialRecipeId ?? + (!isCustomDish && draft.sourceType == 'recipe' ? draft.selectedId : null); final customName = isCustomDish - ? initialFoodName + ? initialFoodName!.trim() : (foodId == null && recipeId == null) - ? (initialFoodName ?? (keywordController.text.trim().isNotEmpty ? keywordController.text.trim() : null)) - : null; + ? (draft.keyword.isNotEmpty ? draft.keyword : null) + : null; - if (foodId == null && recipeId == null && (customName == null || customName.isEmpty)) { + if (foodId == null && + recipeId == null && + (customName == null || customName.isEmpty)) { if (context.mounted) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar( @@ -210,29 +62,32 @@ Future showMealLogSheet( return false; } - final at = loggedAt ?? DateTime.now(); - final success = await repository.createMealLog( - foodId: foodId, - recipeId: recipeId, - customName: customName, - notes: customName, - mealType: mealType, - quantityG: quantity, - loggedAt: at, - caloriesKcal: caloriesKcal, - proteinG: proteinG, - carbsG: carbsG, - fatG: fatG, - ); + var success = false; + try { + success = await trackingRepository.createMealLog( + foodId: foodId, + recipeId: recipeId, + customName: customName, + notes: customName, + mealType: draft.mealType, + quantityG: draft.quantity, + loggedAt: loggedAt ?? DateTime.now(), + caloriesKcal: caloriesKcal, + proteinG: proteinG, + carbsG: carbsG, + fatG: fatG, + ); + } catch (_) { + success = false; + } if (context.mounted) { - final mealTypeName = mealType == 'breakfast' - ? 'Bữa sáng' - : mealType == 'lunch' - ? 'Bữa trưa' - : mealType == 'dinner' - ? 'Bữa tối' - : 'Bữa phụ'; + final mealTypeName = switch (draft.mealType) { + 'breakfast' => 'Bữa sáng', + 'lunch' => 'Bữa trưa', + 'dinner' => 'Bữa tối', + _ => 'Bữa phụ', + }; final name = initialFoodName ?? customName ?? 'Món ăn'; if (success) { ScaffoldMessenger.of(context).showSnackBar( @@ -265,3 +120,308 @@ Future showMealLogSheet( return success; } + +class _MealLogDraft { + const _MealLogDraft({ + required this.sourceType, + required this.mealType, + required this.quantity, + required this.keyword, + this.selectedId, + }); + + final String sourceType; + final String mealType; + final double quantity; + final String keyword; + final String? selectedId; +} + +class _MealLogDialog extends StatefulWidget { + const _MealLogDialog({ + required this.repository, + this.initialFoodId, + this.initialFoodName, + this.initialRecipeId, + this.initialRecipeName, + }); + + final NutritionTrackingRepository repository; + final String? initialFoodId; + final String? initialFoodName; + final String? initialRecipeId; + final String? initialRecipeName; + + @override + State<_MealLogDialog> createState() => _MealLogDialogState(); +} + +class _MealLogDialogState extends State<_MealLogDialog> { + late final TextEditingController _quantityController; + late final TextEditingController _keywordController; + late String _sourceType; + String _mealType = 'breakfast'; + List _items = const []; + String? _selectedId; + String? _loadError; + bool _loadingItems = false; + int _loadRequest = 0; + + bool get _isCatalogLocked => + widget.initialFoodId != null || widget.initialRecipeId != null; + + bool get _isCustomDish => + !_isCatalogLocked && widget.initialFoodName?.trim().isNotEmpty == true; + + bool get _canSearch => !_isCatalogLocked && !_isCustomDish; + + @override + void initState() { + super.initState(); + _sourceType = widget.initialRecipeId != null ? 'recipe' : 'food'; + _selectedId = widget.initialFoodId ?? widget.initialRecipeId; + _quantityController = TextEditingController(text: '100'); + _keywordController = TextEditingController( + text: widget.initialFoodName ?? widget.initialRecipeName ?? '', + ); + + if (_canSearch) { + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) _loadItems(); + }); + } + } + + @override + void dispose() { + _loadRequest++; + _quantityController.dispose(); + _keywordController.dispose(); + super.dispose(); + } + + Future _loadItems() async { + final request = ++_loadRequest; + final requestedSource = _sourceType; + setState(() { + _loadingItems = true; + _loadError = null; + }); + + try { + final keyword = _keywordController.text.trim(); + final loaded = requestedSource == 'food' + ? await widget.repository.getFoods( + keyword: keyword.isEmpty ? null : keyword, + ) + : await widget.repository.getRecipes( + keyword: keyword.isEmpty ? null : keyword, + ); + if (!mounted || request != _loadRequest) return; + setState(() { + _items = loaded; + _selectedId = loaded.isEmpty ? null : loaded.first.id; + }); + } catch (error) { + if (!mounted || request != _loadRequest) return; + setState(() { + _items = const []; + _selectedId = null; + _loadError = error.toString().replaceFirst('Exception: ', ''); + }); + } finally { + if (mounted && request == _loadRequest) { + setState(() => _loadingItems = false); + } + } + } + + void _confirm() { + final parsedQuantity = double.tryParse(_quantityController.text.trim()); + Navigator.pop( + context, + _MealLogDraft( + sourceType: _sourceType, + mealType: _mealType, + quantity: parsedQuantity != null && parsedQuantity > 0 + ? parsedQuantity + : 100, + keyword: _keywordController.text.trim(), + selectedId: _selectedId, + ), + ); + } + + @override + Widget build(BuildContext context) { + return AlertDialog( + title: const Text('Ghi vào nhật ký'), + content: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + if (_isCustomDish) + Padding( + padding: const EdgeInsets.only(bottom: 12), + child: Text( + 'Món: ${widget.initialFoodName}', + style: const TextStyle(fontWeight: FontWeight.w600), + ), + ) + else if (widget.initialFoodId != null && + widget.initialFoodName != null) + Padding( + padding: const EdgeInsets.only(bottom: 12), + child: Text( + 'Món: ${widget.initialFoodName}', + style: const TextStyle(fontWeight: FontWeight.w600), + ), + ) + else if (widget.initialRecipeId != null && + widget.initialRecipeName != null) + Padding( + padding: const EdgeInsets.only(bottom: 12), + child: Text( + 'Công thức: ${widget.initialRecipeName}', + style: const TextStyle(fontWeight: FontWeight.w600), + ), + ), + if (!_isCustomDish) + InputDecorator( + decoration: const InputDecoration(labelText: 'Nguồn'), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: _sourceType, + isExpanded: true, + items: const [ + DropdownMenuItem(value: 'food', child: Text('Món ăn')), + DropdownMenuItem( + value: 'recipe', + child: Text('Công thức'), + ), + ], + onChanged: _isCatalogLocked + ? null + : (value) async { + if (value == null || value == _sourceType) return; + setState(() { + _sourceType = value; + _selectedId = null; + _items = const []; + }); + await _loadItems(); + }, + ), + ), + ), + if (_canSearch) ...[ + const SizedBox(height: 12), + TextField( + controller: _keywordController, + textInputAction: TextInputAction.search, + onSubmitted: (_) => _loadItems(), + decoration: const InputDecoration( + labelText: 'Tìm kiếm', + hintText: 'Nhập từ khóa', + ), + ), + const SizedBox(height: 8), + Align( + alignment: Alignment.centerRight, + child: TextButton( + onPressed: _loadingItems ? null : _loadItems, + child: const Text('Tải danh sách'), + ), + ), + ], + if (_loadingItems) + const Padding( + padding: EdgeInsets.symmetric(vertical: 8), + child: Center( + child: CircularProgressIndicator(color: AppColors.primary), + ), + ) + else if (_loadError != null) + Padding( + padding: const EdgeInsets.only(bottom: 8), + child: Text( + _loadError!, + style: const TextStyle(color: Colors.red, fontSize: 12), + ), + ) + else if (_canSearch && _items.isNotEmpty) + InputDecorator( + decoration: InputDecoration( + labelText: _sourceType == 'food' + ? 'Chọn món' + : 'Chọn công thức', + ), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: _selectedId, + isExpanded: true, + items: _items + .map( + (item) => DropdownMenuItem( + value: item.id, + child: Text( + item.name, + overflow: TextOverflow.ellipsis, + ), + ), + ) + .toList(), + onChanged: (value) => setState(() => _selectedId = value), + ), + ), + ), + const SizedBox(height: 12), + InputDecorator( + decoration: const InputDecoration(labelText: 'Loại bữa'), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: _mealType, + isExpanded: true, + items: const [ + DropdownMenuItem( + value: 'breakfast', + child: Text('Bữa sáng'), + ), + DropdownMenuItem(value: 'lunch', child: Text('Bữa trưa')), + DropdownMenuItem(value: 'dinner', child: Text('Bữa tối')), + DropdownMenuItem(value: 'snack', child: Text('Bữa phụ')), + ], + onChanged: (value) { + if (value == null) return; + setState(() => _mealType = value); + }, + ), + ), + ), + const SizedBox(height: 12), + TextField( + controller: _quantityController, + keyboardType: const TextInputType.numberWithOptions( + decimal: true, + ), + decoration: InputDecoration( + labelText: _sourceType == 'recipe' + ? 'Phần ăn (100 = 1 khẩu phần)' + : 'Khối lượng (gram)', + hintText: _sourceType == 'recipe' ? 'Ví dụ: 100' : 'Ví dụ: 150', + ), + ), + ], + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Hủy'), + ), + ElevatedButton(onPressed: _confirm, child: const Text('Ghi')), + ], + ); + } +} diff --git a/frontend/lib/features/tracking/widgets/search_and_log_modal.dart b/frontend/lib/features/tracking/widgets/search_and_log_modal.dart index 4c35d1cb..281564f2 100644 --- a/frontend/lib/features/tracking/widgets/search_and_log_modal.dart +++ b/frontend/lib/features/tracking/widgets/search_and_log_modal.dart @@ -17,6 +17,7 @@ class SearchAndLogModal extends StatefulWidget { required this.defaultGrams, required this.isRecipe, required this.onSuccess, + this.isIngredient = false, this.initialMealType = 'breakfast', this.fallbackNutrition, this.fallbackNutritionMultiplier = 1, @@ -28,6 +29,7 @@ class SearchAndLogModal extends StatefulWidget { final String keyword; final double defaultGrams; final bool isRecipe; + final bool isIngredient; final VoidCallback onSuccess; final String initialMealType; final CvNutritionInfo? fallbackNutrition; @@ -62,7 +64,9 @@ class _SearchAndLogModalState extends State { Future _searchDatabaseItem() async { try { - final results = widget.isRecipe + final results = widget.isIngredient + ? await widget.repository.getIngredients(keyword: widget.keyword) + : widget.isRecipe ? await widget.repository.getRecipes(keyword: widget.keyword) : await widget.repository.getFoods(keyword: widget.keyword); @@ -92,31 +96,53 @@ class _SearchAndLogModalState extends State { setState(() => _searching = true); try { + final ingredientRatio = widget.isIngredient ? qty / 100 : 0.0; final ok = widget.submitter != null ? await widget.submitter!(_mealType, qty, selectedItem) : await widget.repository.createMealLog( - foodId: widget.isRecipe ? null : selectedItem?.id, + foodId: widget.isRecipe || widget.isIngredient + ? null + : selectedItem?.id, recipeId: widget.isRecipe ? selectedItem?.id : null, mealType: _mealType, quantityG: qty, - notes: selectedItem == null + notes: widget.isIngredient + ? 'Nguyên liệu nhận diện từ AI scan: ${widget.keyword}' + : selectedItem == null ? 'Ước tính từ AI scan: ${widget.keyword}' : null, - customName: selectedItem == null ? widget.keyword : null, + customName: widget.isIngredient + ? selectedItem?.name ?? widget.keyword + : selectedItem == null + ? widget.keyword + : null, + sourceType: widget.isIngredient + ? 'AiIngredientScan' + : fallbackNutrition != null + ? 'AiDishScan' + : null, loggedAt: DateTime.now(), - caloriesKcal: selectedItem == null + caloriesKcal: widget.isIngredient + ? (selectedItem?.caloriesKcal ?? 0) * ingredientRatio + : selectedItem == null ? fallbackNutrition!.tongCalories * widget.fallbackNutritionMultiplier : null, - proteinG: selectedItem == null + proteinG: widget.isIngredient + ? (selectedItem?.proteinG ?? 0) * ingredientRatio + : selectedItem == null ? fallbackNutrition!.proteinG * widget.fallbackNutritionMultiplier : null, - carbsG: selectedItem == null + carbsG: widget.isIngredient + ? (selectedItem?.carbsG ?? 0) * ingredientRatio + : selectedItem == null ? fallbackNutrition!.carbsG * widget.fallbackNutritionMultiplier : null, - fatG: selectedItem == null + fatG: widget.isIngredient + ? (selectedItem?.fatG ?? 0) * ingredientRatio + : selectedItem == null ? fallbackNutrition!.fatG * widget.fallbackNutritionMultiplier : null, ); diff --git a/frontend/lib/features/vietnam_local/providers/daily_starter_provider.dart b/frontend/lib/features/vietnam_local/providers/daily_starter_provider.dart index a0a81902..41df36c7 100644 --- a/frontend/lib/features/vietnam_local/providers/daily_starter_provider.dart +++ b/frontend/lib/features/vietnam_local/providers/daily_starter_provider.dart @@ -24,6 +24,7 @@ class DailyStarterProvider extends ChangeNotifier { DailyStarterPersonalization? _personalization; bool _isPersonalizationLoading = false; bool _isQuickLogging = false; + bool _isAddingToPlan = false; /// A single food that the user "randomed" — highlighted on top of the list. DailyStarterFood? _randomHighlight; @@ -34,6 +35,7 @@ class DailyStarterProvider extends ChangeNotifier { bool get isLoading => _isLoading; bool get isPersonalizationLoading => _isPersonalizationLoading; bool get isQuickLogging => _isQuickLogging; + bool get isAddingToPlan => _isAddingToPlan; bool get isRandomPicking => _isRandomPicking; String? get errorMessage => _errorMessage; String? get randomErrorMessage => _randomErrorMessage; @@ -42,8 +44,8 @@ class DailyStarterProvider extends ChangeNotifier { DailyStarterPersonalization? get personalization => _personalization; DailyStarterFood? get randomHighlight => _randomHighlight; int get randomUsedToday => _randomUsedToday; - int get randomRemaining => (randomDailyLimit - _randomUsedToday) - .clamp(0, randomDailyLimit); + int get randomRemaining => + (randomDailyLimit - _randomUsedToday).clamp(0, randomDailyLimit); /// Picks a random safe food from the featured pool and highlights it. /// @@ -57,7 +59,8 @@ class DailyStarterProvider extends ChangeNotifier { final remaining = await _picker.remaining(); if (remaining <= 0) { - _randomErrorMessage = 'Bạn đã dùng hết $randomDailyLimit lượt gợi ý ngẫu nhiên hôm nay.'; + _randomErrorMessage = + 'Bạn đã dùng hết $randomDailyLimit lượt gợi ý ngẫu nhiên hôm nay.'; notifyListeners(); return null; } @@ -81,9 +84,7 @@ class DailyStarterProvider extends ChangeNotifier { // Avoid picking the same highlight as last time when possible. final pool = _featured.length > 1 - ? _featured - .where((f) => f.id != (_randomHighlight?.id ?? '')) - .toList() + ? _featured.where((f) => f.id != (_randomHighlight?.id ?? '')).toList() : _featured; final picked = pool[_randomIndex(pool.length)]; @@ -193,6 +194,36 @@ class DailyStarterProvider extends ChangeNotifier { return result.data; } + Future addFoodToPlan({ + required DailyStarterFood food, + required String mealType, + }) async { + if (_isAddingToPlan || food.id.isEmpty) return false; + + _isAddingToPlan = true; + _errorMessage = null; + notifyListeners(); + + final result = await _repo.selectMeal({ + 'meals': [ + {'foodId': food.id, 'mealType': mealType}, + ], + }); + + _isAddingToPlan = false; + if (!result.success) { + _errorMessage = result.translatedMessage.isNotEmpty + ? result.translatedMessage + : 'Không thể thêm món vào kế hoạch.'; + notifyListeners(); + return false; + } + + _errorMessage = null; + notifyListeners(); + return true; + } + Future quickLog() async { if (_isQuickLogging) return null; _isQuickLogging = true; diff --git a/frontend/lib/features/vietnam_local/repositories/vietnam_local_repositories.dart b/frontend/lib/features/vietnam_local/repositories/vietnam_local_repositories.dart index deffe5f7..9236ccd8 100644 --- a/frontend/lib/features/vietnam_local/repositories/vietnam_local_repositories.dart +++ b/frontend/lib/features/vietnam_local/repositories/vietnam_local_repositories.dart @@ -1120,10 +1120,13 @@ class LuckyWheelRepository { final ApiClient _api; final _VietnamLocalApi _http = _VietnamLocalApi(); - Future>> getFoods() async { - final result = await _http._exec( - () => _api.get(ApiEndpoints.luckyWheelFoods), + Future>> getFoods({int? maxPriceVnd}) async { + final endpoint = Uri.parse(ApiEndpoints.luckyWheelFoods).replace( + queryParameters: maxPriceVnd != null && maxPriceVnd > 0 + ? {'maxPriceVnd': '$maxPriceVnd'} + : null, ); + final result = await _http._exec(() => _api.get(endpoint.toString())); if (!result.success) { return ApiResult>( success: false, diff --git a/frontend/lib/features/vietnam_local/utils/lucky_wheel_geometry.dart b/frontend/lib/features/vietnam_local/utils/lucky_wheel_geometry.dart new file mode 100644 index 00000000..207076c0 --- /dev/null +++ b/frontend/lib/features/vietnam_local/utils/lucky_wheel_geometry.dart @@ -0,0 +1,42 @@ +import 'dart:math' as math; + +/// The pointer is drawn at the top of the wheel. +const double luckyWheelPointerAngle = -math.pi / 2; + +double normalizeLuckyWheelAngle(double angle) { + final normalized = angle % (2 * math.pi); + return normalized < 0 ? normalized + 2 * math.pi : normalized; +} + +/// Returns the wheel rotation that places [selectedIndex] under the pointer. +double luckyWheelTargetRotation({ + required int selectedIndex, + required int segmentCount, +}) { + if (segmentCount <= 0) { + throw ArgumentError.value(segmentCount, 'segmentCount', 'must be positive'); + } + if (selectedIndex < 0 || selectedIndex >= segmentCount) { + throw RangeError.range(selectedIndex, 0, segmentCount - 1, 'selectedIndex'); + } + + final segmentAngle = (2 * math.pi) / segmentCount; + final selectedCenter = (selectedIndex + 0.5) * segmentAngle; + return normalizeLuckyWheelAngle(luckyWheelPointerAngle - selectedCenter); +} + +/// Returns the segment currently located under the top pointer. +int luckyWheelIndexAtPointer({ + required double rotation, + required int segmentCount, +}) { + if (segmentCount <= 0) { + throw ArgumentError.value(segmentCount, 'segmentCount', 'must be positive'); + } + + final segmentAngle = (2 * math.pi) / segmentCount; + final angleOnWheel = normalizeLuckyWheelAngle( + luckyWheelPointerAngle - rotation, + ); + return (angleOnWheel / segmentAngle).floor() % segmentCount; +} diff --git a/frontend/lib/features/vietnam_local/views/daily_starter_screen.dart b/frontend/lib/features/vietnam_local/views/daily_starter_screen.dart index b48189dc..de6fb16d 100644 --- a/frontend/lib/features/vietnam_local/views/daily_starter_screen.dart +++ b/frontend/lib/features/vietnam_local/views/daily_starter_screen.dart @@ -5,6 +5,7 @@ import '../../../core/constants/app_colors.dart'; import '../../../core/utils/nutrition_format.dart'; import '../../discover/views/food_detail_screen.dart'; import '../../discover/views/discover_view.dart'; +import '../../meal_plan/utils/fresh_meal_plan_navigation.dart'; import '../../meal_plan/views/meal_plan_screen.dart'; import '../../tracking/widgets/meal_log_sheet.dart'; import '../models/vietnam_local_models.dart'; @@ -160,52 +161,141 @@ class _DailyStarterScreenState extends State { Widget _buildRandomBar(DailyStarterProvider provider) { final remaining = provider.randomRemaining; final canTap = remaining > 0 && !provider.isRandomPicking; - return Row( + return Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Expanded( - child: Text( - remaining > 0 - ? 'Còn $remaining/${DailyStarterProvider.randomDailyLimit} lượt gợi ý ngẫu nhiên hôm nay.' - : 'Đã dùng hết ${DailyStarterProvider.randomDailyLimit}/${DailyStarterProvider.randomDailyLimit} lượt hôm nay.', - style: const TextStyle( - fontSize: 12, - color: AppColors.textSecondary, + Row( + children: [ + Expanded( + child: Text( + remaining > 0 + ? 'Còn $remaining/${DailyStarterProvider.randomDailyLimit} lượt gợi ý ngẫu nhiên hôm nay.' + : 'Đã dùng hết ${DailyStarterProvider.randomDailyLimit}/${DailyStarterProvider.randomDailyLimit} lượt hôm nay.', + style: const TextStyle( + fontSize: 12, + color: AppColors.textSecondary, + ), + ), ), - ), + TextButton.icon( + onPressed: canTap + ? () async { + final picked = await provider.pickRandomHighlight(); + if (picked == null && mounted) { + final msg = + provider.randomErrorMessage ?? + 'Không thể gợi ý lúc này.'; + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text(msg))); + } + } + : null, + icon: provider.isRandomPicking + ? const SizedBox( + width: 14, + height: 14, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : const Icon(Icons.casino, size: 18), + label: Text(remaining > 0 ? 'Random món' : 'Hết lượt'), + style: TextButton.styleFrom( + foregroundColor: remaining > 0 + ? AppColors.primary + : AppColors.textSecondary, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), + ), + ), + ], ), - TextButton.icon( - onPressed: canTap - ? () async { - final picked = await provider.pickRandomHighlight(); - if (picked == null && mounted) { - final msg = - provider.randomErrorMessage ?? - 'Không thể gợi ý lúc này.'; - ScaffoldMessenger.of( - context, - ).showSnackBar(SnackBar(content: Text(msg))); - } - } - : null, - icon: provider.isRandomPicking - ? const SizedBox( - width: 14, - height: 14, - child: CircularProgressIndicator(strokeWidth: 2), - ) - : const Icon(Icons.casino, size: 18), - label: Text(remaining > 0 ? 'Random món' : 'Hết lượt'), - style: TextButton.styleFrom( - foregroundColor: remaining > 0 - ? AppColors.primary - : AppColors.textSecondary, - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 4), - ), + const Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Icon( + Icons.verified_user_outlined, + size: 15, + color: AppColors.primary, + ), + SizedBox(width: 5), + Expanded( + child: Text( + 'Đã loại trừ dị ứng; ưu tiên ngân sách và lượng calo còn lại.', + style: TextStyle(fontSize: 11, color: AppColors.textSecondary), + ), + ), + ], ), ], ); } + Future _addRandomFoodToPlan( + DailyStarterProvider provider, + DailyStarterFood food, + ) async { + final mealType = await showModalBottomSheet( + context: context, + useSafeArea: true, + showDragHandle: true, + builder: (sheetContext) => Padding( + padding: const EdgeInsets.fromLTRB(20, 0, 20, 20), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + 'Thêm vào bữa nào?', + style: TextStyle(fontSize: 19, fontWeight: FontWeight.w700), + ), + const SizedBox(height: 6), + Text( + food.name, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: const TextStyle(color: AppColors.textSecondary), + ), + const SizedBox(height: 12), + for (final option in const [ + ('Breakfast', 'Bữa sáng', Icons.wb_sunny_outlined), + ('Lunch', 'Bữa trưa', Icons.wb_sunny_rounded), + ('Dinner', 'Bữa tối', Icons.nights_stay_outlined), + ('Snack', 'Bữa phụ', Icons.local_cafe_outlined), + ]) + ListTile( + minTileHeight: 52, + leading: Icon(option.$3, color: AppColors.primary), + title: Text(option.$2), + trailing: const Icon(Icons.chevron_right_rounded), + onTap: () => Navigator.pop(sheetContext, option.$1), + ), + ], + ), + ), + ); + + if (mealType == null || !mounted) return; + final added = await provider.addFoodToPlan(food: food, mealType: mealType); + if (!mounted) return; + + final messenger = ScaffoldMessenger.of(context); + messenger.hideCurrentSnackBar(); + if (!added) { + messenger.showSnackBar( + SnackBar( + content: Text( + provider.errorMessage ?? 'Không thể thêm món vào kế hoạch.', + ), + ), + ); + return; + } + + await openFreshMealPlan(context); + } + Widget _buildHighlightCard(DailyStarterProvider provider) { final food = provider.randomHighlight!; return TweenAnimationBuilder( @@ -226,72 +316,104 @@ class _DailyStarterScreenState extends State { borderRadius: BorderRadius.circular(12), border: Border.all(color: Colors.orange.shade300, width: 1.5), ), - child: Row( + child: Column( children: [ - Container( - padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 4, - ), - decoration: BoxDecoration( - color: Colors.orange.shade400, - borderRadius: BorderRadius.circular(8), - ), - child: const Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.casino, color: Colors.white, size: 14), - SizedBox(width: 4), - Text( - 'Ngẫu nhiên', - style: TextStyle( - color: Colors.white, - fontSize: 11, - fontWeight: FontWeight.w600, - ), + Row( + children: [ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, ), - ], - ), - ), - const SizedBox(width: 12), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - food.name.isEmpty ? 'Món gợi ý' : food.name, - style: const TextStyle( - fontWeight: FontWeight.bold, - fontSize: 15, - color: AppColors.textDark, - ), - maxLines: 1, - overflow: TextOverflow.ellipsis, + decoration: BoxDecoration( + color: Colors.orange.shade400, + borderRadius: BorderRadius.circular(8), ), - const SizedBox(height: 4), - Text( - formatNutritionFacts( - quantityG: food.defaultServingG, - caloriesKcal: food.caloriesKcal, - proteinG: food.proteinG, - carbsG: food.carbsG, - fatG: food.fatG, - ), - maxLines: 2, - overflow: TextOverflow.ellipsis, - style: const TextStyle( - fontSize: 12, - color: AppColors.textSecondary, - ), + child: const Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.casino, color: Colors.white, size: 14), + SizedBox(width: 4), + Text( + 'Ngẫu nhiên', + style: TextStyle( + color: Colors.white, + fontSize: 11, + fontWeight: FontWeight.w600, + ), + ), + ], ), - ], - ), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + food.name.isEmpty ? 'Món gợi ý' : food.name, + style: const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 15, + color: AppColors.textDark, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 4), + Text( + formatNutritionFacts( + quantityG: food.defaultServingG, + caloriesKcal: food.caloriesKcal, + proteinG: food.proteinG, + carbsG: food.carbsG, + fatG: food.fatG, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 12, + color: AppColors.textSecondary, + ), + ), + ], + ), + ), + IconButton( + tooltip: 'Bỏ gợi ý ngẫu nhiên', + onPressed: provider.clearRandomHighlight, + icon: const Icon(Icons.close, size: 18), + color: AppColors.textSecondary, + ), + ], ), - IconButton( - tooltip: 'Bỏ gợi ý ngẫu nhiên', - onPressed: provider.clearRandomHighlight, - icon: const Icon(Icons.close, size: 18), - color: AppColors.textSecondary, + const SizedBox(height: 12), + SizedBox( + width: double.infinity, + child: FilledButton.icon( + onPressed: provider.isAddingToPlan + ? null + : () => _addRandomFoodToPlan(provider, food), + icon: provider.isAddingToPlan + ? const SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : const Icon(Icons.add_to_photos_outlined, size: 18), + label: Text( + provider.isAddingToPlan + ? 'Đang thêm...' + : 'Thêm vào Kế hoạch ăn', + ), + style: FilledButton.styleFrom( + backgroundColor: AppColors.primary, + minimumSize: const Size.fromHeight(48), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + ), + ), ), ], ), diff --git a/frontend/lib/features/vietnam_local/views/gym_goals_screen.dart b/frontend/lib/features/vietnam_local/views/gym_goals_screen.dart index f3c98057..dcb07e9c 100644 --- a/frontend/lib/features/vietnam_local/views/gym_goals_screen.dart +++ b/frontend/lib/features/vietnam_local/views/gym_goals_screen.dart @@ -5,6 +5,7 @@ import '../../../core/constants/app_colors.dart'; import '../../../core/i18n/api_message_translator.dart'; import '../../../core/utils/meal_schedule_format.dart'; import '../../../core/utils/nutrition_format.dart'; +import '../../../core/widgets/calorie_adjustment_picker.dart'; import '../../../core/widgets/daily_calorie_balance_card.dart'; import '../../discover/views/food_detail_screen.dart'; import '../../discover/views/recipe_detail_screen.dart'; @@ -125,6 +126,14 @@ GymRouteApprovalPhase gymRouteApprovalPhase(Object? rawStatus) { }; } +@visibleForTesting +bool gymPlanIsPtManaged(UserMealPlan? plan) { + if (plan == null) return false; + final generatedBy = plan.generatedBy?.trim().toLowerCase(); + return const {'coach', 'pt_approved'}.contains(generatedBy) || + plan.status?.trim().toLowerCase() == 'approved'; +} + @visibleForTesting bool gymCanAutoBalancePlan({ required bool hasPlan, @@ -245,8 +254,20 @@ class _GymGoalsScreenState extends State { _ptConnectionPhase == GymPtConnectionPhase.connected; bool get _hasTodayPtProgram => - _todayPtProgram != null || - _todayPlan?.generatedBy?.trim().toLowerCase() == 'coach'; + _todayPtProgram != null || gymPlanIsPtManaged(_todayPlan); + + List get _visibleTodayPlanItems { + final items = _todayPlan?.items ?? const []; + if (_hasTodayPtProgram) return items; + return items + .where( + (item) => + item.origin == null || + item.origin!.isEmpty || + item.origin?.toLowerCase() == 'gym', + ) + .toList(); + } Future _loadTodayPtProgram() async { if (mounted) { @@ -293,7 +314,10 @@ class _GymGoalsScreenState extends State { _loadingPlan = true; }); try { - final plan = await MealPlanRepository().getByDate(_planDate); + // This screen is the plan editor. It must bypass the short-lived cache, + // especially after local seed/reset operations where cached plan IDs may + // no longer exist in the database. + final plan = await MealPlanRepository().getByDateFresh(_planDate); setState(() { _todayPlan = plan; _loadingPlan = false; @@ -308,7 +332,7 @@ class _GymGoalsScreenState extends State { Future _loadTodayPlanQuietly() async { if (!_hasProAccess) return; try { - final plan = await MealPlanRepository().getByDate(_planDate); + final plan = await MealPlanRepository().getByDateFresh(_planDate); if (mounted) { setState(() { _todayPlan = plan; @@ -336,13 +360,7 @@ class _GymGoalsScreenState extends State { bool get _hasTodayGymItems { if (_hasTodayPtProgram) return false; - if (_todayPlan == null) return false; - return _todayPlan!.items.any( - (x) => - x.origin == null || - x.origin!.isEmpty || - x.origin?.toLowerCase() == 'gym', - ); + return _visibleTodayPlanItems.isNotEmpty; } String get _planDateLabel => @@ -1082,16 +1100,7 @@ class _GymGoalsScreenState extends State { ), ); } - final gymItems = - _todayPlan?.items - .where( - (x) => - x.origin == null || - x.origin!.isEmpty || - x.origin?.toLowerCase() == 'gym', - ) - .toList() ?? - []; + final gymItems = _visibleTodayPlanItems; if (gymItems.isEmpty) { return Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -1362,16 +1371,7 @@ class _GymGoalsScreenState extends State { Widget _buildTodayMealPlan(GymGoalsProvider provider) { final slots = ['breakfast', 'lunch', 'dinner', 'snack']; final routePhase = gymRouteApprovalPhase(_activeRouteReq?['status']); - final gymItems = - _todayPlan?.items - .where( - (item) => - item.origin == null || - item.origin!.isEmpty || - item.origin!.toLowerCase() == 'gym', - ) - .toList() ?? - const []; + final gymItems = _visibleTodayPlanItems; final targetCalories = _todayPlan?.targetCalories ?? 0; final canAutoBalance = gymCanAutoBalancePlan( hasPlan: _todayPlan != null, @@ -1434,6 +1434,8 @@ class _GymGoalsScreenState extends State { .toSet() .length, canAutoBalance: canAutoBalance, + actionLabel: 'Tùy chỉnh', + allowAdjustmentWhenExact: true, lockedLabel: _balancingCalories ? 'Đang chỉnh' : _isSentToPt @@ -1448,6 +1450,29 @@ class _GymGoalsScreenState extends State { ), const SizedBox(height: 16), ], + if (!_hasTodayPtProgram && + !_isSentToPt && + _hasAcceptedPtConnection) ...[ + SizedBox( + width: double.infinity, + child: OutlinedButton.icon( + key: const ValueKey('gymer-add-meal-entry-button'), + onPressed: _addGymMealEntry, + icon: const Icon(Icons.add_circle_outline_rounded, size: 20), + label: const Text('Thêm bữa ăn'), + style: OutlinedButton.styleFrom( + minimumSize: const Size.fromHeight(48), + foregroundColor: AppColors.primary, + side: const BorderSide(color: AppColors.primary), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + ), + textStyle: const TextStyle(fontWeight: FontWeight.w800), + ), + ), + ), + const SizedBox(height: 16), + ], for (final slot in slots) ...[ _buildMealSlot(slot, provider), const SizedBox(height: 16), @@ -1943,6 +1968,12 @@ class _GymGoalsScreenState extends State { return; } + final desiredCalories = await showCalorieAdjustmentPicker( + context: context, + targetCalories: plan.targetCalories, + ); + if (desiredCalories == null || !mounted) return; + final originalTotal = items.fold( 0, (sum, item) => sum + item.targetCalories, @@ -1952,22 +1983,27 @@ class _GymGoalsScreenState extends State { final balanced = await MealPlanRepository().balanceDailyCalories( planId: plan.id, plannedDate: _planDate, - targetCalories: plan.targetCalories, + targetCalories: desiredCalories, itemIds: items.map((item) => item.id).toList(), + preservePlanTarget: true, ); if (!mounted) return; setState(() => _todayPlan = balanced); - final factor = originalTotal <= 0 - ? 1.0 - : plan.targetCalories / originalTotal; + final factor = originalTotal <= 0 ? 1.0 : desiredCalories / originalTotal; final percent = ((factor - 1).abs() * 100).round(); final action = factor >= 1 ? 'tăng' : 'giảm'; + final targetComparison = desiredCalories == plan.targetCalories + ? 'đúng mục tiêu' + : desiredCalories < plan.targetCalories + ? 'thấp hơn mục tiêu' + : 'cao hơn mục tiêu'; ScaffoldMessenger.of(context) ..hideCurrentSnackBar() ..showSnackBar( SnackBar( content: Text( - 'Đã $action khẩu phần khoảng $percent% và cân bằng về ${plan.targetCalories} kcal.', + 'Đã $action khẩu phần khoảng $percent% về $desiredCalories kcal ' + '($targetComparison ${plan.targetCalories} kcal).', ), ), ); @@ -1986,17 +2022,9 @@ class _GymGoalsScreenState extends State { Widget _buildMealSlot(String mealType, GymGoalsProvider provider) { // Chỉ hiển thị items có origin = 'gym' (từ AI Gym Goals) - final items = - _todayPlan?.items - .where( - (x) => - x.mealType.toLowerCase() == mealType && - (x.origin == null || - x.origin!.isEmpty || - x.origin?.toLowerCase() == 'gym'), - ) - .toList() ?? - []; + final items = _visibleTodayPlanItems + .where((item) => item.mealType.toLowerCase() == mealType) + .toList(); final color = _mealSlotColor(mealType); final hasMultipleItems = items.length > 1; final isExpanded = _mealSlotExpanded[mealType] ?? (!hasMultipleItems); @@ -2754,6 +2782,50 @@ class _GymGoalsScreenState extends State { ); } + Future _addGymMealEntry() async { + var selectedMealType = 'snack'; + final mealType = await showDialog( + context: context, + builder: (dialogContext) => StatefulBuilder( + builder: (context, setDialogState) => AlertDialog( + title: const Text('Thêm bữa ăn'), + content: DropdownButtonFormField( + initialValue: selectedMealType, + decoration: const InputDecoration( + labelText: 'Loại bữa ăn', + border: OutlineInputBorder(), + ), + items: const [ + DropdownMenuItem(value: 'breakfast', child: Text('Bữa sáng')), + DropdownMenuItem(value: 'lunch', child: Text('Bữa trưa')), + DropdownMenuItem(value: 'dinner', child: Text('Bữa tối')), + DropdownMenuItem(value: 'snack', child: Text('Bữa phụ')), + ], + onChanged: (value) { + if (value != null) { + setDialogState(() => selectedMealType = value); + } + }, + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(dialogContext).pop(), + child: const Text('Hủy'), + ), + FilledButton.icon( + onPressed: () => + Navigator.of(dialogContext).pop(selectedMealType), + icon: const Icon(Icons.restaurant_menu_rounded, size: 18), + label: const Text('Chọn món'), + ), + ], + ), + ), + ); + if (!mounted || mealType == null) return; + _showAddSuggestionSheet(mealType); + } + Future _sendToPt() async { if (_balancingCalories) { ScaffoldMessenger.of(context).showSnackBar( @@ -2798,7 +2870,7 @@ class _GymGoalsScreenState extends State { // The server snapshot is authoritative. Reload immediately before // submission so the Gymer and PT cannot send/read different calorie // revisions after a portion adjustment. - final latestPlan = await MealPlanRepository().getByDate(_planDate); + final latestPlan = await MealPlanRepository().getByDateFresh(_planDate); if (latestPlan == null) { throw Exception('Không tìm thấy lộ trình mới nhất để gửi PT duyệt.'); } diff --git a/frontend/lib/features/vietnam_local/views/lucky_wheel_screen.dart b/frontend/lib/features/vietnam_local/views/lucky_wheel_screen.dart index 8d5ee864..6b2e84a3 100644 --- a/frontend/lib/features/vietnam_local/views/lucky_wheel_screen.dart +++ b/frontend/lib/features/vietnam_local/views/lucky_wheel_screen.dart @@ -1,9 +1,12 @@ +import 'dart:async'; import 'dart:math' as math; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import '../../../core/constants/app_colors.dart'; +import '../../meal_plan/utils/fresh_meal_plan_navigation.dart'; import '../models/vietnam_local_models.dart'; import '../repositories/vietnam_local_repositories.dart'; +import '../utils/lucky_wheel_geometry.dart'; class LuckyWheelScreen extends StatefulWidget { const LuckyWheelScreen({super.key}); @@ -20,8 +23,11 @@ class _LuckyWheelScreenState extends State List _rawFoods = []; List _foods = []; bool _loading = true; + bool _filtering = false; String? _errorMessage; int? _targetBudget; + Timer? _budgetDebounce; + int _loadRequestId = 0; late AnimationController _rotationController; late Animation _rotationAnimation; @@ -45,31 +51,45 @@ class _LuckyWheelScreenState extends State @override void dispose() { + _budgetDebounce?.cancel(); _budgetController.dispose(); _rotationController.dispose(); super.dispose(); } - Future _loadFoods() async { + Future _loadFoods({ + int? maxPriceVnd, + bool showFullScreenLoader = true, + }) async { if (_spinning) return; + final requestId = ++_loadRequestId; setState(() { - _loading = true; + if (showFullScreenLoader) { + _loading = true; + } else { + _filtering = true; + } _errorMessage = null; }); _rotationController.reset(); _currentRotation = 0; - final result = await _repository.getFoods(); - if (result.success && result.data != null && result.data!.isNotEmpty) { + final result = await _repository.getFoods(maxPriceVnd: maxPriceVnd); + if (!mounted || requestId != _loadRequestId) return; + if (result.success) { setState(() { - _rawFoods = result.data!; + _rawFoods = result.data ?? []; _filterFoods(); _loading = false; + _filtering = false; }); } else { setState(() { + _rawFoods = []; + _foods = []; _errorMessage = result.translatedMessage; _loading = false; + _filtering = false; }); } } @@ -77,18 +97,26 @@ class _LuckyWheelScreenState extends State void _onBudgetChanged(String val) { final clean = val.replaceAll(RegExp(r'[^0-9]'), ''); final parsed = int.tryParse(clean); + final budget = (parsed != null && parsed > 0) ? parsed : null; setState(() { - _targetBudget = (parsed != null && parsed > 0) ? parsed : null; - _filterFoods(); + _targetBudget = budget; + _filtering = true; + _errorMessage = null; }); + _budgetDebounce?.cancel(); + _budgetDebounce = Timer( + const Duration(milliseconds: 900), + () => _loadFoods(maxPriceVnd: budget, showFullScreenLoader: false), + ); } void _clearBudget() { + _budgetDebounce?.cancel(); _budgetController.clear(); setState(() { _targetBudget = null; - _filterFoods(); }); + _loadFoods(showFullScreenLoader: false); if (mounted) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar( @@ -107,29 +135,14 @@ class _LuckyWheelScreenState extends State return; } - final target = _targetBudget!; - // Cho phép chênh lệch từ 4.000 đến 7.000 VNĐ (dùng tolerance max = 7000 VNĐ) - const tolerance = 7000; - final minPrice = math.max(0, target - tolerance); - final maxPrice = target + tolerance; - + final maxPrice = _targetBudget!; + // Ngân sách là mức trần, không phải giá mục tiêu xấp xỉ. final matched = _rawFoods.where((f) { - final price = f.estimatedPriceVnd ?? 0; - return price >= minPrice && price <= maxPrice; + final price = f.estimatedPriceVnd; + return price != null && price <= maxPrice; }).toList(); - if (matched.length >= 2) { - _foods = matched; - } else { - // Nếu không có đủ món trong khoảng ±7000, lấy danh sách các món có giá gần nhất - final sorted = List.from(_rawFoods) - ..sort((a, b) { - final diffA = ((a.estimatedPriceVnd ?? 0) - target).abs(); - final diffB = ((b.estimatedPriceVnd ?? 0) - target).abs(); - return diffA.compareTo(diffB); - }); - _foods = sorted.take(math.min(10, sorted.length)).toList(); - } + _foods = matched; } String _formatPrice(int amount) { @@ -147,10 +160,12 @@ class _LuckyWheelScreenState extends State final random = math.Random(); _selectedIndex = random.nextInt(_foods.length); - final segmentAngle = (2 * math.pi) / _foods.length; final targetRotation = (8 * math.pi) + - (2 * math.pi - (_selectedIndex * segmentAngle + segmentAngle / 2)); + luckyWheelTargetRotation( + selectedIndex: _selectedIndex, + segmentCount: _foods.length, + ); _rotationAnimation = Tween( @@ -175,6 +190,7 @@ class _LuckyWheelScreenState extends State void _showResultDialog(LuckyWheelFood food) { String selectedMealType = 'Lunch'; + bool applying = false; showDialog( context: context, barrierDismissible: false, @@ -491,32 +507,51 @@ class _LuckyWheelScreenState extends State ), elevation: 4, ), - onPressed: () async { - final applyRes = await _repository - .applySelection(food.id, selectedMealType); - if (!context.mounted) return; - Navigator.of(context).pop(); - if (applyRes.success) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text( - 'Đã thêm "${food.name}" vào bữa ăn của hôm nay.', - ), - backgroundColor: Colors.green, - ), - ); - Navigator.of(context).pop(); - } else { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(applyRes.translatedMessage), - backgroundColor: Colors.red, - ), - ); - } - }, - child: const Text( - 'Ăn món này', + onPressed: applying + ? null + : () async { + setDialogState(() => applying = true); + final applyRes = await _repository + .applySelection( + food.id, + selectedMealType, + ); + if (!mounted) return; + if (applyRes.success) { + if (context.mounted) { + Navigator.of(context).pop(); + } + ScaffoldMessenger.of( + this.context, + ).showSnackBar( + SnackBar( + content: Text( + 'Đã thêm "${food.name}" vào kế hoạch hôm nay.', + ), + backgroundColor: Colors.green, + ), + ); + await openFreshMealPlan(this.context); + } else { + ScaffoldMessenger.of( + this.context, + ).showSnackBar( + SnackBar( + content: Text( + applyRes.translatedMessage, + ), + backgroundColor: Colors.red, + ), + ); + if (context.mounted) { + setDialogState( + () => applying = false, + ); + } + } + }, + child: Text( + applying ? 'Đang thêm...' : 'Ăn món này', style: TextStyle( color: Colors.white, fontWeight: FontWeight.bold, @@ -589,7 +624,9 @@ class _LuckyWheelScreenState extends State color: Colors.amber, ), tooltip: 'Đổi danh sách món mới', - onPressed: _spinning ? null : _loadFoods, + onPressed: _spinning + ? null + : () => _loadFoods(maxPriceVnd: _targetBudget), ), ], ), @@ -620,7 +657,7 @@ class _LuckyWheelScreenState extends State ), const SizedBox(height: 20), ElevatedButton( - onPressed: _loadFoods, + onPressed: () => _loadFoods(maxPriceVnd: _targetBudget), child: const Text( 'Thử lại', style: TextStyle(fontSize: 16), @@ -691,7 +728,7 @@ class _LuckyWheelScreenState extends State fontWeight: FontWeight.bold, ), decoration: InputDecoration( - hintText: 'Nhập ngân sách mong muốn (VNĐ)...', + hintText: 'Nhập ngân sách tối đa (VNĐ)...', hintStyle: const TextStyle( color: Colors.white38, fontSize: 15, @@ -718,6 +755,12 @@ class _LuckyWheelScreenState extends State : null, ), ), + if (_filtering) + const LinearProgressIndicator( + minHeight: 2, + color: Colors.amber, + backgroundColor: Colors.white12, + ), ], ), ), @@ -743,27 +786,52 @@ class _LuckyWheelScreenState extends State ); }, ), - // Wheel Center Cap - Container( - width: 64, - height: 64, - decoration: const BoxDecoration( - shape: BoxShape.circle, - color: Color(0xFF1E293B), - boxShadow: [ - BoxShadow( - color: Colors.black54, - blurRadius: 10, - spreadRadius: 2, - ), - ], + if (_foods.isEmpty) + const Padding( + padding: EdgeInsets.symmetric(horizontal: 48), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.restaurant_menu_outlined, + color: Colors.white38, + size: 42, + ), + SizedBox(height: 12), + Text( + 'Không có món phù hợp\nHãy nhập ngân sách khác', + textAlign: TextAlign.center, + style: TextStyle( + color: Colors.white60, + fontSize: 15, + height: 1.4, + ), + ), + ], + ), ), - child: const Icon( - Icons.star, - color: Colors.amber, - size: 34, + // Wheel Center Cap + if (_foods.isNotEmpty) + Container( + width: 64, + height: 64, + decoration: const BoxDecoration( + shape: BoxShape.circle, + color: Color(0xFF1E293B), + boxShadow: [ + BoxShadow( + color: Colors.black54, + blurRadius: 10, + spreadRadius: 2, + ), + ], + ), + child: const Icon( + Icons.star, + color: Colors.amber, + size: 34, + ), ), - ), // Wheel Top Pointer Positioned( top: -8, @@ -784,7 +852,8 @@ class _LuckyWheelScreenState extends State height: 60, child: ElevatedButton( style: ElevatedButton.styleFrom( - backgroundColor: _spinning + backgroundColor: + (_spinning || _filtering || _foods.isEmpty) ? Colors.grey : AppColors.primary, shape: RoundedRectangleBorder( @@ -795,9 +864,18 @@ class _LuckyWheelScreenState extends State alpha: 0.4, ), ), - onPressed: _spinning ? null : _spin, + onPressed: + (_spinning || _filtering || _foods.isEmpty) + ? null + : _spin, child: Text( - _spinning ? 'Đang quay...' : 'Quay Ngay 🎲', + _spinning + ? 'Đang quay...' + : _filtering + ? 'Đang lọc món...' + : _foods.isEmpty + ? 'Nhập ngân sách khác' + : 'Quay Ngay 🎲', style: const TextStyle( color: Colors.white, fontSize: 22, @@ -821,7 +899,12 @@ class _LuckyWheelScreenState extends State borderRadius: BorderRadius.circular(16), ), ), - onPressed: _spinning ? null : _loadFoods, + onPressed: (_spinning || _filtering) + ? null + : () => _loadFoods( + maxPriceVnd: _targetBudget, + showFullScreenLoader: false, + ), icon: const Icon(Icons.refresh_rounded, size: 22), label: const Text( 'Đổi danh sách món mới 🔄', @@ -861,11 +944,29 @@ class _WheelPainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { - if (foods.isEmpty) return; - final center = Offset(size.width / 2, size.height / 2); final radius = size.width / 2; final rect = Rect.fromCircle(center: center, radius: radius); + + if (foods.isEmpty) { + canvas.drawCircle( + center, + radius, + Paint() + ..color = const Color(0xFF1E293B) + ..style = PaintingStyle.fill, + ); + canvas.drawCircle( + center, + radius, + Paint() + ..color = const Color(0xFFFFD700).withValues(alpha: 0.45) + ..style = PaintingStyle.stroke + ..strokeWidth = 4, + ); + return; + } + final anglePerSegment = (2 * math.pi) / foods.length; for (int i = 0; i < foods.length; i++) { diff --git a/frontend/lib/features/vietnam_local/views/planned_vs_actual_screen.dart b/frontend/lib/features/vietnam_local/views/planned_vs_actual_screen.dart index fcf6f50d..f2da601c 100644 --- a/frontend/lib/features/vietnam_local/views/planned_vs_actual_screen.dart +++ b/frontend/lib/features/vietnam_local/views/planned_vs_actual_screen.dart @@ -443,7 +443,7 @@ class _DailyProgressCard extends StatelessWidget { const SizedBox(width: 10), Expanded( child: _MacroProgress( - label: 'Carbs', + label: 'Carb', value: summary?.totalCarbsG ?? 0, target: summary?.targetCarbsG ?? 0, color: const Color(0xFFF59E0B), diff --git a/frontend/pubspec.yaml b/frontend/pubspec.yaml index 64a79366..91bc29d3 100644 --- a/frontend/pubspec.yaml +++ b/frontend/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.0+16 +version: 1.0.0+17 environment: sdk: ^3.11.1 diff --git a/frontend/test/coach_create_meal_plan_suggestions_test.dart b/frontend/test/coach_create_meal_plan_suggestions_test.dart index d6a64fe8..4c6c3b5f 100644 --- a/frontend/test/coach_create_meal_plan_suggestions_test.dart +++ b/frontend/test/coach_create_meal_plan_suggestions_test.dart @@ -39,6 +39,17 @@ void main() { expect(find.text('Danh sách món ăn gợi ý'), findsOneWidget); expect(find.text('Khởi tạo lộ trình mới'), findsOneWidget); expect(find.text('Trang 1/2'), findsOneWidget); + final addMealButton = find.byKey(const ValueKey('add-meal-entry-button')); + await tester.ensureVisible(addMealButton); + await tester.pumpAndSettle(); + expect(addMealButton, findsOneWidget); + await tester.tap(addMealButton); + await tester.pumpAndSettle(); + expect(find.byType(AlertDialog), findsOneWidget); + expect(find.byType(DropdownButtonFormField), findsOneWidget); + expect(find.byType(DropdownButtonFormField), findsOneWidget); + await tester.tap(find.byType(TextButton).last); + await tester.pumpAndSettle(); expect(find.text('Món phân trang 7'), findsNothing); await tester.ensureVisible(find.byTooltip('Trang sau')); @@ -68,14 +79,21 @@ void main() { expect(find.text('Gợi ý: giảm khẩu phần khoảng 30%'), findsWidgets); expect(find.text('4/4 bữa'), findsWidgets); - final autoBalanceButton = find.text('Tự chỉnh').first; + final autoBalanceButton = find.text('Tùy chỉnh').first; await tester.ensureVisible(autoBalanceButton); await tester.pumpAndSettle(); await tester.tap(autoBalanceButton); await tester.pumpAndSettle(); + expect(find.text('Thấp hơn'), findsOneWidget); + expect(find.text('Cân bằng'), findsOneWidget); + expect(find.text('Cao hơn'), findsOneWidget); + await tester.tap(find.text('Thấp hơn')); + await tester.pumpAndSettle(); + await tester.tap(find.text('Áp dụng 1350 kcal')); + await tester.pumpAndSettle(); - expect(find.text('1500 / 1500 kcal', findRichText: true), findsOneWidget); - expect(find.text('Đạt mục tiêu'), findsOneWidget); + expect(find.text('1350 / 1500 kcal', findRichText: true), findsOneWidget); + expect(find.text('Thiếu 150 kcal'), findsOneWidget); final editButton = find .byWidgetPredicate( diff --git a/frontend/test/coach_meal_plan_submit_lifecycle_test.dart b/frontend/test/coach_meal_plan_submit_lifecycle_test.dart index 05699822..d21e949f 100644 --- a/frontend/test/coach_meal_plan_submit_lifecycle_test.dart +++ b/frontend/test/coach_meal_plan_submit_lifecycle_test.dart @@ -134,11 +134,16 @@ void main() { expect(find.text('Tổng kcal của 4 bữa'), findsOneWidget); expect(find.text('Vượt 400 kcal'), findsOneWidget); - final autoButton = find.text('Tự chỉnh'); + final autoButton = find.text('Tùy chỉnh'); await tester.ensureVisible(autoButton); await tester.pumpAndSettle(); await tester.tap(autoButton); await tester.pumpAndSettle(); + expect(find.text('Thấp hơn'), findsOneWidget); + expect(find.text('Cân bằng'), findsOneWidget); + expect(find.text('Cao hơn'), findsOneWidget); + await tester.tap(find.text('Áp dụng 2000 kcal')); + await tester.pumpAndSettle(); expect(find.text('2000 / 2000 kcal', findRichText: true), findsOneWidget); expect(find.text('Đạt mục tiêu'), findsOneWidget); diff --git a/frontend/test/coach_meal_plan_tracking_test.dart b/frontend/test/coach_meal_plan_tracking_test.dart index 7e63ac12..a8fd4f5a 100644 --- a/frontend/test/coach_meal_plan_tracking_test.dart +++ b/frontend/test/coach_meal_plan_tracking_test.dart @@ -7,6 +7,35 @@ import 'package:frontend/features/coach_pt/views/coach_meal_plan_detail_screen.d import 'package:provider/provider.dart'; void main() { + test('tracking excludes logs outside the selected plan date', () { + final current = ClientMealLogItem( + id: 'current-log', + mealType: 'dinner', + calories: 434, + proteinG: 44, + carbsG: 39, + fatG: 10, + loggedAt: DateTime(2026, 8, 13, 18, 30), + ); + final old = ClientMealLogItem( + id: 'old-log', + mealType: 'dinner', + calories: 620, + proteinG: 48, + carbsG: 45, + fatG: 24, + loggedAt: DateTime(2026, 8, 12, 19, 14), + ); + + final result = coachLogsForPlanRange( + [old, current], + DateTime(2026, 8, 13), + DateTime(2026, 8, 13), + ); + + expect(result.map((log) => log.id), ['current-log']); + }); + test('nutrition summary reads target fields and actual meal logs', () { final summary = ClientDayNutrition.fromJson({ 'Date': '2026-08-11', diff --git a/frontend/test/daily_starter_add_to_plan_test.dart b/frontend/test/daily_starter_add_to_plan_test.dart new file mode 100644 index 00000000..b5dd6990 --- /dev/null +++ b/frontend/test/daily_starter_add_to_plan_test.dart @@ -0,0 +1,61 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:frontend/features/vietnam_local/models/vietnam_local_models.dart'; +import 'package:frontend/features/vietnam_local/providers/daily_starter_provider.dart'; +import 'package:frontend/features/vietnam_local/repositories/vietnam_local_repositories.dart'; + +void main() { + const food = DailyStarterFood( + id: 'fd000001-0000-0000-0000-000000000001', + name: 'Ức gà áp chảo', + caloriesKcal: 165, + ); + + test('adds the random food to the selected meal slot', () async { + final repository = _FakeDailyStarterRepository(); + final provider = DailyStarterProvider(repository: repository); + + final added = await provider.addFoodToPlan(food: food, mealType: 'Lunch'); + + expect(added, isTrue); + expect(provider.isAddingToPlan, isFalse); + expect(provider.errorMessage, isNull); + expect(repository.lastPayload, { + 'meals': [ + {'foodId': food.id, 'mealType': 'Lunch'}, + ], + }); + }); + + test('exposes the API error when adding to the plan fails', () async { + final repository = _FakeDailyStarterRepository(shouldFail: true); + final provider = DailyStarterProvider(repository: repository); + + final added = await provider.addFoodToPlan(food: food, mealType: 'Dinner'); + + expect(added, isFalse); + expect(provider.isAddingToPlan, isFalse); + expect(provider.errorMessage, 'Kế hoạch không thể chỉnh sửa.'); + }); +} + +class _FakeDailyStarterRepository extends DailyStarterRepository { + _FakeDailyStarterRepository({this.shouldFail = false}); + + final bool shouldFail; + Map? lastPayload; + + @override + Future> selectMeal(Map payload) async { + lastPayload = payload; + if (shouldFail) { + return const ApiResult( + success: false, + message: 'Kế hoạch không thể chỉnh sửa.', + ); + } + return const ApiResult( + success: true, + data: 'Đã thêm món vào kế hoạch.', + ); + } +} diff --git a/frontend/test/gym_plan_suggestions_test.dart b/frontend/test/gym_plan_suggestions_test.dart index e13ae1fc..7e7e1dd1 100644 --- a/frontend/test/gym_plan_suggestions_test.dart +++ b/frontend/test/gym_plan_suggestions_test.dart @@ -1,9 +1,31 @@ +import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:frontend/core/widgets/calorie_adjustment_picker.dart'; +import 'package:frontend/core/widgets/daily_calorie_balance_card.dart'; import 'package:frontend/features/vietnam_local/models/vietnam_local_models.dart'; import 'package:frontend/features/vietnam_local/views/gym_goals_screen.dart'; +import 'package:frontend/features/meal_plan/models/meal_plan_models.dart'; void main() { group('GymPlanSuggestions', () { + test( + 'an approved route is treated as PT-managed and cannot be recreated', + () { + final plan = UserMealPlan( + id: 'approved-plan', + title: 'Approved route', + planType: 'DAILY', + startDate: '2026-08-13', + targetCalories: 2000, + generatedBy: 'PT_APPROVED', + status: 'Approved', + items: const [], + ); + + expect(gymPlanIsPtManaged(plan), isTrue); + }, + ); + test('keeps an unconfigured date empty', () { final result = GymPlanSuggestions.fromJson({ 'date': '2026-07-28', @@ -103,6 +125,60 @@ void main() { isFalse, ); }); + + test( + 'calculates below, balanced and above totals from the same target', + () { + expect( + calorieAdjustmentTotal( + targetCalories: 2000, + mode: CalorieAdjustmentMode.below, + percentage: 10, + ), + 1800, + ); + expect( + calorieAdjustmentTotal( + targetCalories: 2000, + mode: CalorieAdjustmentMode.balanced, + percentage: 10, + ), + 2000, + ); + expect( + calorieAdjustmentTotal( + targetCalories: 2000, + mode: CalorieAdjustmentMode.above, + percentage: 10, + ), + 2200, + ); + }, + ); + + testWidgets('an exact Gym plan can still open calorie customization', ( + tester, + ) async { + var pressed = false; + await tester.pumpWidget( + MaterialApp( + home: Scaffold( + body: DailyCalorieBalanceCard( + totalCalories: 2000, + targetCalories: 2000, + mealCount: 4, + actionLabel: 'Tùy chỉnh', + allowAdjustmentWhenExact: true, + onAutoBalance: () => pressed = true, + ), + ), + ), + ); + + await tester.tap(find.text('Tùy chỉnh')); + + expect(pressed, isTrue); + }); }); group('GymGoalProfile.resolveForDate', () { diff --git a/frontend/test/lucky_wheel_geometry_test.dart b/frontend/test/lucky_wheel_geometry_test.dart new file mode 100644 index 00000000..94cd0458 --- /dev/null +++ b/frontend/test/lucky_wheel_geometry_test.dart @@ -0,0 +1,27 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:frontend/features/vietnam_local/utils/lucky_wheel_geometry.dart'; + +void main() { + test('every selected segment stops under the top pointer', () { + for (var segmentCount = 2; segmentCount <= 10; segmentCount++) { + for ( + var selectedIndex = 0; + selectedIndex < segmentCount; + selectedIndex++ + ) { + final rotation = luckyWheelTargetRotation( + selectedIndex: selectedIndex, + segmentCount: segmentCount, + ); + + expect( + luckyWheelIndexAtPointer( + rotation: rotation, + segmentCount: segmentCount, + ), + selectedIndex, + ); + } + } + }); +} diff --git a/frontend/test/meal_log_item_type_test.dart b/frontend/test/meal_log_item_type_test.dart new file mode 100644 index 00000000..2d6fe07a --- /dev/null +++ b/frontend/test/meal_log_item_type_test.dart @@ -0,0 +1,49 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:frontend/features/tracking/models/meal_log_item.dart'; + +void main() { + group('MealLogItem type classification', () { + test('recognizes a newly saved AI ingredient scan', () { + final item = MealLogItem.fromJson({ + 'id': 'ingredient-log', + 'mealType': 'lunch', + 'quantityG': 200, + 'caloriesKcal': 286, + 'loggedAt': '2026-08-14T05:33:00Z', + 'displayName': 'Thịt bò tươi', + 'sourceType': 'AiIngredientScan', + }); + + expect(item.isIngredient, isTrue); + }); + + test('recognizes a legacy ingredient scan from its notes', () { + final item = MealLogItem.fromJson({ + 'id': 'legacy-log', + 'mealType': 'lunch', + 'quantityG': 200, + 'caloriesKcal': 286, + 'loggedAt': '2026-08-14T05:33:00Z', + 'displayName': 'Thịt bò tươi', + 'sourceType': 'AiScan', + 'notes': 'Nguyên liệu nhận diện từ AI scan: Thịt bò tươi', + }); + + expect(item.isIngredient, isTrue); + }); + + test('keeps dishes separate from ingredients', () { + final item = MealLogItem.fromJson({ + 'id': 'dish-log', + 'mealType': 'lunch', + 'quantityG': 350, + 'caloriesKcal': 520, + 'loggedAt': '2026-08-14T05:33:00Z', + 'displayName': 'Bò xào rau củ', + 'sourceType': 'AiDishScan', + }); + + expect(item.isIngredient, isFalse); + }); + }); +} diff --git a/frontend/test/meal_log_sheet_test.dart b/frontend/test/meal_log_sheet_test.dart new file mode 100644 index 00000000..3fdb8607 --- /dev/null +++ b/frontend/test/meal_log_sheet_test.dart @@ -0,0 +1,84 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:frontend/features/tracking/repositories/nutrition_tracking_repository.dart'; +import 'package:frontend/features/tracking/widgets/meal_log_sheet.dart'; + +class _FakeNutritionTrackingRepository extends NutritionTrackingRepository { + int getFoodsCalls = 0; + String? customName; + String? mealType; + double? quantityG; + + @override + Future> getFoods({String? keyword}) async { + getFoodsCalls++; + return const []; + } + + @override + Future createMealLog({ + String? foodId, + String? recipeId, + required String mealType, + required double quantityG, + String? notes, + DateTime? loggedAt, + double? caloriesKcal, + double? proteinG, + double? carbsG, + double? fatG, + String? customName, + String? sourceType, + }) async { + this.customName = customName; + this.mealType = mealType; + this.quantityG = quantityG; + return true; + } +} + +void main() { + testWidgets('logs a suggested custom dish without rebuilding catalog loads', ( + tester, + ) async { + final repository = _FakeNutritionTrackingRepository(); + bool? result; + + await tester.pumpWidget( + MaterialApp( + home: Scaffold( + body: Builder( + builder: (context) => ElevatedButton( + onPressed: () async { + result = await showMealLogSheet( + context, + initialFoodName: 'Súp nấm hạt sen gà xé', + caloriesKcal: 250, + repository: repository, + ); + }, + child: const Text('Mở'), + ), + ), + ), + ), + ); + + await tester.tap(find.text('Mở')); + await tester.pumpAndSettle(); + + expect(find.text('Ghi vào nhật ký'), findsOneWidget); + expect(find.text('Món: Súp nấm hạt sen gà xé'), findsOneWidget); + expect(find.text('Tải danh sách'), findsNothing); + expect(repository.getFoodsCalls, 0); + + await tester.tap(find.widgetWithText(ElevatedButton, 'Ghi')); + await tester.pumpAndSettle(); + + expect(tester.takeException(), isNull); + expect(result, isTrue); + expect(repository.customName, 'Súp nấm hạt sen gà xé'); + expect(repository.mealType, 'breakfast'); + expect(repository.quantityG, 100); + }); +} diff --git a/frontend/test/meal_plan_external_refresh_test.dart b/frontend/test/meal_plan_external_refresh_test.dart new file mode 100644 index 00000000..259a2242 --- /dev/null +++ b/frontend/test/meal_plan_external_refresh_test.dart @@ -0,0 +1,54 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:frontend/features/meal_plan/models/meal_plan_models.dart'; +import 'package:frontend/features/meal_plan/models/meal_plan_responses.dart'; +import 'package:frontend/features/meal_plan/providers/meal_plan_provider.dart'; +import 'package:frontend/features/meal_plan/repositories/meal_plan_repository.dart'; + +void main() { + test( + 'external mutation invalidates cache and reloads plan dashboard', + () async { + final repository = _FakeMealPlanRepository(); + final provider = MealPlanProvider(repository: repository); + addTearDown(provider.dispose); + + await provider.refreshAfterExternalMutation(); + + expect(repository.invalidateCalls, 1); + expect(repository.planLoadCalls, 1); + expect(repository.dashboardLoadCalls, 1); + expect(provider.isLoading, isFalse); + }, + ); +} + +class _FakeMealPlanRepository extends MealPlanRepository { + int invalidateCalls = 0; + int planLoadCalls = 0; + int dashboardLoadCalls = 0; + + @override + void invalidateCache() { + invalidateCalls++; + } + + @override + Future> getPlans({bool? isActive}) async { + planLoadCalls++; + return []; + } + + @override + Future getDashboard(DateTime date) async { + dashboardLoadCalls++; + throw Exception('Use adherence fallback in this isolated test.'); + } + + @override + Future getAdherence(DateTime date) async => null; + + @override + Future getStreaks() async { + throw Exception('Streak data is unrelated to this test.'); + } +} diff --git a/frontend/test/micro_learning_rescue_plan_test.dart b/frontend/test/micro_learning_rescue_plan_test.dart new file mode 100644 index 00000000..148fe646 --- /dev/null +++ b/frontend/test/micro_learning_rescue_plan_test.dart @@ -0,0 +1,29 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:frontend/features/micro_learning/models/micro_learning_models.dart'; + +void main() { + test('maps a rescue food to a pending custom meal-plan item', () { + const food = RescueFood( + name: 'Súp nấm hạt sen gà xé', + caloriesKcal: 250, + proteinG: 22, + carbsG: 28, + fatG: 5.5, + estimatedPriceVnd: 45000, + description: 'Món gợi ý khi căng thẳng.', + ); + + final payload = food.toPlanMealJson('Dinner'); + expect(payload, { + 'mealType': 'Dinner', + 'customName': 'Súp nấm hạt sen gà xé', + 'quantityG': 100, + 'caloriesKcal': 250, + 'proteinG': 22, + 'carbsG': 28, + 'fatG': 5.5, + }); + expect(payload.containsKey('foodId'), isFalse); + expect(payload.containsKey('isCompleted'), isFalse); + }); +} diff --git a/frontend/test/route_approval_completion_test.dart b/frontend/test/route_approval_completion_test.dart index 3c192719..902b88b9 100644 --- a/frontend/test/route_approval_completion_test.dart +++ b/frontend/test/route_approval_completion_test.dart @@ -1,4 +1,5 @@ import 'package:flutter_test/flutter_test.dart'; +import 'package:frontend/features/gymer/models/route_approval_detail.dart'; import 'package:frontend/features/gymer/views/route_approval_detail_screen.dart'; import 'package:frontend/features/meal_plan/models/meal_plan_models.dart'; import 'package:frontend/features/tracking/models/nutrition_models.dart'; @@ -51,4 +52,40 @@ void main() { expect(isRouteMealCompleted(plannedMeal, [unrelatedLog]), isFalse); }); + + test('stale approval item id resolves to the current adjusted portion', () { + final date = DateTime(2026, 8, 13); + final snapshot = RouteApprovalMeal( + id: 'deleted-item-id', + mealType: 'breakfast', + name: 'CÆ¡m tấm sườn bì chả', + calories: 530, + isCompleted: false, + foodId: 'food-com-tam', + plannedDate: date, + scheduledTime: '07:30:00', + quantityG: 299.3, + ); + final currentItem = MealPlanItemModel( + id: 'current-item-id', + mealType: 'breakfast', + foodId: 'food-com-tam', + targetCalories: 530, + isCompleted: false, + foodName: 'CÆ¡m tấm sườn bì chả', + plannedDate: date, + scheduledTime: '07:30:00', + quantityG: 299.3, + ); + final plan = UserMealPlan( + id: 'plan-1', + title: 'Daily plan', + planType: 'DAILY', + startDate: '2026-08-13', + targetCalories: 2000, + items: [currentItem], + ); + + expect(resolveCurrentRouteMealItem(snapshot, plan)?.id, 'current-item-id'); + }); } diff --git a/frontend/test/route_approval_detail_test.dart b/frontend/test/route_approval_detail_test.dart index 794be807..21f461b8 100644 --- a/frontend/test/route_approval_detail_test.dart +++ b/frontend/test/route_approval_detail_test.dart @@ -20,6 +20,7 @@ void main() { 'configurationStartDate': '2026-07-30', 'configurationEndDate': '2026-07-30', 'reportData': { + 'mealPlanId': 'plan-current-1', 'studentHealthProfile': { 'targetProteinG': 122, 'targetCarbsG': 200, @@ -52,6 +53,7 @@ void main() { expect(detail.ptComment, 'Ưu tiên rau xanh và uống đủ nước.'); expect(detail.requestType, 'RouteApproval'); + expect(detail.mealPlanId, 'plan-current-1'); expect(detail.createdAt, DateTime.utc(2026, 7, 30, 5, 47)); expect(detail.suggestedCalorieTarget, 2000); expect(detail.configuredCalorieTarget, 1500); diff --git a/frontend/test/search_and_log_modal_test.dart b/frontend/test/search_and_log_modal_test.dart index 2332ad9e..4fd8f664 100644 --- a/frontend/test/search_and_log_modal_test.dart +++ b/frontend/test/search_and_log_modal_test.dart @@ -13,6 +13,7 @@ class _FakeNutritionTrackingRepository extends NutritionTrackingRepository { double? proteinG; double? carbsG; double? fatG; + String? sourceType; @override Future> getRecipes({String? keyword}) async => []; @@ -30,6 +31,7 @@ class _FakeNutritionTrackingRepository extends NutritionTrackingRepository { double? carbsG, double? fatG, String? customName, + String? sourceType, }) async { this.foodId = foodId; this.recipeId = recipeId; @@ -40,6 +42,7 @@ class _FakeNutritionTrackingRepository extends NutritionTrackingRepository { this.proteinG = proteinG; this.carbsG = carbsG; this.fatG = fatG; + this.sourceType = sourceType; return true; } } @@ -94,6 +97,7 @@ void main() { expect(repository.proteinG, 45); expect(repository.carbsG, 37.5); expect(repository.fatG, 30); + expect(repository.sourceType, 'AiDishScan'); }); testWidgets('routes Office confirmation through the sync submitter', (