liuyun
ba7f2397d7
feat(c4): 质控异常处理端点(handle_status/handle_result)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 01:50:42 +08:00
liuyun
915745226f
fix(c4): 质控放行自检顺序 + 补正≥3次进质控重点
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 01:37:56 +08:00
liuyun
f24b86064f
feat(c4): 质控模块(全量质控/放行退回/五类推送/异常联动/补正)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 01:32:26 +08:00
liuyun
8f9177e36a
feat(c4): qc + record_correction 数据模型
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 01:23:41 +08:00
liuyun
2828a9da58
feat(c4): qc 权限码/错误码/APIS
2026-10-15 01:22:17 +08:00
liuyun
9f232356e0
fix(c3): 结转幂等 + offlineSync 扑空拒签 + 坐标全路径序列化
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 01:08:36 +08:00
liuyun
5f060292c6
fix(c3): 扑空 not_met_reason 截断 50 + report 坐标 Decimal 转字符串
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 01:07:18 +08:00
liuyun
c00c4ee007
fix(c3): record 坐标 Decimal 返回前转字符串,防泄漏 {s,e,d}
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 01:00:06 +08:00
liuyun
ab09210d28
fix(c3): 异常列表 visitLat/visitLng Decimal 转字符串
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 01:00:05 +08:00
liuyun
169b4e2c51
fix(c3): 垫付结转 R9 门控——仅待遇已转正常享受(active)可结转
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 00:49:24 +08:00
liuyun
1966a68bc8
fix(c3): record 必拍档不可被 extraFlag 绕过 + 未派单离线补传守卫
...
- resolvePhotoRequired 先按 svcId 查 order.item_list,命中以 photo_tier 为准,
忽略客户端 extraFlag/photo_required;仅无对应项才回退 DTO
- offlineSync 对 assigneeId 为 null(未派单)工单抛 RECORD_ORDER_INVALID,防 null 入 NOT NULL 列
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 00:36:54 +08:00
liuyun
55f432b8e7
chore(c3): 注册 record/abnormal 模块
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 00:36:36 +08:00
liuyun
563f5ab5b5
fix(c3): record 从 order 推导 photo_required 与 elder/assignee
...
- itemSave:photo_required 由 order.item_list 的 photo_tier 推导(must→required),
extraFlag 临时加项才回退 DTO 值,防客户端传 false 绕过 3001 必拍校验
- offlineSync:elder_id/assignee_id 以 order 为准,忽略 DTO 字段,防 order/elder/assignee 不匹配
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 00:34:39 +08:00
liuyun
2e4c916949
fix(c3): 扑空转 not_met 前 requireOrder 校验(44003)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 00:33:56 +08:00
liuyun
5bfd0f4748
feat(c3): 履约留痕模块(签到/签退/项目/照片/离线/垫付结转)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 00:28:39 +08:00
liuyun
93e532aa7d
feat(c3): 异常上报模块(9宫格/扑空转 not_met)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 00:26:15 +08:00
liuyun
4295683f04
feat(c3): record/item/photo/abnormal + settlement/report 数据模型
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-15 00:20:26 +08:00
liuyun
71b9155ccf
feat(c3): record/abnormal 权限码/错误码/APIS
...
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-10-15 00:19:38 +08:00
liuyun
66da809a2e
fix(c2): 属地项数提示级 + assign L2 放松 + reassign 守卫 + 时区标准化
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 23:41:20 +08:00
liuyun
8791ca494b
fix(c2): 个人项目库允许保存空库(清空)
...
- R12: PutElderSvcDto.svcIds 移除 @ArrayNotEmpty,空数组=清空
- 补测 put 空 svcIds 清空项目库
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 23:07:02 +08:00
liuyun
00c8fa4d4c
feat(c2): 工单按日列表接口(排班日视图 R11)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 23:06:03 +08:00
liuyun
9c4fd6f4ca
feat(c2): 工单模块(派单/调单/冲突/批量推荐)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 22:42:15 +08:00
liuyun
161a1253ee
fix(c2): plan create 置 active + confirm 不改状态 + change 校验同老人
...
- R7: create 置 planStatus=active(spec 权威);confirm 仅写确认字段不改状态
- R8: change 校验 oldPlan.elderId === dto.elderId,不匹配拒绝
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 22:32:59 +08:00
liuyun
418dfb9dae
feat(c2): 服务计划 + 老人个人项目库模块
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 22:27:34 +08:00
liuyun
515e22453c
feat(c2): plan/order 权限码/错误码/APIS
2026-10-14 22:13:53 +08:00
liuyun
766d8c7218
feat(c2): plan/plan_item/order/elder_svc 数据模型
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 22:08:40 +08:00
liuyun
312712f86c
chore(c1): .env.example 修正 MinIO 端口 9010 与凭据 admin/admin111
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-14 22:01:19 +08:00
liuyun
64c3efd931
fix(c1): elder 日期用 UTC 零点,修复 @db.Date 提前一天的 off-by-one
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 21:27:26 +08:00
liuyun
a949acbc3b
fix(c1): elder 建档日期字段转 Date 落库(修复 50000)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 21:23:21 +08:00
liuyun
0cbdb7f825
fix(c1): elder 十态校验/不可逆态守卫/待遇止>起 + statusLog 单测
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 17:29:41 +08:00
liuyun
1308675f80
feat(c1): elder 待遇档案模块(建档/状态机/掩码/上传)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 17:19:07 +08:00
liuyun
465057cce0
feat(c1): MinIO 存储模块
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 17:03:12 +08:00
liuyun
f3c775cea9
feat(c1): elder 权限码/错误码/接口资源
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 16:57:55 +08:00
liuyun
b83c59611c
feat(c1): elder + elder_status_log 数据模型
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 16:54:45 +08:00
liuyun
239dec912c
refactor(c0): 业务表去 sys_ 前缀改业务领域命名,字典复用脚手架
...
- ltc_agency/ltc_staff;svc_national/svc_local/svc_mapping/svc_org;loc_config
- 删 sys_dict_abnormal_type/sys_dict_photo_tier,异常分类/拍照分档改为内置字典(abnormal_type/photo_tier)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-14 14:44:58 +08:00
liuyun
aa95586a55
fix(c0): 接线业务 RBAC 与补齐服务机构设置菜单
...
- APIS 登记 agency/staff/svc-org 业务接口资源(code=权限码)
- syncTenantResources 为业务租户预置 5 个业务角色并授权
- MENUS 补齐 svc-config-loc(属地与目录)与 svc-config-docking(对接档位)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 13:47:55 +08:00
liuyun
945fe5daa3
feat(c0): catalog 目录模块(属地加载 + 机构项目库)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 13:08:47 +08:00
liuyun
0be521bd72
fix(c0): staff 绑定 userId 前校验账号在本租户存在
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 13:01:32 +08:00
liuyun
5a3beb4923
feat(c0): staff 人员模块(user_id 关联账号 + 归属组长)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 12:56:07 +08:00
liuyun
856e906740
feat(c0): agency 机构模块(按租户读写机构信息)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 12:48:27 +08:00
liuyun
198517bde4
feat(c0): 长护服务菜单组 + 目录 seed 骨架
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 12:42:53 +08:00
liuyun
b5eb94d3ae
feat(c0): 服务机构端权限码与业务错误码
2026-10-14 12:39:42 +08:00
liuyun
6f32875295
feat(c0): 服务机构端基础数据模型(9 表 + 多租户/软删清单)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 12:36:43 +08:00
liuyun
8fca4a1b1e
chore(db): 业务表统一字符集为 utf8mb4_general_ci
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-14 09:56:16 +08:00
liuyun
6618137da5
feat(auth): 平台超管租户切换(super 标志 + switch-tenant)
...
- JWT 加 super 标志,sub 保持超管真实 userId,tenantCode 随切换
- isSuper 解析/checkUserActive/PermissionsGuard 支持跨租户超管
- POST /auth/switch-tenant
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-12 00:00:38 +08:00
liuyun
477f35293e
fix(security): 若干越权/健壮性修复
...
- assignOrgs 校验 orgCodes 存在性(对齐 assignResources)
- lock/kick 保护保留角色账号(super_admin/tenant_super_admin)
- BatchDeleteDto 加 @ArrayMaxSize(100)
- 待改密门禁显式放行 /auth/logout
- 分配部门改用独立权限码 role:assign-org
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-11 22:56:12 +08:00
liuyun
8eefa7fa44
feat(error): 业务错误码注册表(业务域+错误序)+ BusinessException
...
- error-codes 单一注册表 + BusinessException + 过滤器识别
- 迁移登录/锁定/待改密/用户名冲突/租户/会话等关键错误
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-11 22:42:12 +08:00
liuyun
f747ad5442
feat(tenant): 租户品牌定制(brand_name/logo_url/theme_color/copyright + GET /auth/brand)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-11 22:32:14 +08:00
liuyun
bad8639175
feat(notice): 站内通知(公告 + 已读追踪)
...
- Notice/NoticeRead 实体;管理侧 CRUD + 用户侧 mine/unread-count/read/read-all
- 资源注册 notice 菜单 + 接口
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-11 22:25:19 +08:00
liuyun
9869974d4c
feat(auth): 首登强制改密 + 待改密门禁
...
- User 新增 must_change_password;创建(默认强制)/重置/createTenant 置 true
- 登录响应返回 mustChangePassword,改密成功清除
- JwtAuthGuard 待改密门禁:仅放行 PATCH /auth/me/password
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-11 21:54:38 +08:00