summaryrefslogtreecommitdiff
path: root/makima/src/db/models.rs
diff options
context:
space:
mode:
Diffstat (limited to 'makima/src/db/models.rs')
-rw-r--r--makima/src/db/models.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/makima/src/db/models.rs b/makima/src/db/models.rs
index 33ef52e..99c8b8e 100644
--- a/makima/src/db/models.rs
+++ b/makima/src/db/models.rs
@@ -1458,6 +1458,51 @@ pub struct CreateManagedRepositoryRequest {
#[serde(rename_all = "camelCase")]
pub struct ChangePhaseRequest {
pub phase: String,
+ /// If phase_guard is enabled, this must be true to confirm the transition.
+ /// If not provided or false, returns phase deliverables for review.
+ #[serde(default)]
+ pub confirmed: Option<bool>,
+ /// User feedback for changes (used when not confirming)
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub feedback: Option<String>,
+}
+
+/// Response for phase transition when phase_guard is enabled
+#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
+#[serde(rename_all = "camelCase")]
+pub struct PhaseTransitionRequest {
+ /// Current contract phase
+ pub current_phase: String,
+ /// Requested next phase
+ pub next_phase: String,
+ /// Summary of phase deliverables/outputs
+ pub deliverables_summary: String,
+ /// List of files created in this phase
+ pub phase_files: Vec<PhaseFileInfo>,
+ /// List of completed tasks in this phase
+ pub phase_tasks: Vec<PhaseTaskInfo>,
+ /// Whether user confirmation is required
+ pub requires_confirmation: bool,
+ /// Unique ID for tracking this transition request
+ pub transition_id: String,
+}
+
+/// File info for phase transition review
+#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
+#[serde(rename_all = "camelCase")]
+pub struct PhaseFileInfo {
+ pub id: Uuid,
+ pub name: String,
+ pub description: Option<String>,
+}
+
+/// Task info for phase transition review
+#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
+#[serde(rename_all = "camelCase")]
+pub struct PhaseTaskInfo {
+ pub id: Uuid,
+ pub name: String,
+ pub status: String,
}
/// Contract event record from the database