feat(ai): issue verified application preview decisions
This commit is contained in:
@@ -8,6 +8,7 @@ from sqlalchemy import or_, select
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from app.api.deps import CurrentUserContext
|
||||
from app.models.ai_application_preview import AIApplicationPreviewDecision
|
||||
from app.models.expense_case import BusinessEvent
|
||||
from app.models.financial_record import ExpenseClaim
|
||||
from app.schemas.reimbursement import TravelReimbursementCalculatorRequest
|
||||
@@ -646,6 +647,8 @@ class UserAgentApplicationPersistenceMixin:
|
||||
*,
|
||||
action_type: str,
|
||||
business_event: BusinessEvent,
|
||||
preview_decision: AIApplicationPreviewDecision | None = None,
|
||||
action_request_id: str = "",
|
||||
) -> None:
|
||||
if trusted_current_user is None:
|
||||
return
|
||||
@@ -656,6 +659,8 @@ class UserAgentApplicationPersistenceMixin:
|
||||
trusted_current_user,
|
||||
action_type=action_type,
|
||||
business_event=business_event,
|
||||
preview_decision=preview_decision,
|
||||
action_request_id=action_request_id,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
@@ -727,6 +732,8 @@ class UserAgentApplicationPersistenceMixin:
|
||||
*,
|
||||
submit: bool,
|
||||
learning_current_user: CurrentUserContext | None = None,
|
||||
learning_preview_decision: AIApplicationPreviewDecision | None = None,
|
||||
learning_action_request_id: str = "",
|
||||
) -> ExpenseClaim:
|
||||
current_user = self._build_application_current_user(payload)
|
||||
previous_status = str(claim.status or "").strip()
|
||||
@@ -771,6 +778,8 @@ class UserAgentApplicationPersistenceMixin:
|
||||
learning_current_user,
|
||||
action_type="save_draft",
|
||||
business_event=draft_event,
|
||||
preview_decision=learning_preview_decision,
|
||||
action_request_id=learning_action_request_id,
|
||||
)
|
||||
self.db.commit()
|
||||
self.db.refresh(claim)
|
||||
@@ -794,6 +803,8 @@ class UserAgentApplicationPersistenceMixin:
|
||||
learning_current_user,
|
||||
action_type="submit",
|
||||
business_event=event,
|
||||
preview_decision=learning_preview_decision,
|
||||
action_request_id=learning_action_request_id,
|
||||
)
|
||||
),
|
||||
)
|
||||
@@ -811,6 +822,8 @@ class UserAgentApplicationPersistenceMixin:
|
||||
*,
|
||||
submit: bool,
|
||||
learning_current_user: CurrentUserContext | None = None,
|
||||
learning_preview_decision: AIApplicationPreviewDecision | None = None,
|
||||
learning_action_request_id: str = "",
|
||||
) -> ExpenseClaim:
|
||||
current_user = self._build_application_current_user(payload)
|
||||
access_policy = ExpenseClaimAccessPolicy(self.db)
|
||||
@@ -885,6 +898,8 @@ class UserAgentApplicationPersistenceMixin:
|
||||
learning_current_user,
|
||||
action_type="save_draft",
|
||||
business_event=draft_event,
|
||||
preview_decision=learning_preview_decision,
|
||||
action_request_id=learning_action_request_id,
|
||||
)
|
||||
self.db.commit()
|
||||
self.db.refresh(claim)
|
||||
@@ -904,6 +919,8 @@ class UserAgentApplicationPersistenceMixin:
|
||||
learning_current_user,
|
||||
action_type="submit",
|
||||
business_event=event,
|
||||
preview_decision=learning_preview_decision,
|
||||
action_request_id=learning_action_request_id,
|
||||
)
|
||||
),
|
||||
)
|
||||
@@ -1286,6 +1303,8 @@ class UserAgentApplicationMixin(UserAgentApplicationSlotMixin, UserAgentApplicat
|
||||
*,
|
||||
risk_flags: list[str],
|
||||
learning_current_user: CurrentUserContext | None = None,
|
||||
learning_preview_decision: AIApplicationPreviewDecision | None = None,
|
||||
learning_action_request_id: str = "",
|
||||
) -> UserAgentResponse:
|
||||
facts = self._resolve_expense_application_facts(payload)
|
||||
step = self._resolve_expense_application_step(payload, facts)
|
||||
@@ -1299,6 +1318,8 @@ class UserAgentApplicationMixin(UserAgentApplicationSlotMixin, UserAgentApplicat
|
||||
editable_claim,
|
||||
submit=step == "submitted",
|
||||
learning_current_user=learning_current_user,
|
||||
learning_preview_decision=learning_preview_decision,
|
||||
learning_action_request_id=learning_action_request_id,
|
||||
)
|
||||
facts["application_edit_mode"] = "true"
|
||||
elif step == "submitted":
|
||||
@@ -1312,6 +1333,8 @@ class UserAgentApplicationMixin(UserAgentApplicationSlotMixin, UserAgentApplicat
|
||||
facts,
|
||||
submit=True,
|
||||
learning_current_user=learning_current_user,
|
||||
learning_preview_decision=learning_preview_decision,
|
||||
learning_action_request_id=learning_action_request_id,
|
||||
)
|
||||
else:
|
||||
application_claim = self._create_expense_application_record(
|
||||
@@ -1319,6 +1342,8 @@ class UserAgentApplicationMixin(UserAgentApplicationSlotMixin, UserAgentApplicat
|
||||
facts,
|
||||
submit=False,
|
||||
learning_current_user=learning_current_user,
|
||||
learning_preview_decision=learning_preview_decision,
|
||||
learning_action_request_id=learning_action_request_id,
|
||||
)
|
||||
if application_claim is not None:
|
||||
facts["application_no"] = application_claim.claim_no
|
||||
|
||||
Reference in New Issue
Block a user