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

160 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 任务说明书 - 零信任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工单创建表单 |
---
## ✅ 完成标准
### 验收条件
- [x] 问题分析完成
- [x] 代码修改完成
- [x] 部署验证通过
- [x] 用户测试通过(扫码登录保留为人机校验,用户确认接受)
### 产出确认
- [x] 代码已提交
- [x] 部署验证已完成
- [x] 任务说明书已更新
---
## 📊 工作分解
### 子任务
| 子任务 | 负责人 | 预估工时 | 状态 |
|--------|--------|----------|------|
| 修改后端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 `curl``HTTP/1.1 200 OK`;部署的 `approval.py` 含桥接 URL 8 处;H5 构建 JS 含桥接 URL;两个 tar 包远端 MD5 与本地完全一致;5 容器全 healthy。技术限制已写入 PRD §v2.3 与架构文档 §15.4.9。