docs: 添加项目文档体系 + 修复租户创建模态框
- 新增 .agents/summary/ 完整文档(架构、组件、接口、数据模型、流程、依赖) - 新增 AGENTS.md(AI 助手导航) - 更新 README.md - 修复 dashboard.html 租户模态框多余 </div> 导致保存按钮失效 - 更新 .gitignore 排除虚拟环境文件
This commit is contained in:
109
.agents/summary/architecture.md
Normal file
109
.agents/summary/architecture.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# Architecture / 系统架构
|
||||
|
||||
## 整体架构
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph Clients["客户端"]
|
||||
Browser["浏览器 Dashboard"]
|
||||
FeishuBot["飞书机器人"]
|
||||
WSClient["WebSocket 客户端"]
|
||||
end
|
||||
|
||||
subgraph EntryPoints["入口层"]
|
||||
Flask["Flask App :5000"]
|
||||
WS["WebSocket Server :8765"]
|
||||
FeishuLC["飞书长连接服务"]
|
||||
end
|
||||
|
||||
subgraph WebLayer["Web 层"]
|
||||
Blueprints["16 个 Flask Blueprints"]
|
||||
Decorators["装饰器: handle_errors, require_json, resolve_tenant_id, rate_limit"]
|
||||
SM["ServiceManager (懒加载)"]
|
||||
end
|
||||
|
||||
subgraph BusinessLayer["业务层"]
|
||||
DM["DialogueManager"]
|
||||
RCM["RealtimeChatManager"]
|
||||
KM["KnowledgeManager"]
|
||||
WOS["WorkOrderSyncService"]
|
||||
Agent["ReactAgent"]
|
||||
AM["AnalyticsManager"]
|
||||
AS["AlertSystem"]
|
||||
end
|
||||
|
||||
subgraph CoreLayer["基础设施层"]
|
||||
DB["DatabaseManager (SQLAlchemy)"]
|
||||
LLM["LLMClient (Qwen API)"]
|
||||
Cache["CacheManager (Redis)"]
|
||||
Auth["AuthManager (JWT)"]
|
||||
Embed["EmbeddingClient (可选)"]
|
||||
end
|
||||
|
||||
subgraph External["外部服务"]
|
||||
QwenAPI["Qwen/DashScope API"]
|
||||
FeishuAPI["飞书 API"]
|
||||
RedisServer["Redis"]
|
||||
Database["MySQL / SQLite"]
|
||||
end
|
||||
|
||||
Browser --> Flask
|
||||
WSClient --> WS
|
||||
FeishuBot --> FeishuLC
|
||||
|
||||
Flask --> Blueprints
|
||||
Blueprints --> Decorators
|
||||
Blueprints --> SM
|
||||
SM --> BusinessLayer
|
||||
|
||||
WS --> RCM
|
||||
FeishuLC --> DM
|
||||
|
||||
DM --> LLM
|
||||
DM --> KM
|
||||
RCM --> DM
|
||||
Agent --> LLM
|
||||
KM --> Embed
|
||||
WOS --> FeishuAPI
|
||||
|
||||
DB --> Database
|
||||
LLM --> QwenAPI
|
||||
Cache --> RedisServer
|
||||
```
|
||||
|
||||
## 架构模式
|
||||
|
||||
### Singleton Managers
|
||||
核心服务均为单例模式:`DatabaseManager`, `ServiceManager`, `UnifiedConfig`。通过 `get_config()` / `db_manager` 全局访问。
|
||||
|
||||
### Blueprint-per-Domain
|
||||
每个功能域一个 Flask Blueprint,共 16 个:
|
||||
`workorders`, `alerts`, `knowledge`, `conversations`, `chat`, `agent`, `tenants`, `auth`, `analytics`, `monitoring`, `system`, `feishu_sync`, `feishu_bot`, `vehicle`, `core`, `test`
|
||||
|
||||
### Service Manager with Lazy Loading
|
||||
`ServiceManager` 提供线程安全的懒初始化。Blueprint 通过它获取业务服务实例,避免循环导入和启动时的重量级初始化。
|
||||
|
||||
### Decorator-Driven API
|
||||
通用横切关注点通过装饰器实现:
|
||||
- `@handle_errors` — 统一异常处理
|
||||
- `@require_json` — JSON 请求验证
|
||||
- `@resolve_tenant_id` — 从请求中提取 tenant_id
|
||||
- `@rate_limit` — 频率限制
|
||||
- `@cache_response` — 响应缓存
|
||||
|
||||
### Multi-Tenant by Convention
|
||||
所有核心表包含 `tenant_id` 字段,查询时按 tenant_id 过滤实现数据隔离。
|
||||
|
||||
## 线程模型
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
Main["主线程: Flask App"]
|
||||
T1["守护线程: WebSocket Server"]
|
||||
T2["守护线程: 飞书长连接"]
|
||||
|
||||
Main --> T1
|
||||
Main --> T2
|
||||
```
|
||||
|
||||
`start_dashboard.py` 在主线程运行 Flask,WebSocket 和飞书长连接分别在守护线程中运行。
|
||||
Reference in New Issue
Block a user