agentic_huge_data_base / wiki
页面 Paperless-ngx · 9 国际化·DeepWiki 中文全文译文

9 · 国际化(Internationalization)

文档归档与消费管道 · 聚焦本章的模块关系、源码依据与实现要点。

项目Paperless-ngx 章节9 状态全文译文 模块界面与交互、文档对象与元数据、系统架构、工作流与编排
源码线索
  • src-ui/src/locale/messages.cs_CZ.xlf
  • src-ui/src/locale/messages.de_DE.xlf
  • src-ui/src/locale/messages.es_ES.xlf
  • src-ui/src/locale/messages.fr_FR.xlf
  • src-ui/src/locale/messages.it_IT.xlf
  • src-ui/src/locale/messages.nl_NL.xlf
  • src-ui/src/locale/messages.pt_BR.xlf
  • src-ui/src/locale/messages.pt_PT.xlf
  • src-ui/src/locale/messages.ro_RO.xlf
  • src-ui/src/locale/messages.ru_RU.xlf
模块标签
  • 界面与交互
  • 文档对象与元数据
  • 系统架构
  • 工作流与编排
  • 记忆与上下文

章节正文

工作流系统

工作流系统

相关源文件

以下文件为本维基页面的生成提供了上下文:

  • paperless.conf.example
  • src-ui/src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html
  • src-ui/src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.scss
  • src-ui/src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.spec.ts
  • src-ui/src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts
  • src-ui/src/app/data/workflow-action.ts
  • src-ui/src/app/data/workflow-trigger.ts
  • src/documents/admin.py
  • src/documents/apps.py
  • src/documents/consumer.py
  • src/documents/file_handling.py
  • src/documents/models.py
  • src/documents/parsers.py
  • src/documents/signals/handlers.py
  • src/documents/tests/test_api_workflows.py
  • src/documents/tests/test_consumer.py
  • src/documents/tests/test_file_handling.py
  • src/documents/tests/test_workflows.py
  • src/documents/workflows/__init__.py
  • src/documents/workflows/actions.py
  • src/documents/workflows/mutations.py
  • src/documents/workflows/utils.py

Paperless-ngx 中的工作流系统是一个灵活的自动化引擎,允许用户为文档管理定义"如果这样,则那样"的规则。它能够根据文档生命周期事件或计划任务,自动完成元数据分配、通知发送以及与外部服务的集成。

系统总览

工作流引擎通过将 WorkflowTrigger(工作流触发器)条件与文档进行匹配,并执行一系列 WorkflowAction(工作流动作)实体来运行。工作流在关键阶段被处理:在初始入库管线期间、文档被添加或更新时,或者通过周期性后台任务处理计划触发器。

工作流执行生命周期

下图展示了系统如何从文档事件过渡到自动化动作的执行。

工作流执行流程

Paperless-ngx · 工作流执行生命周期 · 图 1
Paperless-ngx · 工作流执行生命周期 · 图 1

来源:src/documents/signals/handlers.py:49-66, src/documents/apps.py:10-33, src/documents/consumer.py:67-87

工作流触发器

触发器定义了工作流被激活的条件。一个工作流可以拥有多个触发器。

触发器类型代码符号描述
入库开始CONSUMPTION在文档保存*之前*运行。可以在入库过程中覆盖元数据(标题、标签等)。
文档已添加ADDED在文档成功保存到数据库后运行。
文档已更新UPDATED每当文档的元数据或内容被修改时运行。
计划任务SCHEDULED基于日期字段运行(例如,"自定义日期 X 前 7 天")。

触发器支持基于文档属性(如 sourcestagscorrespondentdocument_type)以及使用 filter_filename 进行文件名模式匹配的广泛过滤。

有关触发器逻辑和过滤的详细信息,请参见工作流触发器与动作

来源:src/documents/models.py:488-518, src/documents/consumer.py:80-84

工作流动作

动作定义了当触发器匹配时系统执行的操作。动作按照用户定义的顺序执行。

分配与移除

工作流可以自动修改文档元数据。这通过"变更"(mutations)来处理,这些变更要么直接应用于 Document 实例,要么在入库期间运行工作流时应用于 DocumentMetadataOverrides

  • 分配:分配标签、信函方、文档类型、存储路径、所有者或自定义字段。
  • 移除:移除特定标签或清空元数据字段。
外部集成
  • 邮件:使用 Django 的邮件系统发送通知。支持占位符,如 {{document_title}}
  • Webhook:向指定 URL 发送一个 POST 请求,请求体为包含文档元数据的 JSON 载荷。
  • 移至回收站:自动将文档移至回收站(软删除)。

有关占位符模板和动作执行的详细信息,请参见工作流触发器与动作

来源:src/documents/models.py:575-654, src/documents/workflows/mutations.py:10-25, src/documents/workflows/actions.py:58-61

工作流 UI 与 API

工作流系统通过 Paperless-ngx 前端中的专用界面进行管理。

前端编辑对话框

WorkflowEditDialogComponent 提供了一个嵌套式的手风琴界面,用于管理触发器和动作。它允许用户:

  • 定义触发器过滤器(例如,仅对来自"邮件抓取"的文档触发)。
  • 配置计划偏移量(例如,相对于自定义字段的"-30 天")。
  • 拖放动作以重新排序执行。
REST 接口

工作流通过 /api/workflows/ 端点暴露。API 处理工作流、触发器和动作之间多对多关系的复杂嵌套序列化。

有关 UI 实现和 API 端点的详细信息,请参见工作流 UI 与 API

来源:src-ui/src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html:1-109, src/documents/serialisers.py:62-65

数据模型关系

下图将高层工作流概念映射到后端实现的 Django 模型。

工作流实体关系

Paperless-ngx · 数据模型关系 · 图 2
Paperless-ngx · 数据模型关系 · 图 2

来源:src/documents/models.py:448-470, src/documents/models.py:488-518, src/documents/models.py:575-654