feat(status): default legacy batches to normal

This commit is contained in:
chengma
2026-07-20 09:41:55 +08:00
parent 00c695d035
commit d687c833e0
17 changed files with 205 additions and 991 deletions
+29
View File
@@ -16,6 +16,8 @@ from .config import make_slug
DEFAULT_BUSY_TIMEOUT_MS = 5000
PRODUCT_STATUS_FEATURE_INTRODUCED_AT = "2026-07-18T16:34:37"
LEGACY_PRODUCT_STATUS_DEFAULT_NOTE = "历史批次默认按架上商品处理(未实时检测)"
VALID_BATCH_FIELDS = {
"source_files_json",
"status",
@@ -493,6 +495,7 @@ def init_db(path=None, conn=None) -> None:
_ensure_task_image_task_columns(database)
_ensure_task_cover_reset_columns(database)
_ensure_task_product_status_columns(database)
_migrate_legacy_product_status_defaults(database)
_ensure_image_studio_project_suite_columns(database)
_ensure_image_studio_project_draft_columns(database)
_ensure_image_studio_job_recovery_columns(database)
@@ -534,6 +537,32 @@ def _ensure_task_product_status_columns(database):
database.execute("ALTER TABLE tasks ADD COLUMN product_status_at TEXT")
def _migrate_legacy_product_status_defaults(database):
"""Treat pre-status-feature active batches as historically on-shelf once."""
database.execute(
"""
UPDATE tasks
SET product_status = 'normal',
product_status_note = ?,
product_status_at = NULL,
updated_at = ?
WHERE (product_status IS NULL OR TRIM(product_status) = '')
AND batch_id IN (
SELECT id
FROM batches
WHERE deleted_at IS NULL
AND created_at < ?
)
""",
(
LEGACY_PRODUCT_STATUS_DEFAULT_NOTE,
_now(),
PRODUCT_STATUS_FEATURE_INTRODUCED_AT,
),
)
def _ensure_image_studio_project_suite_columns(database):
columns = {
row["name"]