rss-news/backend/app
OliverGiertz 8676ace102 feat(pipeline): article age filter, image URL validation, schedule UI, retry button
1. Article age filter (ingestion.py + config.py):
   - New setting pipeline_max_article_age_days=7 (0 = no limit)
   - Skip RSS entries older than N days before expensive extract_article()
   - Prevents old articles from Google Alerts re-entering pipeline

2. Image URL pre-validation (ingestion.py):
   - HEAD request probe for each primary image candidate during ingestion
   - Falls back to next-best candidate if primary returns 4xx
   - Network errors treated as OK to avoid false negatives on flaky servers

3. Stale WP draft cleanup (pipeline.py):
   - Quality gate rejections now delete any pre-existing WP draft (wp_post_id)
   - Prevents orphaned drafts when re-running articles that previously had drafts

4. Schedule overview UI (scheduler.py + admin_ui.py + admin_schedule.html):
   - New /admin/schedule page showing calendar grid of all booked slots
   - Distinguishes Pipeline-DB slots from WordPress-only slots
   - Link added to dashboard navigation

5. Retry for failed articles (admin_ui.py + admin_dashboard.html):
   - New POST /admin/articles/{id}/retry endpoint: resets to 'new', releases slot
   - '🔄 Wiederholen' button shown in dashboard for all 'close' (error) articles

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 08:44:28 +00:00
..
__init__.py feat: rebuild rss-news backend, admin ui, and legal extraction pipeline 2026-02-18 09:52:36 +01:00
admin_ui.py feat(pipeline): article age filter, image URL validation, schedule UI, retry button 2026-04-10 08:44:28 +00:00
auth.py feat: rebuild rss-news backend, admin ui, and legal extraction pipeline 2026-02-18 09:52:36 +01:00
config.py feat(pipeline): article age filter, image URL validation, schedule UI, retry button 2026-04-10 08:44:28 +00:00
db.py feat(pipeline): image caption/credit extraction, no-image exclusion, WP attribution 2026-03-27 07:08:48 +00:00
ingestion.py feat(pipeline): article age filter, image URL validation, schedule UI, retry button 2026-04-10 08:44:28 +00:00
main.py feat(pipeline): image caption/credit extraction, no-image exclusion, WP attribution 2026-03-27 07:08:48 +00:00
pipeline.py feat(pipeline): article age filter, image URL validation, schedule UI, retry button 2026-04-10 08:44:28 +00:00
policy.py feat: rebuild rss-news backend, admin ui, and legal extraction pipeline 2026-02-18 09:52:36 +01:00
publisher.py feat(workflow): simplify article flow and add automated rewrite step 2026-02-21 13:43:22 +01:00
relevance.py feat(export): add csv/json article export with date relevance scoring 2026-02-18 10:04:38 +01:00
repositories.py fix(rewrite): make image upload non-fatal and add rewrite tracing logs 2026-03-26 07:45:55 +00:00
rewrite.py fix(rewrite): attribute claims to source instead of using first-person 'wir' 2026-03-26 07:36:09 +00:00
scheduler.py feat(pipeline): article age filter, image URL validation, schedule UI, retry button 2026-04-10 08:44:28 +00:00
source_extraction.py feat(pipeline): image caption/credit extraction, no-image exclusion, WP attribution 2026-03-27 07:08:48 +00:00
telegram_bot.py fix(pipeline): send individual Telegram notifications for quality gate rejections 2026-04-09 07:02:03 +00:00
wordpress.py fix(ingestion): skip data: URIs and known placeholder images 2026-04-07 09:09:44 +00:00
workflow.py feat(pipeline): image caption/credit extraction, no-image exclusion, WP attribution 2026-03-27 07:08:48 +00:00