o
    @`i                     @   sT   d dl mZ d dlmZ ejdddefddZejddd	ed
efddZdS )    )celeryprocess_single_backtest_dayzns.backtest_day)nameparamsc                 C   s   t di | S )ud   
    Task Celery:
    - procesa UN SOLO día
    - NO conoce rangos
    - NO hace loops grandes
    N r   )r   r   r   ;/var/www/html/neutralSigma/backtesting/tasks_backtesting.pybacktest_day_task   s   r	   zns.aggregate_backtest_resultsresultsmetac                 C   s   g }g }g }| D ]'}t |trd|v r||d  qt |tr*d|v r*|| q|| q|jdd d ddd|t||||d	S )
u   
    Task Celery (body del chord):
    - recibe resultados por día
    - arma el JSON final EXACTO que espera el frontend
    _missingerrorc                 S   s   | d S )Ndater   )xr   r   r   <lambda>&   s    z,aggregate_backtest_results.<locals>.<lambda>)keyTENTRY_AND_PATH)okstep)days_processedmissing_dayserrorsper_day)
isinstancedictappendsortlen)r
   r   r   r   r   rr   r   r   aggregate_backtest_results   s(   r   N)	
celery_appr   backtesting.engine_corer   taskr   r	   listr   r   r   r   r   <module>   s   


