This commit is contained in:
2026-01-20 20:31:49 +01:00
parent fcb6377b21
commit 8cc19b67f9
2 changed files with 23 additions and 37 deletions

View File

@@ -1,4 +1,5 @@
from trytond.model import ModelSQL, ModelView, fields, Workflow from trytond.model import ModelSQL, ModelView, fields, Workflow
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval from trytond.pyson import Eval
from trytond.wizard import Button from trytond.wizard import Button
import requests import requests
@@ -185,17 +186,28 @@ class AutomationDocument(ModelSQL, ModelView, Workflow):
def run_pipeline(cls, docs): def run_pipeline(cls, docs):
for doc in docs: for doc in docs:
try: try:
if cls.rule_set.ocr_required: metadata = cls.metadata_json
cls.run_ocr([doc])
if cls.rule_set.structure_required and doc.state != "error": if isinstance(metadata, str):
cls.run_structure([doc]) metadata = json.loads(metadata)
if cls.rule_set.table_required and doc.state != "error":
cls.run_tables([doc]) if not isinstance(metadata, dict):
if cls.rule_set.metadata_required and doc.state != "error": logger.info("NOT A JSON STRUCTURE:%s",metadata)
cls.run_metadata([doc])
if doc.state != "error": WeightReport = Pool().get('weight.report')
doc.state = "validated" WeightReport.create_from_json(metadata)
doc.notes = (doc.notes or "") + "Pipeline completed\n"
# if cls.rule_set.ocr_required:
# cls.run_ocr([doc])
# if cls.rule_set.structure_required and doc.state != "error":
# cls.run_structure([doc])
# if cls.rule_set.table_required and doc.state != "error":
# cls.run_tables([doc])
# if cls.rule_set.metadata_required and doc.state != "error":
# cls.run_metadata([doc])
# if doc.state != "error":
# doc.state = "validated"
# doc.notes = (doc.notes or "") + "Pipeline completed\n"
except Exception as e: except Exception as e:
doc.state = "error" doc.state = "error"
doc.notes = (doc.notes or "") + f"Pipeline error: {e}\n" doc.notes = (doc.notes or "") + f"Pipeline error: {e}\n"

View File

@@ -38,32 +38,6 @@ class Incoming(metaclass=PoolMeta):
WR.run_ocr([wr]) WR.run_ocr([wr])
WR.run_metadata([wr]) WR.run_metadata([wr])
metadata = wr.metadata_json
# DEBUG: Vérifiez le type et contenu
print(f"Type de metadata: {type(metadata)}")
print(f"Contenu de metadata: {metadata}")
# Si c'est une chaîne, parsez-la
if isinstance(metadata, str):
try:
metadata = json.loads(metadata)
except json.JSONDecodeError as e:
raise DocumentIncomingProcessError(
gettext('document_incoming.msg_invalid_json',
document=self.rec_name,
error=str(e)))
# Maintenant metadata devrait être un dict
if not isinstance(metadata, dict):
raise DocumentIncomingProcessError(
gettext('document_incoming.msg_no_metadata',
document=self.rec_name))
# Créez le rapport - CORRECT, pas besoin de save() supplémentaire
WeightReport = Pool().get('weight.report')
WeightReport.create_from_json(metadata)
return wr return wr
# @property # @property