diff --git a/deploy/services/upload.py b/deploy/services/upload.py index 960a5fc..c34f155 100644 --- a/deploy/services/upload.py +++ b/deploy/services/upload.py @@ -92,12 +92,20 @@ def store_document(filename: str, file_data: bytes, contract_id: str = "", if contract_id: try: supplements.delete_by_document(contract_id, filename) - except Exception: - pass + except Exception as e: + import logging + logging.getLogger(__name__).warning("delete_by_document failed: %s", e) doc = documents.insert(filename, mime, b64, batch_id=batch_id, zip_source=zip_source, content_hash=content_hash) + parsed = parse_file(filename, file_data) + if parsed and parsed.get("status") == "parsed": + documents.set_parsed(doc["id"], parsed["elements"]) + elif parsed and parsed.get("status") == "error": + documents.set_error(doc["id"], parsed.get("error", "parse failed")) + return {"ok": False, "error": f"parse failed: {parsed.get('error')}", "doc_id": doc["id"]} + if not contract_id: from datetime import datetime now = datetime.now() @@ -109,12 +117,6 @@ def store_document(filename: str, file_data: bytes, contract_id: str = "", supplements.insert(contract_id, doc["id"], supp_type) - parsed = parse_file(filename, file_data) - if parsed and parsed.get("status") == "parsed": - documents.set_parsed(doc["id"], parsed["elements"]) - elif parsed and parsed.get("status") == "error": - documents.set_error(doc["id"], parsed.get("error", "parse failed")) - return { "ok": True, "doc_id": doc["id"], @@ -122,6 +124,7 @@ def store_document(filename: str, file_data: bytes, contract_id: str = "", "filename": filename, "size": len(file_data), "parsed": parsed, + "warning": "file may be unreadable" if not parsed or not parsed.get("element_count") else None, }