From 1ff74e3ffb6b072eb75549ec14e4bfdd6ab7a8cd Mon Sep 17 00:00:00 2001 From: Ireneusz Bachanowicz Date: Fri, 18 Jul 2025 01:44:17 +0200 Subject: [PATCH] feat: Add JiraAnalysisResponse model and update handlers to use it for analysis record serialization --- api/handlers.py | 7 ++----- jira_analyses.db | Bin 16384 -> 28672 bytes llm/models.py | 17 ++++++++++++++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/api/handlers.py b/api/handlers.py index a41e0c5..9b22458 100644 --- a/api/handlers.py +++ b/api/handlers.py @@ -2,7 +2,7 @@ from fastapi import APIRouter, Request, HTTPException, Depends from fastapi.responses import JSONResponse from typing import Dict, Any import config -from llm.models import LLMResponse, JiraWebhookPayload +from llm.models import LLMResponse, JiraWebhookPayload, JiraAnalysisResponse from database.database import get_db_session # Removed Session import here from sqlalchemy.orm import Session # Added correct SQLAlchemy import from database.crud import get_all_analysis_records, delete_all_analysis_records, get_analysis_by_id, create_analysis_record @@ -86,7 +86,4 @@ async def get_analysis_record_endpoint(record_id: int, db: Session = Depends(get record = get_analysis_by_id(db, record_id) if not record: raise HTTPException(status_code=404, detail="Analysis record not found") - return JSONResponse( - status_code=200, - content=record.dict() # Ensure proper data serialization - ) \ No newline at end of file + return JiraAnalysisResponse.model_validate(record) \ No newline at end of file diff --git a/jira_analyses.db b/jira_analyses.db index 64627cbef8dfcd48163c5cc70f1a11094342da3c..f913f03b4bbf456677f22f200ceca9c436416d62 100644 GIT binary patch literal 28672 zcmeI5&u<&Y6~{?2wqQ4j3KWG8g@Fh5AWNYb{**!jhC@koC0i6#idOui?qaw*6vtZb zu=|4&9r(}!J@jUve?Sg7^$+M@kpCk8K(09ixul1FXGzMWY$ZM#@momC-I<;D=6&Y9 zSq+zuI{fpV3MF;5-xnbj6TeL)lZnrX5{blB{4U~mx}|XN!Sn>L$(iHJ4zDJ%!+(8* z+SEt?O?>?Ck3Yo=Z%lv*FaajO1egF5U;<2l2`~XB@U{fbQj0fg%gMk0UU`l@Q)kvQ z7HPP_Zt^@ntMBWmu`Ttm8bE^wu@aP>xUIXSvS zu`|~&^$QxEH>q+~{_!licw>1v`On{lqT|Xrk#i>t6Z!4h=3f0`pRZq24s31L|5R_$ zezQ&c5BBylgyJb3I;yp{c53srK`6o~cw^PLVG#BE!XHt){tz-}AV#hh z4&6Hh$k_|VY%mTsI?x^{rV$}sNfC(@GCcp%k025#WOyC_SaCHG4ypp_*eQN3Z#M1wke#8rJOn?b60Vco%m;e)C z0!)AjFaajO1en0DfWVbhGMP%5{lY>jb?w@C{r_!Z>4&B7mcIQJ7|13t0Vco%m;e)C z0!)AjFaajO1egF5c&`Y2n7WzVIc%&|%9Ubj_GIBVshiiPH6}Mdx%hPgKfEykCcp%k z025#W?+$^NkCPuJZvH`jbw5$7B@)v+_dt4%@{YHV;D>BN?JG_FZ~o&bThoZP{VWZY zBO>3IuVh~2YAV<m z+l_)(1s)wqITX~0Kro)H7E(d$R*vRRt=fb3PP0{|Lye9$gl8*Y$^30 zT5e-4S8C_W)k3~ns$@UIS?)DGo6YS_L(Aj4E6j%d!FY4s8i9?o<#B;K(5?FnzII;j8Y*bOLDO%wq&laL3r?ox}|w zMmR&b6h>h6b%&bsxK-K~p`gQ1p28i1o*EErqLwr&O`lf3w6&}K>K}8t&D`DG3tBzs zs^_qMQ|UoZ;M>EfIgq|EQ$Vn~N>)R6lq>0za%nA}Utj-hJy$B1EV_LmAoBB$oj(tV zxA29FO)td6Mmx7rEtRX~+#6#eZ;fN(m0>w-FLo3hagNO!qVXv`($O-eR(U4u&>fAv z0wXF-VIR(Em^pL4Xue~OcD4@MyX|bDQYc~M5jdvs@W^-pqG}YMHa&?M8o?MLFtW6} zjKHyb(mpX>4tK@`XB^6S``Ag*3memB*Vlb&iLSu$E#Zc6!Q&ocFC2fnn~QEjn;GA6 zxHPsKwDVw-IwPvxTfuYyCq+nT%)+KoPe5<%htm*{%6L0^L_G;9sD%I4?wKeQ9gXJj zOA|(f1bR5_G=f}(=+oUP4g{r9wY%Jp)dUfUscvl9RMBaS(NTdNjY&eSq*F|dCZcRT z#Ho{ocODyOy=;5#RwZAelg$;lwVC!^(UER|S^r5ojd?0P{w@J?7idY` zjD|A4IS80^>`58lD1UjvGlC~1O^fpx|J=LRv&DGEPrsPfwl~pc>T}o|H)fxd5hQoy#Akg ztMI*E{}-zz{N%IcLNQk?&aVIGYSwxEKl7IsA2I4=Vrw diff --git a/llm/models.py b/llm/models.py index 624d146..82f1048 100644 --- a/llm/models.py +++ b/llm/models.py @@ -53,4 +53,19 @@ class AnalysisFlags(BaseModel): } ) except Exception as e: - logger.error(f"Failed to track model usage: {e}") \ No newline at end of file + logger.error(f"Failed to track model usage: {e}") +from pydantic import BaseModel, Field +from datetime import datetime + +class JiraAnalysisResponse(BaseModel): + model_config = ConfigDict(from_attributes=True) + id: int + issue_key: str + status: str + issue_summary: str + request_payload: dict + analysis_result: Optional[dict] = None + created_at: datetime + updated_at: datetime + error_message: Optional[str] = None + raw_response: Optional[dict] = None \ No newline at end of file