+
    HZi6                     L   R t ^ RIHtHt ^ RIHt ^ RIHtHt ^ RI	H
t
 ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ]! R
R.R7      tR t]P/                  R4      ]! ]
4      3R R ll4       t]P/                  R4      R]! ]
4      3R R ll4       t]P/                  R4      R]! ]
4      3R R ll4       t]P/                  R4      R]! ]
4      3R R ll4       t]P/                  R4      RR]! ]
4      3R R ll4       t]P/                  R4      ]! ]
4      3R R  ll4       tR# )!z)
Router FastAPI - Module Analyse MAESTRO
)	APIRouterDependsSession)funcextract)get_db)ProjetPiece)Client)TachePlanning)datetime)Optionalz/api/analyseanalyse)prefixtagsc                 T    T ;'       g     \         P                  ! 4       P                  # N)r   nowyear)annees   &dC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO CLAUDE\MAESTRO\maestro-backend\app\routes\analyse.py_yrr      s    u33 3 33    z/anneesc                $    V ^8  d   QhR\         /#    dbr   )formats   "r   __annotate__r      s      7 r   c                    V P                  \        R \        P                  4      P	                  R4      4      P                  4       P                  R4      P                  4       pV Uu. uF%  q"^ ,          '       g   K  \        V^ ,          4      NK'  	  ppV'       g!   \        P                  ! 4       P                  .pRV/# u upi )r   r   annees)queryr   r	   date_creationlabeldistinctorder_byallintr   r   r   )r   rowsrr!   s   &   r   annees_disponiblesr+      s    88GFF$8$89??HIRRT]]^efjjlD!%.A1ic!A$iF.X\\^0016f /s   (C=Cz	/overviewNc                F    V ^8  d   QhR\         \        ,          R\        /# r   r   r   r   r(   r   )r   s   "r   r   r      s"     J JHSM Jg Jr   c                 z   \        V 4      pVP                  \        4      P                  \        4      P                  \        R \        P                  4      V8H  4      P                  4       p\        R V 4       4      p\        R V 4       4      pVP                  \        4      P                  \        R \        P                  4      V8H  4      P                  4       pVP                  \        4      P                  \        P                  R8H  \        R \        P                  4      V8H  4      P                  4       pVP                  \        4      P                  \        P                  P                  V R24      4      P                  4       p\!        V4      ^,          p	V	'       d   \#        WY,          ^4      M^ p
VP                  \        P$                  4      P                  \        R \        P                  4      V8H  \        P$                  P'                  R4      4      P)                  4       P                  4       p. p\+        ^^4       F  pVP                  \        4      P                  \        4      P                  \        R \        P                  4      V8H  \        R\        P                  4      V8H  4      P                  4       p\        R V 4       4      p\        R V 4       4      pVP-                  R	VR
\#        V^4      RV/4       K  	  RVR\#        V^4      R\#        V^4      RVRVRV	RV
RVRV/	# )r   c              3   L   "   T F  qP                   ;'       g    ^ x  K  	  R# 5i    Nprix_total_ht.0ps   & r   	<genexpr>overview.<locals>.<genexpr>   s     @<aOO((q(<   $$c              3   L   "   T F  qP                   ;'       g    ^ x  K  	  R# 5ir1   volume_totalr5   s   & r   r8   r9      s     @<a^^((q(<r:   fabrique%Nmonthc              3   L   "   T F  qP                   ;'       g    ^ x  K  	  R# 5ir1   r3   r5   s   & r   r8   r9   (   s     <8aOO((q(8r:   c              3   8   "   T F  qP                   x  K  	  R # 5ir   quantiter5   s   & r   r8   r9   )   s     0x!::x   moisca	nb_piecesr   ca_totalvol_beton_m3
nb_projetsnb_pieces_fabriqueesheures_productionratio_beton_heurenb_clients_actifs
ca_mensuel)r   r"   r
   joinr	   filterr   r#   r'   sumcountstatut_realisationdate_fabrication_reeller   
date_debutlikelenround	client_idisnotr%   rangeappend)r   r   yrpieces_anneerI   	vol_betonrK   nb_pieces_fabtachesheures_prodrN   clients_anneerP   rF   pieces_mca_mnb_ms   &&               r   overviewri      s   	UB88E?''/66wvvG[G[7\`b7bcggiL@<@@H@<@@I&!((9M9M)NRT)TU[[]JHHUO**5+C+Cz+QSZ[ach  dA  dA  TB  FH  TH  I  O  O  QMXXm$++M,D,D,I,IRDPQ(,STXXZFf+/K=Hi5q9aHHV--.55gffFZFZ6[_a6acicscscycyz~c  A  J  J  L  R  R  TMJa88E?''/66wvvG[G[7\`b7bdklsu{  vJ  vJ  eK  OS  eS  T  X  X  Z<8<<0x0064uT1~{DQR	 
 RU8Q%7yZ[I\*&<m.ACTjJ Jr   z/rentabilitec                F    V ^8  d   QhR\         \        ,          R\        /# r-   r.   )r   s   "r   r   r   1   s&     JN JNx} JN JNr   c                 r   ^ RI HpHp \        V 4      pVP	                  V4      P                  4        Uu/ uF  qUP                  VP                  bK  	  ppVP	                  \        4      P                  \        R\        P                  4      V8H  4      P                  4       p. p/ p	V EF  pVP	                  \        4      P                  \        P                  VP                  8H  4      P                  4       p
\        R V
 4       4      p\        R V
 4       4      p\        R V
 4       4      pTp\        R V
 4       4      p\        R V
 4       4      p\        R V
 4       4      pVP                   ;'       g    R	pV'       d   VR
,          P#                  ^4      MRpV'       d<   VP	                  V4      P                  VP$                  V8H  4      P'                  4       MRp\        R V
 4       4      p\)        ^ VP*                  ;'       g    ^ V,
          4      p^ pV'       dG   \-        VVP.                  ,          VVP.                  ,          VP0                  ,          ,           ^4      pVP3                  RR4      pRpV
 EFE  pVP4                  '       d,   VP4                  ^ 8  d   VVP4                  V,          ,          pVP6                  '       Edq    ^ RIp\;        VP6                  \<        4      '       d   VP?                  VP6                  4      MVP6                  pVP3                  R4      ;'       g    .  EF  pVP3                  R4      pVP3                  R^ 4      ;'       g    ^ pV'       g   K;  V^ 8  g   KD  ^ RI H!p  VP	                  V 4      P                  V P                  \E        V4      8H  4      P'                  4       p!V!'       g   K  V!PF                  '       g   K  V!PF                  ^ 8  g   K  V!PH                  ;'       g    ^ p"VVV!PF                  ,          ^V"^d,          ,           ,          ,          pEK  	  VPL                  '       g   EK   \;        VPL                  \<        4      '       d   XP?                  VPL                  4      MVPL                  p#V#P3                  R4      pV#P3                  R^ 4      ;'       g    ^ p$V'       d   V$^ 8  d   ^ RI H!p% VP	                  V%4      P                  V%P                  \E        V4      8H  4      P'                  4       p!V!'       d   V!PF                  '       d|   V!PF                  ^ 8  dh   V!PN                  ;'       g    ^dp&^ RI(p'V'PS                  V$^d,          V&,          4      pVVV!PF                  ,          VPT                  ,          ,          pEK9  EK<  EK?  EKB  EKE  EKH  	  Rp(V
 EF^  p^ RI(p)^ RIp*VPV                  '       d    ^ RI H!p+ VP	                  V+4      P                  V+P                  \E        VPV                  4      8H  4      P'                  4       p!V!'       d   V!PF                  '       d   V!PF                  ^ 8  dy   V!PN                  ;'       g    ^p&VPX                  ;'       g    ^ p,V&^ 8  d   V)PS                  V,V&,          4      M^ pV(VV!PF                  ,          VPT                  ,          ,          p(VPZ                  '       g   EK+   \;        VPZ                  \<        4      '       d   V*P?                  VPZ                  4      MVPZ                  p-V-P3                  R4      pV-P3                  R^ 4      ;'       g    ^ p.V'       d   V.^ 8  d   ^ RI H!p/ VP	                  V/4      P                  V/P                  \E        V4      8H  4      P'                  4       p!V!'       dX   V!PF                  '       dC   V!PF                  ^ 8  d/   V(V.V!PF                  ,          VPT                  ,          ,          p(EKR  EKU  EKX  EK[  EK^  EKa  	  VP\                  '       dN   VP	                  \^        4      P                  \^        P                  VP\                  8H  4      P'                  4       MRp0V0'       d   V0P`                  MRp1V	P3                  V1^ 4      V,           V	V1&   TPc                  / RVP                  bRVPd                  bRVPf                  bRV1bRVPh                  bRVPj                  bR\-        V^4      bR\-        V^4      bR\-        V^4      bR VbR!\-        V^4      bR"\-        V^4      bR#VbR$VP*                  ;'       g    ^ bR%VbR&\-        V^4      bR'\-        V(^4      b4       EK  	  \m        V	Po                  4       R( R)R*7       U2U3u. uF  w  p2p3RV2R\-        V3^4      /NK  	  p4p2p3R+VR,VR-V4/# u upi   \J         d     ELi ; i  \J         d     EK  i ; i  \J         d     EL4i ; i  \J         d     EK]  i ; iu up3p2i ).r2   )TarifTransportParametreCoutr   c              3   L   "   T F  qP                   ;'       g    ^ x  K  	  R# 5ir1   r3   r6   pcs   & r   r8   rentabilite.<locals>.<genexpr>A   s     :6R""''a'6r:   c              3   L   "   T F  qP                   ;'       g    ^ x  K  	  R# 5ir1   r<   ro   s   & r   r8   rq   B   s     A&B//..Q.&r:   c              3   t   "   T F.  qP                   ;'       g    VP                  ;'       g    ^ x  K0  	  R# 5ir1   vol_beton_reelr=   ro   s   & r   r8   rq   C   s+     TVr))AAR__AAAV   888c              3   8   "   T F  qP                   x  K  	  R # 5ir   rC   ro   s   & r   r8   rq   E   s     5ffrE   c              3   L   "   T F  qP                   ;'       g    ^ x  K  	  R# 5ir1   )heures_budgeteesro   s   & r   r8   rq   F   s     CFb++00q0Fr:   c              3   r   "   T F-  qP                   ^8X  g   K  VP                  ;'       g    ^ x  K/  	  R# 5i   N)heures_reelles_verrouilleeheures_reellesro   s   & r   r8   rq   G   s0     h6REbEbfgEg/**//a/6s   777 :Nr   NNc              3   L   "   T F  qP                   '       g   K  ^x  K  	  R# 5ir{   )convoi_exceptionnelro   s   & r   r8   rq   M   s     EFb.D.DFs   $
$prix_cfag333333?        nappes
article_idnb_panneaux)Articlequantite_ml	nb_boiteszSans clientidnumero_affairenomclientcouleurstatutrG   ra   vol_beton_budgetrH   h_budget	h_reellescout_transportnb_transportsdepartement
cout_aciercout_accessoiresc                     V ^,          # )r|    xs   &r   <lambda>rentabilite.<locals>.<lambda>   s    !r   Tkeyreverser   projets
clients_ca)8app.models.transportrl   rm   r   r"   r'   clevaleurr	   rR   r   r#   r
   	projet_idr   rS   code_postal_chantierzfillr   firstmaxr   rZ   prix_rotationmajoration_convoiget	poids_cfaconfig_treillisjson
isinstancestrloadsapp.models.articler   r(   prix_achat_ht
taux_perte	Exceptionconfig_insertslongueur_unitairemathceilrD   becquet_typebecquet_longueurconfig_startr[   r   raison_socialer^   r   r   r   r   sorteditems)5r   r   rl   rm   r_   r7   paramsr   result_projetsca_par_clientpiecesrG   
vol_budgetvol_reelvolrH   r   r   cpdepttarif	nb_convoi	nb_normalr   prix_cfa_kgr   rp   _jsonctnappeart_idnbr   artperteciqml_Articlelu_mathr   _math2_json2_ArtBblcsr   _ArtSr   
client_nomkvr   s5   &&                                                   r   rentabiliter   0   sx   B	UB')xx'>'B'B'DE'D!eeQXXo'DFEhhv%%,,-3	ce  NM%''144(?@DDF :6::A&AA
TVTT5f55	CFCCh6hh	 ##))r"$r"v||A$_c(//0J0Jd0RSYY[imEFEE	AOO00qI=>	"E///E///%2I2IIJKLN jjT2
B|||q 0bll[88
!!!(<FrGYGY[^<_<_R%7%78egewewB"$&&"2"8"8b"8!&<!8"YY}a8==A!6b1fB"$((7"3":":7::V;T"U"["["]C"ss'8'8'8S=N=NQR=R(+(;(;! *b33D3D.DETWK.X X
 #9    ;EbFWFWY\;];]R%6%67cectctBVVL1F&&277aC#'J hhx077s6{8RSYY[3#4#4#49J9JQ9N!$!6!6!=!=#B0!&C#IN!;B&"s/@/@*@2;;*NNJ	 :O#43 #*v5 L B!!	C((5/00S=Q1QRXXZCs000S5F5F5J 2277a0055A57!VV[[b1(B1B1B,BR[[,PP( 
:DR__VY:Z:Zboo6`b`o`oBVVL1F "{A 6 ; ;!I)a-G hhuo44UXXV5LMSSU3#4#4#49J9JQ9N,	C<M<M0MPRP[P[0[[, :O#43 #0v+ < OPkkk&!((akk)ABHHJ_c.4V**-
$1$5$5j!$Dr$Ij! 
!$$
a..
 155
 j	

 qyy
 ahh
 %A,
 x+
 j! 4
 
 h*
 y!,
 n
 Q__11
 4
  %
A.!
" &6 :#
 	K v =..0ndSSDAq 
1dE!QK(S  
 RNL*MMO Fn !   ! $ !  ! 8s   g$A"g)<0g)-g):g)Ag)g)+g)>g)7g)A0g;
g;A*g;#g;)Ag;1A-h#hhAh>A0h /
h :A*h %<h =h3)g87g8;h
hhh h0/h0z/betonc                F    V ^8  d   QhR\         \        ,          R\        /# r-   r.   )r   s   "r   r   r      s"     W W# W7 Wr   c                   aa ^ RI Hp \        V 4      pVP                  V4      P	                  4        Uu/ uF  qDP
                  VP                  bK  	  upoRV3R llo. p\        ^^4       EFo  pVP                  \        4      P                  \        4      P                  \        R\        P                  4      V8H  \        R\        P                  4      V8H  4      P	                  4       p\        R V 4       4      p\        V3R lV 4       4      p	VP                  \        4      P                  \        P                   P#                  V R\%        V4      P'                  ^4       R24      4      P	                  4       p
\)        V
4      ^,          pTP+                  R	TR
\-        V^4      R\-        V	^4      RTRV'       d   \-        W,          ^4      M^ /4       EKr  	  VP                  \        P.                  \0        P                  ! \        P2                  4      P5                  R4      4      P                  \        4      P                  \        R\        P                  4      V8H  4      P7                  \        P.                  4      P	                  4       pRTRTRV Uu. uF>  pRV^ ,          ;'       g    RR\-        \9        V^,          ;'       g    ^ 4      ^4      /NK@  	  up/# u upi u upi )r2   rm   c                   < V '       g   SP                  R ^Z4      pMYRV P                  4       P                  RR4      P                  RR4      ,           pSP                  VSP                  R ^Z4      4      pV'       da   RVP                  4       P                  RR4      P                  RR4      P                  RR4      ,           pVSP                  V^ 4      ,          pV# prix_beton_XF1prix_beton_ _/r?   r   .r   upperreplace
type_betonaccelerateurbaser   cle_accr   s   &&   r   
prix_betonbeton.<locals>.prix_beton       &**-=r"B4*"2"2"4"<"<S#"F"N"NsTW"XXC::c6::.>#CDD#l&8&8&:&B&B3&L&T&TUXZ\&]&e&efikn&ooGFJJw**Dr   r   r@   c              3   t   "   T F.  qP                   ;'       g    VP                  ;'       g    ^ x  K0  	  R# 5ir1   rt   r5   s   & r   r8   beton.<locals>.<genexpr>   s+     LV##::q~~:::Vrv   c           
   3      <"   T FQ  qP                   ;'       g    VP                  ;'       g    ^ S! VP                  \        VRR4      4      ,          x  KS  	  R# 5i)r2   accelerateur_betonN)ru   r=   r   getattr)r6   r7   r   s   & r   r8   r      s[       Q  JP  EF$$;;;;!z!,,X_`acwy}X~?  JPs   AA.A-r?   rF   vol_m3cout_eurheures
ratio_m3_hr   r   mensueltypes_betontypeu   Non définir   )r   rm   r   r"   r'   r   r   r]   r
   rQ   r	   rR   r   r#   rS   r   rW   rX   r   r   rY   r^   rZ   r   r   r=   r$   group_byfloat)r   r   rm   r_   r7   r  rF   r   r   coutrc   r  r  tr   r   s   &&            @@r   betonr     s   2	UB')xx'>'B'B'DE'D!eeQXXo'DEF Ga%%%f-44WVVEYEY5Z^`5`bijqsy  tH  tH  cI  MQ  cQ  R  V  V  XLVLL  Q  JP  Q  Q-(//0H0H0M0MQSPTTUVYZ^V_VeVefgVhUiijNk0lmqqsVqhc1z5QUWX>[cekmy  V\  |A  BE  BN  PQ  |R  bc  d  	e  ((5++TXXe6H6H-I-O-OPU-VW\\]cdkklstz  }C  }Q  }Q  mR  VX  mX  Y  b  b  ch  cs  cs  t  x  x  zKRG]  JU  =V  JU  EFfadF[F[m]bdijopqrsptpypyxyjz|}d~=  JU  =V  W  W) F( =Vs   K+#K09K0K0z/voletsc                h    V ^8  d   QhR\         \        ,          R\         \        ,          R\        /# )r   r   r[   r   r.   )r   s   "r   r   r      s.     *| *|(3- *|8C= *|W *|r   c                 	  a ^ RI Hp \        V 4      pVP                  V4      P	                  4        Uu/ uF  qUP
                  VP                  bK  	  upoRV3R llpVP                  \        4      P                  \        4      P                  \        R\        P                  4      V8H  4      pV'       d#   VP                  \        P                  V8H  4      pVP	                  4       p/ p	V EF  pVP                  ;'       g    Rp
W9  d   RV
R^ RR	R
R	RR	RR	RR	R. /W&   W,          pVR;;,          VP                  ,          uu&   VR;;,          VP                   VP"                  ,          R,          VP                  ,          ,          uu&   VR
;;,          VP                   ^d,          VP                  ,          ,          uu&   TR;;,          VP$                  ;'       g    ^ ,          uu&   TR;;,          VP&                  ;'       g    ^ ,          uu&   TR;;,          VP(                  ;'       g    VP$                  ;'       g    ^ V! VP*                  \-        VRR4      4      ,          ,          uu&   VP.                  '       g   EK  VP                  '       g   EK  VR,          P1                  VP.                  VP                  ,
          P2                  4       EK  	  . pV	P5                  4        EF"  w  rVP7                  R4      pVR,          VR,          ,
          pV'       d&   \9        \;        V4      \=        V4      ,          ^4      MRVR&   \9        V^4      VR&   \9        VR,          '       d   WR,          ,          ^d,          M^ ^4      VR&   \9        VR,          ^4      VR&   \9        VR,          ^4      VR&   \9        VR,          ^4      VR&   \9        VR
,          ^4      VR
&   \9        VR,          ^4      VR&   VP1                  V4       EK%  	  VP?                  R RR7       VP                  \@        4      P                  \@        PB                  ^8H  4      PE                  \@        PF                  4      P	                  4       pRTRTRV Uu. uF  pRVPH                  RVPF                  /NK  	  up/# u upi u upi )r2   r   Nc                   < V '       g   SP                  R ^Z4      pMYRV P                  4       P                  RR4      P                  RR4      ,           pSP                  VSP                  R ^Z4      4      pV'       da   RVP                  4       P                  RR4      P                  RR4      P                  RR4      ,           pVSP                  V^ 4      ,          pV# r   r   r   s   &&   r   r   volets.<locals>.prix_beton   r   r   r   Autrer  rD   m2r   mlr  rG   
cout_beton_delaisi'  r   delai_moy_joursmarge
taux_margec                     V R ,          # )rG   r   r   s   &r   r   volets.<locals>.<lambda>  s    AdGr   Tr   r   types_piecesclientsr   r   r   )%r   rm   r   r"   r'   r   r   r
   rQ   r	   rR   r   r#   r[   
type_piecerD   longueurlargeurr=   r4   ru   r   r   rV   r^   daysr   poprZ   rS   rY   sortr   actifr&   r   r   )r   r[   r   rm   r_   r7   r   r"   r   
types_datatpdresult_typesdelaisr  r  cr   s   &&&              @r   voletsr*     s   2	UB')xx'>'B'B'DE'D!eeQXXo'DEF HHUO  (//@T@T0UY[0[\E%,,v'7'79'DE%YY[FJ\\$$W$b*asD#xY\^bdgiuwz  }F  HJ  KJNN	*#	$AJJ*U2ajj@@	$AJJ$

22	(++!,	$AOO((q)	,A,,CCCC!zRSR^R^`ghik  BF  aG  HH  H  	H$$$iL!:!:Q__!L R RS  L!!#y!$!L/)FLuS[3v;%>BRV
5!_'
1T7743!61M,$#$uQ|_a7PQ|_$#$uQtWa/@QtWPUVWX`VacdPe!H+A $ +T:hhv%%flla&78AA&BWBWX\\^GRyryBzrymnD!$$PUWXWgWgChryBz{{O FN C{s   S#Sz/saisonnalitec                $    V ^8  d   QhR\         /# r   r   )r   s   "r   r   r     s     
, 
,W 
,r   c                 F   \         P                  ! 4       P                  pV^,
          V^,
          V.p/ pV F  p. p\        ^^4       F  pV P	                  \
        4      P                  \        4      P                  \        R\        P                  4      V8H  \        R\        P                  4      V8H  4      P                  4       pVP                  RVR\        \        R V 4       4      ^4      R\        R V 4       4      /4       K  	  WS\        V4      &   K  	  RVR	V/# )
r   r   r@   rF   r  c              3   L   "   T F  qP                   ;'       g    ^ x  K  	  R# 5ir1   r<   r5   s   & r   r8   saisonnalite.<locals>.<genexpr>  s!     =d]cXY~~?R?RQR?R]cr:   rH   c              3   8   "   T F  qP                   x  K  	  R # 5ir   rC   r5   s   & r   r8   r.    s/       {W  PV  KL  |F  |F  PVrE   r!   data)r   r   r   r]   r"   r
   rQ   r	   rR   r   r#   r'   r^   rZ   rS   r   )r   r_   r!   r0  yr  rF   r   s   &       r   saisonnaliter2    s1   			B1fb1fb!FD!RLDXXe_))&188I]I]9^bc9celmtv|  wK  wK  fL  PT  fT  U  Y  Y  [FNNFD(E#=d]c=d:dfg4hjuwz  {W  PV  {W  xW  X  Y ! SV  ffd++r   )__doc__fastapir   r   sqlalchemy.ormr   
sqlalchemyr   r   app.databaser   app.models.projetr	   r
   app.models.clientr   app.models.tache_planningr   r   typingr   routerr   r   r+   ri   r   r  r*  r2  r   r   r   <module>r=     s'   ' " $  + $ 3  	.	{	; 3I%,V_   K$( J J, N'+76? JN JNX H!%WV_ W W4 I"&4W^_eWf *| *|X O&v 
, 
,r   