fix: resolve magic scan crash and implement context-aware AI languages

- Fixed SQL syntax error in magicScan caused by single quotes
- Implemented dynamic locale-aware AI suggestions (Technical: EN, Custom Tags: Localized)
- Updated Dexie schema to version 2 (added locale to pending_scans)
- Fixed missing bottle_id in UploadQueue synchronization
- Installed missing dexie dependencies via pnpm
This commit is contained in:
2025-12-19 14:06:13 +01:00
parent 60ca3a6190
commit f52cfb80fc
9 changed files with 61 additions and 22 deletions

View File

@@ -26,7 +26,7 @@ interface CameraCaptureProps {
}
export default function CameraCapture({ onImageCaptured, onAnalysisComplete, onSaveComplete }: CameraCaptureProps) {
const { t } = useI18n();
const { t, locale } = useI18n();
const supabase = createClientComponentClient();
const router = useRouter();
const searchParams = useSearchParams();
@@ -128,13 +128,14 @@ export default function CameraCapture({ onImageCaptured, onAnalysisComplete, onS
await db.pending_scans.add({
imageBase64: compressedBase64,
timestamp: Date.now(),
provider: aiProvider
provider: aiProvider,
locale: locale
});
setIsQueued(true);
return;
}
const response = await magicScan(compressedBase64, aiProvider);
const response = await magicScan(compressedBase64, aiProvider, locale);
if (response.success && response.data) {
setAnalysisResult(response.data);

View File

@@ -37,7 +37,7 @@ export default function UploadQueue() {
const itemId = `scan-${item.id}`;
setCurrentProgress({ id: itemId, status: 'Analysiere Scan...' });
try {
const analysis = await analyzeBottle(item.imageBase64);
const analysis = await analyzeBottle(item.imageBase64, undefined, item.locale);
if (analysis.success && analysis.data) {
setCurrentProgress({ id: itemId, status: 'Speichere Flasche...' });
const save = await saveBottle(analysis.data, item.imageBase64, user.id);
@@ -62,6 +62,7 @@ export default function UploadQueue() {
try {
const result = await saveTasting({
...item.data,
bottle_id: item.bottle_id,
tasted_at: item.tasted_at
});
if (result.success) {