Files
Anton_wireframe/app/services/__pycache__/llm_parser.cpython-312.pyc
T

71 lines
13 KiB
Plaintext
Raw Normal View History

Ë
Á×h£0ãóŒddlZddlZddlmZddlZddlmZddlm Z m
2025-09-25 17:00:38 +01:00
Z
m Z m Z m
Z
ddlmZddlmZmZddlmZGdd «Zy)
éN)ÚOptional)Úget_db_session)Ú
CompanyMemberÚ CompanyTableÚInvestorMemberÚ
InvestorTableÚ SectorTable)Ú
ChatOpenAI)Ú CompanyDataÚ InvestorData)ÚSessionc ó®eZdZdZdededefdZdedede fdZ
2025-09-25 17:00:38 +01:00
ddede d e de
fd
Z dd ej d ed
e deee zfdZdde fdZdde fdZy)ÚInvestorProcessorcóâttjd«ddd¬«|_|jj t
«|_|jj t«|_y)OPENROUTER_API_KEYzhttps://openrouter.ai/api/v1zgoogle/gemini-2.5-flash-liter)Úapi_keyÚbase_urlÚmodelÚ temperature) r
ÚosÚgetenvÚllmÚwith_structured_outputr Úinvestor_structured_llmr Úcompany_structured_llm)Úselfs úN/home/oluwasanmi/Documents/Work/MKD/anton_wireframe/app/services/llm_parser.pyÚ__init__zInvestorProcessor.__init__sTÜÜ—I‘IÐô 
ˆŒð(,§x¡x×'FÑ'FÄ|Ó'TˆÔ$Ø&*§h¡h×&EÑ&EÄkÓ&RˆÕÚdbÚ sector_nameÚreturncóê|jt«jtj|k(«j «}|s-t|¬«}|j |«|j
«|S)z%Get existing sector or create new one)Úname)Úqueryr Úfilterr$ÚfirstÚaddÚflush)rr r!Úsectors rÚ_get_or_create_sectorz'InvestorProcessor._get_or_create_sectorsUàœ+Ó&×-¬k×.>Ñ.>À+Ñ.MÓN×VˆÙÜ  kÔ2ˆFØ F‰F6ŒNØ H‰HŒJ؈
rÚ
investor_datac
óŽt|jj|jj|jj|jj
|jj |jj|jj|jj¬«}|j|«|j«|jD]J}t|j|j|j|j ¬«}|j|«ŒL|j"D]9}|j%||j«}|j"j'|«Œ;|j(D]@}t+|ggg¬«} |j-|| d¬«}
|j(j'|
«ŒB|S)zSave investor data to database)r$Ú descriptionÚaumÚcheck_size_lowerÚcheck_size_upperÚgeographic_focusÚ stage_focusÚnumber_of_investments)r$ÚroleÚemailÚ investor_id)ÚcompanyÚsectorsÚmembersÚ investorsT)Úskip_investors)rÚinvestorr$r.r/r0r1r2r3r4r(r)Ú team_membersrr5r6Úidr9r+ÚappendÚportfolio_companiesr Ú_save_company_to_db) rr r,r=Ú member_dataÚmemberÚ sector_datar*Úcompany_schemaÚ company_datar8s rÚ_save_investor_to_dbz&InvestorProcessor._save_investor_to_db(sô
×'×%×.××&×*×3×%×.×:Ø"/×"8Ñ"8×"NÑ"Nô 
ˆð ˆØ
Œ
ð ˆKÜ × ×!×$ŸK™Kô ˆ
F‰F6 ð)× ,ˆ×°K×4DÑ4DÓEˆFØ × Ñ × # FÕ 
,× 9ˆØØô ˆ ×.¨r°<ÐPTÐUˆ × Õ ˆrrGr<cóh|jt«jtj|jjk(«j «}|r|St|jj|jj |jj|jj|jj|jj¬«}|j|«|j«|jD]W}|jsŒt|j|j|j |j"¬«}|j|«ŒY|j$D]9}|j'||j«} |j$j)| «Œ;|s||j*D]m}
|jt,«jt,j|
jk(«j «} | sŒS|j*j)| «Œo|S)zSave company data to database)r$ÚindustryÚlocationr.Ú founded_yearÚwebsite)r$Úlinkedinr5Ú
company_id)r%rr&r$r8r'rJrKr.rLrMr(r)r:rrNr5r?r9r+r@r;r) rr rGr<Úexisting_companyr8rCrDrEr*r,Úexisting_investors rrBz%InvestorProcessor._save_company_to_dbWð
H‰H”\Ó
‰V”L××)=Ñ)=×)BÑ)BÑ
‰U ñ
Ø Ø× ×

ˆð ˆØ
Œ
ð ˆKØ×ÓÜ$×(×$×&Ÿz™zô ð v•ð ð +ˆ×°K×4DÑ4DÓEˆ O‰O× "  
Ø!-×!7Ñ!7ò
@
ð—H‘Hœ]Ó‘VœM×.°-×2DÑ2DÑU“Wð
×%×,Ð->Õ
@ðˆrÚrowÚrow_idxÚ is_investorc ƒóÎKi}|j«D]s\}}tj|«sŒt|«j dd«j dd«j dd«}dj d|D««}|||<Œudj |j«Dcgc] \}}|d|Œc}}«} t
d |d
zd «|r$|jj|«ƒd {} n#|jj|«ƒd {} | r| j«Sy cc}}w7ŒA7Œ#t$r}
t
2025-09-25 17:00:38 +01:00
d
|d
zd|
«Yd }
~
y d }
~
wwxYw­w)zProcess a single row of dataú
ú ú
ú Úc3óDK|]}t|«dk\s|dvr|Œy­w)é )rVrXrYN)Úord)Ú.0Úchars rú <genexpr>z1InvestorProcessor._process_row.<locals>.<genexpr>s+èø€ò&àܘ4“y B¨$Ð2DÑ*Dôñ&ùs z, ú: zProcessing row éz...NúError processing row ) ÚitemsÚpdÚnotnaÚstrÚreplaceÚjoinÚprintrÚainvokerÚ
model_dumpÚ Exception) rrRrSrTÚ cleaned_rowÚkeyÚvalueÚ clean_valueÚrow_strÚresultÚes rÚ _process_rowzInvestorProcessor._process_rowŽseèø€ð
ˆ ØŸ)™)›+ò /‰JˆCÜx‰x˜ô˜“J×& t¨SÓ1×9¸ÓLÈTÐSVÓð!Ÿg™gñ&à +ô&ó ð
$/ ˜CÒ ð —)×ARÑARÓAT×U±:°3¸ ˜u B u Vˆð Ü O G¨a¡K =°Ð ØCÀGÓL‘àBÀ7ÓKÙØ×ùóVðMøàKùôò Ü Ð)¨'°A©+¨°b¸¸Ð ûð üse.E%±A8E%Â)D1
Â:E%Ã2D;Ã5D7Ã6#D;ÄD9ÄD;Ä/E%Ä7D;Ä9D;Ä; E"ÅEÅE%ÅE"Å"E%Ú
save_to_dbc
ƒófKg}d}|r
t«} d}|j«Dcgc] \}}||fŒ }}}tdt|«|«D]6} || | |z}
|
Dcgc]\}}|j ||d¬«Œ} }}t j | ddiŽƒd{} t|
| «D\\}}}
t|