|
|
92ba2e779f
|
refactor(server): 用已装库替换手写工具
- uuid v7 替换手写 RFC9562 实现(uuid@11.1.1 转为直接依赖)
- node:timers/promises setTimeout 替换两处手写 sleep(钉钉限流、AI 上游重试退避)
- dayjs 替换 4 处零散 Date 格式化(imports/expenses/occupancies 导入模板、档案报告日期)
|
2026-08-08 17:46:31 +08:00 |
|
|
|
a644a8de42
|
refactor(server): 清理全量 any 类型安全警告 (692 → 0)
- 全模块类型化:controller 的 req: any → AuthenticatedRequest/RequestUser,
聚合查询 getRawMany 泛型标注、导入行/响应体定义具体 interface、
catch (e: any) → unknown + 收窄、no-base-to-string 用 String() 显式转换
- 第三方无类型库边界(pdfkit/exceljs)文件级或单行 disable 并注明理由
- 顺带修复:get-business-context.tool 两个 require-await error、
bills.controller 参数顺序隐患、main.ts compression 调用
- 运行时逻辑零改动;测试 142 套件 / 1065 用例全部通过
|
2026-08-08 09:28:23 +08:00 |
|
|
|
5b5ffb5b9e
|
fix(server): 路由 id 使用 ParseIntPipe,限制分页与批量数组上限
|
2026-08-07 16:38:03 +08:00 |
|
|
|
fd39e1686a
|
feat: 重构各业务模块管理页面与服务
|
2026-08-05 17:12:00 +08:00 |
|
|
|
a7a7af1667
|
fix: close permission review gaps
fix: harden permission-gated UI — minimum-org endpoint, modal/Popconfirm fail-closed on revocation
|
2026-07-23 14:28:58 +08:00 |
|
|
|
a266d450e1
|
chore: apply eslint --fix autofixes (remove unnecessary as never casts in tests)
|
2026-07-12 23:01:37 +08:00 |
|
|
|
8f0991a51f
|
feat: replace tenants with organization management
|
2026-07-10 21:27:26 +08:00 |
|