网站首页/ 信息中心/ 档案百科/

从零搭建符合企业规范的轻量开源零门槛档案管理系统全流程

发布时间:2026年08月29日 15:30:18 浏览量:0

一、前置准备:明确企业规范核心要求+必备工具

先梳理企业规范的通用必填项,再准备100%可用的开源工具:

二、Docker一键部署(新手首选,零配置环境)

2.1 安装Docker(含Docker Compose)

2.2 拉取并启动轻量档案OnlyOffice Docker镜像

从零搭建符合企业规范的轻量开源零门槛档案管理系统全流程

新建一个名为onlyoffice-archive的文件夹,进入后新建docker-compose.yml,粘贴完整配置:

version: '3.7'
services:
onlyoffice-community-server:
image: onlyoffice/communityserver:12.1.0.1760
container_name: onlyoffice-archive
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./data:/var/www/onlyoffice/Data
- ./logs:/var/log/onlyoffice
environment:
- ONLYOFFICE_LICENSE=FREE
- ONLYOFFICE_DB_TYPE=POSTGRESQL
- POSTGRESQL_SERVER_HOST=onlyoffice-postgres
- POSTGRESQL_SERVER_PORT=5432
- POSTGRESQL_SERVER_DB_NAME=onlyoffice
- POSTGRESQL_SERVER_USER=onlyoffice
- POSTGRESQL_SERVER_PASSWORD=archive123456
onlyoffice-postgres:
image: postgres:14-alpine
container_name: onlyoffice-postgres
restart: always
volumes:
- ./postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=onlyoffice
- POSTGRES_USER=onlyoffice
- POSTGRES_PASSWORD=archive123456

三、企业规范初始化配置

3.1 管理员账号创建

3.2 3级企业档案分类设置

3.3 权限分层配置

3.4 操作日志全留痕开启

四、日常档案管理企业规范落地

4.1 档案上传规范(系统强制配合)

4.2 到期提醒Python脚本(可直接复制使用)

onlyoffice-archive文件夹下新建archive_reminder.py,粘贴完整代码:

import requests
from datetime import datetime, timedelta
配置部分(根据实际修改)
PORTAL_URL = "http://localhost"
ADMIN_EMAIL = "your-admin-email@example.com"
ADMIN_PASSWORD = "your-admin-password"
REMIND_BEFORE_DAYS = 7   提前7天提醒
SMTP_SERVER = "smtp.example.com"   仅需发送邮件时配置
SMTP_PORT = 587
SMTP_USER = "your-sender-email@example.com"
SMTP_PASSWORD = "your-sender-password"
RECIPIENT_EMAILS = ["admin@example.com", "department-head@example.com"]
获取管理员Token
def get_token():
url = f"{PORTAL_URL}/api/2.0/authentication.json"
data = {"email": ADMIN_EMAIL, "password": ADMIN_PASSWORD}
response = requests.post(url, json=data)
return response.json()["response"]["token"]
获取所有带到期日期的档案
def get_expiring_files(token):
url = f"{PORTAL_URL}/api/2.0/files.json"
headers = {"Authorization": f"Bearer {token}"}
params = {"filter": "customFields"}
response = requests.get(url, headers=headers, params=params)
files = response.json()["response"]
expiring_files = []
today = datetime.now().date()
remind_date = today + timedelta(days=REMIND_BEFORE_DAYS)
for file in files:
custom_fields = file.get("customFields", [])
expiry_date_str = None
file_code = None
for field in custom_fields:
if field["label"] == "到期日期":
expiry_date_str = field["value"]
elif field["label"] == "档案编号":
file_code = field["value"]
if expiry_date_str:
try:
expiry_date = datetime.strptime(expiry_date_str, "%Y-%m-%d").date()
if remind_date >= expiry_date >= today:
expiring_files.append({
"name": file["title"],
"code": file_code,
"expiry_date": expiry_date_str,
"link": f"{PORTAL_URL}/Products/Files/DocEditor.aspx?fileId={file['id']}"
})
except ValueError:
continue
return expiring_files
主函数
if __name__ == "__main__":
token = get_token()
expiring_files = get_expiring_files(token)
if expiring_files:
print("即将到期的档案:")
for file in expiring_files:
print(f"编号:{file['code']} | 名称:{file['name']} | 到期日:{file['expiry_date']} | 链接:{file['link']}")
如需发送邮件,可取消以下代码注释
import smtplib
from email.mime.text import MIMEText
subject = f"档案到期提醒({REMIND_BEFORE_DAYS}天内)"
content = "\n".join([f"- {f['code']}:{f['name']},到期日:{f['expiry_date']},链接:{f['link']}" for f in expiring_files])
msg = MIMEText(content, "plain", "utf-8")
msg["Subject"] = subject
msg["From"] = SMTP_USER
msg["To"] = ",".join(RECIPIENT_EMAILS)
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls()
server.login(SMTP_USER, SMTP_PASSWORD)
server.sendmail(SMTP_USER, RECIPIENT_EMAILS, msg.as_string())
文教体育用品企业档案整理:从乱炖到满汉全席的逆袭之路
文教体育用品企业档案整理:从乱炖到满汉全席的逆袭之路
哎,说到档案整理,我猜你脑子里现在可能是一团乱麻,或者像我家过年大扫除时从床底下扒拉出来的那个塞满了各种过期单据、老照片和不明小物件的破纸箱——东西都知道重要,但真上手,只想原地摆烂。尤其是咱们文教体...
2026年08月29日 15:30:18
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818