add per-library AI model and prompt customization
- Add library_ai_settings table with migration for per-library overrides - Extend AiConfig with editable prompt parts for description, tagging, extraction, and translation steps; defaults match previous hardcoded values - Add getEffectiveAiConfig(libraryId) that merges global settings with library-level overrides (empty override falls through to global) - Update all ai-tagger functions to use getEffectiveAiConfig and build prompts from configurable parts - Add GET/PUT /api/ai-settings/library/[id] for per-library overrides - Update /api/ai-settings GET/PUT to include prompt fields - Add Prompts section and Library Overrides section to admin UI Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -104,6 +104,7 @@ function initDb(db: Database.Database): void {
|
||||
migrateMediaTagsToItemKey(db)
|
||||
migrateMediaItemsAiTagged(db)
|
||||
migrateMediaItemsAiFields(db)
|
||||
migrateLibraryAiSettings(db)
|
||||
seedAppSettings(db)
|
||||
}
|
||||
|
||||
@@ -259,6 +260,22 @@ function migrateMediaItemsAiFields(db: Database.Database): void {
|
||||
}
|
||||
}
|
||||
|
||||
function migrateLibraryAiSettings(db: Database.Database): void {
|
||||
db.exec(`
|
||||
CREATE TABLE IF NOT EXISTS library_ai_settings (
|
||||
library_id TEXT PRIMARY KEY REFERENCES libraries(id) ON DELETE CASCADE,
|
||||
model_tagging TEXT,
|
||||
model_describe TEXT,
|
||||
model_extract TEXT,
|
||||
model_translate TEXT,
|
||||
prompt_describe TEXT,
|
||||
prompt_tagger TEXT,
|
||||
prompt_extract TEXT,
|
||||
prompt_translate TEXT
|
||||
);
|
||||
`)
|
||||
}
|
||||
|
||||
function migrateLibrariesType(db: Database.Database): void {
|
||||
const row = db
|
||||
.prepare("SELECT sql FROM sqlite_master WHERE type='table' AND name='libraries'")
|
||||
|
||||
Reference in New Issue
Block a user