o
    ԧ6f^                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZ	d dl
Zd dlZdd Zdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    Nc                 C   s  g }t  }| D ]}td|}d}|d  }|D ]}|d d  }	||	kri }
|d |
d< d}z|d }W n   Y ||
d< d}z|d	 }W n   Y ||
d	< d
}z
|d }t|}W n   Y |d
kr{tt|d d }|d | d |
d< n+t|d d }t||tt|d  }tt|d | }|d | d |
d< |	|
 d} qq|dkrt
d| d  q|S )Nz	activity:FnamefrZtrigramr   duration eventunknown	intensitylevels   codelevel   Tz Warning: no activity found for '')getLevelOfActivityKCAUtilignorePrefixlowerremoveIntensityArtefactintlenfloatindexappendKCATraceTRACE)ZactListZjSportDBfsolsr	   aaZactfsolZnameLLMZjsZnameDBsolr   Z	eventTimer   ZmedValZnbLevelSportZspeechLevelidx r    EE:\wamp\www\apps\calme\nutritwin\resources\KCALLMActivityUtilities.pygetBestSolutions   sX   
1r"   c                 C   s.   | }| ddkr|dd}|dkrd}|S )NZLevelr   ZveryIntensevery intense)findreplace)r   Z
oIntensityr    r    r!   r   R   s   r   c                   C   s   g dS )N)lowZmoderatehighZintenser$   r    r    r    r    r!   r   ]   s   r   c                  C   s   t jt  d} | S )NZ	__dumps__)ospathjoingetcwddirRecr    r    r!   getDumpDirectoryPathb   s   r/   c                 C   s8   t  }t| }tj||}tj|st| |S N)r/   
KCALLMCoregetModelNickNamer)   r*   r+   existsmkdir)mdlr.   modelZdirResr    r    r!   getDumpDirectoryPathByModeli   s   

r7   c                  C   s*   t  } tj| rt|  t|  d S r0   )r/   r)   r*   isdirshutilrmtreer4   r-   r    r    r!   
cleanDumpst   s
   

r;   c                 C   s*   t  }||   | }|dd S )Nr      )hashlibsha256updateencode	hexdigest)ssZhash_objecthexKeyr    r    r!   	getHexKey~   s   rD   c                 C   sP   i }| d |d< | d |d< t | d d |d< t | d d |d< d|d	< |S )
Npromptr6   	solutions	nutritionZnutritionCountactivityZactivityCountr   ZprofileCountr   )jres
dumpResultr    r    r!   extractSummary   s   rL   c                 C   s   | d }t |}tj|st| t| }t|d }tj||d }t	| }t
|d}|| |  W d    |S 1 sEw   Y  |S )Nr6   rE   .jsonw)r7   r)   r*   r8   r4   rL   rD   r+   jsondumpsopenwriteclose)rJ   r5   r.   rK   rC   filePathZsdumpfiler    r    r!   recordResult   s   




rV   c                 C   sp   d}d}t | d d }t |d d }||krd}d}t | d d }t |d d }||kr4d}d	}||fS )
Nr   r   rF   rG   i  z%Not the same number of nutrition hitsrH   i  z$Not the same number of activity hitsrI   )Zjres1Zjres2rcmsgZnbNut1ZnbNut2ZnbAct1ZnbAct2r    r    r!   compareResults   s   rY   c                 C   sX   t d}t|}tj|sdS | d }t|}tj||d }tj|r*dS dS )Nr   FrE   rM   T)	r1   getModelFromFamilyr7   r)   r*   r8   rD   r+   r3   )rJ   r5   r.   rE   rC   rT   r    r    r!   alreadyExists   s   
r[   c                 C   s   ddd}| d }t |}tj|sd|d< d|d< |S | d	 }t|}tj||d
 }tj|sBtd| d  t|  |S t	|d!}t
|}|  t| |\}	}
|	|d< |
|d< W d    |S 1 skw   Y  |S )Nr   r   )rW   rX   r6   i  rW   zNo dump directoryrX   rE   rM   zDump for prompt 'z$' does not exist, it will be createdr)r7   r)   r*   r8   rD   r+   r3   printrV   rQ   rO   loadrS   rY   )rJ   Zjrcr5   r.   rE   rC   rT   rU   ZjresRefrW   rX   r    r    r!   checkResult   s0   



		r_   )r)   copyrO   timer9   r=   KCADBProcessorUtilitiesKCAProcKCALLMTracer   KCALLMUtilitiesr   r1   r"   r   r   r/   r7   r;   rD   rL   rV   rY   r[   r_   r    r    r    r!   <module>   s,    D

