summaryrefslogtreecommitdiff
path: root/makima/src/db/models.rs
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-02-07 18:27:54 +0000
committersoryu <soryu@soryu.co>2026-02-07 18:27:54 +0000
commit97e21c8296ec5f91912d56980ebf3b18a1ca3507 (patch)
tree3650e2eb62ab5b387006563ce64139aa7688da5f /makima/src/db/models.rs
parent8f757f561eeb397aaea70d7c10d41445cc5e50b5 (diff)
downloadsoryu-97e21c8296ec5f91912d56980ebf3b18a1ca3507.tar.gz
soryu-97e21c8296ec5f91912d56980ebf3b18a1ca3507.zip
Add directive monitor contracts
Diffstat (limited to 'makima/src/db/models.rs')
-rw-r--r--makima/src/db/models.rs86
1 files changed, 85 insertions, 1 deletions
diff --git a/makima/src/db/models.rs b/makima/src/db/models.rs
index bc90942..eff2df0 100644
--- a/makima/src/db/models.rs
+++ b/makima/src/db/models.rs
@@ -2849,12 +2849,37 @@ pub struct UpdateDirectiveRequest {
pub version: Option<i32>,
}
+/// Lightweight contract summary attached to a chain step.
+#[derive(Debug, FromRow, Serialize, ToSchema)]
+#[serde(rename_all = "camelCase")]
+pub struct StepContractSummary {
+ pub id: Uuid,
+ pub name: String,
+ pub contract_type: String,
+ pub phase: String,
+ pub status: String,
+ pub task_count: i64,
+ pub tasks_done: i64,
+ pub tasks_running: i64,
+ pub tasks_failed: i64,
+}
+
+/// Chain step enriched with optional contract summary.
+#[derive(Debug, Serialize, ToSchema)]
+#[serde(rename_all = "camelCase")]
+pub struct ChainStepWithContract {
+ #[serde(flatten)]
+ pub step: ChainStep,
+ pub contract_summary: Option<StepContractSummary>,
+}
+
/// Directive with its chains and steps for detail view.
#[derive(Debug, Serialize, ToSchema)]
#[serde(rename_all = "camelCase")]
pub struct DirectiveWithChains {
#[serde(flatten)]
pub directive: Directive,
+ pub orchestrator_contract_summary: Option<StepContractSummary>,
pub chains: Vec<ChainWithSteps>,
}
@@ -2903,6 +2928,8 @@ pub struct ChainStep {
pub status: String,
pub contract_id: Option<Uuid>,
pub supervisor_task_id: Option<Uuid>,
+ pub monitoring_contract_id: Option<Uuid>,
+ pub monitoring_task_id: Option<Uuid>,
pub confidence_score: Option<f64>,
pub confidence_level: Option<String>,
pub evaluation_count: i32,
@@ -2922,5 +2949,62 @@ pub struct ChainStep {
pub struct ChainWithSteps {
#[serde(flatten)]
pub chain: DirectiveChain,
- pub steps: Vec<ChainStep>,
+ pub steps: Vec<ChainStepWithContract>,
+}
+
+/// Full row from directive_evaluations table.
+#[derive(Debug, Clone, FromRow, Serialize, ToSchema)]
+#[serde(rename_all = "camelCase")]
+pub struct DirectiveEvaluation {
+ pub id: Uuid,
+ pub directive_id: Uuid,
+ pub chain_id: Option<Uuid>,
+ pub step_id: Option<Uuid>,
+ pub contract_id: Option<Uuid>,
+ pub evaluation_type: String,
+ pub evaluation_number: i32,
+ pub evaluator: Option<String>,
+ pub passed: bool,
+ pub overall_score: Option<f64>,
+ pub confidence_level: Option<String>,
+ #[sqlx(json)]
+ pub programmatic_results: serde_json::Value,
+ #[sqlx(json)]
+ pub llm_results: serde_json::Value,
+ #[sqlx(json)]
+ pub criteria_results: serde_json::Value,
+ pub summary_feedback: String,
+ pub rework_instructions: Option<String>,
+ #[sqlx(json)]
+ pub directive_snapshot: Option<serde_json::Value>,
+ #[sqlx(json)]
+ pub deliverables_snapshot: Option<serde_json::Value>,
+ pub started_at: DateTime<Utc>,
+ pub completed_at: Option<DateTime<Utc>>,
+ pub created_at: DateTime<Utc>,
+}
+
+/// Full row from directive_events table.
+#[derive(Debug, Clone, FromRow, Serialize, ToSchema)]
+#[serde(rename_all = "camelCase")]
+pub struct DirectiveEvent {
+ pub id: Uuid,
+ pub directive_id: Uuid,
+ pub chain_id: Option<Uuid>,
+ pub step_id: Option<Uuid>,
+ pub event_type: String,
+ pub severity: String,
+ #[sqlx(json)]
+ pub event_data: Option<serde_json::Value>,
+ pub actor_type: String,
+ pub actor_id: Option<Uuid>,
+ pub created_at: DateTime<Utc>,
+}
+
+/// Response for evaluation list endpoint.
+#[derive(Debug, Serialize, ToSchema)]
+#[serde(rename_all = "camelCase")]
+pub struct EvaluationListResponse {
+ pub evaluations: Vec<DirectiveEvaluation>,
+ pub total: i64,
}