geo/docs/brainstorms/2026-05-31-geo-platform-acc...

185 lines
8.4 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.

---
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 个新 AgentMonitorAgent、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`