The GS/IR migration cutover is complete, so the runbook tooling is dead weight. Removed: - services/migrators/ (gs_ingest, ir_ingest, tag_apply, ml_queue, verify, cleanup), tasks/migration.py, api/migrate.py (+ blueprint registration) - MigrationRun model; alembic 0027 drops the migration_run table - frontend LegacyMigrationCard + migration store (+ MaintenancePanel ref) - celery include + task route + celery_signals queue mapping for migration.* - the 1 GB MAX_CONTENT_LENGTH / MAX_FORM_MEMORY override (added solely for the ir_ingest upload) - migration-surface tests (test_api_migrate, test_migration_verify, test_ir_ingest, test_gs_ingest, test_tag_apply) Kept: the alembic schema-migration tests (test_migration_00XX — unrelated) and cleanup_service.py (the permanent artist-cascade/unlink home). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
60 lines
2.0 KiB
Vue
60 lines
2.0 KiB
Vue
<template>
|
|
<div class="fc-maint">
|
|
<p class="text-body-2 mb-4">
|
|
Operational backfills and tagging controls. The ML backfill and centroid
|
|
recompute run nightly automatically; the allowlist auto-applies accepted
|
|
tags to new and existing images. Use the cards below to trigger a
|
|
one-off pass.
|
|
</p>
|
|
<div class="fc-maint__grid">
|
|
<MLBackfillCard />
|
|
<CentroidRecomputeCard />
|
|
<ThumbnailBackfillCard />
|
|
</div>
|
|
<MLThresholdSliders class="mt-4" />
|
|
<AllowlistTable class="mt-4" />
|
|
<AliasTable class="mt-4" />
|
|
<BackupCard class="mt-6" />
|
|
<!-- TagMaintenanceCard moved to Cleanup tab (v26.05.25.7) — it
|
|
operates on the existing library which fits the Cleanup-tab
|
|
theme, and clusters with the other audit cards. LegacyMigrationCard
|
|
removed once the one-and-done GS/IR migration cutover completed. -->
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
import { onMounted, onUnmounted } from 'vue'
|
|
|
|
import MLBackfillCard from './MLBackfillCard.vue'
|
|
import CentroidRecomputeCard from './CentroidRecomputeCard.vue'
|
|
import ThumbnailBackfillCard from './ThumbnailBackfillCard.vue'
|
|
import MLThresholdSliders from './MLThresholdSliders.vue'
|
|
import AllowlistTable from './AllowlistTable.vue'
|
|
import AliasTable from './AliasTable.vue'
|
|
import BackupCard from './BackupCard.vue'
|
|
import { useSystemActivityStore } from '../../stores/systemActivity.js'
|
|
|
|
// Poll queue depths so each card's QueueStatusBar shows live pending
|
|
// counts — the operator can see a backfill is already queued/running
|
|
// before re-triggering it.
|
|
const activity = useSystemActivityStore()
|
|
let qTimer = null
|
|
onMounted(() => {
|
|
activity.loadQueues()
|
|
qTimer = setInterval(() => {
|
|
if (!document.hidden) activity.loadQueues()
|
|
}, 4000)
|
|
})
|
|
onUnmounted(() => {
|
|
if (qTimer) { clearInterval(qTimer); qTimer = null }
|
|
})
|
|
</script>
|
|
|
|
<style scoped>
|
|
.fc-maint__grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
gap: 16px;
|
|
}
|
|
</style>
|