Polish project documentation and runtime config

This commit is contained in:
2026-06-09 10:22:59 +08:00
parent 5f061295d8
commit 0594fc9f8c
43 changed files with 1001 additions and 97 deletions

91
docs/API_REFERENCE.md Normal file
View File

@@ -0,0 +1,91 @@
# API 说明
FastAPI 会自动生成交互式 API 文档。启动服务后访问:
```text
http://localhost:8102/docs
```
所有后台接口统一挂载在:
```text
/v1/admin
```
## 常用接口
| 接口 | 方法 | 说明 |
| --- | --- | --- |
| `/v1/admin/health` | `GET` | 健康检查 |
| `/v1/admin/auth/login` | `POST` | 管理员登录 |
| `/v1/admin/auth/me` | `GET` | 当前登录用户 |
| `/v1/admin/projects` | `GET/POST` | 项目管理 |
| `/v1/admin/ontology-schemas/current` | `GET` | 当前 schema |
| `/v1/admin/source-profiles` | `GET/POST/PATCH` | 数据源管理 |
| `/v1/admin/batches` | `GET` | 批次管理 |
| `/v1/admin/entities` | `GET` | 候选实体列表 |
| `/v1/admin/conflicts` | `GET` | 冲突列表 |
| `/v1/admin/publish-jobs` | `GET/POST` | 发布任务 |
| `/v1/admin/graph/overview` | `GET` | 图谱概览 |
| `/v1/admin/graph/query` | `POST` | 图谱查询 |
| `/v1/admin/plaza/overview` | `GET` | 图谱广场概览 |
| `/v1/admin/manual-ingest/extract` | `POST` | 手动抽取 |
| `/v1/admin/travel/assistant-query` | `POST` | 旅行客服问答 |
| `/v1/admin/super-agent/run` | `POST` | Super Agent 任务 |
| `/v1/admin/roles` | `GET/POST` | 角色管理 |
| `/v1/admin/users` | `GET/POST` | 用户管理 |
| `/v1/admin/areas/tree` | `GET` | 区域树 |
| `/v1/admin/notifications` | `GET` | 通知列表 |
## 登录示例
```bash
curl -s http://localhost:8102/v1/admin/auth/login \
-H 'Content-Type: application/json' \
-d '{"username":"admin@example.com","password":"change-me"}'
```
返回中包含 `access_token`,后续接口可使用:
```bash
TOKEN="上一步返回的 access_token"
curl http://localhost:8102/v1/admin/auth/me \
-H "Authorization: Bearer $TOKEN"
```
## 图谱查询示例
```bash
curl http://localhost:8102/v1/admin/graph/overview
```
```bash
curl http://localhost:8102/v1/admin/graph/query \
-H 'Content-Type: application/json' \
-d '{"query":"MATCH (n) RETURN n LIMIT 10"}'
```
## 旅行客服问答示例
```bash
curl http://localhost:8102/v1/admin/travel/assistant-query \
-H 'Content-Type: application/json' \
-d '{"question":"黄小西三日游多少钱?"}'
```
## 前端调用
React 管理后台通过 `admin-web/src/api.ts` 访问同源 API。Docker 部署时前端和 API 同在 `http://localhost:8102`,因此无需额外配置跨域代理。
## 外部服务
LLM 和高德地图相关能力默认关闭或留空。启用前需要在 `.env` 或 Docker Compose 环境变量中配置:
- `LLM_API_BASE`
- `LLM_API_KEY`
- `LLM_MODEL`
- `LLM_EXTRACTION_ENABLED=true`
- `AMAP_WEB_KEY`
- `AMAP_JS_KEY`
- `AMAP_SECURITY_JSCODE`
- `GAODE_CRAWLER_PATH`

81
docs/ARCHITECTURE.md Normal file
View File

@@ -0,0 +1,81 @@
# 架构说明
系统采用前后端分离加双数据库架构。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` | 保存后台业务数据、用户权限、项目、候选实体、审核记录和任务 |
| `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/acquisition/` | 数据源、批次和冲突工作台 |
| `admin-web/src/panels/review/` | 证据质量、字段审核、专家签核和资产库 |
| `admin-web/src/panels/modeling/` | Schema、词表和健康检查 |
| `admin-web/src/panels/publish/` | 发布与回滚 |
| `admin-web/src/panels/system/` | 用户、权限、区域、通知、Agent 设置和日志 |
## 数据层
PostgreSQL 和 FalkorDB 承担不同职责:
- PostgreSQL结构化管理数据、审核过程数据、用户权限、任务、来源、候选实体和证据。
- 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` 作为只读挂载提供给数据库容器。

103
docs/DATA_SNAPSHOTS.md Normal file
View File

@@ -0,0 +1,103 @@
# 数据快照说明
仓库内置数据库快照,目的是让用户 clone 后可以直接恢复 `new2` 图谱系统,而不需要重新采集、抽取和发布数据。
## 快照文件
| 文件 | 类型 | 用途 |
| --- | --- | --- |
| `snapshots/postgres/kg_admin_new2.dump` | PostgreSQL custom dump | 恢复后台业务库、账号、项目、候选实体、审核数据等 |
| `snapshots/falkordb/dump.rdb` | FalkorDB RDB | 恢复图数据库中的业务图和空间图 |
默认数据:
| 项 | 值 |
| --- | --- |
| PostgreSQL database | `kg_admin` |
| PostgreSQL schema | `kg_admin_new2` |
| FalkorDB 业务图 | `guiyang_new2` |
| FalkorDB 空间图 | `guiyang_spatial_v1` |
| 空间 POI | 约 `80609` 条 |
| 候选实体 | 约 `37457` 条 |
## 恢复流程
Docker Compose 首次启动时会自动恢复:
1. `postgres` 容器创建数据卷。
2. `docker/postgres-init/01-restore-snapshot.sh` 使用 `pg_restore` 恢复 PostgreSQL 快照。
3. 脚本把演示管理员密码重置为 `change-me`
4. `falkordb-seed` 容器把 `dump.rdb` 复制到 FalkorDB 数据卷。
5. `falkordb` 容器读取 RDB 并加载图数据。
如果数据卷已存在,初始化不会重复执行。需要重置时运行:
```bash
docker compose down -v
docker compose up -d --build
```
## 校验数据
PostgreSQL
```bash
docker compose exec postgres psql -U admin -d kg_admin \
-c "SELECT COUNT(*) FROM kg_admin_new2.amap_spatial_pois;"
```
候选实体:
```bash
docker compose exec postgres psql -U admin -d kg_admin \
-c "SELECT COUNT(*) FROM kg_admin_new2.candidate_entities;"
```
FalkorDB 图列表:
```bash
docker compose exec falkordb redis-cli -p 6379 GRAPH.LIST
```
快照文件哈希:
```bash
shasum -a 256 snapshots/postgres/kg_admin_new2.dump snapshots/falkordb/dump.rdb
```
当前发布快照的参考哈希:
```text
c70a3fe2730cd40a96e729097cef1eb39c66498371b88b2e36e985c923043e75 snapshots/postgres/kg_admin_new2.dump
dde96ac99bff58d18bb00e84939772d8a4efc4893aeeae02329aa893ae51f247 snapshots/falkordb/dump.rdb
```
## 重新导出快照
如果本机仍保留 `new2` 原始容器,可以运行:
```bash
bash scripts/export_snapshots.sh
```
脚本默认从以下容器导出:
| 容器 | 用途 |
| --- | --- |
| `zn-kg-new2-postgres` | 导出 `kg_admin_new2` schema |
| `zn-kg-new2-falkordb` | 触发 `BGSAVE` 并复制 `dump.rdb` |
导出后请验证:
```bash
ls -lh snapshots/postgres/kg_admin_new2.dump snapshots/falkordb/dump.rdb
shasum -a 256 snapshots/postgres/kg_admin_new2.dump snapshots/falkordb/dump.rdb
```
## 仓库边界
`data/`、浏览器 profile、日志、缓存和本地 Docker 数据卷不进入 Git。它们是运行过程或采集过程中的临时产物不适合作为 GitHub 项目内容。系统可复现所需的数据已经收敛到 `snapshots/``schema搭建/``docs/` 和源码目录中。
## GitHub 文件大小提醒
GitHub 单文件硬限制为 100 MB。当前两个快照均低于该限制。后续如果快照继续增大建议改用 Git LFS、Release Asset 或对象存储,并在 README 中保留下载和恢复说明。

169
docs/DEPLOYMENT.md Normal file
View File

@@ -0,0 +1,169 @@
# 部署指南
本文档说明如何用 Docker 启动、重置、配置和排查旅行知识图谱管理系统。
## 环境要求
- Docker Desktop 或 Docker Engine
- Docker Compose v2
- 至少 4 GB 可用内存
- 至少 3 GB 可用磁盘空间
## 一键启动
```bash
docker compose up -d --build
```
启动后访问:
```text
http://localhost:8102/admin
```
默认账号:
```text
admin@example.com / change-me
```
## 首次启动会发生什么
1. 构建 API 镜像,并打包 React 管理后台。
2. 创建 PostgreSQL 数据卷。
3. PostgreSQL 初始化脚本恢复 `snapshots/postgres/kg_admin_new2.dump`
4. `falkordb-seed``snapshots/falkordb/dump.rdb` 写入 FalkorDB 数据卷。
5. FastAPI 服务等待 PostgreSQL 和 FalkorDB 健康后启动。
## 常用命令
查看服务状态:
```bash
docker compose ps
```
查看 API 日志:
```bash
docker compose logs -f api
```
停止服务:
```bash
docker compose down
```
停止并删除数据卷,下一次启动将重新恢复快照:
```bash
docker compose down -v
docker compose up -d --build
```
## 端口配置
可以在启动时覆盖端口:
```bash
API_PORT=18102 \
POSTGRES_PORT=15433 \
FALKORDB_PORT=16380 \
FALKORDB_BROWSER_PORT=13002 \
docker compose up -d --build
```
默认端口:
| 变量 | 默认值 | 说明 |
| --- | --- | --- |
| `API_PORT` | `8102` | FastAPI 与管理后台 |
| `POSTGRES_PORT` | `5433` | PostgreSQL 映射端口 |
| `FALKORDB_PORT` | `6380` | FalkorDB Redis 协议端口 |
| `FALKORDB_BROWSER_PORT` | `3002` | FalkorDB Browser |
## 环境变量
Docker Compose 已提供可运行默认值。生产部署时建议改成 `.env` 文件或部署平台的环境变量。
| 变量 | 说明 |
| --- | --- |
| `DATABASE_URL` | 后端连接 PostgreSQL 的 URL |
| `DB_SCHEMA` | 默认 `kg_admin_new2` |
| `DB_MIGRATIONS_ENABLED` | 快照部署默认 `false` |
| `FALKORDB_HOST` | Docker 内默认 `falkordb` |
| `FALKORDB_GRAPH` | 默认业务图 `guiyang_new2` |
| `AUTH_SECRET` | JWT 签名密钥,生产必须替换 |
| `AUTH_DEFAULT_USERNAME` | 默认管理员用户名 |
| `AUTH_DEFAULT_PASSWORD` | 默认管理员密码 |
| `LLM_API_BASE` | OpenAI 兼容模型服务地址,可选 |
| `LLM_API_KEY` | LLM 密钥,可选 |
| `LLM_EXTRACTION_ENABLED` | 是否启用 LLM 抽取 |
| `AMAP_WEB_KEY``AMAP_JS_KEY` | 高德地图密钥,可选 |
| `GAODE_CRAWLER_PATH` | 外部高德采集脚本路径,可选 |
| `TRAVEL_AGENCY_SOURCE_ROOT` | 旅行社原始资料目录,仅运行采集/构图脚本时需要 |
| `TRAVEL_DELIVERY_ROOT` | POI 交付 CSV 目录,仅运行采集/增强脚本时需要 |
| `TRAVEL_KG_EXPORT_ROOT` | 采集/构图脚本导出目录 |
## 健康检查
API
```bash
curl http://localhost:8102/v1/admin/health
```
PostgreSQL
```bash
docker compose exec postgres pg_isready -U admin -d kg_admin
```
FalkorDB
```bash
docker compose exec falkordb redis-cli -p 6379 PING
```
## 常见问题
### 管理后台 404
确认镜像已重新构建:
```bash
docker compose up -d --build api
```
前端静态资源由 FastAPI 挂载在 `/admin`,直接访问根路径不会进入后台。
### 数据没有恢复
PostgreSQL 初始化脚本只在数据卷首次创建时运行。如果已经创建过数据卷,需要先删除卷:
```bash
docker compose down -v
docker compose up -d --build
```
### 端口被占用
使用端口变量覆盖默认端口,例如:
```bash
API_PORT=18102 docker compose up -d
```
### 登录失败
初始化脚本会把 `admin@example.com` 的演示密码设置为 `change-me`。如果仍失败,先确认 PostgreSQL 已重新恢复快照,再查看 API 日志。
## 生产加固建议
- 修改 `AUTH_SECRET`、数据库密码和默认管理员密码。
- 不要把真实 `.env`、LLM key、高德 key 提交到仓库。
- 用反向代理提供 HTTPS。
- 给 PostgreSQL 和 FalkorDB 配置持久化备份。
- 如果面向公网,限制数据库端口暴露,只暴露 API/前端。
- 开启日志采集和容器监控。

101
docs/MAINTENANCE.md Normal file
View File

@@ -0,0 +1,101 @@
# 维护指南
本文档记录项目维护、发布和提交前检查流程,帮助仓库长期保持可下载、可启动、可理解。
## 提交前检查
```bash
git status --short
python -m compileall app
cd admin-web && npm run build
cd ..
docker compose config
```
如果修改 Docker 或数据库快照,建议再做一次完整启动验证:
```bash
API_PORT=18102 \
POSTGRES_PORT=15433 \
FALKORDB_PORT=16380 \
FALKORDB_BROWSER_PORT=13002 \
docker compose up -d --build
curl http://localhost:18102/v1/admin/health
docker compose down -v
```
## 更新系统代码
- 后端 API 放在 `app/api/`
- Agent 和抽取流程放在 `app/agents/`
- 图谱核心能力放在 `app/kg_core/`
- 前端页面和面板放在 `admin-web/src/`
- 配置项统一从 `app/config.py` 和环境变量读取。
历史采集/构图脚本的本地资料路径统一在 `scripts/common_paths.py` 中配置,默认指向仓库内 `data/source``data/exports`。需要接入自己的原始资料时,可通过 `TRAVEL_AGENCY_SOURCE_ROOT``TRAVEL_DELIVERY_ROOT``TRAVEL_KG_EXPORT_ROOT``GAODE_CRAWLER_PATH` 覆盖。
新增功能时请同步更新:
- README 的功能说明或项目结构。
- `docs/API_REFERENCE.md` 中的接口列表。
- 需要运行环境变量时更新 `.env.example``docs/DEPLOYMENT.md`
## 更新图谱 schema
图谱 schema 和 DSL 资料主要放在 `schema搭建/`。如果 schema 已经发布到数据库或 FalkorDB建议同时更新
- schema 文件
- 发布脚本
- `docs/reports/new2_current_kg_schema_snapshot.md`
- 数据快照
## 更新数据快照
从本地 `new2` 容器导出:
```bash
bash scripts/export_snapshots.sh
```
导出后检查:
```bash
ls -lh snapshots/postgres/kg_admin_new2.dump snapshots/falkordb/dump.rdb
shasum -a 256 snapshots/postgres/kg_admin_new2.dump snapshots/falkordb/dump.rdb
```
快照更新后必须执行 Docker 恢复验证,确保新用户 clone 仓库后可以直接使用。
## 仓库不应包含
- `.env` 和真实密钥
- `node_modules/`
- Python 虚拟环境
- Playwright/浏览器 profile
- Docker 数据卷
- 临时日志、截图和缓存
- 超过 GitHub 限制的大文件
## 发布建议
成熟发布建议包含:
1. 代码和文档已提交。
2. Docker 可以从零构建。
3. PostgreSQL 和 FalkorDB 快照可以恢复。
4. 默认账号可以登录。
5. README 中的启动命令与端口正确。
6. GitHub 仓库首页可以看到系统定位、架构、数据和部署方式。
## 当前验证记录
本地已用非默认端口完成 Docker 验证:
- API 健康检查返回 `{"status":"ok"}`
- 管理后台 `/admin/` 返回 `200`
- PostgreSQL 恢复后 `kg_admin_new2.amap_spatial_pois``80609` 条。
- PostgreSQL 恢复后 `kg_admin_new2.candidate_entities``37457` 条。
- FalkorDB 可列出 `guiyang_new2``guiyang_spatial_v1` 等图。
- `admin@example.com / change-me` 登录成功。

58
docs/PROJECT_OVERVIEW.md Normal file
View File

@@ -0,0 +1,58 @@
# 系统介绍
旅行知识图谱管理系统是 `new2` 版本的城市与旅行领域知识图谱平台面向景区、旅行社、文旅运营和智能客服场景。系统把采集资料、百科文本、POI 空间数据、线路产品、酒店/餐饮/车辆等资源沉淀为可审核、可发布、可查询的图谱资产。
## 目标用户
- 文旅运营人员:查看图谱覆盖、数据质量、缺口和发布状态。
- 数据标注与审核人员:处理实体字段、证据来源、冲突合并和专家签核。
- 产品和线路人员:维护固定线路、景点组合、报价说明和资源约束。
- 智能客服研发人员:基于图谱接口构建线路问答、周边资源推荐和报价查询。
- 工程维护人员:通过 Docker、快照和脚本复现系统与数据。
## 核心能力
| 能力 | 说明 |
| --- | --- |
| 数据源与批次管理 | 管理来源、采集批次、原始记录和质量摘要 |
| 实体审核 | 查看候选实体、字段决策、证据链、审查历史和合并 |
| 图谱广场 | 汇总图谱规模、使用情况、健康告警和用户查询 |
| Schema 管理 | 管理 ontology schema、DSL、版本和发布记录 |
| 证据质量 | 聚合 POI 证据、资源质量和字段可信度 |
| 发布与回滚 | 创建发布任务、查看 diff、回滚图谱版本 |
| 城市空间图谱 | 使用高德 POI 与空间网格支持周边检索 |
| 旅行客服 Agent | 支持线路清单、线路匹配、线路报价、酒店资源、车辆和附近资源查询 |
| 权限与组织 | 内置角色、能力矩阵、用户和区域责任管理 |
## 典型业务流程
```mermaid
flowchart LR
A["采集/导入资料"] --> B["抽取候选实体"]
B --> C["字段证据与质量检查"]
C --> D["人工审核/冲突合并"]
D --> E["发布到 FalkorDB 图谱"]
E --> F["图谱查询/客服问答/运营分析"]
```
## 随仓库发布的内容
- 后端源码:`app/`
- 前端源码:`admin-web/`
- Docker 运行环境:`Dockerfile``docker-compose.yml``docker/`
- 图谱数据快照:`snapshots/postgres/``snapshots/falkordb/`
- 图谱 schema 与样例资料:`schema搭建/`
- 采集、构建、发布和快照脚本:`scripts/`
- 项目文档:`README.md``docs/`
## 默认演示数据
快照以 `new2` 本地系统为来源,包含贵阳/贵州旅行场景相关数据:
- PostgreSQL schema`kg_admin_new2`
- FalkorDB 主要图:`guiyang_new2`
- FalkorDB 空间图:`guiyang_spatial_v1`
- 空间 POI`80609`
- 候选实体:约 `37457`
这些数据随仓库一起发布,下载后通过 Docker 初始化脚本自动恢复。

View File

@@ -198,6 +198,6 @@ NEARBY_ATTRACTION -> 青岩古镇: 已对齐到 amap:B035300ESE
对应脚本:
```text
/Users/xuexue/new2/scripts/align_huaxi_kg_with_existing_graph.py
scripts/align_huaxi_kg_with_existing_graph.py
```

View File

@@ -4,7 +4,7 @@
已完成:
-`/Users/xuexue/new` 复制到 `/Users/xuexue/new2`
-`原 new 目录` 复制到 `项目根目录`
- 排除 `node_modules``.env``data``__pycache__`、运行产物。
- 将空间汇报材料和基准测试材料纳入 `docs/reports`

View File

@@ -2,7 +2,7 @@
## 文件复刻
`/Users/xuexue/new2` 已从 `/Users/xuexue/new` 完整补齐:
`项目根目录` 已从 `原 new 目录` 完整补齐:
- `.env`
- `admin-web/node_modules`

View File

@@ -1,7 +1,7 @@
# new2 当前知识图谱 Schema 快照
生成时间2026-05-28
项目目录:`/Users/xuexue/new2`
项目目录:`项目根目录`
## 1. 当前配置

View File

@@ -28,8 +28,8 @@
代码位置:
- `/Users/xuexue/new2/app/api/travel_assistant.py:1944`
- `/Users/xuexue/new2/app/api/travel_assistant.py:3082`
- `app/api/travel_assistant.py:1944`
- `app/api/travel_assistant.py:3082`
### 方法二:线路清单使用轻量图谱查询
@@ -47,8 +47,8 @@ TourProduct -> ProductDay -> RouteStop -> ScenicAttraction/SubAttraction
代码位置:
- `/Users/xuexue/new2/app/api/travel_assistant.py:1679`
- `/Users/xuexue/new2/app/api/travel_assistant.py:2975`
- `app/api/travel_assistant.py:1679`
- `app/api/travel_assistant.py:2975`
### 方法三:景区附近资源使用 NEARBY 关系直查
@@ -63,7 +63,7 @@ ScenicAttraction -> ATTRACTION_NEARBY_RESOURCE -> Restaurant
代码位置:
- `/Users/xuexue/new2/app/api/travel_assistant.py:2013`
- `app/api/travel_assistant.py:2013`
### 方法四:费用资源兼容两条查询路径
@@ -86,7 +86,7 @@ ScenicAttraction -> ATTRACTION_HAS_ITEM -> TravelItem
代码位置:
- `/Users/xuexue/new2/app/api/travel_assistant.py:2196`
- `app/api/travel_assistant.py:2196`
### 方法五:推荐问题才走完整图谱排序
@@ -114,8 +114,8 @@ NEARBY
代码位置:
- `/Users/xuexue/new2/app/api/travel_assistant.py:1536`
- `/Users/xuexue/new2/app/api/travel_assistant.py:3082`
- `app/api/travel_assistant.py:1536`
- `app/api/travel_assistant.py:3082`
## 3. 当前已经验证的效果
@@ -146,10 +146,10 @@ NEARBY
代码位置:
- `/Users/xuexue/new2/admin-web/src/panels/plaza/TravelAgencyAssistantPanel.tsx:131`
- `/Users/xuexue/new2/admin-web/src/panels/plaza/TravelAgencyAssistantPanel.tsx:156`
- `/Users/xuexue/new2/admin-web/src/panels/plaza/TravelAgencyAssistantPanel.tsx:182`
- `/Users/xuexue/new2/admin-web/src/panels/plaza/TravelAgencyAssistantPanel.tsx:218`
- `admin-web/src/panels/plaza/TravelAgencyAssistantPanel.tsx:131`
- `admin-web/src/panels/plaza/TravelAgencyAssistantPanel.tsx:156`
- `admin-web/src/panels/plaza/TravelAgencyAssistantPanel.tsx:182`
- `admin-web/src/panels/plaza/TravelAgencyAssistantPanel.tsx:218`
## 5. 是否满足当前原型需求