§
    t�’j`&  ã                  óL   — d dl mZ d dlZd dlmZ d dlmZ  G d„ d¦  «        ZdS )é    )ÚannotationsN)Údate)ÚAnyc                  ó    — e Zd ZdZ	 	 ddd„ZdS )ÚVoiceParserMixinz@Voice-to-diary transcript parsing and auto-classification mixin.NÚ
project_idÚstrÚtranscript_textÚweather_overrideú
str | NoneÚtemp_overrideúfloat | NoneÚreturnúdict[str, Any]c                óp  — |                      ¦   «         }|pd}d|v sd|v sd|v rd}nd|v sd|v sd|v rd	}nd
|v sd|v sd|v rd}|pd}t          j        d|¦  «        }|r4	 t          |                     d¦  «        ¦  «        }n# t
          $ r Y nw xY wd}	t          j        d|¦  «        }
|
r4	 t          |
                     d¦  «        ¦  «        }	n# t
          $ r Y nw xY wg }d|v sd|v rEt          j        d|¦  «        }|                     d|r|                     d¦  «        nd› d�¦  «         d|v sd|v rEt          j        d|¦  «        }|                     d|r|                     d¦  «        nd› d�¦  «         d|v sd|v sd |v rEt          j        d!|¦  «        }|                     d"|r|                     d¦  «        nd#› d�¦  «         d$}t          j        d%|¦  «        }|r4	 t          |                     d¦  «        ¦  «        }n# t
          $ r Y nw xY wg }d&|v sd'|v sd(|v r|                     d)¦  «         d*|v sd+|v sd,|v r|                     d-¦  «         d.|v sd/|v r|                     d0¦  «         d1|v sd2|v r|                     d3¦  «         g }g }g }d4|v sd5|v r|                     d6¦  «         d|v sd|v r|                     d7¦  «         d8|v sd9|v r_t          j        d:|¦  «        }|rd;|                     d¦  «        › �nd<}|                     d=|› d>�¦  «         |                     d?¦  «         d@|v sdA|v r|                     dB¦  «         dC|v sdD|v sdE|v r|                     dF¦  «         dG|v sdH|v sdI|v r|                     dJ¦  «         dK|v sdL|v sdM|v r|                     dN¦  «         dO|v sdP|v sd|v r|                     dQ¦  «         |s!|                     dR|dSdT…         › dU�¦  «         dV„ |D ¦   «         }|r4|                     dW¦  «         |                     dX„ |D ¦   «         ¦  «         |r4|                     dY¦  «         |                     dZ„ |D ¦   «         ¦  «         d[ 	                    |¦  «        }d\}dS}d]}	 | j
                             ¦   «         5 }|                     ¦   «         5 }|                     ||t          j        ¦   «         |||	||||d^œ	¦  «         |                     ¦   «         }|rt#          |d_         ¦  «        }|                     ¦   «          dSdSdS¦  «         n# 1 swxY w Y   dSdSdS¦  «         n# 1 swxY w Y   n# t
          $ r Y nw xY wd`||t          j        ¦   «                              da¦  «        |||	|||||t)          |¦  «        dbdcœS )duh   BÃ³c tÃ¡ch giá»�ng nÃ³i/vÄƒn báº£n ghi Ã¢m hiá»‡n trÆ°á»�ng thÃ nh phiáº¿u Nháº­t KÃ½ Thi CÃ´ng Chuáº©n.u   Náº¯ng rÃ¡o, giÃ³ nháº¹u   mÆ°au   rÃ ou   giÃ´nguD   CÃ³ mÆ°a rÃ o ngáº¯t quÃ£ng, áº£nh hÆ°á»Ÿng cÃ´ng tÃ¡c ngoÃ i trá»�iu   náº¯ng gáº¯tu	   náº¯ng tou   náº¯ng nÃ³nguM   Náº¯ng gáº¯t nhiá»‡t Ä‘á»™ cao, chÃº Ã½ tÆ°á»›i áº©m báº£o dÆ°á»¡ng bÃª tÃ´ngu	   mÃ¡t máº»u   nhiá»�u mÃ¢yu   Ã¢m uuI   Nhiá»�u mÃ¢y, thá»�i tiáº¿t mÃ¡t máº» thuáº­n lá»£i thi cÃ´ng liÃªn tá»¥cg     À@@u"   (\d{2}(?:\.\d)?)\s*(?:Ä‘á»™|c|Â°c)é   é"   uA   (\d{1,3})\s*(?:cÃ´ng nhÃ¢n|nhÃ¢n sá»±|thá»£|ngÆ°á»�i|lao Ä‘á»™ng)u   thá»£ sáº¯tu   cá»‘t thÃ©pu&   (\d{1,2})\s*(?:thá»£ sáº¯t|tá»• sáº¯t)u   Tá»• cá»‘t thÃ©p: Ú08u    thá»£u	   cá»‘p phau   vÃ¡n khuÃ´nu+   (\d{1,2})\s*(?:thá»£ cá»‘p pha|vÃ¡n khuÃ´n)u   Tá»• vÃ¡n khuÃ´n: Ú10u
   thá»£ ná»�u
   xÃ¢y trÃ¡tu
   thá»£ há»“u0   (\d{1,2})\s*(?:thá»£ ná»�|thá»£ xÃ¢y|thá»£ há»“)u   Tá»• xÃ¢y trÃ¡t: Ú12é   u)   (\d{1,2})\s*(?:ca mÃ¡y|mÃ¡y|thiáº¿t bá»‹)u
   mÃ¡y Ä‘Ã oÚpc200u   Ä‘Ã ou<   01 MÃ¡y Ä‘Ã o bÃ¡nh xÃ­ch gáº§u 0.8m3 (váº­n hÃ nh 8h/ngÃ y)u   xe bá»“nu   bÆ¡m bÃª tÃ´ngu	   xe trá»™nuK   02 Xe bá»“n váº­n chuyá»ƒn bÃª tÃ´ng thÆ°Æ¡ng pháº©m & 01 xe bÆ¡m cáº§n 37mu   mÃ¡y luzlu rungu3   01 MÃ¡y lu rung 14T lu lÃ¨n K95/K98 ná»�n Ä‘Æ°á»�ngu   cáº©uu   cáº©u thÃ¡pu<   01 Cáº©u tá»± hÃ nh 25T phá»¥c vá»¥ cáº©u láº¯p cáº¥u kiá»‡nu   Ä‘Ã o Ä‘áº¥tu   mÃ³nguI   WBS 2.1: HoÃ n thÃ nh Ä‘Ã o há»‘ mÃ³ng & bÃ n giao cao Ä‘á»™ Ä‘Ã¡y mÃ³ng.uJ   WBS 2.2: Láº¯p dá»±ng cá»‘t thÃ©p vÃ  vÃ¡n khuÃ´n nghiá»‡m thu Ä‘áº¡t KCS.u	   bÃª tÃ´ngu   Ä‘á»•u   (?:mÃ¡c|m)\s*(\d{3})ÚMÚM300u4   WBS 2.3: Ä�á»• bÃª tÃ´ng mÃ³ng thÆ°Æ¡ng pháº©m mÃ¡c u.   , láº¥y 03 tá»• máº«u R28 theo TCVN 4453:1995.up   Ä�Ã£ kiá»ƒm tra Ä‘á»™ sá»¥t bÃª tÃ´ng Ä‘áº¡t 12Â±2cm, Ä‘Ãºc 03 tá»• máº«u lÆ°u kho báº£o dÆ°á»¡ng tiÃªu chuáº©n.u   á»‘ngÚhdpeuL   WBS 3.2: Láº¯p Ä‘áº·t Ä‘Æ°á»�ng á»‘ng HDPE D110 vÃ  thá»­ Ã¡p lá»±c tuyáº¿n.u   xÃ¢yu   tÆ°á»�ngu   gáº¡chuU   WBS 4.1: XÃ¢y tÆ°á»�ng bao gáº¡ch khÃ´ng nung vÃ  tÆ°á»›i áº©m máº¡ch vá»¯a xi mÄƒng.u   cá»™tu   dáº§mu   sÃ nuf   WBS 3.1: Láº¯p dá»±ng giÃ n giÃ¡o hoÃ n thiá»‡n káº¿t cáº¥u bÃª tÃ´ng dáº§m sÃ n táº§ng Ä‘iá»ƒn hÃ¬nh.u   an toÃ nu
   báº£o há»™u   mÅ©ut   100% cÃ´ng nhÃ¢n trang bá»‹ Ä‘áº§y Ä‘á»§ báº£o há»™ cÃ¡ nhÃ¢n (PPE: mÅ© cá»©ng, Ã¡o pháº£n quang, giÃ y mÅ©i thÃ©p).u
   há»‘ mÃ³ngu
   che cháº¯nu`   Ä�Ã£ cÄƒng dÃ¢y rÃ o cháº¯n vÃ  Ä‘áº·t biá»ƒn cáº£nh bÃ¡o nguy hiá»ƒm xung quanh mÃ©p há»‘ sÃ¢u.u8   Triá»ƒn khai thi cÃ´ng theo tiáº¿n Ä‘á»™ há»£p Ä‘á»“ng: Néx   z...c                ó   — g | ]}d |› �‘ŒS )u   â€¢ © )Ú.0Úacts     ú=C:\Projects\DSCons\app\services\ai_site_diary\voice_parser.pyú
<listcomp>z;VoiceParserMixin.process_voice_to_diary.<locals>.<listcomp>•   s   € ÐFÐFÐF¨#˜ ˜˜ÐFÐFÐFó    u&   
[KIá»‚M SOÃ�T CHáº¤T LÆ¯á»¢NG QA/QC]:c                ó   — g | ]}d |› �‘ŒS ©z- r   )r   Úqs     r!   r"   z;VoiceParserMixin.process_voice_to_diary.<locals>.<listcomp>˜   s   € Ð!@Ð!@Ð!@¨q ( q ( (Ð!@Ð!@Ð!@r#   u(   
[AN TOÃ€N LAO Ä�á»˜NG & Vá»† SINH HSE]:c                ó   — g | ]}d |› �‘ŒS r%   r   )r   Úhs     r!   r"   z;VoiceParserMixin.process_voice_to_diary.<locals>.<listcomp>›   s   € Ð!>Ð!>Ð!>¨q ( q ( (Ð!>Ð!>Ð!>r#   ú
u¥   TVGS kiá»ƒm tra hiá»‡n trÆ°á»�ng: Ä�áº¡t yÃªu cáº§u thiáº¿t káº¿ vÃ  tiÃªu chuáº©n ká»¹ thuáº­t hiá»‡n hÃ nh, cháº¥p thuáº­n nghiá»‡m thu chuyá»ƒn bÆ°á»›c thi cÃ´ng.aZ  
            INSERT INTO erp_digital_site_diaries (
                project_id, diary_date, weather_condition, temperature_celsius,
                workforce_count, machine_count, completed_work_summary, supervisor_notes,
                ai_voice_transcript, approval_status
            ) VALUES (
                %(project_id)s, %(diary_date)s, %(weather_condition)s, %(temperature_celsius)s,
                %(workforce_count)s, %(machine_count)s, %(completed_work_summary)s, %(supervisor_notes)s,
                %(ai_voice_transcript)s, 'approved_by_supervisor'
            ) RETURNING id;
        )	r   Ú
diary_dateÚweather_conditionÚtemperature_celsiusÚworkforce_countÚmachine_countÚcompleted_work_summaryÚsupervisor_notesÚai_voice_transcriptÚidÚsuccessz%d/%m/%YÚhung_site_engineer)ÚstatusÚdiary_idr   r*   r+   r,   r-   r.   Útrade_breakdownÚmachine_detailsr/   r0   Úextracted_activities_countÚai_agent)ÚlowerÚreÚsearchÚfloatÚgroupÚ	ExceptionÚintÚappendÚextendÚjoinÚrepoÚget_connectionÚcursorÚexecuter   ÚtodayÚfetchoner	   ÚcommitÚstrftimeÚlen)Úselfr   r
   r   r   Ú
text_lowerÚweatherÚtempÚ
temp_matchÚworkersÚworker_matchr7   Ú
iron_matchÚ
form_matchÚmason_matchÚmachinesÚmachine_matchr8   Úcompleted_activitiesÚqa_qc_notesÚ	hse_notesÚ	mac_matchÚmac_valÚsummary_linesÚsummary_textr0   r6   Ú
sql_insertÚconnÚcurÚress                                  r!   Úprocess_voice_to_diaryz'VoiceParserMixin.process_voice_to_diary   sÈ  € ð %×*Ò*Ñ,Ô,ˆ
ð #Ð?Ð&?ˆØ�ZÐÐ 6¨ZÐ#7Ð#7¸8ÀzÐ;QÐ;QØ\ˆGˆGà˜jÐ(Ð(Ø˜jÐ(Ð(Ø Ð+Ð+àeˆGˆGà˜:Ð%Ð%¨¸:Ð)EÐ)EÈÐT^ÐI^ÐI^àaˆGàÐ$ ˆÝ”YÐDÀjÑQÔQˆ
Øð 	ðÝ˜Z×-Ò-¨aÑ0Ô0Ñ1Ô1��øÝð ð ð Ø�ðøøøð ˆÝ”yØPÐR\ñ
ô 
ˆð ð 	ðÝ˜l×0Ò0°Ñ3Ô3Ñ4Ô4��øÝð ð ð Ø�ðøøøð ˆØ˜JÐ&Ð&¨-¸:Ð*EÐ*EÝœÐ#LÈjÑYÔYˆJØ×"Ò"ØX¸JÐ%P Z×%5Ò%5°aÑ%8Ô%8Ð%8ÈDÐXÐXÐXñô ð ð ˜*Ð$Ð$¨¸Ð(CÐ(CÝœÐ#QÐS]Ñ^Ô^ˆJØ×"Ò"ØX¸JÐ%P Z×%5Ò%5°aÑ%8Ô%8Ð%8ÈDÐXÐXÐXñô ð ð ˜:Ð%Ð%¨¸Ð)CÐ)CÀ|ÐWaÐGaÐGaÝœ)ØCÀZñô ˆKð ×"Ò"ØY¸KÐ$Q K×$5Ò$5°aÑ$8Ô$8Ð$8ÈTÐYÐYÐYñô ð ð
 ˆÝœ	Ð"NÐPZÑ[Ô[ˆØð 	ðÝ˜}×2Ò2°1Ñ5Ô5Ñ6Ô6��øÝð ð ð Ø�ðøøøð ˆØ˜:Ð%Ð%¨°JÐ)>Ð)>À'ÈZÐBWÐBWØ×"Ò"Ð#aÑbÔbÐbà˜*Ð$Ð$Ø :Ð-Ð-Ø˜jÐ(Ð(à×"Ò"Ø]ñô ð ð ˜
Ð"Ð" i°:Ð&=Ð&=Ø×"Ò"Ð#XÑYÔYÐYØ�jÐ Ð  M°ZÐ$?Ð$?Ø×"Ò"Ð#aÑbÔbÐbð  "ÐØˆØˆ	à˜ZÐ'Ð'¨7°jÐ+@Ð+@Ø ×'Ò'Ø[ñô ð ð ˜JÐ&Ð&¨-¸:Ð*EÐ*EØ ×'Ò'Ø\ñô ð ð ˜*Ð$Ð$¨°:Ð(=Ð(=Ýœ	Ð"9¸:ÑFÔFˆIØ2;ÐGÐ.˜)Ÿ/š/¨!Ñ,Ô,Ð.Ð.Ð.ÀˆGØ ×'Ò'Ø~ÀwÐ~Ð~Ð~ñô ð ð ×Òð Cñô ð ð �jÐ Ð  F¨jÐ$8Ð$8Ø ×'Ò'Ø^ñô ð ð �ZÐÐ :°Ð#;Ð#;¸xÈ:Ð?UÐ?UØ ×'Ò'Øgñô ð ð �jÐ Ð  G¨zÐ$9Ð$9¸VÀzÐ=QÐ=QØ ×'Ò'Øxñô ð ð
 ˜Ð#Ð# |°zÐ'AÐ'AÀUÈjÐEXÐEXØ×Òð Gñô ð ð ˜:Ð%Ð%¨¸Ð)CÐ)CÀvÐQ[ÐG[ÐG[Ø×ÒØrñô ð ð $ð 	Ø ×'Ò'ØeÈ?Ð[_Ð\_Ð[_ÔK`ÐeÐeÐeñô ð ð GÐFÐ1EÐFÑFÔFˆØð 	BØ× Ò Ð!JÑKÔKÐKØ× Ò Ð!@Ð!@°KÐ!@Ñ!@Ô!@ÑAÔAÐAØð 	@Ø× Ò Ð!LÑMÔMÐMØ× Ò Ð!>Ð!>°IÐ!>Ñ!>Ô!>Ñ?Ô?Ð?à—y’y Ñ/Ô/ˆð CÐð ˆð
ˆ
ð	Ø”×)Ò)Ñ+Ô+ð ¨t°T·[²[±]´]ð ÀcØ—’Øà&0Ý&*¤j¡l¤lØ-4Ø/3Ø+2Ø)1Ø2>Ø,<Ø/>ð
ð 
ñô ð ð —l’l‘n”n�Øð .Ý" 3 t¤9™~œ~�HØ—’‘”�ð%ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øøõ& ð 	ð 	ð 	ØˆDð	øøøð  Ø Ø$Ýœ*™,œ,×/Ò/°
Ñ;Ô;Ø!(Ø#'Ø&Ø%Ø.Ø.Ø&2Ø 0Ý*-Ð.BÑ*CÔ*CØ,ð
ð 
ð 	
s‘   Á!"B Â
BÂBÂ."C Ã
CÃCÇ("H È
HÈHÒU& Ò1UÓA1UÔ7UÕU	ÕUÕ
U	ÕUÕU& ÕUÕU& Õ!UÕ"U& Õ&
U3Õ2U3)NN)
r   r	   r
   r	   r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__re   r   r#   r!   r   r      sB   € € € € € ØJÐJð (,Ø&*ðH
ð H
ð H
ð H
ð H
ð H
ð H
r#   r   )Ú
__future__r   r<   Údatetimer   Útypingr   r   r   r#   r!   ú<module>rm      s€   ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðK
ð K
ð K
ð K
ð K
ñ K
ô K
ð K
ð K
ð K
r#   