
    j&                       U d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZ d dlmZmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZ dZded<    edd       G d d             Z edd       G d d             Z edd       G d d             Z G d de      Z 	 	 	 	 ddZ!	 	 	 	 	 	 d dZ"	 	 	 	 	 	 d!dZ#d"dZ$	 	 	 	 	 	 d#dZ%g dZ&y)$    )annotations)Mapping)asdict	dataclass)Path)FinalProtocol)MessageEvidenceOnboardingAuthorityOnboardingStatuscanonical_digest)read_private_json)OnboardingState)load_reconciliation)build_statusload_mutable_sessionsave_sessionzowner-risk-acceptance-ko-v1r   DISCLAIMER_VERSIONT)frozenslotsc                  @    e Zd ZU ded<   ded<   ded<   ded<   ded<   y)OwnerRiskAcceptanceBindingstrcandidate_epochbootstrap_session_idcustomer_keybaseline_digestreconciliation_digestN__name__
__module____qualname____annotations__     |/home/cube/projects/richard/.worktrees/nutricoach-v140-impl/dualcoach/profile/checkin_cli/nutrition_onboarding_owner_risk.pyr   r      s     r%   r   c                  6    e Zd ZU ded<   ded<   ded<   ded<   y	)
OwnerRiskAcceptanceRequestr   bindingr   acceptance_identityr   	authorityr
   evidenceNr   r$   r%   r&   r(   r(   &   s    ''""r%   r(   c                  ,    e Zd ZU ded<   ded<   ded<   y)&OwnerRiskAcceptanceFinalizationContextr   r   r   r   Nr   r$   r%   r&   r.   r.   .   s    r%   r.   c                  T    e Zd Zedd       Zedd       Zedd       Zedd       Zy)OwnerRiskAcceptanceServicec                     y Nr$   selfs    r&   profile_rootz'OwnerRiskAcceptanceService.profile_root6       $'r%   c                     y r2   r$   r3   s    r&   r   z'OwnerRiskAcceptanceService.customer_key9   s    #&r%   c                     y r2   r$   r3   s    r&   rootzOwnerRiskAcceptanceService.root<   s    r%   c                     y r2   r$   r3   s    r&   session_pathz'OwnerRiskAcceptanceService.session_path?   r6   r%   N)returnr   )r<   r   )r    r!   r"   propertyr5   r   r9   r;   r$   r%   r&   r0   r0   5   s:    ' '& & ' 'r%   r0   c                *    t        t        |             S r2   )r   r   )r)   s    r&   owner_risk_acceptance_identityr?   C   s     F7O,,r%   c                  t        |       }h d}|j                  d      }|j                  d      }|j                  d      }t        |j                  d            t        |j                  d            t        |      |k7  sO|j                  d      dk7  s:|j                  d	      d
k7  s%|j                  d      dus|j                  d      t        k7  st	        |t
              rt        |      dk7  st        |      t        d      z
  st	        |t
              r|r|j                  d      |j                  k7  s|j                  d      |j                  k7  sv|j                  d      |j                  k7  sXt	        |t
              rHt              h dk7  s8t        fdD              s$t              ddhk7  st        fdD              rt        d      t        |||j                  |j                  |j                        }|j                         D 	ci c]  \  }}	|dk7  s||	 }
}}	|t        |      k7  s|j                  d      t        |
      k7  rt        d      |S c c}	}w )N>   actordigestdecisionr   schema_versionr   r   authority_digestclinical_approvaltelegram_evidencedisclaimer_versionr*   r   r   r   r   r*   rA   rG   rD   owner-risk-acceptance-v1rC    accepted_for_nonmedical_coachingrF   FrH   @   0123456789abcdefr   r   r   >   chat_iduser_idtopic_idc              3  ^   K   | ]$  }t        j                  |            t        u & y wr2   typegetint).0keyrA   s     r&   	<genexpr>z9validate_owner_risk_acceptance_receipt.<locals>.<genexpr>y   s$     @%3tEIIcN#3.%   *-
message_id	update_idc              3  ^   K   | ]$  }t        j                  |            t        u & y wr2   rQ   )rU   rV   rG   s     r&   rW   z9validate_owner_risk_acceptance_receipt.<locals>.<genexpr>{   s/      
( "&&s+,C7(rX   (owner risk acceptance receipt is invalidr   r   r   r   r   rB   )_string_dictrS   setr   
isinstancer   lenr   r   r   any
ValueErrorr   itemsr?   r   )valuecontextreceiptexpected_fieldsr   r   r*   r)   rV   itemunsignedrA   rG   s              @@r&   &validate_owner_risk_acceptance_receiptrk   I   sF   
 5!GO  kk"34O";;'=>!++&;<W-.E$'( 	G';;'(%&;;z"-.;;*+58;;+,0BB/3/2%#&8"99.4#;;~&'*>*>>;;()W-D-DD;;./(()-s3u:;;@%@@ !lK%@@ 
(
 

 CDD('1))//%;;G $+==?#2ic4cXoT	?   	=gFF;;x $4X$>>CDDNs   #I11I1c               |    t        | t              r| st        d      | D cg c]  }t        ||       c}S c c}w )N(owner risk acceptance history is invalid)rf   )r`   listrc   rk   )re   rf   rg   s      r&   &validate_owner_risk_acceptance_historyro      sR    
 eT"%CDD 
 G	 	/	
   s   9c                    t        | t              st        d      i }| j                         D ]%  \  }}t        |t              st        d      |||<   ' |S )Nr\   )r`   dictrc   rd   r   )re   resultrV   ri   s       r&   r^   r^      sW    eT"CDD "F[[]	T#s#GHHs # Mr%   c                  t        | j                  | j                  |j                  |j                  d      }|d   t
        j                  j                  k7  rt        d      t        |j                  j                        dk7  s+t        |j                  j                        t        d      z
  rt        d      |j                  d      }d }t        |t              r!|j!                         D ]  \  }}|d	k(  s|} n t        |t"              r%t        |      dk7  st        |      t        d      z
  rt        d
      t%        | j&                  dz        }|j                  d      }t        |t(              r@|j                  d	      t+        |      k7  s#|j                  d      |j                  d	      k7  rt        d      t-        |      }	|	d	   |k7  s|j                  d      |k7  rt        d
      t/        |j                  j                  |j                  j0                  | j                  t#        |d         |      }
|j                  |
k7  s|j2                  t5        |
      k7  rt        d      dddt6        |
j                  |
j0                  | j                  |
j8                  |
j:                  |j2                  |d   |j                  j<                  |j                  j>                  |j                  j@                  d|j                  jB                  |j                  jD                  dd}t+        |      |d	<   |j                  dg       }t        |tF              st        d      |jI                  t
        jJ                  j                  dd g ||       tM        | j                  ||j                         tO        | j                  |      S )Nowner)r;   r   r+   r,   rolestatez&owner risk acceptance is not availablerK   rL   z*owner risk acceptance candidate is invalidreconciliationrB   z/owner risk acceptance reconciliation is invalidzbaseline-candidate.jsonbaseliner   z)owner risk acceptance baseline is invalidinput_reconciliation_digestr]   z&owner risk acceptance binding is stalerI   rJ   FrE   )rN   rM   rO   )rY   rZ   )rD   rC   rF   rH   r   r   r   r   r   r*   rE   rA   rG   owner_risk_acceptance_receiptsrm   )rv   owner_reviewedowner_review_receiptrz   )r;   documentr,   )r   r}   )(r   r;   r   r+   r,   r   SAFETY_HOLDre   rc   ra   r)   r   r_   rS   r`   r   rd   r   r   r9   rq   r   r   r   r   r*   r?   r   r   r   actor_user_idrM   rO   rY   rZ   rn   updateOWNER_REVIEWr   r   )servicerequestr}   rw   r   rV   re   baseline_candidatebaseline_payloadvalidated_reconciliationcurrent_bindingrg   existings                r&   record_owner_risk_acceptancer      s   
 $))))##!!H O77===ABBGOO++,2w../
 
!" EFF\\"23N+/.'*(..0JCh(-% 1
 ,c2$%+$%,>(??JKK*00 *--j9'.!!(+,-.<<)*!!(+, DEE2>B *.CC!!"?@ ! JKK077$__AA))H%6783O 	?*&&)/:; ABB46"0*:: / D D,,*::!0!F!F&::$%78''55''//((11
 "**55 ))33
#G, )1GH||<bAHh%CDDOO**00!';';7';	   ))!!
 )) r%   )	r   r   r.   r(   r0   r?   r   ro   rk   N)r)   r   r<   r   )re   objectrf   r.   r<   dict[str, object])re   r   rf   r.   r<   zlist[dict[str, object]])re   r   r<   r   )r   r0   r   r(   r<   r   )'
__future__r   collections.abcr   dataclassesr   r   pathlibr   typingr   r	   )checkin_cli.nutrition_onboarding_contractr
   r   r   r   #checkin_cli.nutrition_onboarding_fsr   'checkin_cli.nutrition_onboarding_modelsr   /checkin_cli.nutrition_onboarding_reconciliationr   (checkin_cli.nutrition_onboarding_sessionr   r   r   r   r#   r   r(   r.   r0   r?   rk   ro   r^   r   __all__r$   r%   r&   <module>r      s=   " # )  "  B C  : E 9 $d#  $ $d#  $ $d#  $( (-'--GG 4G 	GT 4 	 i'i (i 	iX
r%   