feat(education): add tenant question placement

This commit is contained in:
2026-07-30 22:28:08 +08:00
parent 34bc1fe41e
commit 2a40cbd69e
21 changed files with 813 additions and 44 deletions

View File

@@ -60,6 +60,14 @@ _Avoid_: Read provider switch as implicit write permission
An append-only Education domain fact recording actor, content version, and a valid Publication State transition in the same transaction as that transition.
_Avoid_: Asynchronous operation log as publication proof
**Question Placement**:
The optimistic assignment of a tenant Draft Question Content item to one active, visible, selectable Content Node that the current tenant may reference. Placement is mutable only while the question is DRAFT and is frozen by publication. It is the current question-classification seam; it is not Category CRUD.
_Avoid_: Category assignment, editable published classification
**Placement Version**:
A non-negative optimistic concurrency version for Question Placement. It advances exactly once when the node changes, is independent from the immutable Question Content Version, and participates in publication CAS.
_Avoid_: Content version, lifecycle version
**Protected Answer Key**:
Server-only correctness and explanation data captured for stable scoring of a practice session. It is never included in a Safe Question, Question Snapshot JSON, or pre-submit response.
_Avoid_: Question Snapshot, frontend answer