Next TJWater Drainage Frontend

排水管网 WebGIS Agent 工作台。界面以地图为主视图,集成排水管渠、检查井、排放口、泵、SCADA 监测、异常工况、Agent 对话和受控前端动作。

项目已从 Next.js App Router 迁移到 Vite、React 19、TypeScript 和 Tailwind CSS 4。地图基于 MapLibre GL,流向效果使用 deck.gl,Agent 消息支持代码高亮、数学公式和 Mermaid 图表。

主要功能

  • 排水管网 MVT 图层和 SCADA 监测点展示
  • 地图缩放、测量、绘制、图层控制、要素定位和视图导出
  • 异常工况列表、详情分析和调度任务跟踪
  • Agent 流式对话、推荐问题、会话管理和权限批准
  • 经过 Schema 校验的 UI Envelope 和前端动作执行
  • 运行时配置注入、MSW 本地模拟和开发面板

开发环境

corepack enable
pnpm install
cp .env.example .env.local
pnpm dev

开发服务器默认地址为 http://127.0.0.1:5173。完整对话功能需要同时启动 Agent 后端。

运行时配置

浏览器配置通过 /runtime-config.js 注入,不使用 VITE_NEXT_PUBLIC_ 前缀。开发环境可在 .env.local 中设置:

变量 默认值 说明
DRAINAGE_MAPBOX_ACCESS_TOKEN Mapbox 底图访问令牌
DRAINAGE_MAP_URL https://geoserver.waternetwork.cn/geoserver GeoServer 服务地址
DRAINAGE_GEOSERVER_WORKSPACE wenzhou 排水数据工作区
DRAINAGE_AGENT_API_BASE_URL http://127.0.0.1:8787 浏览器访问的 Agent 服务地址
DRAINAGE_ENABLE_DEV_PANEL false 是否显示开发面板
DRAINAGE_ENABLE_MSW false 是否启用浏览器端 Mock Service Worker
排水要素定位在浏览器中直接请求 GeoServer WFS,因此部署环境需保留 GeoServer CORS。所有 Agent 请求由浏览器直接访问 DRAINAGE_AGENT_API_BASE_URL。语音播放请求同源 /api/tts/edge;开发和预览由 Vite 中间件处理,生产镜像会启动仅监听容器回环地址的 Edge TTS 适配器。无需配置 TTS 服务 URL,可选的服务端变量 EDGE_TTS_VOICE 用于覆盖默认中文语音。

常用命令

pnpm dev          # 启动 Vite 开发服务器
pnpm build        # 类型检查并生成生产构建
pnpm preview      # 预览生产构建
pnpm typecheck    # 运行 TypeScript 检查
pnpm lint         # 运行 ESLint
pnpm format       # 使用 Prettier 格式化文件
pnpm test         # 运行 Vitest 单元测试
pnpm test:watch   # 监听模式运行单元测试
pnpm test:browser # 运行 Playwright 浏览器测试

Docker

生产镜像使用 Node.js 构建静态文件,并通过 Caddy 提供服务。容器启动时根据环境变量生成 /runtime-config.js,同时启动仅监听容器回环地址的 Edge TTS 适配器。

docker build -t next-tjwater-drainage-frontend .
docker run --rm -p 8080:80 --env-file .env.local next-tjwater-drainage-frontend

启动后访问 http://localhost:8080

项目结构

src/
├── app/                 应用入口、Provider 和基础浏览器回归测试
├── features/
│   ├── agent/           Agent 协议、会话、动作执行和界面组件
│   ├── map/             地图核心控件
│   └── workbench/       排水业务、SCADA、调度面板和地图编排
├── mocks/               MSW handlers 和测试数据
├── shared/              通用 UI、AI 元素、配置和工具
├── test/                Vitest 测试环境
└── styles.css           Tailwind CSS 入口和全局样式

产品级浏览器回归仍位于 tests/browser/

构建说明

生产构建可能提示 deck.gl 和 luma.gl 的第三方循环分块,以及 Shiki、Mermaid 语言包超过 Rollup 默认阈值。只要构建成功,这些提示不影响静态产物生成。

S
Description
No description provided
Readme
645 KiB
Languages
TypeScript 96.8%
CSS 1.9%
JavaScript 1.1%
Shell 0.1%