Skip to content

发票 / 合同:Document Processing Jobs

概述

发票与合同上传到 DTMS 文件服务后,经 document-processing-jobs 转换、轮询抽取结果,再由用户 apply:更新抽取字段 → validate → apply,并链接/创建 Counterparty,回写 ApArItem 的 DTMS id。

触发入口

动作HTTP
上传POST /api/documents/upload(kind=invoice|contract
应用POST /api/documents/:id/apply
撤销POST /api/documents/:id/revert

Poller 与对账单共用 DocumentParsePollerService

参与方

  • Client、api-gatewayDocumentProcessingService
  • Poller、DtmsAuthServiceDtmsClient、Redis、DTMS、本地 DB

业务流程图

加载图表…

时序图(Upload → Apply)

加载图表…

时序图:Revert

加载图表…

DTMS API 对照

步骤LiquiaHTTPPathBearer
上传uploadFilesPOST/files?type=INVOICE|CONTRACT
转换convertDocumentProcessingJobPOST/document-processing-jobs/convert
查询getDocumentProcessingJobGET/document-processing-jobs/{id}?includeExtractedData=
更新updateDocumentProcessingJobPATCH/document-processing-jobs/{id}
校验validateDocumentProcessingJobPOST/document-processing-jobs/{id}/validate
应用applyDocumentProcessingJobPOST/document-processing-jobs/{id}/apply
拒绝declineDocumentProcessingJobPOST/document-processing-jobs/{id}/decline
CPsearchCounterparties / createCounterpartyPOST/counterparties/search · /counterparties

本地数据影响

  • Document.dtmsFileIddtmsStatementJobId字段复用存 DPJ id)
  • ParsedInvoice / ParsedContract
  • ApArItem.dtmsInvoiceId / dtmsContractId
  • Apply 写入本地 CashFlow 表(仅计数)

异常与补偿

  • 无 corporate/entity 链接 → 400
  • validate 失败 → applyStatus=failed + errors
  • 无 resultInvoiceId/ContractId → DTMS_REQUEST_FAILED

源码索引

  • apps/api/src/orchestration/documents/document-processing.service.ts
  • apps/api/src/orchestration/documents/document-parse-poller.service.ts
  • Documents controller

以 apps/api 代码为准 · 生成规范见 .cursor/skills/liquia-business-docs