import os, sys, json
os.chdir(os.path.join(os.path.dirname(__file__), "..", ".."))
sys.path.insert(0, os.getcwd())
from app.core.database import SessionLocal
from app.models.project import ImageAsset
from app.services.image_capture.annotate import annotate_generated_asset

BID = "97b306e5-a90b-4879-ad95-70af89d93763"
AID = "c82a4c1f-55ef-40f1-8993-6657cdbf46d7"
db = SessionLocal()
try:
    a = db.get(ImageAsset, BID)
    print("before:", repr(a.input_image_ids), "intermediate=", a.is_intermediate)
    annotate_generated_asset(a, pipeline_role=a.pipeline_role, stage=a.stage,
                             input_image_ids=[AID],
                             pipeline_metadata={"lineage_resolved":"structural_key"})
    print("in-mem after annotate:", repr(a.input_image_ids))
    print("dirty?", a in db.dirty)
    db.commit()
    print("committed")
    db.expire_all()
    a2 = db.get(ImageAsset, BID)
    print("after re-get:", repr(a2.input_image_ids))
except Exception as e:
    import traceback; traceback.print_exc()
finally:
    db.close()
