79089b50b0
Normalize tagger predictions out of the image_record.tagger_predictions JSON blob into a queryable per-prediction table. Step 1 of the cutover (expand): additive + low-risk — reads still use the JSON, this just adds the table and keeps it populated. - ImagePrediction(image_record_id, raw_name, category, score) — stores the RAW tagger vocab name (not tag_id) so read-time alias→canonical resolution is unchanged. Indexed for per-image reads + by (raw_name, score). - Migration 0045: create table + set-based backfill from the JSON via json_each (fast post-#764-prune). The old column stays (vestigial) and is dropped in a later follow-up — DROP needs an ACCESS EXCLUSIVE lock on the hot image_record table, so it waits for a quiesced-worker window. - tag_and_embed dual-writes the rows (delete-then-insert, idempotent); tagger_store_floor already applied in infer(). Next: switch suggestion + allowlist reads to the table, then drop the JSON write. Plan-task #768. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
66 lines
1.8 KiB
Python
66 lines
1.8 KiB
Python
"""All ORM models. Import this module to make every model visible to Alembic."""
|
|
|
|
from .app_setting import AppSetting
|
|
from .artist import Artist
|
|
from .artist_visit import ArtistVisit
|
|
from .backup_run import BackupRun
|
|
from .base import Base
|
|
from .credential import Credential
|
|
from .download_event import DownloadEvent
|
|
from .image_prediction import ImagePrediction
|
|
from .image_provenance import ImageProvenance
|
|
from .image_record import ImageRecord
|
|
from .import_batch import ImportBatch
|
|
from .import_settings import ImportSettings
|
|
from .import_task import ImportTask
|
|
from .library_audit_run import LibraryAuditRun
|
|
from .ml_settings import MLSettings
|
|
from .patreon_failed_media import PatreonFailedMedia
|
|
from .patreon_seen_media import PatreonSeenMedia
|
|
from .post import Post
|
|
from .post_attachment import PostAttachment
|
|
from .series_chapter import SeriesChapter
|
|
from .series_page import SeriesPage
|
|
from .series_suggestion import SeriesSuggestion
|
|
from .source import Source
|
|
from .tag import Tag, TagKind, image_tag
|
|
from .tag_alias import TagAlias
|
|
from .tag_allowlist import TagAllowlist
|
|
from .tag_reference_embedding import TagReferenceEmbedding
|
|
from .tag_suggestion_rejection import TagSuggestionRejection
|
|
from .task_run import TaskRun
|
|
|
|
__all__ = [
|
|
"Base",
|
|
"AppSetting",
|
|
"Artist",
|
|
"ArtistVisit",
|
|
"BackupRun",
|
|
"Source",
|
|
"Credential",
|
|
"PatreonFailedMedia",
|
|
"PatreonSeenMedia",
|
|
"Post",
|
|
"PostAttachment",
|
|
"SeriesChapter",
|
|
"SeriesPage",
|
|
"SeriesSuggestion",
|
|
"ImageRecord",
|
|
"ImagePrediction",
|
|
"ImageProvenance",
|
|
"Tag",
|
|
"TagKind",
|
|
"image_tag",
|
|
"DownloadEvent",
|
|
"ImportBatch",
|
|
"ImportTask",
|
|
"ImportSettings",
|
|
"LibraryAuditRun",
|
|
"MLSettings",
|
|
"TagAlias",
|
|
"TagAllowlist",
|
|
"TagReferenceEmbedding",
|
|
"TagSuggestionRejection",
|
|
"TaskRun",
|
|
]
|