---
date: "2026-05-31"
topic: "geo-platform-acceptance-audit"
---

## Summary

GEO 平台全项目验收审计方案，定义功能完整性、安全性、性能、代码质量四个维度的验收标准与检查清单，包含已发现 42 项问题的分级修复计划，以及四类项目文档的更新规范，确保平台达到可交付质量水平。

## Problem Frame

GEO 平台经过多轮迭代开发，已实现 33 个 API 路由模块、8 个 Agent、35 个数据模型、25+ 前端页面。但快速迭代带来了技术债务：4 个新 Agent 的前端 API 客户端尚未创建、部分 API 存在认证绕过风险、N+1 查询影响性能、API 文档覆盖率仅 15%。在交付前需要系统性的验收审计，识别并修复阻塞问题，同步更新文档使项目状态与代码一致。

---

## Key Decisions

**审计维度覆盖全部四项而非选择性覆盖** — 功能完整性、安全性、性能、代码质量相互关联，部分安全漏洞隐藏在功能实现中，性能问题影响功能可用性，选择性覆盖会遗漏跨维度问题。

**Critical/High 问题作为验收阻塞项** — 20 个 Critical + High 问题必须在验收通过前修复，Medium/Low 问题可记录为技术债务在后续迭代处理。

**文档更新纳入验收流程** — 文档与代码不同步是当前最大运维风险（API 文档覆盖率仅 15%），文档更新不是附加任务而是验收的必要条件。

**自审计而非第三方审计** — 本方案定位为交付前自审计，确保基本质量门槛；渗透测试等深度安全审计作为后续独立项目规划。

---

## Requirements

### 功能完整性

R1. 所有 33 个 API 路由模块必须有对应的前端 API 客户端模块，且接口签名与后端一致

R2. 8 个 Agent 均可通过 standalone 模式独立启动并执行其声明的 supported_tasks

R3. 用户注册→登录→Onboarding→品牌创建→诊断→方案生成→内容生成→效果追踪的完整业务闭环可端到端走通

R4. 4 个新 Agent（MonitorAgent、SchemaAdvisor、CompetitorAnalyzer、TrendAgent）的前端 API 客户端模块必须创建，覆盖其全部 API 端点

R5. 前端所有页面的 API 调用参数（字段名、类型、顺序）与后端路由定义一致，无运行时 400/500 错误

R6. GEO 方案自动生成流程（诊断→策略→方案→行动）完整可用，竞品为可选输入

R7. 品牌评分（5 维度 V2 评分体系）在品牌详情页和仪表盘均可正确展示

### 安全性

R8. 所有业务 API 端点（除 `/health`、`/ready`、`/auth/login`、`/auth/register` 外）必须要求认证，不存在认证绕过路径

R9. analytics 路由的认证检查必须与业务路由一致，不能因中间件顺序或装饰器缺失而跳过

R10. API Key 通过加密存储（key_encryption.py），密钥不在日志、响应体、前端代码中明文暴露

R11. CORS 配置在生产环境必须限制 `allow_origins` 为具体域名，不能使用通配符 `*`

R12. 用户输入必须经过 Pydantic Schema 校验，不存在未校验的请求参数直接进入数据库查询

R13. SQL 查询使用 SQLAlchemy ORM 参数化查询，不存在字符串拼接 SQL

### 性能

R14. 品牌评分数据获取逻辑提取为共享服务（BrandScoringDataService），消除 dashboard.py 和 strategy.py 中的重复查询

R15. 消除 N+1 查询模式：品牌列表页、仪表盘、策略页等高频访问路径不得出现循环内单条查询

R16. AI 引擎批量查询使用 `queryBatch` 端点而非逐条查询

R17. Redis 缓存层对热点数据（品牌评分、仪表盘统计）生效，缓存命中率作为可观测指标

### 代码质量

R18. 前端 `agentsApi.enable`/`agentsApi.disable` 死代码必须移除或替换为实际可用的实现

R19. 前端 `onboardingApi.getCompetitorRecommendations` 参数签名必须与后端一致

R20. `models/__init__.py` 中标注为"重构后遗留"的模型导入必须验证其与数据库迁移的一致性

R21. `SEOOptimizer` 命名与实际功能（GEO 优化）不一致的问题必须在代码或文档中明确标注

R22. `content.py`（内容生产）与 `contents.py`（内容管理）的命名混淆必须在 API 文档中明确区分

R23. 前端 `lib/api/index.ts` 聚合导出必须覆盖所有 API 客户端模块，消除遗漏

---

## Key Flows

- F1. 验收审计执行流程
  - **Trigger:** 审计方案文档确认后启动
  - **Actors:** 开发者、审计执行者
  - **Steps:** (1) 按维度执行检查清单 (2) 记录每项的通过/不通过状态 (3) Critical/High 不通过项进入修复流程 (4) 修复后回归验证 (5) 全部阻塞项通过后进入文档更新阶段 (6) 文档更新完成后签发验收报告
  - **Outcome:** 验收通过/不通过判定 + 问题修复记录 + 更新后的文档

- F2. 问题修复流程
  - **Trigger:** 审计检查发现 Critical 或 High 问题
  - **Actors:** 开发者
  - **Steps:** (1) 问题分级确认 (2) 按优先级排序（Critical > High > Medium > Low）(3) 修复实现 (4) 回归验证（确认修复未引入新问题）(5) 更新审计检查清单状态
  - **Outcome:** 问题状态从"不通过"变为"通过"

- F3. 文档更新流程
  - **Trigger:** 代码修复完成后
  - **Actors:** 开发者
  - **Steps:** (1) 更新项目文档（README、架构图、API 文档）(2) 更新 AI 上下文文件（CLAUDE.md、AGENTS.md）(3) 更新设计文档（模块说明、流程图）(4) 更新部署文档（环境变量、Docker 配置）(5) 交叉验证文档与代码一致性
  - **Outcome:** 四类文档与代码实现完全一致

---

## Acceptance Examples

- AE1. **认证绕过验证** — Covers R8, R9
  - **Given:** 未认证的 HTTP 请求
  - **When:** 请求 `/api/v1/analytics` 端点
  - **Then:** 返回 401 Unauthorized，不返回业务数据

- AE2. **新 Agent 前端可用性** — Covers R4
  - **Given:** 前端 API 客户端模块 `monitoring.ts`、`competitor-analysis.ts`、`schema-advisor.ts`、`trends.ts` 已创建
  - **When:** 前端页面调用这些模块的方法
  - **Then:** 请求正确到达后端对应端点，参数类型和顺序匹配，无 400/500 错误

- AE3. **N+1 查询消除** — Covers R14, R15
  - **Given:** 仪表盘页面加载
  - **When:** 后端处理 `/api/v1/dashboard` 请求
  - **Then:** 品牌评分数据通过共享服务一次查询获取，SQL 日志中不出现循环内单条查询模式

- AE4. **CORS 生产配置** — Covers R11
  - **Given:** 生产环境部署
  - **When:** CORS 中间件初始化
  - **Then:** `allow_origins` 不包含通配符 `*`，仅允许配置的域名

- AE5. **业务闭环端到端** — Covers R3
  - **Given:** 新注册用户完成 Onboarding
  - **When:** 依次执行诊断→查看诊断报告→生成 GEO 方案→执行内容生成→查看效果追踪
  - **Then:** 每一步均可成功完成，数据在步骤间正确传递

---

## Success Criteria

- 全部 6 个 Critical 问题修复并通过回归验证
- 全部 14 个 High 问题修复并通过回归验证
- API 文档覆盖率从 15% 提升至 80% 以上（至少覆盖 27/33 个路由模块）
- AI 上下文文件（CLAUDE.md / AGENTS.md）创建完成，准确反映项目当前架构
- 四类文档更新完成且与代码实现一致
- 端到端业务闭环无阻塞错误

---

## Scope Boundaries

**Deferred for later:**

- 自动化 E2E 测试框架搭建
- 性能压测与负载测试方案
- 第三方安全审计（渗透测试）
- CI/CD 流水线完善
- 前端单元测试和集成测试覆盖

**Outside this product's identity:**

- 基础设施级别的安全审计（网络层、K8s 配置）
- 用户体验走查和可用性测试
- 多语言/国际化验证

---

## Dependencies / Assumptions

- 后端服务可正常启动（PostgreSQL + Redis 可用）
- 前端开发服务器可正常启动
- 至少一个 LLM Provider 的 API Key 可用（用于验证 Agent 功能）
- 当前审计基于代码静态分析 + 架构审查，不包含运行时动态分析
- 数据库迁移状态与 models 定义一致（需在验收时验证）

---

## Sources / Research

- 审计扫描结果：Critical 6、High 14、Medium 14、Low 8 共 42 项问题
- 项目架构文档：`docs/01-项目概览/architecture.md`
- Agent 框架协议：`docs/02-模块说明/agent-protocol.md`
- GEO 工作流分析：`docs/02-模块说明/geo-workflow-analysis.md`
- 新 Agent 实现计划：`docs/plans/2026-05-28-001-feat-geo-platform-new-agents-plan.md`
- 环境变量模板：`.env.example`
- Docker 部署配置：`docker-compose.yml`
