Files
bxh/README.md

176 lines
6.5 KiB
Markdown
Raw Permalink 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.

# 旅行知识图谱管理系统
![Python](https://img.shields.io/badge/Python-3.12-blue)
![FastAPI](https://img.shields.io/badge/FastAPI-0.136-green)
![React](https://img.shields.io/badge/React-18-61dafb)
![Docker](https://img.shields.io/badge/Docker-Compose-2496ed)
![Graph](https://img.shields.io/badge/Graph-FalkorDB-purple)
面向贵州、贵阳旅行场景的知识图谱管理系统。项目包含 FastAPI 后端、React 管理后台、PostgreSQL 管理库、FalkorDB 图数据库、图谱 schema、采集/抽取脚本和可恢复的数据快照。用户 clone 仓库后可以直接用 Docker 启动完整系统,并恢复随仓库发布的图谱数据。
## 项目亮点
- 完整后台:数据源、批次、实体审核、证据质量、图谱广场、发布回滚、权限、任务和通知模块。
- 双数据库架构PostgreSQL 保存后台业务数据与审核流程FalkorDB 保存可查询图谱。
- 可复现数据:仓库内置 PostgreSQL 与 FalkorDB 快照,下载后可恢复图谱数据。
- Docker 一键启动:`docker compose up -d --build` 同时启动 API、管理后台、PostgreSQL 和 FalkorDB。
- 旅行客服场景:内置固定线路、周边资源、酒店报价、车辆、行程推荐和图谱问答相关接口。
- 可扩展 Agent保留高德、网页、小红书、抖音、事件抽取、多源对齐、审计等 Agent 代码。
## 系统架构
```mermaid
flowchart LR
U["运营/标注/客服用户"] --> W["React 管理后台 /admin"]
W --> A["FastAPI 后端 /v1/admin"]
A --> P[("PostgreSQL\nkg_admin_new2")]
A --> F[("FalkorDB\nguiyang_new2\nguiyang_spatial_v1")]
A --> S["Schema 与采集脚本"]
A --> L["OpenAI 兼容 LLM\n可选"]
A --> M["高德地图 API\n可选"]
```
更详细的模块说明见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。
## 快速启动
需要先安装并启动 Docker Desktop。
```bash
git clone https://github.com/3452078359-xuexue/travel-knowledge-graph.git
cd travel-knowledge-graph
docker compose up -d --build
```
启动完成后打开:
```text
http://localhost:8102/admin
```
演示账号:
```text
用户名admin@example.com
密码change-me
```
常用服务端口:
| 服务 | 默认地址 |
| --- | --- |
| 管理后台/API | `http://localhost:8102` |
| 管理后台页面 | `http://localhost:8102/admin` |
| API 文档 | `http://localhost:8102/docs` |
| PostgreSQL | `localhost:5433` |
| FalkorDB Redis 协议 | `localhost:6380` |
| FalkorDB Browser | `http://localhost:3002` |
## 数据快照
仓库包含可恢复快照:
| 数据库 | 快照文件 | 默认库/图 |
| --- | --- | --- |
| PostgreSQL | `snapshots/postgres/kg_admin_new2.dump` | database `kg_admin`, schema `kg_admin_new2` |
| FalkorDB | `snapshots/falkordb/dump.rdb` | graph `guiyang_new2`, `guiyang_spatial_v1` |
当前快照包含约 `80609` 条空间 POI、`37457` 条候选实体,以及 FalkorDB 中的贵阳与旅行社相关图谱。详细结构见 [docs/reports/new2_current_kg_schema_snapshot.md](docs/reports/new2_current_kg_schema_snapshot.md) 和 [docs/DATA_SNAPSHOTS.md](docs/DATA_SNAPSHOTS.md)。
PostgreSQL 初始化脚本只会在 Docker 数据卷首次创建时执行。如果要丢弃本地修改并从仓库快照重新恢复:
```bash
docker compose down -v
docker compose up -d --build
```
## 验证命令
检查 API
```bash
curl http://localhost:8102/v1/admin/health
```
检查 PostgreSQL
```bash
docker compose exec postgres psql -U admin -d kg_admin \
-c "SELECT COUNT(*) FROM kg_admin_new2.amap_spatial_pois;"
```
检查 FalkorDB 图列表:
```bash
docker compose exec falkordb redis-cli -p 6379 GRAPH.LIST
```
## 项目结构
```text
.
├── app/ # FastAPI 后端、API 路由、Agent、图谱核心逻辑
├── admin-web/ # React + Vite 管理后台源码
├── docker/ # Docker 初始化脚本
├── docs/ # 项目说明、架构、部署、数据和报告文档
├── schema搭建/ # 图谱 schema、百科样例数据和 DSL 资料
├── scripts/ # 采集、构建、发布和快照导出脚本
├── snapshots/ # 可恢复数据库快照
├── Dockerfile # 后端镜像与前端静态资源构建
├── docker-compose.yml # 一键启动完整系统
├── .env.example # 本地配置模板
└── requirements.txt # Python 后端依赖
```
不会上传 `.env``node_modules/`、运行日志、浏览器缓存、本地 Docker 数据卷和临时文件。仓库保留系统源码、Docker 配置、schema、脚本、必要报告和数据库快照。
## 文档导航
| 文档 | 内容 |
| --- | --- |
| [docs/PROJECT_OVERVIEW.md](docs/PROJECT_OVERVIEW.md) | 系统定位、业务能力和功能地图 |
| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | 容器、后端、前端和数据架构 |
| [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md) | Docker 部署、端口、环境变量和常见问题 |
| [docs/DATA_SNAPSHOTS.md](docs/DATA_SNAPSHOTS.md) | 数据快照、恢复、重导出和校验 |
| [docs/API_REFERENCE.md](docs/API_REFERENCE.md) | API 分组、常用接口和调用示例 |
| [docs/MAINTENANCE.md](docs/MAINTENANCE.md) | 维护流程、发布检查和仓库边界 |
| [CONTRIBUTING.md](CONTRIBUTING.md) | 开发参与和提交规范 |
| [SECURITY.md](SECURITY.md) | 演示账号、密钥和生产安全建议 |
| [CHANGELOG.md](CHANGELOG.md) | 版本记录 |
## 本地开发
后端开发:
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python -m uvicorn app.main:app --host 0.0.0.0 --port 8102 --reload
```
前端开发:
```bash
cd admin-web
npm install
npm run dev
```
前端构建产物会输出到 `app/static/admin/`Docker 镜像构建时会自动完成这一步。
## 更新快照
如果本机已有 `zn-kg-new2-postgres``zn-kg-new2-falkordb` 容器,并且想把最新数据重新导出到仓库:
```bash
bash scripts/export_snapshots.sh
```
然后提交 `snapshots/` 中更新后的 dump 文件即可。快照文件接近 GitHub 单文件建议上限,更新前请先确认文件大小不超过 GitHub 的 100 MB 单文件限制。
## 生产使用提醒
默认账号、数据库密码和 `AUTH_SECRET` 仅用于演示。正式部署前请修改 `.env` 或 compose 环境变量,并为 LLM、高德等外部服务单独配置密钥。更多建议见 [SECURITY.md](SECURITY.md)。