Files
wecom_it_smart_desk/docs/01-产品文档/00-产品规划/PRD-REQ-通用-006-预生产测试通道-v1.0.md
T
Simon c1d5dd584c [REQ-通用-006] 预生产测试通道:三端测试登录入口 + 文档链 + 部署脚本
- 三端 Login.vue(坐席/管理/H5)新增「测试账号登录」面板:探测 /api/dev/health 决定可见性,公网 403 自动隐藏,免企微扫码登录(token 写入对应 localStorage 键)
- 新增 REQ-通用-006 文档链五件套:PRD / 技术方案 / 任务说明书 / 测试用例 / 部署方案(product-doc-standard 规范)
- 版本迭代总览追加 v5.1(预生产测试通道)行
- 部署辅助脚本:nginx /api/dev/ 内网闸门注入、H5 版本化 v20260808→v20260811 升级

部署已落地预生产(10.90.5.110):公网 /api/dev/* 403、内网 200、三端登录页新 hash 在线。
2026-08-11 11:29:20 +08:00

5.5 KiB
Raw Blame History

PRD-REQ-通用-006-预生产测试通道

版本: v1.0 | 日期: 2026-08-11 | 状态: [待评审] 作者: 宋献(产品) | 审核: — 需求编号: REQ-通用-006 需求类型: 新增 关联模块: 通用(跨端基础设施) 关联文档:

  • 技术方案: ../../02-技术文档/技术方案-REQ-通用-006-预生产测试通道-v1.0.md
  • 任务说明书: ../../07-项目管理/任务说明书/任务说明书-REQ-通用-006-预生产测试通道.md
  • 测试用例: ../../03-测试文档/03-功能测试用例/TC-REQ-通用-006-预生产测试通道.md
  • 部署方案: ../../04-运维文档/部署运维/DEPLOY-REQ-通用-006-预生产测试通道.md
  • 关联规范: 00-产品开发流程与文档管理规范.md

1. 背景与问题

1.1 业务背景

IT 智能服务台三端(用户端 H5、坐席端、管理后台)的登录已统一为企微 OAuth 扫码认证(见 PRD-REQ-认证-统一认证与登录-v1.1.md),系统无账号密码入口。这带来一个工程问题:

自动化测试无法完整执行——三端登录均需企微扫码/OAuth 交互,脚本无法模拟,导致端到端(E2E)测试链路被阻断。

1.2 环境定位决策(2026-08-11 已确认)

决策项 结论
10.90.5.110itsupport.servyou.com.cn 定位为预生产环境
未来正式生产 单独申请分布式服务资源(容器平台/K8s),预生产就绪后域名迁移
公网暴露面 暂不收敛,待新生产就绪后一次性迁移(过渡期保持现状)
自动化测试落点 预生产开启测试通道(本需求)
生产形态 容器平台/K8s(本需求不涉及,另立评估)

1.3 核心矛盾

「预生产仍公网可达」+「预生产开测试通道」两者叠加,若直接启用 DEV_MODE=true公网任何人可调用 /api/dev/login 获取任意角色(含 admin)的有效 token——比当前登录页暴露严重一个数量级。因此测试通道必须带访问控制闸门,不得裸开。


2. 需求描述

2.1 目标

在预生产环境提供仅内网可用的免企微登录通道,支撑自动化测试(后端 API + 前端 E2E)完整执行,同时保证公网无法触达测试后门。

2.2 范围(In Scope

  1. 预生产后端启用 DEV_MODE=true,挂载既有 /api/dev/* 测试端点(login / users / health
  2. nginx 新增 /api/dev/ 内网 IP 白名单闸门(公网 403)
  3. 三端(坐席/管理/H5)登录页新增「测试账号登录」入口(仅内网可见),调 /api/dev/login 获取 token 并注入本地会话

2.3 非目标(Non-goals

  • 不新增生产环境的账号密码登录(安全红线,明确排除)
  • 不改动公网域名/WAF 映射(过渡期维持现状)
  • 不改造现有企微 OAuth 主登录流程(仅新增旁路测试通道)
  • 不涉及新生产环境(K8s)的架构改造(另立 REQ 评估)

3. 用户故事

  • 作为测试工程师,我希望在内网访问预生产时能用测试账号一键登录三端,以便完整执行自动化测试而无需企微扫码。
  • 作为安全管理员,我希望公网无法访问任何测试后门接口,以便测试通道不成为攻击面。
  • 作为运维人员,我希望测试通道可一键开关(环境变量/nginx 配置),以便新生产上线时可干净撤离。

4. 验收标准

# 验收项 判定
AC-1 内网调用 GET /api/dev/login?userid=dev-agent-001&role=agent 返回有效 tokenRedis 可校验),HTTP 200
AC-2 公网调用 /api/dev/* HTTP 403nginx 闸门拦截),且非 /api/dev/ 前缀业务接口不受影响
AC-3 前端测试登录入口(坐席/管理/H5 内网可一键登录并进入业务页;登录后业务 API 携带 token 正常响应
AC-4 既有企微扫码登录 不受影响,回归通过
AC-5 预生产环境配置可追溯 DEV_MODE 注入方式、nginx 闸门配置均落文档,可回滚
AC-6 生产环境安全隔离 新生产环境默认 DEV_MODE=false,不包含测试通道配置

5. 技术约束与依赖

  • 后端 /api/dev/login 已存在(app/api/dev_auth.py),零后端开发,仅配置启用;接口内部有 _dev_mode_enabled() 二次校验
  • 前端 token 存储:坐席 localStorage.TOKEN_KEY、H5 localStorage.h5_token、管理后台同构——测试登录需复用同一存储键
  • nginx 闸门依赖内网网段规划(10/8、172.16/12、192.168/16
  • 依赖 jumpserver-V2 工具链完成预生产配置变更与验证

6. 风险

风险 等级 缓解
DEV_MODE 误入生产 compose 显式注入 + .dockerignore 排除 .env(已有)+ 上线 checklist 检查
闸门配置错误导致公网可访问 dev 接口 部署后必须公网/内网双向 curl 验证(AC-2)
前端测试入口内网判定失效(如内网 IP 变化) 判定逻辑与 nginx 闸门同源(内网网段常量),配置化
测试数据污染预生产 测试账号使用独立 userid 前缀(dev-*),与真实账号隔离

7. 变更记录

日期 版本 变更内容 变更人 变更原因
2026-08-11 v1.0 初版 宋献 预生产测试通道需求确认