# 配置定制 **本文档引用的文件** - [backend/app/config.py](file://backend/app/config.py) - [backend/app/database.py](file://backend/app/database.py) - [backend/app/main.py](file://backend/app/main.py) - [backend/app/workers/scheduler.py](file://backend/app/workers/scheduler.py) - [backend/app/workers/citation_engine.py](file://backend/app/workers/citation_engine.py) - [backend/app/workers/platforms/base.py](file://backend/app/workers/platforms/base.py) - [backend/app/workers/platforms/kimi.py](file://backend/app/workers/platforms/kimi.py) - [backend/app/workers/platforms/wenxin.py](file://backend/app/workers/platforms/wenxin.py) - [backend/requirements.txt](file://backend/requirements.txt) - [docker-compose.yml](file://docker-compose.yml) - [frontend/tailwind.config.ts](file://frontend/tailwind.config.ts) - [frontend/postcss.config.mjs](file://frontend/postcss.config.mjs) - [frontend/next.config.mjs](file://frontend/next.config.mjs) - [frontend/package.json](file://frontend/package.json) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构总览](#架构总览) 5. [详细组件分析](#详细组件分析) 6. [依赖分析](#依赖分析) 7. [性能考虑](#性能考虑) 8. [故障排查指南](#故障排查指南) 9. [结论](#结论) 10. [附录](#附录) ## 简介 本文件面向GEO项目的配置定制需求,系统性梳理后端环境变量配置、数据库与缓存连接、AI平台API密钥管理、功能开关与热更新机制、性能调优参数,以及前端主题定制(Tailwind CSS、颜色方案、响应式断点)。同时给出生产环境最佳实践与安全配置建议,帮助团队在不同部署环境中快速、安全地完成配置落地。 ## 项目结构 - 后端采用FastAPI + SQLAlchemy异步ORM + APScheduler异步调度,配置通过Pydantic Settings集中管理,支持.env文件注入。 - 前端基于Next.js 14 + Tailwind CSS,PostCSS负责Tailwind集成,主题变量通过CSS自定义属性扩展。 - Docker Compose编排数据库(PostgreSQL)、缓存(Redis)与前后端服务,统一挂载.env以注入环境变量。 ```mermaid graph TB subgraph "后端" CFG["配置模块
Settings"] DB["数据库引擎
AsyncEngine"] SCH["调度器
AsyncIOScheduler"] CE["引用引擎
CitationEngine"] KIMI["Kimi适配器"] WENXIN["文心一言适配器"] end subgraph "前端" TW["Tailwind配置
tailwind.config.ts"] PC["PostCSS配置
postcss.config.mjs"] NEXT["Next配置
next.config.mjs"] end subgraph "基础设施" PG["PostgreSQL"] RD["Redis"] end CFG --> DB CFG --> RD CFG --> CE CE --> KIMI CE --> WENXIN SCH --> CE DB --> PG RD -.-> 应用 TW --> 应用 PC --> TW NEXT --> 应用 ``` 图表来源 - [backend/app/config.py:1-17](file://backend/app/config.py#L1-L17) - [backend/app/database.py:1-29](file://backend/app/database.py#L1-L29) - [backend/app/workers/scheduler.py:1-95](file://backend/app/workers/scheduler.py#L1-L95) - [backend/app/workers/citation_engine.py:1-309](file://backend/app/workers/citation_engine.py#L1-L309) - [backend/app/workers/platforms/kimi.py:1-206](file://backend/app/workers/platforms/kimi.py#L1-L206) - [backend/app/workers/platforms/wenxin.py:1-205](file://backend/app/workers/platforms/wenxin.py#L1-L205) - [frontend/tailwind.config.ts:1-57](file://frontend/tailwind.config.ts#L1-L57) - [frontend/postcss.config.mjs:1-9](file://frontend/postcss.config.mjs#L1-L9) - [frontend/next.config.mjs:1-5](file://frontend/next.config.mjs#L1-L5) 章节来源 - [backend/app/config.py:1-17](file://backend/app/config.py#L1-L17) - [backend/app/database.py:1-29](file://backend/app/database.py#L1-L29) - [frontend/tailwind.config.ts:1-57](file://frontend/tailwind.config.ts#L1-L57) - [docker-compose.yml:1-71](file://docker-compose.yml#L1-L71) ## 核心组件 - 配置中心(Settings):集中声明数据库、缓存、JWT、浏览器路径、AI平台密钥等关键参数,并通过.env文件注入。 - 数据库层:基于SQLAlchemy异步引擎,提供会话工厂与基础模型元数据。 - 引擎与调度:CitationEngine负责跨平台查询与品牌匹配;QueryScheduler周期性触发任务。 - 前端主题:Tailwind CSS通过CSS变量扩展颜色与圆角体系,PostCSS集成Tailwind,Next配置保持默认。 章节来源 - [backend/app/config.py:1-17](file://backend/app/config.py#L1-L17) - [backend/app/database.py:1-29](file://backend/app/database.py#L1-L29) - [backend/app/workers/citation_engine.py:148-309](file://backend/app/workers/citation_engine.py#L148-L309) - [backend/app/workers/scheduler.py:25-95](file://backend/app/workers/scheduler.py#L25-L95) - [frontend/tailwind.config.ts:10-54](file://frontend/tailwind.config.ts#L10-L54) ## 架构总览 下图展示配置如何贯穿应用生命周期:从.env注入Settings,再到数据库与缓存连接、AI平台适配器初始化、调度器启动与任务执行。 ```mermaid sequenceDiagram participant ENV as ".env" participant S as "Settings" participant DB as "数据库引擎" participant RED as "Redis" participant CE as "CitationEngine" participant SCH as "QueryScheduler" participant K as "Kimi适配器" participant W as "文心一言适配器" ENV-->>S : 注入键值对 S-->>DB : 提供DATABASE_URL S-->>RED : 提供REDIS_URL S-->>CE : 提供API密钥(可选) SCH->>CE : 触发任务执行 CE->>K : query(keyword) CE->>W : query(keyword) K-->>CE : 原始响应文本 W-->>CE : 原始响应文本 CE-->>DB : 写入引用记录 CE-->>RED : 可选缓存写入 ``` 图表来源 - [backend/app/config.py:1-17](file://backend/app/config.py#L1-L17) - [backend/app/database.py:1-29](file://backend/app/database.py#L1-L29) - [backend/app/workers/citation_engine.py:148-309](file://backend/app/workers/citation_engine.py#L148-L309) - [backend/app/workers/platforms/kimi.py:33-125](file://backend/app/workers/platforms/kimi.py#L33-L125) - [backend/app/workers/platforms/wenxin.py:33-124](file://backend/app/workers/platforms/wenxin.py#L33-L124) ## 详细组件分析 ### 环境变量与配置管理 - 配置来源:Settings通过.env文件注入,支持额外键忽略策略,便于本地与CI/CD环境解耦。 - 关键参数: - 数据库连接:DATABASE_URL - 缓存连接:REDIS_URL - 安全相关:JWT_SECRET、JWT_EXPIRE_HOURS - 浏览器自动化:PLAYWRIGHT_BROWSERS_PATH - AI平台密钥:ZHIPU_API_KEY、TONGYI_API_KEY(当前为空,需在生产环境注入) ```mermaid classDiagram class Settings { +DATABASE_URL : string +REDIS_URL : string +JWT_SECRET : string +JWT_EXPIRE_HOURS : number +PLAYWRIGHT_BROWSERS_PATH : string +ZHIPU_API_KEY : string +TONGYI_API_KEY : string } ``` 图表来源 - [backend/app/config.py:4-16](file://backend/app/config.py#L4-L16) 章节来源 - [backend/app/config.py:1-17](file://backend/app/config.py#L1-L17) - [docker-compose.yml:42-43](file://docker-compose.yml#L42-L43) ### 数据库连接配置 - 引擎创建:使用异步引擎,echo关闭,future开启。 - 会话工厂:设置过期与自动提交/刷洗策略,保证事务一致性。 - 依赖注入:通过依赖函数提供会话,确保请求生命周期内正确释放。 ```mermaid flowchart TD Start(["应用启动"]) --> LoadCfg["读取Settings.DATABASE_URL"] LoadCfg --> CreateEngine["创建异步引擎"] CreateEngine --> SessionFactory["创建会话工厂"] SessionFactory --> ProvideDB["依赖注入会话"] ProvideDB --> End(["请求处理完成,关闭会话"]) ``` 图表来源 - [backend/app/database.py:6-28](file://backend/app/database.py#L6-L28) 章节来源 - [backend/app/database.py:1-29](file://backend/app/database.py#L1-L29) ### Redis缓存配置 - 连接字符串:REDIS_URL由Settings提供。 - 使用场景:可作为任务状态、查询结果或会话存储的缓存层(当前代码未直接使用Redis,可在业务层扩展)。 - 建议:生产环境务必独立Redis实例,设置密码与网络隔离。 章节来源 - [backend/app/config.py:8](file://backend/app/config.py#L8) - [backend/requirements.txt:21](file://backend/requirements.txt#L21) ### AI平台API密钥管理 - 当前实现:Settings声明密钥字段,但默认为空;引用引擎在执行平台查询时依赖适配器封装的内部逻辑。 - 建议:在生产环境通过.env注入密钥,或通过机密管理服务挂载至容器。 章节来源 - [backend/app/config.py:12-13](file://backend/app/config.py#L12-L13) - [backend/app/workers/citation_engine.py:244-246](file://backend/app/workers/citation_engine.py#L244-L246) ### 功能开关与动态配置 - 现状:代码未实现运行时功能开关与配置热更新。 - 建议实现方式: - 引入配置中心(如Consul、etcd或PostgreSQL表),定期拉取最新配置。 - 使用装饰器或中间件在请求入口处进行功能开关判断。 - 结合信号或健康检查接口触发重载,避免重启服务。 章节来源 - [backend/app/main.py:13-21](file://backend/app/main.py#L13-L21) ### 性能调优参数 - 数据库连接池:可通过异步引擎参数调整最大连接数、空闲连接数、连接超时等(当前未显式配置,使用默认值)。 - 异步任务并发:调度器周期固定为1小时;平台查询采用指数退避与单次任务串行化,避免过度并发。 - 缓存策略:建议在业务层引入Redis缓存热点查询结果,降低重复抓取成本。 章节来源 - [backend/app/workers/scheduler.py:32-38](file://backend/app/workers/scheduler.py#L32-L38) - [backend/app/workers/platforms/kimi.py:38-48](file://backend/app/workers/platforms/kimi.py#L38-L48) - [backend/app/workers/platforms/wenxin.py:38-48](file://backend/app/workers/platforms/wenxin.py#L38-L48) ### 前端主题定制指南 - Tailwind CSS配置:通过CSS变量扩展colors与borderRadius,darkMode使用class模式。 - PostCSS:仅启用tailwindcss插件,简化构建流程。 - Next配置:默认配置,无需特殊改动。 - 定制步骤: - 颜色方案:在tailwind.config.ts的theme.extend.colors中新增或覆盖HSL变量。 - 圆角体系:在theme.extend.borderRadius中扩展半径变量。 - 响应式断点:在theme.extend.screens中添加自定义断点名称与宽度。 - 主题切换:通过在html或body上切换class实现明暗主题切换。 ```mermaid flowchart TD A["修改 tailwind.config.ts"] --> B["扩展 colors 或 borderRadius"] B --> C["构建并预览"] C --> D["在组件中使用新变量"] D --> E["发布"] ``` 图表来源 - [frontend/tailwind.config.ts:10-54](file://frontend/tailwind.config.ts#L10-L54) - [frontend/postcss.config.mjs:1-9](file://frontend/postcss.config.mjs#L1-L9) - [frontend/next.config.mjs:1-5](file://frontend/next.config.mjs#L1-L5) 章节来源 - [frontend/tailwind.config.ts:1-57](file://frontend/tailwind.config.ts#L1-L57) - [frontend/postcss.config.mjs:1-9](file://frontend/postcss.config.mjs#L1-L9) - [frontend/next.config.mjs:1-5](file://frontend/next.config.mjs#L1-L5) - [frontend/package.json:11-38](file://frontend/package.json#L11-L38) ### 生产环境配置最佳实践 - 环境变量: - 使用独立.env文件,禁止提交到版本库;通过CI/CD注入。 - 设置JWT_SECRET为强随机字符串,JWT_EXPIRE_HOURS按业务安全策略设定。 - DATABASE_URL与REDIS_URL指向独立实例,启用TLS与访问控制。 - 安全加固: - 限制CORS白名单,仅允许受信域名。 - 启用HTTPS与安全头(由网关或反向代理层处理)。 - 定期轮换密钥与证书。 - 可靠性: - 数据库与Redis增加健康检查与自动重启策略。 - 后端服务设置优雅停机与进程监控。 章节来源 - [backend/app/main.py:30-36](file://backend/app/main.py#L30-L36) - [docker-compose.yml:8-20](file://docker-compose.yml#L8-L20) - [docker-compose.yml:25-34](file://docker-compose.yml#L25-L34) - [docker-compose.yml:46-51](file://docker-compose.yml#L46-L51) ## 依赖分析 - 后端依赖:FastAPI、SQLAlchemy异步、Pydantic/Settings、Redis、APScheduler、Playwright。 - 前端依赖:Next.js、Tailwind CSS、Radix UI组件、Recharts等。 ```mermaid graph LR R["requirements.txt"] --> F["FastAPI"] R --> SA["SQLAlchemy异步"] R --> PS["Pydantic/Settings"] R --> RD["Redis"] R --> AP["APScheduler"] R --> PW["Playwright"] P["package.json"] --> NX["Next.js"] P --> TW["Tailwind CSS"] P --> UI["@radix-ui/*"] P --> RC["Recharts"] ``` 图表来源 - [backend/requirements.txt:1-35](file://backend/requirements.txt#L1-L35) - [frontend/package.json:11-38](file://frontend/package.json#L11-L38) 章节来源 - [backend/requirements.txt:1-35](file://backend/requirements.txt#L1-L35) - [frontend/package.json:11-38](file://frontend/package.json#L11-L38) ## 性能考虑 - 数据库:根据QPS与查询复杂度调整连接池大小;开启连接复用与超时控制。 - 缓存:对热点查询结果进行缓存,设置合理TTL;避免缓存穿透与雪崩。 - 并发:平台查询采用指数退避与串行化,避免平台限流;必要时引入队列与限速器。 - 前端:Tailwind按需扫描内容文件,减少未使用样式体积;生产构建启用压缩与Tree Shaking。 ## 故障排查指南 - 数据库连接失败:检查DATABASE_URL格式与可达性;确认容器网络与卷挂载。 - Redis连接失败:检查REDIS_URL与网络策略;确认容器健康检查状态。 - Playwright浏览器问题:确认PLAYWRIGHT_BROWSERS_PATH与浏览器安装;查看日志中的超时与选择器匹配失败信息。 - 调度器未启动:确认lifespan钩子与main.py中include_router顺序;查看日志输出。 - CORS错误:核对allow_origins与凭证设置;确保前端请求头一致。 章节来源 - [backend/app/database.py:6-10](file://backend/app/database.py#L6-L10) - [backend/app/config.py:11](file://backend/app/config.py#L11) - [backend/app/workers/platforms/kimi.py:21-32](file://backend/app/workers/platforms/kimi.py#L21-L32) - [backend/app/workers/platforms/wenxin.py:21-32](file://backend/app/workers/platforms/wenxin.py#L21-L32) - [backend/app/main.py:13-21](file://backend/app/main.py#L13-L21) - [backend/app/main.py:30-36](file://backend/app/main.py#L30-L36) ## 结论 本文档提供了GEO项目配置定制的完整指南,涵盖后端环境变量、数据库与缓存、AI平台密钥、前端主题定制与生产安全实践。当前代码未实现运行时功能开关与配置热更新,建议在后续迭代中引入配置中心与热重载机制,以提升系统的可运维性与安全性。 ## 附录 - Docker Compose编排:数据库、缓存与前后端服务均通过.env注入环境变量,建议在生产环境使用独立网络与只读根文件系统。 - 版本与依赖:后端与前端均采用稳定版本,升级前请进行兼容性测试。 章节来源 - [docker-compose.yml:1-71](file://docker-compose.yml#L1-L71) - [backend/requirements.txt:1-35](file://backend/requirements.txt#L1-L35) - [frontend/package.json:11-38](file://frontend/package.json#L11-L38)