§
    ¤«jó!  ã                  ó   — d Z ddlmZ ddlZddlmc m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 e	j        dd
„¦   «         Ze	j        dd„¦   «         Ze	j        dd„¦   «         Zd„ Zd„ Zd„ Zdd„Zdd„Zdd„Zdd„ZdS )zUUnit and integration test suite for AI Model Benchmark & Enterprise Agent Management.é    )ÚannotationsN)Ú
TestClient)Ú
create_app)ÚAuthService)ÚModelBenchmarkServiceÚreturnr   c                 óJ   — t          ¦   «         } i | _        t          | ¦  «        S )N)r   Údependency_overridesr   )Úapps    ú?C:\Projects\DSCons\tests\test_model_benchmark_and_agent_mgmt.pyÚclean_clientr      s   € å
‰,Œ,€CØ!€CÔÝ�c‰?Œ?Ðó    údict[str, str]c                 ób   — t          ¦   «         } |                      ddddddœ¦  «        }dd|› �iS )	Nzsuperadmin-test-idzson.dinhson@dscons.vnÚ
superadminu   Nguyá»…n SÄ© SÆ¡nÚ
0202111150©ÚidÚemailÚroleÚ	full_nameÚ
company_idÚAuthorizationúBearer ©r   Úcreate_jwt_token©ÚauthÚtokens     r   Úsuperadmin_headersr       sO   € å‰=Œ=€DØ×!Ò!à&Ø,Ø Ø,Ø&ð	
ð 	
ñô €Eð Ð. uÐ.Ð.Ð/Ð/r   c                 ób   — t          ¦   «         } |                      ddddddœ¦  «        }dd|› �iS )	Nzviewer-test-idzviewer@dscons.vnÚviewerzViewer Testr   r   r   r   r   r   s     r   Úviewer_headersr#   #   sO   € å‰=Œ=€DØ×!Ò!à"Ø'ØØ&Ø&ð	
ð 	
ñô €Eð Ð. uÐ.Ð.Ð/Ð/r   c                 óŒ  — t          ¦   «         } |                      ¦   «         }t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}d
„ |D ¦   «         }d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d	x}}d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d	x}}d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d	x}}|D �]—}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}|d         }d }||k    }|slt          j        d!|fd"||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}|d#         }d$}||k    }|slt          j        d!|fd"||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}�Œ™d	S )%uR   Kiá»ƒm thá»­ bÃ i benchmark Ä‘o lÆ°á»�ng Latency, TPS vÃ  Ä�iá»ƒm cháº¥t lÆ°á»£ng.é   ©ú>=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sÚlenÚresults©Úpy0Úpy1Úpy3Úpy6úassert %(py8)sÚpy8Nc                ó   — h | ]
}|d          ’ŒS )Úprovider© ©Ú.0Úrs     r   ú	<setcomp>z9test_model_benchmark_service_execution.<locals>.<setcomp>;   s   € Ð0Ð0Ð0 1��:”Ð0Ð0Ð0r   Ú
openrouter©Úin)z%(py1)s in %(py3)sÚ	providers)r,   r-   úassert %(py5)sÚpy5ÚlmstudioÚantigravity_sdkÚttft_msr   )ú>)z%(py1)s > %(py4)s©r,   Úpy4úassert %(py6)sr.   ÚtpsÚquality_scoreg      T@©z%(py1)s >= %(py4)sÚcost_per_million_tokensg        ©ú==©z%(py1)s == %(py4)sÚstatusÚHEALTHY)r   Úrun_benchmarkr(   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)Úservicer)   Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9r;   Ú@py_assert0Ú@py_format4Ú@py_format6r6   Ú@py_assert3Ú@py_format5s                 r   Ú&test_model_benchmark_service_executionrb   5   sò  € å#Ñ%Ô%€GØ×#Ò#Ñ%Ô%€Gåˆw‰<Œ<Ð˜1Ðˆ<˜1ÒÐÐÐÕÔÐÐÐÐˆ<˜1ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔˆ<ÑÔÕÔ˜1ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ0Ð0¨Ð0Ñ0Ô0€IØÐ$ˆ<˜9Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ<˜9Ð$Ñ$Ô$Õ$Ô$ˆ<Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$˜9Ñ$Ô$Ð$Õ$Ô$˜9Ñ$Ô$Ð$Ð$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$ØÐ"ˆ:˜Ð"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ:˜Ð"Ñ"Ô"Õ"Ô"ˆ:Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"˜Ñ"Ô"Ð"Õ"Ô"˜Ñ"Ô"Ð"Ð"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"ØÐ)Ð 	Ð)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð 	Ð)Ñ)Ô)Õ)Ô)ÐÑ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô) 	Ñ)Ô)Ð)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)àð (ñ (ˆØ�Œ|Ð˜aÐˆ|˜aÒÐÐÐÕÔÐÐÐÐˆ|˜aÐÑÔÕÔˆ|ÑÔÕÔ˜aÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�ŒxÐ˜!Ðˆx˜!Š|ÐÐÐÕÔÐÐÐÐˆx˜!ÐÑÔÕÔˆxÑÔÕÔ˜!ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�Ô!Ð) TÐ)Ð! TÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð! TÐ)Ñ)Ô)Õ)Ô)Ð!Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÐ*Ô+Ð2¨sÐ2Ð+¨sÒ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð+¨sÐ2Ñ2Ô2Õ2Ô2Ð+Ñ2Ô2Õ2Ô2¨sÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø�Œ{Ð'˜iÐ'ˆ{˜iÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'ˆ{˜iÐ'Ñ'Ô'Õ'Ô'ˆ{Ñ'Ô'Õ'Ô'˜iÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ñ'ð(ð (r   c                 ó$  — t          ¦   «         } |                      ¦   «         }t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}d
„ |D ¦   «         }|d         d         }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	|d         d         }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	|d         d         }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	|d         d         }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	|d         d         }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	|d         d         }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	|d         d         }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	|d         d         }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	d	S )uE   Kiá»ƒm thá»­ thuáº­t toÃ¡n ghÃ©p model tá»‘i Æ°u cho 9 nhÃ¢n sá»± AI.é	   rI   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr(   Úrecsr*   r/   r0   Nc                ó    — i | ]}|d          |“ŒS )Ú
agent_coder3   r4   s     r   ú
<dictcomp>zAtest_model_recommendations_for_all_9_personas.<locals>.<dictcomp>N   s   € Ð1Ð1Ð1 q��,” Ð1Ð1Ð1r   ÚthaoÚrecommended_modelzgemini-3.1-prorK   rB   rD   r.   rF   g     €X@r&   rG   Úquynhg     @X@Únamzgemini-3.8-flashrE   g     €Q@ÚphucÚrecommended_providerr?   )r   Úgenerate_recommendationsr(   rO   rP   rQ   rR   rS   rT   rU   rV   )rW   re   rX   rY   rZ   r[   r\   Úrec_dictr]   r`   ra   s              r   Ú-test_model_recommendations_for_all_9_personasrq   H   sà  € å#Ñ%Ô%€GØ×+Ò+Ñ-Ô-€Dåˆt‰9Œ9Ð˜Ðˆ9˜Š>ÐÐÐÕÔÐÐÐÐˆ9˜ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔˆ9ÑÔÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ1Ð1¨DÐ1Ñ1Ô1€Hð �FÔÐ/Ô0ÐDÐ4DÐDÐ0Ð4DÒDÐDÐDÐDÕDÔDÐDÐDÐDÐDÐ0Ð4DÐDÑDÔDÕDÔDÐ0ÑDÔDÕDÔDÐ4DÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDØ�FÔ˜OÔ,Ð4°Ð4Ð,°Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð,°Ð4Ñ4Ô4Õ4Ô4Ð,Ñ4Ô4Õ4Ô4°Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð �GÔÐ0Ô1ÐEÐ5EÐEÐ1Ð5EÒEÐEÐEÐEÕEÔEÐEÐEÐEÐEÐ1Ð5EÐEÑEÔEÕEÔEÐ1ÑEÔEÕEÔEÐ5EÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEØ�GÔ˜_Ô-Ð5°Ð5Ð-°Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð-°Ð5Ñ5Ô5Õ5Ô5Ð-Ñ5Ô5Õ5Ô5°Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ð �EŒ?Ð.Ô/ÐEÐ3EÐEÐ/Ð3EÒEÐEÐEÐEÕEÔEÐEÐEÐEÐEÐ/Ð3EÐEÑEÔEÕEÔEÐ/ÑEÔEÕEÔEÐ3EÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEØ�EŒ?˜5Ô!Ð) TÐ)Ð! TÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð! TÐ)Ñ)Ô)Õ)Ô)Ð!Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð �FÔÐ2Ô3ÐHÐ7HÐHÐ3Ð7HÒHÐHÐHÐHÕHÔHÐHÐHÐHÐHÐ3Ð7HÐHÑHÔHÕHÔHÐ3ÑHÔHÕHÔHÐ7HÑHÔHÐHÐHÑHÐHÐHÐHÐHÐHÑHÐHÕHÕHÔHÐHÑHÔHÑHÔHÐHÐHÐHÐHÐHÐHÐHØ�FÔÐ/Ô0ÐFÐ4FÐFÐ0Ð4FÒFÐFÐFÐFÕFÔFÐFÐFÐFÐFÐ0Ð4FÐFÑFÔFÕFÔFÐ0ÑFÔFÕFÔFÐ4FÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFÐFr   c                 ó>  — t          ¦   «         } |                      ¦   «         }|d         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|d	         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|d         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|d         }t          |¦  «        }d
}||k    }	|	sÇt          j        d|	fd||f¦  «        dt          j	        ¦   «         v st          j
        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}	}dS )uL   Kiá»ƒm thá»­ 1-Click Ã¡p dá»¥ng toÃ n bá»™ Ä‘á»� xuáº¥t mÃ´ hÃ¬nh tá»‘i Æ°u.ÚsuccessT©Úis©z%(py1)s is %(py4)srB   rD   r.   NÚapplied_countrd   rI   rK   Útotal_agentsÚdetails)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sr(   )r+   Úpy2rC   Úpy7zassert %(py9)sÚpy9)r   Úapply_optimal_recommendationsrO   rP   rT   rU   rV   r(   rQ   rR   rS   )rW   Úresr]   r`   rX   ra   r[   Ú@py_assert1Ú@py_assert6rY   Ú@py_format8Ú@py_format10s               r   Ú,test_apply_optimal_recommendations_executionrƒ   a   s  € å#Ñ%Ô%€GØ
×
/Ò
/Ñ
1Ô
1€CàˆyŒ>Ð!˜TÐ!ˆ>˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ>˜TÐ!Ñ!Ô!Õ!Ô!ˆ>Ñ!Ô!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØˆÔÐ$ 1Ð$Ð 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð 1Ð$Ñ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Øˆ~ÔÐ# !Ð#Ð !Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#Ð !Ð#Ñ#Ô#Õ#Ô#ÐÑ#Ô#Õ#Ô# !Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ø�9Œ~Ð#�3ˆ~ÑÔÐ# !Ð#Ð !Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#Ð !Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�3Ñ#Ô#Ð#Õ#Ô#�3Ñ#Ô#Ð#Ð#Õ#Ô#ˆ~Ñ#Ô#Õ#Ô#ÐÑ#Ô#Õ#Ô# !Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#r   r   r    c                ó~  — |                       d|¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}}| 
                    ¦   «         }|d         }	d}|	|k    }
|
slt          j        d|
fd|	|f¦  «        t          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}	x}
}|d         }	d}|	|k    }
|
slt          j        d|
fd|	|f¦  «        t          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}	x}
}|                      d|¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}}| 
                    ¦   «         d         }	d}|	|k    }
|
slt          j        d|
fd|	|f¦  «        t          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}	x}
}|                      d|¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}}| 
                    ¦   «         d         }	d}|	|k    }
|
slt          j        d|
fd|	|f¦  «        t          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}	x}
}|                       d|¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}}| 
                    ¦   «         d         }	d}|	|u }
|
slt          j        d|
fd |	|f¦  «        t          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}	x}
}d
S )!uO   Kiá»ƒm thá»­ cÃ¡c API endpoints cá»§a Model Benchmark vá»›i quyá»�n Superadmin.ú/v1/admin/model-benchmark/run©ÚheaderséÈ   rI   ©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚres1©r+   rz   r=   úassert %(py7)sr{   NrL   ÚSUCCESSrK   rB   rD   r.   Útested_models_countr%   r&   rG   z!/v1/admin/model-benchmark/resultsÚres2z)/v1/admin/model-benchmark/recommendationsÚres3Útotal_personasrd   ú//v1/admin/model-benchmark/apply-recommendationsÚres4rs   Trt   rv   )ÚpostÚstatus_coderO   rP   rQ   rR   rS   rT   rU   rV   ÚjsonÚget)r   r    rŠ   r   rZ   r`   r_   r�   Údata1r]   rX   ra   r[   r�   r�   r“   s                   r   Ú'test_benchmark_api_endpoints_authorizedr™   o   s�  € ð
 ×ÒØ'Ð1Cð ñ ô €Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø�IŠI‰KŒK€EØ�Œ?Ð'˜iÐ'ˆ?˜iÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'ˆ?˜iÐ'Ñ'Ô'Õ'Ô'ˆ?Ñ'Ô'Õ'Ô'˜iÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÐ&Ô'Ð,¨1Ð,Ð'¨1Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð'¨1Ð,Ñ,Ô,Õ,Ô,Ð'Ñ,Ô,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð ×ÒØ+Ð5Gð ñ ô €Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø�9Š9‰;Œ;Ð,Ô-Ð2°Ð2Ð-°Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð-°Ð2Ñ2Ô2Õ2Ô2Ð-Ñ2Ô2Õ2Ô2°Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ð ×ÒØ3Ð=Oð ñ ô €Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø�9Š9‰;Œ;Ð'Ô(Ð-¨AÐ-Ð(¨AÒ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð(¨AÐ-Ñ-Ô-Õ-Ô-Ð(Ñ-Ô-Õ-Ô-¨AÑ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ð ×ÒØ9ÐCUð ñ ô €Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø�9Š9‰;Œ;�yÔ!Ð) TÐ)Ð! TÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð! TÐ)Ñ)Ô)Õ)Ô)Ð!Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r   r#   c                óf  — |                       d|¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}}|                       d|¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}}d
S )uc   Kiá»ƒm thá»­ quyá»�n Viewer bá»‹ tá»« chá»‘i 403 khi cá»‘ cháº¡y benchmark hoáº·c Ã¡p dá»¥ng model.r…   r†   i“  rI   r‰   rŠ   r‹   rŒ   r{   Nr’   r�   )
r”   r•   rO   rP   rQ   rR   rS   rT   rU   rV   )	r   r#   rŠ   r   rZ   r`   r_   r�   r�   s	            r   Ú1test_benchmark_api_endpoints_forbidden_for_viewerr›   ’   s  € ð ×ÒÐ<ÀnÐÑUÔU€DØÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"à×ÒØ9À>ð ñ ô €Dð ÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"r   c           	     ó¸	  — ddl m }m}m} ddlm} ddlm} ddlm}  |¦   «         } |¦   «         }	| 	                    |j
        ¦  «         |d¬¦  «        z
                       ¦   «         }
|                     dd	d
d|
dd
¬¦  «          ||	¦  «        }|                     d¦  «        }|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚dx}x}}|d         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚dx}x}}|                      d|¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt+          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚dx}x}}|                     ¦   «         }|d         }d}||u }|slt          j        d|fd ||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚dx}x}}|                     d¦  «        }d}||u}|s—t          j        d!|fd"||f¦  «        d#t+          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd#t          j        |¦  «        d$œz  }d%d&|iz  }t#          t          j        |¦  «        ¦  «        ‚dx}}|d'         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚dx}x}}|d(         }d)}||u }|slt          j        d|fd ||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚dx}x}}dS )*u`   Kiá»ƒm thá»­ chu trÃ¬nh tá»± Ä‘á»™ng chuyá»ƒn Ä‘á»•i Fallback khi mÃ´ hÃ¬nh Stealth háº¿t háº¡n.r   )ÚdatetimeÚ	timedeltaÚtimezone)ÚErpDatabaseClient)Úget_settings)Ú	LLMClienté   )ÚdaysÚthuyzstealth/ox-alphar8   Tz google/gemini-2.0-flash-exp:free)rg   Ú
model_namer2   Úis_stealth_promoÚstealth_expires_atÚfallback_model_nameÚfallback_providerÚmodelrI   rK   rB   rD   r.   Nr2   z2/v1/admin/model-benchmark/check-stealth-expirationr†   rˆ   r‰   r~   r‹   rŒ   r{   rs   rt   rv   )úis not)z%(py0)s is not %(py3)sÚ
thuy_model)r+   r-   r<   r=   r¦   r§   F)r�   rž   rŸ   Úapp.core.postgres.erp_clientr    Úapp.core.settingsr¡   Ú)app.modules.agents.application.llm_clientr¢   ÚnowÚutcÚ	isoformatÚupdate_ai_agent_modelÚget_provider_for_agentrO   rP   rT   rU   rV   r”   r•   rQ   rR   rS   r–   Úget_ai_agent_model)r   r    r�   rž   rŸ   r    r¡   r¢   ÚdbÚsettingsÚ	past_dateÚclientÚprovider_infor]   r`   rX   ra   r[   r~   r   rZ   r_   r�   Údatar­   r^   s                             r   Ú.test_stealth_model_lifecycle_and_auto_fallbackr½   Ÿ   s7  € ð 7Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6à>Ð>Ð>Ð>Ð>Ð>Ø.Ð.Ð.Ð.Ð.Ð.ØCÐCÐCÐCÐCÐCà	Ð	Ñ	Ô	€BØˆ|‰~Œ~€Hð —’˜hœlÑ+Ô+¨i¨i¸QÐ.?Ñ.?Ô.?Ñ?×JÒJÑLÔL€IØ×ÒØØ%ØØØ$Ø>Ø&ð ñ ô ð ð ˆY�xÑ Ô €FØ×1Ò1°&Ñ9Ô9€MØ˜Ô!ÐGÐ%GÐGÐ!Ð%GÒGÐGÐGÐGÕGÔGÐGÐGÐGÐGÐ!Ð%GÐGÑGÔGÕGÔGÐ!ÑGÔGÕGÔGÐ%GÑGÔGÐGÐGÑGÐGÐGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGÐGÐGØ˜Ô$Ð4¨Ð4Ð$¨Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð$¨Ð4Ñ4Ô4Õ4Ô4Ð$Ñ4Ô4Õ4Ô4¨Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð ×
Ò
Ø<ÐFXð ñ ô €Cð Œ?Ð!˜cÐ!ˆ?˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ?˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ˆ?Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø�8Š8‰:Œ:€DØ�	Œ?Ð"˜dÐ"ˆ?˜dÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ?˜dÐ"Ñ"Ô"Õ"Ô"ˆ?Ñ"Ô"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ð ×&Ò& vÑ.Ô.€JØ!Ð!ˆ:˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ:˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ:Ñ!Ô!Ð!Õ!Ô!ˆ:Ñ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ø�lÔ#ÐIÐ'IÐIÐ#Ð'IÒIÐIÐIÐIÕIÔIÐIÐIÐIÐIÐ#Ð'IÐIÑIÔIÕIÔIÐ#ÑIÔIÕIÔIÐ'IÑIÔIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIØÐ(Ô)Ð2¨UÐ2Ð)¨UÐ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð)¨UÐ2Ñ2Ô2Õ2Ô2Ð)Ñ2Ô2Õ2Ô2¨UÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r   c           
     ó¦  — |                       d¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}d
}|j
        }|j         }d}	d}
 ||	|
¦  «        }||v }|söt          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}x}x}x}	x}
}d}|j        }||v }|sªt          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}d}|j        }||v }|sªt          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}d}|j        }||v }|sªt          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}d}|j        }||v }|sªt          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}|                       d¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}d}|j        }||v }|sªt          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}d}|j        }||v }|sªt          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}d	S )ut   Kiá»ƒm thá»­ trang giao diá»‡n Quáº£n trá»‹ AI Models vÃ  DHS táº£i thÃ nh cÃ´ng vÃ  cÃ³ Ä‘áº§y Ä‘á»§ thÃ nh pháº§n.z/dashboard/agent-modelsrˆ   rI   r‰   r~   r‹   rŒ   r{   Nz	text/htmlzcontent-typeÚ r9   )zr%(py1)s in %(py13)s
{%(py13)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.headers
}.get
}(%(py9)s, %(py11)s)
})r,   r-   r=   r{   r|   Úpy11Úpy13zassert %(py15)sÚpy15u   Quáº£n Trá»‹ AI Models)z,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.text
})r,   r-   r=   u   Báº£ng So SÃ¡nh Hiá»‡u NÄƒngu   Ma Tráº­n PhÃ¢n Bá»• Tá»‘i Æ¯uÚStealthz/dashboard/dhsÚres_dhsu)   PhÃ²ng Ä�iá»�u HÃ nh TÃ¡c Vá»¥ Tá»± Trá»‹zDeepSeek Agentic Harness)r—   r•   rO   rP   rQ   rR   rS   rT   rU   rV   r‡   Útext)r   r~   r   rZ   r`   r_   r�   r]   r€   Ú@py_assert8Ú@py_assert10Ú@py_assert12rX   Ú@py_format14Ú@py_format16rÄ   s                   r   Ú)test_agent_management_dashboard_html_pagerË   Í   s  € à
×
Ò
Ð4Ñ
5Ô
5€CØŒ?Ð!˜cÐ!ˆ?˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ?˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ˆ?Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØÐ=˜#œ+Ð=˜+œ/Ð=¨.Ð=¸"Ð=˜/˜/¨.¸"Ñ=Ô=Ð=ˆ;Ð=Ð=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=ˆ;Ð=Ð=Ñ=Ô=Õ=Ô=ˆ;Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=˜#Ñ=Ô=Ð=Õ=Ô=˜#Ñ=Ô=Ð=Ð=Õ=Ô=˜+Ñ=Ô=Õ=Ô=˜/Ñ=Ô=Õ=Ô=¨.Ñ=Ô=Õ=Ô=¸"Ñ=Ô=Õ=Ô=Ð=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ø#Ð/ s¤xÐ/Ð# xÐ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð# xÐ/Ñ/Ô/Õ/Ô/Ð#Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ sÑ/Ô/Ð/Õ/Ô/ sÑ/Ô/Ð/Ð/Õ/Ô/ xÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø)Ð5¨S¬XÐ5Ð)¨XÐ5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð)¨XÐ5Ñ5Ô5Õ5Ô5Ð)Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5¨SÑ5Ô5Ð5Õ5Ô5¨SÑ5Ô5Ð5Ð5Õ5Ô5¨XÑ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø+Ð7¨s¬xÐ7Ð+¨xÐ7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð+¨xÐ7Ñ7Ô7Õ7Ô7Ð+Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7¨sÑ7Ô7Ð7Õ7Ô7¨sÑ7Ô7Ð7Ð7Õ7Ô7¨xÑ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØÐ ˜œÐ ˆ9˜Ð Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ9˜Ð Ñ Ô Õ Ô ˆ9Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˜Ñ Ô Ð Õ Ô ˜Ñ Ô Ð Ð Õ Ô ˜Ñ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð ð ×ÒÐ/Ñ0Ô0€GØÔÐ% #Ð%Ð #Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð #Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ7Ñ%Ô%Ð%Õ%Ô%ˆ7Ñ%Ô%Ð%Ð%Õ%Ô%ÐÑ%Ô%Õ%Ô% #Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø6ÐF¸'¼,ÐFÐ6¸,ÐFÐFÐFÐFÕFÔFÐFÐFÐFÐFÐ6¸,ÐFÑFÔFÕFÔFÐ6ÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔF¸'ÑFÔFÐFÕFÔF¸'ÑFÔFÐFÐFÕFÔF¸,ÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFØ%Ð5¨¬Ð5Ð%¨Ð5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð%¨Ð5Ñ5Ô5Õ5Ô5Ð%Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5¨Ñ5Ô5Ð5Õ5Ô5¨Ñ5Ô5Ð5Ð5Õ5Ô5¨Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5r   )r   r   )r   r   )r   r   r    r   )r   r   r#   r   )r   r   )Ú__doc__Ú
__future__r   ÚbuiltinsrQ   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterO   ÚpytestÚfastapi.testclientr   Úapp.mainr   Ú)app.modules.auth.application.auth_servicer   Ú4app.modules.core.application.model_benchmark_servicer   Úfixturer   r    r#   rb   rq   rƒ   r™   r›   r½   rË   r3   r   r   ú<module>rØ      sz  ðØ [Ð [à "Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø )Ð )Ð )Ð )Ð )Ð )à Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AØ VÐ VÐ VÐ VÐ VÐ Vð „ðð ð ñ „ðð „ð0ð 0ð 0ñ „ð0ð „ð0ð 0ð 0ñ „ð0ð"(ð (ð (ð&Gð Gð Gð2$ð $ð $ð *ð  *ð  *ð  *ðF
#ð 
#ð 
#ð 
#ð+3ð +3ð +3ð +3ð\6ð 6ð 6ð 6ð 6ð 6r   