220 lines
5.5 KiB
Python
220 lines
5.5 KiB
Python
# [DEF:DatasetReviewSchemaComposites:Module]
|
|
# @COMPLEXITY: 2
|
|
# @PURPOSE: Composite Pydantic DTOs for clarification, preview, run context, and session summary/detail responses.
|
|
# @LAYER: API
|
|
# @RELATION: DEPENDS_ON -> [DatasetReviewSchemaDtos]
|
|
|
|
from datetime import datetime
|
|
from typing import Any, List, Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from src.models.dataset_review import (
|
|
ClarificationStatus,
|
|
QuestionState,
|
|
AnswerKind,
|
|
PreviewStatus,
|
|
LaunchStatus,
|
|
SessionStatus,
|
|
SessionPhase,
|
|
ReadinessState,
|
|
RecommendedAction,
|
|
)
|
|
from src.schemas.dataset_review_pkg._dtos import (
|
|
SessionCollaboratorDto,
|
|
DatasetProfileDto,
|
|
ValidationFindingDto,
|
|
SemanticSourceDto,
|
|
SemanticFieldEntryDto,
|
|
ImportedFilterDto,
|
|
TemplateVariableDto,
|
|
ExecutionMappingDto,
|
|
)
|
|
|
|
|
|
# [DEF:ClarificationOptionDto:Class]
|
|
# @COMPLEXITY: 1
|
|
# @PURPOSE: Clarification option DTO.
|
|
class ClarificationOptionDto(BaseModel):
|
|
option_id: str
|
|
question_id: str
|
|
label: str
|
|
value: str
|
|
is_recommended: bool
|
|
display_order: int
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# [/DEF:ClarificationOptionDto:Class]
|
|
|
|
|
|
# [DEF:ClarificationAnswerDto:Class]
|
|
# @COMPLEXITY: 1
|
|
# @PURPOSE: Clarification answer DTO with feedback.
|
|
class ClarificationAnswerDto(BaseModel):
|
|
answer_id: str
|
|
question_id: str
|
|
answer_kind: AnswerKind
|
|
answer_value: Optional[str] = None
|
|
answered_by_user_id: str
|
|
impact_summary: Optional[str] = None
|
|
user_feedback: Optional[str] = None
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# [/DEF:ClarificationAnswerDto:Class]
|
|
|
|
|
|
# [DEF:ClarificationQuestionDto:Class]
|
|
# @COMPLEXITY: 2
|
|
# @PURPOSE: Clarification question DTO with nested options and answer.
|
|
class ClarificationQuestionDto(BaseModel):
|
|
question_id: str
|
|
clarification_session_id: str
|
|
topic_ref: str
|
|
question_text: str
|
|
why_it_matters: str
|
|
current_guess: Optional[str] = None
|
|
priority: int
|
|
state: QuestionState
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
options: List[ClarificationOptionDto] = []
|
|
answer: Optional[ClarificationAnswerDto] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# [/DEF:ClarificationQuestionDto:Class]
|
|
|
|
|
|
# [DEF:ClarificationSessionDto:Class]
|
|
# @COMPLEXITY: 2
|
|
# @PURPOSE: Clarification session DTO with nested questions.
|
|
class ClarificationSessionDto(BaseModel):
|
|
clarification_session_id: str
|
|
session_id: str
|
|
status: ClarificationStatus
|
|
current_question_id: Optional[str] = None
|
|
resolved_count: int
|
|
remaining_count: int
|
|
summary_delta: Optional[str] = None
|
|
started_at: datetime
|
|
updated_at: datetime
|
|
completed_at: Optional[datetime] = None
|
|
questions: List[ClarificationQuestionDto] = []
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# [/DEF:ClarificationSessionDto:Class]
|
|
|
|
|
|
# [DEF:CompiledPreviewDto:Class]
|
|
# @COMPLEXITY: 1
|
|
# @PURPOSE: Compiled preview DTO with fingerprint and session version.
|
|
class CompiledPreviewDto(BaseModel):
|
|
preview_id: str
|
|
session_id: str
|
|
session_version: Optional[int] = None
|
|
preview_status: PreviewStatus
|
|
compiled_sql: Optional[str] = None
|
|
preview_fingerprint: str
|
|
compiled_by: str
|
|
error_code: Optional[str] = None
|
|
error_details: Optional[str] = None
|
|
compiled_at: Optional[datetime] = None
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# [/DEF:CompiledPreviewDto:Class]
|
|
|
|
|
|
# [DEF:DatasetRunContextDto:Class]
|
|
# @COMPLEXITY: 1
|
|
# @PURPOSE: Run context DTO with launch audit data and session version.
|
|
class DatasetRunContextDto(BaseModel):
|
|
run_context_id: str
|
|
session_id: str
|
|
session_version: Optional[int] = None
|
|
dataset_ref: str
|
|
environment_id: str
|
|
preview_id: str
|
|
sql_lab_session_ref: str
|
|
effective_filters: Any
|
|
template_params: Any
|
|
approved_mapping_ids: List[str]
|
|
semantic_decision_refs: List[str]
|
|
open_warning_refs: List[str]
|
|
launch_status: LaunchStatus
|
|
launch_error: Optional[str] = None
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# [/DEF:DatasetRunContextDto:Class]
|
|
|
|
|
|
# [DEF:SessionSummary:Class]
|
|
# @COMPLEXITY: 2
|
|
# @PURPOSE: Lightweight session summary DTO for list responses.
|
|
class SessionSummary(BaseModel):
|
|
session_id: str
|
|
user_id: str
|
|
environment_id: str
|
|
source_kind: str
|
|
source_input: str
|
|
dataset_ref: str
|
|
dataset_id: Optional[int] = None
|
|
version: int = 0
|
|
session_version: int = 0
|
|
readiness_state: ReadinessState
|
|
recommended_action: RecommendedAction
|
|
status: SessionStatus
|
|
current_phase: SessionPhase
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
last_activity_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# [/DEF:SessionSummary:Class]
|
|
|
|
|
|
# [DEF:SessionDetail:Class]
|
|
# @COMPLEXITY: 2
|
|
# @PURPOSE: Full session detail DTO with all nested aggregates for detail views.
|
|
# @RELATION: INHERITS -> [SessionSummary]
|
|
class SessionDetail(SessionSummary):
|
|
collaborators: List[SessionCollaboratorDto] = []
|
|
profile: Optional[DatasetProfileDto] = None
|
|
findings: List[ValidationFindingDto] = []
|
|
semantic_sources: List[SemanticSourceDto] = []
|
|
semantic_fields: List[SemanticFieldEntryDto] = []
|
|
imported_filters: List[ImportedFilterDto] = []
|
|
template_variables: List[TemplateVariableDto] = []
|
|
execution_mappings: List[ExecutionMappingDto] = []
|
|
clarification_sessions: List[ClarificationSessionDto] = []
|
|
previews: List[CompiledPreviewDto] = []
|
|
run_contexts: List[DatasetRunContextDto] = []
|
|
|
|
|
|
# [/DEF:SessionDetail:Class]
|
|
|
|
|
|
# [/DEF:DatasetReviewSchemaComposites:Module]
|