rss-news/backend/app
Oliver Giertz 4282759b2c
feat(categorize): close rule gaps found on scheduled posts
The first pass only covered published posts, so 137 scheduled ones were
still uncategorised. Seven of them matched no rule at all and exposed
real gaps: the regions Pfalz and Erzgebirge, and the gear nouns in
"Duschzelte", "Outdoor-Messer" and "Outdoor-Stuhl", which the existing
compound keywords could not reach because the noun sits at the end.

Adding those flipped two discount posts ("Lidl Zelt im Angebot", "Aldi
Relax-Stuhl") into the gear category, because the new product keywords
outweighed the weaker "lidl"/"aldi" signals. Both retailers only ever
appear in discount posts here, so they now carry enough weight to
trigger the offer override themselves.

Region keywords are weight 2, not 3: at 3 they outranked an explicit
"Campingplatz" in the title and pulled campsite articles into
"Reiseziele". Bare "pfalz" is weight 1 because it double-counts inside
"rheinland-pfalz".

Scheduled posts now match a rule 136 of 137 times. Ten published posts
change category as a result and were updated in WordPress to keep the
archive and the rules in sync.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 08:21:46 +02: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(admin): bulk-editable article list with WP ID inline editing 2026-04-10 09:00:25 +00:00
auth.py feat: rebuild rss-news backend, admin ui, and legal extraction pipeline 2026-02-18 09:52:36 +01:00
categorize.py feat(categorize): close rule gaps found on scheduled posts 2026-07-31 08:21:46 +02:00
config.py Use four fixed daily publish slots 2026-07-24 10:38:04 +02: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 fix(scheduler): prevent duplicate slot assignment from concurrent pipeline runs 2026-05-08 05:03:13 +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 feat(admin): bulk-editable article list with WP ID inline editing 2026-04-10 09:00:25 +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 Use four fixed daily publish slots 2026-07-24 10:38:04 +02: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 feat(wordpress): set post category from title and tag rules 2026-07-31 08:00:32 +02:00
workflow.py feat(pipeline): image caption/credit extraction, no-image exclusion, WP attribution 2026-03-27 07:08:48 +00:00