Changelog voor SideKick: view serverchangelog bovenop version_history

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014MGLqt1uKfNARQHut9ifcx
This commit is contained in:
jf
2026-10-23 14:01:19 +00:00
co-authored by Claude Sonnet 5.5
parent 4918df574a
commit 88a89bfa01
2 changed files with 79 additions and 1 deletions
+61
View File
@@ -0,0 +1,61 @@
-- MijnBesluit - de versiehistorie als changelog voor SideKick
--
-- SideKick toont op het tabblad Changelog de regels van een tabel of view met een vast formaat
-- (zie de SideKick-handleiding, sectie 5: Datum, Versie, Product, Soort, Onderwerp, Inhoud, Actief,
-- Aanmaakdatum, Updatedatum). MijnBesluit heeft geen tweede changelog: de versiehistorie
-- (version_history, onderhouden op de website onder Beheer > Versiehistorie) IS de changelog.
-- Deze view geeft haar in dat formaat. SideKick bewerkt niets; de agent op de server leest alleen.
--
-- Datum datum
-- Versie versie, leeg als het alleen de website betreft
-- Product vast: MijnBesluit (app en website samen)
-- Soort vast: Nieuw (de versiehistorie bevat alleen nieuwe of wezenlijk gewijzigde
-- functies, geen bugfixes)
-- Onderwerp de kop (per datum uniek, daar zorgt version_history voor)
-- Inhoud de uitleg, platte tekst
-- Actief zichtbaar (0 = verborgen)
-- Aanmaakdatum aangemaakt_op (UTC)
-- Updatedatum gewijzigd_op (UTC); de website zet hem bij elke wijziging opnieuw, ook bij
-- verbergen of tonen. Een verwijderde regel valt weg; SideKick merkt dat aan het
-- afwijkende aantal en leest dan alles opnieuw.
--
-- De view draait met de rechten van wie hem maakt (root, SQL SECURITY DEFINER). Wie hem leest hoeft
-- dus alleen SELECT op de view te hebben, niet op version_history.
--
-- Eenmalig te draaien als root, ná db\22_versiehistorie.sql:
-- mysql -u root -p mijnbesluit < db\handmatig\22c_serverchangelog_view.sql
--
-- Opnieuw draaien mag (CREATE OR REPLACE). Het staat in handmatig\ omdat het uitrolaccount wel
-- tabellen maar niet per se views mag maken, en geen rechten mag geven.
--
-- Daarna in SideKick bij de agent van MijnBesluit: "Changelog: tabel" = serverchangelog, met
-- DbNaam = mijnbesluit en een gebruiker die de view mag lezen (zie onderaan).
USE `mijnbesluit`;
CREATE OR REPLACE
SQL SECURITY DEFINER
VIEW `serverchangelog` AS
SELECT
`datum` AS `Datum`,
COALESCE(`versie`, '') AS `Versie`,
'MijnBesluit' AS `Product`,
'Nieuw' AS `Soort`,
`kop` AS `Onderwerp`,
`tekst` AS `Inhoud`,
`zichtbaar` AS `Actief`,
`aangemaakt_op` AS `Aanmaakdatum`,
`gewijzigd_op` AS `Updatedatum`
FROM `version_history`;
-- De gebruiker die de agent gebruikt om te lezen. Dit geeft de bestaande applicatiegebruiker leesrecht
-- op alleen de view. Liever een eigen leesgebruiker? Maak die zelf aan met een wachtwoord dat alleen
-- jij kent en geef hem hetzelfde recht, bijvoorbeeld:
-- CREATE USER 'mijnbesluit_changelog'@'localhost' IDENTIFIED BY '<kies-zelf-een-wachtwoord>';
-- GRANT SELECT ON `mijnbesluit`.`serverchangelog` TO 'mijnbesluit_changelog'@'localhost';
GRANT SELECT ON `mijnbesluit`.`serverchangelog` TO 'mijnbesluit_app'@'localhost';
FLUSH PRIVILEGES;
-- Controle: de regels van de versiehistorie, nieuwste bovenaan.
SELECT `Datum`, `Versie`, `Product`, `Soort`, `Onderwerp`, `Actief`, `Updatedatum`
FROM `serverchangelog` ORDER BY `Datum` DESC, `Aanmaakdatum` DESC LIMIT 20;
+18 -1
View File
@@ -31,9 +31,26 @@ geen tekstuele correcties, geen opmaak die is rechtgezet.
2. Als root: `mysql -u root -p < db\02_applicatiegebruiker.sql` (rechten voor `mijnbesluit_app`
op de nieuwe tabel) en `mysql -u root -p mijnbesluit < db\handmatig\22b_versiehistorie_startrijen.sql`
(de bestaande regels; `INSERT IGNORE`, dus opnieuw draaien is veilig).
3. Daarna pas de website en de SocketServer uitrollen. Andersom leest de nieuwe code een tabel
3. Voor de changelog in SideKick (optioneel, kan ook later): als root
`mysql -u root -p mijnbesluit < db\handmatig\22c_serverchangelog_view.sql` (zie hieronder).
4. Daarna pas de website en de SocketServer uitrollen. Andersom leest de nieuwe code een tabel
die er nog niet is, of waar de applicatiegebruiker nog niet bij mag.
## Changelog in SideKick
Het tabblad Changelog van SideKick leest een tabel of view `serverchangelog` met vaste kolommen. De
versiehistorie is de changelog van MijnBesluit, dus er is geen tweede lijst: de view
`serverchangelog` (script `db\handmatig\22c_serverchangelog_view.sql`, als root) geeft
`version_history` in dat formaat terug. `Product` is vast "MijnBesluit", `Soort` vast "Nieuw" (de
lijst bevat geen bugfixes), `Actief` is `zichtbaar` en `Updatedatum` is `gewijzigd_op`, dat de site
bij elke wijziging opnieuw zet. De agent leest de view alleen.
Instellen in SideKick bij de agent van MijnBesluit: "Changelog: tabel" = `serverchangelog`, `DbNaam` =
`mijnbesluit`, en een gebruiker met SELECT op de view (het script geeft dat aan `mijnbesluit_app`;
een aparte leesgebruiker kan ook, het voorbeeld staat in het script). Het wachtwoord alleen op de
server invullen. Voorwaarden: de agent kent de actie `ChangelogLezen` en het project staat op Weg hub.
De inhoud gaat naar het SideKick-scherm van de beheerder: geen persoonsgegevens in een regel.
## Oudere apps
De tekst van de versiehistorie zat tot en met appversie 1.1 (versiecode 3) in de app zelf. Die