[split-upload 5/6] f2fd4fa backup via proxy

This commit is contained in:
Simon
2026-08-11 14:17:39 +08:00
parent 90ff78563a
commit 7e7cafb4a3
74 changed files with 9410 additions and 3 deletions
@@ -88,7 +88,66 @@
---
## 2026-07-04 09:30 执行结果
## 2026-08-10 09:00 早班巡检执行摘要
### 通道状态
- **JumpServer-V2 cache 有效**:服务端建 token 返回 201,可免登录复用
- **Gitea 不可达**`http://192.168.3.200:8418` Failed to connect after 21shome 无 LAN/VPN),本次 push 跳过,仅本地 commit `b4e21e3`
### 看板 v1.9.2 → v1.9.3-DRAFT(早班巡检同步触发)
- **🔴 P0-1 `/itportal/` 500 修复闭环**nginx.conf line 139-142 已显式注释"08-03 fix 已生效",今日公网 `curl /itportal/` 实测 = **HTTP 404**rewrite cycle 不再发生)。看板 v1.9.2 标"待部署"是 08-06 旧观察 → 迁移至"已完成"区,闭锁日期 2026-08-03
- **P0-NEW10(新建)**:后端 debug 端点全清单治理(test-ping/test-error/health/ready/metrics/version/openapi.json)生产暴露。dida task id `6a7928a2e4b068980437bb15`due 2026-08-13
- **P1 治理-2/3(新建)**:看板-滴答双向同步铁律升级(dida→看板反向同步纳入巡检必做)
- **P1-Alembic / P1-Idx(补登)**dida→看板反向脱节 — dida `6a705109` Alembic 053-057 迁移脱节 + dida `6a70510f` troubleshooting_templates 索引
- **⚠️ 风险项 1(补登)**:dida `6a752de4` Nginx /h5/ alias+try_files 潜伏 500 隐患
- **console 残留 128 → 129**h5 101(不变)/ agent 17→20useScreenCapture/useWebSocket 新增 3 处,源自 5311a52 合并)/ terminal 7→8useWebSocket.ts 新增 1 处)
- **BLK-A/B 26 → 30 天阈值校正**2026-07-11 → 2026-08-10
### dida365 同步动作
- **close** `6a6bfc2be4b03a0a8af7f702` [P1 sensitive_words 13 端点补 auth] — 看板 08-04 已完成,dida 仍 status=0(看板-滴答脱节);本次同步 closecompletedTime 2026-08-10 01:25:26 UTC
- **create** `6a7928a2e4b068980437bb15` [P0-NEW10] — 项目内(6a6c05e0ebcf5e0000000069P0 列
- 误创建到 inbox`6a792893`)后已删除
### 公网生产实测
- `/api/health` 200 OK + nginx 405HEAD method not allowed,正常)
- `/itdesk/` `/itagent/` `/itadmin/` `/itterminal/` 全部 200 OK
- `/itportal/` → 404P0-1 闭环证据)
- `/api/test-ping` GET 200 + `{"code":0,"data":{"message":"pong"}}`P0-NEW10 仍存在)
- `/h5/go` 302 → `/h5/v20260808/``/itservice/go` 302 → `/itservice/v20260808/`(双入口重指一致)
- 看板 HTML 公网 URL 200 OK 45683 bytes(与本地完全匹配)
### 服务器健康(jumpserver-V2 inspect
- 5 容器全部 healthynginx / backend / redis / neo4j / postgres
- 磁盘 129G 可用(13%),内存 12144MB availableload 0.77/0.68/0.6958 天 uptime
- 后端 `/app/logs/` 6 文件(10.4MB active + 5×20MB 轮转)
- nginx config test OK
### 代码/安全扫描
- console 残留 129 行(详见上)
- 后端 config.py 0 硬编码
- 后端 eval/exec/cmd 注入:0 命中(仅 ast.literal_eval 安全用法)
- 后端 logger 含敏感字段:5 处 token 截短日志([:8]/[:10]),可接受
- 后端 TODO/FIXME1 处真正 TODO 注释(admin/security_comparison.py:110),其它为命名常量前缀 OK
- P0-NEW9 修复仍未推进
### 受限说明(home 无 VPN
- WAF path-cache 实测需公网 URL,已用 `curl -sI` 全量替代
- Docker Desktop 不可用,容器状态经 nginx 间接验证
- Gitea push 跳过(192.168.3.200 不可达)
- 后端 logs/*.log JSON 结构化抽样受限于 exec 输出 buffering(部分命令空输出)
### git 状态
- 本地 commit `b4e21e3` 仅看板 .md + .html(遵守铁律,不自动 commit 其它 untracked 修改)
- push Gitea 失败:192.168.3.200:8418 connect timeout 21s
### PM 关注优先级
1. P0-NEW10 / P0-NEW9 debug 端点治理(生产暴露,建议 nginx 层立即 404 防护)
2. P0-3 datetime 时区错位(7 天阈值,仍未修复)
3. P0-4 / P0-5 SessionLocal NoneType + constants 打包错误(同根因,影响 H5 IT 资产推荐)
4. BLK-A/B 30 天催办,建议升级到平台组组长
5. P1-Alembicdida 6a705109due 2026-08-09 已逾期 1 天,需尽快跑 053-057 五个迁移
---
**数据来源**`.taskboard-cache/任务执行状态看板_cache.json`(缓存时间 2026-07-03T08:44:12
**⚠️ 原始看板文件缺失**`docs/小组任务/任务执行状态看板.md` 不存在,本次巡检基于缓存数据 + 07-03巡检记录 + REVIEW_B_T10.md 综合分析
@@ -140,3 +199,147 @@
3. 确认BLOCK-18/B-T17真实状态
4. 校正看板数据(概览表+快速检索区)
5. 核实A-T14~T16是否实质停滞
---
## 2026-08-07 早班巡检执行摘要
- 看板 v1.9.1-FROZENP0表格6条未完成(P0-6为已知噪声,统计口径5条),P1 0,决策阻塞2项且均26天,进行中#81
- 生产:5个容器均healthybackend health/ready正常,DB与Redis依赖检查通过;磁盘和内存正常;Nginx配置测试通过。
- 异常:/itportal/=404、/itterminal/=500/opt/wecom-it-desk/logs/*无输出。
- 只读代码/安全检查发现:凭据硬编码痕迹、SVG媒体未鉴权、OTP/Token日志泄露面、生产响应安全头缺失、XFF信任过宽、依赖与死代码需治理。未修改源代码。
---
## 2026-08-08 早班巡检执行摘要(06:00 自动化,本次home execution
### 通道说明
- **JumpServer 直连不可达**`https://jumpserver.dc.servyou-it.com` DNS 解析失败(公司 VPN 未连接),v2_ops status 报 NameResolutionError。无法走 PSFTP/plink PTY 直连 10.90.5.110。
- **降级方案**:公网 HTTPS URL 直接巡检(绕过 JumpServer)+ 本地仅读代码扫描。`itsupport.servyou.com.cn` 公网可达(Front 6/8 OK + /api/health OK + 重定向链正常 + 安全响应头 7/7 到位),证据链可信。
- **本地 Docker Desktop 不可用**`dockerDesktopLinuxEngine` pipe 不存在;容器状态由公网 HTTP 端点间接判定。
### 看板(v1.9.1-FROZEN,未变更)核心数据
- 🔴 P0 待修:5P0-1 /itportal 500 · P0-3 closing_service datetime naive · P0-4 employee_profile_service SessionLocal · P0-5 constants/ 打包互错 · P0-NEW8 host vs git 结构差异);P0-6 OAuth 信息类属背景噪声。
- 🟡 P10。
- 🟢 阻塞:BLK-A 企微会议室 Secret + BLK-B ITSM API 授权,**均 26 天**。
- 🟠 进行中:#81 敏感词检测 v1.2 待排期(v1.1 阶段 1 已完成)。
- ✅ 最近完成:#104 运行期日志查看页结案 + P1 Nginx 7 安全头注入 + sensitive_words 13 端点补 require_admin + 前端 console.log 208 行清理 + troubleshooting_templates ORM 化 + voice_asr auth 加固。
### 生产公网实测
- `/`200 · `/itdesk/` `/itagent/` `/itadmin/` 全部 200 · `/h5/go` 302→`/h5/v20260807f/`(与记忆一致)· `/itservice/go` 302 重定向正常。
- `/api/health`200 OK`{"status":"ok","service":"wecom-it-smart-desk"}``/api/ready`:未测试;`/health/ready`404。
- **DELETE /api/admin/users/1 返回 403**admin IP 白名单中间件生效,依赖 #48 既有门禁)。
- `https://itsupport.servyou.com.cn/docs/kanban/项目状态看板.html`20033338B)—— v1.9.1 已可对外访问。
- **7 个安全头全到位**HSTS / X-Frame-Options / X-XSS-Protection / Referrer-Policy / Permissions-Policy / COOP / X-Content-Type-Options08-07 P1 修复闭环证据)。
- H5 静态头像 `/h5/avatars/agent.png`200 image/png 813504Bv20260807b 修复闭环)。
### 🆕 看板-现实脱节(重要新增治理项)
- 看板 v1.9.1 标"前端 console.log 残留 208 行清理 已完成 2026-08-05"。
- **本次实测反而发现残留**`console.{log,debug,info}` 合计 **128 行** = h5:101 + agent:17 + admin:0 + terminal:7 + 共 3 类(原仅清 console.log 可能未含 debug/info;或清理后被新增)。
- **结论**:上次结案可能与现实不一致;下次发版前需 vite `terser drop_console: true` 硬开关验证,并 grep 一遍再冻结看板。
### 只读代码/安全扫描(src/backend + src/frontend-*
- CORS:规范(`settings.cors_origins_list` env 驱动 + 白名单 method + allow_credentials=True)。
- `config.py` 全 grepSECRET/KEY/TOKEN/PASSWORD):**零硬编码**(环境变量驱动)。
- 后端 `eval/exec/os.system/shell=True/subprocess.call`**零命中**(无命令注入面)。
- 后端 `logger.*(...)` 含敏感字段(token/password/secret/otp/phone/email):**零命中**。
- 后端 TODO/FIXME/XXX**零**。
- 后端 main.py 982/987 行 `@app.get("/test-ping"` `/test-error` `/metrics` `/version` **未走环境分支****生产公网实测 `GET /api/test-ping`** 返回 `{"code":0,"data":{"message":"pong"},"message":"success"}` —— **生产暴露调试端点**,低危但属治理项,建议 `_is_dev_mode()` 包裹或环境判断后跳过注册。
- 后端 `print()` 命中 3 处 main.py(中间件调试 [MW] 标记)+ 9 处 import_knowledge_to_graph.py(一次性脚本)。
- 前端 `console.{log,debug,info}` 残留 128 行(见上);`console.warn/error` 未在本次扫描口径内。
- lianruan/client.py:84 `verify=False`:已注释"内网自签证书",场景可接受;如改公网/外网需评估。
- avatar.py 代理白名单用 `any(domain in avatar_url for ...)`substring 而非 host 提取)—— **潜在 SSRF 绕过面**(如 `evil-wework.qpic.cn.attacker.com`),业务仅代理企微头像,**低危但建议改为 `urlparse(avatar_url).hostname` 精确匹配**。
### 整体评估
- 系统可用性:🟢 正常(公网四端点 + API health + 重定向链 + 安全头全 OK)。
- 看板与代码一致性:🟡 出现一处脱节(console.log),需立项修订。
- 阻塞治理:🔴 BLK-A/B 26 天仍未解,**超出 3 天阈值 23 天**。
- P0/NEW8 host 文件结构差异未解,仍存在本地 compose stale 风险(08-07 已对齐本地 compose 是关键修正,但仅本地未 push)。
### 行动建议(PM 关注优先级)
1. P0-5 容器 `app/constants/` 打包互错(连锁影响 P0-4):**建议最高**,影响 H5 IT 资产推荐推送 + 多端 ModuleNotFoundError。
2. P0-NEW8 host vs git 结构差异 + 本地 compose 已对齐但未 push:建议补 push 到 Gitea(公司 LAN/VPN 可达时)。
3. 治理新增:**看板-现实脱节 console.log 128 行残留** → 立项"前端 console 残留治理"或校验 vite 硬开关。
4. 治理新增:**main.py 调试端点 test-ping/test-error 生产暴露** → 加 env 分支保护。
5. BLK-A / BLK-B 26 天催办:建议升级到平台组组长。
### 不在本巡检范围内的现场能力(受限于 home VPN 缺失)
- 容器层 healthwecom_it_backend / nginx / postgres / redis 容器级 healthy/dump 日志);
- 宿主机磁盘 / 内存 / inode / 磁盘 I/O 实测;
- 后端 logs/*.log JSON 结构化抽样与 #104 验收复测;
- Postgres / Redis 连接数与慢查询;
- 本地 compose up 一致性实测(依赖 Docker Desktop)。
下次在 LAN/VPN 内执行可补全。
---
## 2026-08-11 09:00 早班巡检执行摘要
### 通道状态
- **jumpserver-V2 早期 cache 有效(09:24:31**:✅ status 建 token 201docker ps/df/free/du/nginx config test 全部 PASS
- **jumpserver-V2 后期 DNS 失效(09:25+**:❌ `jumpserver.dc.servyou-it.com` NameResolutionErrorhome 无公司 VPN),6.3 部署步骤中断
- **Gitea tailnet 可达**:✅ `https://ds923plus.tail58d872.ts.net` 200 OKgit push 成功
### 看板 v1.9.3-DRAFT → v1.9.4-DRAFT(早班巡检同步触发)
- **🔴 公网版本停滞 3 天**NEW):jumpserver-V2 + 公网 `curl` 实测 `/h5/go``302 → /h5/v20260808/`08-08 09:30 last deploy),/itservice/go 同样。意味着自 v1.9.3 看板升级(08-10 09:00)至今无新发版
- **🔴 P0-NEW9/NEW10/NEW11 仍 200 暴露**:公网 `/api/test-ping` 200 pong + `/api/test-error` 200 + `/api/openapi.json` 200 OK 424122B312 端点全公开 = 攻击者字典)
- **🔴 风险 /h5/ 今日到期**dida `6a752de4` due 2026-08-11 16:00,今晚不修即逾期
- **🔴 P0-3 closing_service 时区错位 5→8 天**dida `6a72c892` 仍 status=0due 08-06 已逾期 5 天
- **🟡 BLK-A/B 30→31 天阈值校正**
- **🟡 P1-Alembic 逾期 2 天 + P1-Idx 逾期 4 天**dida 仍 status=0
- **🟢 v1.9.3-DRAFT 1 天未冻结**:本次合并入 v1.9.4 待审
- **🟢 容器与资源全绿**5 容器 all healthynginx 18h / backend 35h / redis 3w / neo4j 4w / postgres 4w);磁盘 129G 可用(13%);内存 11Gi available;负载 0.64/0.73/0.6959 天 uptime);后端容器日志 6 文件 122MBnginx config test OK
### dida365 同步动作
- **create** `6a7a7ae6e4b068a058339f6e` [P0-NEW11] /api/openapi.json 公开 312 端点治理 — 项目内 P0 列,due 2026-08-14
- 误创建到 inbox (`6a7a7ad8e4b01cac6d69c983`) 后已删除
### 公网生产实测
- 5 端点(/itdesk/ /itagent/ /itadmin/ /itterminal/ /200 OK
- /itportal/ 404P0-1 仍闭环)
- /h5/go 302 → /h5/v20260808/08-08 last deploy3 天无新版本)
- /itservice/go 302 → /itservice/v20260808/
- /api/health 200(容器内 `curl /health` 200 OK + 7 安全头齐备
- /api/test-ping 200 pongP0-NEW9 仍暴露)
- /api/test-error 200 返"服务器内部错误"P0-NEW10 仍暴露)
- /api/openapi.json 200 OK 424122BP0-NEW10/NEW11 仍暴露)
- 看板 HTML 公网 200 OK 45683B = 本地 45683Bv1.9.3 派生)
### 服务器健康(jumpserver-V2 inspect 早期 cache 窗口)
- 5 容器全部 healthynginx / backend / redis / neo4j / postgres
- 磁盘 129G 可用(13%),内存 12144MB availableload 0.64/0.73/0.6959 天 uptime
- 后端容器日志 6 文件(active 17.3MB + 5×20MB 轮转,最后轮转 2026-08-08 23:33
- nginx config test OK
- Redis ping 报 NOAUTH(正常,容器有密码保护)
- postgres pg_isready = accepting connections
### 代码/安全扫描(本地只读)
- 后端硬编码:0 命中(config.py + clients 均为 env 驱动)
- 后端 logger 含敏感字段:10 处 token 截短([:4]/[:8]/[:10]),可接受
- 后端 eval/exec0
- 后端 shell=True0
- 后端 print()3 处 main.py 调试([MW] 中间件标记)+ 9 处 import_knowledge_to_graph 一次性脚本
- 后端 TODO1 处真正 TODOadmin/security_comparison.py:110+ 8 处 TODO_ 前缀常量名
- 前端 console 残留:129 行 = h5:101 + agent:20 + admin:0 + terminal:8(持平)
- main.py 调试端点全清单:6 个(test-ping/test-error/health/ready/metrics/version+ /api/openapi.json 公开
### 受限说明
- **jumpserver-V2 DNS 失效**6.3 部署步骤(HTML 移动到 docs-public/)跳过。HTML 在 /tmp/kanban_20260811092614.html53168B, md5=20e7e5678394...)留存,**公网看板 HTML 仍是 v1.9.3 (45683B)**
- **公司 VPN 未连接**home 不在 LAN,无法直连 jumpserver
- **公网生产端点全 OK**:通过 itsupport.servyou.com.cn 实测可绕过 jumpserver 验证
### git 状态
- 本地 commit `6be361f` 仅看板 .md + .html(遵守铁律,不自动 commit 其它 untracked 修改)
- 推送成功:`feat/task-actions-pivot-v1.8` 快进 `f1b12b7..6be361f`
- Gitea API 核验:feat SHA = `6be361fb63783520f5dcfd7cce386ac9b5523d4f` ✓ = local
- main SHA 不变 = `5db3079d41a8934c841edfecfb8e5c8145e69cd1`
- PR #6 已存在
### PM 关注优先级
1. **P0-NEW9 / P0-NEW10 / P0-NEW11 三件套**debug 端点 + openapi.json):due 08-12/13/14**1-3 天内**必须修;否则攻击者字典级暴露持续
2. **风险 /h5/ 500 隐患**dida `6a752de4`):**今晚 16:00 到期**,最迟明天修复
3. **公网版本停滞 3 天**:建议 PM 评估是否启动新版本发版(含 P0-NEW9 修复 + 前端 PR 累积)
4. **P0-3 closing_service 时区错位 8 天**dida `6a72c892` 已逾期 5 天
5. **BLK-A/B 31 天阈值**dida `6a7008e9...870ba` / `...f6c2` 已逾期 4 天,建议升级到平台组组长
6. **P1-Alembicdida 6a705109)已逾期 2 天 + P1-Idxdida 6a70510f)已逾期 4 天**
### v1.9.3-DRAFT 1 天未冻结提醒
v1.9.3 在 08-10 09:00 巡检生成 DRAFT 后 24h 未升级为 FROZEN,本次合并入 v1.9.4 待审。**建议 PM 审核后冻结生成 `项目状态看板-v1.9.4-FROZEN.html` 归档**(下次发版恢复 server 后执行)。
Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 KiB