Ë
    r›Xjb$  ã                  óv  — U d dl mZ d dlZd dlZd dlmZmZ d dlmZmZ d dl	m
Z
 dZdZdZd	Zd
Zg dg d¢dœ‘dg d¢dœ‘dg d¢dœ‘dg d¢dœ‘dg d¢dœ‘dg d¢dœ‘dg d¢dœ‘dg d¢dœ‘dg d¢dœ‘dg d¢dœ‘d g d!¢dœ‘d"g d#¢dœ‘d$g d%¢dœ‘d&g d'¢dœ‘d(g d)¢dœ‘d*g d+¢dœ‘d,g d-¢dœ‘d.g d/¢dœ‘d0g d1¢dœ‘d2g d3¢dœ‘d4g d5¢dœ‘d6g d7¢dœ‘d8g d9¢dœ‘d:g d;¢dœ‘d<g d=¢dœ‘d>g d?¢dœ‘d@g dA¢dœ‘dBg dC¢dœ‘dDg dE¢dœ‘dFg dG¢dœ‘dHg dI¢dœ‘dJg dK¢dœ‘ZdLedM<   d dNdOdPdQdRdSdTœZe G dU„ dV«      «       Z G dW„ dX«      Zy)Yé    )ÚannotationsN)ÚasdictÚ	dataclass)ÚdateÚdatetime)ÚPath)Úmagazine_coverÚeditorial_overlayÚapple_keynoteÚ
pitch_deckÚ
bento_gridÚhero_bannerÚinfographicÚnews_broadcastÚtimelineÚdashboard_uiÚsplit_comparisonÚ
glass_cardÚminimal_premiumÚ	neon_techÚ	bold_statÚgradient_storyÚcorporate_linkedinÚ	cyberpunk)Úmodern_startupÚapple_minimalÚswissÚluxuryÚ	brutalistÚ	newspaperÚ
futuristicÚ	editorial)ÚglassmorphismÚgradient_meshÚ3d_environmentÚminimal_whiteÚdark_premiumÚ	tech_gridÚabstract_geometryÚneural_networkÚliquid_gradientÚauroraÚcyberpunk_cityÚpaper_textureÚnoise_textureÚmesh_gradient)Ú	cinematicÚkineticÚglitchÚparallaxÚ	broadcastÚproduct_revealÚdata_motion)
Úeditorial_3dÚapple_productÚstripe_fintechÚnvidia_computeÚopenai_researchÚfigma_uiÚlinear_saasÚarc_browserÚ
cyber_noirÚphotoreal_techÚelectric_monday)z#0A1628ú#00D4FFú#FFFFFFz#5B8CFF)ÚnameÚcolorsÚneon_tuesday)z#0D0221z#C77DFFz#FF2E97z#1A0A3EÚember_wednesday)z#0C0C0Cz#FF6B00z#D4AF37z#2A2A2AÚemerald_thursday)z#042F2Ez#10B981rD   z#14B8A6Úcrimson_friday)z#1A0505z#EF4444z#374151z#F8FAFCÚaurora_saturday)z#0F0A1Fz#A78BFAú#38BDF8z#F472B6Úminimal_sunday)z#FAF7F2z#E8E0D5z#2C2C2Cz#8B7355Ústripe_violet)z#0A2540z#635BFFrC   z#F6F9FCÚlinear_indigo)z#0D0D12z#5E6AD2rD   z#8B8BA7Úfigma_sunset)z#1E1E1Ez#A259FFz#F24E1Ez#FF7262Únvidia_green)ú#000000z#76B900rD   ú#1A1A1AÚapple_silver)z#F5F5F7z#1D1D1Fz#86868Bz#0071E3Úopenai_teal)z#0D0D0Dz#10A37FrD   rS   Ú	arc_space)z#1C1C1Ez#FF6B6Bz#4ECDC4z#FFE66DÚframer_blue)rR   z#0099FFrD   z#333333Úgold_luxury)z#0A0A0Az#C9A227z#F5E6C8z#2D2D2DÚgraphite_orange)z#1C1917z#F97316z#FAFAF9z#44403CÚbeige_charcoal)z#F5F0E8z#2D2A26z#A89F91z#8B4513Úcyan_ice)z#F0FDFFz#0891B2z#164E63z#22D3EEÚmagenta_void)z#0B0014z#FF00AAú#7C3AEDz#E0E7FFÚforest_mist)z#052E16z#4ADE80z#ECFDF5z#166534Úocean_depth)z#020617z#0EA5E9rL   z#F0F9FFÚ
lava_night)z#18080Aú#FB7185z#FBBF24z#451A1AÚ	mint_mono)rD   z#0F766Ez#99F6E4z#134E4AÚ	paper_ink)z#FFFEF7z#111111z#DC2626z#6B7280Ú	holo_mesh)z#111827z#EC4899z#8B5CF6z#06B6D4Ú
steel_blue)z#0F172Az#64748Bz#94A3B8z#E2E8F0Úsakura_night)z#1A0A14ra   z#FCE7F3z#9D174DÚmatrix_green)z#020202z#00FF41z#003B00z#39FF14Úcopper_dark)z#1C1410z#B87333z#E8D5C4z#3D2914Ú	ice_lilac)z#F8F7FFr]   z#C4B5FDz#1E1B4BÚsunset_deck)z#1A0F0Az#FF8A00z#FF3D00z#FFF3E0z
list[dict]ÚPALETTESé   é   é   é   é   é   )r   rl   rm   rn   ro   rp   rq   c                  ó^   — e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   y)ÚCreativeBriefÚstrÚlayoutÚ
typographyÚ
backgroundÚpalette_namez	list[str]ÚpaletteÚillustration_styleÚvideo_styleÚaspectN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    ú9/var/www/html/content_generation/src/services/creative.pyrs   rs   �   s.   … àƒKØƒOØƒOØÓØÓØÓØÓØ„Kr‚   rs   c                  ó\   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zddd„Z	e
dd„«       Zdd	„Zy
)ÚCreativeDirectorzIAssigns unique creative directions and persists history to avoid repeats.c                óŠ   — || _         | j                   j                  j                  dd¬«       | j                  «       | _        y )NT)ÚparentsÚexist_ok)Úhistory_pathÚparentÚmkdirÚ_loadÚhistory)Úselfr‰   s     rƒ   Ú__init__zCreativeDirector.__init__�   s6   € Ø(ˆÔØ×Ñ× Ñ ×&Ñ&¨t¸dÐ&ÔCØ—z‘z“|ˆ�r‚   c                óÂ   — | j                   j                  «       r0	 t        j                  | j                   j	                  d¬«      «      S g d d d dœS # t
        $ r Y Œw xY w)Núutf-8©Úencoding)ÚpostsÚlast_paletteÚlast_layoutÚlast_date_palette)r‰   ÚexistsÚjsonÚloadsÚ	read_textÚ	Exception©rŽ   s    rƒ   rŒ   zCreativeDirector._load•   sb   € Ø×Ñ×#Ñ#Ô%ðÜ—z‘z $×"3Ñ"3×"=Ñ"=ÀwÐ"=Ó"OÓPÐPð ¨TÀ$Ð]aÑbÐbøô ò Ùðús   œ.A Á	AÁAc                ó|   — | j                   j                  t        j                  | j                  d¬«      d¬«       y )Nrm   )Úindentr‘   r’   )r‰   Ú
write_textr™   Údumpsr�   r�   s    rƒ   ÚsavezCreativeDirector.save�   s+   € Ø×Ñ×$Ñ$¤T§Z¡Z°·±ÀQÔ%GÐRYÐ$ÕZr‚   c                ó4  — g }t        «       }t        «       }| j                  j                  d«      }| j                  j                  d«      }t        j                  «       }t
        t        |j                  «             }| j                  j                  d«      |j                  «       k(  rd }t        |«      D �]W  }	| j                  t        |r|h|£n|¬«      }
t        j                  t        «      }t        j                  t        «      }t        j                  t         «      }t        j                  t"        «      }t        j                  |	dz  rddgng d¢«      }|	d	k(  r|r|d
   |k7  r|}nAt
        D �cg c]  }|d
   |vsŒ|d
   |k7  sŒ|‘Œ }}|st
        }t        j                  |«      }t%        |
|||d
   t'        |d   «      |||¬«      }|j)                  |«       |j+                  |
«       |j+                  |d
   «       |
}|d
   }�ŒZ |S c c}w )Nr–   r•   r—   )Úexcluderm   ÚsquareÚportrait)r¥   r¥   r¦   r   rE   rF   )ru   rv   rw   rx   ry   rz   r{   r|   )Úsetr�   Úgetr   Útodayrk   ÚWEEKDAY_PALETTE_INDEXÚweekdayÚ	isoformatÚrangeÚ_pickÚLAYOUTSÚrandomÚchoiceÚ
TYPOGRAPHYÚBACKGROUNDSÚILLUSTRATION_STYLESÚVIDEO_STYLESrs   ÚlistÚappendÚadd)rŽ   Ú
batch_sizeÚbriefsÚused_layoutsÚused_palettesr–   r•   r©   Úday_paletteÚiru   ÚtypoÚbgÚillustÚvideor|   ÚpalÚpÚ
candidatesÚbriefs                       rƒ   Úassign_batchzCreativeDirector.assign_batch    sß  € Ø&(ˆÜ!$£ˆÜ"%£%ˆØ—l‘l×&Ñ& }Ó5ˆØ—|‘|×'Ñ'¨Ó7ˆô —
‘
“ˆÜÔ4°U·]±]³_ÑEÑFˆØ�<‰<×ÑÐ/Ó0°E·O±OÓ4EÒEàˆKä�z×"ˆAØ—Z‘Z¤ÑQ\°+Ð1MÀÑ1MÐbn�ZÓoˆFÜ—=‘=¤Ó,ˆDÜ—‘œ{Ó+ˆBÜ—]‘]Ô#6Ó7ˆFÜ—M‘M¤,Ó/ˆEÜ—]‘]¸QÀºU H¨jÑ#9ÒHhÓiˆFà�AŠv™+¨+°fÑ*=ÀÒ*MØ!‘å)1Ór© A°Q°v±YÀmÒ5SÐXYÐZ`ÑXaÐeqÓXqša¨�
ÐrÙ!Ü!)�JÜ—m‘m JÓ/�ä!ØØØØ  ™[Ü˜S ™]Ó+Ø#)Ø!Øô	ˆEð �M‰M˜%Ô Ø×Ñ˜VÔ$Ø×Ñ˜c &™kÔ*Ø ˆKØ˜v™;ŠLð= #ð@ ˆùò+ ss   Å8HÆHÆHc                óú  — |D ]^  }| j                   j                  dg «      j                  i t        |«      ¥dt	        j
                  «       j                  d¬«      i¥«       Œ` | j                   d   dd  | j                   d<   |rg|d   j                  | j                   d<   |d   j                  | j                   d<   t        j                  «       j                  «       | j                   d	<   | j                  «        y )
Nr”   ÚatÚseconds)Útimespeci°ÿÿÿéÿÿÿÿr–   r•   r—   )r�   Ú
setdefaultr·   r   r   Únowr¬   ru   rx   r   r©   r¢   )rŽ   rº   Úbs      rƒ   ÚrecordzCreativeDirector.recordÐ   sÌ   € ÛˆAØ�L‰L×#Ñ# G¨RÓ0×7Ñ7ØQ”6˜!“9ÐQ˜d¤H§L¡L£N×$<Ñ$<ÀiÐ$<Ó$PÑQõð ð !%§¡¨WÑ 5°c°dÐ ;ˆ�‰�WÑÙØ*0°©*×*;Ñ*;ˆD�L‰L˜Ñ'Ø+1°"©:×+BÑ+BˆD�L‰L˜Ñ(Ü04·
±
³×0FÑ0FÓ0HˆD�L‰LÐ,Ñ-Ø�	‰	�r‚   c                ó\  — | j                   j                  d«      xs g }|| d  }|syg }|D ]m  }|j                  d|j                  d«      › d|j                  d«      › d|j                  d«      › d	|j                  d
«      › d|j                  d«      › �
«       Œo dj                  |«      S )Nr”   u*   (no prior posts â€” full creative freedom)z	- layout=ru   z	 palette=rx   z type=rv   z bg=rw   z style=rz   Ú
)r�   r¨   r·   Újoin)rŽ   Únr”   ÚrecentÚlinesrÄ   s         rƒ   Úrecent_summaryzCreativeDirector.recent_summaryÜ   s¶   € Ø—‘× Ñ  Ó)Ò/¨RˆØ˜�r�s�ˆÙØ?ØˆÛˆAØ�L‰LØ˜AŸE™E (›OÐ,¨I°a·e±e¸NÓ6KÐ5Lð MØŸ™˜lÓ+Ð,¨D°·±°|Ó1DÐ0EÀWÈQÏUÉUÐSgÓMhÐLiðkõð ð
 �y‰y˜ÓÐr‚   c                óx   — | D �cg c]	  }||vsŒ|‘Œ }}t        j                  |xs t        | «      «      S c c}w )N)r°   r±   r¶   )Úoptionsr¤   ÚoÚpools       rƒ   r®   zCreativeDirector._pické   s:   € á"Ó7™7�a a¨wÒ&6’˜7ˆÐ7Ü�}‰}˜TÒ2¤T¨'£]Ó3Ð3ùò 8s   …	7�7c                óJ  — g }t        |d«      D ]‚  \  }}|j                  d|d›d|j                  › d|j                  › d|j                  › d|j
                  › d|j                  › d	|j                  › d
|j                  › d|j                  › �«       Œ„ dj                  |«      S )Nrl   zidea-Ú02dz MUST use:
  layout: z
  typography: z
  background: z
  palette_name: z
  palette: z
  illustration_style: z
  video_style: z
  aspect: z

)Ú	enumerater·   ru   rv   rw   rx   ry   rz   r{   r|   rÓ   )rŽ   rº   rÖ   r¾   rÏ   s        rƒ   Úas_prompt_blockz CreativeDirector.as_prompt_blockî   s»   € ØˆÜ˜f aÖ(‰DˆAˆqØ�L‰LØ˜˜#�wð ØŸX™X˜Jð '!Ø!"§¡ ð /!Ø!"§¡ ð /#Ø#$§>¡>Ð"2ð 3ØŸi™i˜[ð ))Ø)*×)=Ñ)=Ð(>ð ?"Ø"#§-¡- ð 1ØŸX™X˜Jð(õ
ð )ð �{‰{˜5Ó!Ð!r‚   N)r‰   r   )ÚreturnÚdict)rà   ÚNone)r¹   Úintrà   úlist[CreativeBrief])rº   rä   rà   râ   )é   )rÔ   rã   rà   rt   )rÙ   ztuple[str, ...]r¤   r§   rà   rt   )rº   rä   rà   rt   )r}   r~   r   Ú__doc__r�   rŒ   r¢   rÇ   rÐ   r×   Ústaticmethodr®   rß   r�   r‚   rƒ   r…   r…   �   s?   „ ÙSó$ó
có[ó.ó`
ô ð ò4ó ð4ô"r‚   r…   )Ú
__future__r   r™   r°   Údataclassesr   r   r   r   Úpathlibr   r¯   r²   r³   rµ   r´   rk   r€   rª   rs   r…   r�   r‚   rƒ   Ú<module>rë      sŒ  ðÞ "ã Û ß )ß #Ý ð€ð*	€
ð€ð"€ðÐ ð!ØÒ*VÑWð!àÒ'SÑTð!ð Ò*VÑWð!ð  Ò+WÑXð	!ð
 Ò)UÑVð!ð Ò*VÑWð!ð Ò)UÑVð!ð Ò(TÑUð!ð Ò(TÑUð!ð Ò'SÑTð!ð Ò'SÑTð!ð Ò'SÑTð!ð Ò&RÑSð!ð Ò$PÑQð!ð Ò&RÑSð!ð  Ò&RÑSð!!ð" Ò*VÑWð#!ð$ Ò)UÑVð%!ð& Ò#OÑPð'!ð( Ò'SÑTð)!ð* Ò&RÑSð+!ð, Ò&RÑSð-!ð. Ò%QÑRð/!ð0 Ò$PÑQð1!ð2 Ò$PÑQð3!ð4 Ò$PÑQð5!ð6 Ò%QÑRð7!ð8 Ò'SÑTð9!ð: Ò'SÑTð;!ð< Ò&RÑSð=!ð> Ò$PÑQð?!ð@ Ò&RÑSðA!€ˆ*ó !ðH 	ØØØØØØñÐ ð ÷ð ó ð÷o"ò o"r‚   