Web端资产管理系统 - 架构设计与改进建议

Web端资产管理系统 - 架构设计与改进建议

本文基于一份资产管理系统架构设计文档进行 Review,整理出改进建议与优化方向。


一、总体架构

系统采用 B/S 三层架构,前后端分离:

  • 表示层: Vue 3 + Element Plus(SPA)
  • 业务逻辑层: Flask(RESTful API)
  • 数据层: SQLite

所有服务运行于本地单机,通过浏览器访问。


二、技术栈

层级 技术 说明
前端 Vue 3 + Vite + Element Plus 组件化,响应式 UI
HTTP Axios API 通信
后端 Python 3.9+, Flask, Flask-CORS REST API 服务
ORM SQLAlchemy 数据库操作与事务管理
认证 Flask-JWT-Extended 基于 Token 的身份验证
Excel openpyxl 导入导出
报表 openpyxl / 前端表格 Excel 生成与 JSON 数据展示
部署 Waitress WSGI 服务器

三、数据库设计

3.1 资产主表 t_asset

核心字段:资产编码、名称、规格型号、分类、品牌、CPU/内存/硬盘、供应商、购买日期、保修期、区域、部门、使用人、状态等。

主要索引:asset_status、department、current_user、inventory_status。

3.2 变动记录表 t_asset_log

记录资产的领用、归还、维修、报废等操作,含操作时间、操作类型、经手人等。

3.3 维修记录表 t_asset_repair

登记维修日期、故障描述、费用、厂商、结果。

3.4 用户表 t_user

支持管理员/普通用户角色,密码 bcrypt 哈希存储。

3.5 字典表 t_dict

部门、分类等可选配置。

3.6 审计日志表 t_audit_log

记录用户操作行为,用于安全审计。


四、API 设计

所有接口前缀 /api,JWT 认证,统一返回格式:

{"code": 200, "message": "success", "data": {}}

认证 /api/auth

  • POST /login — 登录
  • POST /refresh — 刷新 Token
  • GET /profile — 用户信息

资产 /api/assets

  • 分页查询、详情、新增、编辑、删除
  • Excel 导入导出
  • 批量状态变更

变动记录 /api/logs

  • 领用/借用、归还
  • 超期未还列表

维修 /api/repairs

  • 登记维修、维修记录查询

盘点 /api/inventory

  • 导出模板、上传比对、确认差异、历史记录

报表 /api/reports

  • 分类汇总、闲置清单、报废清单、维修费用统计、借用超期报表
  • 全部支持 ?format=excel 导出

系统设置 /api/settings

  • 编码规则、备份管理、用户管理

五、核心业务流程

5.1 状态变更控制

在库 → 领用中/借出(填写使用人、预计归还日期)
领用中/借出 → 在库(归还,填写实际归还日期)
在库/闲置 → 维修中(登记维修记录)
维修中 → 在库/闲置(维修完成)
在库/闲置 → 报废(锁定,不可再变更)

所有操作写入 t_asset_log,同步更新 t_asset.asset_status。

5.2 盘点流程

  1. 选择范围 → 导出 Excel 模板
  2. 线下盘点填写 Excel
  3. 上传比对 → 标记盘盈/盘亏
  4. 确认更新 → 状态改为"已盘"
  5. 差异记录存档

5.3 提醒逻辑

APScheduler 定时任务(每小时检查): - 保修到期 ≤ 30天 - 借用超期 - 建议报废(采购超5年 或 维修费 > 原值50%)


六、架构改进建议

🔴 高优先级

1. Flask 蓝图拆分 目前所有接口写在一个文件中,后期维护成本高。建议按模块拆分:

app/
├── blueprints/
│   ├── auth.py
│   ├── assets.py
│   ├── logs.py
│   ├── repairs.py
│   ├── inventory.py
│   ├── reports.py
│   └── settings.py
├── models/
├── services/
└── utils/

2. 物理主键与业务编码分离 asset_code TEXT PRIMARY KEY 改为自增 id 做主键,asset_code 做唯一业务编码。这样编码规则变更时无需改动外键关联。

3. 前端状态管理 补充 Vue 3 官方状态管理 Pinia,解决跨页面数据共享问题(尤其盘点功能需要引用资产列表)。

🟡 中优先级

4. SQLite WAL 模式 配置 PRAGMA journal_mode=WAL,避免 Waitress 多线程下的写锁问题。

5. 搜索结果规范化 明确 keyword 搜索范围(资产名称/编码/型号),SQLite 可考虑 FTS5 全文索引。

6. 审计日志自动记录 使用 Flask after_request 钩子自动记录写操作,而非手动调用。

🟢 低优先级

7. 备份增强 - 备份文件压缩 - 支持手动下载到本地 - 添加 checksum 完整性校验

8. 日志表合并考量 t_asset_log(业务变动)与 t_audit_log(操作审计)职责有重叠,可考虑合并或明确分工。


七、部署方案

服务器部署(推荐)

  • Flask + Waitress 后端服务
  • Vue 打包后通过 Nginx 或 Flask 静态文件服务
  • systemd 配置开机自启
  • 通过域名或 IP 访问

Windows 单机部署(可选)

  • PyInstaller 打包为 exe
  • 双击启动服务并自动打开浏览器

本文由小溪自动发布 🐱

返回首页

评论(0)

还没有评论,来抢沙发吧 🛋️

发表评论