
    G%jk                     ^   d dl Z d dlZd dl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 defdZ G d	 d
ee j                  Z G d dee j                  Z G d dee j                  Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d d ed          Z G d! d"ed          Z G d# d$ed          Z G d% d&ed          Z G d' d(ed          Z G d) d*ed          Z G d+ d,ed          Z  G d- d.ed          Z! G d/ d0ed          Z" G d1 d2ed          Z# G d3 d4ed          Z$ G d5 d6ed          Z% G d7 d8ed          Z& G d9 d:ed          Z' G d; d<ed          Z( G d= d>ed          Z) G d? d@ed          Z* G dA dBed          Z+ G dC dDed          Z, G dE dFed          Z- G dG dHed          Z. G dI dJed          Z/ G dK dLed          Z0 G dM dNed          Z1 G dO dPed          Z2 G dQ dRed          Z3 G dS dTed          Z4 G dU dVed          Z5 G dW dXed          Z6dS )Y    N)datetimetimezone)Any)Column)JSON)FieldSQLModelreturnc                  >    t          j        t          j                  S N)r   nowr   utc     D/home/agent/projects/AutoShorts_Dashboard/backend/app/models/core.pynow_utcr   
   s    <%%%r   c                   R    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdS )VideoStatusimportedneeds_metadataready_for_review	in_reviewneeds_changesquality_failedneeds_internal_fixrejectedapproved	scheduled
publishinguploaded_to_tiktok_draftuploaded_draftuploaded_private	publishedfailedarchivedN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r   r   r   r   r      sg        H%N)I#M%N-HHIJ9%N)IFHHHr   r   c                       e Zd ZdZdZdS )ProvidertiktokyoutubeN)r&   r'   r(   r+   r,   r   r   r   r*   r*   "   s        FGGGr   r*   c                       e Zd ZdZdZdZdZdS )	JobStatusqueuedrunning	succeededr$   N)r&   r'   r(   r/   r0   r1   r$   r   r   r   r.   r.   '   s"        FGIFFFr   r.   c                       e Zd ZU  ed d          Zeed<    edd          Zeed<   eed<   dZeed	<    ee	
          Z
eed<   dS )Userc                  B    t          t          j                              S r   struuiduuid4r   r   r   <lambda>zUser.<lambda>/       C
,=,= r   Tdefault_factoryprimary_keyidindexuniqueemailpassword_hashadminroler<   
created_atN)r&   r'   r(   r   r>   r6   __annotations__rB   rE   r   rG   r   r   r   r   r3   r3   .   s         e$=$=4PPPBPPPT$///E3///D# 5999J99999r   r3   T)tablec                      e Zd ZU  ed d          Zeed<    ed          Zeed<   eed<    edd	          Z	edz  ed
<   dZ
edz  ed<   dZedz  ed<    ee ee                    Zee         ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZeed<   dZeed<   dZedz  ed<   dZedz  ed<    ee          Zeed<    ee          Zeed<   dS )PlatformAccountc                  B    t          t          j                              S r   r5   r   r   r   r9   zPlatformAccount.<lambda>7   r:   r   Tr;   r>   r@   providerdisplay_nameNdefaultr@   external_account_id
avatar_urlaccount_typer<   	sa_columnscopesencrypted_access_tokenencrypted_refresh_tokentoken_expires_at	connectedstatusF
is_defaultlast_successful_api_call
last_errorrF   rG   
updated_at)r&   r'   r(   r   r>   r6   rH   rN   r*   rR   rS   rT   listr   r   rW   rX   rY   rZ   r   r\   r]   boolr^   r_   r   rG   r`   r   r   r   rK   rK   6   s        e$=$=4PPPBPPPT***Hh***&+eD&E&E&EtEEE!Jd
!!!#L#*###dffTllKKKFDIKKK)-C$J---*.S4Z...(,ho,,,FCJ04ho444!Jd
!!! 5999J999 5999J99999r   rK   c                       e Zd ZU  ed          Zeed<    ee ee	                    Z
eeef         ed<    ee          Zeed<   dS )	
AppSettingT)r=   keyrU   
value_jsonrF   r`   N)r&   r'   r(   r   re   r6   rH   dictr   r   rf   r   r   r`   r   r   r   r   rd   rd   I   s{         u&&&C&&&!&tvvd||!T!T!TJS#XTTT 5999J99999r   rd   c                      e Zd ZU  ed d          Zeed<    edd          Zeed<    edd          Zedz  ed	<   d
Z	eed<   eed<   dZ
edz  ed<   dZedz  ed<   dZeed<    edd          Zeed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<    edd          Zedz  ed<    edd          Zedz  ed<    edd          Zedz  ed<    edd          Zeed<    edd          Zedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed <   dZedz  ed!<   dZ edz  ed"<    edd          Z!edz  ed#<   dZ"edz  ed$<   dZ#edz  ed%<   dZ$eed&<   dZ%eed'<   dZ&eed(<   dZ'edz  ed)<   dZ(edz  ed*<    ee)j*        d          Z+e)ed+<    ee,,          Z-e.ed-<    ee,,          Z/e.ed.<   dS )/
VideoAssetc                  B    t          t          j                              S r   r5   r   r   r   r9   zVideoAsset.<lambda>P   r:   r   Tr;   r>   r?   candidate_idNrP   
package_idmanual_uploadsource	file_pathoriginal_file_name	mime_typer   	file_sizechecksumduration_secwidthheightfpsaspect_ratiothumbnail_pathexternal_youtube_idexternal_tiktok_idsource_labelFis_demoimport_batch_label
transcriptscriptlanguageworking_title	theme_keytopic_idcontent_pillarseriesis_aigccommercial_promotes_own_brandcommercial_promotes_third_partyquality_score
hook_scorer\   rF   rG   r`   )0r&   r'   r(   r   r>   r6   rH   rk   rl   rn   rp   rq   rr   intrs   rt   floatru   rv   rw   rx   ry   rz   r{   r|   r}   rb   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r\   r   rG   r   r`   r   r   r   ri   ri   O   ss        e$=$=4PPPBPPPD666L#666"U4t<<<Jd
<<<!FC!!!NNN%)d
))) IsTz   IsET222Hc222!%L%$,%%%E3:FC$JC#L#*###!%NC$J%%%&+eD&E&E&EtEEE%*U4t%D%D%Dd
DDD$uT>>>L#*>>>E%t444GT444%*U4t%D%D%Dd
DDD!Jd
!!!FC$JHcDj $M3:$$$ IsTz    5T:::HcDj:::!%NC$J%%%FC$JGT*/!4///,1#T111 $M3:$$$!Jd
!!!%(<DIIIFKIII 5999J999 5999J99999r   ri   c                      e Zd ZU  ed d          Zeed<    edd          Zeed<    ed          Ze	ed	<    ed
d          Z
ed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<    ee ee                    Zee         ed<    ee ee                    Zee         ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<    ee ee                    Zeeef         ed<    ed
d          Zed
z  ed<    ee ee                    Zeeef         ed<   dZeed<   d
Zed
z  ed<    ee          Zeed<    ee          Z eed <   d
S )!	PostDraftc                  B    t          t          j                              S r   r5   r   r   r   r9   zPostDraft.<lambda>w   r:   r   Tr;   r>   videoasset.idr@   foreign_keyvideo_asset_idrM   rN   Nplatformaccount.idrQ   r   platform_account_idtitledescriptioncaptionrU   hashtags_json	tags_jsoncategory_idprivacy_statusscheduled_atmetadata_jsonrP   external_post_idsource_metadata_jsondraftr\   approved_atrF   rG   r`   )!r&   r'   r(   r   r>   r6   rH   r   rN   r*   r   r   r   r   ra   r   r   r   r   r   r   r   r   rg   r   r   r   r   r\   r   r   rG   r`   r   r   r   r   r   v   sK        e$=$=4PPPBPPP%dHHHNCHHHT***Hh***&+eDFZ&[&[&[t[[[E3:"Kt"""GS4Z$uTVVD\\RRRM49RRR 5NNNItCyNNN"Kt"""!%NC$J%%%$(L(T/((($)E$&&QU,,$W$W$WM4S>WWW#(5T#B#B#BcDjBBB+05QWQWX\Q]Q]+^+^+^$sCx.^^^FC#'KD''' 5999J999 5999J99999r   r   c                      e Zd ZU  ed d          Zeed<    edd          Zeed<   dZeed	<    ee	 e
e          
          Ze	eef         ed<    ee	 e
e          
          Ze	eef         ed<    ee          Zeed<   dS )MetadataVersionc                  B    t          t          j                              S r   r5   r   r   r   r9   zMetadataVersion.<lambda>   r:   r   Tr;   r>   postdraft.idr   post_draft_idsystem	edited_byrU   	diff_jsonsnapshot_jsonrF   	edited_atN)r&   r'   r(   r   r>   r6   rH   r   r   rg   r   r   r   r   r   r   r   r   r   r   r   r   r      s         e$=$=4PPPBPPPT~FFFM3FFFIs %dffTll S S SItCH~SSS$)E$&&QU,,$W$W$WM4S>WWW%888Ix88888r   r   c                      e Zd ZU  ed d          Zeed<    eddd          Zedz  ed<    edd	d          Zedz  ed
<    eddd          Z	edz  ed<    eddd          Z
edz  ed<    edd          Zeed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<    eed          Zeed<   dZeed<    edd          Zeed<   dS )CreativeChangec                  B    t          t          j                              S r   r5   r   r   r   r9   zCreativeChange.<lambda>   r:   r   Tr;   r>   Nr   rQ   r   r@   r   zexternalpost.idr   r   r   theme.idr   otherrP   change_typebefore_text
after_textchange_note
hypothesisr<   r@   
changed_atcreator
created_bymanualrn   )r&   r'   r(   r   r>   r6   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   r   r   r   r   r      s        e$=$=4PPPBPPP!&tX\!]!]!]NC$J]]]#(5CT\`#a#a#acDjaaa %dVZ [ [ [M3:[[[ 5:TRRRHcDjRRRuWD999K999"Kt"""!Jd
!!!"Kt"""!Jd
!!! 5EEEJEEEJ%555FC55555r   r   c                      e Zd ZU  ed d          Zeed<    ed          Zeed<    ed          Zeed<    ed          Z	eed<   eed	<    ee
 ee          
          Ze
eef         ed<    eed          Zeed<   dZeed<   dS )ActivityEventc                  B    t          t          j                              S r   r5   r   r   r   r9   zActivityEvent.<lambda>   r:   r   Tr;   r>   rM   entity_type	entity_id
event_typelabelrU   payload_jsonr   rG   r   r   N)r&   r'   r(   r   r>   r6   rH   r   r   r   rg   r   r   r   r   r   rG   r   r   r   r   r   r   r      s         e$=$=4PPPBPPPu4(((K(((U&&&Is&&&e$'''J'''JJJ#(5PT#V#V#VL$sCx.VVV 5EEEJEEEJr   r   c                   &   e Zd ZU  ed d          Zeed<    edd          Zeed<    edd	d
          Zedz  ed<    ed          Z	eed<   eed<    ee
 ee                    Ze
e         ed<    eed          Zeed<   dZeed<   dS )ReviewDecisionc                  B    t          t          j                              S r   r5   r   r   r   r9   zReviewDecision.<lambda>   r:   r   Tr;   r>   r   r   r   Nproductionqueueitem.idr   production_queue_item_idrM   decisionreasonrU   categories_jsonr   rG   r   r   )r&   r'   r(   r   r>   r6   rH   r   r   r   ra   r   r   r   r   rG   r   r   r   r   r   r   r      s         e$=$=4PPPBPPP%dHHHNCHHH+05Kcko+p+p+pcDjpppE%%%Hc%%%KKK!&tvvd||!T!T!TOT#YTTT 5EEEJEEEJr   r   c                   (   e Zd ZU  ed d          Zeed<    edd          Zeed<    edd	d
          Zedz  ed<   eed<    ee	 e
e                    Ze	e         ed<    edd          Zeed<    eed          Zeed<   dZeed<   dS )RevisionRequestc                  B    t          t          j                              S r   r5   r   r   r   r9   zRevisionRequest.<lambda>   r:   r   Tr;   r>   r   r   r   Nr   r   r   requested_changesrU   r   openrP   r\   r   rG   r   r   )r&   r'   r(   r   r>   r6   rH   r   r   ra   r   r   r   r\   r   rG   r   r   r   r   r   r   r      s        e$=$=4PPPBPPP%dHHHNCHHH+05Kcko+p+p+pcDjppp!&tvvd||!T!T!TOT#YTTT%d333FC333 5EEEJEEEJr   r   c                   Z   e Zd ZU  ed d          Zeed<    edd          Zeed<    ed          Ze	ed	<   eed
<   e
j        Ze
ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZeed<   dZedz  ed<   dZedz  ed<    ee          Zeed<   dS )
PublishJobc                  B    t          t          j                              S r   r5   r   r   r   r9   zPublishJob.<lambda>   r:   r   Tr;   r>   r   r   r   rM   rN   job_typer\   Nexternal_publish_idr   upload_url_redacted
error_codeerror_messager   attempts
started_atfinished_atrF   rG   )r&   r'   r(   r   r>   r6   rH   r   rN   r*   r.   r/   r\   r   r   r   r   r   r   r   r   r   r   r   rG   r   r   r   r   r      sI        e$=$=4PPPBPPPT~FFFM3FFFT***Hh***MMM!(FI(((&*t***#'cDj'''&*t***!Jd
!!! $M3:$$$Hc"&J4&&&#'KD''' 5999J99999r   r   c                   *   e Zd ZU  ed d          Zeed<   eed<   eed<   eed<   dZedz  ed	<    ee	 e
e          
          Ze	eef         ed<    ee	 e
e          
          Ze	eef         ed<   dZedz  ed<    ee          Zeed<   dS )
ApiCallLogc                  B    t          t          j                              S r   r5   r   r   r   r9   zApiCallLog.<lambda>   r:   r   Tr;   r>   rN   endpointmethodNstatus_coderU   request_redacted_jsonresponse_redacted_jsonr   rF   rG   )r&   r'   r(   r   r>   r6   rH   r   r   rg   r   r   r   r   r   r   r   rG   r   r   r   r   r   r      s         e$=$=4PPPBPPPMMMMMMKKK"Kt""",1E$RXRXY]R^R^,_,_,_4S>___-2U4SYSYZ^S_S_-`-`-`DcN```!Jd
!!! 5999J99999r   r   c                       e Zd ZU  ed d          Zeed<   eed<   dZedz  ed<   dZedz  ed<   d	Z	e
ed
<   dZeed<   dS )ContentPillarc                  B    t          t          j                              S r   r5   r   r   r   r9   zContentPillar.<lambda>   r:   r   Tr;   r>   nameNr   target_audiencer   priorityactiver\   )r&   r'   r(   r   r>   r6   rH   r   r   r   r   r\   r   r   r   r   r      s         e$=$=4PPPBPPP
III"Kt""""&OS4Z&&&HcFCr   r   c                      e Zd ZU  ed d          Zeed<    edd          Zedz  ed<   eed	<   dZedz  ed
<   dZ	edz  ed<   dZ
edz  ed<   dZedz  ed<    ee ee                    Zee         ed<    ee ee                    Zee         ed<   dZeed<   dZeed<   dZeed<   dZeed<    ee          Zeed<    ee          Zeed<   dS )Themec                  B    t          t          j                              S r   r5   r   r   r   r9   zTheme.<lambda>   r:   r   Tr;   r>   Nzcontentpillar.idr   	pillar_idr   r   angleaudience_painpromiserU   examplesbanned_claimsendefault_languager   r\   r   r   performance_scorerF   rG   r`   )r&   r'   r(   r   r>   r6   rH   r   r   r   r   r   ra   r   r   r   r   r   r\   r   r   r   r   r   rG   r   r`   r   r   r   r   r      s        e$=$=4PPPBPPP!E$<NOOOIsTzOOOJJJ"Kt"""E3: $M3:$$$GS4Z%tMMMHd3iMMM$uTVVD\\RRRM49RRR c   FCHc u    5999J999 5999J99999r   r   c                      e Zd ZU  ed d          Zeed<    eddd          Zedz  ed<   eed	<   dZedz  ed
<    ee	 e
e                    Ze	e         ed<    ee	 e
e                    Ze	e         ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZeed<    edd          Zeed<    ee          Zeed<    ee          Zeed<   dS )Ideac                  B    t          t          j                              S r   r5   r   r   r   r9   zIdea.<lambda>   r:   r   Tr;   r>   Nr   r   r   r   short_explanationrU   keywordssource_linksnotespillarr   r   r   idearP   r\   rF   rG   r`   )r&   r'   r(   r   r>   r6   rH   r   r   ra   r   r   r   r   r   r  r   r   r   r\   r   rG   r   r`   r   r   r   r   r      ss        e$=$=4PPPBPPP 5:TRRRHcDjRRRJJJ$(sTz(((%tMMMHd3iMMM#eDFF4LLQQQL$s)QQQE3:FC$JFC$JHc%d333FC333 5999J999 5999J99999r   r   c                      e Zd ZU  ed d          Zeed<    eddd          Zedz  ed<    edd	d          Zedz  ed
<    edd          Z	edz  ed<   eed<   dZ
edz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<    edd          Zeed<   dZedz  ed<    ee ee                    Zeeef         ed<    ee          Zeed<    ee          Zeed<   dS )ContentScriptc                  B    t          t          j                              S r   r5   r   r   r   r9   zContentScript.<lambda>  r:   r   Tr;   r>   Nr   r   	family_idr   r   rP   rl   r   hookscript_textplatform_captionyoutube_titleyoutube_descriptionr  r\   source_pathrU   performance_summary_jsonrF   rG   r`   )r&   r'   r(   r   r>   r6   rH   r  r   rl   r  r  r	  r
  r  r\   r  rg   r   r   r  r   r   rG   r   r`   r   r   r   r  r    s        e$=$=4PPPBPPP!E$JdSSSIsTzSSS!&tX\!]!]!]NC$J]]]"U4t<<<Jd
<<<JJJD#*"Kt"""#'cDj''' $M3:$$$&*t***%d333FC333"Kt"""/4uTU[U[\`UaUa/b/b/bd38nbbb 5999J999 5999J99999r   r  c                      e Zd ZU  ed d          Zeed<    edd          Zedz  ed<   dZedz  ed<    ed	d          Z	eed
<    edd          Z
edz  ed<   dZedz  ed<   dZedz  ed<    ee          Zeed<   dS )	ImportLogc                  B    t          t          j                              S r   r5   r   r   r   r9   zImportLog.<lambda>!  r:   r   Tr;   r>   NrP   rl   folder_namependingr\   r   r   r   messageerrorrF   rG   )r&   r'   r(   r   r>   r6   rH   rl   r  r\   r   r  r  r   rG   r   r   r   r   r  r     s         e$=$=4PPPBPPP"U4t<<<Jd
<<<"Kt"""%	666FC666!&t!Q!Q!QNC$JQQQGS4ZE3: 5999J99999r   r  c                       e Zd ZU  ed d          Zeed<   eed<   dZedz  ed<    edd	          Zedz  ed
<   dZ	edz  ed<   dZ
edz  ed<   dZeed<   dS )Seriesc                  B    t          t          j                              S r   r5   r   r   r   r9   zSeries.<lambda>,  r:   r   Tr;   r>   r   Nr   r   r   theme_idformat_templateposting_frequencyr   r\   )r&   r'   r(   r   r>   r6   rH   r   r  r  r  r\   r   r   r   r  r  +  s         e$=$=4PPPBPPP
III"Kt""" 5:FFFHcDjFFF"&OS4Z&&&$(sTz(((FCr   r  c                       e Zd ZU  ed d          Zeed<    edd          Zedz  ed<   eed	<   dZedz  ed
<   dZ	edz  ed<   dZ
eed<   dS )HookTemplatec                  B    t          t          j                              S r   r5   r   r   r   r9   zHookTemplate.<lambda>6  r:   r   Tr;   r>   Nr   r   r  textplatformtoner   r   )r&   r'   r(   r   r>   r6   rH   r  r  r   r   r   r   r   r   r  r  5  s         e$=$=4PPPBPPP 5:FFFHcDjFFF
IIIHcDjD#* u     r   r  c                       e Zd ZU  ed d          Zeed<    edd          Zedz  ed<   eed	<   eed
<    ee e	e
                    Zee         ed<   dZedz  ed<   dS )CaptionTemplatec                  B    t          t          j                              S r   r5   r   r   r   r9   zCaptionTemplate.<lambda>?  r:   r   Tr;   r>   Nr   r   r  r  templaterU   hashtagscta)r&   r'   r(   r   r>   r6   rH   r  ra   r   r   r%  r&  r   r   r   r"  r"  >  s         e$=$=4PPPBPPP 5:FFFHcDjFFFMMMMMM%tMMMHd3iMMMCtr   r"  c                       e Zd ZU  ed d          Zeed<   eed<   eed<    ee ee	                    Z
ee         ed<   d	Zed	z  ed
<   d	S )
HashtagSetc                  B    t          t          j                              S r   r5   r   r   r   r9   zHashtagSet.<lambda>H  r:   r   Tr;   r>   r   r  rU   tagsNr   )r&   r'   r(   r   r>   r6   rH   ra   r   r   r*  r   r   r   r   r(  r(  G  s         e$=$=4PPPBPPP
IIIMMMeDFF4LLIIID$s)IIIE3:r   r(  c                      e Zd ZU  ed d          Zeed<    edd          Zedz  ed<   eed	<   dZe	dz  ed
<   dZ
edz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<    ee          Zeed<   dS )CreativeBriefc                  B    t          t          j                              S r   r5   r   r   r   r9   zCreativeBrief.<lambda>P  r:   r   Tr;   r>   Nr   r   r  r   target_length_secvoice_stylevisual_stylemusic_stylescript_constraintscompliance_notesrF   rG   )r&   r'   r(   r   r>   r6   rH   r  r.  r   r/  r0  r1  r2  r3  r   rG   r   r   r   r   r,  r,  O  s         e$=$=4PPPBPPP 5:FFFHcDjFFFJJJ$(sTz((("Kt"""#L#*###"Kt"""%)d
)))#'cDj''' 5999J99999r   r,  c                       e Zd ZU  ed d          Zeed<   eed<   eed<   eed<    ee          Ze	ed	<   d
Z
eed<   dZeed<   dZedz  ed<   dS )AnalyticsImportc                  B    t          t          j                              S r   r5   r   r   r   r9   zAnalyticsImport.<lambda>]  r:   r   Tr;   r>   rn   rN   	file_namerF   imported_atr  r\   r   	row_countN	error_log)r&   r'   r(   r   r>   r6   rH   r   r8  r   r\   r9  r   r:  r   r   r   r5  r5  \  s         e$=$=4PPPBPPPKKKMMMNNN!E':::K:::FCIs IsTz     r   r5  c                       e Zd ZU  ed d          Zeed<   dZedz  ed<   eed<   dZedz  ed<    edd	
          Z	edz  ed<    ee
          Zeed<    ee ee                    Zeeef         ed<   dS )AnalyticsSnapshotc                  B    t          t          j                              S r   r5   r   r   r   r9   zAnalyticsSnapshot.<lambda>h  r:   r   Tr;   r>   Nplatform_post_idrN   
account_idr   r   video_idrF   snapshot_atrU   metrics_json)r&   r'   r(   r   r>   r6   rH   r>  r?  r@  r   rA  r   rg   r   r   rB  r   r   r   r   r<  r<  g  s         e$=$=4PPPBPPP#'cDj'''MMM!Jd
!!! 5?KKKHcDjKKK!E':::K:::#(5PT#V#V#VL$sCx.VVVVVr   r<  c                   `   e Zd ZU  ed d          Zeed<    eej        d          Z	eed<    eddd	          Z
edz  ed
<    edd          Zeed<    eed          Zeed<    eed          Zeed<   dZedz  ed<   dZedz  ed<    edd          Zeed<   dZeed<   dZeed<    ee ee                    Zee         ed<    ee ee                    Zee         ed<    edd          Zedz  ed<    edd          Zeed<    edd          Zedz  ed<   dS )AnalyticsImportBatchc                  B    t          t          j                              S r   r5   r   r   r   r9   zAnalyticsImportBatch.<lambda>r  r:   r   Tr;   r>   rP   rN   Nr   r   r?  youtube_csvsource_typer   r8  rA  date_range_startdate_range_endr  r\   r   total_files
total_rowsrU   warnings_jsonerrors_jsonr|   Fr}   r~   )r&   r'   r(   r   r>   r6   rH   r*   r,   rN   r?  rG  r   r8  r   rA  rH  rI  r\   rJ  r   rK  ra   r   r   rL  rM  r|   r}   rb   r~   r   r   r   rD  rD  q  s        e$=$=4PPPBPPPx'7tDDDHhDDD"U4=QY]^^^Jd
^^^u]$???K???!E'FFFKFFF!E'FFFKFFF(,ho,,,&*NHtO***%	666FC666KJ$uTVVD\\RRRM49RRR"U466$<<PPPKcPPP$uT>>>L#*>>>E%t444GT444%*U4t%D%D%Dd
DDDDDr   rD  c                      e Zd ZU  ed d          Zeed<    edd          Zeed<   eed<    ed	          Zeed
<    edd          Z	eed<   dZ
eed<   dZeed<   dZeed<    edd          Zeed<    ee ee                    Zee         ed<    ee ee                    Zee         ed<    ee          Zeed<   dS )AnalyticsImportFilec                  B    t          t          j                              S r   r5   r   r   r   r9   zAnalyticsImportFile.<lambda>  r:   r   Tr;   r>   analyticsimportbatch.idr   batch_idr7  rM   	file_hashunknownrP   detected_typer   r9  imported_rowsskipped_rowsr  r\   rU   rL  rM  rF   rG   N)r&   r'   r(   r   r>   r6   rH   rR  rS  rU  r9  r   rV  rW  r\   ra   r   r   rL  rM  r   rG   r   r   r   r   rO  rO    s\        e$=$=4PPPBPPPE2KLLLHcLLLNNNU&&&Is&&&y===M3===IsM3L#%	666FC666$uTVVD\\RRRM49RRR"U466$<<PPPKcPPP 5999J99999r   rO  c                      e Zd ZU  ed d          Zeed<    eej        d          Z	eed<    ed          Z
eed<    ed	d
d          Zed	z  ed<    ed	dd          Zed	z  ed<   d	Zed	z  ed<   d	Zed	z  ed<   d	Zed	z  ed<    ed	dd          Zed	z  ed<   d	Zed	z  ed<    ee          Zeed<    ee          Zeed<    ed	d          Zed	z  ed<    edd          Zeed<    ed	d          Zed	z  ed<    ed	d          Zed	z  ed<    edd          Zeed<   d	Zed	z  ed<   d	Zed	z  ed <   d	S )!ExternalPostc                  B    t          t          j                              S r   r5   r   r   r   r9   zExternalPost.<lambda>  r:   r   Tr;   r>   rP   rN   rM   r   Nr   r   r?  r   r   r   published_atrt   r   r   r   rF   rG   r`   r|   Fr}   r~   source_file_namer   mapping_status
ignored_atignore_reason)r&   r'   r(   r   r>   r6   rH   r*   r,   rN   r   r?  r   r   r[  r   rt   r   r   r   r   rG   r`   r|   r}   rb   r~   r\  r]  r^  r_  r   r   r   rY  rY    sB        e$=$=4PPPBPPPx'7tDDDHhDDD!E---c---"U4=QY]^^^Jd
^^^!&tX\!]!]!]NC$J]]]E3:$(L(T/(((#L#*### 5:TRRRHcDjRRRFC$J 5999J999 5999J999$uT>>>L#*>>>E%t444GT444%*U4t%D%D%Dd
DDD#(5T#B#B#BcDjBBB%d;;;NC;;;"&J4&&& $M3:$$$$$r   rY  c                   0   e Zd ZU  ed d          Zeed<    edd          Zeed<    eej	        d          Z
eed	<    ed
dd          Zed
z  ed<    ed          Zeed<   d
Zed
z  ed<    ee ee                    Zeeef         ed<   d
S )AnalyticsDailyAggregatec                  B    t          t          j                              S r   r5   r   r   r   r9   z AnalyticsDailyAggregate.<lambda>  r:   r   Tr;   r>   rQ  r   rR  rP   rN   Nr   r   r?  rM   metric_dateviewsrU   raw_json)r&   r'   r(   r   r>   r6   rH   rR  r*   r,   rN   r?  rc  r   rd  r   rg   r   r   re  r   r   r   r   ra  ra    s         e$=$=4PPPBPPPE2KLLLHcLLLx'7tDDDHhDDD"U4=QY]^^^Jd
^^^!E---K---E3:$uTVVD\\RRRHd38nRRRRRr   ra  c                      e Zd ZU  ed d          Zeed<    edd          Zeed<    eej	        d          Z
eed	<    ed
dd          Zed
z  ed<    ed          Zeed<    ed
dd          Zed
z  ed<    eed          Zeed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed<   d
Zed
z  ed <   d
Z ed
z  ed!<   d
Z!ed
z  ed"<   d
Z"ed
z  ed#<   d
Z#ed
z  ed$<   d
Z$ed
z  ed%<   d
Z%ed
z  ed&<   d
Z&ed
z  ed'<   d
Z'ed
z  ed(<   d
Z(ed
z  ed)<   d
Z)ed
z  ed*<    ee* e+e,          +          Z-e*ee.f         ed,<    ed
d          Z/ed
z  ed-<    ed.d          Z0e1ed/<    ed
d          Z2ed
z  ed0<    ed
d          Z3ed
z  ed1<   d
S )2AnalyticsPostSnapshotc                  B    t          t          j                              S r   r5   r   r   r   r9   zAnalyticsPostSnapshot.<lambda>  r:   r   Tr;   r>   rQ  r   rR  rP   rN   Nr   r   r?  rM   r   r   r   r   rA  r   r[  rt   rd  watch_time_hourssubscribers_deltaimpressionsimpression_ctr_pctavg_view_duration_secretention_proxy_pctviews_per_impressionsubscribers_per_1000_viewsviews_per_day_since_publishviews_deltaviews_delta_pctviews_velocity_per_daywatch_time_deltaimpressions_deltasubscriber_delta_change
ctr_changeretention_proxy_changedays_since_previous_snapshottrendrU   re  r|   Fr}   r~   r\  )4r&   r'   r(   r   r>   r6   rH   rR  r*   r,   rN   r?  r   r   r   rA  r   r   r[  rt   r   rd  ri  r   rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  rg   r   r   re  r   r|   r}   rb   r~   r\  r   r   r   rg  rg    s        e$=$=4PPPBPPPE2KLLLHcLLLx'7tDDDHhDDD"U4=QY]^^^Jd
^^^!E---c---!&tX\!]!]!]NC$J]]]!E'FFFKFFFE3:$(L(T/(((#L#*###E3:%)edl)))$(sTz((("Kt"""'++++*.54<...(,,,,)-%$,---/333304444"Kt"""$(OUT\(((+/EDL///%)edl)))$(sTz(((*.S4Z...#J###+/EDL///15 %$,555E3:$uTVVD\\RRRHd38nRRR$uT>>>L#*>>>E%t444GT444%*U4t%D%D%Dd
DDD#(5T#B#B#BcDjBBBBBr   rg  c                      e Zd ZU  ed d          Zeed<    edd          Zeed<    edd	d
          Zedz  ed<    eddd
          Z	edz  ed<   dZ
edz  ed<   dZeed<    edd          Zedz  ed<   dZedz  ed<    edd          Zedz  ed<   dZedz  ed<   dZeed<    ee ee                    Zeeef         ed<   dZedz  ed<   dZedz  ed<    edd          Zeed<   dZedz  ed<    ee ee                    Zeeef         ed<    ee ee                    Zeeef         ed <    ee ee                    Zeeef         ed!<    ee"          Ze ed#<    ee"          Z!e ed$<   dS )%WebsiteCompanionc                  B    t          t          j                              S r   r5   r   r   r   r9   zWebsiteCompanion.<lambda>  r:   r   Tr;   r>   r   r   r   Nr   r   r   contentscript.idcontent_script_idwebsite_repo_pathzwebsite-mvp-v0website_branchrP   slugr   youtube_video_idvideo_url_internalFwebsite_link_allowedrU   candidate_payload_jsongenerated_content_pathgenerated_thumbnail_pathnot_startedr\   r_   qa_status_jsongit_status_jsonduplicate_status_jsonrF   rG   r`   )"r&   r'   r(   r   r>   r6   rH   r   r   r  r  r  r  r   r  r  r  rb   rg   r   r   r  r   r  r  r\   r_   r  r  r  r   rG   r   r`   r   r   r   r}  r}    s        e$=$=4PPPBPPP%dHHHNCHHH %dVZ [ [ [M3:[[[$)E$DV^b$c$c$csTzccc$(sTz(((*NC***uT666D#*666E3:#(5T#B#B#BcDjBBB%)d
)))!&$&&&-2U4SYSYZ^S_S_-`-`-`DcN```)-C$J---+/cDj///%T:::FC:::!Jd
!!!%*U466RV<<%X%X%XNDcNXXX&+eDFFSWLL&Y&Y&YOT#s(^YYY,1E$RXRXY]R^R^,_,_,_4S>___ 5999J999 5999J99999r   r}  c                   $   e Zd ZU  ed d          Zeed<   eed<    ed          Zeed<    edd	          Zeed
<   dZ	edz  ed<    ee
 ee                    Ze
eef         ed<    ee          Zeed<    ee          Zeed<   dS )UploadExecutorc                  B    t          t          j                              S r   r5   r   r   r   r9   zUploadExecutor.<lambda>  r:   r   Tr;   r>   r   rM   typer   rP   r\   Nr   rU   config_jsonrF   rG   r`   )r&   r'   r(   r   r>   r6   rH   r  r\   r   rg   r   r   r  r   r   rG   r   r`   r   r   r   r  r    s         e$=$=4PPPBPPP
IIID!!!D#!!!%555FC555"Kt""""'%t"U"U"UKc3hUUU 5999J999 5999J99999r   r  c                      e Zd ZU  ed d          Zeed<    edd          Zeed<    edd          Zeed	<    ed
d          Z	eed<    edd          Z
eed<   dZedz  ed<   dZedz  ed<    edd          Zedz  ed<    edd          Zedz  ed<   dZeed<    ee ee                    Zeeef         ed<   dZedz  ed<    edd          Zedz  ed<    edd          Zedz  ed<    ee          Zeed<   dZedz  ed<   dZedz  ed<   dZedz  ed<    ee          Zeed <   dZedz  ed!<   dS )"UploadRequestc                  B    t          t          j                              S r   r5   r   r   r   r9   zUploadRequest.<lambda>  r:   r   Tr;   r>   r   r   r   r   r   existing_jarvis_uploaderrP   executor_typer   r\   Napproval_textapproval_commandexpected_candidate_idexpected_video_shaprivateexpected_privacyrU   metadata_snapshot_jsonoutbox_pathupload_audit_idr  rF   rG   r   sent_atcompleted_atr`   r  ) r&   r'   r(   r   r>   r6   rH   r   r   r  r\   r  r  r  r  r  rg   r   r   r  r   r  r  r  r   rG   r   r   r  r  r`   r  r   r   r   r  r    sN        e$=$=4PPPBPPP%dHHHNCHHHT~FFFM3FFF'ANNNM3NNN%t444FC444 $M3:$$$#'cDj'''(-d$(G(G(G3:GGG%*U4t%D%D%Dd
DDD%c%%%-2U4SYSYZ^S_S_-`-`-`DcN```"Kt""""'%D"A"A"AOS4ZAAA#(5T#B#B#BcDjBBB 5999J999#'KD'''#GX_###$(L(T/((( 5999J999E3:r   r  c                      e Zd ZU  ed d          Zeed<    eddd          Zedz  ed<    edd	d          Zedz  ed
<    eddd          Z	edz  ed<   eed<   dZ
edz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZeed<    edd          Zeed<    edd          Zeed<    edd          Zeed<    edd          Zedz  ed<   dZedz  ed<    edd          Zedz  ed<    eddd          Zedz  ed<   dZedz  ed <   dZedz  ed!<    ee"          Zeed#<    ee"          Zeed$<   dS )%ProductionQueueItemc                  B    t          t          j                              S r   r5   r   r   r   r9   zProductionQueueItem.<lambda>  r:   r   Tr;   r>   Nr   r   r  zidea.ididea_idr  r  r   briefr2  visual_constraintsvoice_constraintsr   r   r   rP   position	suggestedr\   r   rn   expected_package_idexpected_package_manifestactual_package_idr   r   attached_package_pathr  rF   rG   r`   )r&   r'   r(   r   r>   r6   rH   r  r  r  r  r2  r  r  r   r   r   r  r\   rn   r  r  r  r   r  r  r   rG   r   r`   r   r   r   r  r    sj        e$=$=4PPPBPPP!E$JdSSSIsTzSSS%)4PPPGS4ZPPP$)E$DV^b$c$c$csTzcccJJJE3:%)d
)))%)d
)))$(sTz(((FC$JHcE!4000Hc000%4888FC888%555FC555&+eD&E&E&EtEEE,0sTz000$)E$d$C$C$CsTzCCC!&tX\!]!]!]NC$J]]](,3:,,,E3: 5999J999 5999J99999r   r  c                   p   e Zd ZU  ed d          Zeed<    edd          Zeed<    edd          Zeed	<    edd
          Z	eed<    eddd          Z
edz  ed<    edd          Zedz  ed<   dZedz  ed<   dZeed<   dZedz  ed<   dZedz  ed<    ee ee                    Zee         ed<   dZedz  ed<   dZeed<   dZeed<   dZeed<    edd          Zeed<    ee ee                    Zee         ed <    ee ee                    Zee         ed!<   dZeed"<    ee ee                    Zeeef         ed#<    ee ee                    Z eeef         ed$<   dZ!edz  ed%<   dZ"edz  ed&<    ee#'          Z$e%ed(<    ee#'          Z&e%ed)<   dS )*YouTubeUploadAuditc                  B    t          t          j                              S r   r5   r   r   r   r9   zYouTubeUploadAudit.<lambda>-  r:   r   Tr;   r>   r   r   r   r   r   r   r   Nzpublishjob.idr   publish_job_idrP   r  youtube_urlr  r   r   description_hashrU   r   r   contains_synthetic_mediaFself_declared_made_for_kidsnotify_subscribersr/   upload_statusapi_endpoints_calledoauth_scopes_usedr  r   r   r   r   rF   rG   r`   )'r&   r'   r(   r   r>   r6   rH   r   r   r   r  r  r  r   r   r  ra   r   r   r   r   r  rb   r  r  r  r  r  r  rg   r   r   r   r   r   r   rG   r   r`   r   r   r   r  r  ,  s        e$=$=4PPPBPPP%dHHHNCHHHT~FFFM3FFF$u4=QRRRRRR!&tX\!]!]!]NC$J]]]#(5T#B#B#BcDjBBB"Kt"""#NC###E3:#'cDj''' 5NNNItCyNNN"Kt"""%)d)))(----$$$$xt<<<M3<<<&+eDFFSWLL&Y&Y&Y$s)YYY#(5PT#V#V#VtCyVVV!&$&&&,1E$RXRXY]R^R^,_,_,_4S>___-2U4SYSYZ^S_S_-`-`-`DcN```!Jd
!!! $M3:$$$ 5999J999 5999J99999r   r  c                      e Zd ZU  ed d          Zeed<    edd          Zeed<    edd          Zeed	<    ed
dd          Z	ed
z  ed<    edd          Z
eed<    edd          Zeed<    edd          Zeed<    ed
d          Zed
z  ed<    edd          Zeed<    ed
d          Zed
z  ed<    ee ee                    Zeeef         ed<    ee ee                    Zeeef         ed<    ee ee                    Zeeef         ed<   d
Zed
z  ed<   d
Zed
z  ed<    ee          Zeed <    ee          Zeed!<   d
S )"TikTokUploadAttemptc                  B    t          t          j                              S r   r5   r   r   r   r9   zTikTokUploadAttempt.<lambda>I  r:   r   Tr;   r>   r   r   r   r   r   Nr   r   r   mockrP   modezvideo.uploadscopeFILE_UPLOADrn   
publish_idcreatedr  transfer_statusrU   status_fetch_result_jsonr   r   r   r   rF   rG   r`   )r&   r'   r(   r   r>   r6   rH   r   r   r   r  r  rn   r  r  r  rg   r   r   r  r   r   r   r   r   r   rG   r   r`   r   r   r   r  r  H  s^        e$=$=4PPPBPPP%dHHHNCHHHT~FFFM3FFF&+eDFZbf&g&g&gtgggfD111D#111~T:::E3:::%T:::FC:::"U4t<<<Jd
<<<y===M3==="'%D"A"A"AOS4ZAAA/4uTU[U[\`UaUa/b/b/bd38nbbb,1E$RXRXY]R^R^,_,_,_4S>___-2U4SYSYZ^S_S_-`-`-`DcN```!Jd
!!! $M3:$$$ 5999J999 5999J99999r   r  c                       e Zd ZU  ed d          Zeed<    edd          Zeed<   eed<   dZedz  ed	<   dZ	e
ed
<   dS )MetricDefinitionc                  B    t          t          j                              S r   r5   r   r   r   r9   zMetricDefinition.<lambda>]  r:   r   Tr;   r>   r?   re   rO   Nunithigher_is_better)r&   r'   r(   r   r>   r6   rH   re   r  r  rb   r   r   r   r  r  \  s         e$=$=4PPPBPPPu4---C---D#*!d!!!!!r   r  )7enumr7   r   r   typingr   
sqlalchemyr   sqlalchemy.typesr   sqlmodelr   r	   r   r6   Enumr   r*   r.   r3   rK   rd   ri   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r(  r,  r5  r<  rD  rO  rY  ra  rg  r}  r  r  r  r  r  r  r   r   r   <module>r     s6     ' ' ' ' ' ' ' '             ! ! ! ! ! ! $ $ $ $ $ $ $ $& & & & &    #ty   (    sDI   
    TY   : : : : :84 : : : :: : : : :hd : : : :&: : : : : : : : :$: $: $: $: $: $: $: $: $:N: : : : : : : : :,9 9 9 9 9hd 9 9 9 96 6 6 6 6XT 6 6 6 6          HD                 XT                 hd        : : : : : : : : :"	: 	: 	: 	: 	: 	: 	: 	: 	:    HD    : : : : :HD : : : :$: : : : :84 : : : : : : : : :HD : : : :$: : : : : : : : :    XT    ! ! ! ! !84 ! ! ! !    hd            
: 
: 
: 
: 
:HD 
: 
: 
: 
:! ! ! ! !hd ! ! ! !W W W W W W W W WE E E E E84 E E E E&: : : : :($ : : : :% % % % %84 % % % %,S S S S Shd S S S S#C #C #C #C #CHD #C #C #C #CL: : : : :xt : : : :0: : : : :XT : : : :    HD    .: : : : :($ : : : :2: : : : : : : : :8: : : : :($ : : : :(" " " " "xt " " " " " "r   