- Tabellen vault_categories en vault_category_fields (db/21), startrijen handmatig (db/handmatig/21b) - VaultCategoryService met regels voor zichtbaarheid, gebruik en eigen velden - Beheer > Kluissoorten (/beheer/soorten) met gebruikstellers; soort in gebruik niet te verwijderen - Kluis en Nalatenschap (web en app) tonen soorten en eigen velden uit de database - Socketprotocol: vault.categories; GRANTs voor mijnbesluit_app in db/02 - db/20 herhaalbaar gemaakt - App versie 1.1 (versiecode 3) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014MGLqt1uKfNARQHut9ifcx
75 lines
4.3 KiB
Markdown
75 lines
4.3 KiB
Markdown
# Kluissoorten
|
|
|
|
Wat iemand in zijn kluis kan vastleggen (Wachtwoord, Polis, Uitvaartwens, ... en alles wat de
|
|
beheerder er zelf bij zet, zoals "Niet reanimeren" of "Dementie") staat in de database en niet in de
|
|
code. Een nieuwe soort vraagt daarom **geen nieuwe versie van de app** in de Play Store of App Store.
|
|
|
|
## Hoe het werkt
|
|
|
|
* Tabel `vault_categories`: één rij per soort. Nummers 1-11 en 99 (Overig) zijn de ingebouwde
|
|
soorten en houden hun oude nummer; soorten die de beheerder maakt beginnen bij 100.
|
|
`vault_items.category` blijft een gewoon getal.
|
|
* Tabel `vault_category_fields`: de velden van een eigen soort (label, soort veld, keuzes, hulptekst,
|
|
verplicht, actief, volgorde).
|
|
* De app en de website vragen de lijst op bij de server (`vault.categories`) en tekenen het
|
|
formulier van een eigen soort naar zijn velden. Een ingebouwde soort heeft zijn invulscherm in de
|
|
app zelf; die velden zijn niet te wijzigen. Wil je voor iets als "Polis" andere velden, maak dan
|
|
een eigen soort.
|
|
* De ingevulde waarden van een eigen soort staan versleuteld in `VaultPayload.Velden`, op de vaste
|
|
`sleutel` van het veld. Een label hernoemen mag dus zonder dat iemands gegevens loskomen van hun veld.
|
|
|
|
## Regels
|
|
|
|
1. **Wat in gebruik is verdwijnt nooit.** Een soort met kluisitems kan niet worden verwijderd,
|
|
alleen op niet-actief gezet. Een niet-actieve soort staat niet meer in de lijst van wie hem nog
|
|
nooit gebruikte; wie er al een item van heeft, ziet hem nog en kan zijn items gewoon bekijken en
|
|
wijzigen. Hetzelfde geldt voor een veld: met items eronder kan het alleen op niet-actief.
|
|
2. **De beheerder ziet aantallen, nooit inhoud.** Per soort zie je hoeveel items en hoeveel mensen,
|
|
niet wie en niet wat.
|
|
3. **"Bespreken met" is een instelling per soort.** Startwaarden: aan bij Uitvaartwens en
|
|
Donorcodicil, uit bij de rest.
|
|
4. **De server controleert alles.** Een oudere of andere app stuurt wat hij wil: alleen bekende
|
|
velden blijven over, verplichte velden moeten gevuld zijn en datums moeten kloppen.
|
|
|
|
## Privacy: de naam van een soort is leesbaar voor de server
|
|
|
|
Alleen de *inhoud* van een kluisitem is versleuteld. De titel en de soort staan leesbaar in de
|
|
database, net als de naam die de beheerder aan een soort geeft. Een soort die "Dementieverklaring"
|
|
heet, zet dat woord dus in de database en laat zien hoe vaak het gebruikt wordt. Kies een neutrale
|
|
naam als de soort zelf iets over gezondheid zegt, en zet het gevoelige deel in de velden: die
|
|
waarden blijven versleuteld. Het beheerscherm waarschuwt hiervoor.
|
|
|
|
## Beheren
|
|
|
|
Website, ingelogd als beheerder: **Beheer > Kluissoorten** (`/beheer/soorten`). Daar maak je een
|
|
soort, hernoem je hem, zet je hem actief of niet-actief, kies je de plek in de lijst, zet je
|
|
"bespreken met" aan of uit en beheer je de velden. Elke wijziging komt in het logboek
|
|
(`KluisSoortBeheerd`).
|
|
|
|
## Uitrollen
|
|
|
|
1. **Database, eenmalig als root** (in cmd, niet in PowerShell). De uitrolagent heeft een beperkt
|
|
account dat tabellen mag maken maar geen gegevens mag invoegen en geen rechten mag uitdelen;
|
|
daarom zitten deze twee stappen niet in de uitrol zelf:
|
|
|
|
```
|
|
mysql -u root -p < db\02_applicatiegebruiker.sql
|
|
mysql -u root -p mijnbesluit < db\handmatig\21b_kluissoorten_startrijen.sql
|
|
```
|
|
|
|
De eerste geeft de applicatiegebruiker rechten op de twee nieuwe tabellen (zonder die rechten
|
|
krijgt de server "SELECT command denied"), de tweede zet de twaalf bestaande soorten erin.
|
|
Beide mogen opnieuw gedraaid worden. Controle: de tweede meldt `aantal_soorten` 12.
|
|
2. **Uitroller:** `21_kluissoorten.sql` maakt de tabellen (de uitrolagent draait dit mee),
|
|
daarna komen de website en de SocketServer. Draai stap 1 vóór je uitrolt: de nieuwe server leest
|
|
die tabellen meteen.
|
|
3. Nieuwe versie van de app (verhoog `ApplicationVersion`) voor Android en iOS. Die versie kan het
|
|
formulier van een eigen soort tekenen. Oudere versies blijven werken: een eigen soort toont
|
|
daar als "Overig", de items zijn zichtbaar maar niet te wijzigen (de server weigert, zodat er niets
|
|
van de ingevulde velden verloren gaat). Alleen de soorten zelf hoeven daarna nooit meer een release.
|
|
|
|
## Wat nog meer zonder release kan
|
|
|
|
Niet gebouwd, wel mogelijk op dezelfde manier: een mededelingenbalk in de app, een minimaal vereiste
|
|
appversie, de lijst met sociale media en instelwaarden (bezwaartermijn, limieten).
|