# 桥梁技术状况评定系统 **Repository Path**: lrt99/qiaoliang ## Basic Information - **Project Name**: 桥梁技术状况评定系统 - **Description**: 自己用AI写的桥梁技术状况评定系统,功能较完善,源码。大家可以自行下载然后根据需求定制修改 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-19 - **Last Updated**: 2026-08-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 公路桥梁技术状况评定在线应用 依据《公路桥梁技术状况评定标准》**JTG/T H21—2011** 的桥梁技术状况评定 Web 应用。 支持向导式录入、下拉联动、病害记录、5 类控制指标校核、自动评分与 Excel 导出, 并预留缺陷图片 AI 甄别接口,便于后期扩展。 ## 技术栈 - **服务端**:Node.js(内置 `node:sqlite`,无需原生编译)+ Express + Multer - **数据库**:SQLite(`data/bridge.db`),单文件,便于迁移与后期移植 APP - **前端**:原生 HTML/CSS/JS 单页应用(`public/`),无构建步骤 - **导出**:Node.js + [exceljs](https://www.npmjs.com/package/exceljs) 生成 Excel(**纯 Node,无任何 Python 依赖**,便于 Node-only 部署/移植 APP) ## 目录结构 ``` app/ ├── server.js # Express 入口:路由、评分、导出、图片与 AI 接口 ├── templates.js # 桥型/部件/病害配置(下拉联动数据源) ├── assess.js # JTG/T H21 评分计算(构件→部件→部位→全桥) ├── vision.js # 缺陷图像 AI 甄别(OpenAI 兼容多模态模型) ├── db.js # SQLite 数据库层(建表 + 兼容性迁移) ├── export_bridge.js # Excel 导出(Node 原生,exceljs,含 DP 自动公式与样式) ├── package.json ├── public/ # 前端静态资源 │ ├── index.html │ ├── styles.css │ └── app.js ├── data/ # SQLite 数据库文件(自动生成) ├── uploads/ # 缺陷图片(自动生成) └── exports/ # 导出的 Excel(自动生成) ``` ![输入图片说明](image.png) ![输入图片说明](image2.png) ## 运行 ```bash 先安装nodejs 然后在项目目录下打开CMD运行下面命令 npm install # 安装 express、multer、exceljs 之后每次启动在项目目录下打开CMD运行下面命令 node server.js # 默认端口 3000,或 PORT=8080 node server.js ``` 浏览器打开 http://localhost:3000 > 整个应用仅依赖 Node.js 运行时与浏览器,导出 Excel 也使用纯 Node(exceljs), > 不再需要任何 Python 环境,适合 Node-only 部署与后期打包为 APP。 ## 交互设计(效率优先) - **桥型联动**:新建时选择“桥梁类型”(梁式桥 / 各类拱桥 / 悬索桥 / 斜拉桥), 系统按标准表 4.2.x 自动生成该桥型对应的**部位→部件**结构及权重、主要/次要标记。 - **下拉选择最大化**:部件、缺陷类型、缺陷标度、五类指标等均以下拉提供, 选缺陷类型后自动带出“最高标度类别”,无需记忆标准表号。 - **局部↔整体关联**:填完各部件构件数 n 与病害后,系统按公式自动向上汇总: 构件评分 → 部件评分(含主要部件最差构件控制)→ 部位评分 → 全桥评分 Dr,并判定 1~5 类。 - **五类控制指标**:14 条危机桥梁安全的情形逐条勾选,命中即整桥判 5 类。 - **Excel 导出**:一键导出含概况、构件数量、缺损记录(DP 自动查表)、 五类指标、自动评分结果的评定报告。 ## 图片 AI 甄别(已接入真实多模态模型) 把构件缺陷照片交给视觉大模型,自动识别 **缺陷类型 + 缺陷标度(1~5) + 定量描述 + 置信度**, 回写后一键“采用”即可填充病害录入表单(类型/标度/描述),并自动重算 DP 扣分值。 ### 工作流 未配置真实视觉模型 API 时,页面只提供 **上传照片**,识别、重识别和采用 AI 建议均不可用。 配置成功后: 1. 在「病害录入」卡片点击 **+ 上传并识别**(或新增病害时附图)→ 图片上传并自动调用模型; 2. 卡片显示 **🤖 AI 建议**(类型 / 标度 / 置信度 / 描述); 3. 点击 **采用** → 写入该缺陷并自动重算 DP;或 **忽略** / **重识别**。 ### 接入真实模型(OpenAI 兼容协议) 复制 `.env.example` 为 `.env`,填写后重启: ```bash VISION_PROVIDER=openai # OpenAI 兼容协议 VISION_API_KEY=sk-xxx # 你的 API Key VISION_BASE_URL=https://api.openai.com/v1 # 见下方可选端点 VISION_MODEL=gpt-4o-mini # 视觉模型名 ``` 该接口采用 **OpenAI 兼容协议**,可一键切换以下(及本地)服务商,无需改代码: | 服务商 | VISION_BASE_URL | 常用模型 | |--------|-----------------|----------| | OpenAI | `https://api.openai.com/v1` | `gpt-4o` / `gpt-4o-mini` | | 阿里通义千问 | `https://dashscope.aliyuncs.com/compatible-mode/v1` | `qwen-vl-max` / `qwen-vl-plus` | | 智谱 GLM | `https://open.bigmodel.cn/api/paas/v4` | `glm-4v-plus` | | DeepSeek | `https://api.deepseek.com/v1` | `deepseek-vl2` | | Moonshot | `https://api.moonshot.cn/v1` | 视觉模型 | | 本地 LM Studio | `http://127.0.0.1:1234/v1` | 视所加载模型 | | 本地 Ollama(视觉) | `http://127.0.0.1:11434/v1` | 视所加载模型 | > `VISION_PROVIDER` 不是 `openai`,或 `VISION_API_KEY` 为空时,后端会以 HTTP 503 拒绝识别请求,避免产生模拟识别结果。 ### 识别质量 `vision.js` 内置了基于 JTG/T H21—2011 的强提示词:限定模型只能从**该构件允许的病害类型** 中选择、按 1~5 类标度定义判定、要求中文定量描述(裂缝长宽、锈蚀/剥落面积占比等), 并对返回 JSON 做健壮解析与标度钳制(不允许超过该缺陷的“最高标度类别”)。 ## 主要 API | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/templates` | 桥型/部件/病害/五类指标配置 | | GET/POST | `/api/bridges` | 桥梁列表 / 新建(自动生成部件) | | GET/PUT/DELETE | `/api/bridges/:id` | 桥梁详情 / 更新(含五类指标)/ 删除 | | PUT | `/api/components/:id` | 更新部件构件数 n | | POST/PUT/DELETE | `/api/components/:id/defects`、`/api/defects/:id` | 病害增改删 | | POST | `/api/defects/:id/photos` | 上传缺陷图片 | | GET | `/api/photos/:filename` | 读取图片 | | GET | `/api/vision/info` | 当前视觉模型供应商/配置状态 | | POST | `/api/photos/:id/assess` | AI 甄别:调用多模态模型识别缺陷类型/标度 | | POST | `/api/photos/:id/apply` | 采用 AI 建议,写入缺陷并重算 DP | | POST | `/api/photos/:id/status` | 标记 AI 建议状态(ignored 等) | | GET | `/api/bridges/:id/assessment` | 计算评分 Dr 与等级 | | GET | `/api/bridges/:id/export` | 导出 Excel | | GET | `/api/bridges/:id/export-docx` | 导出 DOCX 评定报告(含缺陷照片) | ## 移植为 APP 的路径 当前架构为「静态前端 + REST API + 服务端 SQLite」,天然适合改造为移动端: 1. **前端**:`public/` 为纯静态 SPA,可用 [Capacitor](https://capacitorjs.com/) 直接打包为 iOS/Android 应用。 2. **API**:REST 接口可部署到云端或局域网服务,APP 通过 HTTPS 调用。 3. **数据库**:移动端本地存储改用 `@capacitor-community/sqlite`(同样是 SQLite), 复用本项目的表结构与 `assess.js` 评分逻辑(可改写为前端/原生计算)。 4. **图片甄别**:移动端拍摄的缺陷照片直接 POST 到 `/api/photos` 接口,由服务端统一调度 AI 模型。 ## 评分算法(JTG/T H21—2011) - 构件评分:公式 4.1.1,多缺陷扣分值 DP 从大到小排序后按 √(x) 递减叠加;任一 DP=100 则该构件为 0。 - 部件评分:公式 4.1.2,用构件均值与最差值按 t 值表(表 4.1.2)折减; **主要部件**初算部件评分 P_ci 位于 [0,40) 时,取最差构件评分(最差构件控制)。 - 部位评分:公式 4.1.3,各部件按权重加权(未设置部件权重按比例分配)。 - 全桥评分:公式 4.1.4,`Dr = BDCI×0.20 + SPCI×0.40 + SBCI×0.40`。 - 等级:表 4.1.5(1 类≥95 … 5 类<40);命中 5 类控制指标(第 4.3 节)直接判 5 类。 ![输入图片说明](shot5_result.png)