ó
    'Áj/  ã                   óÐ   • S SK r S SKrS SKrS SKJrJr  SSS/SS.SS/SS.SS/S	S.S
S/SS.SS/SS.SS/SS.SS/SS.SS/SS.S./ SQSS.rSr " S S\5      r	S\
S\S\4S jrg)é    N)ÚANTHROPIC_API_KEYÚAI_SCAN_MOCK_MODEÚobjectÚstringÚnullu(   A gyÃ¡rtÃ³ cÃ©g neve az adattÃ¡blÃ¡rÃ³l.)ÚtypeÚdescriptionu_   A konkrÃ©t tÃ­pus/modell megnevezÃ©se (pl. 'ECH 15'), NEM az Ã¡ltalÃ¡nos gÃ©ptÃ­pus-kategÃ³ria.uT   A gyÃ¡rtÃ³ sajÃ¡t sorozat-/gyÃ¡ri szÃ¡ma (Serial No. / Ser.-No. / Serien-Nr. / S/N).Únumberub   A nÃ©vleges teherbÃ­rÃ¡s kilogrammban. Ha a tÃ¡blÃ¡n tonnÃ¡ban (t) szerepel, szorozd meg 1000-rel.u{   A gyÃ¡rtÃ¡s/Ã¼zembe helyezÃ©s dÃ¡tuma ISO formÃ¡tumban (Ã‰Ã‰Ã‰Ã‰-HH-NN), KIZÃ�RÃ“LAG ha a nap is egyÃ©rtelmÅ±en olvashatÃ³.u‡   Ha csak Ã©v vagy Ã©v+hÃ³nap olvashatÃ³ (a nap nem), Ã­rd ide a nyers szÃ¶veget vÃ¡ltoztatÃ¡s nÃ©lkÃ¼l, Ã©s a gyartas_datum legyen null.u¦   Egy, a gyÃ¡rtÃ³i gyÃ¡ri szÃ¡mtÃ³l ELKÃœLÃ–NÃœLÅ�, az Ã¼zemeltetÅ‘/tulajdonos Ã¡ltal felragasztott belsÅ‘ azonosÃ­tÃ³/leltÃ¡ri cÃ­mke, HA van ilyen lÃ¡thatÃ³ a kÃ©pen.uš   Minden egyÃ©b hasznos, a fenti mezÅ‘kbe nem illÅ‘ adat (feszÃ¼ltsÃ©g, tÃ¶meg, emelÃ©si magassÃ¡g, teljesÃ­tmÃ©ny stb.) rÃ¶vid, egysoros Ã¶sszefoglalÃ³ban.©ÚgyartoÚtipusÚ
gyari_szamÚteherbiras_kgÚgyartas_datumÚgyartas_datum_nyers_szovegÚleltari_szamÚegyeb_megjegyzesF)r   Ú
propertiesÚrequiredÚadditionalPropertiesu`  A feladatod egy emelÅ‘gÃ©p/ipari berendezÃ©s GYÃ�RTÃ“I ADATTÃ�BLÃ�JÃ�NAK (rating plate/nameplate) elolvasÃ¡sa egy fotÃ³rÃ³l, Ã©s a rajta szereplÅ‘ adatok strukturÃ¡lt kinyerÃ©se.

FONTOS SZABÃ�LYOK:
1. A gÃ©peken gyakran tÃ¶bb matrica/cÃ­mke is talÃ¡lhatÃ³ a gyÃ¡rtÃ³i adattÃ¡bla mellett: hatÃ³sÃ¡gi felÃ¼lvizsgÃ¡lati matricÃ¡k, "Nem megfelelÅ‘" jelzÃ©sek, "Next Inspection" Ã©vkerekek, belsÅ‘ leltÃ¡ri/eszkÃ¶z-azonosÃ­tÃ³ cÃ­mkÃ©k. Ezeket NE keverd Ã¶ssze a gyÃ¡rtÃ³i adattÃ¡blÃ¡val - kizÃ¡rÃ³lag a gyÃ¡rtÃ³ eredeti adattÃ¡blÃ¡jÃ¡t olvasd (jellemzÅ‘en fÃ©m vagy mÅ±anyag tÃ¡bla, rajta a gyÃ¡rtÃ³ cÃ©gneve, cÃ­me, tÃ­pus Ã©s gyÃ¡ri szÃ¡m).
2. Ha egy belsÅ‘, az Ã¼zemeltetÅ‘/tulajdonos Ã¡ltal felragasztott azonosÃ­tÃ³ cÃ­mkÃ©t (pl. leltÃ¡ri szÃ¡m, vonalkÃ³d) is lÃ¡tsz, ami ELKÃœLÃ–NÃœL a gyÃ¡rtÃ³ sajÃ¡t gyÃ¡ri szÃ¡mÃ¡tÃ³l, azt a leltari_szam mezÅ‘be Ã­rd.
3. A teherbÃ­rÃ¡st MINDIG kilogrammban add vissza. Ha a tÃ¡blÃ¡n tonnÃ¡ban (t) van feltÃ¼ntetve, szorozd meg 1000-rel.
4. A gyÃ¡rtÃ¡si dÃ¡tumot csak akkor add vissza teljes dÃ¡tumkÃ©nt (Ã‰Ã‰Ã‰Ã‰-HH-NN), ha a nap is egyÃ©rtelmÅ±en olvashatÃ³. Ha csak Ã©v vagy Ã©v+hÃ³nap szerepel, azt a gyartas_datum_nyers_szoveg mezÅ‘be Ã­rd nyers szÃ¶vegkÃ©nt, a gyartas_datum-ot hagyd null-on.
5. Ha egy mezÅ‘ nem olvashatÃ³ egyÃ©rtelmÅ±en, vagy nem szerepel a tÃ¡blÃ¡n, add vissza null Ã©rtÃ©kkel - SOHA ne talÃ¡lj ki vagy tippelj adatot.
6. A tÃ¡bla felirata bÃ¡rmilyen nyelven lehet (magyar, angol, nÃ©met, koreai, kÃ­nai stb.) - a mezÅ‘k jelentÃ©sÃ©t a tÃ¡blÃ¡n szereplÅ‘ szÃ³ pozÃ­ciÃ³ja/kontextusa alapjÃ¡n azonosÃ­tsd (pl. "Serial No.", "Ser.-No.", "Serien-Nr." mind gyÃ¡ri szÃ¡m).c                   ó   • \ rS rSrSrSrg)ÚAiElemzesHibaé?   uS   Az AI adattÃ¡bla-elemzÃ©s sorÃ¡n fellÃ©pÅ‘, felhasznÃ¡lÃ³nak megjelenÃ­thetÅ‘ hiba.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú!/var/www/website/ai_scan_utils.pyr   r   ?   s   † Ù]Úr!   r   Ú	kep_bytesÚ
media_typeÚreturnc                 ó&  • [         (       a  SSSSSSSSS.$ [        (       d  [        S	5      e[        R                  " [        S
9n[
        R                  " U 5      R                  S5      n UR                  R                  SS[        SSSUUS.S.SSS./S./SS[        S.0S9nUR"                  S:X  a  [        S 5      e[%        S! UR&                   5       S5      nU(       d  [        S"5      e [(        R*                  " U5      $ ! [        R                   a5  n[        SUR                   SUR                   35        [        S5      eSnAf[        R                    a    [        S5      ef = f! [(        R,                   a    [        S#5      ef = f)$u«   ElkÃ¼ld egy adattÃ¡bla-fotÃ³t a Claude vision API-nak, Ã©s visszaadja a felismert mezÅ‘ket dict-kÃ©nt.
Minden mezÅ‘ null, ha az AI nem volt biztos benne - soha nem tippel.u   MOCK GyÃ¡rtÃ³ Kft.zMOCK-TESZT-1000zMOCK-000000iè  Nz2024 (mock adat)uh   Ez egy fejlesztÅ‘i tesztvÃ¡lasz (AI_SCAN_MOCK_MODE=true) - nem valÃ³di AI-elemzÃ©s, nem hÃ­vta az API-t.r   uF   Az AI szkennelÃ©s nincs beÃ¡llÃ­tva a szerveren (hiÃ¡nyzÃ³ API kulcs).)Úapi_keyzutf-8zclaude-opus-4-8i   ÚuserÚimageÚbase64)r   r$   Údata)r   ÚsourceÚtextuW   Olvasd le ennek a gÃ©pnek a gyÃ¡rtÃ³i adattÃ¡blÃ¡jÃ¡t, Ã©s add vissza a kÃ©rt mezÅ‘ket.©r   r-   )ÚroleÚcontentÚformatÚjson_schema)r   Úschema)ÚmodelÚ
max_tokensÚsystemÚmessagesÚoutput_configu6   â�Œ Hiba az AI szkennelÃ©s Anthropic API hÃ­vÃ¡sakor: Ú u5   Hiba tÃ¶rtÃ©nt az AI szolgÃ¡ltatÃ¡s hÃ­vÃ¡sa kÃ¶zben!u_   HÃ¡lÃ³zati hiba az AI szolgÃ¡ltatÃ¡s elÃ©rÃ©sekor - ellenÅ‘rizd a szerver internetkapcsolatÃ¡t.Úrefusalu<   Az AI biztonsÃ¡gi okbÃ³l nem tudta feldolgozni ezt a kÃ©pet.c              3   ó\   #   • U  H"  oR                   S :X  d  M  UR                  v •  M$     g7f)r-   Nr.   )Ú.0Úbs     r"   Ú	<genexpr>Ú)elemzi_adattabla_kepet.<locals>.<genexpr>   s!   é € ÐHÒ#3˜a·v±vÀÑ7G“6�1—6–6Ò#3ùs   ‚,™,u/   Az AI nem adott vissza Ã©rtelmezhetÅ‘ vÃ¡laszt.u4   Az AI vÃ¡lasza nem volt Ã©rvÃ©nyes JSON formÃ¡tumÃº.)r   r   r   Ú	anthropicÚ	Anthropicr*   Ústandard_b64encodeÚdecoder7   ÚcreateÚNAMEPLATE_SYSTEM_PROMPTÚNAMEPLATE_JSON_SCHEMAÚAPIStatusErrorÚprintÚstatus_codeÚmessageÚAPIConnectionErrorÚstop_reasonÚnextr0   ÚjsonÚloadsÚJSONDecodeError)r#   r$   ÚclientÚ
kep_base64ÚresponseÚeÚszovegs          r"   Úelemzi_adattabla_kepetrV   D   sÊ  € ÷ Òà*Ø&Ø'Ø!Ø!Ø*<Ø ð !Kñ	
ð 		
÷ ÒÜÐdÓeÐeä× Ò Ô):Ñ;€FÜ×*Ò*¨9Ó5×<Ñ<¸WÓE€Jð!Ø—?‘?×)Ñ)Ø#ØÜ*àð !(à$,Ø*4Ø$.ñ#ñð $ð  .Gñ  Hð
ñð ð Ø)Ü3ñðð% *ð 
ˆðD ×Ñ˜yÓ(ÜÐZÓ[Ð[äÑH 8×#3Ò#3ÓHÈ$ÓO€FÞÜÐMÓNÐNðTÜ�zŠz˜&Ó!Ð!øô# ×#Ñ#ó Uô 	ÐFÀqÇ}Á}ÀoÐUVÐWX×W`ÑW`ÐVaÐbÔcÜÐSÓTÐTûÜ×'Ñ'ó ÜÐ}Ó~Ð~ðûô ×Ñó TÜÐRÓSÐSðTús$   Á+:D Ã0E0 ÄE-Ä0E
Å
#E-Å0 F)r*   rN   r@   Úconfigr   r   rF   rE   Ú	Exceptionr   ÚbytesÚstrÚdictrV   r   r!   r"   Ú<module>r\      s  ðÛ Û ã ç 7ð ð ˜vÐ&ØEñ
ð
 ˜vÐ&Ø|ñ
ð
 ˜vÐ&Øqñ
ð
 ˜vÐ&Øñ
ð
 ˜vÐ&ð Yñ
ð
 ˜vÐ&ð eñ'
ð
 ˜vÐ&ð Dñ
ð
 ˜vÐ&ð xñ
ñ;!òDð
 "ñS*Ð ðX|Ð ô	�Iô 	ð
BT eð BT¸ð BTÀõ BTr!   