Commit graph

7 commits

Author SHA1 Message Date
18f1c6cbac Opdatér CLAUDE.md: 8c er nu browser-testet og justeret
Dokumenterer bekræftelsessiden (/bestilling-modtaget) og de to fund
fra brugerens browser-gennemgang, samt fjerner den nu forældede note
om at JS-laget ikke var browser-verificeret.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 23:52:20 +02:00
609c3efb05 Opgave 8c: ny offentlig bestillings-/tilmeldingsside
Server-renderet af FastAPI selv (Jinja2 + vanilla JS/CSS, intet
build-step) mod det eksisterende domæneopløste JSON-API fra 8b.
GET / viser bestillingssiden når en runde er åben (rundeoverskrift,
intro_text, kategori-grupperet vinkatalog med live-beregnet
EUR/DKK-total, bestillingsformular), ellers en tilmeldingsside.
GET /tilmelding er altid tilgængelig uafhængigt af rundestatus, og
GET /afhentning viser rutens meeting_info. Layoutet er modelleret
efter den gamle sides bestillingsside. get_current_round's
serialiseringslogik er udtrukket til en delt _build_page_info-helper,
så JSON-API'et og de nye HTML-sider genbruger nøjagtig samme
domæne-/rundeopslag.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 22:55:55 +02:00
0653227345 Tilføj stående ordre om plan mode til proces-noten i CLAUDE.md
Efter en afsluttet opgave skal der fremover gås tilbage i plan mode
automatisk, i stedet for at fortsætte til næste opgave uden at spørge.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 22:37:22 +02:00
7d767ec7c3 Opgave 8b: domænebaseret rute-opløsning + tilmeldings-endpoint
Offentlige endpoints afgør nu ruten via Host-headeren
(Route.public_domain) i stedet for route_id i URL'en, så én
frontend kan betjene flere organisationers domæner via reverse
proxy. GET /public/current-round returnerer altid 200 med
current_round: null når ingen runde er åben (i stedet for 404),
og nyt POST /public/signup lader deltagere tilmelde sig med kun
navn+email uden at røre et eksisterende telefonnummer.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 22:34:27 +02:00
5db65fb268 Update CLAUDE.md for task 8a, add standing update-after-each-task note
Order/OrderLine now have a real write path (the public order API), so
their "model exists, no API yet" notes are replaced with what's
actually there. Participant's entry documents the ad-hoc-create/
always-update-on-order behavior. Mail-events #2 marked implemented
with the same detail level as #1. Fase 1 task 8 split into 8a (done)/
8b (pending, own stack decision) matching the 7a/7b/7c precedent.

Added a short process note at the top, per explicit user request:
this file should be updated after each (sub)task, not just on request.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 22:11:55 +02:00
53a5138d45 Update CLAUDE.md to match actual implementation (opgave 1-7)
Datamodel section now reflects reality: PurchaseRound's season/year
was replaced with opens_at/order_deadline_at/pickup_at + a free-text
name (per user feedback during task 2); WineOffering's vintage was
dropped (folded into name); added the MailTemplate/MailLog models and
Route's sender_name/sender_email that opgave 7 introduced; noted
Order/OrderLine exist as models but have no API yet.

Fase 1 task list marks 1-7 done and expands 7 into its actual 7a/7b/7c
shape. Added a short auth line (JWT + sudo-style elevation) and
resolved the "Mail: SMTP-udbyder — afklares" placeholder now that
Postal is wired up.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 20:54:31 +02:00
589dcbcdf5 Scaffold FastAPI + SQLModel + Alembic project, Postgres-backed
Config-driven DATABASE_URL shared by the app and Alembic's env.py
(fixes v1's config drift), psycopg3 driver, auto-discovering
app/models package for SQLModel.metadata, and a /health endpoint
that exercises the DB dependency end-to-end.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-27 15:57:44 +02:00