diff --git a/src/client/app.css b/src/client/app.css index ca3b3e3..febff6d 100644 --- a/src/client/app.css +++ b/src/client/app.css @@ -94,11 +94,14 @@ * { @apply border-border outline-ring/50; } + html, body { @apply bg-background text-foreground; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; -webkit-font-smoothing: antialiased; + height: 100%; + overflow: hidden; } } diff --git a/src/client/features/settings/components/settings-page.tsx b/src/client/features/settings/components/settings-page.tsx index 48aac44..a70dc8e 100644 --- a/src/client/features/settings/components/settings-page.tsx +++ b/src/client/features/settings/components/settings-page.tsx @@ -52,6 +52,7 @@ export function SettingsPage() { string | null >(null) const [devReload, setDevReload] = useState(null) + const [devSeedMock, setDevSeedMock] = useState(null) useEffect(() => { loadCachedResult(db).then((cached) => { @@ -409,6 +410,41 @@ export function SettingsPage() { +
+ Testdaten laden +
+ {devSeedMock && ( + + {devSeedMock} + + )} + +
+
Abgeordnete neu laden
diff --git a/src/client/routes/app/route.tsx b/src/client/routes/app/route.tsx index addd544..3694f7c 100644 --- a/src/client/routes/app/route.tsx +++ b/src/client/routes/app/route.tsx @@ -192,7 +192,7 @@ function AppLayout() { } > -
+
diff --git a/src/server/features/legislation/router.ts b/src/server/features/legislation/router.ts index 5177c70..2ce5254 100644 --- a/src/server/features/legislation/router.ts +++ b/src/server/features/legislation/router.ts @@ -7,11 +7,17 @@ import { getLegislationText, getUpcomingLegislation, getUserVote, + seedMockLegislation, } from "./service" export const legislationRouter = new Hono() // static routes FIRST — before /:id param routes +legislationRouter.post("/seed-mock", async (c) => { + const ids = await seedMockLegislation() + return c.json({ ok: true, count: ids.length, ids }, 201) +}) + legislationRouter.get("/upcoming", async (c) => { const items = await getUpcomingLegislation() return c.json(items) diff --git a/src/server/features/legislation/service.ts b/src/server/features/legislation/service.ts index 6a353f8..a64ec9d 100644 --- a/src/server/features/legislation/service.ts +++ b/src/server/features/legislation/service.ts @@ -163,3 +163,94 @@ export async function getLegislationResults( return { pollId, votes: results } } + +const MOCK_LEGISLATION = [ + { + dipVorgangsId: 999001, + title: "Entwurf eines Gesetzes zur Förderung erneuerbarer Energien", + abstract: + "Der Gesetzentwurf sieht eine umfassende Reform der Förderung erneuerbarer Energien vor, einschließlich beschleunigter Genehmigungsverfahren für Wind- und Solaranlagen.", + beratungsstand: "1. Beratung", + summary: + "Erneuerbare Energien sollen stärker gefördert werden. Genehmigungsverfahren für Windräder und Solaranlagen werden vereinfacht und beschleunigt.", + }, + { + dipVorgangsId: 999002, + title: "Gesetz zur Stärkung der digitalen Infrastruktur", + abstract: + "Ausbau des Glasfasernetzes und 5G-Versorgung in ländlichen Gebieten soll durch staatliche Zuschüsse und vereinfachte Bauvorschriften beschleunigt werden.", + beratungsstand: "Beschlussempfehlung liegt vor", + summary: + "Schnelleres Internet für alle: Glasfaser und 5G sollen mit staatlicher Hilfe auch aufs Land kommen. Bürokratie beim Netzausbau wird abgebaut.", + }, + { + dipVorgangsId: 999003, + title: "Entwurf eines Gesetzes zur Reform des Mietrechts", + abstract: + "Der Entwurf enthält Maßnahmen zur Begrenzung von Mieterhöhungen, Stärkung des Kündigungsschutzes und Einführung eines bundesweiten Mietspiegels.", + beratungsstand: "Überwiesen", + summary: + "Mieter sollen besser geschützt werden: strengere Grenzen für Mieterhöhungen, stärkerer Kündigungsschutz und ein einheitlicher Mietspiegel für ganz Deutschland.", + }, + { + dipVorgangsId: 999004, + title: "Gesetz zur Verbesserung der Pflegeversorgung", + abstract: + "Erhöhung der Pflegelöhne, Einführung verbindlicher Personalschlüssel in Pflegeeinrichtungen und Ausweitung der ambulanten Pflegeleistungen.", + beratungsstand: "1. Beratung", + summary: + "Bessere Pflege: Höhere Löhne für Pflegekräfte, mehr Personal pro Station und bessere Unterstützung für Pflege zu Hause.", + }, + { + dipVorgangsId: 999005, + title: "Entwurf eines Klimaanpassungsgesetzes", + abstract: + "Kommunen erhalten Mittel für Klimaanpassungsmaßnahmen wie Hochwasserschutz, Stadtbegrünung und hitzeresistente Infrastruktur.", + beratungsstand: "Beschlussempfehlung liegt vor", + summary: + "Städte und Gemeinden bekommen Geld für Schutz vor Klimafolgen: besserer Hochwasserschutz, mehr Grün in Städten und hitzefeste Gebäude.", + }, +] + +export async function seedMockLegislation() { + const expires = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000) // 30 days + + const inserted: number[] = [] + for (const mock of MOCK_LEGISLATION) { + const rows = await db + .insert(legislationTexts) + .values({ + dipVorgangsId: mock.dipVorgangsId, + title: mock.title, + abstract: mock.abstract, + beratungsstand: mock.beratungsstand, + expiresAt: expires, + }) + .onConflictDoUpdate({ + target: legislationTexts.dipVorgangsId, + set: { + title: mock.title, + abstract: mock.abstract, + beratungsstand: mock.beratungsstand, + fetchedAt: new Date(), + expiresAt: expires, + }, + }) + .returning({ id: legislationTexts.id }) + + const legId = rows[0].id + inserted.push(legId) + + if (mock.summary) { + await db + .insert(legislationSummaries) + .values({ legislationId: legId, summary: mock.summary }) + .onConflictDoUpdate({ + target: legislationSummaries.legislationId, + set: { summary: mock.summary, generatedAt: new Date() }, + }) + } + } + + return inserted +}