liuwenxin
|
108bf87225
|
feat(核算)!: 添加 T+ 正式核算与采集托管
补齐源快照、资料预演、正式导入及工资核算的依赖链路。
新增版本化输入、逐段 FIFO、生成锁和结构化当月调整,
并提供默认关闭的周期采集、有限重试及 Windows 托管。
原始客户资料、私有配置及首页改动不纳入本次提交。
BREAKING CHANGE: 升级前需应用新增迁移,并通过
PAYROLL_MAKER_USER_ID 绑定实际工资制作人,否则业务只读。
旧单批次核算默认关闭;历史兼容需显式启用
PAYROLL_ALLOW_LEGACY_CALCULATION。生产启用和真实金额待验收。
|
2026-11-02 09:42:53 +08:00 |
|
liuwenxin
|
4fe5916c2c
|
feat(tplus): 新增 T+ 只读同步服务与同步管理
|
2026-10-28 11:42:15 +08:00 |
|
liuwenxin
|
9964281c14
|
fix(approval): 版本号唯一键兜底 + 取号改当前读防并发重复
- V12 迁移:先重排存量重复 (order_type, ref_id) 分组的 version_no
(V11 把存量一律置 1,而 V11 前重提是新建行),再加
uk_approval_orders_order_type_ref_version;只重排真有重复的分组,
避免改动前端已展示过的历史版本号
- _next_version 改锁读(select version_no ... FOR UPDATE,最大值在
Python 侧算):请求级鉴权的普通 SELECT 已把 REPEATABLE READ 快照
锚定在请求开始时刻,原 MAX 快照读在并发下会算出同一版本号;
聚合 + FOR UPDATE 为 MySQL 明确禁止,故不锁聚合结果
- 编辑与月结提交路径把 1062 收敛为 400「提交冲突(版本号生成重复),
请重试」,其余完整性错误原样上抛;submit_order 内不 catch/rollback
- 驳回清空方案的过时注释改为 V11 起的 append-only 语义(置历史不删行)
- init-dev.sql 同步唯一键与 alembic_version 7f4f7b918bc4,导出 V12 SQL
- 测试:集成 +5(锁读 SQL 形态、两会话快照回归、唯一键 1062、冲突 400、
正常递增)+ 单元 +1;工作台假审批单改用不同 ref_id 适配唯一键
- 全量回归 897 passed;ruff 与前端 type-check 绿
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-22 13:31:01 +08:00 |
|
liuwenxin
|
a5c86640e2
|
feat(migration): V7 核算台账/月结/调整单四表与核算纯函数
- V7 四表:performance_ledgers(append-only 版本行,uk(receipt_id,calc_version)
库级防重兜底)/monthly_settlements(月份 uk,通过即锁定终态)/
settlement_items(按人固化可负工资,uk 三列)/adjustment_orders(TZ 单号)
- registry +1:approval.adjustment.enabled(19 项,BOOL 首组扩至三开关)
- formula 补核算纯函数:clamp_weight_r(从预览内联提取共用)/monthly_salary
三口径/probation_annual_note/manager_team_share(#12 暂口径:基数不含
经理个人户业绩,聚合集中一处答复后只改)
- 迁移 downgrade 只保留 drop_table+alter 回滚+种子行反向 DELETE;
performance_ledgers 表名复数(test_models 红线断言)
- 断言同步:EXPECTED_TABLES 四新表/registry 19/BOOL 三开关/conftest
清理四新表与 ParamValue 边界 22
- schema_sync+全量单测 460 passed
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-16 16:32:32 +08:00 |
|
liuwenxin
|
acf87fdfdc
|
feat(migration): V6 系统设置/二次分配/审批表与角色参数种子
- 新增 system_settings(公司信息单行)/ business_secondary_allocations(二次
分配明细,比例不强制合计满额,分摊计算待澄清另批)/ approval_orders+
approval_steps(三级审批状态机,开关关闭自动通过留痕)
- roles 种子新增营销后勤/财务/领导三职能角色;内置保护改 BUILTIN_ROLE_CODES
白名单(roles 表无 is_builtin 列,不加列)
- PARAM_REGISTRY 首例 BOOL:两个审批开关(16→18 项,种子双写)
- 双轨同步:V6 导出 SQL + init-dev.sql(表/索引/种子/版本号 79bcc5aa98d4)
- 测试同步:EXPECTED_TABLES 四新表、角色种子断言 5 角色、目录断言 18 项
八分组、BOOL 校验边界;迁移 downgrade 修 1553(只保留 drop_table)并补
行级种子反向清理
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-15 17:25:23 +08:00 |
|
liuwenxin
|
20fcf06f51
|
feat(business): 新增业务数据七表及 V5 迁移(业务/明细/状态留痕/发货/回款/评级配置)
- businesses 五项汇总冗余列服务层事务内维护;毛利润不落库(派生值,M3 台账固化)
- 行级 product_category 折算锚点(#14);回款 settlement_status 预置为 M3 防重锚点
- 评级等级种子四条(迁移+init-dev 双写);编号前缀常量 YW/SH/HK
- 双轨 SQL 同步(V4/V5 重导,schema_sync+test_models 164 例全绿)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 11:22:34 +08:00 |
|
liuwenxin
|
f22d14e439
|
feat(base): 新增基础数据六表及 V4 迁移(人员/辐射区域/拓展计划/产品/客户/归属留痕)
- TPlusSyncMixin 统一 T+ 同步预留四列(可空+普通索引,唯一键待 IT 定键后升级)
- 留痕表实体 ID 无外键冗余固化,删除保护由服务层承担
- init-dev.sql 同步六表 DDL,alembic_version 标记更新
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 09:49:05 +08:00 |
|
liuwenxin
|
bc019cadf5
|
feat(system): 新增岗位角色与计提参数四表及 V3 迁移
- business_roles/param_definitions/param_change_batches/param_values 四表 + 种子(3 内置岗位/16 参数定义/19 版本条目/初始批次 P20260101-00)
- 双轨迁移:Alembic bfbda9c3191d + db/migration/V3 导出 + init-dev.sql 同步(schema_sync 校验通过)
- 参数值以 Fraction 可解析字符串存储(4/360 禁 0.011111);企业户 2‰→3‰ 双种子支持按到账日回溯
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-12 16:13:13 +08:00 |
|
liuwenxin
|
ad5fe4a411
|
feat(system): 新增操作日志表与 V2 迁移
需求 2.5.1 要求记录用户管理操作,先落表结构:
- operation_logs 表:冗余 username 保证账号删除后仍可追溯,
user_id 外键 ON DELETE SET NULL,success 默认 '0' 与 login_logs 口径一致
- 截断常量(USERNAME/ERROR_MESSAGE/REQUEST_DATA)集中定义,供写入方引用
- 修复既有 V1 迁移与迁移模板的 downgrade:索引是外键唯一支撑索引,
先 drop_index 会报 errno 1553,改为只 drop_table
- 同步 db/migration/V2 与 init-dev.sql,迁移版本号更新为 a45a8087831b
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-10 10:44:05 +08:00 |
|
liuwenxin
|
273ebf4657
|
chore: 初始化项目结构与登录鉴权模块
后端 FastAPI 六层结构(api/services/repositories/models/schemas/core),
统一响应信封、全局异常、日志脱敏;6 张表经 Alembic 迁移建库,SQL 留存
db/migration;登录鉴权含图形验证码(Redis GETDEL 防重放)、JWT、登录限流、
登出黑名单(TTL=令牌剩余有效期)、登录日志。
前端 Vue3 + TS + Element Plus 骨架,含登录页、路由守卫、请求封装与 Vite 代理。
工程配置:uv 锁定 Python 3.12、ruff 检查与格式化、editorconfig、gitattributes。
测试 184 项(单元 155 / 集成 29)全绿,浏览器端到端 8 项通过。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-09 18:46:36 +08:00 |
|