§
    œ
•j\  ã                  ón   — d dl mZ d dlZd dlmZ ddlmZ  ej        d¦  «        Z G d„ de¦  «        Z	dS )	é    )ÚannotationsN)ÚAnyé   )ÚDeepSeekMissionSynthesisMixinzdscons.deepseek.stepsc                  ó   — e Zd ZdZ	 ddd„ZdS )ÚDeepSeekMissionStepsMixinz!Mission step decomposition mixin.NÚmission_titleÚstrÚmission_promptÚpillarÚtarget_project_idú
str | NoneÚreturnúlist[dict[str, Any]]c              ƒ  ó$  K  — ddl }| j                             ¦   «         }d                     d„ |D ¦   «         ¦  «        }d}d|› d|› d|› d	|› d
|› d�}		 | j                             d|	dœgd¬¦  «        ƒ d{V —†}
|
                     d¦  «        r=|
                     dd¦  «                             dd¦  «                             ¦   «         }
n=|
                     d¦  «        r(|
                     dd¦  «                             ¦   «         }
| 	                    |
¦  «        }|D ]±}| 
                    dd¦  «        |d<   | 
                    dd¦  «        |d<   | 
                    di ¦  «        |d<   | 
                    dd¦  «        |d<   | 
                    dd¦  «        |d<   | 
                    dd¦  «        |d<   | 
                    dd¦  «        |d<   Œ²|S # t          $ r1}t                               d |› �¦  «         dd!d"d#ddd$œgcY d}~S d}~ww xY w)%uq   PhÃ¢n rÃ£ nhiá»‡m vá»¥ thÃ nh chuá»—i cÃ¡c bÆ°á»›c phá»‘i há»£p (Sá»­ dá»¥ng LLM, khÃ´ng dÃ¹ng dá»¯ liá»‡u Mock).r   Nú
c                ó€   — g | ];}d |d         › d|                      dd¦  «        › d|                      dd¦  «        › �‘Œ<S )z- Ú
agent_codez (Údisplay_nameÚ z): Ú
role_title)Úget)Ú.0Úas     úSC:\Projects\DSCons\app\modules\agents\application\deepseek_harness\mission_steps.pyú
<listcomp>zFDeepSeekMissionStepsMixin._decompose_mission_steps.<locals>.<listcomp>   si   € ð  !Lð  !Lð  !LÐuvÐ!p a¨¤oÐ!pÐ!p¸¿º¸~ÈrÑ9RÔ9RÐ!pÐ!pÐWX×W\ÒW\Ð]iÐkmÑWnÔWnÐ!pÐ!pð  !Lð  !Lð  !Ló    u=  
- tool_query_erp_ledger: Truy xuáº¥t sá»• cÃ¡i ERP
- tool_hybrid_search_knowledge: Tra cá»©u tri thá»©c, há»“ sÆ¡ phÃ¡p lÃ½, tÃ i liá»‡u ká»¹ thuáº­t
- tool_boq_and_ipc_calculation: BÃ³c tÃ¡ch khá»‘i lÆ°á»£ng, láº­p Báº£ng phá»¥ lá»¥c 03a
- tool_audit_3way_matching: Ä�á»‘i soÃ¡t 3 bÃªn, xá»­ lÃ½ hÃ³a Ä‘Æ¡n, táº¡m á»©ng
- tool_equipment_and_fuel_audit: Kiá»ƒm toÃ¡n thiáº¿t bá»‹, ca mÃ¡y, nhiÃªn liá»‡u
- tool_legal_fidic_check: RÃ  soÃ¡t phÃ¡p lÃ½ há»£p Ä‘á»“ng FIDIC
- tool_write_erp_ledger: [QUYá»€N CHUáº¨N Y] Ghi sá»• cÃ¡i/Cáº­p nháº­t CSDL (CHá»ˆ DÃ€NH CHO THUá»¶)
u   
Nhiá»‡m vá»¥ (Mission): u   
YÃªu cáº§u chi tiáº¿t: u%   
Trá»¥ cá»™t nghiá»‡p vá»¥ (Pillar): u"   

Danh sÃ¡ch AI Agents cÃ³ sáºµn:
u   

Danh sÃ¡ch Tools cÃ³ sáºµn:
u¦  

Ä�áº¶C BIá»†T LÆ¯U Ã�: Theo chá»‰ Ä‘áº¡o cá»§a Ban GiÃ¡m Ä‘á»‘c, BÆ¯á»šC Ä�áº¦U TIÃŠN (Step 1) luÃ´n luÃ´n pháº£i giao cho Thuá»· (Trá»£ lÃ½ GiÃ¡m Ä‘á»‘c) Ä‘á»ƒ tiáº¿p nháº­n nhiá»‡m vá»¥, phÃ¢n tÃ­ch tá»•ng quan yÃªu cáº§u, vÃ  lÃªn phÆ°Æ¡ng Ã¡n Ä‘iá»�u phá»‘i cÃ¡c nhÃ¢n viÃªn khÃ¡c lÃ m viá»‡c. CÃ¡c bÆ°á»›c tiáº¿p theo má»›i phÃ¢n bá»• cho cÃ¡c Agent chuyÃªn mÃ´n tÆ°Æ¡ng á»©ng.

HÃ£y phÃ¢n rÃ£ nhiá»‡m vá»¥ trÃªn thÃ nh má»™t chuá»—i cÃ¡c bÆ°á»›c phá»‘i há»£p liÃªn phÃ²ng ban.
Tráº£ vá»� Ä‘á»‹nh dáº¡ng JSON lÃ  má»™t máº£ng cÃ¡c object. Má»—i object Ä‘áº¡i diá»‡n cho má»™t bÆ°á»›c, vá»›i cÃ¡c khÃ³a sau:
- "agent_code": MÃ£ agent (chá»�n tá»« danh sÃ¡ch trÃªn)
- "agent_name": TÃªn agent tÆ°Æ¡ng á»©ng
- "role_title": Chá»©c danh cá»§a agent
- "reasoning": Má»¥c tiÃªu dá»± kiáº¿n/káº¿ hoáº¡ch phÃ¢n tÃ­ch cá»§a bÆ°á»›c nÃ y
- "tool_to_call": Chá»�n Má»˜T tool duy nháº¥t tá»« danh sÃ¡ch Tools cÃ³ sáºµn Ä‘á»ƒ agent cháº¡y
- "tool_args": Má»™t JSON object chá»©a cÃ¡c tham sá»‘ truyá»�n vÃ o tool (vÃ­ dá»¥: {"entity_type": "equipment"} hoáº·c {"project_id": "DA-KM-BENKEM-2025-2026"})

CHá»ˆ TRáº¢ Vá»€ JSON, KHÃ”NG CÃ“ MARKDOWN HAY CHÃš THÃ�CH.
VÃ­ dá»¥:
[
  {
    "agent_code": "phuc",
    "agent_name": "PhÃºc",
    "role_title": "Ká»¹ sÆ° Quáº£n lÃ½ Tiáº¿n Ä‘á»™",
    "reasoning": "TÃ´i sáº½ táº­p há»£p nháº­t kÃ½ cÃ´ng trÆ°á»�ng",
    "tool_to_call": "tool_query_erp_ledger",
    "tool_args": {"entity_type": "documents"}
  }
]
Úuser)ÚroleÚcontentgš™™™™™É?)Útemperaturez```jsonr   z```Úoutput_summaryz...Útool_to_callÚtool_query_erp_ledgerÚ	tool_argsÚ
agent_namezAI Agentr   Úminhr   u   ChuyÃªn viÃªnÚ	reasoningu   Ä�ang xá»­ lÃ½ nghiá»‡p vá»¥...z)Error parsing LLM mission decomposition: ÚMinhu   Ä�iá»�u phá»‘i Tá»•nguC   RÃ  soÃ¡t thÃ´ng tin chung do lá»—i sinh káº¿ hoáº¡ch tá»± Ä‘á»™ng.)r   r&   r   r(   r#   r"   )ÚjsonÚpostgres_clientÚlist_ai_agent_modelsÚjoinÚ
llm_clientÚchatÚ
startswithÚreplaceÚstripÚloadsr   Ú	ExceptionÚloggerÚerror)Úselfr	   r   r   r   r*   Úavailable_agentsÚagents_infoÚavailable_toolsÚpromptÚllm_responseÚstepsÚstepÚes                 r   Ú_decompose_mission_stepsz2DeepSeekMissionStepsMixin._decompose_mission_steps   så  è è € ð 	ˆˆˆð  Ô/×DÒDÑFÔFÐØ—i’ið  !Lð  !Lð  {Kð  !Lñ  !Lô  !Lñ  Mô  Mˆðˆð"Ø&ð"ð "à&ð"ð "ð &,ð"ð "ð ð"ð "ð ð"ð "ð "ˆðF"	Ø!%¤×!5Ò!5Ø ¨VÐ4Ð4Ð5Øð "6ñ "ô "ð ð ð ð ð ð ˆLð ×&Ò& yÑ1Ô1ð GØ+×3Ò3°I¸rÑBÔB×JÒJÈ5ÐRTÑUÔU×[Ò[Ñ]Ô]��Ø×(Ò(¨Ñ/Ô/ð GØ+×3Ò3°E¸2Ñ>Ô>×DÒDÑFÔF�à—J’J˜|Ñ,Ô,ˆEð ð ]ð ]�Ø)-¯ªÐ2BÀEÑ)JÔ)J�Ð%Ñ&Ø'+§x¢x°Ð@WÑ'XÔ'X��^Ñ$Ø$(§H¢H¨[¸"Ñ$=Ô$=��[Ñ!Ø%)§X¢X¨l¸JÑ%GÔ%G��\Ñ"Ø%)§X¢X¨l¸FÑ%CÔ%C��\Ñ"Ø%)§X¢X¨l¸OÑ%LÔ%L��\Ñ"Ø$(§H¢H¨[Ð:[Ñ$\Ô$\��[Ñ!Ð!ØˆLøÝð 	ð 	ð 	Ý�LŠLÐHÀQÐHÐHÑIÔIÐIð #)Ø"(Ø"9Ø!fØ$;Ø&+ðð ð	ð 	ð 	ð 	ð 	ð 	ð 	øøøøð	øøøs   ÁE?G Ç
HÇ&H
ÈHÈ
H)N)
r	   r
   r   r
   r   r
   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r@   © r   r   r   r      s?   € € € € € Ø+Ð+ð )-ð]ð ]ð ]ð ]ð ]ð ]ð ]r   r   )
Ú
__future__r   ÚloggingÚtypingr   Úmission_synthesisr   Ú	getLoggerr5   r   rE   r   r   ú<module>rK      s–   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à <Ð <Ð <Ð <Ð <Ð <à	ˆÔ	Ð2Ñ	3Ô	3€ð`ð `ð `ð `ð `Ð =ñ `ô `ð `ð `ð `r   