2026-09-06-ajyy-feedback-platform-design.md 9.7 KB

安建医院纪检扫码反馈系统 — 设计规格

日期: 2026-09-06
状态: 已评审待实现
产品名: 安徽建工集团医院纪检数字化监督平台 / 安建医院纪检扫码反馈系统

1. 背景与目标

安徽建工集团医院纪检室需要一套「扫码反馈」系统:群众微信扫二维码进入移动端 H5 提交投诉/表扬与建言;纪检室通过 Web 管理端查看台账、办理流转并维护热线与二维码配置。

参考工程 shanxia2.0(FastAPI + Vue3 Element Plus + uni-app)仅作技术与工程约定参考;业务与视觉以本仓库 原型图/、建设方案/ 为准。

1.1 已确认决策

项 决定
范围 按《功能建设清单》核心功能一次可验收(移动端 6 项 + 后台业务 5 项 + 鉴权权限含角色授权 + 附件/台账)
工程策略 同技术栈新建,不拷贝 shanxia 业务模块
移动端形态 uni-app 编译为微信内 H5;二维码 → HTTPS 落地页;本期不上微信小程序
总体架构 一后端 + 两端前端;公开 API 与管理 API 分域(方案 A)
权限 角色 ↔ 菜单(sys_role_menu)+ 管理端「角色授权」勾选页
租户 单院部署;无多租户字段
基础设施 测试 MySQL 库名 ajyy(与 shanxia 测试库同实例、不同库);MinIO 复用测试环境,独立 bucket(如 ajyy)

1.2 非目标(本期不做)

  • 微信小程序发版与审核
  • 公众端查询反馈进度 / 消息推送
  • 多租户、部门树、复杂数据权限(shanxia data_scope)
  • 公开接口 IP 限流、上传类型白名单、body 限流加固(按普通业务接口实现即可)
  • 列表/详情敏感字段脱敏
  • 管理端导出 Excel(可后置)
  • RSA 登录加密、API 报文加密等 shanxia 全家桶安全中间件

2. 仓库与总体架构

ajyy/
  backend/       # FastAPI(新建)
  web-admin/     # Vue3 + Vite + Element Plus(新建)
  mobile-wx/     # uni-app → 微信 H5(已有空壳,在此扩展)
  原型图/        # UX/视觉参考,不进运行时
  建设方案/      # 需求与报价参考
  docs/          # 设计、SQL、部署说明
[微信扫码] → HTTPS → mobile-wx (H5)
                       |  /api/public/*
                       v
                  backend
                       ^  /api/web/*
                       |
                 web-admin (hash 路由 SPA)
                       |
                  MySQL(ajyy) + MinIO(共用测试环境, bucket ajyy)

约定:

  • 统一响应:{ code, message, data, timestamp }(对齐 shanxia;成功 code=200)
  • 配置:backend/.env;前端 VITE_* / uni-app config
  • 原型仅作字段与交互对照,不嵌入构建产物

3. 数据模型与状态机

软删除字段 del_flag;主键 id 为 UUID 字符串;审计字段:create_time / update_time / create_by / update_by(管理端写操作填充;公开提交可空或系统占位)。

3.1 表一览

表 用途
sys_user 管理端账号:用户名、密码哈希、显示名、role_id、启用状态
sys_role 角色:admin / handler / viewer(可扩展)
sys_menu 菜单/权限点:menu_code、名称、路由 path、类型(目录/菜单/按钮)、排序、显隐
sys_role_menu 角色拥有的菜单
feedback 在线反馈
suggestion 建言献策
hotline_config 监督热线(单行配置)
qrcode_config 二维码配置(单行配置)
attachment 附件元数据
oper_log 关键操作审计

3.2 业务字段(对齐原型)

feedback

  • 业务编号 biz_no(如 FK20260906001)
  • 类型:投诉 / 表扬
  • 被反馈人:姓名、部门、职务(选填)
  • 内容(必填)
  • 举报人:姓名、联系方式(选填;全空即匿名)
  • 附件:URL 列表存 JSON 数组(如 ["https://..."])
  • 状态、办理备注

suggestion

  • 业务编号 biz_no(如 JY20260906001)
  • 建议内容(必填)
  • 联系人、单位/职务、联系方式(选填)
  • 附件、状态、办理备注

hotline_config: 电话、邮箱、地址、受理时间说明

qrcode_config: 落地 URL、说明文案、自定义图片 URL

attachment: 原名、对象键、URL、大小、业务类型、关联业务 ID(可先传后挂)

3.3 状态机

反馈

待处理 → 处理中 → 已办结

建言

待查阅 → 已采纳
       → 已回复

状态变更写 oper_log(操作者、时间、从→到、备注摘要)。

3.4 种子数据

  • 默认角色三枚 + 菜单树 + sys_role_menu 初始授权
  • 默认管理员账号(密码仅存在于本地 .env / 初始化文档,不入库明文)
  • 默认热线、二维码各一行(可与原型占位一致,上线前改)

4. API 与权限

前缀 /api。

4.1 公开 /api/public/*(无需登录)

方法 路径 说明
GET /hotline 读热线
GET /qrcode 读二维码配置
POST /attachment/upload 上传附件 → MinIO + attachment
POST /feedback 提交反馈
POST /suggestion 提交建言

不做公众查进度接口。

4.2 鉴权 /api/web/auth/*

方法 路径 说明
POST /login 用户名+密码 → JWT
POST /logout 登出
GET /current-user 当前用户与角色
GET /menus 当前用户菜单树(按 sys_role_menu)
POST /refresh 可选;一期可用较长 access token 简化

密码:bcrypt。生产环境 HTTPS。不做 RSA 登录加密。

4.3 管理 /api/web/admin/*(需 JWT)

模块 能力
工作台 统计 + 最近反馈
反馈 列表筛选、详情、改状态+备注
建言 列表筛选、详情、改状态+备注
热线配置 读写
二维码配置 读写、自定义图上传
附件 管理端上传/预览(可复用 upload)
用户 列表、启停、重置密码
角色授权 角色列表;GET/PUT .../roles/{id}/menus 勾选保存
审计 oper_log 列表(可选,admin)

权限模型

  1. 登录后拉取菜单;前端动态渲染侧栏与路由守卫。
  2. 后端对写操作与敏感接口校验角色/菜单权限(不能只靠藏菜单)。
  3. 建议权限点示例:feedback:handle、suggestion:handle、hotline:write、qrcode:write、user:manage、role:grant。
  4. 初始授权:admin 全部;handler 工作台+反馈+建言(含办理);viewer 工作台+反馈+建言(无办理权限点)。

5. 三端职责与 UI

5.1 mobile-wx(微信 H5)

对齐 原型图/index.html,主色 #a51f23。

页面 职责
首页 品牌 + 四大入口
反馈须知 5 秒倒计时
在线反馈 投诉/表扬、被反馈人选填、内容必填、多附件、匿名可选
建言献策 内容必填;联系人/附件选填
监督热线 读配置;一键拨打
扫码分享 展示配置二维码图或按落地 URL 生成

工程结构参考 shanxia miniprogram:api/、utils/request、分页面目录。UI 优先还原原型纪检红,不强制 Vant。

5.2 web-admin

对齐 原型图/admin.html 信息架构;Vue3 + Element Plus 精简自建壳(不整套拷贝 Art Design Pro)。

模块 职责
登录 账号密码
工作台 四指标 + 最近反馈
在线反馈 筛选、详情抽屉、状态流转
建言献策 同上
热线配置 表单保存
二维码配置 URL/文案/自定义图、预览下载
用户管理 启停、重置密码
角色授权 勾选菜单保存到 sys_role_menu

列表交互参考 shanxia「筛选项 + 表格 + 抽屉详情」。

5.3 backend

薄路由 → services → crud / models;core:config、database、auth、storage(MinIO)。
启动或迁移脚本写入种子数据。


6. 安全、错误处理与验收

6.1 安全(精简)

  • 管理端 JWT;密码 bcrypt;生产 HTTPS
  • 登录、配置变更、状态办理写入 oper_log
  • 附件 MinIO;按现有测试环境用法配置 endpoint/bucket

不做:公开接口限流/上传白名单加固、字段脱敏、API 加密中间件。

6.2 错误与体验

  • 校验失败 400;未登录 401;无权限 403;不存在 404
  • 移动端提交成功明确反馈;失败可重试;上传失败单独提示
  • 管理端空态、加载态、办理失败提示

6.3 验收对照

清单区块 覆盖
移动端 1–6 首页、须知、反馈、建言、热线、分享
后台 7–11 工作台、反馈、建言、热线配置、二维码配置
后端 12–14 API、附件、台账留痕
安全 15–17 登录、角色菜单+授权页、操作审计
部署/配套 18–25 工程可部署;域名证书、印刷物料、培训按现场另排;建设方案文档已有

7. 实现顺序建议

  1. 搭建 backend 骨架(config/db/auth/response/storage)+ 建表与种子
  2. 搭建 web-admin 骨架(登录、布局、动态菜单)
  3. 公开 API + mobile-wx 页面打通提交闭环
  4. 管理端台账与办理、热线/二维码配置
  5. 用户管理 + 角色授权页
  6. 审计日志与联调、测试环境 MySQL/MinIO 接通

详细任务拆解在设计批准后由 implementation plan 给出。


8. 参考路径

  • 移动端原型:原型图/index.html
  • 管理端原型:原型图/admin.html
  • 功能清单:建设方案/安徽建工集团医院纪检数字化监督平台-功能建设清单.md
  • 技术参考:shanxia2.0/backend、shanxia2.0/web-admin、shanxia2.0/miniprogram