baodan/tmp/confirm_flow_snapshots.py

53 lines
1.8 KiB
Python

import json
from app import app
SESSION_ID = "39511ed73abe48208df44b7ab96af166"
with app.app_context():
from insurance.db.compat import db
from insurance.document.evidence import map_extraction_evidence
from insurance.document.service import get_owned_document, load_document_ir
from insurance.models.ppt_session import PptSession
from insurance.plan_data.service import confirm_snapshot, create_draft_from_legacy
session = db.session.get(PptSession, SESSION_ID)
extractions = json.loads(session.extractions_json or "[]")
confirmed = []
for extraction in extractions:
document = get_owned_document(int(extraction["documentId"]), session.user_id)
evidence = map_extraction_evidence(
document.id,
extraction["data"],
load_document_ir(document),
)
extraction["evidence"] = evidence
draft = create_draft_from_legacy(
int(extraction["documentId"]),
session.user_id,
extraction["data"],
evidence_entries=evidence,
)
try:
confirmed.append(confirm_snapshot(draft.id, session.user_id))
except Exception as exc:
print(json.dumps({
"draftId": draft.id,
"error": str(exc),
"details": getattr(exc, "data", {}),
}, ensure_ascii=False), flush=True)
raise
session.snapshot_ids_json = json.dumps([item.id for item in confirmed])
session.extractions_json = json.dumps(extractions, ensure_ascii=False)
session.status = "confirmed"
session.workflow_step = "ready"
db.session.commit()
print(json.dumps({
"sessionId": SESSION_ID,
"snapshotIds": [item.id for item in confirmed],
"statuses": [item.status for item in confirmed],
}, ensure_ascii=False))