Senast verifierad: 2026-09-30
Politiker är en stateful Cloudflare Worker-applikation för:
Den kodnära current-state-källan är app/wrangler.jsonc, app/src/ och D1-migrationerna under infra/migrations/.
app/wrangler.jsonc definierar:
politikerapp/src/access-index.ts<din-host>app/public/DBSESSIONSSEND_QUEUERATE_LIMITERATTACHMENTSEMAILapp/src/access-index.ts är extern requestgräns och ligger framför den huvudsakliga applikationslogiken/assets.
app/src/index.ts hanterar bland annat auth, konton, API-nycklar, kontaktdata, brev, bilagor, utskick, queue-konsumtion, feedback och adminfunktioner.
Canonical application state, inklusive data som måste överleva enskilda Worker-invocations.
Det gemensamma offentliga mottagarregistret ligger i public_contacts. area_type skiljer bland annat politiska nivåer, media och academia. Akademiska poster kan dessutom bära organisation, unit, title, academic_field och source_url. De tre aktuella akademiska fälten är statsvetenskap, offentlig förvaltning och offentlig rätt/förvaltningsrätt.
Kommun-/regionkopplingar till nämnder och styrelser ligger i public_contact_assignments. Migration 0003_generalize_public_contacts.sql skapade temporära legacy-vyer för de tidigare tabellnamnen under cutover. Efter att current Worker och kontaktverktygen flyttat helt till canonical public_contacts / public_contact_assignments tar migration 0005_drop_public_contact_legacy_views.sql bort endast dessa två views och den begränsade compatibility-triggern. HTTP-aliaset /api/politicians/search påverkas inte.
Kontobundna återanvändbara brevinledningar ligger i letter_intro_presets. Rubriken lagras som metadata medan inledningstexten krypteras med samma applikationsgräns som brevdata. Vid utskick snapshots den valda sammansatta inledningen krypterat på send_jobs.intro_text, så senare ändringar i en mall inte påverkar ett redan startat utskick. Retentionflödet raderar även denna snapshot tillsammans med brevets innehåll.
Sessionsstate. KV ska inte användas som ersättning för relationell canonical data.
Bilagor och objektdata. Objektinnehåll ska inte flyttas in i loggning eller dokumentation.
Asynkront leveransarbete. Queue-state kompletterar persistent jobbstate; det ersätter det inte.
CredentialRateLimiter är serialiserad koordinationspunkt för credential-/mailkontobaserad leveranstakt. Detta får inte ersättas av oserialiserad processlokal state.
D1-migrationer ligger i infra/migrations/. Wrangler pekar explicit på den katalogen och migrations-tabellen.
Schemaändringar ska göras som versionerade migrationer.
Kod och docs får beskriva secret-namn och ansvar men aldrig värden. Credentialflöden ska behålla sina avsedda krypterings- och runtimegränser.
legacy är det äldre uttrycket och fortsatt fallback: mörk bas, cyan/blå/violett/magenta glow och diskret 42 px-rutnät. forest (visas som portalen) och blackout är de övriga gemensamma yttemana. Politiker behåller samtidigt sin svenska gul/blå branding, funktionella statusfärger, typografi och informationsarkitektur som produktidentitet i alla tre teman.
Temavalet följer det gemensamma presentationskontraktet localStorage["<prefix>.theme"] och cookien <prefix>_theme (prefix och delad domän sätts vid deploy). Temaväljaren ligger vid sidans nederkant på de primära publika ytorna så att den inte konkurrerar med huvudnavigation och sessionskontroller. De publika sidorna exponerar även en PWA-bas (manifest, befintliga 192/512-ikoner och network-only service worker) för installation/store-packaging utan att flytta sessions-, D1-, Queue-, R2- eller credentialstate till klientcache. Den preferensen är kosmetisk och får aldrig påverka konto-, sessions-, auth-, recipient- eller utskicksstate.
Persistent logs/traces är aktiverade med sampling och query-string-redaction. Auth-/API-flöden kan bära känsliga parametrar; redaction är därför en driftinvariant.
Denna fil dokumenterar repo-specifik current-state. Privata operativa detaljer hör inte hemma här.
Uppdatera filen när bindings, queue-/rate-limitmodell, D1-schema, authmodell, storage, cron eller deploymentmodell ändras.