Files
Cloud-Tour-to-Libo/docs/ARCHITECTURE.md

80 lines
2.9 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.

# 架构说明
系统采用前后端分离加双数据库架构。Docker Compose 会启动 PostgreSQL、FalkorDB 和 FastAPI API 服务;React 管理后台在镜像构建时被打包为静态文件,由 FastAPI 挂载到 `/admin`。
## 容器拓扑
```mermaid
flowchart TB
subgraph compose["Docker Compose"]
API["api\nFastAPI + 静态后台"]
PG["postgres\nPostgreSQL 16"]
Seed["falkordb-seed\n复制 dump.rdb"]
FK["falkordb\nFalkorDB"]
end
Browser["浏览器"] --> API
API --> PG
API --> FK
Seed --> FK
```
## 服务职责
| 服务 | 职责 |
| --- | --- |
| `api` | 提供 `/v1/admin/*` API,挂载 `/admin` 前端页面,连接 PostgreSQL 与 FalkorDB |
| `postgres` | 保存项目、Schema、结构化业务数据、用户权限和后台流程支撑数据 |
| `falkordb-seed` | 首次启动时把仓库内的 `snapshots/falkordb/dump.rdb` 写入数据卷 |
| `falkordb` | 保存图数据库,支持 Cypher/Redis 协议访问和 FalkorDB Browser |
## 后端模块
| 路径 | 说明 |
| --- | --- |
| `app/main.py` | FastAPI 入口、CORS、路由挂载和前端静态资源挂载 |
| `app/config.py` | 环境变量配置 |
| `app/db.py` | PostgreSQL 连接池 |
| `app/api/` | 管理后台 API 路由 |
| `app/agents/` | 采集、抽取、对齐和外部站点 Agent |
| `app/kg_core/` | 空间图谱与核心图谱辅助逻辑 |
| `app/schemas/` | 抽取 schema |
| `app/security.py`、`app/auth.py` | 登录、令牌和权限相关逻辑 |
## 前端模块
| 路径 | 说明 |
| --- | --- |
| `admin-web/src/App.tsx` | 管理后台主应用与路由 |
| `admin-web/src/api.ts` | API 客户端 |
| `admin-web/src/panels/plaza/` | 数据大屏、业务问答、图谱浏览和 Super Agent |
| `admin-web/src/panels/data-platform/` | 项目数据库、表、记录、CSV 与 SQL 工作区 |
| `admin-web/src/panels/modeling/` | 当前项目 Schema 的只读展示 |
| `admin-web/src/panels/system/` | 简化用户管理(数据管理/数据查看)和接口中心 |
## 数据层
PostgreSQL 和 FalkorDB 承担不同职责:
- PostgreSQL:项目、Schema、结构化业务数据、用户权限,以及 Agent 所需的内部流程数据。
- FalkorDB:图谱实体、关系、路线、资源、POI、空间索引和面向查询的图结构。
默认配置:
| 配置项 | 默认值 |
| --- | --- |
| PostgreSQL database | `kg_admin` |
| PostgreSQL schema | `kg_admin_new2` |
| FalkorDB 业务图 | `guiyang_new2` |
| FalkorDB 空间图 | `guiyang_spatial_v1` |
## 构建过程
`Dockerfile` 使用多阶段构建:
1. Node.js 阶段进入 `admin-web/`,执行 `npm ci` 和 `npm run build`。
2. Python 阶段安装 `requirements.txt`。
3. 复制 `app/`、`schema搭建/` 和前端构建产物到镜像。
4. 容器启动 `uvicorn app.main:app --host 0.0.0.0 --port 8000`。
快照文件不会进入 API 镜像,它们由 `docker-compose.yml` 作为只读挂载提供给数据库容器。