Appearance
发票 / 合同: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-gateway、DocumentProcessingService - Poller、
DtmsAuthService、DtmsClient、Redis、DTMS、本地 DB
业务流程图
加载图表…
时序图(Upload → Apply)
加载图表…
时序图:Revert
加载图表…
DTMS API 对照
| 步骤 | Liquia | HTTP | Path | Bearer |
|---|---|---|---|---|
| 上传 | uploadFiles | POST | /files?type=INVOICE|CONTRACT | 是 |
| 转换 | convertDocumentProcessingJob | POST | /document-processing-jobs/convert | 是 |
| 查询 | getDocumentProcessingJob | GET | /document-processing-jobs/{id}?includeExtractedData= | 是 |
| 更新 | updateDocumentProcessingJob | PATCH | /document-processing-jobs/{id} | 是 |
| 校验 | validateDocumentProcessingJob | POST | /document-processing-jobs/{id}/validate | 是 |
| 应用 | applyDocumentProcessingJob | POST | /document-processing-jobs/{id}/apply | 是 |
| 拒绝 | declineDocumentProcessingJob | POST | /document-processing-jobs/{id}/decline | 是 |
| CP | searchCounterparties / createCounterparty | POST | /counterparties/search · /counterparties | 是 |
本地数据影响
Document.dtmsFileId、dtmsStatementJobId(字段复用存 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.tsapps/api/src/orchestration/documents/document-parse-poller.service.ts- Documents controller