原地磅系统源码位于 simple-dibang-xiaoshou(FastAPI + SQLModel async + art-design-pro),DDL 快照为 docs/sql/dibang.sql。shanxia2.0 已具备 CRM 产品/客户主数据、统一用户权限、报销 bx 子域移植先例。用户确认采用方案 A(主数据仅存名称文本)及五模块移植范围。
原系统核心表关系:db_weighing_slip → db_purchase_plan → db_inbound_outbound,保存地磅单时在同一事务内更新计划执行量并生成出入库单。
Goals:
db_* 表符合 database-conventions(UUID、tenant_no、del_flag、create_time 等)Non-Goals:
db_* 与子域 app/api/db/选择: 业务表 db_purchase_plan 等,代码子域 db(非 dibang 缩写混用)
理由: 与 bx_*、crm_* 命名一致;路由 /api/.../db/ 简短
替代: 表名保留 purchase_plans → 违反门户命名规范,弃用
选择: 业务表继续存 product/cargo_name/customer_name 等 varchar;表单从 CRM 下拉选中后写入名称
理由: 与原系统行为一致;避免 CRM 与地磅历史名称不一致导致迁移失败
替代: 加 FK 字段 → 改动大、历史数据对齐成本高,用户已拒绝
选择: SQLAlchemy 同步 Session + DbCrudService 基类 + 门户 { code, data, message } 响应
理由: 与 shanxia2.0 主栈一致;bx 已验证该模式
替代: 保留 async SQLModel → 与门户 middleware/CRUD 模式割裂
is_voided 字段选择: 除 del_flag 外保留 is_voided
理由: 作废是业务操作(可回滚计划量),与软删除语义不同;原系统已有此区分
替代: 合并为 status 枚举 → 需大范围改前端逻辑,本期不采用
选择: 计划/出入库/地磅单参照 views/system/order/index.vue;车辆参照 unit/index.vue
理由: ui-conventions 模板页要求;原 art-design-pro 样式不可直接复用
替代: 复制 art-design-pro 页面 → 违反 Fresh Mint 规范
选择: app/tasks/db_auto_plan.py,在 init_scheduled_tasks 注册
理由: 门户已有 APScheduler;原独立 cron 脚本可退役
替代: 保留 shell cron → 运维分散,弃用
weighing.py;验收用原库样例数据db_* 表(空库可开发联调)