| import datetime | |
| from sqlalchemy.orm import Session | |
| from app.database.models_intents import IntentDB | |
| from typing import Any, Dict, Optional | |
| def save_evaluated_intent( | |
| db: Session, | |
| deterministic_id: str, | |
| intent_type: str, | |
| api_payload: Dict[str, Any], | |
| oss_payload: Dict[str, Any], | |
| environment: str, | |
| risk_score: float | |
| ) -> IntentDB: | |
| existing = db.query(IntentDB).filter( | |
| IntentDB.deterministic_id == deterministic_id).one_or_none() | |
| if existing: | |
| existing.evaluated_at = datetime.datetime.utcnow() | |
| existing.risk_score = str(risk_score) | |
| existing.oss_payload = oss_payload | |
| db.add(existing) | |
| db.commit() | |
| db.refresh(existing) | |
| return existing | |
| intent = IntentDB( | |
| deterministic_id=deterministic_id, | |
| intent_type=intent_type, | |
| payload=api_payload, | |
| oss_payload=oss_payload, | |
| environment=environment, | |
| evaluated_at=datetime.datetime.utcnow(), | |
| risk_score=str(risk_score) | |
| ) | |
| db.add(intent) | |
| db.commit() | |
| db.refresh(intent) | |
| return intent | |
| def get_intent_by_deterministic_id( | |
| db: Session, | |
| deterministic_id: str) -> Optional[IntentDB]: | |
| return db.query(IntentDB).filter( | |
| IntentDB.deterministic_id == deterministic_id).one_or_none() | |