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
父节点 c791e67b20
当前提交 1855a82011
共修改 9 个文件,包含 428 行新增和 7 行删除
+5
查看文件
@@ -366,19 +366,24 @@ npm run job:ocr-once
### 5.9 账号与角色管理(E17,试运行运营)
- `GET /api/users`:员工列表(分页/搜索)
- `POST /api/users`:创建员工(含初始密码)
- `GET /api/users/:id`:员工详情(管理员可看全部;员工可看自己;敏感字段仅返回脱敏)
- `POST /api/users/:id/disable`:禁用员工(tokenVersion+1 + 撤销 refresh)
- `POST /api/users/:id/enable`:启用员工(tokenVersion+1 + 撤销 refresh)
- `POST /api/users/:id/reset-password`:重置密码(返回一次性口令,tokenVersion+1)
- `POST /api/users/:id/roles`:设置角色(tokenVersion+1 + 撤销 refresh)
- `GET /api/users/:id/sensitive`:敏感字段明文查询(F25)
- `PATCH /api/users/:id/sensitive`:敏感字段更新(F25)
权限:
- `system.users`(hr/admin;admin 具备 `*`)
- `system.users_sensitive`(仅特权账号;用于解密查看/更新银行卡、身份证等)
---
## 6. 关键环境变量
- `DATABASE_URL`: PostgreSQL 连接串
- `JWT_SECRET`: JWT & signed-url token 签名密钥
- `FIELD_ENCRYPTION_KEY`: 敏感字段加密密钥(AES-256-GCM;base64 32 bytes;用于银行卡/身份证等)
- `APP_TIMEZONE`: 默认 `Asia/Shanghai`
- `STORAGE_DIR`: 默认 `generated/storage`(相对 `server/`)
- `SERVE_CLIENT_DIST`: 是否由 server 托管 `client/dist`(默认 `false`)