nutrition: fix embedding file paths for production and copy to dist
All checks were successful
CI / update (push) Successful in 4m42s
All checks were successful
CI / update (push) Successful in 4m42s
resolve() uses CWD which in production (adapter-node) is dist/, not the project root. Detect the correct data directory at startup and add a postbuild step to copy the embedding JSON files into dist/data/.
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
"dev": "vite dev",
|
"dev": "vite dev",
|
||||||
"prebuild": "bash scripts/subset-emoji-font.sh && pnpm exec vite-node scripts/generate-mystery-verses.ts && pnpm exec vite-node scripts/download-models.ts",
|
"prebuild": "bash scripts/subset-emoji-font.sh && pnpm exec vite-node scripts/generate-mystery-verses.ts && pnpm exec vite-node scripts/download-models.ts",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
"postbuild": "mkdir -p dist/data && cp src/lib/data/nutritionEmbeddings.json src/lib/data/blsEmbeddings.json dist/data/",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
||||||
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Update all files importing from the legacy $lib/db/db to use $utils/db instead
|
|
||||||
|
|
||||||
files=(
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/mario-kart/[id]/+page.server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/mario-kart/+page.server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/fitness/sessions/[id]/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/fitness/sessions/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/fitness/templates/[id]/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/fitness/templates/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/fitness/exercises/[id]/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/fitness/exercises/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/fitness/exercises/filters/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/fitness/seed-example/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/mario-kart/tournaments/[id]/groups/[groupId]/scores/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/mario-kart/tournaments/[id]/groups/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/mario-kart/tournaments/[id]/contestants/[contestantId]/dnf/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/mario-kart/tournaments/[id]/contestants/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/mario-kart/tournaments/[id]/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/mario-kart/tournaments/[id]/bracket/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/mario-kart/tournaments/[id]/bracket/matches/[matchId]/scores/+server.ts"
|
|
||||||
"/home/alex/.local/src/homepage/src/routes/api/mario-kart/tournaments/+server.ts"
|
|
||||||
)
|
|
||||||
|
|
||||||
for file in "${files[@]}"; do
|
|
||||||
if [ -f "$file" ]; then
|
|
||||||
echo "Updating $file"
|
|
||||||
sed -i "s/from '\$lib\/db\/db'/from '\$utils\/db'/g" "$file"
|
|
||||||
else
|
|
||||||
echo "File not found: $file"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "All files updated!"
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
* USDA uses all-MiniLM-L6-v2 for English ingredient names.
|
* USDA uses all-MiniLM-L6-v2 for English ingredient names.
|
||||||
*/
|
*/
|
||||||
import { pipeline, type FeatureExtractionPipeline } from '@huggingface/transformers';
|
import { pipeline, type FeatureExtractionPipeline } from '@huggingface/transformers';
|
||||||
import { readFileSync } from 'fs';
|
import { readFileSync, existsSync } from 'fs';
|
||||||
import { resolve } from 'path';
|
import { resolve } from 'path';
|
||||||
import { NUTRITION_DB, type NutritionEntry } from '$lib/data/nutritionDb';
|
import { NUTRITION_DB, type NutritionEntry } from '$lib/data/nutritionDb';
|
||||||
import { BLS_DB, type BlsEntry } from '$lib/data/blsDb';
|
import { BLS_DB, type BlsEntry } from '$lib/data/blsDb';
|
||||||
@@ -18,8 +18,12 @@ import { NutritionOverwrite } from '$models/NutritionOverwrite';
|
|||||||
|
|
||||||
const USDA_MODEL = 'Xenova/all-MiniLM-L6-v2';
|
const USDA_MODEL = 'Xenova/all-MiniLM-L6-v2';
|
||||||
const BLS_MODEL = 'Xenova/multilingual-e5-small';
|
const BLS_MODEL = 'Xenova/multilingual-e5-small';
|
||||||
const USDA_EMBEDDINGS_PATH = resolve('src/lib/data/nutritionEmbeddings.json');
|
// In dev CWD is project root; in production (adapter-node) CWD is dist/
|
||||||
const BLS_EMBEDDINGS_PATH = resolve('src/lib/data/blsEmbeddings.json');
|
const DATA_DIR = existsSync(resolve('src/lib/data/nutritionEmbeddings.json'))
|
||||||
|
? resolve('src/lib/data')
|
||||||
|
: resolve('data');
|
||||||
|
const USDA_EMBEDDINGS_PATH = `${DATA_DIR}/nutritionEmbeddings.json`;
|
||||||
|
const BLS_EMBEDDINGS_PATH = `${DATA_DIR}/blsEmbeddings.json`;
|
||||||
const CONFIDENCE_THRESHOLD = 0.45;
|
const CONFIDENCE_THRESHOLD = 0.45;
|
||||||
|
|
||||||
// Lazy-loaded singletons — USDA
|
// Lazy-loaded singletons — USDA
|
||||||
|
|||||||
Reference in New Issue
Block a user