审批管理系统 - 项目总结
- 一、 项目概述
- 1.1 项目背景
- 1.2 核心业务需求
- 1.3 核心设计原则
- 二、 技术架构
- 三、 项目文件结构
- 四、 核心数据模型
- 4.1 审批单据(ApprovalDocument)
- 4.2 审批意见(ApprovalOpinion)
- 五、 状态流转图
- 六、 功能页面图示
- 6.1 整体功能结构
- 6.2 提出人页面
- 6.3 领导页面
- 6.4 秘书页面
- 七、 角色与功能对应表
- 八、 完整流程演示
- 九、 技术亮点
- 十、 测试用户
- 十一、 访问地址
- 十二、 项目总结
一、 项目概述
1.1 项目背景
公司需要一个专门的审批事项管理系统,处理日常的报批、审批、定稿和生效流程。涉及提出人、管理层(3-5人)和秘书室三个角色,文件格式包括 PDF、Word、Excel 等。
1.2 核心业务需求
| 文件类型 | 说明 |
|---|
| 报批件 | 各部门、项目或职能人员提出,呈报管理层,自动发送至秘书室保存 |
| 审批意见件 | 管理层对报批件发表意见,可多次往返修改 |
| 审批定稿件 | 管理层讨论决定,等待发送和生效 |
| 审批生效件 | 最终确定,可实施,自动归档 |
1.3 核心设计原则
| 原则 | 说明 |
|---|
| 秘书室总控 | 秘书室是流程的"阀门",控制所有状态流转 |
| 状态驱动 | 所有操作围绕单据状态变化展开 |
| 文件与代码分离 | 上传文件独立存储在 data 目录 |
| 角色权限分离 | 提出人、领导、秘书看到不同的功能和数据 |
| 浏览器架构 | B/S 架构,局域网内任何电脑通过浏览器访问 |
二、 技术架构
| 层次 | 技术 | 说明 |
|---|
| 前端 | HTML + Bootstrap 5 | 响应式界面 |
| 后端 | Django 6.0 | Python Web 框架 |
| 数据库 | PostgreSQL 17 | 关系型数据库 |
| 文件存储 | 本地文件系统 | 独立于代码目录 |
| 部署 | Windows + 局域网 | 开发服务器 0.0.0.0:8000 |
三、 项目文件结构
D:\approval_project\ │ ├── code\ ← 所有代码(Git 管理) │ │ │ ├── config\ ← 项目配置 │ │ ├── settings.py ← 数据库/时区/媒体路径 │ │ ├── urls.py ← 总路由 │ │ └── wsgi.py │ │ │ ├── templates\ ← 前端模板 │ │ ├── base\base.html ← 基础导航模板 │ │ ├── accounts\login.html ← 登录页面 │ │ ├── documents\ ← 提出人页面 │ │ │ ├── submit.html ← 新建申请 │ │ │ ├── list.html ← 我的申请列表 │ │ │ ├── detail.html ← 申请详情 │ │ │ └── revise.html ← 修改申请 │ │ ├── secretary\ ← 秘书页面 │ │ │ ├── dashboard.html ← 工作台(含统计卡片) │ │ │ ├── all_documents.html ← 全部文件列表 │ │ │ ├── statistics.html ← 统计报告 │ │ │ ├── preview.html ← 初审 │ │ │ ├── summary.html ← 汇总 │ │ │ └── finalize.html ← 定稿 │ │ └── leader\ ← 领导页面 │ │ ├── pending.html ← 待我审批 │ │ └── submitted.html ← 我已审批 │ │ │ ├── accounts\ ← 用户管理 │ │ ├── models.py ← User(角色/部门) │ │ ├── admin.py ← 后台注册 │ │ └── views.py ← 登录视图 │ │ │ ├── documents\ ← 审批单据(核心) │ │ ├── models.py ← ApprovalDocument + ApprovalOpinion │ │ ├── services.py ← 状态流转服务 │ │ ├── views.py ← 提出人视图 │ │ └── admin.py ← 后台注册 │ │ │ ├── attachments\ ← 附件管理 │ │ ├── models.py ← Attachment │ │ └── admin.py │ │ │ ├── secretary\ ← 秘书总控台 │ │ ├── views.py ← 秘书工作台/全部文件/统计报告 │ │ └── urls.py │ │ │ ├── leader\ ← 领导模块 │ │ ├── views.py ← 待我审批/我已审批/提交意见 │ │ └── urls.py │ │ │ ├── notifications\ ← 消息通知 │ │ └── models.py ← Notification │ │ │ └── archives\ ← 归档管理 │ └── models.py ← ArchiveLog │ ├── data\ ← 用户文件(独立存储) │ └── documents\ │ ├── drafts\ ← 报批件 │ ├── final\ ← 定稿文件 │ └── opinions\ ← 意见附件 │ ├── backups\ ← 备份目录 │ └── 20260805\ │ ├── approval_db_20260805.sql ← 数据库备份 │ └── documents_20260805.zip ← 文件备份 │ ├── venv\ ← Python 虚拟环境 ├── backup_en.bat ← 手动备份脚本 └── auto_backup.bat ← 自动备份脚本
四、 核心数据模型
4.1 审批单据(ApprovalDocument)
| 字段 | 类型 | 说明 |
|---|
| id | AutoField | 编号 |
| title | CharField | 事项标题 |
| status | CharField | 状态(11种) |
| current_version | IntegerField | 当前版本号 |
| submitter | ForeignKey | 提出人 |
| secretary | ForeignKey | 负责秘书 |
| draft_file | FileField | 报批件 |
| final_file | FileField | 最终定稿 |
| expected_effective_date | DateField | 期望生效日期 |
| actual_effective_date | DateField | 实际生效日期 |
4.2 审批意见(ApprovalOpinion)
| 字段 | 类型 | 说明 |
|---|
| document | ForeignKey | 关联审批单 |
| leader | ForeignKey | 审批领导 |
| decision | CharField | 同意/需修改/驳回 |
| comment | TextField | 审批意见 |
| attachment_file | FileField | 意见附件 |
| is_latest | BooleanField | 是否最新意见 |
五、 状态流转图
┌─────────────────────────────────────────────────────────────────────┐ │ 审批单据状态流转 │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ ① 草稿 ──提交──→ ② 待秘书初审 ──初审通过──→ ③ 待领导批示 │ │ ↑ │ │ │ │ │ │ 退回修改 │ 领导提交意见 │ │ │ ↓ ↓ │ │ │ ④ 退回修改 ⑤ 意见收集中 │ │ │ │ │ │ │ └────────────────────┘ │ │ │ 提出人修改后重新提交 │ │ │ │ │ │ ┌──────────────┴──────────────┐ │ │ │ 有领导"需修改" │ │ │ │ │ │ │ ↓ │ │ │ ⑥ 待提出人修改 │ │ │ │ │ │ │ │ 修改后重新提交 │ │ │ ↓ │ │ │ ② 待秘书初审 │ │ │ │ │ │ │ │ 全部同意 │ │ │ ↓ │ │ │ ⑦ 待秘书定稿 │ │ │ │ │ │ │ │ 秘书定稿 │ │ │ ↓ │ │ │ ⑧ 待生效 │ │ │ │ │ │ │ │ 到期生效 │ │ │ ↓ │ │ │ ⑨ 已生效 │ │ │ │ │ │ │ │ 归档 │ │ │ ↓ │ │ │ ⑩ 已归档 │ │ │ │ └─────────────────────────────────────────────────────────────────────┘
状态说明
| 状态码 | 中文名称 | 说明 |
|---|
draft | 草稿 | 提出人创建,未提交 |
pending_init | 待秘书初审 | 秘书检查附件和格式 |
waiting_approval | 待领导批示 | 领导发表意见 |
collecting | 意见收集中 | 自动判断是否全部提交 |
waiting_revise | 待提出人修改 | 有领导要求修改 |
pending_finalize | 待秘书定稿 | 秘书上传定稿文件 |
waiting_effective | 待生效 | 等待生效日期 |
completed | 已生效 | 审批完成 |
archived | 已归档 | 归档保存 |
六、 功能页面图示
6.1 整体功能结构
┌─────────────────────────────────────────────────────────────────────┐ │ 审批管理系统 │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 提出人 │ │ 领导 │ │ 秘书 │ │ │ │ (Submitter) │ │ (Leader) │ │ (Secretary) │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 我的申请 │ │ 待我审批 │ │ 工作台 │ │ │ │ 新建申请 │ │ 我已审批 │ │ 全部文件 │ │ │ │ 申请详情 │ │ 提交意见 │ │ 统计报告 │ │ │ │ 修改申请 │ │ │ │ 初审/汇总/定稿│ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────┘
6.2 提出人页面
┌─────────────────────────────────────────────────────────────────────┐ │ 审批管理系统 tian_zhiguo [提出人] 退出 │ ├─────────────────────────────────────────────────────────────────────┤ │ 我的申请 | 新建申请 │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ 我的申请 │ │ │ │ ┌─────┬───────────────────┬──────────┬────────┬─────────────┐ │ │ │ │ │编号 │ 标题 │ 状态 │ 版本 │ 创建时间 │ │ │ │ │ ├─────┼───────────────────┼──────────┼────────┼─────────────┤ │ │ │ │ │ 7 │ 现场服务零星材料 │ 待修改 │ v3 │ 08-05 10:57 │ │ │ │ │ │ 8 │ 流程管理软件采购 │ 已生效 │ v1 │ 08-05 12:09 │ │ │ │ │ └─────┴───────────────────┴──────────┴────────┴─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ 功能:新建申请 → 上传报批件 → 提交 → 查看详情 → 修改后重新提交 │ │ │ └─────────────────────────────────────────────────────────────────────┘
6.3 领导页面
┌─────────────────────────────────────────────────────────────────────┐ │ 审批管理系统 zr [领导] 退出 │ ├─────────────────────────────────────────────────────────────────────┤ │ 待我审批 | 我已审批 │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ 待我审批 │ │ │ │ ┌─────┬───────────────────┬──────────┬─────────────────────┐ │ │ │ │ │编号 │ 标题 │ 提出人 │ 操作 │ │ │ │ │ ├─────┼───────────────────┼──────────┼─────────────────────┤ │ │ │ │ │ 7 │ 现场服务零星材料 │ tian_.. │ [审批] │ │ │ │ │ └─────┴───────────────────┴──────────┴─────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ 我已审批 │ │ │ │ ┌─────┬───────────────────┬──────────┬──────────┬───────────┐ │ │ │ │ │编号 │ 标题 │ 提出人 │ 我的决定 │ 审批时间 │ │ │ │ │ ├─────┼───────────────────┼──────────┼──────────┼───────────┤ │ │ │ │ │ 7 │ 现场服务零星材料 │ tian_.. │ 需修改 │ 08-05 11:11│ │ │ │ │ └─────┴───────────────────┴──────────┴──────────┴───────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ 功能:待审批列表 → 提交意见(同意/需修改/驳回 + 附件上传) │ │ 我已审批列表 → 查看自己审批过的所有申请 │ │ │ └─────────────────────────────────────────────────────────────────────┘
6.4 秘书页面
┌─────────────────────────────────────────────────────────────────────┐ │ 审批管理系统 xiaomi [秘书] 退出 │ ├─────────────────────────────────────────────────────────────────────┤ │ 工作台 | 全部文件 | 统计报告 │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ 统计卡片 │ │ │ │ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ │ │ │ │ │总申请 │ │审批中 │ │待修改 │ │已生效 │ │已驳回 │ │ │ │ │ │ 25 │ │ 3 │ │ 2 │ │ 18 │ │ 2 │ │ │ │ │ └───────┘ └───────┘ └───────┘ └───────┘ └───────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 待初审 [3]🔴│ │ 待汇总 [2]🔴│ │ 待定稿 [1] │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ │ 功能:初审 → 汇总 → 定稿生效 → 全部文件查看 → 统计报告 │ │ │ └─────────────────────────────────────────────────────────────────────┘
七、 角色与功能对应表
| 角色 | 功能页面 | 主要操作 |
|---|
| 提出人 | 我的申请、新建申请、申请详情、修改申请 | 提交报批件、修改后重新提交 |
| 领导 | 待我审批、我已审批、提交意见 | 审批(同意/需修改/驳回)、上传附件 |
| 秘书 | 工作台、全部文件、统计报告、初审、汇总、定稿 | 初审、汇总意见、定稿生效、查看全部文件、统计报告 |
| 管理员 | Django 后台 | 管理用户、查看所有数据 |
八、 完整流程演示
┌─────────────────────────────────────────────────────────────────────┐ │ 完整审批流程 │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ 提出人 秘书 领导 │ │ ──────── ──── ──── │ │ │ │ │ │ │ ① 新建申请 │ │ │ │ │ (上传报批件) │ │ │ │ │ │ │ │ │ ② 提交申请 ──────────────→│ │ │ │ │ │ │ │ │ │ ③ 初审通过 ────────────────→│ │ │ │ │ │ │ │ │ │ ④ 提交意见 │ │ │ │ │ │ │ │ │ (同意/需修改/驳回) │ │ │ │ │ │ │ │ ⑤ 汇总通过 │ │ │ │ │ │ │ │ │ ⑥ 定稿生效 │ │ │ │ │ │ │ │ ⑦ 查看生效文件 │ │ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ─────────────── 审批完成 ─────────────── │ │ │ └─────────────────────────────────────────────────────────────────────┘
九、 技术亮点
| 特性 | 实现方式 |
|---|
| 文件上传 | Django FileField,按日期自动分类存储 |
| 状态流转 | 服务层统一管理,11种状态自动切换 |
| 自动汇总 | 领导全部提交后自动进入汇总阶段 |
| 统计报告 | 按状态、部门、时间、领导多维度统计 |
| 数据备份 | 脚本自动备份数据库和文件,保留7天 |
| 局域网部署 | 多用户同时访问,无需安装客户端 |
十、 测试用户
| 用户名 | 密码 | 角色 |
|---|
admin | admin123 | 管理员 |
tian_zhiguo | Tian@2026 | 提出人 |
xiaomi | Abc@2024# | 秘书 |
zr | zr的密码 | 领导 |
ll | ll的密码 | 领导 |
lsq | lsq的密码 | 领导 |
fqc | fqc的密码 | 领导 |
十一、 访问地址
| 地址 | 说明 |
|---|
http://192.168.110.222:8000 | 系统首页(自动跳转) |
http://192.168.110.222:8000/admin | Django 管理后台 |
http://192.168.110.222:8000/secretary/dashboard/ | 秘书工作台 |
http://192.168.110.222:8000/leader/pending/ | 领导待审批 |
http://192.168.110.222:8000/documents/my-list/ | 提出人我的申请 |
十二、 项目总结
| 项目 | 内容 |
|---|
| 项目名称 | 审批管理系统 |
| 开发周期 | 约 3 天(含调试) |
| 代码行数 | 约 1500 行 |
| 数据模型 | 7 张表 |
| 页面数量 | 14 个 |
| 用户角色 | 4 个(管理员/提出人/领导/秘书) |
| 部署方式 | Windows 局域网 B/S 架构 |
| 备份方案 | 自动备份(数据库 + 文件) |
🎉 项目已完整交付,可正式投入使用!