feat: add batch metadata jobs, series filters, and translate backoffice to French
- Add metadata_batch job type with background processing via tokio::spawn - Auto-apply metadata only when single result at 100% confidence - Support primary + fallback provider per library, "none" to opt out - Add batch report/results API endpoints and job detail UI - Add series_status and has_missing filters to both series listing pages - Add GET /series/statuses endpoint for dynamic filter options - Normalize series_metadata status values (migration 0036) - Hide ComicVine provider tab when no API key configured - Translate entire backoffice UI from English to French Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
22
infra/migrations/0034_add_metadata_batch.sql
Normal file
22
infra/migrations/0034_add_metadata_batch.sql
Normal file
@@ -0,0 +1,22 @@
|
||||
-- Add fallback_metadata_provider to libraries
|
||||
ALTER TABLE libraries ADD COLUMN fallback_metadata_provider TEXT;
|
||||
|
||||
-- Table to store batch metadata job results (one row per series per job)
|
||||
CREATE TABLE metadata_batch_results (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
job_id UUID NOT NULL REFERENCES index_jobs(id) ON DELETE CASCADE,
|
||||
library_id UUID NOT NULL REFERENCES libraries(id) ON DELETE CASCADE,
|
||||
series_name TEXT NOT NULL,
|
||||
status TEXT NOT NULL, -- 'auto_matched', 'pending_review', 'no_results', 'too_many_results', 'low_confidence', 'already_linked', 'error'
|
||||
provider_used TEXT,
|
||||
fallback_used BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
candidates_count INTEGER NOT NULL DEFAULT 0,
|
||||
best_confidence REAL,
|
||||
best_candidate_json JSONB,
|
||||
link_id UUID REFERENCES external_metadata_links(id) ON DELETE SET NULL,
|
||||
error_message TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_mbr_job_id ON metadata_batch_results(job_id);
|
||||
CREATE INDEX idx_mbr_status ON metadata_batch_results(status);
|
||||
5
infra/migrations/0035_add_metadata_batch_job_type.sql
Normal file
5
infra/migrations/0035_add_metadata_batch_job_type.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
-- Allow metadata_batch job type in index_jobs
|
||||
ALTER TABLE index_jobs
|
||||
DROP CONSTRAINT IF EXISTS index_jobs_type_check,
|
||||
ADD CONSTRAINT index_jobs_type_check
|
||||
CHECK (type IN ('scan', 'rebuild', 'full_rebuild', 'thumbnail_rebuild', 'thumbnail_regenerate', 'cbr_to_cbz', 'metadata_batch'));
|
||||
8
infra/migrations/0036_normalize_series_status.sql
Normal file
8
infra/migrations/0036_normalize_series_status.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
-- Normalize series_metadata.status values from provider-specific strings to standard enum values
|
||||
UPDATE series_metadata SET status = 'ongoing' WHERE LOWER(status) LIKE '%en cours%';
|
||||
UPDATE series_metadata SET status = 'ended' WHERE LOWER(status) LIKE '%finie%' OR LOWER(status) LIKE '%terminée%';
|
||||
UPDATE series_metadata SET status = 'hiatus' WHERE LOWER(status) LIKE '%hiatus%' OR LOWER(status) LIKE '%suspendue%';
|
||||
UPDATE series_metadata SET status = 'cancelled' WHERE LOWER(status) LIKE '%annulée%' OR LOWER(status) LIKE '%arrêtée%';
|
||||
UPDATE series_metadata SET status = 'upcoming' WHERE LOWER(status) LIKE '%not_yet_released%';
|
||||
UPDATE series_metadata SET status = 'ongoing' WHERE LOWER(status) = 'releasing';
|
||||
UPDATE series_metadata SET status = 'ended' WHERE LOWER(status) = 'finished';
|
||||
Reference in New Issue
Block a user