feat(base): 新增基础数据六表及 V4 迁移(人员/辐射区域/拓展计划/产品/客户/归属留痕)
- TPlusSyncMixin 统一 T+ 同步预留四列(可空+普通索引,唯一键待 IT 定键后升级) - 留痕表实体 ID 无外键冗余固化,删除保护由服务层承担 - init-dev.sql 同步六表 DDL,alembic_version 标记更新 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
1 parent
4552f2e703
commit
f22d14e439
12 files changed
+1083
-4
No files matched your search
@@ -7,7 +7,7 @@
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import DateTime, MetaData, text
|
||||
from sqlalchemy import DateTime, MetaData, String, text
|
||||
from sqlalchemy.dialects.mysql import BIGINT, TINYINT
|
||||
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
|
||||
|
||||
@@ -28,7 +28,14 @@ BIGINT_UNSIGNED = BIGINT(unsigned=True)
|
||||
# 状态类字段统一用 TINYINT(0/1 或少量枚举值)
|
||||
TINYINT_TYPE = TINYINT
|
||||
|
||||
__all__ = ["BIGINT_UNSIGNED", "TINYINT_TYPE", "Base", "TimestampMixin", "mysql_table_args"]
|
||||
__all__ = [
|
||||
"BIGINT_UNSIGNED",
|
||||
"TINYINT_TYPE",
|
||||
"Base",
|
||||
"TPlusSyncMixin",
|
||||
"TimestampMixin",
|
||||
"mysql_table_args",
|
||||
]
|
||||
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
@@ -62,6 +69,30 @@ class TimestampMixin:
|
||||
)
|
||||
|
||||
|
||||
class TPlusSyncMixin:
|
||||
"""T+(用友)数据同步预留列,六张业务主表共用。
|
||||
|
||||
对照表 #26:T+ 对接的字段映射与幂等键语义未定(IT 牵头),故四列全部
|
||||
可空、不设唯一键 —— 键语义未定就锁死唯一约束,对接时大概率返工;
|
||||
source_no 先建普通索引承担查询与去重,IT 定键后以小迁移升级唯一约束。
|
||||
|
||||
同步守则(M4 同步模块必须遵守):同步只写 T+ 侧字段与本组列,
|
||||
**不覆盖人工维护字段**(岗位/工资标准/归属/客户分类/业务状态等,
|
||||
各表注释已标注)。同步频率:一周一次定时 + 手动触发(对照表 #10)。
|
||||
"""
|
||||
|
||||
source_no: Mapped[str | None] = mapped_column(
|
||||
String(64),
|
||||
index=True,
|
||||
comment="T+ 原始单据号(同步幂等去重锚点;唯一键待 IT 定键后升级)",
|
||||
)
|
||||
t_plus_id: Mapped[str | None] = mapped_column(String(64), comment="T+ 系统内部标识")
|
||||
sync_batch_no: Mapped[str | None] = mapped_column(
|
||||
String(32), comment="同步批次号(同步模块写入)"
|
||||
)
|
||||
synced_at: Mapped[datetime | None] = mapped_column(DateTime, comment="最近同步时间")
|
||||
|
||||
|
||||
def mysql_table_args(comment: str, *extra: object) -> tuple[object, ...]:
|
||||
"""构造 MySQL 表的公共参数,返回可直接赋给 `__table_args__` 的元组。
|
||||
|
||||
|
||||
Reference in new issue
Block a user