vikingowl cd836564f1 feat(discovery): Pass 0 halbmonat buckets + konfidenz/status + link verification
Pass 0 splits every month into two halves (H1 = days 1-15, H2 = 16-EOM)
so each agent call fits within Mistral's 4096 max_tokens budget. The
response schema picks up richer per-market signals and dead agent URLs
get filtered before they land in the admin queue.

DB:
- 000015: add halbmonat char(2) to discovery_buckets, widen unique key,
  backfill existing rows as H1 + insert H2 siblings (624 → 1248 rows).
- 000016: rename discovered_markets.extraktion → konfidenz with
  best-effort value mapping (verbatim→hoch, abgeleitet→mittel); add
  agent_status column.

Backend:
- model: Bucket gains Halbmonat; Pass0Bucket same. Pass0Market renames
  Extraktion → Konfidenz and adds AgentStatus (JSON tag "status").
  DiscoveredMarket mirrors both fields; queue-lifecycle Status column
  stays distinct from agent-reported AgentStatus.
- repository: all SELECT/INSERT touched to use the new columns; picker
  orders by year_month, halbmonat so H1 runs before H2 in the same
  month.
- agent client: prompt now injects halbmonat and recherche_datum (today)
  so the agent has explicit date context.
- link verification: new LinkChecker does concurrent HEAD (GET fallback
  on 405) with a 5s timeout. FilterURLs runs before InsertDiscovered —
  markets whose quellen all fail are dropped and counted as
  link_check_failed in TickSummary. Failing website URLs are cleared
  but don't block insert.
- Service.linkChecker is a narrow interface so tests inject a noop
  stub instead of hitting the network.

Web:
- DiscoveredMarket type gains konfidenz + agent_status, drops extraktion.
- Queue column renames "Extraktion" → "Konfidenz" with three-level
  coloring (hoch=emerald, mittel=amber, niedrig=red, else neutral).
- A small pill next to markt_name surfaces agent_status when it's not
  "bestaetigt" — red for "abgesagt", amber for "unklar" and
  "vorjahr_unbestaetigt" — so risky entries are obvious before accept.
2026-04-18 09:51:57 +02:00
2026-02-21 07:10:30 +01:00
2026-04-07 02:53:03 +02:00
Description
No description provided
1.7 MiB
Languages
Go 60.3%
Svelte 20.3%
Dart 11.1%
TypeScript 5%
PLpgSQL 1.1%
Other 2.1%