wangsli
|
7f1c3e842d
|
feat(P17A-3,P17A-4): 实现采购申请接口附件与前端入口
|
2026-03-07 20:59:42 +08:00 |
|
wangsli
|
1cd4290b4d
|
feat(P17A-1,P17A-2): 新增采购模型权限与系统种子
|
2026-03-07 20:59:28 +08:00 |
|
wangsli
|
9de1169d78
|
docs(P17A-0): 建档轻采购核心执行合同
|
2026-03-07 20:12:39 +08:00 |
|
wangsli
|
411a0395ab
|
docs(R9-0,R9-3,G2-5,G2-6): 收口路线合同与状态矩阵
|
2026-03-07 19:00:12 +08:00 |
|
wangsli
|
0259aa45c3
|
feat(G2-4): 升级预算页为多作用域模式
|
2026-03-07 18:59:58 +08:00 |
|
wangsli
|
52558f22c3
|
feat(G2-1,G2-2,G2-3): 扩展预算编号与工作流跨域桥接
|
2026-03-07 18:59:44 +08:00 |
|
wangsli
|
09b6f4fbb0
|
feat(P16C-4,P16C-6): 完成供应商主数据前端与矩阵收口
|
2026-03-07 17:44:55 +08:00 |
|
wangsli
|
aafa911ee7
|
feat(P16C-1,P16C-3): 完成供应商主数据后端与种子
|
2026-03-07 17:39:49 +08:00 |
|
wangsli
|
195f46a2e3
|
feat(G1,P16A,P16B): 收口主数据核心与节假日日历增强
|
2026-03-07 17:29:03 +08:00 |
|
wangsli
|
32a3d3724d
|
docs(R6,R7,R8): 冻结P16-P18蓝图合同
|
2026-03-07 08:18:35 +08:00 |
|
wangsli
|
4ba311199d
|
feat(P15B-1,P15B-6): 完成请假V1闭环
|
2026-03-07 08:11:24 +08:00 |
|
wangsli
|
03c5a78485
|
feat(P15A-1,P15A-5): 解耦请假审批权限
|
2026-03-07 07:15:33 +08:00 |
|
wangsli
|
637fd24d8e
|
docs(P15A-0,P15B-0,R0): 修正P15合同并建档P15-P18路线图
|
2026-03-06 23:25:26 +08:00 |
|
wangsli
|
d8fff0ba21
|
chore(P14-8): 完成运营化与验收收口
|
2026-03-06 23:24:16 +08:00 |
|
wangsli
|
b50b084100
|
refactor(ui): [UI8] 补齐全局异常卡片边距并统一剩余下拉表单样式
|
2026-03-06 11:18:57 +08:00 |
|
wangsli
|
3883f14a48
|
refactor(ui): [UI8] 彻底移除遗留Card并补充下拉框中文化
|
2026-03-06 10:09:18 +08:00 |
|
wangsli
|
5a6a6f67c9
|
docs: 归档UI阶段7执行完毕的CSV合同与任务状态
|
2026-03-06 09:54:34 +08:00 |
|
wangsli
|
fe55848f75
|
refactor(ui): 深度翻新仪表盘与边缘配置页的骨架与组件
|
2026-03-06 09:54:14 +08:00 |
|
wangsli
|
73b51ac068
|
fix(ui): [UI7-2] 统一全局 Design Tokens,移除冗余字体,修复异常色值引用
|
2026-03-06 09:48:37 +08:00 |
|
wangsli
|
62fd2a5398
|
refactor(ui): [UI7-1] 为其余配置与边缘页面应用新版空壳布局
|
2026-03-06 09:48:11 +08:00 |
|
wangsli
|
c632648e16
|
refactor(ui): [UI7-1] 深度翻新报销、发票与用户管理等核心视窗
|
2026-03-06 09:48:11 +08:00 |
|
wangsli
|
61180e2b3b
|
feat(ui): [UI7-1] 构建通用原子UI组件与业务Hooks
|
2026-03-06 09:48:11 +08:00 |
|
wangsli
|
9c48c8d3bc
|
feat(ui): [UI7-1] 重构主布局AppShell与导航层
|
2026-03-06 09:48:11 +08:00 |
|
wangsli
|
94d9bbe0b1
|
chore(ui): [UI7-1] 更新依赖与Tailwind设计系统配置
|
2026-03-06 09:48:11 +08:00 |
|
wangsli
|
74854d507c
|
style(css): 优化表头中文字体可读性并添加下拉框通用类
|
2026-03-05 18:38:56 +08:00 |
|
wangsli
|
dc0feb60b2
|
refactor(ui): 提取表单原生组件公共样式并修复面板边距bug
|
2026-03-05 18:38:56 +08:00 |
|
wangsli
|
1412fead5d
|
feat: 完成P13治理收尾并创建P14执行合同(Issue: P13-1,P13-2,P13-3,P13-4,P13-5,P13-6,P13-7,P13-8,P14-0)
|
2026-02-13 00:25:04 +08:00 |
|
wangsli
|
3b221a2202
|
feat(P11-P12): 落地治理开关与移动端MVP(G0-G6/H1/M1-M4)
- 新增 Feature Flag 模型、评估服务与管理 API(erp_sync/invoice_verification)\n- 完成 ERP 与验真灰度收口(路由/服务/作业统一判定)\n- 补齐 pay 与手动 sync 的 department_id 灰度上下文\n- 增加管理后台开关页、PWA 基础设施与移动拍照/审批页面\n- 增加回归脚本、安全基线与压测脚本,更新文档与执行合同\n\nIssue: G0,G1,G2,G3,G4,G5,G6,H1,M1,M2,M3,M4
|
2026-02-11 20:33:30 +08:00 |
|
wangsli
|
3813d1955e
|
docs: 完成治理文档与执行合同收口(A1-A2,R1-R2,S1-S2,P9A1-P9D1)
|
2026-02-10 11:29:20 +08:00 |
|
wangsli
|
4e5a7793fe
|
feat: 完成P6-P8前端能力闭环(V3,D2,D3,B3)
|
2026-02-10 11:28:51 +08:00 |
|
wangsli
|
6bc09f557b
|
feat: 完成P6-P8后端能力与P9路由重构(V1-V2,D1,D3,B1-B2,B4,I1-I4,P9A2-P9A3)
|
2026-02-10 11:28:28 +08:00 |
|
wangsli
|
bec21e1b38
|
feat: 完成P10生产硬化与矩阵收口(P10E1-P10G1)
|
2026-02-10 11:25:18 +08:00 |
|
wangsli
|
1b6e801b12
|
文档: 完成 architecture.md P5 现状更新,修正可观测性栈定位
|
2026-02-09 22:31:01 +08:00 |
|
wangsli
|
70f4d729f0
|
feat(server): 工作流扩展 leave 实体骨架(F24)
- workflow_instances 解耦 reimbursement FK:新增 reimbursement_id/leave_request_id + 回填迁移
- 新增 leave_requests 表与 /api/leave-requests 最小链路(create/submit)
- workflow approve/reject/return 支持 leave 状态更新;transfer 非报销任务禁用
- seed-config 增加 leave workflow definition;更新 v3 CSV 状态推进
|
2026-02-09 21:24:53 +08:00 |
|
wangsli
|
3cc3013d5a
|
feat(server): OIDC 登录支持(F23)
- 引入 openid-client,新增 /api/auth/oidc/login + /api/auth/oidc/callback
- 通过 email 绑定既有员工账号,保留密码登录 fallback
- OIDC 状态存 cookie(HMAC) + PKCE + SameSite=lax 防 CSRF
- 更新 env/README 与 v3 CSV 状态推进
|
2026-02-09 21:01:36 +08:00 |
|
wangsli
|
1855a82011
|
feat(server): 敏感字段加密与脱敏(F25)
- 新增敏感字段加密服务(AES-256-GCM,FIELD_ENCRYPTION_KEY)
- users 详情返回银行卡/身份证脱敏字段;新增 /users/:id/sensitive 特权明文接口并写审计
- 权限新增 system.users_sensitive(hr/admin)
- 更新 env/README 与 v3 CSV 状态推进
|
2026-02-09 20:51:34 +08:00 |
|
wangsli
|
c791e67b20
|
feat(server): MinIO/S3 对象存储兼容(F21)
- 新增 storage 抽象:local 与 s3: 前缀兼容(不改 schema)
- invoice-pool 上传/预览/ocr 读取适配 S3/MinIO
- trialrun compose 增加 minio profile + env 示例与 runbook 指引
- 更新 README 与 v3 CSV 状态推进
|
2026-02-09 20:42:53 +08:00 |
|
wangsli
|
6ecebf8ad6
|
feat(server): /metrics 可观测与日志上下文(F22)
- 新增 Prometheus 指标端点 /metrics(HTTP + DB + 作业统计)
- request.log 绑定 requestId/actorId,避免日志难追踪
- cron/pg-boss 作业增加 metrics 计数(runs/processed)
- 更新 env/runbook/README 与 v3 CSV 状态推进
|
2026-02-09 20:30:41 +08:00 |
|
wangsli
|
55924c8ff8
|
feat: Worker 进程拆分(F20)
- 新增 worker 进程入口(npm run worker)只跑作业不监听端口
- trialrun compose 增加 worker profile(server 可 JOBS_ENABLED=false)
- 更新 runbook/.env.example/README 说明与 v3 CSV 状态推进
|
2026-02-09 20:22:33 +08:00 |
|
wangsli
|
dff1aabc26
|
feat(server): 完成 F19~F19d pg-boss 作业系统迁移\n\n- 引入 pg-boss(JOB_DRIVER=pgboss)并保留 cron 回滚\n- OCR/委派回收/超期归档改由 pg-boss schedule + work 执行\n- OCR_PROVIDER=off 自动 unschedule ocr.tick\n- 更新 trialrun env/compose/runbook 与 README,并推进 CSV 状态为 DONE
|
2026-02-09 20:05:01 +08:00 |
|
wangsli
|
f233a0d5bc
|
feat: 完成 F17 报表导出(CSV/XLSX)\n\n- 后端新增 /api/exports/* 导出接口(含权限与审计记录)\n- CSV 采用流式生成,XLSX 使用 exceljs\n- 前端在报销/票据/审计页加入导出入口(下载 Blob)\n- 更新 P5 蓝图 v3 中 F17 状态为 DONE
|
2026-02-09 19:35:51 +08:00 |
|
wangsli
|
2c58061ec7
|
feat: 完成 F18 审批规则维护(API+前端)\n\n- 新增 /api/approval-rules 管理接口(system.settings)并写审计\n- 前端新增审批规则页与菜单入口(system.settings)\n- 更新 P5 蓝图 v3 中 F18 状态为 DONE
|
2026-02-09 19:20:53 +08:00 |
|
wangsli
|
38b66b01a6
|
feat(server): 完成 F15 邮件通知(SMTP/Nodemailer)\n\n- 新增 email 服务(EMAIL_ENABLED + SMTP_* 配置)\n- 待办/审批/付款/密码重置触发可选邮件,失败降级不阻塞\n- 更新 server/README 邮件配置说明,并推进 CSV 状态为 DONE
|
2026-02-09 19:07:32 +08:00 |
|
wangsli
|
c9ac18e2e2
|
feat(client): 完成 F34 票据中心增强\n\n- 补齐人工修正/手工归档/解绑/重试 OCR/判重例外等入口\n- 补充 data-testid 并与后端错误码映射保持一致\n- 更新 P5 蓝图 v3 中 F34 状态为 DONE
|
2026-02-09 18:55:46 +08:00 |
|
wangsli
|
00f23678ea
|
chore(issues): 更新P5蓝图v3状态(F33)
- F33 标记 DONE(行政代提交/代上传入口验证通过)
|
2026-02-09 18:32:50 +08:00 |
|
wangsli
|
b341e2fa63
|
feat(client): 行政代提交/代上传 owner 选择入口(F33)
- 报销创建支持选择 ownerEmployeeId(delegation-grants received)
- 票据上传支持 owner_employee_id(delegation-grants received)
- 保持普通员工流程不变,权限不足由后端阻断
|
2026-02-09 18:32:38 +08:00 |
|
wangsli
|
504ff02dd5
|
chore(issues): 更新P5蓝图v3状态(F32)
- F32 标记 DONE(部门管理与员工创建增强验证通过)
|
2026-02-09 18:24:25 +08:00 |
|
wangsli
|
efa4a3d3f6
|
feat(client): 部门管理与员工创建增强(F32)
- 新增部门管理页:列表/创建/归档
- 用户创建支持选择部门与直属上级
- 补齐 departments/employees API 封装与导航入口
|
2026-02-09 18:24:07 +08:00 |
|
wangsli
|
1a5d3b1d52
|
chore(issues): 更新P5蓝图v3状态(F35,F38)
- F35/F38 标记 DONE(错误文案与改密守卫联动验证通过)
|
2026-02-09 18:16:32 +08:00 |
|
wangsli
|
2566289d37
|
feat(client): 首次登录改密守卫与错误文案(F35,F38)
- 登录响应支持 mustChangePassword 并强制跳转改密页
- 新增改密页面与全局路由守卫
- 完善 AUTH_002/SYS_429/VALID_00x 等错误提示
|
2026-02-09 18:16:22 +08:00 |
|
wangsli
|
7d50a85412
|
chore(issues): 更新P5蓝图v3状态(F16)
- F16 标记 DONE(通知中心与未读角标联动验证通过)
|
2026-02-09 18:01:39 +08:00 |
|
wangsli
|
273caf10a9
|
feat(client): 通知中心与未读角标(F16)
- Topbar 增加通知铃铛与未读数
- 新增 /notifications 列表页,支持筛选与标记已读
- 为 workflow/reimbursement/auth 通知提供跳转入口
|
2026-02-09 18:01:27 +08:00 |
|
wangsli
|
589a248cc3
|
chore(issues): 更新P5蓝图v3状态(F6)
- F6 标记 DONE(报销明细编辑器联动验证通过)
|
2026-02-09 17:55:24 +08:00 |
|
wangsli
|
a4f38792f1
|
feat(client): 报销明细编辑器与费用类型下拉(F6)
- 报销详情新增明细列表与新增/编辑/删除入口
- 接入费用类型只读接口并保持总金额自动刷新
- 补 data-testid 以便 E2E/回归
|
2026-02-09 17:54:59 +08:00 |
|
wangsli
|
2bb804bc94
|
chore(issues): 更新P5蓝图v3状态快照(F14,F30,F42)
- F14/F30 标记 DONE(通知基础设施与触发)
- 追加 F42 架构文档修订条目并标记 DONE
|
2026-02-09 17:45:52 +08:00 |
|
wangsli
|
19441cb03a
|
docs: 修订架构图与ER图(As-Is/To-Be)(F42)
- 拆分 As-Is/To-Be,避免文档超前实现
- 修正部署视图/OCR 异步/ER 基数与可空关系
- 补对标能力清单与演进路线
|
2026-02-09 17:45:39 +08:00 |
|
wangsli
|
5faf843cee
|
feat(server): 站内通知基础设施与关键事件触发(F14,F30)
- 新增 notifications 表与 API(list/mark-read)
- submit/approve/reject/return/transfer/pay/forgot-password 写入站内通知
- 通知失败降级,不阻塞主流程
|
2026-02-09 17:45:17 +08:00 |
|
wangsli
|
8bd068f2a3
|
feat(server): 票据增强闭环(F9/F10/F11/F12/F13/F28)
- /invoice-pool 新增 unbind、PATCH 修正、manual archive、OCR retry、判重例外 override(含 VALID_004/006/007)
- signed-url 签发/下载写入审计日志(脱敏 extra)
- 新增未绑定票据自动归档作业 + 一次性执行脚本
- 回归脚本增强:workflow-actions/dedup/audit/ocr 覆盖上述场景;v3 CSV 状态推进至 DONE
|
2026-02-09 17:09:34 +08:00 |
|
wangsli
|
3ae9e08692
|
chore(issues): 新增 P5 蓝图执行合同快照 v1-v3(F1)
- v3 修正通知依赖:F30 依赖 F14(不再被邮件阻塞)
- 提升关键项 Test_Method 为可复现 curl 步骤
- 新增回归脚本条目:F40/F41
|
2026-02-09 16:20:40 +08:00 |
|
wangsli
|
f755ff0dda
|
feat(server): P5 基础能力补齐(组织/报销/代办/认证安全)
- 组织/人员/委派对齐:费用类型、部门、员工别名、配置只读与回归脚本(F2/F3/F26/F27/F29/F31/F40)
- 报销单 PATCH/DELETE 与 items CRUD(事务内重算 total_amount)(F4/F5)
- 行政代提交/代上传后端校验与审计(F7/F8)
- 认证安全基线:首次登录改密、失败锁定、弱密码拦截与回归脚本(F36/F37/F39/F41)
|
2026-02-09 16:20:31 +08:00 |
|
wangsli
|
a8080b05f8
|
chore(issues): P4 试运行/上线合同状态收口(E1~E21)
- Dev/Review/Regression 状态全部置为 DONE
|
2026-02-09 01:13:28 +08:00 |
|
wangsli
|
fc50ffc808
|
feat(client): 用户管理页 + E2E 门禁(E15/E16/E18)
- 新增系统用户管理页(创建/禁用启用/重置密码/角色)
- 引入 Playwright E2E:覆盖登录-报销-待办-票据-OCR-支付-登出
- 新增 ci-e2e 工作流(PR + nightly)
|
2026-02-09 01:13:14 +08:00 |
|
wangsli
|
4223d81eb4
|
feat(server): 试运行部署与运营基线(E13/E14/E17/E19/E20/E21)
- 增加 deploy/trialrun:Docker Compose + env 模板 + runbook + 发布/回滚 checklist
- 新增 DB/文件存储备份恢复脚本(backup/restore)
- 新增 system.users 运营接口:创建/启用禁用/重置密码/分配角色 + 审计
- 新增 seed:trialrun 引导管理员账号(一次性口令)
- 补齐 SIGTERM/SIGINT 优雅停机(关闭 job/HTTP/DB)
|
2026-02-09 01:12:49 +08:00 |
|
wangsli
|
89c0ed2ec1
|
feat(server): 单域托管 client/dist 与 SPA 回退(E12)
- 新增 SERVE_CLIENT_DIST/CLIENT_DIST_DIR 配置
- 开启后注册 @fastify/static 并对非 /api GET(html) 回退 index.html
- docker-compose.yml 与 README 补充用法
|
2026-02-09 00:06:59 +08:00 |
|
wangsli
|
75d5b3d5de
|
feat(server): readiness 与作业统计可观测性(E11)
- 新增 /ready(DB 探活失败返回 503)
- OCR 作业输出 claimed/available/duplicate/failed 统计
- README 补充 /health 与 /ready 说明
|
2026-02-09 00:02:49 +08:00 |
|
wangsli
|
479565f737
|
feat(server): 安全基线(Helmet+限流+脱敏)(E10)
- 注册 @fastify/helmet(CSP 关闭)
- 引入 @fastify/rate-limit,并对 login/forgot/reset 按开关启用
- Fastify logger 增加敏感字段 redaction(authorization/cookie/password 等)
|
2026-02-08 23:58:55 +08:00 |
|
wangsli
|
7597756fad
|
feat(server): 试运行性能索引补强(E9)
- reimbursement_forms/invoice_pool/workflow_tasks/audit_logs 增加常用筛选组合索引
- 仅新增索引与迁移,便于回滚
|
2026-02-08 23:51:45 +08:00 |
|
wangsli
|
f4c476883e
|
feat: 默认账号文档与登录失败体验(E8)
- README 补充 seed:dev 默认账号(仅本地联调)
- LoginPage 增加后端不可达提示与 data-testid
- errorMessages 补充 SYS_001/AUTH_003 可读化
|
2026-02-08 23:42:59 +08:00 |
|
wangsli
|
a707edd3c9
|
feat(client): 委派管理页最小运营闭环(E7)
- 新增委派 API 封装与委派管理页面(创建/列表/撤销)
- 增加菜单入口与路由守卫(expense.proxy_manage)
|
2026-02-08 23:38:38 +08:00 |
|
wangsli
|
63103be653
|
feat(client): 票据中心精修与 testid(E6)
- 上传/筛选/列表/绑定/详情轮询统一 Card/Table/Button
- 强化 OCR 状态展示(pending_ocr/ocr_failed)与错误可读性
- 增加 data-testid 供 E2E 稳定定位
|
2026-02-08 23:32:54 +08:00 |
|
wangsli
|
e9974d4f59
|
feat(client): 报销页精修与 testid(E5)
- 报销列表使用 Tabs/Table 收敛展示
- 报销详情动作区(submit/withdraw/pay)统一组件与错误展示
- 支付凭证字段补齐 data-testid 供 E2E
|
2026-02-08 23:30:06 +08:00 |
|
wangsli
|
b94959f7d0
|
feat(client): 待办页精修与 testid(E4)
- 待办列表使用 Tabs/Table 统一样式
- 待办详情动作区使用 Button/Textarea/Card 收敛
- 增加 data-testid 供 Playwright 稳定定位
|
2026-02-08 23:26:20 +08:00 |
|
wangsli
|
8196bc6e77
|
feat(client): 导航布局收敛与移动端菜单(E3)
- Sidebar/Topbar 统一交互与样式
- 移动端抽屉菜单(Dialog)+ 账号下拉菜单(DropdownMenu)
- 导航项抽取为 NavLinks 便于后续扩展
|
2026-02-08 23:22:22 +08:00 |
|
wangsli
|
c7619e55b4
|
feat(client): UI primitives 基线(E2)
- 引入 Radix Dialog/DropdownMenu/Tabs + CVA
- 新增 Button/Input/Dialog/Tabs/Table/Card 等组件(本地拷贝单向同步)
- 增加 touch-target(44px) 样式基础
|
2026-02-08 23:17:38 +08:00 |
|
wangsli
|
4d4866d10e
|
chore(issues): 新增 P2/P3/P4 执行合同快照
- P2: 2026-02-08_14-20-25-p2-ci-and-tests.csv
- P3: 2026-02-08_17-05-00-p3-full-delivery.csv
- P4: 2026-02-08_21-50-09-p4-trialrun-ready.csv
|
2026-02-08 23:09:02 +08:00 |
|
wangsli
|
7a6f5573a6
|
feat(client): 完成 P3 业务页联动闭环(D6/D8/D10/D11)
- 待办:列表/详情 + approve/reject/return/transfer(D6)
- 报销:列表/详情 + create/submit/withdraw/pay(D8)
- 票据:列表/上传/OCR轮询/绑定/预览(D10)
- 统一:Api types + 错误映射 + react-query缓存失效(D11)
|
2026-02-08 23:08:41 +08:00 |
|
wangsli
|
65e7b37ebd
|
feat(server): 完成 P3 后端API与回归(D2~D9)
- workflow: 任务详情/转审候选/列表分页字段(D5)
- reimbursements: 列表API + pay凭证字段/幂等增强(D7)
- invoice-pool: 列表/详情API + 上传pending_ocr(D9)
- ocr/audit: mock provider + 回归脚本 + regression-all开关(D2/D3)
- CI: 新增 ci-minimal / ci-regression 工作流(D4)
|
2026-02-08 23:08:18 +08:00 |
|
wangsli
|
17a6ff4ee0
|
chore: 新增 P2 稳定化执行合同快照及根目录门禁脚本
- B1~B4 全部 DONE,旧快照不变
- check-minimal.sh 本地最小门禁入口
|
2026-02-08 11:39:12 +08:00 |
|
wangsli
|
0cd44a3d6a
|
feat(server): 委派回收并发防重 + 最小门禁闸门
- delegationRevokeJob 改用 FOR UPDATE SKIP LOCKED + UPDATE RETURNING 原子认领
- regression-workflow-actions 新增 RUN_DELEGATION_CONCURRENCY_CHECK 并发校验开关
- README 补充最小门禁与并发语义说明
|
2026-02-08 11:38:58 +08:00 |
|
wangsli
|
4c7018ca4a
|
feat(client): 增加审计日志页面与权限路由菜单
|
2026-02-07 21:54:37 +08:00 |
|
wangsli
|
c4df9a419a
|
feat(server): 完成 P2 后端能力(支付幂等、委派回收、OCR异步、审计)
|
2026-02-07 21:54:29 +08:00 |
|
wangsli
|
7ea25e9d72
|
chore: 建立 AGENTS 与 Issue CSV 执行合同基线
|
2026-02-07 21:54:04 +08:00 |
|
wangsli
|
c290e03fef
|
feat(client): 初始化前端壳与鉴权守卫(P1-5)
- 技术栈:React 18 + TypeScript + Vite + Tailwind
- API 层:ApiError + 401 自动刷新 + single-flight 重试
- 鉴权:内存 Access Token + Cookie Refresh + 启动 bootstrap
- RBAC:权限映射 + RequireAuth/RequirePermission 路由守卫
- 布局:OA 工作台壳层 + 侧边栏 + 5 个占位页面
- 样式:复用 hyb-web 视觉 token(单向同步)
- 文档:新增 client README,补充 server 联调说明
|
2026-02-07 16:43:57 +08:00 |
|
wangsli
|
f527633716
|
feat(server): 完成 P0+P1 后端能力(工作流、RBAC、付款归档)
P0 MVP:
- 认证:login/refresh/logout/forgot/reset + tokenVersion
- RBAC:角色到权限映射 + requirePermission
- 发票池:upload/bind/signed-url + 判重(VALID_003/VALID_005)
- 报销:create/view/submit + 单号生成
- 工作流:approve + department_manager 解析
P1 扩展:
- 动作:reject/return/withdraw(含 comment)
- transfer:任务转审 + 链路上限 3
- pay:approved -> paid + 发票归档 used_complete
- 动态审批链:approval_rules 驱动
回归脚本:
- smoke-test.sh / regression-dedup.sh / regression-workflow-actions.sh
|
2026-02-07 16:43:31 +08:00 |
|