零基础落地档案制度建设专项监督数字化系统

一、技术栈选型与架构设计

为了确保系统轻量且易于维护,本文采用Python作为核心开发语言,配合Flask框架提供Web服务,SQLite作为嵌入式数据库。这种组合无需配置复杂的服务器环境,下载Python即可直接运行,非常适合内部快速部署。

系统主要包含三个核心模块:

  • 档案录入模块:用于录入制度文件的基本信息。
  • 监督规则引擎:内置预设逻辑,自动检查档案的完整性与合规性。
  • 结果展示面板:直观展示监督结果与整改建议。

二、开发环境快速初始化

在开始编写代码前,需要准备好基础环境。请确保你的操作系统已安装Python 3.8及以上版本。打开终端或命令提示符,依次执行以下命令安装必要的依赖库。

创建项目目录并进入:

```bash mkdir archive_supervision cd archive_supervision ```

安装Flask框架及日期处理库:

```bash pip install flask flask-sqlalchemy ```

三、数据库模型与表结构设计

我们需要设计两张核心数据表:archives用于存储档案实体,supervision_logs用于存储每次监督的记录。创建名为models.py的文件,并写入以下完整代码:

```python from flask_sqlalchemy import SQLAlchemy from datetime import datetime db = SQLAlchemy() class Archive(db.Model): __tablename__ = 'archives' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) 档案标题 category = db.Column(db.String(50), nullable=False) 档案分类 dept_name = db.Column(db.String(50), nullable=False) 责任部门 create_date = db.Column(db.Date, nullable=False) 归档日期 file_url = db.Column(db.String(200)) 文件路径 status = db.Column(db.String(20), default='Pending') 审核状态 class SupervisionLog(db.Model): __tablename__ = 'supervision_logs' id = db.Column(db.Integer, primary_key=True) archive_id = db.Column(db.Integer, db.ForeignKey('archives.id')) check_item = db.Column(db.String(100)) 检查项名称 result = db.Column(db.String(20)) 检查结果:Pass/Fail detail = db.Column(db.String(500)) 详细描述 check_time = db.Column(db.DateTime, default=datetime.now) ```

四、后端核心监督逻辑实现

创建主程序文件app.py。此文件包含数据库连接配置、监督核心算法以及Web接口。请确保SQLALCHEMY_DATABASE_URI配置了绝对路径,否则可能会报错。

```python import os from flask import Flask, render_template, request, redirect, url_for, flash from models import db, Archive, SupervisionLog from datetime import datetime, date app = Flask(__name__) 配置数据库文件路径,存放在当前目录下的data文件夹 basedir = os.path.abspath(os.path.dirname(__file__)) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data', 'supervision.db') app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SECRET_KEY'] = 'dev-secret-key' db.init_app(app) 核心监督逻辑函数 def run_supervision(archive_id): archive = Archive.query.get(archive_id) logs = [] 规则1:检查责任部门是否为空 if not archive.dept_name or archive.dept_name.strip() == "": logs.append(SupervisionLog( archive_id=archive_id, check_item="责任部门完整性", result="Fail", detail="责任部门字段为空,请补充" )) else: logs.append(SupervisionLog( archive_id=archive_id, check_item="责任部门完整性", result="Pass", detail="部门信息已填写" )) 规则2:检查归档时效性(假设要求必须在7天内归档) 这里模拟当前日期与归档日期的差值检查 if (date.today() - archive.create_date).days > 7: logs.append(SupervisionLog( archive_id=archive_id, check_item="归档时效性", result="Fail", detail="归档时间超过7天,不符合及时性要求" )) else: logs.append(SupervisionLog( archive_id=archive_id, check_item="归档时效性", result="Pass", detail="归档及时" )) 批量保存日志 for log in logs: db.session.add(log) db.session.commit() return logs @app.route('/') def index(): 获取所有档案及最新的检查结果 archives = Archive.query.all() return render_template('index.html', archives=archives) @app.route('/add', methods=['GET', 'POST']) def add_archive(): if request.method == 'POST': try: new_archive = Archive( title=request.form['title'], category=request.form['category'], dept_name=request.form['dept_name'], create_date=datetime.strptime(request.form['create_date'], '%Y-%m-%d').date(), file_url=request.form['file_url'] ) db.session.add(new_archive) db.session.commit() flash('档案添加成功,请执行监督。') return redirect(url_for('index')) except Exception as e: flash(f'添加失败: {str(e)}') return render_template('add.html') @app.route('/supervise/') def supervise(id): logs = run_supervision(id) 更新档案状态 archive = Archive.query.get(id) has_fail = any(log.result == 'Fail' for log in logs) archive.status = 'Non-Compliant' if has_fail else 'Compliant' db.session.commit() flash(f'监督完成,共执行 {len(logs)} 项检查。') return redirect(url_for('index')) 初始化数据库 with app.app_context(): if not os.path.exists(os.path.join(basedir, 'data')): os.makedirs(os.path.join(basedir, 'data')) db.create_all() if __name__ == '__main__': app.run(debug=True, port=5000) ```

五、前端管理界面开发

零基础落地档案制度建设专项监督数字化系统

为了方便操作,我们需要建立简单的HTML页面。请在项目目录下创建templates文件夹,并在其中创建index.htmladd.html

1. 首页列表页 (templates/index.html)

```html C 档案制度监督看板 档案制度建设专项监督看板 新增档案 {% for archive in archives %} {% endfor %}
ID 标题 责任部门 归档日期 状态 操作
{{ archive.id }} {{ archive.title }} {{ archive.dept_name }} {{ archive.create_date }} {% if archive.status == 'Compliant' %} 合规 {% elif archive.status == 'Non-Compliant' %} 不合规 {% else %} 待检查 {% endif %} 执行监督
{% with messages = get_flashed_messages() %} {% if messages %}
{% for message in messages %}

{{ message }}

{% endfor %}
{% endif %} {% endwith %} ```

2. 新增档案页 (templates/add.html)

```html 新增档案 录入新档案
返回列表 ```

六、系统运行与功能验证

所有代码文件准备就绪后,回到终端,确保当前目录在项目根目录下,执行以下命令启动系统:

```bash python app.py ```

看到输出Running on http://127.0.0.1:5000即代表启动成功。打开浏览器访问该地址。

操作验证步骤:

  1. 点击“新增档案”,输入标题,故意留空责任部门,选择一个较旧的归档日期(如2022-01-01),点击保存。
  2. 在列表页找到该条记录,点击右侧的“执行监督”按钮。
  3. 系统将自动跳转回首页,状态栏应显示红色的“不合规”。
  4. 为了验证通过,再次点击“新增档案”,填写完整信息,责任部门填“测试部”,归档日期选今天。
  5. 点击“执行监督”,状态栏应显示绿色的“合规”。

此时,一个具备基础数据录入、规则自动判断、结果反馈的档案制度建设专项监督系统已完全落地。你可以通过修改app.py中的run_supervision函数来增加更复杂的业务逻辑,例如对接真实的文件存储服务或增加邮件报警功能。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统