feat(stamdata): admin stamdata maintenance editor (beheer)
Realizes ADR-0004's "future low-code editor that commits a PR": an
admin-only stamdata maintenance editor built on the stamdata-as-code
foundation.
Backend: `professions` moves from a hardcoded C# dictionary to an embedded
`professions.json` data-file (typed as `ProfessionMapping`) with valid-time
(geldigVan/geldigTot, half-open). A generic, reflection-driven
StamdataCatalog/StamdataTable/StamdataFile describes every table so one
endpoint pair + one grid editor serve all of them; add a table in one line.
Two read-only, admin-gated endpoints (GET /stamdata, GET /stamdata/{table}
?peildatum=) — no runtime write path. Generic build gate
`Every_catalog_table_is_valid` (keys non-blank, no overlapping validity,
well-formed windows).
Frontend: new `beheer` context (route beheer/stamdata, capabilityGuard
'stamdata:edit'). A schema-driven grid editor edits rows locally; download()
emits {table}.json for the admin to commit as a reviewed PR (no mutation
command — the CI build + StamdataValidationTests stay the authority).
Full gate GREEN both sides; gen:api leaves no drift; new stamdata story
passes axe. See WP-29 + ADR-0004.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -55,4 +55,16 @@ public class StamdataValidationTests
|
||||
var ids = PolicyQuestions.ManualSet.Select(q => q.Id).ToList();
|
||||
Assert.Equal(ids.Count, ids.Distinct().Count());
|
||||
}
|
||||
|
||||
// The GENERIC gate (ADR-0004): every table registered in the catalog is validated the
|
||||
// same way — its JSON deserializes into its typed record, keys are non-blank and don't
|
||||
// overlap in time, and valid-time windows are well-formed. A new stamdata type is covered
|
||||
// the moment it's added to StamdataCatalog; no new test needed. A bad edit fails the build.
|
||||
[Fact]
|
||||
public void Every_catalog_table_is_valid()
|
||||
{
|
||||
foreach (var table in StamdataCatalog.All)
|
||||
Assert.True(table.Validate().Count == 0,
|
||||
$"Stamdata table '{table.Id}' has problems: {string.Join("; ", table.Validate())}");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user