
    mj                     p    S r SSKrSSKJrJr  SSKrSS jrS rS rSS jr	S r
S	 r\S
:X  a  \" 5         gg)u"  Недельные агрегаты для воскресного разбора.

Арифметику считает Python, Claude только интерпретирует готовые цифры —
иначе он начинает складывать сам и ошибается.
    N)date	timedeltac                     U  Vs/ s H	  o"c  M  UPM     nnU(       d  g [        [        U5      [        U5      -  U5      $ s  snf N)roundsumlen)valuesdigitsvcleans       "/home/rasp/health-digest/weekly.py_avgr      s;    01QE0Uc%j(&11 1s
   A A c                 |    U R                  5        VVs/ s H  u  p4Xs=::  a  U::  d  M  O  M  UPM     snn$ s  snnf r   )items)rowsstartenddayrows        r   	_in_ranger      s1     $

DHC0C0CC0CCDDDs   888c           
      r   [         R                  " U 5      u  pgU[        SS9-
  nU[        SS9-
  n	[        XU5      n
[        XU	5      nU Vs/ s H3  oR                  (       d  M  XlR
                  s=::  a  U::  d  M-  O  M1  UPM5     nn[        X6U5      n[        U
 Vs/ s H  oR                  PM     sn5      n[        U Vs/ s H  oR                  PM     sn5      nUb  Ub  [        UU-
  S5      OS n[        S UR                  5        5       S S9nU Vs/ s H"  nUUR
                  s=::  a  U::  d  M  O  M   UPM$     nnU Vs/ s H  nUR
                  U:  d  M  UPM     nn0 SU_SU_S	[         R                  " X5      _S
US	   _S[        U Vs1 s H  oR
                  iM     sn5      _SUS   _S[        U Vs/ s H  oR                  PM     snS5      =(       a/    [        [        U Vs/ s H  oR                  PM     snS5      5      _SU_SU_SU_S[        U5      _S[        U Vs/ s H  nUR                  PM     snS5      _S[        U Vs/ s H  nUR                   PM     snS5      _S[        U Vs/ s H  nUR"                  PM     snS5      _S[        U Vs/ s H  nUR$                  PM     snS5      _SU(       a  US   R&                  OS _SU(       a  US   R&                  OS _[        U
 Vs/ s H  oR(                  PM     sn5      [        U
 Vs/ s H  oR*                  PM     sn5      [        U
 Vs/ s H  oR,                  PM     snS5      S.E$ s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )N   )days   c              3   B   #    U  H  oR                   c  M  Uv   M     g 7fr   )fat_pct).0ms     r   	<genexpr>week_facts.<locals>.<genexpr>,   s     C)qYY)s   	c                     U R                   $ r   )r   )r   s    r   <lambda>week_facts.<locals>.<lambda>-   s    aee    )keymondaysunday
cardio_mincardio_targetstrength_daysstrength_targetstrength_avg_minr   
weight_avgweight_avg_prevweight_delta	food_dayskcal_avgprotein_avgfat_avg	carbs_avgr   fat_pct_prev)	sleep_avghrv_avgresting_hr_avg)weekweek_boundsr   r   is_strengthr   r   weightr   sortedr
   cardio_minutesr	   minutesintkcalproteinfatcarbsr   sleep_hhrv
resting_hr)todayr   workoutsfoodmeasurementsstager'   r(   prev_mondayprev_sunday	this_week	prev_weekwstrength	food_weekrr.   r/   deltameasuredr   in_weekbefore_weekfs                           r   
week_factsr\      s   %%e,NF9!,,K9!,,K$/I$[9I#S8a}}559RF9R9R8HS$/I3Axx34Ji8iHHi89O !o&A 	j?*A. 
 CL'')CH #@(Qf&?&?q&?q(G@&9h!%%&.1hK9&& 	d))$6 	|,	
 	X6XeeX67 	51 	DX!>X))X!>Brs4dlPmdl_`QZQZdlPmopKqGr 	j 	? 	 	S^ 	D)4)Q!&&)4a8 	t	:	1QYY	:A> 	4	2	1	2A6 	TI6Iq177I6:  	'72;&&t!" 	;B//D#$ i8i99i89	2	1	23i@ii@!D) % T 48 A9 7!>Pm
 5:26 92@s~   M.%M.=M.M.M3M8M=9M==M=	N!NNN5N5NNN -N%N*
*N/N4c                 *    SU  SUc  S 3$ US U 3 3$ )Nz- z: u   нет данныхg )labelvaluesuffixs      r   _linerc   J   s3    wb%-.Z[[ayQWPXEYZ[[r%   c                     U S   R                  S5       SU S   R                  S5       3nSR                  SU 3SS[        S	U S
   SU S    S35      [        SU S   SU S    35      [        SU S   S5      SS[        SU S   S5      [        SU S   S5      [        SU S   S5      [        SU S   S5      [        SU S    S5      SS![        S"U S#   S$5      [        S%U S&   S'5      [        S(U S)   S*5      [        S+U S,   S*5      [        S-U S.   S*5      S/SS0[        S1U S2   S35      [        S4U S5   S65      [        S7U S8   S5      /5      $ )9ue   Цифры недели в виде markdown — уходит в промпт Claude как есть.r'   z%d.%mu    – r(   
u   Период:  u   **Активность**u*   Кардио (exercise-минуты Apple)r)   u    из r*   u    по ступениu   Силовые дниr+   r,   u6   Средняя длительность силовойr-   u    минua   **Вес (только средние, отдельные замеры не обсуждаем)**u    Среднее за неделюr.   u    кгu/   Среднее за прошлую неделюr/   u   Разницаr0   u6   % жира, последний замер неделиr   %u+   % жира, предыдущий замерr7   u
   **Еда**u   Дней с записямиr1   u    из 7u   Средние калорииr2   u	    ккалu   Средний белокr3   u    гu   Средние жирыr4   u   Средние углеводыr5   uT   Ориентиры (не цель дня): 1800 ккал, Б 110, Ж 65–70, У 185u    **Восстановление**u   Сонr8   u    чHRVr9   u    мсu   Пульс покояr:   )strftimejoinrc   )factsperiods     r   render_factsrm   N   s   h((12%h8P8PQX8Y7Z[F99
!
":E,<OSYZ_`oZpYq  rF  RG  	H%u_'=N_H`Ga?bcFN`Haclm
k0%2EwO?GXAY[bcn 5w?FiHXZ]^;U>=RTWX
,eK.@)L-uZ/@+N)5+?G'y)95A/{1CUK^
*hk*E2eU9%w/%u-='>C5  r%   c                     [         R                  " SS9n U R                  SSS9  U R                  5       nSS KnUR                  5       nUR                  (       a   [        R                  " UR                  5      O[        R                  " 5       nUR                  U5      u  pVpx[        [        [        UUUUU[        R                  " US   U5      S95      5        g )	Nu-   Цифры недели для разбора)descriptionz--dateu.   дата внутри недели, YYYY-MM-DD)helpr   stages)rJ   r   rK   rL   rM   rN   )argparseArgumentParseradd_argument
parse_argsdigestload_configr   fromisoformatrJ   load_sourcesprintrm   r\   r;   	stage_for)	parserargsrv   configrJ   r   rK   rL   rM   s	            r   mainr   o   s    $$1`aF
'WXD!F-1YYDtyy)DJJLE)/)<)<V)D&DD	,z!nnVH-u5  r%   __main__)r   )rf   )__doc__rr   datetimer   r   r;   r   r   r\   rc   rm   r   __name__r_   r%   r   <module>r      sK     $ 2E/d\B* zF r%   