forked from wangziqi/ruoyi-vue-pro
90 lines
5.8 KiB
Markdown
90 lines
5.8 KiB
Markdown
# Education
|
|
|
|
The Education context owns the language for educational content, practice, assessment, and student learning state.
|
|
|
|
## Language
|
|
|
|
**Question Content**:
|
|
The complete versioned educational prompt presented for answering, including its stem and any answer choices required by its question type.
|
|
_Avoid_: Payload, raw question
|
|
|
|
**Option-backed Question**:
|
|
A question whose answer must be selected from a finite, student-visible set of labeled options. The supported family is `choice`, `multi`, `multi_choice`, `judge`, and `image`.
|
|
_Avoid_: Objective question when referring only to storage shape
|
|
|
|
**Optionless Question**:
|
|
A question answered without selecting from a finite option list. The recognized family includes `fill`, `text`, `terms`, `short_answer`, `composition`, `discuss`, `translation`, `case_analysis`, `brief_analysis`, `calculation`, `analysis_design`, `combination`, and `solution`.
|
|
_Avoid_: Subjective question when the distinction being made is only whether options are present
|
|
|
|
**Composite Question**:
|
|
A container question, such as `reading`, whose answerable units are sub-questions rather than top-level options. It is not a valid standalone practice question until the sub-question model is supported by the target contract.
|
|
_Avoid_: Reading question when other composite forms may use the same model
|
|
|
|
**Safe Question**:
|
|
A student-visible projection of Question Content that contains only display fields and never contains an answer, explanation, analysis, scoring rule, correctness flag, or administrative metadata.
|
|
_Avoid_: Sanitized DO, frontend question
|
|
|
|
**Question Option**:
|
|
One distinct choice in an Option-backed Question, identified by a non-blank label and containing non-blank display content. Labels are unique within the question.
|
|
_Avoid_: Answer, choice answer
|
|
|
|
**Question Snapshot**:
|
|
The immutable, student-visible Question Content captured when a practice session is created so that later content edits do not change that session. It excludes answers and explanations; protected scoring data is not part of this projection even when stored beside it.
|
|
_Avoid_: Question cache
|
|
|
|
**Question Content Version**:
|
|
An immutable revision of Question Content identified by its question and positive version number. Publication selects lifecycle state for the current version; it does not rewrite an existing version or change content ownership.
|
|
_Avoid_: Editable version row, question backup
|
|
|
|
**Publication State**:
|
|
The server-controlled lifecycle of tenant Question Content: `DRAFT → PUBLISHED → ARCHIVED`. The current command surface has no reverse transition, and `RETIRED` is not yet a defined state.
|
|
_Avoid_: Arbitrary status field, published boolean as an independent state
|
|
|
|
**Draft Question Content**:
|
|
Tenant-owned Question Content that may still be completed by an author and is never available to fresh student reads.
|
|
_Avoid_: Unpublished live question
|
|
|
|
**Published Question Content**:
|
|
Question Content whose current immutable version passed publication safety checks and may be returned as a Safe Question to fresh student reads.
|
|
_Avoid_: Public content (publication does not mean `scope=PUBLIC`)
|
|
|
|
**Archived Question Content**:
|
|
Previously Published Question Content withdrawn from fresh student reads without changing ownership or previously captured Question Snapshots. It is terminal in the current command surface.
|
|
_Avoid_: Deleted question, retired question
|
|
|
|
**Content Write Authority**:
|
|
The catalog source allowed to accept authoring commands and produce student-visible read-after-write behavior. Native PostgreSQL authoring is authoritative only in `JAVA_READ`; other provider modes fail before persistence access.
|
|
_Avoid_: Read provider switch as implicit write permission
|
|
|
|
**Question Lifecycle Audit**:
|
|
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
|
|
|
|
**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
|
|
|
|
**Unavailable Question Content**:
|
|
Question Content that cannot safely be displayed or restored because its type, required options, option structure, publication state, or snapshot encoding is invalid or unsupported.
|
|
_Avoid_: Empty question, best-effort question
|
|
|
|
**Tenant Locator Claim**:
|
|
An unauthenticated pre-login value used to request tenant selection: either a browser-context hostname claim or an explicit Public Tenant Handle. It is not proof of caller identity or tenant authorization.
|
|
_Avoid_: Trusted identity, authenticated hostname, tenant ID
|
|
|
|
**Browser-context Evidence**:
|
|
A hostname claim derived from `Origin`, falling back to `Referer`, and used to keep browser login-routing inputs consistent. Any HTTP client can forge it, so it is not an authentication boundary.
|
|
_Avoid_: Trusted browser identity, verified origin
|
|
|
|
**Public Tenant Handle**:
|
|
The exact, published pre-login handle used by a headless client to request one tenant. In the current target it is the System tenant's unique name under a constrained, case-sensitive, operationally immutable contract; it is not the source system's distinct Tenant Code.
|
|
_Avoid_: Tenant Code, display-name search, tenantName query
|
|
|
|
**Student Principal**:
|
|
An authenticated Member identity acting as a student. An administrator or generic authenticated account is not a Student Principal.
|
|
_Avoid_: User, account, logged-in principal
|
|
|
|
**Public Tenant Resolution**:
|
|
The unauthenticated pre-login mapping of a Tenant Locator Claim to minimal login-routing fields. A successful result discloses that an available tenant exists; failed unknown, disabled, and expired tenants remain indistinguishable.
|
|
_Avoid_: Tenant authentication, tenant administration lookup, non-enumerating discovery
|