住房公积金问数智能体 — 系统详细设计文档

文档版本:V1.6 · 基于文档:PRD V1.0 / 产品功能清单(开发排期版)/ 技术架构定稿 / 页面原型文字说明
技术底座:Hermes 0.19.0 + Nuxt3(Vue3) + FastAPI + 文件化存储(MD/JSON) + DeepSeek API


1 文档概述

修订记录

版本日期修订内容修订人
V1.0初始版本初次创建,整合全部设计输入
V1.12025-07-17新增「初始预置管理员」说明,补充部署首次启动流程Reasonix
V1.22025-07-17新增微信扫码新用户自动注册为「游客」角色设计,含角色配置、权限矩阵、用户字段Reasonix
V1.32025-07-17新增第11章「Token 经济设计」;明确文件标准映射和文档检索均为本地规则实现,不调用 LLMReasonix
V1.42025-07-17新增第3章「智能体引擎调用设计」,含 Hermes 对接/不对接功能清单、工具定义、调用链路、原则Reasonix
V1.52025-07-17更新部署章节:补充后端依赖清单,明确 Hermes 为 Python 库无需单独安装Reasonix
V1.62025-07-17新增 10.4「跨机器迁移说明」,澄清 Hermes 引擎与业务代码的关系及拷贝清单Reasonix
目录
  1. 文档概述
  2. 系统总体架构
  3. 智能体引擎调用设计
    • 3.1 架构边界
    • 3.2 需对接 Hermes Agent 的功能清单
    • 3.3 不经过 Hermes Agent 的功能清单
    • 3.4 Hermes 五大自定义工具定义
    • 3.5 调用链路说明
    • 3.6 Hermes 调用原则
  4. 模块详细设计
    • 4.1 登录鉴权模块
    • 4.2 AI智能问答核心模块
    • 4.3 知识库文件管理模块
    • 4.4 简报与导出模块
    • 4.5 后台管理模块
    • 4.6 数据标准管理模块
    • 4.7 公共基础能力
  5. 存储设计
  6. 接口设计
  7. 权限设计
  8. 核心数据流设计
  9. 前端页面与组件设计
  10. 部署架构
  11. 约束与备忘
  12. Token 经济设计

1.1 项目背景

公积金日常业务中,业务人员需要翻阅大量统计报表、政策文件获取缴存、提取、贷款等指标数据;跨报表汇总、同比对比、多文件口径冲突人工处理效率低。同时,公积金数据标准化建设要求日益严格,新版《住房公积金基础数据标准》和新版《住房公积金指标数据标准》相继实施,要求各地公积金信息系统在数据分类、编码规则、指标口径、计算方法等方面实现统一规范。依托Hermes智能体搭建本地智能文档问数平台,实现自然语言问答、指标自动运算、数据溯源、简报一键生成、权限管控与操作审计,同时满足数据标准合规要求,支撑数据治理与跨系统互通。

1.2 产品目标

  1. 支持业务人员通过自然语言查询本地入库公积金文档内指标;
  2. 自动跨文档汇总、近两年同期同比分析,指标冲突区分多版本来源;
  3. 分级权限隔离,不同岗位仅可访问管辖范围内单位、个人及文档;
  4. 领导支持一键生成全市概况简报 PDF,普通人员支持导出带水印 Excel;
  5. 全操作日志留存,满足监管审计要求;
  6. 轻量化部署:无数据库、无向量库、基于 MD/JSON 文件存储,Mac 单机可完整运行;
  7. 数据标准合规:全流程遵循新版《住房公积金基础数据标准》和《住房公积金指标数据标准》。

1.3 受众角色

角色说明权限简述
游客微信扫码自动注册的临时用户仅 AI 智能问答只读权限;可提交反馈与权限申请;不可导出、不可查看后台
科员一线业务人员仅可查询管辖范围内数据;可导出 Excel;不可生成 PDF 简报
科室领导科室负责人拥有科员全部权限;可生成 PDF 简报
中心领导单位管理层全域宏观指标查询;可生成 PDF 简报;可查阅审计日志
监管人员监督核查人员授权范围内数据抽查,溯源指标原始文件,提交问题反馈
系统管理员后台运维人员文件上传、标签管理、权限配置、日志查阅、反馈管理、数据标准管理

1.4 核心约束

  1. 系统仅读取本地入库文档,禁止访问互联网获取业务数据;
  2. 知识库原始文件不上传至 DeepSeek API,仅传输问答必要片段;
  3. 所有导出文件自动添加操作人员账号 + 时间水印;
  4. 用户无法手动删除会话记录,会话永久留存;
  5. 指标运算须遵循新版《住房公积金指标数据标准》,禁止智能体自行推断;
  6. 无任何数据库依赖:全文件化存储。

2 系统总体架构

2.1 五层标准架构

从上至下:前端展示层 → API 网关业务层 → Hermes 智能体核心层 → 文件服务层 → 本地文件存储层

第一层 前端展示层
Nuxt3 Vue3 + TypeScript NaiveUI TailwindCSS ECharts Vue-Flow Vue-Motion 深色/浅色双主题
第二层 API 网关 & 业务服务层
FastAPI(单进程一体化) 身份鉴权 三级权限拦截 审计埋点 导出风控
第三层 Hermes 0.19.0 智能体核心层
五大自定义工具 固定业务规则 会话持久化 → DeepSeek API(仅推理)
第四层 文档与数据服务层(文件化业务引擎)
python-docx pdf-plumber openpyxl content.md meta.json indicators.index.json
第五层 本地文件存储层
全部 MD/JSON 文件存储 零数据库 /knowledge /sessions /logs /feedback /config /runtime

2.2 部署拓扑

1 浏览器
本地 / 局域网 Chrome Edge Safari
2 Nuxt3 前端
高级政务 UI NaiveUI TailwindCSS
3 FastAPI 权限网关
鉴权 审计 限流
4 Hermes 0.19.0 智能体核心
五大自定义工具编排
📄 文件检索 📊 指标计算 📑 简报导出 💬 反馈记录
5 本地文件知识库
MD 文件 JSON 文件 文件化存储
☁️ 远程调用
6 DeepSeek API
仅推理片段,无原始数据外传

2.3 技术栈清单

技术版本/说明
前端Nuxt3 / Vue3 / TypeScript框架
前端NaiveUI政务高级 UI
前端TailwindCSS精细化样式
前端Vue-Motion丝滑动效
前端ECharts图表可视化
前端Vue-Flow智能体链路可视化
后端FastAPIPython 网关+业务服务
智能体Hermes0.19.0
LLMDeepSeek Open API远程推理
文件解析python-docx / pdf-plumber / openpyxlPDF/Word/Excel 解析
运行环境MacBook Pro M 系列纯本地运行

3 智能体引擎调用设计

3.1 架构边界

Hermes 0.19.0 Agent 是系统的智能编排核心,负责所有需要多步骤推理、工具调用、LLM 交互的复杂业务流程。系统按功能分为对接 Hermes不经过 Hermes两个域:

FastAPI 业务层(不经过 Hermes,纯 CRUD)
登录鉴权 文件上传解析 后台管理 数据标准管理 导出记录查看 审计日志查询
请求转发 ↕
Hermes 0.19.0 Agent(智能编排核心)
维度智能解析 → DeepSeek API
文档检索工具 (本地文件遍历)
指标计算工具 (JSON 结构化运算)
权限后置校验 (规则判断)
合规回答生成 → DeepSeek API
PDF 简报生成 (文件+水印)
Excel 导出工具 (文件+水印)
反馈记录工具 (写入 JSON)

3.2 需对接 Hermes Agent 的功能清单

模块功能Hermes 职责涉及工具
AI 智能问答维度智能解析调用 DeepSeek API 解析用户提问中的时间/周期/机构/指标/分组五类维度无专用工具,Agent 内联编排
AI 智能问答文档检索调用文档检索工具遍历 /knowledge 目录,按指标编码+关键词匹配 content.md文档检索工具
AI 智能问答指标计算调用指标计算工具读取 indicators.index.json,做跨文档汇总、同比、冲突识别指标计算工具
AI 智能问答权限后置校验逐条校验结果来源文档的 allow_roles,标记无权数据替换为提示信息无专用工具,Agent 内联编排
AI 智能问答合规回答生成调用 DeepSeek API,基于检索+计算结果生成合规自然语言回答无专用工具,Agent 内联编排
AI 智能问答缓存与会话写入结果写入 qa_cache_{userid}.md 和 sessions/{userid}/{session_id}.json无专用工具,Agent 内联编排
AI 智能问答权限申请 / 口径申请随问答结果返回时触发,写入 permission_requests.json / dimension_requests.json无专用工具,Agent 内联编排
简报导出PDF 简报生成调用 PDF 简报生成工具,汇总全市缴存核心指标,生成带水印 PDFPDF 简报生成工具
数据导出Excel 导出调用 Excel 导出工具,导出前校验权限+限流,生成带水印 Excel 文件Excel 导出工具
反馈用户反馈提交调用反馈记录工具,将反馈内容+会话 ID 写入 feedback 目录反馈记录工具

3.3 不经过 Hermes Agent 的功能清单

模块功能处理方式
登录鉴权账号密码登录FastAPI 直接读取 users.json 校验 SHA-256 hash,返回 token
登录鉴权微信扫码登录与自动注册FastAPI 处理 OAuth 回调,新用户(游客角色)自动追加至 users.json
登录鉴权权限加载与主题记忆FastAPI 返回权限清单至前端,localStorage 持久化 theme
知识库管理文件上传与解析FastAPI 调用 python-docx / pdf-plumber / openpyxl 本地解析,输出 content.md / meta.json / indicators.index.json;数据标准映射使用规则引擎+关键词表
知识库管理标签编辑 / 权限配置 / 版本管理FastAPI 直接读写对应知识库文件的 meta.json
后台管理角色权限配置FastAPI 读写 role_config.json
后台管理审计日志查看与筛选FastAPI 遍历 logs/audit/ 目录,按时间+操作人员筛选
后台管理用户反馈清单FastAPI 遍历 feedback/ 目录
后台管理权限申请审批FastAPI 读写 permission_requests.json,审批通过后自动更新权限配置
后台管理统计口径申请管理FastAPI 读写 dimension_requests.json
数据标准管理基础数据标准配置FastAPI 读写 config/data_standard/base_data_categories.json
数据标准管理指标口径管理FastAPI 读写 config/data_standard/indicator_standards.json
数据标准管理数据标准合规校验FastAPI 遍历全部文档的 indicators.index.json 和 meta.json,做规则引擎校验
导出相关导出记录列表与文件下载FastAPI 遍历 export_files/ 目录

3.4 Hermes 五大自定义工具定义

工具名称注册名称输入参数输出调用模块
文档检索工具retrieve_documentsquery(指标编码/关键词),dimensions(维度过滤条件)匹配文档列表 [{file_id, file_name, content_snippet, indicators}]AI 问答
指标计算工具calculate_indicatorsindicator_code(标准指标编码),dimensions(维度值),period(周期类型)计算结果 {value, unit, data_level, version, source, diff_notes}AI 问答
PDF 简报生成工具generate_pdf_briefuser_id, role, period(报告期)PDF 文件路径 + 水印信息简报导出
Excel 导出工具export_to_exceluser_id, role, data(导出数据),sheet_nameExcel 文件路径 + 水印信息数据导出
反馈记录工具save_feedbackuser_id, session_id, feedback_content, rating写入结果 {success, feedback_path}反馈

3.5 调用链路说明

AI 问答(完整链路,Hermes 编排 8 步):

前端 → FastAPI(鉴权+审计)→ Hermes Agent → step 1: 维度智能解析(调用 DeepSeek API) → step 2: 维度缺失补全(本地默认规则) → step 3: 查询 qa_cache(本地文件匹配) → step 4: 文档检索工具(本地文件遍历+关键词匹配) → step 5: 指标计算工具(本地 JSON 运算) → step 6: 权限后置校验(本地规则判断) → step 7: 合规回答生成(调用 DeepSeek API) → step 8: 写入缓存与会话(本地文件写入) → FastAPI → 前端

简报导出 / Excel 导出(单工具调用链路):

前端 → FastAPI(鉴权+审计+限流预检)→ Hermes Agent → 调用 PDF 简报生成工具 / Excel 导出工具(单步工具调用) → 返回文件路径 → FastAPI(计数+审计)→ 前端下载

3.6 Hermes 调用原则

  1. 智能问答必走 Hermes:所有涉及自然语言理解、多步编排、LLM 调用的场景必须通过 Hermes Agent 编排,FastAPI 不得直接调用 DeepSeek API。
  2. 工具调用 vs 内联编排:可复用的原子操作注册为自定义工具(文档检索/指标计算/PDF 生成/Excel 导出/反馈记录);仅当前业务流程特有的逻辑(维度解析、权限校验)在 Agent 内联编排中实现。
  3. Hermes 不处理纯 CRUD:文件管理、配置管理、日志查询等纯读写操作由 FastAPI 直接处理,不经过 Hermes,避免不必要的 Agent 调度开销。
  4. 审计日志由 FastAPI 统一埋点:Hermes 工具内部不独立写审计日志,统一由 FastAPI 在请求入口/出口埋点,保证审计数据来源唯一。

4 模块详细设计

4.1 登录鉴权模块

4.1.1 数据结构

config/users.json

[
  {
    "user_id": "zhang_san",
    "username": "张三",
    "password_hash": "<sha256>",
    "role": "科员",
    "status": "active",
    "data_scope": ["江汉区"],
    "theme": "light"
  },
  {
    "user_id": "wx_oT9abc...",
    "username": "微信用户_oT9abc",
    "wechat_openid": "oT9abc...",
    "password_hash": null,
    "role": "游客",
    "status": "active",
    "data_scope": [],
    "theme": "light"
  }
]
字段说明wechat_openid 为微信扫码登录用户的唯一标识;password_hash 为微信用户此项为 null(无需密码)。status 为用户状态,"active" 为正常,"banned" 为封禁,封禁用户登录时提示「你的账号暂时被封禁了,可以联系系统管理员解封」。
初始预置管理员:系统首次部署时 config/users.json必须预置一个系统管理员账号,因为系统无注册页面和初始化向导,只能通过文件配置创建用户。若无管理员账号则无人可登录系统。推荐默认值:
{
  "user_id": "admin",
  "username": "系统管理员",
  "password_hash": "<sha256_of_admin123>",
  "wechat_openid": null,
  "role": "系统管理员",
  "status": "active",
  "data_scope": ["全市"],
  "theme": "light"
}
默认密码 admin123,仅限本地 127.0.0.1 访问生效;管理员首次登录后应通过编辑 JSON 修改密码或新增其他用户。
微信新用户自动注册:使用微信扫码登录时,若系统发现 wechat_openid 未在 users.json 中存在,则自动追加一条新用户记录,角色默认为「游客」(见下方角色配置),无需管理员预先创建。

config/role_config.json

{
  "游客":       { "can_export_excel": false, "can_generate_pdf": false, "daily_export_limit": 0 },
  "科员":       { "can_export_excel": true,  "can_generate_pdf": false, "daily_export_limit": 10 },
  "科室领导":   { "can_export_excel": true,  "can_generate_pdf": true,  "daily_export_limit": 20 },
  "中心领导":   { "can_export_excel": true,  "can_generate_pdf": true,  "daily_export_limit": 30 },
  "监管人员":   { "can_export_excel": false, "can_generate_pdf": false, "daily_export_limit": 0 },
  "系统管理员": { "can_export_excel": false, "can_generate_pdf": false, "daily_export_limit": 0 }
}
游客角色说明:微信扫码自动注册的新用户默认分配「游客」角色。游客仅有 AI 智能问答的只读权限,不可导出、不可生成简报、不可访问后台与知识库。管理员可在 users.json 中将其 role 升级为正式角色(如科员)并配置 data_scope

4.1.2 登录流程

用户输入账号密码 → FastAPI 读取 users.json 校验 → 校验 status 是否为 "active" ├── "banned" → 返回提示「你的账号暂时被封禁了,可以联系系统管理员解封」 └── "active" → 继续 → 成功:加载 role_config.json 权限 → 写入审计日志 logs/audit/{timestamp}_login.json → 返回 token + 权限清单 → 前端持久化 token + theme → localStorage

4.1.3 微信扫码登录与自动注册

4.1.4 接口定义

接口方法路径说明
登录POST/api/auth/login账号密码登录
微信登录POST/api/auth/wechat-login微信扫码回调
登出POST/api/auth/logout退出登录
获取权限GET/api/auth/permissions获取当前用户权限

4.2 AI智能问答核心模块

4.2.1 整体流程

用户输入自然语言提问 → 1. 维度智能解析(时间/周期/机构/指标/分组) → 2. 维度缺失补全(默认值规则) → 3. 用户确认维度(前端展示维度解析条) → 4. 查询 qa_cache_{userid}.md(缓存命中则直接返回) → 5. Hermes 文档检索工具(全量检索,不预先过滤权限) → 6. Hermes 指标计算工具(跨文档运算+同比+冲突识别) → 7. 权限后置校验(逐条校验来源文档权限) → 8. DeepSeek API 生成合规回答 → 9. 结果回填前端 + 写入 qa_cache + 写入会话 + 写入审计日志

4.2.2 维度智能解析规则

维度解析来源默认值示例
时间年份/季度/月份/日期最近一期(最近有数据的完整期)2025年、2025Q1、2025年1月
周期本期/同比/环比/累计本期同比、环比、累计
机构全市/区县/管理部/单位全口径江汉区、市直管理部
指标具体指标名称由提问决定缴存总额、个贷率
分组按单位性质/行业/账户类型不分组按单位性质、按行业
维度不存在处理:若用户要求的维度在知识库中不存在,回答顶部展示黄色提示条「当前知识库中暂无该维度的统计口径」,下方列出已支持的常用维度列表(可点击选中重新提问),右侧附带【申请统计口径】按钮。

4.2.3 用户问答缓存(qa_cache)

4.2.4 Hermes 五大自定义工具

工具名称功能输入输出
文档检索工具遍历本地知识库 content.md,基于指标编码、文档标签、关键词做精确匹配与筛选查询条件(指标/维度/关键词)匹配文档列表 + 内容片段
检索方式说明(V1.0):文档检索基于指标编码精确匹配和关键词命中筛选,不调用 DeepSeek API 做语义检索,不产生 token 消耗。后续迭代可升级为向量语义检索。
指标计算工具读取 indicators.index.json 结构化指标,自动同比、汇总、跨文件运算指标名称 + 维度值计算结果 + 来源 + 口径差异说明
PDF 简报生成工具领导专属,自动生成带水印全市概况 PDF简报模板参数PDF 文件
Excel 导出工具权限校验 + 次数限流 + 自动水印导出数据Excel 文件
反馈记录工具用户问题反馈写入本地 JSON 存档反馈内容 + 会话 ID写入结果

4.2.5 权限后置校验

Hermes 完成文档检索与指标计算(不预先过滤权限) → 逐条校验每条结果对应的来源文档 allow_roles → IF 当前用户角色在 allow_roles 中 → 正常展示数据 → ELSE → 显示「该数据暂无访问权限」灰色提示 → 附带【申请权限】按钮 → 绝不可输出涉密数据内容

4.2.6 指标冲突处理

当多份文档同一指标数值不一致时:

查 询:2025年全市缴存总额 结 果: 数值A:125.6亿元 → 来源:《2025年统计年报》 → 口径:含补缴 数值B:118.3亿元 → 来源:《2025年业务月报(12月)》 → 口径:不含补缴 ⚠ 口径差异说明:差异源于是否包含补缴金额, 依据《住房公积金指标数据标准》第X条

4.2.7 结果溯源与数据层级

每条返回结果须附带:

数据信任链优先级:基础数据标准 → 业务明细数据 → 统计汇总数据 → 分析报告

4.2.8 空结果标准化答复

无匹配数据时固定回复:「未检索到相关公开数据」

4.2.9 会话管理

4.2.10 智能体链路可视化

4.2.11 接口定义

接口方法路径说明
发送消息POST/api/chat/send发送用户提问
历史会话列表GET/api/chat/sessions获取当前用户会话列表
会话详情GET/api/chat/sessions/{session_id}获取单个会话完整内容
提交反馈POST/api/chat/feedback提交结果反馈
提交权限申请POST/api/chat/permission-request提交数据权限申请
提交口径申请POST/api/chat/dimension-request提交统计口径申请

4.3 知识库文件管理模块

4.3.1 文件上传与解析流程

管理员上传 PDF/Word/Excel → 文档解析服务 → python-docx / pdf-plumber / openpyxl → 生成 content.md(清洗后纯文本) → 提取结构化指标 → 生成 indicators.index.json → 生成 meta.json(权限/标签/版本/标准覆盖度) → 按标准目录结构存储
数据标准映射说明(V1.0):文档解析流程中,数据项到《基础数据标准》分类的映射、指标到《指标数据标准》的提取,采用规则引擎+关键词表实现(基于住建部标准分类编码表做正则匹配和关键词命中),不调用 DeepSeek API。无法自动映射的数据项标记为「待标注」,提示管理员手工处理。V1.0 暂不使用 LLM 做语义映射,避免文件上传时产生大量 token 消耗。

4.3.2 文件存储目录结构

/knowledge/{file_id}/
  ├── original.{pdf|docx|xlsx}      ← 原始文件
  ├── content.md                     ← 清洗后纯文本
  ├── meta.json                      ← 元数据(权限、标签、版本、标准覆盖度)
  └── indicators.index.json           ← 结构化指标体系

4.3.3 meta.json 结构

{
  "file_id": "uuid",
  "file_name": "2025年统计年报.pdf",
  "version": "v1.0",
  "invalid": false,
  "tags": ["统计报表"],
  "allow_roles": ["科员", "科室领导", "中心领导", "监管人员"],
  "upload_time": "2025-06-01T10:00:00",
  "data_standard": {
    "base_data_standard": {
      "categories_mapped": ["个人", "单位", "业务"],
      "data_elements_mapped": 42,
      "data_items_mapped": 128,
      "pending_mark": ["结算信息"]
    },
    "indicator_standard": {
      "indicators_mapped": 15,
      "coverage_rate": "85%",
      "pending_mark": []
    }
  }
}

4.3.4 indicators.index.json 结构

[
  {
    "indicator_code": "I-BIZ-001",
    "indicator_name": "年度缴存总额",
    "category": "业务运行类",
    "calculation_method": "Σ 当年月度缴存额",
    "statistical_scope": "全市正常缴存单位",
    "value_standard": "元(精确到0.01)",
    "data_level": "汇总数据",
    "version": "v2025",
    "dimensions": {
      "time": ["2025"],
      "period": ["本期"],
      "region": ["全市"],
      "business_type": ["正常缴存"],
      "channel": ["全部渠道"]
    },
    "value": 12560000000.00,
    "unit": "元",
    "notes": "含单位配缴、个人缴存、财政配缴",
    "source_document": "2025年统计年报.pdf",
    "standard_citation": "《住房公积金指标数据标准》第X条"
  }
]

4.3.5 文件版本管理

4.3.6 文件标签类型

标签说明
政策文件政策法规类文档
统计报表月度/季度/年度统计报表
年度报告年度工作报告
信访材料信访投诉相关材料

4.3.7 接口定义

接口方法路径说明
上传文件POST/api/knowledge/upload单文件上传
文件列表GET/api/knowledge/files获取文件列表
编辑标签PUT/api/knowledge/files/{file_id}/tags编辑文件标签
配置权限PUT/api/knowledge/files/{file_id}/roles配置文档访问角色
上传新版本POST/api/knowledge/files/{file_id}/version新版本上传
预览文件GET/api/knowledge/files/{file_id}/preview原始文件预览
标准映射详情GET/api/knowledge/files/{file_id}/standard-mapping数据标准映射详情

4.4 简报与导出模块

4.4.1 一键生成全市概况简报 PDF

4.4.2 Excel 数据导出

4.4.3 导出风控

4.4.4 接口定义

接口方法路径说明
导出 ExcelPOST/api/export/excel问答结果导出 Excel
生成 PDF 简报POST/api/export/pdf-brief一键生成全市概况简报
导出记录列表GET/api/export/records获取导出记录
下载文件GET/api/export/download/{export_id}下载已生成文件

4.5 后台管理模块(仅管理员)

4.5.1 角色权限配置

页面路径:后台管理 → 权限配置

4.5.2 审计日志管理

页面路径:后台管理 → 审计日志

日志文件路径logs/audit/{date}/{timestamp}_{user_id}_{action_type}.json

{
  "timestamp": "2025-06-01T10:30:00",
  "user_id": "zhang_san",
  "role": "科员",
  "action_type": "问答查询",
  "action_detail": "查询2025年缴存总额",
  "session_id": "session_uuid",
  "result_count": 3
}

4.5.3 用户反馈管理

页面路径:后台管理 → 用户反馈

文件路径feedback/{timestamp}_{user_id}.json

4.5.4 权限申请审批管理

页面路径:后台管理 → 权限申请审批

文件路径config/permission_requests.json

4.5.5 统计口径申请管理

页面路径:后台管理 → 统计口径申请

文件路径config/dimension_requests.json


4.6 数据标准管理模块(仅管理员)

4.6.1 基础数据标准配置

页面路径:数据标准管理 → 基础数据标准配置

展示内容

管理员可操作:编辑本地扩展映射规则

预置标准:住建部标准数据分类编码表

4.6.2 标准化指标口径管理

页面路径:数据标准管理 → 指标口径管理

指标体系分类

一级分类说明
业务运行类缴存、提取、贷款等业务运行指标
监督管理类合规率、逾期率等监管指标
社会经济效益类住房贡献率、覆盖率等效益指标

每条指标包含:标准指标编码、指标名称、计算方法、统计范围、取值标准、数据来源层级、口径版本

维度配置:支持按地域 / 业务类型 / 时间 / 渠道四个维度分别配置

口径差异管理

4.6.3 数据标准合规校验

页面路径:数据标准管理 → 合规校验


4.7 公共基础能力

4.7.1 全操作审计埋点

操作类型触发场景
登录用户登录成功/失败
问答查询用户发送提问
文件检索Hermes 调用文档检索工具
文件导出导出 Excel / PDF

文件存储logs/audit/{date}/{timestamp}_{user_id}_{action_type}.json

4.7.2 多终端自适应适配

断点布局说明
< 768px(手机)单栏布局菜单折叠为汉堡图标,对话区域全宽
768 ~ 1024px(平板)双栏布局左侧菜单紧凑显示
> 1024px(PC)三栏布局左侧菜单 + 对话区 + 右侧链路面板

5 存储设计

5.1 完整文件目录结构

/project_root/
│
├── config/                           # 系统配置
│   ├── users.json                    # 用户账号
│   ├── role_config.json              # 角色权限配置
│   ├── permission_requests.json      # 权限申请记录
│   ├── dimension_requests.json       # 统计口径申请记录
│   └── data_standard/                # 数据标准配置
│       ├── base_data_categories.json # 基础数据标准分类编码表
│       └── indicator_standards.json  # 指标体系配置
│
├── knowledge/                        # 业务知识库
│   └── {file_id}/
│       ├── original.{pdf|docx|xlsx}  # 原始上传文件
│       ├── content.md                # 清洗后纯文本
│       ├── meta.json                 # 元数据(权限/标签/版本/标准覆盖度)
│       └── indicators.index.json     # 结构化指标体系
│
├── sessions/                         # 用户会话记录
│   ├── {user_id}/
│   │   └── {session_id}.json         # 单次会话完整记录
│   └── qa_cache_{user_id}.md         # 用户问答缓存
│
├── logs/
│   └── audit/                        # 审计日志
│       └── {date}/
│           └── {timestamp}_{user_id}_{action_type}.json
│
├── feedback/                         # 用户反馈
│   └── {timestamp}_{user_id}.json
│
├── runtime/                          # 运行时数据
│   ├── export_count.json             # 导出次数计数
│   └── temp/                         # 临时文件
│
└── export_files/                     # 导出的 PDF/Excel 文件
    └── {export_id}.{pdf|xlsx}

5.2 存储规范总结

存储类型格式用途示例
知识文本MarkdownAgent 阅读理解源content.md
结构化数据JSON指标、权限、配置、日志、会话indicators.index.json, meta.json
配置数据JSON用户、角色users.json, role_config.json
运行时计数JSON导出次数export_count.json
原始文件PDF/DOCX/XLSX预览、归档original.pdf

6 接口设计

6.1 接口总览

模块方法路径说明
鉴权POST/api/auth/login账号密码登录
POST/api/auth/wechat-login微信扫码登录回调
POST/api/auth/logout退出登录
GET/api/auth/permissions获取当前用户权限
问答POST/api/chat/send发送用户提问
GET/api/chat/sessions历史会话列表
GET/api/chat/sessions/{session_id}会话详情
POST/api/chat/feedback提交反馈
POST/api/chat/permission-request提交权限申请
POST/api/chat/dimension-request提交口径申请
知识库POST/api/knowledge/upload上传文件
GET/api/knowledge/files文件列表
PUT/api/knowledge/files/{file_id}/tags编辑标签
PUT/api/knowledge/files/{file_id}/roles配置访问角色
POST/api/knowledge/files/{file_id}/version上传新版本
GET/api/knowledge/files/{file_id}/preview预览原始文件
GET/api/knowledge/files/{file_id}/standard-mapping标准映射详情
导出POST/api/export/excel导出 Excel
POST/api/export/pdf-brief生成 PDF 简报
GET/api/export/records导出记录列表
GET/api/export/download/{export_id}下载文件
管理GET/api/admin/audit-logs审计日志查询
GET/api/admin/feedbacks反馈清单
GET/api/admin/permission-requests权限申请清单
PUT/api/admin/permission-requests/{id}/approve审批通过权限申请
PUT/api/admin/permission-requests/{id}/reject驳回权限申请
GET/api/admin/dimension-requests口径申请清单
PUT/api/admin/dimension-requests/{id}/evaluate评估口径申请
标准GET/api/standard/base-data-categories基础数据标准分类
PUT/api/standard/base-data-categories更新扩展映射规则
GET/api/standard/indicators指标口径列表
POST/api/standard/indicators新增/编辑指标口径
POST/api/standard/compliance-check一键合规校验
POST/api/standard/compliance-check/export导出合规校验报告

6.2 统一响应格式

{
  "code": 0,
  "message": "success",
  "data": { ... },
  "timestamp": "2025-06-01T10:00:00Z"
}

错误时:

{
  "code": 40001,
  "message": "账号或密码错误",
  "data": null,
  "timestamp": "2025-06-01T10:00:00Z"
}

7 权限设计

7.1 三级权限体系

第一级:岗位功能权限 ├── 能否导出 Excel? ├── 能否生成 PDF 简报? ├── 能否查看审计日志? └── 能否访问后台管理? └── 配置在 role_config.json 第二级:文档权限 ├── 每份文档 meta.json 配置 allow_roles └── 后置校验:运算完成后逐条校验 第三级:数据域权限 ├── 个人数据隔离 ├── 企业数据隔离 └── 管辖范围隔离(data_scope) └── 配置在 users.json 的 data_scope 字段

7.2 权限矩阵

功能游客科员科室领导中心领导监管人员系统管理员
AI 智能问答✅(只读)
导出 Excel
生成 PDF 简报
知识库管理
后台管理
审计日志查看✅(只读)
数据标准管理
提交反馈
权限申请❌(管理员无需申请)
申请审批

8 核心数据流设计

8.1 AI 问答数据流(完整闭环)

[用户] 输入自然语言提问 ↓ [前端] 发送 POST /api/chat/send ↓ [FastAPI] ① 校验 token → 识别 user_id + role ② 写入审计日志 ③ 转发至 Hermes Agent ↓ [Hermes] ① 维度智能解析(调用 DeepSeek API) ② 维度缺失补全 ③ 查询 qa_cache_{userid}.md ├── 命中 → 返回缓存结果(标注缓存来源) └── 未命中 → 继续 ↓ [Hermes] ④ 调用文档检索工具 遍历 /knowledge 目录,读取 content.md 提取匹配文档列表 ↓ [Hermes] ⑤ 调用指标计算工具 读取 indicators.index.json 跨文档汇总 / 同比 / 冲突识别 ↓ [Hermes] ⑥ 权限后置校验 逐条校验来源文档 allow_roles 无权限数据 → 替换为提示信息 ↓ [Hermes] ⑦ DeepSeek API 生成合规回答 ↓ [Hermes] ⑧ 写入 qa_cache_{userid}.md(追加去重) 写入会话文件 sessions/{userid}/{session_id}.json ↓ [FastAPI] ⑨ 返回结果至前端 ↓ [前端] 展示回答 ├── 维度解析条(顶部) ├── 数据来源清单(底部) ├── 缓存标注(如有) ├── 权限状态标注 └── 链路可视化面板(右侧可折叠)

8.2 文件上传数据流

[管理员] 上传文件(拖拽/选择) ↓ [FastAPI] ① 保存原始文件至 knowledge/{file_id}/original.{ext} ② 解析:pdf-plumber / python-docx / openpyxl ③ 生成 content.md ④ 按数据标准分类映射,生成 indicators.index.json ⑤ 生成 meta.json(含标准覆盖度统计) ⑥ 返回上传结果 ↓ [前端] 刷新文件列表,更新标准映射状态

8.3 导出数据流

[用户] 点击导出 Excel / PDF ↓ [FastAPI] ① 校验当前用户导出权限(role_config.json) ② 校验单日导出次数(runtime/export_count.json) ③ 超出限额 → 返回提示 ④ 未超限 → 继续 ↓ [Hermes] ⑤ 调用导出工具 生成带水印文件 Excel:openpyxl 写入水印行/列 PDF:reportlab 平铺水印 ↓ [FastAPI] ⑥ export_count.json 次数 +1 ⑦ 写入审计日志 ⑧ 返回下载链接

9 前端页面与组件设计

9.1 页面清单

编号页面名称路由角色
P1登录页面/login全部
P2AI 智能问答主页/chat全部
P3历史会话页面/sessions全部
P4知识库文件管理/knowledge管理员
P5导出记录页面/exports有导出权限角色
P6后台管理 - 权限配置/admin/permissions管理员
P7后台管理 - 审计日志/admin/audit-logs管理员/中心领导
P8后台管理 - 用户反馈/admin/feedbacks管理员
P9后台管理 - 权限申请审批/admin/permission-approval管理员
P10后台管理 - 统计口径申请/admin/dimension-requests管理员
P11数据标准管理 - 基础数据标准/admin/standard/base-data管理员
P12数据标准管理 - 指标口径管理/admin/standard/indicators管理员
P13数据标准管理 - 合规校验/admin/standard/compliance管理员

9.2 通用布局规范

┌──────────────────────────────────────────────┐ │ 顶部导航栏(账号、角色、主题切换、退出登录) │ ├──────────┬───────────────────────────────────┤ │ 左侧 │ 右侧主内容区域 │ │ 菜单栏 │ (页面具体内容) │ │ │ │ │ AI问答 │ │ │ 知识库 │ │ │ 历史会话 │ │ │ 导出记录 │ │ │ 后台管理 │ │ │ 标准管理 │ │ ├──────────┴───────────────────────────────────┤ │ 全局水印(后台管理页面常驻) │ └──────────────────────────────────────────────┘

9.3 通用 UI 规范

规范项说明
主色调政务蓝 #165DFF
弹窗风格磨砂玻璃效果(backdrop-filter blur)
卡片风格阴影 + 悬浮动效
主题亮色/暗色双主题,本地缓存记忆
圆角统一圆角尺寸
动效页面切换过渡、骨架加载动画、卡片悬浮动画(Vue-Motion)
水印后台管理页面常驻水印

9.4 弹窗清单

弹窗触发方式内容
微信扫码登录点击登录页微信按钮微信二维码
权限申请点击结果中【申请权限】目标文档、数据指标、用户信息、申请理由(必填)
统计口径申请点击结果中【申请统计口径】指标名称、不支持维度、常用维度、需求描述(必填)
导出确认点击导出按钮导出类型确认
反馈提交点击反馈按钮文本输入框
文件权限编辑知识库管理编辑权限多选角色列表
数据标准映射详情知识库查看标准映射分类映射树、数据元列表、指标编码列表、未映射项
指标口径编辑标准管理编辑指标指标名称、标准编码、计算方法、统计范围、口径版本、维度配置

10 部署架构

10.1 运行环境

项目说明
运行平台MacBook Pro M 系列芯片
操作系统macOS
本地地址127.0.0.1(可手动配置局域网白名单)
Python3.9+
Node.js18+
内存要求≥ 8GB
存储要求≥ 50GB(视知识库大小)

10.2 后端依赖清单

依赖安装方式说明
FastAPI + Uvicornpip install fastapi uvicornWeb 框架
Hermes 0.19.0pip install hermes-agent智能体引擎,以 Python 库形式内嵌运行,与 FastAPI 同进程
python-docxpip install python-docxWord 文档解析
pdf-plumberpip install pdf-plumberPDF 文档解析
openpyxlpip install openpyxlExcel 文档解析
httpx / requestspip install httpx调用 DeepSeek API

所有依赖统一写入 requirements.txt,一条命令安装:

pip install -r requirements.txt
注意:Hermes 不是独立的服务进程,不需要单独下载、启动或维护。它作为 Python 包安装在虚拟环境中,由 FastAPI 后端进程在启动时初始化并常驻内存。因此在目标笔记本上只需要 pip install 即可。

10.3 启动流程

# 1. 安装依赖(首次) cd backend python3 -m venv venv source venv/bin/activate pip install -r requirements.txt # ↑ 含 FastAPI + Hermes 0.19.0 等全部后端依赖 # 2. 配置 DeepSeek API Key export DEEPSEEK_API_KEY="sk-xxxxxxxxxxxx" # 3. 启动后端 python main.py → 加载 config/(用户、角色、数据标准) → 初始化 Hermes Agent(注册五大自定义工具) → FastAPI 监听 127.0.0.1:8000 ↓ # 4. 前端(新开终端) cd frontend npm install npm run dev → Nuxt3 监听 127.0.0.1:3000 ↓ 用户通过浏览器访问 http://127.0.0.1:3000
首次启动说明:系统首次启动时 config/users.json 仅包含预设的 admin 管理员账号。部署人员使用默认密码 admin123 登录后,应直接编辑 config/users.json 修改管理员密码并新增其他业务用户。正式环境迁移时可增加「用户管理」页面和「首次登录强制改密」功能。

10.4 可迁移性

当前文件化架构为原型版本,业务逻辑无需改动,后期可平滑改造接入数据库部署在内网服务器。具体迁移路径:

10.5 跨机器迁移说明

核心原则:Hermes 0.19.0 只是框架引擎,系统的业务行为(五大自定义工具、系统 Prompt 规则、维度解析逻辑、API 适配)全部写在项目后端源代码中。因此跨机器部署时,必须完整拷贝整个项目目录(含后端代码),而非仅安装 Hermes 包。

正确方式

# ① 从原笔记本拷贝完整项目(含后端业务代码)
scp -r user@old-mac:/path/to/project /path/to/project

# ② 安装全部依赖(Hermes 框架 + 项目自身代码一起装)
cd /path/to/project/backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# ↑ 安装的 hermes-agent 只是引擎框架
# ↑ 你的自定义工具和业务规则在 backend/tools/ 和 backend/agent/ 中

# ③ 配置 DeepSeek Key,启动
export DEEPSEEK_API_KEY="sk-xxxx"
python main.py

拷贝最小清单

必须拷贝说明
backend/后端源代码(Hermes 工具定义、系统 Prompt、维度解析、API 路由)
frontend/Nuxt3 前端源代码
config/用户/角色/数据标准配置
knowledge/知识库文件(最大目录)
可选拷贝sessions/ logs/ feedback/ runtime/ export_files/

效果保证:由于全部配置(用户、角色、权限、知识库、数据标准)均为文件化存储,且 Hermes 的业务逻辑由后端代码完整定义,只要上述目录全部拷贝、pip install 安装相同版本的依赖,新笔记本的行为与本机完全一致。


11 约束与备忘

11.1 架构不可变更约束

  1. 永远本地 Hermes 调度 + 远端 DeepSeek 推理
  2. 永远文件化存储,无数据库(原型阶段)
  3. 永远三级权限前置拦截 + 后置校验
  4. 永远结果溯源、冲突并列、同比带来源
  5. 永远全链路审计文件落地
  6. 前端固定 Nuxt3 + NaiveUI 高级政务酷炫风格
说明:以上 6 条是 V1.0 原型阶段的架构底线——不是技术上不能改,而是设计上不允许改。目的是防止开发过程中偏离"轻量原型"定位:
  1. 本地 Hermes + 远端 DeepSeek → 防止引入本地大模型增加部署成本
  2. 文件化存储,无数据库 → 防止引入 MySQL/Redis/向量库增加运维负担
  3. 三级权限拦截 + 后置校验 → 防止权限设计被简化为单一登录校验
  4. 结果溯源、冲突并列 → 防止 Agent 合成答案时丢掉数据来源引用
  5. 全链路审计文件落地 → 防止审计变成可选功能
  6. 前端 Nuxt3 + NaiveUI 固定 → 防止引入 React/Element Plus 等技术栈混用

11.2 开发优先级说明

优先级含义占比估算
P0本期必须实现≈ 70%
P1建议实现≈ 25%
P3需求保留,本期暂缓开发≈ 5%

11.3 后续迭代备选需求

  1. 支持存量文件批量导入(P3)
  2. 领导简报自定义指标模板(后续)
  3. 增加外网公众号接入模块(后续)

11.4 已知风险与限制

  1. 系统依赖 DeepSeek API 网络连通,断网状态下无法完成智能问答
  2. 文件数量过大时(>500 份),本地文件遍历检索性能下降
  3. 全部存储为文件,不支持复杂多条件日志批量筛选(原型阶段可接受)

12 Token 经济设计

12.1 大模型调用点总览

系统共 2 个环节调用 DeepSeek API 产生 token 消耗:

编号调用点阶段输入内容Token 量级
T1维度智能解析提问解析阶段用户自然语言提问小(≈1,000~2,000 tokens)
T2合规回答生成结果生成阶段系统 Prompt + 文档片段 + 指标数据大(≈3,000~8,000 tokens)

其余所有环节(登录、文档检索、指标计算、权限校验、文件解析、导出生成、审计日志、缓存查询)均在大模型调用链路之外,不产生 token 消耗。

12.2 单次问答 Token 消耗模型

用户提问 ≈ 50~200 tokens(输入) ↓ ① 维度智能解析(调用 DeepSeek) 输入:维度解析 Prompt + 用户提问 ≈ 800~1,500 tokens 输出:结构化维度(JSON) ≈ 200~500 tokens 小计:≈ 1,000~2,000 tokens ↓ ② 文档检索 + 指标计算(本地,零 token) ↓ ③ 合规回答生成(调用 DeepSeek) 输入:系统 Prompt(固定业务规则) ≈ 1,500~3,000 tokens + 检索文档片段 ≈ 500~2,000 tokens + 指标运算结果 ≈ 200~500 tokens + 用户提问 ≈ 50~200 tokens 输出:合规自然语言回答 ≈ 500~2,000 tokens 小计:≈ 3,000~8,000 tokens ↓ 单次问答合计 ≈ 4,000~10,000 tokens

12.3 各场景 Token 消耗估算

场景调用 T1调用 T2估算 Tokens说明
缓存命中(提问已缓存过)0直接返回缓存结果,无 LLM 调用
常规单指标查询~4,000~6,000提问简单、文档片段少
多指标跨文档汇总+同比~6,000~10,000需传入多个文档片段和指标数据
维度不存在提示~1,000~2,000维度解析后直接返回提示,不生成回答
一问多轮对话(追问)✅/❌~3,000~8,000/轮维度解析结果可复用,回答生成每次必调

12.4 系统 Prompt 固定消耗

每次 T2(合规回答生成)均需携带系统 Prompt(固定业务规则),这是 token 消耗的固定底数:

规则预估 Token
角色设定与身份描述~300
数据溯源规则~200
指标冲突处理规则~200
空结果规则~100
权限后置校验规则~300
维度自动补全规则~200
数据同源与层级规则~200
指标口径一致性约束~200
输出格式约束~200
合计~1,500~3,000
优化建议:系统 Prompt 应持续精简,去除冗余描述;长文本规则可转换为结构化的 JSON 约束注入,减少自然语言描述的 token 占用。

12.5 缓存对 Token 消耗的削减

缓存机制削减效果说明
qa_cache 命中削减 100%(跳过 T1+T2)相同指标+维度组合直接返回缓存结果
同轮会话维度复用削减 T1(~1,000~2,000 tokens)同一轮对话内追问可复用已解析的维度
会话历史注入略微增加(≤500 tokens)仅在需要上下文理解时注入最近一轮

典型场景的缓存命中率预期

12.6 Token 消耗优化策略

策略影响环节预计削减实现复杂度
精简系统 PromptT2~30% 的 Prompt 消耗
仅传递匹配段落而非全文T2~50% 的文档片段消耗
维度解析结果结构化复用T1同一会话中节省 100% T1
qa_cache 缓存T1+T2命中时节省 100%已实现
文档预检(检索时返回指标摘要而非全文)T2~30% 的文档片段消耗
批量提问合并(追问合并上下文)T1+T2~20% 的综合消耗

12.7 设计约束

  1. 禁止非必要的 LLM 调用:所有可通过本地规则、关键词匹配、JSON 查询完成的操作(权限校验、指标计算、文件解析映射、文档检索)均不得调用 DeepSeek API。
  2. 知识库原始文件永不外传:仅传递与提问直接相关的文档片段至 DeepSeek API,遵守「最少传输」原则。
  3. 缓存优先:qa_cache 是削减 token 消耗的第一道防线,每次有效问答后必须写入。
  4. 系统 Prompt 版本管理:系统 Prompt 的每次变更应记录版本号,便于追踪 token 消耗变化。

住房公积金问数智能体 · 系统详细设计文档 V1.6
技术底座:Hermes 0.19.0 + Nuxt3(Vue3) + FastAPI + 文件化存储(MD/JSON) + DeepSeek API