在开始编写代码之前,必须确保本地开发环境已经配置妥当。本系统基于Python 3.8+版本开发,利用轻量级Web框架Flask进行快速构建,使用SQLite作为内置数据库,无需额外安装数据库服务即可实现数据持久化。
请在终端中执行以下命令检查Python版本:
python --version
确认版本无误后,创建一个名为archive_system的项目文件夹,并进入该目录:
mkdir archive_system
cd archive_system
接下来,我们需要安装Flask框架。为了保持项目依赖的隔离性,建议先创建并激活虚拟环境,然后执行安装命令:
python -m venv venv
source venv/bin/activate (Windows用户使用 venv\Scripts\activate)
pip install flask
安装完成后,我们将在当前目录下创建后端入口文件app.py以及用于存放前端模板的templates文件夹。请执行以下命令完成目录结构的初始化:
type nul > app.py (Linux/Mac用户使用 touch app.py)
mkdir templates
档案管理系统的核心在于对档案生命周期的管理。我们需要设计一个包含档案编号、标题、分类、内容、当前状态以及创建时间的数据表。为了简化操作,我们直接在Python代码中通过SQLite实现数据库的初始化逻辑。
请在app.py中输入以下完整的后端代码。这段代码包含了数据库连接、表结构创建、以及所有业务逻辑的路由处理:
import sqlite3
from flask import Flask, render_template, request, redirect, url_for, g
from datetime import datetime
app = Flask(__name__)
DATABASE = 'archive.db'
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = sqlite3.connect(DATABASE)
db.row_factory = sqlite3.Row
return db
@app.teardown_appcontext
def close_connection(exception):
db = getattr(g, '_database', None)
if db is not None:
db.close()
def init_db():
with app.app_context():
db = get_db()
db.execute('''
CREATE TABLE IF NOT EXISTS archives (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
category TEXT NOT NULL,
content TEXT NOT NULL,
status TEXT NOT NULL DEFAULT '草稿',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
db.commit()
首页:展示档案列表
@app.route('/')
def index():
db = get_db()
query = "SELECT FROM archives ORDER BY created_at DESC"
cur = db.execute(query)
archives = cur.fetchall()
return render_template('index.html', archives=archives)
添加档案
@app.route('/add', methods=['POST'])
def add_archive():
title = request.form['title']
category = request.form['category']
content = request.form['content']
status = '草稿' 默认状态
db = get_db()
db.execute('INSERT INTO archives (title, category, content, status) VALUES (?, ?, ?, ?)',
(title, category, content, status))
db.commit()
return redirect(url_for('index'))
更新档案状态(流程流转核心)
@app.route('/update_status/', methods=['POST'])
def update_status(archive_id):
new_status = request.form['status']
db = get_db()
db.execute('UPDATE archives SET status = ? WHERE id = ?', (new_status, archive_id))
db.commit()
return redirect(url_for('index'))
删除档案
@app.route('/delete/')
def delete_archive(archive_id):
db = get_db()
db.execute('DELETE FROM archives WHERE id = ?', (archive_id,))
db.commit()
return redirect(url_for('index'))
if __name__ == '__main__':
init_db() 启动时初始化数据库
app.run(debug=True)
上述代码定义了档案的流转逻辑。系统预设了“草稿”、“审核中”、“已归档”和“已驳回”四种状态。通过update_status路由,我们可以实现档案在不同状态之间的流转,这是流程管理系统的核心功能。

为了确保系统具备良好的可操作性和视觉效果,我们将使用Bootstrap 5框架来构建前端页面。请在templates文件夹下创建index.html文件,并写入以下代码。该页面包含档案录入表单、状态统计看板以及档案列表展示,支持直接在页面上进行状态变更操作。
档案数据流程管理系统
档案数据流程管理系统
新建档案
档案列表与流程状态
>
ID
标题
分类
内容摘要
当前状态
创建时间
流程操作
管理
{% for archive in archives %}
{{ archive.id }}
{{ archive.title }}
{{ archive.category }}
{{ archive.content }}
{% if archive.status == '草稿' %}
{{ archive.status }}
{% elif archive.status == '审核中' %}
{{ archive.status }}
{% elif archive.status == '已归档' %}
{{ archive.status }}
{% elif archive.status == '已驳回' %}
{{ archive.status }}
{% endif %}
{{ archive.created_at }}
删除
{% else %}
暂无档案数据,请在上方面板添加。
{% endfor %}
在前端代码中,我们利用Jinja2模板语法对档案的状态进行了判断渲染。不同状态下显示的徽章颜色不同,且操作按钮会根据当前状态动态变化。例如,只有状态为“草稿”时,才会显示“提交审核”按钮;只有状态为“审核中”时,才会显示“通过归档”和“驳回”按钮。这种设计强制用户遵循预设的业务流程进行操作。
代码编写完成后,即可启动系统进行验证。请确保当前终端位于项目根目录下,且虚拟环境处于激活状态,执行以下命令启动Flask开发服务器:
python app.py
当终端显示Running on http://127.0.0.1:5000时,说明系统已成功启动。此时,请打开浏览器访问http://127.0.0.1:5000。
第一步:创建档案
在页面顶部的“新建档案”卡片中,输入标题“2023年度员工入职合同”,选择分类“合同文件”,输入内容摘要“包含所有部门新员工签署的劳动合同”。点击创建档案按钮。此时页面下方的列表中会出现该条记录,且状态默认为灰色的“草稿”。
第二步:流程流转测试
找到刚才创建的档案,在“流程操作”列点击提交审核按钮。页面刷新后,该档案的状态将变为黄色的“审核中”,操作按钮变为“通过归档”和“驳回”。点击驳回,状态变为红色的“已驳回”,操作按钮变为“重新修改”。点击重新修改,状态回到“草稿”。再次提交审核并点击通过归档,状态最终变为绿色的“已归档”,此时不再有任何操作按钮,表示流程已结束。
第三步:数据持久化验证
关闭终端中的程序(Ctrl+C),然后重新运行python app.py。刷新浏览器页面,确认之前录入和修改状态的档案数据依然存在,这证明SQLite数据库已成功保存了所有业务数据。
虽然上述代码在开发环境下运行良好,但若要投入生产使用,还需注意以下几点安全与性能优化:
1. 关闭调试模式:在app.py最后一行将app.run(debug=True)修改为app.run(debug=False),防止源代码泄露。
2. 使用生产级WSGI服务器:不要直接使用Flask自带的开发服务器处理高并发请求。请安装Gunicorn(Linux)或Waitress(Windows),例如使用命令pip install gunicorn,然后通过gunicorn -w 4 -b 0.0.0.0:8000 app:app来启动服务。
3. 数据库备份:定期备份生成的archive.db文件。由于SQLite是单文件数据库,直接复制该文件即可完成冷备份。
2026年档案管理软件,别等法规来敲门才想起找钥匙