Commit Graph

  • a1cf05404c feat(auth): LDAP login — authenticate imported users against the directory schalli 2026-07-22 14:51:23 +02:00
  • af9e968c6f feat(ldap): opt-in skip TLS verification for ldaps (internal CA) schalli 2026-07-22 14:18:55 +02:00
  • 38face43b4 feat(ldap): individual user search + selective import with dedup schalli 2026-07-22 13:52:50 +02:00
  • 0dd104054b docs(12): phase verified — live email UAT passed (digest sent via tenant SMTP, no double-send) schalli 2026-07-22 09:57:20 +02:00
  • f0948bcab1 docs(12): phase verified — 4/4 criteria, 340 tests green, UAT pending rebuild schalli 2026-07-22 09:37:09 +02:00
  • 314e83f5c1 docs(12-04): complete digest-interval + Sofort-Alert UI plan schalli 2026-07-22 09:32:45 +02:00
  • d60080ef20 feat(12-04): tender-radar digest-interval selector + Sofort-Alert toggle UI schalli 2026-07-22 09:30:54 +02:00
  • 73a7e49f85 feat(12-04): tender-radar-api client — notification-pref + instantAlert schalli 2026-07-22 09:28:53 +02:00
  • 9e7ba5353d feat(12-04): tender-radar notification-pref service + routes, instantAlert passthrough schalli 2026-07-22 09:28:02 +02:00
  • 1a0cd375c2 docs(12-03): complete instant-alert dispatch plan schalli 2026-07-22 09:23:21 +02:00
  • 5395ce6b6d test(12-03): prove instant+digest single-mail guarantee across both channels schalli 2026-07-22 09:22:04 +02:00
  • ec032ad89d feat(12-03): instant-alert dispatch at end of matchDelta schalli 2026-07-22 09:20:49 +02:00
  • 86c184f8d5 test(12-03): add failing tests for instant-alert dispatch in matchDelta schalli 2026-07-22 09:20:43 +02:00
  • f509bf4948 docs(12-02): complete digest-mail plan schalli 2026-07-22 09:16:22 +02:00
  • 32441678c1 feat(12-02): register TenderMailService/TenderDigestScheduler, import SettingsModule schalli 2026-07-22 09:14:40 +02:00
  • c0a8906d6a feat(12-02): TenderDigestScheduler — ein globaler Cron, findMany über fällige Nutzer schalli 2026-07-22 09:13:56 +02:00
  • 2f305840a2 test(12-02): add failing TenderDigestScheduler spec (RED) schalli 2026-07-22 09:12:54 +02:00
  • 53e72dfa05 feat(12-02): TenderMailService — mandanten-SMTP-Versand (DkvMailService-Klon) schalli 2026-07-22 09:11:57 +02:00
  • fbcc108341 test(12-02): add failing TenderMailService spec (RED) schalli 2026-07-22 09:11:50 +02:00
  • 4823c245ee docs(12-01): complete schema + delta-only matching plan schalli 2026-07-22 09:07:06 +02:00
  • b45047f0b3 feat(12-01): wire matchDelta into pollDueSources; register TenderMatchingService schalli 2026-07-22 09:05:41 +02:00
  • 92d4c969de feat(12-01): implement TenderMatchingService.matchDelta (GREEN) schalli 2026-07-22 09:03:36 +02:00
  • 57d22a034f test(12-01): add failing test for TenderMatchingService.matchDelta schalli 2026-07-22 09:02:59 +02:00
  • 6c3e110949 feat(12-01): add TenderMatch/TenderNotificationPref schema + apply migration schalli 2026-07-22 09:02:18 +02:00
  • 37a4042e53 docs(12): add VALIDATION.md, resolve RESEARCH open questions schalli 2026-07-22 08:58:35 +02:00
  • 09993b001c docs(12): create phase plan (4 vertical slices, waves 1-3) schalli 2026-07-22 08:52:05 +02:00
  • 08b507ce8d docs(12): phase research — notifiedAt dedup, delta-only matching, global digest cron schalli 2026-07-22 08:42:21 +02:00
  • 9ac1142fcd docs(12): phase context — digest/instant alerts, matched-vs-notified, tenant SMTP schalli 2026-07-22 08:33:10 +02:00
  • d874d8a24f docs(11): phase verified — live browser UAT passed, status human_needed -> passed schalli 2026-07-22 08:02:48 +02:00
  • ca712f65a7 docs(11): phase verification — 5/5 criteria verified, 293 tests green, UAT pending rebuild schalli 2026-07-21 16:59:15 +02:00
  • f7a2bfd3d8 docs(11-06): complete Persönliche Suchprofile plan schalli 2026-07-21 16:53:08 +02:00
  • dd3ff9ea30 feat(11-06): SavedSearchBar UI — save/load/rename/delete profiles (FILTER-06) schalli 2026-07-21 16:50:55 +02:00
  • ca843ab134 test(11-06): add failing spec for SavedSearchBar (FILTER-06) schalli 2026-07-21 16:50:48 +02:00
  • 38fbf35c75 feat(11-06): saved-searches CRUD routes on TendersController (FILTER-06) schalli 2026-07-21 16:48:00 +02:00
  • df94d921ef feat(11-06): TenderSavedSearch model + CRUD service (FILTER-06) schalli 2026-07-21 16:45:04 +02:00
  • 2b0b4f897b test(11-06): add failing spec for TenderSavedSearchService (FILTER-06) schalli 2026-07-21 16:44:59 +02:00
  • 421fe00ed9 docs(11-05): complete Persönliche Triage plan schalli 2026-07-21 16:40:22 +02:00
  • 1eb9e4f567 feat(11-05): read/favorite triage toggles + Merklisten-Filter in the UI schalli 2026-07-21 16:37:30 +02:00
  • 5f97eca804 feat(11-05): GET/PUT /modules/tender-radar/triage routes + favOnly filter schalli 2026-07-21 16:33:40 +02:00
  • 58b0f3da50 feat(11-05): implement TenderTriageService (GREEN) + apply migration schalli 2026-07-21 16:30:09 +02:00
  • 7bb695d37a test(11-05): add failing TenderTriageService spec + TenderTriage schema/migration schalli 2026-07-21 16:28:38 +02:00
  • 4c22d7731a docs(11-04): complete Detailansicht plan schalli 2026-07-21 16:23:38 +02:00
  • 653c63b072 feat(11-04): TenderDetail component with ?tender=<id> wiring schalli 2026-07-21 16:21:54 +02:00
  • 3cc7194d9e test(11-04): add failing test for TenderDetail component schalli 2026-07-21 16:20:28 +02:00
  • acd7e55094 docs(11-03): complete CPV-Divisions-Katalog + Wert-Filter-UI plan schalli 2026-07-21 16:16:59 +02:00
  • d60bfd1966 feat(11-03): CPV-Filter + Wert-min/max-UI in Builder, DTO, FilterPanel schalli 2026-07-21 16:14:51 +02:00
  • f9591dc491 feat(11-03): cpvDivisions column — normalizer + backfill migration schalli 2026-07-21 16:11:40 +02:00
  • 7651ab6813 feat(11-03): implement CPV-Divisions-Katalog + normalizeCpv (GREEN) schalli 2026-07-21 16:08:47 +02:00
  • a64f98463c test(11-03): add failing spec for CPV-Divisions-Katalog + normalizeCpv schalli 2026-07-21 16:08:07 +02:00
  • a4c02116c1 docs(11-02): complete region/plz/bundesland filter plan schalli 2026-07-21 16:05:25 +02:00
  • 69e25298c9 feat(11-02): wire Region/PLZ/Bundesland filter into query builder + FilterPanel schalli 2026-07-21 16:03:21 +02:00
  • e4db602597 feat(11-02): normalizer derives bundesland + backfill migration for existing rows schalli 2026-07-21 16:01:32 +02:00
  • d12e1c9aa9 feat(11-02): implement NUTS-1 to Bundesland derivation schalli 2026-07-21 15:59:35 +02:00
  • 3dec35f498 test(11-02): add failing spec for NUTS-1 to Bundesland derivation schalli 2026-07-21 15:59:14 +02:00
  • 3e064e0124 docs(11-01): complete query-engine + results-ui + coverage-banner plan schalli 2026-07-21 15:57:25 +02:00
  • ee2c40863e feat(11-01): replace tender-radar placeholder with real results UI (GREEN) schalli 2026-07-21 15:54:51 +02:00
  • b55bb55c0e test(11-01): add failing ResultsList spec + extend tender-radar-api client (RED) schalli 2026-07-21 15:53:04 +02:00
  • 49622ba022 feat(11-01): wire listTenders through the query builder + add GET /coverage schalli 2026-07-21 15:50:23 +02:00
  • fed5ecbc43 feat(11-01): implement tender-query.builder (GREEN) schalli 2026-07-21 15:48:56 +02:00
  • 426a1ea3b8 test(11-01): add failing tender-query.builder spec (RED) schalli 2026-07-21 15:47:40 +02:00
  • 34b8df28d5 docs(11): validation strategy + state update — plans PASS, ready to execute schalli 2026-07-21 15:28:02 +02:00
  • d7b8e9bf5f docs(11): revise phase plan per checker BLOCK — VALIDATION.md, FILTER-04 date range, serialized deps schalli 2026-07-21 15:26:18 +02:00
  • 4036991acd docs(11): create phase plan — 6 vertical-slice plans (filter engine, results UI, saved searches) schalli 2026-07-21 15:17:48 +02:00
  • 930a8d8f79 docs(11): phase research — live-DB findings, query patterns, new models schalli 2026-07-21 15:07:41 +02:00
  • a4a661f829 docs(11): phase context from user requirements — filters, triage, saved searches schalli 2026-07-21 14:57:09 +02:00
  • 48d1246043 fix(10): resolve GET /source-config 404 shadowed by :id route schalli 2026-07-21 14:52:17 +02:00
  • eb10bd3116 wip: pause phase 10 (code complete, UAT+rebuild pending) schalli 2026-07-21 11:36:31 +02:00
  • a3cef389df docs(10): phase verification — 5/5 must-haves verified, UAT pending docker rebuild schalli 2026-07-21 11:34:07 +02:00
  • 4f3c6cf5e9 docs(10-06): complete tender-radar admin settings UI plan schalli 2026-07-21 11:27:31 +02:00
  • 8e3dfda64d test(10-06): SourceConfigForm component test — fetch, save, bounds schalli 2026-07-21 11:25:43 +02:00
  • 4360bc0c6b feat(10-06): tender-radar-api client + admin source-config settings form schalli 2026-07-21 11:24:32 +02:00
  • 6d6302294e docs(10-05): complete tenders controller plan schalli 2026-07-21 11:21:52 +02:00
  • eaff1d86bb test(10-05): controller spec — global read not tenant-scoped, admin config applies to scheduler schalli 2026-07-21 11:18:35 +02:00
  • 7b9b6b8c1c feat(10-05): wire TendersController — global read + admin source-config schalli 2026-07-21 11:17:13 +02:00
  • f6e636c37d feat(10-05): add SourceConfigDto and TenderQueryDto schalli 2026-07-21 11:15:36 +02:00
  • 9227cc9e78 docs(10-04): complete ingestion orchestration & multi-tenant-safe scheduler plan schalli 2026-07-21 11:13:39 +02:00
  • 444c68b8ec test(10-04): add two-tenant safety integration test (Success Criteria 4 & 5) schalli 2026-07-21 11:11:09 +02:00
  • 0ba74108db feat(10-04): implement TenderSchedulerService — single global cron (poll-once-fan-out-many) schalli 2026-07-21 11:10:21 +02:00
  • 6fb734bf3c feat(10-04): implement TenderIngestionService — day-cursor gate, upsert change-detect, D-05 retention schalli 2026-07-21 11:08:59 +02:00
  • f9e52ab95f test(10-04): add failing spec for TenderIngestionService (day-cursor gate, SCHEMA-02, D-05) schalli 2026-07-21 11:07:49 +02:00
  • 761077814f docs(10-03): complete DÖE source adapter & normalizer plan schalli 2026-07-21 11:01:50 +02:00
  • 31607df48c feat(10-03): implement TenderNormalizerService — fields, dedupKey, hash schalli 2026-07-21 10:58:33 +02:00
  • 3764feb50b feat(10-03): implement DoeOpenDataAdapter — fetch, extract, D-02 filter schalli 2026-07-21 10:57:29 +02:00
  • f88e2a8141 test(10-03): add failing specs + real DÖE fixtures for adapter/normalizer schalli 2026-07-21 10:56:13 +02:00
  • f80d491adc docs(10-02): complete Ausschreibungs-Radar marketplace registration plan schalli 2026-07-21 10:46:30 +02:00
  • 9a7ed71d7a test(10-02): add seed registration coverage for tender-radar (CONFIG-01) schalli 2026-07-21 10:43:43 +02:00
  • 3292afb913 feat(10-02): add tender-radar module-loader whitelist entry + placeholder page schalli 2026-07-21 10:43:28 +02:00
  • e7b40946c8 feat(10-02): register TendersModule with marketplace self-seed + singleton poll config schalli 2026-07-21 10:42:44 +02:00
  • 6cfda90960 docs(10-01): complete tender-radar foundation plan schalli 2026-07-21 10:40:15 +02:00
  • 713b1eb748 feat(10-01): add Tender/TenderSourcePollConfig models + ingestion packages schalli 2026-07-21 10:33:24 +02:00
  • b33213b04b docs(10): begin phase execution schalli 2026-07-21 10:24:28 +02:00
  • 66efd08dc0 docs(10): mark phase planned (6 plans) + add pattern map schalli 2026-07-21 10:10:41 +02:00
  • b52a0a796b docs(10): add admin config UI plan (INGEST-06 gap), resolve research open questions schalli 2026-07-21 10:08:40 +02:00
  • e7b59d16af docs(10): create phase plan (5 plans, DÖE ingestion foundation) schalli 2026-07-21 10:03:19 +02:00
  • 1a6061bc0e docs(phase-10): add validation strategy schalli 2026-07-21 09:47:16 +02:00
  • 3a51d9bfed docs(10): research DÖE OpenData API live verification and phase domain schalli 2026-07-21 09:46:20 +02:00
  • fe55e7c054 docs(state): record phase 10 context session schalli 2026-07-17 13:49:36 +02:00
  • b482c4aaa7 docs(10): capture phase context schalli 2026-07-17 13:49:35 +02:00
  • eb3ed949a9 docs: create milestone v1.1 roadmap (5 phases) schalli 2026-07-17 12:54:48 +02:00
  • 21cae97ca0 docs: define milestone v1.1 requirements schalli 2026-07-17 10:44:58 +02:00