--- 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`