# 配置定制
**本文档引用的文件**
- [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)