3d77a38a25
The v2 pivot replaced per-tag SigLIP centroids with learned heads + CCIP. Centroids were still recomputed (on every tag merge + a daily beat) but NOTHING read them — suggestions come from heads+CCIP and apply_allowlist_tags applies via Camie predictions, not centroids. Pure dead wiring; remove it. Removed: CentroidService, recompute_centroid/recompute_centroids tasks, the daily beat, POST /api/ml/recompute-centroids, the recompute-on-merge trigger, the tag_reference_embedding table + model, the centroid_similarity_threshold + min_reference_images settings (migration 0066), the CentroidRecomputeCard + its store action + MaintenancePanel tile, and the centroid slider in MLThresholdSliders. _keep_as_alias drops its vestigial has-centroid branch (the allowlist branch already covers "could re-emit"); tag merge no longer clears a table that no longer exists. NOT touched (still live, parallel to heads): the Camie tagger, ImagePrediction, and the allowlist bulk-apply — accepting a suggestion still allowlists + applies it across the library. The tag-eval "centroid" baseline metric is unrelated (in-memory) and stays. (image_record.centroid_scores JSON column also remains — separate legacy field, its own micro-cleanup.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ttrj5P7upUTueSfoJcxEqa
51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
"""Smoke test for migration 0003: model classes import, schema shape correct."""
|
|
|
|
from backend.app.models import (
|
|
Base,
|
|
ImageRecord,
|
|
MLSettings,
|
|
TagAlias,
|
|
TagAllowlist,
|
|
TagSuggestionRejection,
|
|
)
|
|
|
|
|
|
def test_new_tables_registered():
|
|
expected = {
|
|
"tag_allowlist",
|
|
"tag_suggestion_rejection",
|
|
"tag_alias",
|
|
"ml_settings",
|
|
}
|
|
assert expected.issubset(Base.metadata.tables.keys())
|
|
|
|
|
|
def test_image_record_columns_renamed():
|
|
cols = {c.name for c in ImageRecord.__table__.columns}
|
|
# tagger_predictions (the renamed wd14_predictions) was later dropped in
|
|
# migration 0046 — predictions live in image_prediction now (#768).
|
|
assert "tagger_model_version" in cols
|
|
assert "tagger_predictions" not in cols
|
|
assert "wd14_predictions" not in cols
|
|
assert "wd14_model_version" not in cols
|
|
|
|
|
|
def test_tag_alias_composite_pk():
|
|
pk_cols = {c.name for c in TagAlias.__table__.primary_key.columns}
|
|
assert pk_cols == {"alias_string", "alias_category"}
|
|
|
|
|
|
def test_ml_settings_singleton_constraint():
|
|
names = {c.name for c in MLSettings.__table__.constraints}
|
|
assert "ck_ml_settings_singleton" in names
|
|
|
|
|
|
def test_tag_allowlist_confidence_check():
|
|
names = {c.name for c in TagAllowlist.__table__.constraints}
|
|
assert "ck_tag_allowlist_confidence_range" in names
|
|
|
|
|
|
def test_tag_suggestion_rejection_pk():
|
|
pk_cols = {c.name for c in TagSuggestionRejection.__table__.primary_key.columns}
|
|
assert pk_cols == {"image_record_id", "tag_id"}
|