lazyflat/web
EiSiMo fe43a402d8 feat(wohnungen): "Rausgefilterte Wohnungen" section with reason chips
Below "Abgelehnte Wohnungen", surface flats that survived the time
filter and aren't rejected but failed at least one of the user's
filters. Same collapsed-card style. Action buttons are replaced by
chips naming each failed dimension — "Zimmer", "Preis", "Größe",
"WBS", "Bezirk" — so it's obvious which constraint to relax.

Refactored matching: flat_matches_filter now delegates to a new
flat_filter_failures(flat, f) that returns the failed-dimension
labels (empty list = full match). rooms_min and rooms_max collapse
to a single "Zimmer" chip; reasons emit in stable _REASON_ORDER for
consistent rendering. The section is suppressed entirely when the
user has no filters set, since "everything matches" makes the chips
meaningless.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 11:27:49 +02:00
..
routes feat(wohnungen): "Rausgefilterte Wohnungen" section with reason chips 2026-04-23 11:27:49 +02:00
static feat(notifications): new match format with Gmaps + lazyflat deep-link 2026-04-23 10:28:04 +02:00
templates feat(wohnungen): "Rausgefilterte Wohnungen" section with reason chips 2026-04-23 11:27:49 +02:00
app.py refactor: rename wohnungsdidi → lazyflat 2026-04-23 09:26:12 +02:00
apply_client.py perf + simpler: composite index, range-filtered protokoll, simpler profile 2026-04-21 19:16:45 +02:00
auth.py multi-user: users, per-user profiles/filters/notifications, tab UI, apply forensics 2026-04-21 10:52:41 +02:00
berlin_districts.py feat(filter): Berlin-Bezirk filter in Einstellungen 2026-04-23 10:05:55 +02:00
common.py feat(web): footer build SHA shows "(latest)" or "(N behind)" 2026-04-23 11:21:24 +02:00
db.py feat(filter): Berlin-Bezirk filter in Einstellungen 2026-04-23 10:05:55 +02:00
Dockerfile fix(web): take git SHA from Coolify's runtime SOURCE_COMMIT 2026-04-23 11:04:24 +02:00
enrichment.py refactor: rename wohnungsdidi → lazyflat 2026-04-23 09:26:12 +02:00
llm.py secrets tab, drop commute filter, favicon, robust error reports 2026-04-21 17:56:57 +02:00
matching.py feat(wohnungen): "Rausgefilterte Wohnungen" section with reason chips 2026-04-23 11:27:49 +02:00
notifications.py feat(notifications): new match format with Gmaps + lazyflat deep-link 2026-04-23 10:28:04 +02:00
requirements.txt enrichment: drop LLM for structured info, dedup images by sha + phash 2026-04-21 15:29:55 +02:00
retention.py multi-user: users, per-user profiles/filters/notifications, tab UI, apply forensics 2026-04-21 10:52:41 +02:00
settings.py fix(web): read SOURCE_COMMIT directly, don't reference it in compose 2026-04-23 11:16:19 +02:00
version.py feat(web): footer build SHA shows "(latest)" or "(N behind)" 2026-04-23 11:21:24 +02:00