Commit Graph

258 Commits

Author SHA1 Message Date
schalli 9dd5038575 docs(state): record phase 14 planning session
Tessera CI/CD / Lint & Type Check (push) Successful in 45s
Tessera CI/CD / Tests (push) Successful in 45s
Tessera CI/CD / Build & Publish Images (push) Successful in 26s
2026-07-23 12:17:58 +02:00
schalli b2c52843aa docs(14): mark RESEARCH open questions resolved (plan-checker warning 2) 2026-07-23 12:17:57 +02:00
schalli cf105f0884 docs(14): create phase plan (5 plans, 4 waves) 2026-07-23 12:14:26 +02:00
schalli 9bd93ce8ff docs(14): add D-13..D-15 (per-tenant email visibility, RSS feed-list, poll granularity) 2026-07-23 11:58:10 +02:00
schalli 7f757772f1 docs(14): research RSS/email-alert ingestion and module rollout 2026-07-23 11:45:57 +02:00
schalli d71a781be0 docs(state): record phase 14 context session 2026-07-23 11:16:23 +02:00
schalli b655038835 docs(14): capture phase context 2026-07-23 11:16:13 +02:00
schalli 7de0714b30 docs(13): re-verify after normalizer fix — 3/4, Truth 3 deferred (option C)
Normalizer-Gap (quick 260723-e7i) closed criteria 1/2; re-verification
lifts Phase 13 from 1/4 to 3/4. Truth 3 (cross-source fingerprint dedup)
stays PARTIAL: newly-found cpvDivisions asymmetry (scrapers always [],
~79% of DÖE tenders populated) makes exact-match fingerprint miss most
real overlaps. User decision: accept as dormant deferral — dedup is inert
(both scrapers isActive=false), decide with live data once a 2nd source
is activated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 10:37:28 +02:00
schalli 7bd65e0077 docs(260723-e7i): pre-dispatch plan for normalizer-gap-phase-13-schliessen-tende
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 10:21:33 +02:00
schalli d5128d5759 docs(quick-260723-e7i): complete normalizer-gap-phase-13-schliessen-tende quick task 2026-07-23 10:21:18 +02:00
schalli 9d5aca0e1b docs(13): phase verification — gaps_found (normalizer stub blocks criteria 1/2/3)
Tessera CI/CD / Lint & Type Check (push) Successful in 48s
Tessera CI/CD / Tests (push) Successful in 47s
Tessera CI/CD / Build & Publish Images (push) Successful in 1m36s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 09:58:59 +02:00
schalli 7602795622 docs(13-05): complete cosinex/DTVP adapter plan 2026-07-23 09:51:43 +02:00
schalli 775ed153b7 docs(13-04): complete NetServer adapter plan
Tessera CI/CD / Lint & Type Check (push) Successful in 48s
Tessera CI/CD / Tests (push) Successful in 45s
Tessera CI/CD / Build & Publish Images (push) Successful in 3m43s
2026-07-23 09:16:04 +02:00
schalli 2c28605397 docs(13-06): complete multi-source read surface plan 2026-07-23 08:57:25 +02:00
schalli 1c523c039c docs(13-03): complete dedup-resolver-fan-out-wiring plan 2026-07-23 08:53:33 +02:00
schalli 83d8eff40d docs(13-02): complete source-registry-denylist plan 2026-07-23 08:44:53 +02:00
schalli a547a1d31d docs(13-01): complete fingerprint + TenderSource datenkern plan 2026-07-23 08:40:47 +02:00
schalli f3cd702197 docs(13): revise plans per checker FLAG — SCHEMA-02 preserve + task order
- 13-03: dedup resolve() created=false branch preserves Phase-10 SCHEMA-02
  change detection (mutable fields + contentHash on changed re-poll); spec
  covers it. Prevents silent regression of DÖE re-poll updates.
- 13-01: reorder so fingerprint fn (Task 1) precedes fingerprint backfill
  (Task 2) — removes forward reference.
- 13-VALIDATION: task-id + coverage rows updated to match.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 08:31:27 +02:00
schalli 74c00166e2 docs(13): create phase plan — scraping adapters + cross-source dedup
6 plans (INGEST-02/03/07, SCHEMA-03) + Nyquist validation.
Core (registry, fingerprint, dedup, TenderSource, backfill) lands
first and is green independent of live scraping (D-01).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 08:24:16 +02:00
schalli f2e0fc8cef docs(13): phase research — portals live-verified, SourceRegistry, fingerprint dedup
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 08:14:25 +02:00
schalli b98d2e5993 docs(13): phase context — scraping adapters, fuzzy cross-source dedup, denylist
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 08:06:41 +02:00
schalli 0dd104054b docs(12): phase verified — live email UAT passed (digest sent via tenant SMTP, no double-send)
Tessera CI/CD / Lint & Type Check (push) Successful in 45s
Tessera CI/CD / Tests (push) Successful in 45s
Tessera CI/CD / Build & Publish Images (push) Successful in 3m45s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 09:57:20 +02:00
schalli f0948bcab1 docs(12): phase verified — 4/4 criteria, 340 tests green, UAT pending rebuild
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 09:37:09 +02:00
schalli 314e83f5c1 docs(12-04): complete digest-interval + Sofort-Alert UI plan 2026-07-22 09:32:45 +02:00
schalli 1a0cd375c2 docs(12-03): complete instant-alert dispatch plan 2026-07-22 09:23:21 +02:00
schalli f509bf4948 docs(12-02): complete digest-mail plan 2026-07-22 09:16:22 +02:00
schalli 4823c245ee docs(12-01): complete schema + delta-only matching plan 2026-07-22 09:07:06 +02:00
schalli 37a4042e53 docs(12): add VALIDATION.md, resolve RESEARCH open questions 2026-07-22 08:58:35 +02:00
schalli 09993b001c docs(12): create phase plan (4 vertical slices, waves 1-3) 2026-07-22 08:52:05 +02:00
schalli 08b507ce8d docs(12): phase research — notifiedAt dedup, delta-only matching, global digest cron
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 08:42:21 +02:00
schalli 9ac1142fcd docs(12): phase context — digest/instant alerts, matched-vs-notified, tenant SMTP
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 08:33:10 +02:00
schalli d874d8a24f docs(11): phase verified — live browser UAT passed, status human_needed -> passed
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 08:02:48 +02:00
schalli ca712f65a7 docs(11): phase verification — 5/5 criteria verified, 293 tests green, UAT pending rebuild
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 16:59:15 +02:00
schalli f7a2bfd3d8 docs(11-06): complete Persönliche Suchprofile plan 2026-07-21 16:53:08 +02:00
schalli 421fe00ed9 docs(11-05): complete Persönliche Triage plan 2026-07-21 16:40:22 +02:00
schalli 4c22d7731a docs(11-04): complete Detailansicht plan 2026-07-21 16:23:38 +02:00
schalli acd7e55094 docs(11-03): complete CPV-Divisions-Katalog + Wert-Filter-UI plan 2026-07-21 16:16:59 +02:00
schalli a4c02116c1 docs(11-02): complete region/plz/bundesland filter plan 2026-07-21 16:05:25 +02:00
schalli 3e064e0124 docs(11-01): complete query-engine + results-ui + coverage-banner plan 2026-07-21 15:57:25 +02:00
schalli 34b8df28d5 docs(11): validation strategy + state update — plans PASS, ready to execute
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 15:28:02 +02:00
schalli d7b8e9bf5f docs(11): revise phase plan per checker BLOCK — VALIDATION.md, FILTER-04 date range, serialized deps
- Add 11-VALIDATION.md (Nyquist Dimension 8: per-task test map, sampling, Wave-0 gaps)
- Implement FILTER-04 deadlineFrom/deadlineTo (DTO + builder branch + FilterPanel) in 11-01
- Serialize depends_on into a linear chain (11-04<-03, 11-05<-04, 11-06<-05) to prevent parallel shared-file/migration corruption
- Mark 11-RESEARCH Open Questions RESOLVED
- Fix 11-05 Task 2 <files> dto/ path typo

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 15:26:18 +02:00
schalli 4036991acd docs(11): create phase plan — 6 vertical-slice plans (filter engine, results UI, saved searches)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 15:17:48 +02:00
schalli 930a8d8f79 docs(11): phase research — live-DB findings, query patterns, new models
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 15:07:41 +02:00
schalli a4a661f829 docs(11): phase context from user requirements — filters, triage, saved searches
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 14:57:09 +02:00
schalli 48d1246043 fix(10): resolve GET /source-config 404 shadowed by :id route
The admin source-config settings form failed to load with "Failed to
fetch tender-radar source config". Network trace showed
GET /modules/tender-radar/source-config returning 404.

Root cause: NestJS RouterExplorer maps routes in method-declaration
order. `@Get(':id')` was declared before `@Get('source-config')`, so
the param route captured "source-config" as an id and shadowed the
static handler (401 unauthenticated, 404 past the guard — no Tender
with id "source-config").

Fix: declare `@Get('source-config')` before `@Get(':id')`. Add a
declaration-order regression test — unit tests call controller methods
directly, bypass routing, and could never catch route shadowing.

Verified live: settings form now loads real config, interval save
persists and live-re-registers the scheduler (INGEST-06). Phase 10
verification raised human_needed -> passed after full browser UAT.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 14:52:17 +02:00
schalli eb10bd3116 wip: pause phase 10 (code complete, UAT+rebuild pending) 2026-07-21 11:36:31 +02:00
schalli a3cef389df docs(10): phase verification — 5/5 must-haves verified, UAT pending docker rebuild
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 11:34:07 +02:00
schalli 4f3c6cf5e9 docs(10-06): complete tender-radar admin settings UI plan 2026-07-21 11:27:31 +02:00
schalli 6d6302294e docs(10-05): complete tenders controller plan 2026-07-21 11:21:52 +02:00
schalli 9227cc9e78 docs(10-04): complete ingestion orchestration & multi-tenant-safe scheduler plan 2026-07-21 11:13:39 +02:00