补齐源快照、资料预演、正式导入及工资核算的依赖链路。 新增版本化输入、逐段 FIFO、生成锁和结构化当月调整, 并提供默认关闭的周期采集、有限重试及 Windows 托管。 原始客户资料、私有配置及首页改动不纳入本次提交。 BREAKING CHANGE: 升级前需应用新增迁移,并通过 PAYROLL_MAKER_USER_ID 绑定实际工资制作人,否则业务只读。 旧单批次核算默认关闭;历史兼容需显式启用 PAYROLL_ALLOW_LEGACY_CALCULATION。生产启用和真实金额待验收。 |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| automation.py | ||
| business_import.py | ||
| calculation_preview.py | ||
| errors.py | ||
| fifo.py | ||
| mapping.py | ||
| master_import.py | ||
| materials.py | ||
| query_service.py | ||
| reader.py | ||
| README.md | ||
| relationship_audit.py | ||
| report_labels.py | ||
| snapshots.py | ||
| source_heads.py | ||
| staging.py | ||
| sync_service.py | ||
| task_service.py | ||
| workbench.py | ||
| worker.py | ||
T+ 读取、基础导入与核算预演
AI 摘要:读取外部 SQL Server 的原始快照,并管理持久化任务。关键文件为 task_service、worker、sync_service、relationship_audit 和 query_service;管理员 API 为
/api/v1/system/tplus。
职责与边界
task_service创建/重试任务,控制请求幂等和事务,保留原批次与异常;HTTP 不执行源库长查询。worker.run_once取得 MySQL 执行锁后恢复中断任务、领取一个任务;读取和关联核验共用锁。sync_service主键分页读取白名单实体,每页保存原始快照,相同源 ID 和行哈希去重。relationship_audit执行db/queries/tplus/audit/queries.sql,只返回系统字典和数量;按收款方向与单据类型核对关联。query_service分页元数据,按需加载白名单报告;不返回原始 payload、驱动异常或源配置。source_heads/snapshots记录全量读取的当前源版本,包含哈希去重的 A→B→A;中断任务不发布部分指针。master_import按人员、产品、客户预览及导入;源、事实、目标变化时拒绝旧预览,保留人工核算字段。workbench保存人工事实版本、幂等任务和逐行结果,与原 worker 共用锁;fifo/calculation_preview固定快照并计算隔离预演,支持原快照重跑。
主要入口
管理员 API 提供概况、批次/异常分页、详情、创建与失败重试。CLI 为 python -m app.cli tplus-worker --once/--watch;原 tplus-stage --entity personnel 可继续直接读取。
连接配置、启动命令和异常处理参见项目 docs/T+本地恢复与同步开发手册.md。后端与 worker 必须指向同一 MySQL 业务库和 T+ 账套,查询文件随部署交付。
应用与兼容性脚本共用 Settings.t_plus_database_url 和连接文件校验;分号、花括号由 SQLAlchemy ODBC 方言转义。默认启用加密,失败不自动降级;既有私有配置需要按运行手册核对。管理页面不返回原始数据,但暂存 JSON 的生产敏感字段保护仍待 S1 决策。
验收限制
本轮允许已确认的人员、产品、客户进入基础表;不写正式业务、发货、回款、绩效台账、月结、审批或发放记录,不推进时间水位。源库始终只读。日期、含税和人工指导成本已明确;生成凭证资格已按ARAP01来源与有效总账凭证关联核实,未审不等于未生成;平账范围、取价时点、历史余额、特殊更正仍按记录分别待补。
Docker 是当前开发主线,2008 R2 10.50.1600 验收后置;2022 副本不能替代同版本实测。实际导入结果、接口、缺驱动处理及启动方法见 docs/T+基础导入与核算预演开发记录_2026-10-29.md,字段证据见同日字段与规则差异表。
正式工资闭环扩展(2026-10-30,优先于上方上一阶段边界)
已新增 BUSINESS_PREVIEW/BUSINESS_APPLY,允许核实后导入正式业务、发货和回款,正式核算通过独立工资入口执行。源 SQL Server 仍始终只读。新版按同一发货客户名头统一平账、按发货月份指导成本封存;不再按合同拆组或要求重复确认成本月份。
制作人身份由现有账号ID显式配置;审核能力保留但默认关闭,关闭时工资生成直接完成且不写审批步骤。多原单更正仍待讨论。字段、接口、迁移和最终验收边界见 docs/正式工资闭环开发记录_2026-10-30.md,客户回执原文见 docs/客户补充回执核对_2026-10-30.md。
自动采集与样本核对(2026-10-30)
automation.tick 通过 tplus-maintain --once 排队最近到期周的九类原始采集,默认每周一北京时间 02:00 且关闭。明确断连/超时最多两次自动重试,间隔 5/15 分钟;部分失败、配置/资料错误及正式导入不自动重试。人工重试结果接入同一周期,独立心跳不受长查询阻塞。概况的 automation 提供状态及异常,不暴露连接凭据。
tplus-materials --customer-id --month --connection-file --output-dir 从恢复库只读形成样本核对包;空费用和旧初始化只能作为证据,不能推定零运费/切换余额。用户没有首轮样本人工指导成本,真实金额验收待补。
V20/V21 迁移 head 为 21f2a3b4c5d6,现有迁移保留,开发初始化同步。Windows 托管、默认关闭及停止边界见根目录 scripts/windows/README.md;本轮完整验证和未验收事项见 docs/同步运维自动化与样本核对开发记录_2026-10-30.md。未迁移原业务库或启用生产。