huangzd1997
c55c4a140b
feat(A1/A3+C8): 客户端令牌链路打通(按人鉴权就绪)+ 快照 JSON 写入节流
A1/A3 客户端令牌链路(服务端守卫已能按 JWT 鉴权,缺口在客户端不带身份)
- 前端:新增 user-token-bridge(纯逻辑,值变化才推送)+ user-token-sync(启动安装,
pywebviewready/storage/60s 轮询补推),main.ts 接入;桥接口补 set_user_token
- 客户端:新增 crawler_core/user_token.py(持有 + 对自家 Java 端点注入
Authorization: Bearer <jwt>,Session.request 包装,第三方域名不注入、已有头不覆盖、
登出清空、SHUFUAI_DISABLE_USER_TOKEN_HOOK 可关);main.py 暴露桥方法并在启动安装钩子
- 服务端:守卫契约测试补 5 个用户态前缀用例(开关关闭放行 / 打开后匿名 401 /
用户令牌通过 / 内部令牌仍放行 / /api/ziniao 第二层)
- 翻开关的前置条件(客户端铺开后置 aiimage.security.user-tool-guard-enabled=true)写入报告
C8 快照 JSON 写入节流
- 读端改以 biz_task_result_item 行为准、JSON 仅兜底(历史任务 JSON 仍是唯一副本时可用)
- 整档 JSON 改 30s 节流写,终态路径 force 立即写;新增 2 个契约测试钉住语义
验证:mvn test 2888 全绿;npm test 741 全绿;user_token 钩子自测(注入/归一/第三方跳过/不覆盖/登出)通过
2026-09-14 10:20:15 +08:00
..
2026-09-13 10:03:59 +08:00
2026-09-08 10:02:55 +08:00
2026-08-30 23:12:27 +08:00
2026-08-31 20:07:02 +08:00
2026-08-31 20:05:53 +08:00
2026-08-30 22:49:45 +08:00
2026-08-31 20:27:29 +08:00
2026-09-13 23:32:27 +08:00
2026-08-30 23:05:08 +08:00
2026-08-30 23:07:08 +08:00
2026-09-13 10:51:19 +08:00
2026-09-14 04:15:36 +08:00
2026-09-02 05:55:43 +08:00
2026-09-05 00:21:27 +08:00
2026-09-13 23:16:59 +08:00
2026-09-13 10:51:19 +08:00
2026-09-01 12:53:12 +08:00
2026-09-05 00:22:48 +08:00
2026-09-02 05:49:01 +08:00
2026-09-13 23:48:24 +08:00
2026-08-31 19:18:57 +08:00
2026-08-30 23:15:31 +08:00
2026-09-14 06:23:46 +08:00
2026-09-13 23:22:49 +08:00
2026-08-31 20:00:45 +08:00
2026-08-30 23:17:02 +08:00
2026-08-30 22:53:08 +08:00
2026-08-30 22:47:41 +08:00
2026-09-02 05:48:09 +08:00
2026-09-14 04:15:36 +08:00
2026-09-14 04:15:36 +08:00
2026-08-31 19:31:10 +08:00
2026-09-03 01:57:41 +08:00
2026-09-14 04:15:36 +08:00
2026-09-13 10:51:19 +08:00
2026-09-14 04:15:36 +08:00
2026-09-14 04:15:36 +08:00
2026-09-14 04:15:36 +08:00
2026-09-14 04:15:36 +08:00
2026-09-14 04:15:36 +08:00
2026-08-31 19:29:01 +08:00
2026-09-14 04:15:36 +08:00
2026-09-13 23:59:06 +08:00
2026-08-30 22:57:04 +08:00
2026-08-30 23:08:56 +08:00
2026-09-01 12:54:13 +08:00
2026-08-30 22:55:27 +08:00
2026-09-13 10:51:19 +08:00
2026-08-31 21:17:59 +08:00
2026-08-31 20:26:31 +08:00
2026-08-31 21:14:47 +08:00
2026-08-31 20:31:48 +08:00
2026-08-31 20:54:35 +08:00
2026-08-31 21:12:33 +08:00
2026-08-31 20:52:02 +08:00
2026-08-31 20:30:45 +08:00
2026-08-30 23:11:11 +08:00
2026-08-31 21:02:52 +08:00
2026-08-31 20:35:10 +08:00
2026-08-31 20:58:05 +08:00
2026-09-01 12:54:13 +08:00
2026-08-31 21:07:43 +08:00
2026-08-31 19:23:13 +08:00
2026-08-30 23:18:25 +08:00
2026-08-30 23:10:00 +08:00
2026-08-31 20:01:52 +08:00
2026-09-05 00:26:09 +08:00
2026-09-13 10:03:59 +08:00
2026-09-05 00:22:06 +08:00
2026-09-13 23:08:22 +08:00
2026-09-14 06:23:46 +08:00
2026-08-31 20:16:30 +08:00
2026-08-31 22:47:47 +08:00
2026-08-30 22:44:12 +08:00
2026-08-31 20:14:43 +08:00
2026-08-31 20:14:43 +08:00
2026-09-14 06:23:46 +08:00
2026-08-30 23:01:17 +08:00
2026-09-14 06:23:46 +08:00
2026-08-31 20:45:56 +08:00
2026-08-31 20:36:18 +08:00
2026-08-31 19:24:26 +08:00
2026-09-11 01:59:42 +08:00
2026-09-13 23:16:59 +08:00
2026-08-31 19:16:19 +08:00
2026-09-14 10:20:15 +08:00
2026-08-30 23:13:55 +08:00
2026-09-11 16:09:53 +08:00