-
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