综合档案管理系统多门类管理全流程配置校验与落地实操指南

一、前置准备

1.1 环境要求

操作系统:CentOS 7.9+ / Ubuntu 20.04+
运行环境:Python 3.8+、MySQL 5.7+/8.0、Redis 6.0+
基础框架:Django 4.2、Django REST Framework 3.14

1.2 依赖安装

执行以下命令一键安装所有依赖:

```shell pip install django==4.2 djangorestframework==3.14 django-filter==23.1 mysqlclient==2.1.1 redis==4.5.4 ```

安装完成后执行python -V和pip list确认所有依赖版本匹配,避免后续兼容性问题

二、多门类档案元数据配置

2.1 创建门类配置表

在项目apps/archive/models.py文件中新增以下代码,可直接复制使用:

```python from django.db import models class ArchiveCategory(models.Model): CATEGORY_TYPE = ( ("text", "文书档案"), ("tech", "科技档案"), ("person", "人事档案"), ("finance", "会计档案"), ("special", "特种档案"), ) category_code = models.CharField(max_length=32, unique=True, verbose_name="门类编码") category_name = models.CharField(max_length=64, verbose_name="门类名称") category_type = models.CharField(max_length=32, choices=CATEGORY_TYPE, verbose_name="门类大类") meta_fields = models.JSONField(default=dict, verbose_name="自定义元字段") is_active = models.BooleanField(default=True, verbose_name="是否启用") create_time = models.DateTimeField(auto_now_add=True) update_time = models.DateTimeField(auto_now=True) class Meta: db_table = "archive_category" verbose_name = "档案门类配置" verbose_name_plural = verbose_name ```

2.2 执行表结构迁移

操作前必须先备份现有MySQL数据库,避免表结构冲突导致数据丢失,依次执行以下命令:

```shell python manage.py makemigrations archive python manage.py migrate archive ```

2.3 配置各门类自定义元数据

登录系统后台,在档案门类配置模块新增对应门类,自定义元字段采用JSON格式存储,以下为人事档案的标准配置示例,可直接修改复用:

```json { "fields": [ {"field_name": "name", "field_label": "姓名", "field_type": "string", "is_required": true, "sort": 1}, {"field_name": "id_card", "field_label": "身份证号", "field_type": "string", "is_required": true, "sort": 2}, {"field_name": "department", "field_label": "所属部门", "field_type": "select", "option": ["技术部", "市场部", "行政部", "财务部"], "is_required": true, "sort": 3}, {"field_name": "entry_time", "field_label": "入职时间", "field_type": "date", "is_required": true, "sort": 4}, {"field_name": "post", "field_label": "岗位", "field_type": "string", "is_required": false, "sort": 5} ] } ```

其他门类配置仅需修改fields数组内的字段信息即可,field_type支持string、number、date、select、file五种类型。

三、门类权限映射配置

3.1 新增权限关联表

综合档案管理系统多门类管理全流程配置校验与落地实操指南

在apps/archive/models.py中新增角色-门类权限关联表代码:

```python from django.contrib.auth.models import Role class CategoryRolePerm(models.Model): PERM_TYPE = ( ("view", "查看"), ("edit", "编辑"), ("delete", "删除"), ("archive", "归档"), ) role = models.ForeignKey(Role, on_delete=models.CASCADE, verbose_name="关联角色") category = models.ForeignKey(ArchiveCategory, on_delete=models.CASCADE, verbose_name="关联门类") perm = models.CharField(max_length=32, choices=PERM_TYPE, verbose_name="权限类型") class Meta: db_table = "category_role_perm" unique_together = ("role", "category", "perm") verbose_name = "门类角色权限" ```

执行迁移命令更新表结构,操作同2.2步骤。

3.2 前端权限拦截配置

如果前端采用Vue开发,可直接在路由守卫中新增以下拦截逻辑,避免越权访问:

```javascript router.beforeEach((to, from, next) => { const userCategoryPerm = JSON.parse(localStorage.getItem('userCategoryPerm') || '[]') // 拦截档案详情、编辑、归档页的越权访问 if (to.meta.needCategoryPerm) { const currentCategoryCode = to.query.categoryCode const hasPerm = userCategoryPerm.some(item => item.category_code === currentCategoryCode) if (!hasPerm) { next('/403') return } } next() }) ```

后端接口必须同步增加权限校验,禁止仅依赖前端拦截,避免接口被恶意调用

四、分门类归档校验规则配置

不同门类档案的校验规则不同,在项目settings.py中新增全局校验规则配置,可直接复制修改:

```python 分门类归档校验规则,key为门类编码,value为对应校验规则数组 ARCHIVE_CHECK_RULE = { "finance_001": [ {"field": "voucher_no", "rule": "not_empty", "err_msg": "会计档案凭证号不能为空"}, {"field": "voucher_date", "rule": "date_format", "format": "%Y-%m-%d", "err_msg": "凭证日期格式需为YYYY-MM-DD"} ], "person_001": [ {"field": "id_card", "rule": "regex", "regex": r'^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$', "err_msg": "身份证号格式错误"} ], "text_001": [ {"field": "doc_no", "rule": "not_empty", "err_msg": "文书档案文号不能为空"}, {"field": "public_date", "rule": "date_format", "format": "%Y-%m-%d", "err_msg": "发文日期格式需为YYYY-MM-DD"} ] } ```

归档接口调用时,先获取当前档案对应的门类编码,匹配对应规则执行校验,校验不通过直接返回错误信息,禁止非法数据入库。

五、落地效果验证

完成以上配置后,依次执行以下验证步骤,确认功能正常:

  • 新增档案测试:分别录入人事、会计、文书类档案,提交后查看数据库archive表对应字段存储是否正常,自定义元数据是否完整
  • 权限验证:使用仅授权人事档案权限的普通账号,尝试访问会计档案编辑页,确认前端跳转403、后端接口返回403状态码
  • 校验规则验证:录入人事档案时填写16位错误身份证号,确认系统返回对应错误提示,无法提交归档
  • 检索测试:按门类筛选档案,确认返回结果仅包含对应门类数据,无跨门类数据混淆

六、常见问题排查

  • 执行迁移时报表结构冲突:先执行python manage.py migrate --fake archive 0001,再重新执行迁移命令即可
  • 自定义元字段前端不显示:检查JSON配置格式是否正确,可通过https://www.json.cn/ 在线校验格式,避免多余逗号、引号不闭合问题
  • 权限拦截不生效:检查localStorage存储的权限数据是否正确,路由守卫是否正确获取请求路径的categoryCode参数
  • 归档校验规则不触发:检查当前档案的门类编码是否与ARCHIVE_CHECK_RULE中的key完全匹配,区分大小写
AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

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

微信扫码关注安答联动

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

安答联动档案管理系统