feat: 新增产品生命周期阶段字段lifecycle_phase与售后工序词表

This commit is contained in:
2026-09-14 14:49:34 +08:00
parent 3568d17865
commit b9f9b897a1
3 changed files with 172 additions and 0 deletions

View File

@ -0,0 +1,45 @@
"""add_product_lifecycle_phase
Revision ID: i1j2k3l4m5n6
Revises: h1h2h3h4h5h6
Create Date: 2026-09-14
产品生命周期阶段lifecycle_phase
--------------------------------
用于区分「生产阶段的测试(发货测试)」与「出库后再次返厂的售后维修」。
存量数据一律回填 'PRODUCTION'(历史产品视为从未出库回流);
新数据由 SQLAlchemy 端 default 提供,双保险。
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
revision: str = "i1j2k3l4m5n6"
down_revision: Union[str, None] = "h1h2h3h4h5h6"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
op.add_column(
"products",
sa.Column(
"lifecycle_phase",
sa.String(20),
nullable=False,
server_default="PRODUCTION",
comment="生命周期阶段: PRODUCTION(生产制造) | AFTER_SALES(出库后返厂售后)",
),
)
# 存量数据回填:历史产品从未出库回流,统一视为生产阶段
op.execute("UPDATE products SET lifecycle_phase = 'PRODUCTION' WHERE lifecycle_phase IS NULL")
# 加索引:售后设备排查(按阶段筛选)会高频用到
op.create_index(
"ix_products_lifecycle_phase", "products", ["lifecycle_phase"], unique=False,
)
def downgrade() -> None:
op.drop_index("ix_products_lifecycle_phase", table_name="products")
op.drop_column("products", "lifecycle_phase")