3.3 KiB
3.3 KiB
Domain Model and Contracts
Canonical Enums
StageType = INTAKE | FILTER | EVALUATION | SELECTION | LIVE_FINAL | RESULTSTrackKind = MAIN | AWARD | SHOWCASERoutingMode = PARALLEL | EXCLUSIVE | POST_MAINStageStatus = DRAFT | ACTIVE | CLOSED | ARCHIVEDProjectStageStateValue = PENDING | IN_PROGRESS | PASSED | REJECTED | ROUTED | COMPLETED | WITHDRAWNDecisionMode = JURY_VOTE | AWARD_MASTER | ADMINOverrideReasonCode = DATA_CORRECTION | POLICY_EXCEPTION | JURY_CONFLICT | SPONSOR_DECISION | ADMIN_DISCRETION
Core Entities
Pipeline
idprogramIdnameslugstatussettingsJsoncreatedAt,updatedAt
Track
idpipelineIdkindspecialAwardId?nameslugsortOrderroutingModeDefault?decisionMode?
Stage
idtrackIdstageTypenameslugsortOrderstatusconfigVersionconfigJsonwindowOpenAt?,windowCloseAt?
StageTransition
idfromStageIdtoStageIdpriorityisDefaultguardJsonactionJson
ProjectStageState
idprojectIdtrackIdstageIdstateenteredAt,exitedAtdecisionRef?outcomeJson
RoutingRule
idpipelineIdscope(GLOBAL|TRACK|STAGE)predicateJsondestinationTrackIddestinationStageId?priorityisActive
Cohort and Live Runtime
Cohort(id, stageId, name, votingMode, isOpen, windowOpenAt?, windowCloseAt?)CohortProject(cohortId, projectId, sortOrder)LiveProgressCursor(id, stageId, sessionId, activeProjectId?, activeOrderIndex?, updatedBy, updatedAt)
Governance Entities
OverrideAction(id, entityType, entityId, oldValueJson, newValueJson, reasonCode, reasonText, actedBy, actedAt)DecisionAuditLog(id, entityType, entityId, eventType, payloadJson, actorId?, createdAt)
Stage Config Union Contracts
IntakeConfig
- file requirements
- accepted MIME and size constraints
- deadline and late policy
- team invite policy
FilterConfig
- deterministic gates
- AI rubric
- confidence thresholds
- manual queue policy
- rejection notification policy
EvaluationConfig
- criteria schema
- assignment strategy
- review thresholds
- COI policy
- visibility rules
SelectionConfig
- ranking source
- finalist target
- override permissions
- promotion mode (
auto_top_n,hybrid,manual)
LiveFinalConfig
- session behavior
- jury voting config
- audience voting config
- cohort policy
- reveal policy
- schedule hints (advisory)
ResultsConfig
- ranking weight rules
- publication policy
- winner override rules
Constraint Rules
- Stage ordering unique per track (
trackId + sortOrder). ProjectStageStateunique on (projectId,trackId,stageId).StageTransitionunique on (fromStageId,toStageId).- Transition destination must remain in same pipeline unless explicit routing rule applies.
- Override records immutable after insert.
- Decision audit log append-only.
Index Priorities
ProjectStageState(projectId, trackId, state)ProjectStageState(stageId, state)RoutingRule(pipelineId, isActive, priority)StageTransition(fromStageId, priority)LiveProgressCursor(stageId, sessionId)DecisionAuditLog(entityType, entityId, createdAt)