Ë
    ßEj  ã                   ó†   — d Z ddlZddlZddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ  ej                  e«      Z	 	 d
ddœd	„Zy)zLTrack C: plan weekly blog articles from trending topics + existing coverage.é    N)Údate)ÚBlogArticleÚBlogGenerationLogÚBlogSettings)Úclaude_json)Úgather_existing_coverageF)Údry_runc                óÀ  — t        j                  «       }|j                  xs g }|st        d«      ‚t	        |«      }|xs% t        j                  «       j                  «       d   }t        j                  «       j                  }|j                  «       }	|j                  xs g }
t        j                  |
d d d¬«      }t        j                  |d | dz    d¬«      }d|	j                  dd	«      › d
|	j                  dd«      › d�}d| › d|› d|› d|› d|› d|j                  dd«      › d�}t        ||d¬«      }|r|d |  S |€ddlm}  || «      }g }t#        |d |  «      D ]ý  \  }}|t%        |«      k  r||   n)t        j&                  |t)        t+        |«      d«      d«      }t,        j.                  j1                  |j                  dd«      |j                  dd«      |j                  d«      xs g ||t,        j2                  ¬ «      }t4        j.                  j1                  |d!d"|j                  d#«      |j                  d$«      d%œ¬&«       |j7                  |«       Œÿ |S )'NzEtrending_topics is empty; weekly planning should refresh trends firsté   é   F)Úensure_asciié   zYou are an SEO strategist for Únamez	the storez. Language: ÚlanguageÚdez�. Return ONLY a JSON array of objects with: title, target_keyword, secondary_keywords (array), description, source_trend_keyword, gap_reason.zCreate z- unique blog article plans for calendar week Ú/z'.

## Trending topics (what to pursue)
z\

## Existing coverage (what to avoid duplicating)
### Live blog (from store blog list URL)
z

### Summary
Úsummary_for_promptÚ a  

## Task
1. Each plan must map to one trending topic (highest relevance first).
2. Do NOT duplicate live blog titles, angles, or main_topics.
3. Do NOT duplicate in-app articles listed above.
4. Include gap_reason explaining why this trend fills a gap.
SEO titles with keyword first.gffffffæ?)Útemperaturer   )Úrandom_publish_datesé4   ÚtitleÚUntitledÚtarget_keywordÚsecondary_keywords)r   r   r   Úscheduled_dateÚcalendar_weekÚstatusÚtopic_planningÚ	completedÚsource_trend_keywordÚ
gap_reason)r!   r"   )ÚarticleÚstepr   Údetails)r   ÚloadÚtrending_topicsÚ
ValueErrorr   r   ÚtodayÚisocalendarÚyearÚas_prompt_configÚexternal_blog_inventoryÚjsonÚdumpsÚgetr   Ú!blogs.services.scheduling_servicer   Ú	enumerateÚlenÚfromisocalendarÚminÚintr   ÚobjectsÚcreateÚSTATUS_PLANNEDr   Úappend)Úcountr   Úscheduled_datesr	   Úsettings_objÚtrendingÚcoverageÚcwr+   ÚconfigÚexternalÚexternal_jsonÚtrending_jsonÚsystemÚuserÚtopicsr   ÚarticlesÚiÚtopicÚ	scheduledÚarts                         úF/var/www/html/shopify_to_digistore/blogs/services/editorial_service.pyÚgenerate_weekly_topicsrN      sŒ  € ô  ×$Ñ$Ó&€LØ×+Ñ+Ò1¨r€HÙÜØSó
ð 	
ô (¨Ó5€HØ	Ò	7œ$Ÿ*™*›,×2Ñ2Ó4°QÑ7€BÜ�:‰:‹<×Ñ€DØ×*Ñ*Ó,€Fà×3Ñ3Ò9°r€HÜ—J‘J˜x¨¨˜}¸5ÔA€MÜ—J‘J˜x¨
¨°©Ð3À%ÔH€Mð )¨¯©°F¸KÓ)HÐ(Ið JØ—Z‘Z 
¨DÓ1Ð2ð 3Uð	Uð ð �%�ÐEÀbÀTÈÈ4È&ð Q0Ø0=¨ð ?5à5B°Oð DØ Ÿ™Ð%9¸2Ó>Ð?ð @)ð	
	)ð 	ô ˜ °3Ô7€FáØ�f�uˆ~ÐàÐÝJá.¨uÓ5ˆà€HÜ˜f V e˜nÖ-‰ˆˆ5ð ”3�Ó'Ò'ð ˜AÒä×%Ñ% d¬C´°B³¸Ó,<¸aÓ@ð 	ô
 ×!Ñ!×(Ñ(Ø—)‘)˜G ZÓ0Ø Ÿ9™9Ð%5°rÓ:Ø$Ÿy™yÐ)=Ó>ÒDÀ"Ø$ØÜ×-Ñ-ð )ó 
ˆô 	×!Ñ!×(Ñ(ØØ!Øà(-¯	©	Ð2HÓ(IØ#Ÿi™i¨Ó5ñð	 	)ô 	
ð 	�‰˜Õð/ .ð0 €Oó    )NN)Ú__doc__r.   ÚloggingÚdatetimer   Úblogs.modelsr   r   r   Úblogs.services.anthropic_utilsr   Ú blogs.services.inventory_servicer   Ú	getLoggerÚ__name__ÚloggerrN   © rO   rM   Ú<module>rZ      sH   ðÙ Rã Û Ý ç EÑ EÝ 6Ý Eà	ˆ×	Ñ	˜8Ó	$€ð
 ØðNð
 õNrO   