# ai_quote_system **Repository Path**: geogy/ai_quote_system ## Basic Information - **Project Name**: ai_quote_system - **Description**: 使用Claude Code开发的AI辅助报价系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: beifen - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-25 - **Last Updated**: 2026-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

AI 辅助报价系统

# 仓库地址 https://gitee.com/geogy/ai_quote_system # 关于 基于 AI 的智能核价平台,实现「图纸上传 → OCR 识别 → AI 物料匹配 → 人工复核 → 报价单生成」全流程自动化,替代传统人工核价模式。 ## 功能特性 - **图纸上传与 OCR 识别**:支持 PDF/JPG 格式上传,调用 PaddleOCR-VL 自动识别图纸中的物料信息,低置信度字段高亮提示人工复核 - **AI 智能物料匹配**:基于 LLM(阿里云千问)对 OCR 结果结构化解析,在物料库中进行模糊匹配,相似度 ≥ 0.95 自动通过,低于阈值引导人工决策 - **报价单生成与管理**:支持草稿、修订、确认、发出全状态流转,可导出 PDF/Excel - **三类角色权限控制**:核价员(写)、销售助理(只读)、管理员(配置),基于 JWT 的 RBAC 权限体系 - **物料库管理**:Excel 批量导入/导出,别名映射,支持模糊搜索 - **操作审计日志**:全写操作留痕,记录操作人、时间、变更前后值 ## 环境要求 | 依赖 | 版本要求 | |------|---------| | Node.js | >= 20 | | pnpm | >= 10 | | PostgreSQL | >= 14 | ## 快速开始 ### 1. 安装依赖 ```bash pnpm install # 若没有 pnpm,请先使用 npm i pnpm -g 安装 ``` ### 2. 配置环境变量 修改 /backend/.env.dev 文件,填写自己的数据库连接信息,其他环境变量按需填写,(详情见[配置说明](#配置说明)) ```bash DB_TYPE = postgres # 数据库类型 DB_NAME = ai_quote_system # 数据库名称 DB_USER = postgres # 数据库用户名 DB_PASSWORD = 123654 # 数据库密码 DB_HOST = localhost # 数据库主机 DB_PORT = 5432 # 数据库端口 ``` ### 3. 初始化数据库 确保 PostgreSQL 已启动,数据库 `ai_quote_system` 已创建。TypeORM 在开发/测试环境会自动同步表结构。创建数据库 SQL 参考: ```sql -- 创建数据库(指定字符集为UTF8,排序规则兼容中文) CREATE DATABASE ai_quote_system WITH OWNER = postgres ENCODING = 'UTF8' LC_COLLATE = 'zh_CN.UTF-8' LC_CTYPE = 'zh_CN.UTF-8' TABLESPACE = pg_default CONNECTION LIMIT = -1 TEMPLATE = template0; ``` 初始化管理员账号: ```bash pnpm seed ``` ### 4. 启动开发服务 ```bash # 启动前端(默认 http://localhost:5173) pnpm dev # 启动后端(默认 http://localhost:3000) pnpm dev:api ``` ## 常用命令 所有命令均在项目根目录执行: ```bash pnpm dev # 启动前端开发服务器 pnpm dev:api # 启动后端开发服务器(NODE_ENV=dev) pnpm dev:test # 启动后端测试服务器(NODE_ENV=test) pnpm build # 构建前端 + 后端 pnpm type-check # 前后端类型检查 pnpm format # 格式化所有代码 pnpm lint # 后端 ESLint 检查 pnpm test # 运行后端单元测试 pnpm test:e2e # 运行后端 E2E 测试 pnpm seed # 初始化管理员账号 ``` 子包单独命令: ```bash pnpm -F frontend dev pnpm -F backend start:dev ``` ## 目录结构 ``` ai_quote_system/ ├── package.json # monorepo 根,聚合所有脚本 ├── pnpm-workspace.yaml # 工作区声明 ├── pnpm-lock.yaml # 统一锁文件 │ ├── frontend/ # Vue 3 + Vite 前端 │ └── src/ │ ├── api/ # Axios 接口封装 │ ├── components/ # 公共组件 │ ├── router/ # Vue Router 路由配置(含角色守卫) │ ├── stores/ # Pinia 状态管理 │ ├── utils/ # 工具函数(含 Axios 实例) │ └── views/ # 页面视图 │ ├── orders/ # 客户订单 │ ├── drawing/ # 图纸上传与 OCR 复核 │ ├── workbench/ # AI 匹配工作台 │ ├── quotation/ # 报价单管理 │ ├── material/ # 物料库 │ ├── user/ # 用户管理 │ └── audit/ # 操作日志 │ ├── backend/ # NestJS 11 后端 │ └── src/ │ ├── auth/ # JWT 认证 │ ├── users/ # 用户管理 │ ├── orders/ # 客户订单 │ ├── drawings/ # 图纸管理 │ ├── quotes/ # 报价单 │ ├── materials/ # 物料库 │ ├── ocr/ # OCR 识别服务 │ ├── llm/ # LLM 调用封装 │ ├── matching-engine/ # AI 匹配引擎 │ ├── audit-log/ # 操作审计日志 │ └── database/ # 数据库初始化与 Seed │ ├── docs/ # 需求与设计文档 └── openspec/ # OpenSpec 变更记录 ``` ## 配置说明 后端按 `NODE_ENV` 加载环境文件:`.env`(通用)+`.env.dev` / `.env.test` / `.env.prod`(覆盖)。 ### 数据库(必填) ```env DB_TYPE=postgres DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_PASSWORD=your_password DB_NAME=ai_quote_system ``` ### 认证(必填) ```env JWT_SECRET=your_strong_jwt_secret SERVER_PORT=3000 THITE_LIST=http://localhost:5173 # CORS 白名单,多个用逗号分隔 ``` ### AI 服务(按需填写) ```env # Anthropic Claude(物料匹配) ANTHROPIC_API_KEY=sk-ant-... # 百度 PaddleOCR-VL(图纸识别) PADDLE_OCR_API_KEY=your_key PADDLE_OCR_SECRET_KEY=your_secret # 阿里云百炼/千问(OCR 结构化解析) DASHSCOPE_API_KEY=sk-... DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 ``` ### 前端环境变量 在 `frontend/` 目录下创建 `.env.local`: ```env VITE_API_BASE_URL=http://localhost:3000 ``` ## 技术栈 **前端**:Vue 3 · Vite · Element Plus · Pinia · Vue Router · Axios · TypeScript **后端**:NestJS 11 · TypeORM · PostgreSQL · Passport JWT · TypeScript **AI 服务**:Anthropic Claude API · 阿里云千问 · 百度 PaddleOCR-VL **工具链**:pnpm Workspace · Prettier · ESLint · Jest