From ae60a81b980b92eb1499343a729ecc4f458a0c9b Mon Sep 17 00:00:00 2001
From: webbrain-one <295484252+webbrain-one@users.noreply.github.com>
Date: Mon, 27 Jul 2026 05:08:50 +0300
Subject: [PATCH] docs: add Simplified Chinese README
---
README.zh-cn.txt | 1355 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1355 insertions(+)
create mode 100644 README.zh-cn.txt
diff --git a/README.zh-cn.txt b/README.zh-cn.txt
new file mode 100644
index 0000000..a12eaad
--- /dev/null
+++ b/README.zh-cn.txt
@@ -0,0 +1,1355 @@
+

+AI-Native 全链路自动化测试平台
+
+ AI 编排 · API 测试 · Web 自动化 · APP 测试 · 性能压测 · 智能报告
+
+
+ 中文 | English
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🔥 在线演示环境: test.huangxuan.chat 🔥
+
+
+
+## 📖 项目简介
+
+**FullScopeTest** 是一个 AI 驱动的全链路自动化测试平台,覆盖 API 接口测试、Web UI 自动化、APP 移动端测试和性能压测四大领域。平台以 **AI-Native** 为核心设计理念,提供自然语言编排、脚本自动生成、智能错误分析与自愈等能力,降低测试编写与维护门槛。
+
+### 核心能力
+
+- **AI 赋能**:内置 AI Copilot,支持自然语言编排、脚本自动生成、智能错误分析与自愈、Prompt 版本管理与 A/B 测试、语义去重
+- **接口测试**:完整的 HTTP/REST API 测试工作台,支持环境变量、前置/后置脚本、断言、cURL 导入导出、Mock Server
+- **Web 自动化**:基于 Playwright,支持在线编写、视觉回归测试、VNC Live View 实时预览(录制功能需本地 GUI 环境,远程服务器请使用 `playwright codegen` 本地录制后上传脚本)
+- **性能压测**:基于 Locust,支持分布式压测、实时监控大盘、历史对比、告警引擎
+- **APP 测试**:Appium 脚本管理(支持 Android / iOS 脚本编写与存储,需配合外部 Appium Server 或设备农场执行)
+- **测试报告**:聚合四类测试结果,提供可视化指标与多格式导出
+
+### 企业级特性
+
+- **多租户隔离**:组织级数据隔离,项目/用例/脚本/报告按组织过滤
+- **用户管理**:管理员后台,支持角色切换、启用/禁用、密码重置
+- **RBAC 权限**:admin / member / viewer 三级角色控制
+- **组织邀请码**:通过邀请码直接加入团队,无需手动分配
+- **审计日志**:全操作审计追踪,支持按用户/模块/时间筛选
+- **国际化**:中英文双语支持,演示系统根据 IP 智能提示切换语言
+- **暗色模式**:完整的深色主题适配,支持系统偏好自动切换
+- **无障碍访问**:WCAG 2.1 AA 级别,键盘导航、屏幕阅读器支持、跳过导航链接
+
+---
+
+## 🖥 UI 展示
+
+
+
+
+
+ |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+
+
+---
+
+## 🏆 为什么选择 FullScopeTest?— 与 MeterSphere V3 对比
+
+FullScopeTest 专为需要**全方位测试覆盖**的团队打造。我们不仅实现了传统测试平台的所有核心功能,更在以下关键维度**超越 MeterSphere V3**:
+
+| 维度 | MeterSphere V3 | FullScopeTest | 说明 |
+|------|---------------|---------------|------|
+| **UI 自动化** | ❌ 已移除 | ✅ Playwright + 视觉回归 | MeterSphere V3 主动放弃了 UI 自动化,我们做得更深更好 |
+| **性能测试** | ⚠️ 基础支持 | ✅ Locust + 实时大盘 + 告警 | 时间序列数据、分位数统计、历史对比、告警引擎 |
+| **AI 能力** | ⚠️ 简单 Prompt 包装 | ✅ 可观测/可版本化/语义分析 | AI 调用日志、Prompt A/B 测试、智能去重、自愈修复 |
+| **CI/CD 集成** | ⚠️ 基础 Webhook | ✅ GitHub Action + Quality Gate + 变更感知 | PR 自动触发、质量门禁、Check Run 回写 |
+| **多租户** | ✅ 支持 | ✅ 支持 + 审计日志 | 组织级数据隔离、操作审计 |
+| **部署方式** | Docker Compose | Docker Compose + K8s | 同时支持两种部署方式 |
+| **后端性能** | Java (Spring Boot) | Flask 3.0 + FastAPI v2(渐进迁移中) | Python 生态 + 异步高性能 |
+| **视觉回归** | ❌ 不支持 | ✅ 自动截图 + 像素级对比 | 独家功能,自动检测 UI 视觉变化 |
+| **AI 用例生成** | ❌ 不支持 | ✅ Swagger → 语义分析 → 自动生成 | 智能理解接口业务含义 |
+| **语义去重** | ❌ 不支持 | ✅ 向量化 + 余弦相似度 | 自动发现重复测试用例 |
+
+### 核心差异化优势
+
+#### 1. UI 自动化 — MeterSphere V3 主动放弃的领域
+
+MeterSphere V3 在 2024 年正式移除了 Web 自动化测试模块(原基于 Selenium),转而推荐使用外部工具。FullScopeTest 选择 **Playwright** 作为自动化引擎,带来:
+
+- **更快的执行速度**:Playwright 基于 Chromium 内核,比 Selenium 快 2-3 倍
+- **更强的稳定性**:自动等待机制、网络拦截、多标签页支持
+- **视觉回归测试**:每步自动截图 → 智能对比 → 差异高亮 → 一键批准
+- **实时预览**:通过 VNC Live View 实时观察测试执行过程
+
+#### 2. AI 能力真正工程化 — 不是 Prompt 包装
+
+| 特性 | 常见 AI 测试工具 | FullScopeTest |
+|------|-----------------|---------------|
+| AI 调用监控 | ❌ 黑盒 | ✅ 每次调用记录 prompt/response/latency/tokens/cost |
+| Prompt 管理 | ❌ 硬编码 | ✅ 数据库版本化 + A/B 测试 |
+| 失败处理 | ❌ 直接报错 | ✅ 降级策略 + fallback 结果 |
+| 语义分析 | ❌ 关键词匹配 | ✅ sentence-transformers 向量化 |
+
+#### 3. CI/CD 集成 — 开发者优先
+
+```yaml
+# 一行集成到 GitHub Actions
+- uses: FullScopeTest/fullscope-test/.github/actions/fullscope-test@main
+ with:
+ server-url: ${{ secrets.FULLSCOPETEST_URL }}
+ api-token: ${{ secrets.FULLSCOPETEST_TOKEN }}
+ test-suite-id: ${{ secrets.TEST_SUITE_ID }}
+ quality-gate-id: ${{ secrets.QUALITY_GATE_ID }}
+```
+
+- **变更感知触发**:`/api/**` 路径变更时只运行接口测试,节省 CI 资源
+- **Quality Gate**:可配置通过率阈值、P95 响应时间上限、视觉差异上限
+- **Check Run 回写**:实时更新测试状态到 PR,失败用例一目了然
+
+---
+
+## 🏛 系统架构概览
+
+### 整体架构
+
+```mermaid
+graph LR
+ subgraph 客户端
+ Browser["浏览器"]
+ end
+
+ subgraph Nginx_OpenResty
+ Static["静态资源
(React SPA)"]
+ Proxy["反向代理
/api → :5000(Dev)
/api → :8000(Prod)"]
+ WS["WebSocket
(Live View)"]
+ end
+
+ subgraph Flask_Backend
+ API["API 蓝图层
25 个模块"]
+ Auth["JWT 认证
+ RBAC 权限"]
+ ORM["SQLAlchemy ORM
31 个数据模型"]
+ end
+
+ subgraph Async_Workers
+ Celery["Celery Worker
(Web / Perf 测试)"]
+ Scheduler["APScheduler
(定时任务)"]
+ end
+
+ subgraph AI_Layer
+ Copilot["AI Copilot"]
+ Agent["AI Agent
(编排 / 脚本生成)"]
+ end
+
+ subgraph Data_Stores
+ PG["PostgreSQL"]
+ Redis["Redis
(消息队列 + 缓存)"]
+ end
+
+ Browser --> Static
+ Browser --> Proxy
+ Proxy --> API
+ API --> Auth
+ Auth --> ORM
+ ORM --> PG
+ API --> Celery
+ Celery --> Redis
+ Scheduler --> Celery
+ API --> Copilot
+ Copilot --> Agent
+ Agent -->|OpenAI / DeepSeek 等| LLM["LLM API"]
+ WS -->|VNC Live View| VNC["x11vnc + websockify"]
+ Celery -->|Playwright| VNC
+```
+
+### 请求处理流程
+
+```mermaid
+sequenceDiagram
+ participant U as 用户浏览器
+ participant N as Nginx / OpenResty
+ participant F as Flask API
+ participant DB as PostgreSQL
+ participant R as Redis
+ participant C as Celery Worker
+ participant AI as LLM API
+
+ U->>N: HTTPS 请求
+ N->>F: 反向代理 /api/*
+ F->>F: JWT 鉴权 + RBAC 校验
+ F->>DB: 读写业务数据
+ F-->>U: 同步响应 (JSON)
+
+ Note over U,F: 异步任务场景 (Web/Perf 测试)
+ F->>R: 发送 Celery 任务
+ F-->>U: 返回 task_id
+ R->>C: 消费任务
+ C->>DB: 写入测试结果
+ C->>R: 更新任务状态
+ U->>F: 轮询任务状态
+ F->>R: 查询 Celery 状态
+ F-->>U: 返回进度与结果
+
+ Note over F,AI: AI 辅助场景
+ F->>AI: 发送 Prompt (含上下文)
+ AI-->>F: 返回结构化结果
+ F-->>U: AI 生成的用例 / 脚本 / 分析
+```
+
+### 技术栈总览
+
+| 层级 | 技术选型 | 说明 |
+|------|---------|------|
+| **前端框架** | React 18 + TypeScript | 组件化 SPA,严格类型检查 |
+| **构建工具** | Vite 6 | 极速 HMR,开箱即用的 TS/JSX 支持 |
+| **UI 组件库** | Ant Design 5 | 企业级 UI,ProComponents 扩展 |
+| **代码编辑器** | Monaco Editor | VS Code 同源编辑器,支持语法高亮与自动补全 |
+| **状态管理** | Zustand | 轻量级 Store,支持 persist 持久化 + devtools |
+| **HTTP 客户端** | Axios | 拦截器统一注入 JWT,自动 Token 刷新 |
+| **前端测试** | Vitest + Testing Library | jsdom 环境,组件级单元测试 |
+| **后端框架** | Flask 3.0 | 应用工厂模式 + Blueprint 模块化 |
+| **ORM** | SQLAlchemy + Alembic | 声明式模型 + 数据库版本迁移 |
+| **认证鉴权** | Flask-JWT-Extended | 双 Token 机制 (access + refresh) |
+| **任务队列** | Celery + Redis | 异步执行 Web/性能测试任务 |
+| **定时调度** | APScheduler | 文件锁单例,支持多进程安全 |
+| **Web 自动化** | Playwright | Chromium 内核,在线编写 + 视觉回归 + VNC 预览(录制需 GUI 环境) |
+| **性能压测** | Locust | Python 编写压测脚本,支持分布式 |
+| **数据库** | PostgreSQL (生产) / SQLite (开发) | 生产推荐 PostgreSQL,开发零配置 |
+| **缓存/消息** | Redis | Celery Broker + Result Backend |
+| **反向代理** | Nginx / OpenResty | 静态资源托管 + API 代理 + SSL |
+| **容器化** | Docker Compose | 一键部署编排,开发/生产双配置 |
+| **CI/CD** | GitHub Actions | CodeQL 安全扫描 + pytest + npm test + Docker 构建 |
+
+---
+
+## 🔧 后端架构详解
+
+### 应用工厂模式
+
+后端采用 Flask 标准的 **Application Factory** 模式,通过 `create_app(config_name)` 创建应用实例,便于测试与多环境配置:
+
+```mermaid
+graph TD
+ Entry["app.py / wsgi.py"] --> Factory["create_app()"]
+ Factory --> Config["加载配置
(Development / Testing / Production)"]
+ Factory --> Ext["初始化扩展
(db, jwt, celery, migrate)"]
+ Factory --> BP["注册蓝图
api_bp → /api/v1"]
+ Factory --> CORS["配置 CORS"]
+ Factory --> ErrorH["注册全局错误处理"]
+ Factory --> Scheduler["启动 APScheduler"]
+```
+
+### API 模块划分
+
+所有 API 路由挂载在统一的 `api_bp` 蓝图下(前缀 `/api/v1`),按功能域划分为 30+ 个模块:
+
+| 模块 | 路由前缀 | 核心功能 |
+|------|---------|---------|
+| `auth` | `/auth` | 注册(支持邀请码)、登录、Token 刷新、SSO、用户信息 |
+| `admin` | `/admin` | 用户管理:列表/角色切换/启用禁用/密码重置(仅管理员) |
+| `organizations` | `/organizations` | 组织 CRUD、邀请码管理、成员管理 |
+| `projects` | `/projects` | 项目 CRUD、成员管理、RBAC 权限 |
+| `environments` | `/environments` | 环境变量管理、变量替换引擎 |
+| `api_test` | `/api-test` | 集合/用例 CRUD、Mock Server、cURL 导入导出 |
+| `web_test` | `/web-test` | Web 脚本管理、Playwright 执行、录制回放 |
+| `app_test` | `/app-test` | APP 脚本管理、Appium 设备连接 |
+| `perf_test` | `/perf-test` | 性能场景配置、Locust 分布式压测 |
+| `reports` | `/test-reports` | 测试报告聚合、历史趋势分析 |
+| `docs` | `/docs` | 测试文档管理、Markdown 编辑 |
+| `ai_copilot` | `/ai` | AI 对话、用例生成、错误分析、脚本生成 |
+| `ai_stats` | `/ai/stats` | AI 调用统计、Token 消耗、成本分析 |
+| `prompt_versions` | `/ai/prompts` | Prompt 版本管理、A/B 测试、流量分配 |
+| `triggers` | `/triggers` | Webhook 触发器、定时任务调度 |
+| `global_search` | `/ai/global-search` | 全局搜索(跨模块模糊查询) |
+| `quality_gates` | `/quality-gates` | 质量门禁配置、通过率/P95/视觉差异阈值 |
+| `test_plans` | `/test-plans` | 测试计划管理、执行跟踪 |
+| `audit_logs` | `/audit-logs` | 操作审计日志、按用户/模块/时间筛选 |
+| `notifications` | `/notifications` | 通知配置、Webhook/邮件通知 |
+| `tokens` | `/tokens` | API Token 管理、权限范围控制 |
+| `geo` | `/geo` | 地理位置检测(演示系统语言切换) |
+| `github_integration` | `/github` | GitHub OAuth、PR 自动触发、Check Run 回写 |
+| `github_checks` | `/github/checks` | GitHub Checks API 集成 |
+
+### 数据模型 ER 图
+
+```mermaid
+erDiagram
+ Organization ||--o{ OrganizationMember : "has members"
+ Organization ||--o{ Project : "owns"
+ User ||--o{ OrganizationMember : "belongs to"
+ User ||--o{ Project : "owns"
+ User ||--o{ WebTestScript : "creates"
+ User ||--o{ TestRun : "triggers"
+ User ||--o{ ScheduledTask : "schedules"
+ User ||--o{ AuditLog : "generates"
+
+ Project ||--o{ Environment : "has"
+ Project ||--o{ ApiTestCollection : "contains"
+ Project ||--o{ WebTestCollection : "contains"
+ Project ||--o{ AppTestCollection : "contains"
+ Project ||--o{ PerfTestScenario : "contains"
+ Project ||--o{ QualityGate : "enforces"
+ Project ||--o{ TestPlan : "plans"
+
+ ApiTestCollection ||--o{ ApiTestCase : "contains"
+ WebTestCollection ||--o{ WebTestScript : "contains"
+ AppTestCollection ||--o{ AppTestScript : "contains"
+
+ TestRun ||--o| TestReport : "generates"
+ Project ||--o{ TestRun : "tracks"
+ Project ||--o{ TestReport : "aggregates"
+ Project ||--o{ TestDocument : "documents"
+
+ WebhookToken }o--|| Project : "belongs to"
+
+ Organization {
+ int id PK
+ string name
+ string invite_code UK
+ boolean is_active
+ }
+ User {
+ int id PK
+ string username UK
+ string email UK
+ string password_hash
+ string role "admin | member | viewer"
+ boolean is_active
+ }
+ OrganizationMember {
+ int id PK
+ int organization_id FK
+ int user_id FK
+ string role "owner | admin | member | viewer"
+ boolean is_active
+ }
+ Project {
+ int id PK
+ string name
+ int owner_id FK
+ int organization_id FK
+ }
+ Environment {
+ int id PK
+ string name
+ json variables
+ int project_id FK
+ }
+ ApiTestCase {
+ int id PK
+ string name
+ string method
+ string url
+ int collection_id FK
+ }
+ TestRun {
+ int id PK
+ string test_type "api | web | app | perf"
+ string status "pending | running | success | failed"
+ int total_cases
+ int passed
+ int failed
+ }
+ TestReport {
+ int id PK
+ string test_type
+ json summary
+ int test_run_id FK
+ }
+ AuditLog {
+ int id PK
+ int user_id FK
+ string action
+ string module
+ json details
+ datetime created_at
+ }
+ QualityGate {
+ int id PK
+ string name
+ float min_pass_rate
+ int max_p95_ms
+ int project_id FK
+ }
+```
+
+### 认证与权限机制
+
+```mermaid
+graph LR
+ subgraph 认证流程
+ Login["登录请求"] --> Validate["校验用户名密码"]
+ Validate --> GenToken["生成双 Token"]
+ GenToken --> Access["Access Token
有效期 24h"]
+ GenToken --> Refresh["Refresh Token
有效期 30d"]
+ Access --> Header["放入 Authorization Header"]
+ end
+
+ subgraph 权限控制
+ Request["API 请求"] --> JWT["JWT 解析
提取 user_id + role"]
+ JWT --> RBAC{"角色校验"}
+ RBAC -->|admin| Admin["全部权限"]
+ RBAC -->|member| Member["读写权限"]
+ RBAC -->|viewer| Viewer["只读权限"]
+ end
+```
+
+- **Access Token**:短期有效(24 小时),用于 API 请求鉴权
+- **Refresh Token**:长期有效(30 天),用于无感刷新 Access Token
+- **前端自动刷新**:Axios 拦截器捕获 401 响应,自动调用 refresh 接口并重试原请求
+- **RBAC 三角色**:`admin`(管理员)、`member`(成员,默认)、`viewer`(只读)
+
+### 异步任务架构
+
+Web 测试和性能测试通过 Celery 异步执行,避免阻塞 API 请求:
+
+```mermaid
+graph LR
+ API["Flask API"] -->|send_task| Broker["Redis Broker"]
+ Broker -->|consume| Worker["Celery Worker"]
+ Worker -->|Playwright| WebTest["执行 Web 测试"]
+ Worker -->|Locust| PerfTest["执行性能压测"]
+ Worker -->|update_state| Backend["Redis Backend"]
+ API -->|AsyncResult| Backend
+ API -->|查询状态| Client["前端轮询"]
+```
+
+- **Web 测试**:Celery Worker 调用 `subprocess.run()` 执行 Playwright Python 脚本,支持 VNC Live View 实时预览
+- **性能测试**:Celery Worker 启动 Locust 进程,实时采集 RPS、响应时间、错误率等指标
+- **定时任务**:APScheduler 基于文件锁实现单例调度,支持 Cron 表达式与一次性触发
+
+---
+
+## 🎨 前端架构详解
+
+### 组件层次结构
+
+```mermaid
+graph TD
+ App["App.tsx
路由入口 + 语言检测"] --> Layout["MainLayout
侧边栏 + 顶栏 + 内容区"]
+ Layout --> Suspense["React.Suspense
懒加载边界"]
+ Suspense --> Pages["页面组件"]
+ Pages --> Dashboard["Dashboard"]
+ Pages --> APITest["API 测试工作台"]
+ Pages --> WebTest["Web 自动化"]
+ Pages --> AppTest["APP 测试"]
+ Pages --> PerfTest["性能测试"]
+ Pages --> Reports["报告中心"]
+ Pages --> Settings["系统设置
5 个 Tab"]
+ Pages --> Admin["用户管理
(管理员)"]
+ Pages --> Orgs["组织管理"]
+ Pages --> AuditLogs["审计日志"]
+ Pages --> TestPlans["测试计划"]
+ Pages --> QualityGates["质量门禁"]
+ Pages --> CICD["CI/CD 集成"]
+ Pages --> Integ["第三方集成
GitHub OAuth"]
+ Pages --> Tokens["API Token 管理"]
+
+ APITest --> Components["业务组件"]
+ Components --> RequestEditor["请求编辑器"]
+ Components --> EnvManager["环境管理器"]
+ Components --> MockServer["Mock 面板"]
+
+ Layout --> Global["全局组件"]
+ Global --> Copilot["GlobalCopilot
AI 助手浮窗"]
+ Global --> Search["GlobalSearch
全局搜索"]
+ Global --> GeoPrompt["LanguageSwitchPrompt
智能语言切换提示"]
+ Global --> TourGuide["TourGuide
新手引导"]
+```
+
+### 状态管理 (Zustand)
+
+```mermaid
+graph LR
+ subgraph Stores
+ AuthStore["authStore
用户认证状态
(persist → localStorage)"]
+ ProjectStore["projectStore
当前项目
(persist → localStorage)"]
+ APITestStore["apiTestStore
集合/用例/Mock"]
+ WebTestStore["webTestStore
脚本/执行状态"]
+ PerfTestStore["perfTestStore
场景/实时指标"]
+ end
+
+ subgraph 中间件
+ Persist["persist
持久化到 localStorage"]
+ Devtools["devtools
Redux DevTools 调试"]
+ end
+
+ AuthStore --> Persist
+ ProjectStore --> Persist
+ APITestStore --> Devtools
+ WebTestStore --> Devtools
+ PerfTestStore --> Devtools
+```
+
+### 服务层模式
+
+前端通过统一的 **Service 层** 封装所有 API 调用,职责分离清晰:
+
+| 服务文件 | 对应后端模块 | 核心方法 |
+|---------|-------------|---------|
+| `authService.ts` | auth | login, register, refreshToken, getProfile, ssoLogin |
+| `adminService.ts` | admin | getUsers, updateUserRole, toggleUserStatus, resetPassword |
+| `organizationService.ts` | organizations | getOrganizations, createOrganization, regenerateInviteCode |
+| `projectService.ts` | projects | getProjects, createProject, updateProject |
+| `environmentService.ts` | environments | getEnvironments, createEnvironment |
+| `apiTestService.ts` | api_test | getCollections, createCase, runCase, curlImport |
+| `webTestService.ts` | web_test | getScripts, createScript, runScript |
+| `appTestService.ts` | app_test | getScripts, createScript, runScript |
+| `perfTestService.ts` | perf_test | getScenarios, createScenario, runScenario |
+| `reportService.ts` | reports | getReports, getReportDetail |
+| `qualityGateService.ts` | quality_gates | getGates, createGate, evaluateGate |
+| `testPlanService.ts` | test_plans | getPlans, createPlan, executePlan |
+| `auditLogService.ts` | audit_logs | getLogs, filterByUser, filterByModule |
+| `notificationService.ts` | notifications | getSettings, updateSettings |
+| `tokenService.ts` | tokens | getTokens, createToken, revokeToken |
+| `aiCopilotService.ts` | ai_copilot | chat, generateCases, analyzeError |
+| `aiStatsService.ts` | ai_stats | getStats, getCostAnalysis |
+| `documentService.ts` | docs | getDocuments, createDocument |
+| `triggerService.ts` | triggers | getTriggers, createTrigger |
+| `geoService.ts` | geo | detectRegion |
+| `integrationService.ts` | github_integration | connectGitHub, getPRStatus |
+
+**Axios 拦截器链**:
+1. **请求拦截器**:自动注入 `Authorization: Bearer ` 头
+2. **响应拦截器**:捕获 401 → 自动 refresh Token → 重试原请求
+3. **错误拦截器**:统一处理网络错误、业务错误,弹出 antd notification 提示
+
+### 路由与懒加载
+
+```typescript
+// React Router v6 + lazy() 按需加载
+const Dashboard = lazy(() => import('./pages/Dashboard'))
+const APITestWorkspace = lazy(() => import('./pages/api-test/APITestWorkspace'))
+const WebTestWorkspace = lazy(() => import('./pages/web-test/WebTestWorkspace'))
+// ...
+
+}>
+
+ } />
+ } />
+ {/* ... */}
+
+
+```
+
+非首屏页面全部使用 `lazy()` 动态导入,结合 `` 实现路由级代码分割,显著减小首屏加载体积。
+
+---
+
+## 🔒 安全架构
+
+```mermaid
+graph TD
+ subgraph 认证层
+ JWT["JWT 双 Token
Access: 24h / Refresh: 30d"]
+ Header["Authorization Header
Bearer "]
+ end
+
+ subgraph 权限层
+ RBAC["RBAC 角色控制
admin / member / viewer"]
+ Decorator["@require_role 装饰器
路由级权限守卫"]
+ end
+
+ subgraph 传输层
+ HTTPS["HTTPS (SSL/TLS)"]
+ CORS["CORS 白名单"]
+ end
+
+ subgraph 数据层
+ Hash["密码哈希
(bcrypt / werkzeug)"]
+ EnvVars["环境变量
敏感信息不入代码库"]
+ Webhook["Webhook 签名
HMAC-SHA256"]
+ end
+
+ Header --> JWT --> RBAC --> Decorator
+ HTTPS --> CORS
+ Hash --> EnvVars --> Webhook
+```
+
+| 安全机制 | 实现方式 | 作用 |
+|---------|---------|------|
+| **身份认证** | JWT (Flask-JWT-Extended) | 无状态认证,支持 Token 自动刷新 |
+| **权限控制** | RBAC 三角色 + 装饰器 | admin/member/viewer 细粒度权限 |
+| **密码存储** | werkzeug 安全哈希 | 不可逆加密,防止数据泄露 |
+| **Webhook 安全** | HMAC-SHA256 签名验证 | 防止伪造触发请求 |
+| **传输安全** | HTTPS + CORS 白名单 | 加密传输 + 跨域限制 |
+| **敏感信息** | `.env` 文件 + `.gitignore` | API Key、密码等不进入代码仓库 |
+| **安全扫描** | GitHub CodeQL | CI 自动检测 OWASP Top 10 漏洞 |
+| **依赖审计** | npm audit + pip-audit | CI 自动检测已知漏洞依赖 |
+| **API Token** | 独立 Token 管理 | 支持细粒度权限范围、可随时吊销 |
+| **审计日志** | 全操作记录 | 登录/CRUD/配置变更全部可追溯 |
+| **租户隔离** | organization_id 过滤 | 数据库级别组织隔离,防止跨租户访问 |
+| **SSO 集成** | OIDC 协议 | 支持企业单点登录(Beta — 需配置 OIDC Provider 环境变量) |
+
+---
+
+## 📚 文档导读
+
+### 完整文档(docs/ 目录)
+
+| 文档 | 说明 |
+|------|------|
+| [部署文档](docs/deployment.md) | Docker Compose 部署(开发/生产)、环境变量说明、Troubleshooting |
+| [Kubernetes 部署指南](docs/kubernetes-deployment.md) | Helm Chart 部署、TLS 配置、生产环境建议 |
+| [API 参考文档](docs/api-reference.md) | 所有 v1 + v2 接口请求/响应示例、认证说明、错误码一览 |
+| [GitHub Actions 集成指南](docs/github-actions-integration.md) | 从零到一集成步骤、PR 自动触发、定时回归、手动触发 |
+| [GitLab CI 模板](docs/gitlab-ci-template.yml) | GitLab CI/CD YAML 模板示例 |
+| [性能基准测试](docs/performance-benchmark.md) | Flask v1 vs FastAPI v2 压测对比、P95 响应时间分析 |
+| [功能路线图](docs/ROADMAP.md) | 按季度规划的功能开发计划 |
+| [功能完整性审计](docs/feature-audit.md) | 14 项功能实现状态审计报告 |
+| [v1.0.0-rc1 发布说明](releases/v1.0.0-rc1.md) | 首个正式发布候选版本完整 Release Notes |
+
+### 快速文档入口
+
+- 统一入口:`document/overview.md`
+- 启动指南:`document/STARTUP.md`
+- API 文档:`document/API.md`
+- 开发文档:`document/DEVELOPMENT.md`
+- 脚本指南:`document/SCRIPT_GUIDE.md`
+
+---
+
+## 🚀 快速开始(本地开发部署推荐)
+
+项目采用前后端分离架构:后端 Flask + SQLAlchemy,前端 React + TypeScript。
+
+提供两种启动方式:**方式 A** 手动启动(推荐开发调试),**方式 B** Docker Compose 一键启动。
+
+### 前置要求
+
+| 组件 | 版本建议 | 说明 |
+|------|---------|------|
+| Python | 3.10+ | 后端运行环境 |
+| Node.js | 18+ | 前端构建/开发服务器 |
+| Redis | 5.0+ | **必需** — Celery 消息队列(`app.py` 会自动开启 Celery) |
+
+> **数据库说明**:本地开发默认使用 **SQLite**(零配置),无需安装 PostgreSQL。生产环境推荐 PostgreSQL。
+
+### 初始管理员配置
+
+生产环境通过环境变量配置初始管理员(首次启动自动创建):
+
+```bash
+# backend/.env
+INIT_ADMIN_USERNAME=admin
+INIT_ADMIN_EMAIL=admin@example.com
+INIT_ADMIN_PASSWORD=your_secure_password
+```
+
+> 不设置这些变量则不自动创建管理员,需通过 `python create_admin.py` 手动创建。
+
+### 方式 A:手动启动(推荐)
+
+#### 1) 启动 Redis
+
+```bash
+# 确认 Redis 已启动
+redis-cli ping
+# 应返回 PONG,否则请先启动 Redis 服务
+```
+
+#### 2) 启动后端
+
+```bash
+cd backend
+python -m venv venv
+
+# Windows 激活虚拟环境
+.\venv\Scripts\activate
+
+# Linux/macOS 激活虚拟环境
+# source venv/bin/activate
+
+# 安装依赖
+pip install -r requirements.txt
+
+# 可选:安装 Playwright 浏览器(启用 Web 自动化/录制时需要)
+python -m playwright install chromium
+
+# 准备配置文件(从模板复制,多数变量已有默认值)
+cp .env.example .env
+# 编辑 .env,至少确认以下配置:
+# DATABASE_URL=sqlite:///fullscopetest_dev.db # SQLite 本地开发
+# SECRET_KEY=任意随机字符串
+# JWT_SECRET_KEY=另一个随机字符串
+
+# 初始化数据库(⚠️ 会清空现有数据,仅限开发环境)
+python init_db.py
+
+# 创建管理员账号
+python create_admin.py
+# 默认账号:admin / admin123
+
+# 启动后端 API 服务
+python app.py
+```
+
+> 后端默认运行地址:`http://127.0.0.1:5211/api/v1`(手动开发模式)
+>
+> **端口说明**:
+> - **手动开发**:后端运行在 `5211` 端口,Vite 代理配置已对接
+> - **Docker Compose 开发**:后端运行在 `5000` 端口
+> - **Docker Compose 生产**:后端运行在 `8000` 端口
+>
+> **注意**:`app.py` 会自动设置 `CELERY_ENABLE=true`,因此必须先确保 Redis 已启动,否则启动时会报连接错误。如果不需要异步任务功能,可在 `.env` 中设置 `CELERY_ENABLE=false`。
+
+#### 3) 启动 Celery Worker(新终端窗口)
+
+```bash
+cd backend
+.\venv\Scripts\activate # Windows
+# source venv/bin/activate # Linux/macOS
+celery -A app.extensions:celery worker --loglevel=info --pool=solo # Windows 需加 --pool=solo
+```
+
+> Celery Worker 负责执行 Web 自动化测试和性能压测等异步任务。如果只使用 API 测试功能,可以不启动。
+
+#### 4) 启动前端(开发模式)
+
+```bash
+cd web
+npm install
+npm run dev
+```
+
+> 前端开发服务器默认运行在:`http://localhost:3000`(已配置代理,将 `/api/*` 转发到 `http://localhost:5211`)
+
+启动完成后访问 `http://localhost:3000`,使用 `admin / admin123` 登录即可。
+
+### 方式 B:Docker Compose 一键启动
+
+```bash
+# 开发环境(含 PostgreSQL + Redis + Backend + Celery)
+docker-compose up -d
+
+# 查看日志
+docker-compose logs -f backend
+```
+
+> Docker Compose 启动的后端运行在 `http://localhost:5000`(与手动启动的 5211 端口不同)。
+> 前端仍需手动启动:`cd web && npm install && npm run dev`,或构建后由 Nginx 托管。
+>
+> **端口汇总**:
+>
+> | 部署方式 | 后端端口 | 说明 |
+> |---------|---------|------|
+> | 手动开发 | `5211` | `python app.py`,Vite 代理已对接 |
+> | Docker 开发 | `5000` | `docker-compose up -d` |
+> | Docker 生产 | `8000` | `docker-compose -f docker-compose.prod.yml up -d` |
+
+---
+
+## 🛠 构建与部署(生产/预发布环境)
+
+### 前端构建
+
+```bash
+cd web
+npm install
+npm run build
+```
+
+前端构建产物位于 `web/dist`,可由 Nginx/OpenResty 托管,并反向代理后端到 `http://127.0.0.1:8000`。配置示例可参考 `nginx/` 目录。
+
+### 生产环境部署
+
+#### Docker Compose 部署(推荐)
+
+```bash
+# 生产环境启动(PostgreSQL + Redis + Backend + Celery)
+docker-compose -f docker-compose.prod.yml up -d
+```
+
+#### 手动部署
+
+```bash
+# 1. 构建前端
+cd web && npm install && npm run build
+
+# 2. 部署后端(使用 Gunicorn 替代 Flask 开发服务器)
+cd ../backend
+pip install -r requirements.txt
+gunicorn -w 4 -b 0.0.0.0:8000 "app:create_app('production')"
+
+# 3. 启动 Celery Worker
+celery -A app.extensions:celery worker --loglevel=info
+
+# 4. 配置 Nginx 反向代理(参考 nginx/ 目录配置)
+```
+
+#### 一键部署脚本
+
+```bash
+# 部署到远程服务器(需提前配置 SSH 免密登录)
+bash deploy.sh
+```
+
+### 关键配置项 (`backend/.env`)
+
+完整配置项可参考 `backend/.env.example`,以下是生产环境必须关注的配置:
+
+```bash
+# ================= 数据库配置 =================
+# PostgreSQL (生产推荐)
+DATABASE_URL=postgresql://user:password@localhost:5432/fullscopetest
+# SQLite (仅限本地开发)
+# DATABASE_URL=sqlite:///fullscopetest_dev.db
+
+# ================= 异步任务配置 =================
+REDIS_URL=redis://localhost:6379/0
+CELERY_ENABLE=true
+
+# ================= 安全配置 (生产务必修改!) =================
+SECRET_KEY=<随机长字符串>
+JWT_SECRET_KEY=<另一个随机长字符串>
+
+# ================= 初始管理员 (首次启动自动创建) =================
+INIT_ADMIN_USERNAME=admin
+INIT_ADMIN_EMAIL=admin@example.com
+INIT_ADMIN_PASSWORD=<安全密码>
+
+# ================= AI 助手配置 (可选) =================
+AI_ASSISTANT_ENABLED=true
+AI_ASSISTANT_BASE_URL=https://api.openai.com/v1
+AI_ASSISTANT_MODEL=gpt-4o-mini
+AI_ASSISTANT_API_KEY=your_api_key_here
+
+# ================= 文件存储 (可选) =================
+OSS_ENDPOINT=https://your-oss-endpoint
+OSS_ACCESS_KEY_ID=your_key
+OSS_ACCESS_KEY_SECRET=your_secret
+OSS_BUCKET_NAME=your_bucket
+OSS_DOMAIN=https://your-domain.com
+```
+
+### 生产环境部署(Docker Compose)
+
+```bash
+# 1. 配置环境变量
+cp backend/.env.example backend/.env
+# 编辑 backend/.env 填入生产配置
+
+# 2. 启动所有服务
+docker compose -f docker-compose.prod.yml up -d
+
+# 3. 查看日志
+docker compose -f docker-compose.prod.yml logs -f backend
+
+# 4. 构建前端并部署到 Nginx
+cd web && npm install && npm run build
+cp -r dist/* /var/www/test.huangxuan.chat/index/
+```
+
+生产环境包含的服务:
+
+| 服务 | 端口 | 说明 |
+|------|------|------|
+| backend | 8000 | Flask API + Gunicorn (4 workers) |
+| celery | - | 异步任务 Worker |
+| redis | 6379 | 消息队列 + 缓存 |
+| prometheus | 9090 | 指标采集 |
+| grafana | 3001 | 监控可视化 |
+| alertmanager | 9093 | 告警管理 |
+
+> **注意:**
+> - 生产环境务必修改 `SECRET_KEY` 和 `JWT_SECRET_KEY`,切勿使用默认值。
+> - Web 录制功能通过启动本机 `playwright codegen` 实现,远程服务器环境通常无法使用本地录制器。
+> - Windows 环境下 Celery 需加 `--pool=solo` 参数(不支持 prefork)。
+
+---
+
+## 🏗 项目结构
+
+```text
+FullScopeTest/
+├── backend/ # Flask 后端核心服务
+│ ├── app/
+│ │ ├── api/ # API 路由层 (30+ 个功能模块)
+│ │ │ ├── auth.py # 认证:注册/登录/SSO/邀请码
+│ │ │ ├── admin.py # 管理员:用户管理/角色/密码重置
+│ │ │ ├── geo.py # 地理位置检测(语言切换)
+│ │ │ ├── organizations.py # 组织管理/邀请码
+│ │ │ ├── audit_logs.py # 审计日志
+│ │ │ └── ...
+│ │ ├── models/ # SQLAlchemy 数据模型 (35+ 个模型)
+│ │ │ ├── organization.py # 组织模型(含邀请码)
+│ │ │ ├── user.py # 用户模型(含角色/组织关联)
+│ │ │ ├── audit_log.py # 审计日志模型
+│ │ │ └── ...
+│ │ ├── middleware/ # 中间件层
+│ │ │ ├── tenant.py # 租户隔离中间件
+│ │ │ ├── permission.py # RBAC 权限注入
+│ │ │ ├── rate_limit.py # 限流中间件
+│ │ │ ├── security_headers.py # 安全响应头
+│ │ │ └── ...
+│ │ ├── utils/
+│ │ │ └── org_filter.py # 组织级数据过滤工具
+│ │ ├── plugins/ # 插件系统
+│ │ ├── tasks/ # Celery 异步任务
+│ │ ├── services/ # 业务服务层 (AI/权限/配额等)
+│ │ ├── __init__.py # 应用工厂 create_app()
+│ │ ├── config.py # 多环境配置 (Dev / Test / Prod)
+│ │ └── extensions.py # 扩展初始化 (db, jwt, celery, migrate)
+│ ├── migrations/ # Alembic 数据库迁移脚本
+│ ├── scripts/ # 数据脚本 (seed_data.py)
+│ ├── tests/ # Pytest 自动化测试 (470+ 用例)
+│ ├── app.py # 后端启动入口
+│ ├── init_db.py # 数据库初始化
+│ └── requirements.txt # Python 依赖
+├── web/ # React + TypeScript 前端
+│ ├── src/
+│ │ ├── pages/ # 页面组件 (按模块组织)
+│ │ │ ├── admin/ # 管理员页面 (UserManagement)
+│ │ │ ├── organizations/ # 组织管理页面
+│ │ │ ├── api-test/ # API 测试工作台
+│ │ │ ├── web-test/ # Web 自动化
+│ │ │ ├── app-test/ # APP 测试
+│ │ │ ├── perf-test/ # 性能测试
+│ │ │ └── ...
+│ │ ├── components/ # 共享组件
+│ │ │ ├── GlobalCopilot.tsx # AI 助手浮窗
+│ │ │ ├── LanguageSwitchPrompt.tsx # 智能语言切换
+│ │ │ └── ...
+│ │ ├── services/ # API 服务层 (25+ 个 Service)
+│ │ ├── hooks/ # 自定义 Hooks
+│ │ │ ├── useRole.ts # 角色权限 Hook
+│ │ │ └── useGeoLanguage.ts # 地理语言检测 Hook
+│ │ ├── stores/ # Zustand 状态管理
+│ │ ├── i18n/ # 国际化 (中英文)
+│ │ ├── styles/ # 样式系统
+│ │ │ ├── index.css # 主样式 (iOS 设计系统)
+│ │ │ ├── dark-theme.css # 暗色主题
+│ │ │ └── responsive.css # 响应式适配
+│ │ └── layouts/ # 布局组件 (MainLayout)
+│ ├── .env.production # 生产环境变量
+│ ├── vite.config.ts # Vite 构建配置 + API 代理
+│ └── tsconfig.json # TypeScript 严格模式配置
+├── infra/ # 基础设施配置
+│ └── monitoring/ # Prometheus + Grafana 监控
+├── document/ # 项目文档
+├── docker/ # Dockerfile
+├── docker-compose.yml # 开发环境 Docker Compose
+├── docker-compose.prod.yml # 生产环境 Docker Compose
+└── deploy.sh # 一键部署脚本
+```
+
+---
+
+## 🌟 新增功能详解
+
+### 多租户与组织管理
+
+- **组织(Organization)**:顶层租户单元,所有数据按组织隔离
+- **邀请码**:每个组织有唯一邀请码,注册时输入即可直接加入团队
+- **个人空间**:注册时不填邀请码自动创建个人空间组织
+- **数据隔离**:项目、用例、脚本、报告等所有资源按 `organization_id` 过滤
+
+### 用户管理(管理员后台)
+
+管理员可以:
+- 查看所有用户列表(支持搜索)
+- 切换用户角色(admin / member / viewer)
+- 启用/禁用用户账号
+- 重置用户密码
+
+### 国际化与智能语言切换
+
+- **中英文双语**:完整的 i18n 支持,覆盖所有页面和组件
+- **智能检测**:演示系统根据用户 IP 地理位置自动提示切换英文
+- **用户偏好**:语言选择保存在 localStorage,下次访问自动应用
+
+### 暗色模式
+
+- 完整的深色主题适配,覆盖所有组件和页面
+- 支持系统偏好自动切换(`prefers-color-scheme: dark`)
+- 手动切换保存在 localStorage
+
+### 无障碍访问(Accessibility)
+
+- WCAG 2.1 AA 级别合规
+- 键盘导航支持(Tab 切换、Enter 确认)
+- 屏幕阅读器友好(ARIA 标签、role 属性)
+- 跳过导航链接(Skip Navigation)
+- 减少动画模式(`prefers-reduced-motion`)
+- 颜色对比度达标
+
+### 设置页面(5 个 Tab)
+
+| Tab | 功能 |
+|-----|------|
+| 通用 | 基础设置、语言切换 |
+| 外观 | 主题切换、暗色模式 |
+| AI | AI 模型配置、API Key |
+| 安全 | 密码修改、API Token |
+| 集成 | GitHub OAuth、Webhook 配置 |
+
+### 新手引导(Tour Guide)(计划中)
+
+- 首次登录自动触发 7 步引导
+- 覆盖侧边栏导航、AI 助手、项目创建等核心功能
+- 引导状态保存在 localStorage,不重复显示
+- **注意**:此功能尚在开发中,预计 Q3 2026 上线
+
+---
+
+## ❓ 常见问题 (FAQ)
+
+
+启动后端时报 Redis 连接失败?
+
+`app.py` 会自动设置 `CELERY_ENABLE=true`,启动时会尝试连接 Redis。如果不需要异步任务功能,在 `backend/.env` 中添加:
+
+```bash
+CELERY_ENABLE=false
+```
+
+如果需要 Celery 功能,请先确保 Redis 已启动:
+
+```bash
+redis-cli ping # 应返回 PONG
+```
+
+Windows 用户可从 [Redis for Windows](https://github.com/tporadowski/redis/releases) 下载,或使用 WSL/Docker 运行。
+
+
+
+SQLite 初始化后表不存在 / 数据库报错?
+
+确认已执行初始化脚本:
+
+```bash
+cd backend
+python init_db.py
+```
+
+> **注意**:`init_db.py` 会**清空并重建**所有表,仅限开发环境使用。生产环境请使用迁移脚本:`python manage.py db upgrade`。
+
+
+
+前端启动后页面空白 / API 请求 404?
+
+1. 确认后端已启动并运行在 `http://127.0.0.1:5211`(手动模式)或 `http://localhost:5000`(Docker 开发)
+2. 确认前端开发服务器运行在 `http://localhost:3000`(Vite 会自动代理 `/api` 到后端)
+3. 如果使用 Docker Compose,后端端口是 **5000** 而非 5211,需修改 `web/vite.config.ts` 中的代理目标
+4. 如果使用 Docker Compose 生产模式,后端端口是 **8000**,需配置 Nginx 反向代理
+5. 尝试清除浏览器缓存后硬刷新(`Ctrl + Shift + R`)
+
+
+
+Web 自动化录制器启动失败?
+
+Web 录制依赖于 Playwright 本机环境,请确认已执行:
+
+```bash
+pip install playwright
+python -m playwright install chromium
+```
+
+> **注意**:录制功能(`playwright codegen`)需要图形界面环境,远程服务器/无头环境无法使用。可改为在本地编写脚本后上传到平台执行。
+
+
+
+Celery Worker 启动后任务不执行?
+
+1. 确认 Redis 已启动且可连接
+2. Windows 用户必须加 `--pool=solo` 参数:
+ ```bash
+ celery -A app.extensions:celery worker --loglevel=info --pool=solo
+ ```
+3. 确认 Worker 终端无报错信息,检查是否成功连接到 Redis Broker
+
+
+
+Windows 下 Celery 报 NotImplementedError?
+
+Celery 4+ 在 Windows 上不支持 `prefork` 进程池,必须使用 `solo` 模式:
+
+```bash
+celery -A app.extensions:celery worker --loglevel=info --pool=solo
+```
+
+或者考虑在 WSL2 / Docker 中运行 Celery Worker。
+
+
+
+AI 助手功能不工作?
+
+AI 助手需要配置大语言模型 API。在 `backend/.env` 中配置:
+
+```bash
+AI_ASSISTANT_ENABLED=true
+AI_ASSISTANT_BASE_URL=https://api.openai.com/v1 # 或其他兼容 OpenAI 的 API 地址
+AI_ASSISTANT_MODEL=gpt-4o-mini
+AI_ASSISTANT_API_KEY=your_api_key_here
+```
+
+也可以在前端界面的 AI Copilot 面板中动态配置,无需重启后端。
+
+
+
+运行后端测试用例失败?
+
+后端测试使用 SQLite 内存数据库,无需额外配置。运行方式:
+
+```bash
+cd backend
+pip install -r requirements-test.txt
+pytest -q tests
+```
+
+如果遇到 `ModuleNotFoundError`,确认已安装所有依赖:`pip install -r requirements.txt`。
+
+
+
+前端构建报 TypeScript 类型错误?
+
+项目启用了严格模式 TypeScript 检查。常见修复:
+
+```bash
+# 查看所有类型错误
+cd web && npx tsc --noEmit
+
+# 常见原因:
+# 1. 未使用的变量/参数 — 删除或加 _ 前缀
+# 2. 类型断言缺失 — 添加适当的类型注解
+# 3. API 返回值类型不匹配 — 检查 services/ 中的类型定义
+```
+
+
+
+如何切换到 PostgreSQL 数据库?
+
+1. 安装 PostgreSQL 并创建数据库:
+ ```bash
+ createdb fullscopetest_dev
+ ```
+
+2. 修改 `backend/.env`:
+ ```bash
+ DATABASE_URL=postgresql://用户名:密码@localhost:5432/fullscopetest_dev
+ ```
+
+3. 重新初始化数据库:
+ ```bash
+ python init_db.py
+ ```
+
+
+
+如何配置初始管理员?
+
+生产环境通过环境变量配置(推荐):
+
+```bash
+# backend/.env
+INIT_ADMIN_USERNAME=admin
+INIT_ADMIN_EMAIL=admin@example.com
+INIT_ADMIN_PASSWORD=your_secure_password
+```
+
+首次启动时自动创建。已有用户则跳过。
+
+开发环境手动创建:
+
+```bash
+cd backend
+python create_admin.py
+# 默认账号:admin / admin123
+```
+
+
+
+如何启用多租户隔离?
+
+多租户功能已内置,默认启用。所有 API 请求通过 `X-Organization-ID` 头标识当前组织。
+
+注册流程:
+1. 用户注册时输入组织邀请码 → 自动加入对应组织
+2. 不填邀请码 → 自动创建个人空间组织
+
+管理员可以通过 `/api/v1/admin/users` 管理用户角色和状态。
+
+
+
+演示系统语言切换不生效?
+
+1. 确认 `web/.env.production` 中设置了 `VITE_DEPLOY_ENV=demo`
+2. 清除浏览器 localStorage 中的 `fst-language` 和 `fst-geo-dismiss` 键
+3. 刷新页面,F12 Console 查看 `[GeoLanguage]` 调试输出
+4. 如果显示 `is_china: true`,说明你的 IP 被识别为中国(在国内访问不会弹提示)
+
+
+
+生产环境部署后前端文件未更新?
+
+前端构建文件在 `web/dist/`,但 Nginx 可能从其他目录读取。部署时需同步:
+
+```bash
+# 构建前端
+cd web && npm run build
+
+# 同步到 Nginx 根目录(根据实际配置调整路径)
+cp -r dist/* /opt/1panel/www/sites/test.huangxuan.chat/index/
+
+# 重载 Nginx
+docker exec openresty openresty -s reload
+```
+
+
+---
+
+## 🚀 GitHub Actions 集成
+
+FullScopeTest 提供官方 GitHub Action,可在 CI/CD 流程中自动运行测试。
+
+### 快速开始
+
+在你的项目中创建 `.github/workflows/test.yml`:
+
+```yaml
+name: FullScopeTest CI
+on: [push, pull_request]
+
+jobs
+ test:
+ runs-on: ubuntu-latest
+ steps
+ - uses: actions/checkout@v4
+ - uses: FullScopeTest/fullscope-test/.github/actions/fullscope-test@main
+ with:
+ server-url: ${{ secrets.FULLSCOPETEST_URL }}
+ api-token: ${{ secrets.FULLSCOPETEST_TOKEN }}
+ test-type: api
+ environment: staging
+```
+
+### 参数说明
+
+| 参数 | 必填 | 默认值 | 说明 |
+|------|------|--------|------|
+| `server-url` | ✅ | - | FullScopeTest 服务器地址 |
+| `api-token` | ✅ | - | API Token(在 Settings → Tokens 创建) |
+| `test-suite-id` | ❌ | - | 指定测试套件 ID |
+| `quality-gate-id` | ❌ | - | Quality Gate ID,用于评估质量门禁 |
+| `environment` | ❌ | `staging` | 测试环境名称 |
+| `test-type` | ❌ | `api` | 测试类型:`api`、`web` 或 `all` |
+
+### 输出变量
+
+| 变量 | 说明 |
+|------|------|
+| `test_run_id` | 创建的测试运行 ID |
+| `test_status` | 最终状态:`success` / `failed` / `timeout` |
+| `quality_gate_passed` | Quality Gate 是否通过 |
+
+### 高级用法
+
+**带 Quality Gate 的 CI 流程:**
+
+```yaml
+name: FullScopeTest CI with Quality Gate
+on: [push, pull_request]
+
+jobs
+ test:
+ runs-on: ubuntu-latest
+ steps
+ - uses: actions/checkout@v4
+ - uses: FullScopeTest/fullscope-test/.github/actions/fullscope-test@main
+ id: test
+ with:
+ server-url: ${{ secrets.FULLSCOPETEST_URL }}
+ api-token: ${{ secrets.FULLSCOPETEST_TOKEN }}
+ test-suite-id: ${{ secrets.TEST_SUITE_ID }}
+ quality-gate-id: ${{ secrets.QUALITY_GATE_ID }}
+ environment: production
+ test-type: all
+ - name: Report status
+ if: always()
+ run: |
+ echo "Test Status: ${{ steps.test.outputs.test_status }}"
+ echo "Quality Gate: ${{ steps.test.outputs.quality_gate_passed }}"
+```
+
+---
+
+## 🤝 参与贡献
+
+我们非常欢迎您的参与!
+- 发现 Bug 或有好的建议,欢迎提交 Issue。
+- 想要贡献代码,请提交 Pull Request。
+- 提交代码前建议进行本地自检:
+ - 前端:`cd web && npm run lint`
+ - 后端:`cd backend && pytest -q`
+
+---
+
+## 📞 联系作者
+
+如果您在部署、使用过程中遇到问题,或者有商业合作、功能定制等需求,欢迎通过以下方式与我取得联系:
+
+- **个人博客**:[huangxuan.chat](http://huangxuan.chat)
+- **邮箱**:3441578327@qq.com or huangxuandev@126.com
+- **电话**:(+86)188-5212-2635
+- **微信**:
+
+
+

+
扫码添加作者微信
+
+
+---
+
+## 🛠 技术栈
+
+- **前端**: [React 18](https://reactjs.org/) + [TypeScript](https://www.typescriptlang.org/) + [Vite](https://vitejs.dev/) + [Ant Design 5](https://ant.design/)
+- **后端**: [Flask 3.0](https://flask.palletsprojects.com/) + [SQLAlchemy ORM](https://www.sqlalchemy.org/)
+- **数据库**: [PostgreSQL 15](https://www.postgresql.org/) + [Redis 7](https://redis.io/)
+- **测试引擎**: [Playwright](https://playwright.dev/) (Web) + [Locust](https://locust.io/) (性能) + [Appium](https://appium.io/) (APP)
+- **异步任务**: [Celery](https://docs.celeryq.dev/) + [APScheduler](https://apscheduler.readthedocs.io/)
+- **国际化**: [i18next](https://www.i18next.com/) + [react-i18next](https://react.i18next.com/) (中英文双语)
+- **状态管理**: [Zustand](https://github.com/pmndrs/zustand) (轻量级 Store + persist 持久化)
+- **监控**: [Prometheus](https://prometheus.io/) + [Grafana](https://grafana.com/) (指标采集 + 可视化)
+- **基础设施**: [Docker Compose](https://www.docker.com/) + [OpenResty](https://openresty.org/) (Nginx + Lua)
+
+---
+
+## 📄 许可证
+
+本项目采用 [MIT License](LICENSE) 协议开源。
+
+
+ Built with ❤️ by FullScopeTest Team
+