o
    3Jj                     @   sf   d Z ddlmZmZ ddlmZmZmZmZ eG dd dZ	eG dd dZ
eG dd	 d	Zd
S )u?   Compliance ledger — one row per marketing claim under review.    )	dataclassfield)AnyDictListOptionalc                   @   s   e Zd ZU eed< eed< eed< eed< dZeed< dZee ed< dZee ed	< dZ	ee ed
< dZ
ee ed< eedZeeef ed< dS )
ClaimCheckclaim_idskutext
claim_typependingstatusN
regulationcitationevidenceremediationdefault_factorymeta)__name__
__module____qualname__str__annotations__r   r   r   r   r   r   r   dictr   r   r    r   r   +/opt/greenlight/greenlight/engine/ledger.pyr      s   
 r   c                   @   s   e Zd ZU eed< eed< eed< eed< dZeed< dZee ed< dZee	 ed	< dZ
ee	 ed
< dZee ed< dZee ed< dZee ed< eedZeeef ed< dS )OpportunityRecommendationopportunity_idr
   r   r   r   r   Ntrend_keyworddemand_index
uplift_pctr   r   r   r   r   )r   r   r   r   r   r   r    r   r!   floatr"   r   r   r   r   r   r   r   r   r   r   r   r   r      s   
 r   c                   @   s   e Zd ZU eed< eed< eed< eedZe	e
 ed< eedZe	e ed< eedZeeef ed< dZeeeef  ed	< ed
d Zedd Zedd Zedd ZdS )ComplianceLedgerbrandseasonturnover_eurr   claimsopportunities
commercialNdeterminationc                 C      dd | j D S )Nc                 S      g | ]	}|j d kr|qS )blockedr   .0cr   r   r   
<listcomp>0       z,ComplianceLedger.blocked.<locals>.<listcomp>r(   selfr   r   r   r.   .      zComplianceLedger.blockedc                 C   r,   )Nc                 S   r-   substantiatedr/   r0   r   r   r   r3   4   r4   z,ComplianceLedger.cleared.<locals>.<listcomp>r5   r6   r   r   r   cleared2   r8   zComplianceLedger.clearedc                 C   r,   )Nc                 S   r-   r9   r/   )r1   or   r   r   r3   8   r4   z>ComplianceLedger.recommended_opportunities.<locals>.<listcomp>)r)   r6   r   r   r   recommended_opportunities6   r8   z*ComplianceLedger.recommended_opportunitiesc                 C   s2   | j sdS tdd | j D }t|t| j  dS )Ng        c                 s   s    | ]
}|j d krdV  qdS )r:      Nr/   r0   r   r   r   	<genexpr>>   s    z.ComplianceLedger.confidence.<locals>.<genexpr>   )r(   sumroundlen)r7   okr   r   r   
confidence:   s   zComplianceLedger.confidence)r   r   r   r   r   r#   r   listr(   r   r   r)   r   r   r*   r   r   r+   r   propertyr.   r;   r=   rE   r   r   r   r   r$   $   s    
 


r$   N)__doc__dataclassesr   r   typingr   r   r   r   r   r   r$   r   r   r   r   <module>   s    