feat: implement advanced tagging system, tag weighting, and app focus refactoring

- Implemented reusable TagSelector component with i18n support
- Added tag weighting system (popularity scores 1-5)
- Created admin panel for tag management
- Integrated Nebius AI and Brave Search for 'Magic Scan'
- Refactored app focus: removed bottle status, updated counters, and displayed extended bottle details
- Updated i18n for German and English
- Added database migration scripts
This commit is contained in:
2025-12-19 12:58:44 +01:00
parent 9eb9b41061
commit b2a1d292da
30 changed files with 2420 additions and 194 deletions

View File

@@ -1,17 +1,17 @@
import { z } from 'zod';
export const BottleMetadataSchema = z.object({
name: z.string().nullable(),
distillery: z.string().nullable(),
category: z.string().nullable(),
abv: z.number().nullable(),
age: z.number().nullable(),
vintage: z.string().nullable(),
bottleCode: z.string().nullable(),
whiskybaseId: z.string().nullable(),
distilled_at: z.string().nullable(),
bottled_at: z.string().nullable(),
batch_info: z.string().nullable(),
name: z.string().nullish(),
distillery: z.string().nullish(),
category: z.string().nullish(),
abv: z.number().nullish(),
age: z.number().nullish(),
vintage: z.string().nullish(),
bottleCode: z.string().nullish(),
whiskybaseId: z.string().nullish(),
distilled_at: z.string().nullish(),
bottled_at: z.string().nullish(),
batch_info: z.string().nullish(),
is_whisky: z.boolean().default(true),
confidence: z.number().min(0).max(100).default(100),
});