Files
wecom_it_smart_desk/docs/07-项目管理/任务说明书/任务说明书-76-零信任VPN卡片免登录修复.md
T
Simon facc04aa65 chore: docs 结构整改 + compose 双目录对齐(合并重建提交)
本提交为 .git 对象库损坏后的重建提交,内容等价于原先三个本地提交
(5e2fd4c2 / 57a53c98 / 5d7e1873)的累积结果,未做任何额外改动。

一、docs 结构整改(整改 #14)
根因:重构时新结构为 untracked 文件,执行 git stash(未带 -u)未纳入,
随后 git reset 拉回 HEAD 旧 tracked 树,导致旧树复活、新旧两棵目录
树并存于 docs/,共 791 文件、双分类体系冲突。

修复动作:
- b2 同名异主题文件改名迁移保全 9 个
- C 类 39 个孤立文件按主题正确归类
- A/B1 类 222 个重复文件删除(新结构已有内容副本)
- 9 个旧独有空目录删除
- 270 处内部引用按 verified 映射改写
- 整改记录 #14 登记于 04-运维文档/部署运维

结果:docs 791 → 569 文件,顶层仅规范 8 类 + 治理文件,单树恢复。
残留:约 20 处指向从未存在文件的陈旧死链,归入独立文档卫生任务。

二、compose 双目录对齐(消除踩坑 A)
- docker-compose.yml:nginx 前端挂载全部由根目录 frontend-*/dist
  改为 src/frontend-*/dist(h5 / agent / admin / terminal)
- docker-compose.dev.yml:dev 服务 build context 与卷同步改 src/
- 效果:本地 docker compose up 不再把根目录 stale dist 挂回,
  与线上一致,分叉隐患消除(已 docker compose config 校验通过)

防复发铁律:
- 重构须提交;仓库修复须 git stash -u 或先 commit
- 新结构须 git add 并提交,避免再次 untracked 复活
- H5 改动只动 src/frontend-h5/,禁改根目录遗留 frontend-*/
2026-08-07 22:31:32 +08:00

6.1 KiB
Raw Blame History

任务说明书 - 零信任VPN账号申请卡片免登录修复

版本: v2.0 | 日期: 2026-07-17


📋 基本信息

项目 内容
任务名称 零信任VPN账号申请卡片免登录修复
任务ID #76
优先级 🟠P1
类型 Bug修复
状态 已完成(保留扫码登录作为人机校验)
负责人 宋献
创建日期 2026-07-17
计划完成日期 2026-07-17

📥 输入项来源

产品需求

来源文档 相关章节 说明
01-产品文档/IT智能服务台-产品需求文档PRD-v2.md §3.2 智能推荐卡片 员工通过AI推荐卡片直接跳转到ITSM审批
02-技术文档/实现配置/dify_main_chat_prompt_v1.1.md - Dify返回的approval_type为中文分类名"账号权限申请"

技术架构

来源文档 相关章节 说明
本次用户提供的认证配置信息 - 一站式运维平台的OAuth2.0配置域名

用户提供的认证配置信息

配置项 域名
应用主页域名 itsm.servyou.com.cn
OAuth2.0网页授权回调域名 biz.17win.com
JS-SDK可信域名 itsm.shuiyou.com.cn
跳转小程序可信域名 itsm.shuiyou.com.cn
Web网页扫码登录回调域名 devops.dc.servyou-it.com

关键发现

  1. itsm.servyou.com.cn(企微应用主页)打开时,可实现免登录认证。
  2. 重要约束itsm.servyou.com.cn 是移动端 SPA/itsm-miniapp-mobile/),服务器未配置 SPA fallback,所有子路由(如 /pages/login/index/createTicket/:name)直接 URL 访问均返回 404。仅应用首页 /itsm-miniapp-mobile/ 返回 200 且免登录。
  3. 因此无法深链到具体工单创建表单,卡片只能落到 ITSM 移动端首页(免登录),由用户点选创建工单。

📤 输出成果要求

交付物清单

# 交付物 类型 说明
1 后端修改 代码 修改 approval.py 中ITSM跳转URL域名
2 前端修改 代码 修改 RecommendCard.vue 中URL映射
3 部署验证 验证 企微H5实际测试通过

代码要求

  • 遵循项目代码规范

🔧 验证方式

功能验证

验证项 验证方法 预期结果
跳转URL域名变更 代码检查 URL从devops改为itsm.servyou.com.cn
按钮点击跳转 企微H5实际测试 点击按钮直接跳转ITSM工单页面
免登录验证 跳转后检查 无需扫码直接显示ITSM工单创建表单

完成标准

验收条件

  • 问题分析完成
  • 代码修改完成
  • 部署验证通过
  • 用户测试通过(扫码登录保留为人机校验,用户确认接受)

产出确认

  • 代码已提交
  • 部署验证已完成
  • 任务说明书已更新

📊 工作分解

子任务

子任务 负责人 预估工时 状态
修改后端approval.py中ITSM URL域名 宋献 0.5h 已完成
修改前端RecommendCard.vue中URL映射 宋献 0.5h 已完成
部署验证 宋献 0.5h 已完成
用户测试确认 宋献 0.5h 已完成

📞 依赖与阻塞

前置依赖

依赖任务 依赖说明 状态
独立任务 -

阻塞因素

阻塞项 影响范围 解决方案
- -

📈 变更记录

日期 变更内容 变更人 说明
2026-07-17 创建任务 宋献 初始版本v1.0
2026-07-17 更新方案 宋献 v2.0:改用itsm.servyou.com.cn域名实现免登录
2026-07-17 终态决策 宋献 v3.0:保留桥接页现状,扫码登录定为人机校验;技术限制同步写入 PRD §v2.3 与架构 §15.4.9

📎 附件

修复方案说明

问题现象:用户点击零信任VPN账号申请卡片后,跳转到 Web ITSM 工单深链需要扫码登录(非免登录)。

演进过程

版本 方案 结果
v1.0(初版) 深链直跳 devops.dc.servyou-it.com/ITSM/... 弹扫码
v2.0(回退) 统一改为 ITSM 移动端首页 https://itsm.servyou.com.cn/itsm-miniapp-mobile/(免登录,但需手动点选工单,不符合"一步直达") ⚠️ 免登录但需二次点击
v2.1(再试) 改回 Web 工单深链 createTicket?name=XXX 一步直达 仍弹扫码
v2.2(桥接) 新增桥接页 itsm-bridge.html(隐式加载首页预热会话 + 2.5s 自动跳深链),3 个源文件 31 处 URL 改为桥接页 企微内实测仍弹扫码(跨域 iframe 预热被 ITSM 拒绝)
v3.0(终态决策) 保持桥接页现状,将扫码登录定为人机校验(Human-Machine Verification),企业安全合规可接受,不视为缺陷 已决策

根因Web ITSM 不支持静默企微 OAuth;移动端首页静默 OAuth 仅在其自身域 (itsm.servyou.com.cn) 生效;跨域 iframe 预热被拒。三步流缺一环即冷 hit 弹扫码。

修改文件(v2.2

文件 说明
frontend-h5/public/itsm-bridge.html 新增桥接页(静态资源)
backend/app/api/approval.py 8 个运维平台模板 URL → 桥接页
frontend-h5/src/components/assistant/RecommendCard.vue 15 处 URL → 桥接页
frontend-h5/src/components/chat/ApprovalCardModal.vue 8 处 URL → 桥接页

未改动(2 个企微审批模板)IT资产领用 (asset_receive)、IT资产借用 (asset_borrow) 属企微审批流程,非 ITSM,不在本改造范围,按 approval_templates.json 数据源定义保持。

部署验证:桥接页经 nginx curlHTTP/1.1 200 OK;部署的 approval.py 含桥接 URL 8 处;H5 构建 JS 含桥接 URL;两个 tar 包远端 MD5 与本地完全一致;5 容器全 healthy。技术限制已写入 PRD §v2.3 与架构文档 §15.4.9。