Ë
    U´j¯3  ã                  ó†  — U d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ dZd„ Zd*d	„Zd+d„Zd,d„Zd-d„Zd.d„Zdddœ	 	 	 	 	 	 	 	 	 d/d„Zddœ	 	 	 	 	 	 	 	 	 	 	 	 	 d0d„Zddddddiddiddiddidœg d¢dœdddg d¢dœddidddidœddidœg d¢dœddddg d¢dœddiddidddidœdddidœddid œg d ¢dœdœd!œg d!¢dœZd
ed"<   ddddddiddiddiddid#œg d#¢dœdddddiddiddid$œg d$¢dœdœdddddiddiddid%œg d%¢dœdœdddidœd&œg d&¢dœZd
ed'<   ddœ	 	 	 	 	 	 	 	 	 d1d(„Zddœ	 	 	 	 	 	 	 	 	 	 	 d2d)„Zy)3é    )ÚannotationsN)ÚAny)Úconnect)Úutc_now)Úload_secretzgpt-5.6-solc                 ó(  — 	 ddl m}  t	        d«      }t        |j                  d«      xs d«      j                  «       }|st        d«      ‚ | |¬«      t        |j                  d	«      xs t        «      fS # t        $ r}t        d«      |‚d }~ww xY w)
Nr   )ÚOpenAIu,   ÐÐµ ÑƒÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½ Ð¿Ð°ÐºÐµÑ‚ openai.ÚopenaiÚapi_keyÚ u%   API key OpenAI Ð½Ðµ Ð½Ð°ÑÑ‚Ñ€Ð¾ÐµÐ½.)r   Úmodel)	r
   r	   ÚImportErrorÚRuntimeErrorr   ÚstrÚgetÚstripÚDEFAULT_MODEL)r	   ÚexcÚsecretÚkeys       úI/var/www/origus_pro_usr/data/www/origus.pro/core/connectors/openai_api.pyÚ_clientr      s   € ðTÝ!ô ˜Ó"€FÜ
ˆfj‰j˜Ó#Ò) rÓ
*×
0Ñ
0Ó
2€CÙÜÐBÓCÐCá˜#Ô¤ F§J¡J¨wÓ$7Ò$H¼=Ó IÐIÐIøô ò TÜÐIÓJÐPSÐSûðTús   ‚A7 Á7	BÂ BÂBc           	     ó.  — t        j                  |j                  d«      «      j                  «       }t	        «       5 }|j                  d| |t        «       d|f«      }|j                  «        t        |j                  «      cd d d «       S # 1 sw Y   y xY w)Nzutf-8zw
            INSERT INTO ai_runs(purpose,model,created_at,status,input_hash)
            VALUES(?,?,?,?,?)
            Úrunning)
ÚhashlibÚsha256ÚencodeÚ	hexdigestr   Úexecuter   ÚcommitÚintÚ	lastrowid)Úpurposer   Ú
input_textÚdigestÚconÚcurs         r   Ú
_run_startr(      s|   € Ü^‰^˜J×-Ñ-¨gÓ6Ó7×AÑAÓC€FÜ	‹ð 	"cØk‰kðð eœW›Y¨	°6Ð:ó
ˆð 	
‰
ŒÜ3—=‘=Ó!÷	"÷ 	"ò 	"ús   ½ABÂBúdict[str, Any]c                ó’   — t        | dd «      t        | d|«      dœ}t        | dd «      }|dD ]  }t        ||d «      }|€Œ|||<   Œ |S )NÚidr   )Úresponse_idr   Úusage)Úinput_tokensÚoutput_tokensÚtotal_tokens)Úgetattr)Úresponser   Úmetar-   r   Úvalues         r   Ú_usage_metar5   *   sj   € ä˜x¨¨tÓ4Ü˜ 7¨EÓ2ñ€Dô H˜g tÓ,€EØÐØDò 	"ˆCÜ˜E 3¨Ó-ˆEØÑ Ø!S’	ð	"ð €Kó    c                óÖ   — t        «       5 }|j                  dt        j                  |d¬«      | f«       |j                  d«       |j	                  «        d d d «       y # 1 sw Y   y xY w)Nzy
            UPDATE ai_runs
            SET status='ok',result_meta_json=?,error=NULL
            WHERE id=?
            F©Úensure_asciiz€
            UPDATE connectors
            SET status='ok',last_error=NULL
            WHERE connector_key='openai'
            )r   r   ÚjsonÚdumpsr    )Úrun_idr3   r&   s      r   Ú_run_okr=   8   sb   € Ü	‹ð cØ‰ðô
 Z‰Z˜¨5Ô1°6Ð:ô	
ð 	‰ðô	
ð 	
‰
Œ÷!÷ ñ ús   ‹AAÁA(c                óà   — t        «       5 }|j                  dt        |«      d d | f«       |j                  dt        |«      d d f«       |j                  «        d d d «       y # 1 sw Y   y xY w)Nz4UPDATE ai_runs SET status='error',error=? WHERE id=?i¸  z€
            UPDATE connectors
            SET status='error',last_error=?
            WHERE connector_key='openai'
            iÐ  )r   r   r   r    )r<   r   r&   s      r   Ú
_run_errorr?   L   so   € Ü	‹ð cØ‰ØBÜ‹Xetˆ_˜fÐ%ô	
ð 	‰ðô
 ‹Xetˆ_Ðô	
ð 	
‰
Œ÷÷ ñ ús   ‹AA$Á$A-c            	     ó:  — t        «       \  } }| j                  j                  |«      }t        «       }t	        «       5 }|j                  d|t        j                  d|id¬«      f«       |j                  «        d d d «       dt        |d|«      dœS # 1 sw Y   ŒxY w)Nz›
            UPDATE connectors
            SET status='ok',last_test_at=?,last_error=NULL,meta_json=?
            WHERE connector_key='openai'
            r   Fr8   Tr+   )Úokr   )
r   ÚmodelsÚretriever   r   r   r:   r;   r    r1   )Úclientr   ÚobjÚnowr&   s        r   Útest_connectionrG   ]   s“   € Ü“IM€FˆEà
-‰-×
 Ñ
  Ó
'€CÜ
‹)€Cä	‹ð cØ‰ðð Ü—
‘
˜G UÐ+¸%Ô@ðô
	
ð 	
‰
Œ÷ð ¤¨¨d°EÓ!:Ñ;Ð;÷ð ús   ½<BÂB)Úinstructionsr   c                óV  — |j                  «       st        d«      ‚t        «       \  }}|xs |}|xs d}t        | ||«      }	 |j                  j                  |||d¬«      }	|	j                  }
t        |	|«      }t        ||«       d|
||dœS # t        $ r}t        ||«       ‚ d }~ww xY w)Nõ.   ÐŸÑƒÑÑ‚Ð¾Ð¹ Ñ‚ÐµÐºÑÑ‚ Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°.uò   ÐŸÑ€Ð¾Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ€ÑƒÐ¹ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð» ÑÑ‚Ñ€Ð¾Ð³Ð¾ Ð¿Ð¾ Ð¿Ñ€ÐµÐ´Ð¾ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ñ‚ÐµÐºÑÑ‚Ñƒ. ÐÐµ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°Ð¹ Ð¾Ñ‚ÑÑƒÑ‚ÑÑ‚Ð²ÑƒÑŽÑ‰Ð¸Ðµ Ð½Ð¾Ñ€Ð¼Ñ‹ Ð¸ ÑÐ²Ð½Ð¾ Ð¾Ñ‚Ð¼ÐµÑ‡Ð°Ð¹ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ñ‹ Ð¸ÑÑ‚Ð¾Ñ‡Ð½Ð¸ÐºÐ°.F)r   rH   ÚinputÚstoreT)rA   Útextr3   Ú	ai_run_id)r   r   r   r(   Ú	responsesÚcreateÚoutput_textr5   r=   Ú	Exceptionr?   )r#   rM   rH   r   rD   Úconfigured_modelÚchosenÚpromptr<   r2   Úoutputr3   r   s                r   Úanalyze_textrW   t   sØ   € ð :‰:Œ<ÜÐKÓLÐLä&›yÑ€FÐØÒ&Ð&€FØò ð	Pð ô
 ˜ ¨Ó.€FðØ×#Ñ#×*Ñ*ØØØØð	 +ó 
ˆð ×%Ñ%ˆÜ˜8 VÓ,ˆÜ˜ÔàØØØñ	
ð 	
øô ò Ü6˜3ÔØûðús   ÁA	B Â	B(ÂB#Â#B()r   c                ó„  — |j                  «       st        d«      ‚t        «       \  }}|xs |}t        | ||«      }		 |j                  j                  |||ddd||ddœi¬«      }
|
j                  }t        j                  |«      }t        |
|«      }t        |	|«       d|||	dœS # t        $ r}t        |	|«       ‚ d }~ww xY w)	NrJ   FÚformatÚjson_schemaT)ÚtypeÚnameÚschemaÚstrict)r   rH   rK   rL   rM   )rA   Údatar3   rN   )r   r   r   r(   rO   rP   rQ   r:   Úloadsr5   r=   rR   r?   )r#   rM   rH   Úschema_namer]   r   rD   rS   rT   r<   r2   ÚrawÚresultr3   r   s                  r   Ústructured_responserd   œ   së   € ð :‰:Œ<ÜÐKÓLÐLä&›yÑ€FÐØÒ&Ð&€FÜ˜ ¨Ó.€FðØ×#Ñ#×*Ñ*ØØ%ØØàØ)Ø'Ø$Ø"ñ	ðð +ó 
ˆð ×"Ñ"ˆÜ—‘˜C“ˆÜ˜8 VÓ,ˆÜ˜Ôð ØØØñ	
ð 	
øô ò Ü6˜3ÔØûðús   ½A&B$ Â$	B?Â-B:Â:B?ÚobjectFr[   Ústring)ÚcodeÚtitleÚdocument_typeÚrevision)r[   ÚadditionalPropertiesÚ
propertiesÚrequired)ÚcompleteÚpossibly_incompleteÚ
incomplete)r[   ÚenumÚnumberÚarray)r[   Úitems)ÚstatusÚscoreÚreasonsÚlast_visible_section)ÚscopeÚ	exclusionÚ
definitionÚ
conformityÚrequirementÚ	reference)Ú	rule_typeÚlegal_basisÚ	statementÚ
conditionsÚoutcomesÚ
confidence)ÚdocumentÚcompletenessÚrulesÚLEGAL_DOCUMENT_SCHEMA)Úproduct_nameÚproduct_typer#   r„   )r\   r4   Úsource)rg   Úreasonr„   )ÚidentityÚfeaturesÚcandidate_regulationsÚmissing_questionsÚPRODUCT_IDENTITY_SCHEMAc                óF   — d}d| › d|› d|› }t        d||dt        |¬«      S )NuT  Ð¢Ñ‹ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ€ÑƒÐµÑˆÑŒ Ð½Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ð²Ð½Ñ‹Ð¹ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ¹ ÑÐ¸ÑÑ‚ÐµÐ¼Ñ‹ ORIGUS. Ð Ð°Ð±Ð¾Ñ‚Ð°Ð¹ Ð¢ÐžÐ›Ð¬ÐšÐž Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ð½Ð½Ñ‹Ð¼ Ñ‚ÐµÐºÑÑ‚Ð¾Ð¼. ÐÐµ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÑÐ¹ Ð¾Ñ‚ÑÑƒÑ‚ÑÑ‚Ð²ÑƒÑŽÑ‰Ð¸Ðµ ÑÑ‚Ð°Ñ‚ÑŒÐ¸ Ð¸Ð· Ð¿Ð°Ð¼ÑÑ‚Ð¸ Ð¸Ð»Ð¸ Ð²Ð½ÐµÑˆÐ½Ð¸Ñ… Ð·Ð½Ð°Ð½Ð¸Ð¹. Ð¡Ð½Ð°Ñ‡Ð°Ð»Ð° Ð¾Ñ†ÐµÐ½Ð¸ Ð¿Ð¾Ð»Ð½Ð¾Ñ‚Ñƒ Ð¸ÑÑ‚Ð¾Ñ‡Ð½Ð¸ÐºÐ°. Ð•ÑÐ»Ð¸ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ Ð¾Ð±Ñ€Ñ‹Ð²Ð°ÐµÑ‚ÑÑ, Ð¾Ñ‚ÑÑƒÑ‚ÑÑ‚Ð²ÑƒÑŽÑ‚ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ñ‹Ðµ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ, Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑÑ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ð° Ð²Ñ‹Ð³Ð»ÑÐ´Ð¸Ñ‚ Ð½ÐµÐ¿Ð¾Ð»Ð½Ð¾Ð¹ â€” Ð¿Ð¾Ð¼ÐµÑ‚ÑŒ possibly_incomplete/incomplete. Ð˜Ð·Ð²Ð»ÐµÐºÐ°Ð¹ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ ÑŽÑ€Ð¸Ð´Ð¸Ñ‡ÐµÑÐºÐ¸ Ð·Ð½Ð°Ñ‡Ð¸Ð¼Ñ‹Ðµ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð°: Ð¾Ð±Ð»Ð°ÑÑ‚ÑŒ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ, Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ, Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ðµ ÑÐ¾Ð¾Ñ‚Ð²ÐµÑ‚ÑÑ‚Ð²Ð¸Ñ, Ð¾Ð±ÑÐ·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ð²Ð½Ñ‹Ðµ ÑÑÑ‹Ð»ÐºÐ¸. Ð’ÑÐµ Ð¸Ð·Ð²Ð»ÐµÑ‡Ñ‘Ð½Ð½Ñ‹Ðµ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° Ñ‚Ñ€ÐµÐ±ÑƒÑŽÑ‚ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ ÑÐ¿ÐµÑ†Ð¸Ð°Ð»Ð¸ÑÑ‚Ð¾Ð¼ Ð¸ Ð½Ðµ ÑÐ²Ð»ÑÑŽÑ‚ÑÑ Ð¾Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð°Ð¼Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ñ‹.u   ÐšÐ¾Ð´ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°: u(   
Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¸ÑÑ‚Ð¾Ñ‡Ð½Ð¸ÐºÐ°: u!   

Ð¢Ð•ÐšÐ¡Ð¢ Ð˜Ð¡Ð¢ÐžÐ§ÐÐ˜ÐšÐ:
Úlegal_document_extractÚorigus_legal_document©r#   rM   rH   ra   r]   r   )rd   rˆ   )Údocument_coderh   rM   r   rH   r$   s         r   Úextract_legal_documentr—   Y  sU   € ð	Oð ð & m _ð 52Ø27°ð 9+Ø+/¨&ð	2ð ô Ø(ØØ!Ø+Ü$Øôð r6   c                ój   — | |||dœ}d}t        dt        j                  |dd¬«      |dt        |¬«      S )	N)r\   r#   ÚdescriptionÚcharacteristicsu¹  Ð¢Ñ‹ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑÐµÑˆÑŒ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸ÑŽ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ†Ð¸Ð¸ Ð´Ð»Ñ ORIGUS. ÐÐµ Ð²Ñ‹Ð½Ð¾ÑÐ¸ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ ÑŽÑ€Ð¸Ð´Ð¸Ñ‡ÐµÑÐºÐ¾Ðµ Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ÑÑ‚Ð¸ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑÐºÐ¸Ñ… Ñ€ÐµÐ³Ð»Ð°Ð¼ÐµÐ½Ñ‚Ð¾Ð² Ð¸ Ð½Ðµ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°Ð¹ ÑÐµÑ€Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚/Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸ÑŽ. Ð’Ñ‹Ð´ÐµÐ»Ð¸ Ñ„Ð°ÐºÑ‚Ð¸Ñ‡ÐµÑÐºÐ¸Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°ÐºÐ¸ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ†Ð¸Ð¸ Ð¸Ð· Ð²Ð²ÐµÐ´Ñ‘Ð½Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ…, Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶Ð¸ ÐºÐ°Ð½Ð´Ð¸Ð´Ð°Ñ‚Ð½Ñ‹Ðµ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑÐºÐ¸Ðµ Ñ€ÐµÐ³Ð»Ð°Ð¼ÐµÐ½Ñ‚Ñ‹ Ð´Ð»Ñ Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐµÐ¹ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ rules engine Ð¸ ÑÑ„Ð¾Ñ€Ð¼ÑƒÐ»Ð¸Ñ€ÑƒÐ¹ Ð½ÐµÐ´Ð¾ÑÑ‚Ð°ÑŽÑ‰Ð¸Ðµ Ð²Ð¾Ð¿Ñ€Ð¾ÑÑ‹. ÐÐµ Ð¿Ñ€Ð¸Ð´ÑƒÐ¼Ñ‹Ð²Ð°Ð¹ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸ÑÑ‚Ð¸ÐºÐ¸.Úproduct_identificationFé   )r9   ÚindentÚorigus_product_identityr•   )rd   r:   r;   r‘   )r\   r#   r™   rš   r   ÚpayloadrH   s          r   Úidentify_productr    |  sP   € ð ØØ"Ø*ñ	€Gð	Cð ô Ø(ÜZ‰Z˜¨e¸AÔ>Ø!Ø-Ü&Øôð r6   )r#   r   r   r   r$   r   Úreturnr!   )r2   r   r   r   r¡   r)   )r<   r!   r3   r)   r¡   ÚNone)r<   r!   r   rR   r¡   r¢   )r¡   r)   )
r#   r   rM   r   rH   ú
str | Noner   r£   r¡   r)   )r#   r   rM   r   rH   r   ra   r   r]   r)   r   r£   r¡   r)   )
r–   r   rh   r   rM   r   r   r£   r¡   r)   )r\   r   r#   r   r™   r   rš   r)   r   r£   r¡   r)   )Ú
__future__r   r   r:   Útypingr   Úcore_dbr   Úcore_schemar   Úsecret_storer   r   r   r(   r5   r=   r?   rG   rW   rd   rˆ   Ú__annotations__r‘   r—   r    © r6   r   ú<module>r«      s:  ðÞ "ã Û Ý å Ý Ý $à€òJó"óóó(ó"<ð6  $Øñ%àð%ð ð%ð ð	%ð
 ð%ð ó%ð^ ñ-àð-ð ð-ð ð	-ð
 ð-ð ð-ð ð-ð ó-ðb Ø!ð Ø$)à Ð*Ø  (Ð+Ø"(¨(Ð!3Ø# XÐ.ñ	ò Gñ

ð Ø$)ð %ÚMñð ! (Ð+à#Ø$ hÐ/ñð *0°Ð(:ñòñ
ð. à Ø(-ð !)ò!ñ
"ð %+¨HÐ#5Ø"(¨(Ð!3à 'Ø"(¨(Ð!3ñ#ð
 !(Ø"(¨(Ð!3ñ!ð $*¨8Ð"4ñ-ò0ñ7#ñ&
ñEIòT 6ñ[N)Ð ~ó Nðd Ø!ð Ø$)à!'¨Ð 2Ø!'¨Ð 2Ø" HÐ-Ø% xÐ0ñ	òñ
ð" à Ø(-à# XÐ.Ø$ hÐ/Ø% xÐ0ñò
 8ñ	ñ
ð à Ø(-à# XÐ.Ø% xÐ0Ø#)¨8Ð"4ñò
 =ñ	ñ"
ð Ø˜hÐ'ñ
ñW/ò`ñg9+Ð ˜ó 9ðB ñ àð ð ð ð ð	 ð
 ð ð ó ðR ñà
ðð ðð ð	ð
 $ðð ðð ôr6   