The /health route returns JSON status for Docker Swarm to verify container health during deployment. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
71 lines
2.2 KiB
PL/PgSQL
71 lines
2.2 KiB
PL/PgSQL
-- Add phase_metadata column for agentic workflow tracking
|
|
ALTER TABLE projects ADD COLUMN IF NOT EXISTS phase_metadata JSONB DEFAULT '{
|
|
"currentPhase": "think",
|
|
"completedPhases": [],
|
|
"phaseStatus": "not_started",
|
|
"activities": [],
|
|
"metrics": {
|
|
"totalDuration": 0,
|
|
"phaseDurations": {},
|
|
"iterationCount": 0
|
|
}
|
|
}'::jsonb;
|
|
|
|
-- Create index for efficient querying
|
|
CREATE INDEX IF NOT EXISTS idx_projects_phase_metadata ON projects USING gin(phase_metadata);
|
|
|
|
-- Add comment for documentation
|
|
COMMENT ON COLUMN projects.phase_metadata IS 'Stores agentic development loop state: currentPhase, completedPhases, phaseStatus, activities, metrics';
|
|
|
|
-- Create function to update phase
|
|
CREATE OR REPLACE FUNCTION update_project_phase(
|
|
p_project_id UUID,
|
|
p_new_phase TEXT,
|
|
p_status TEXT DEFAULT 'in_progress'
|
|
)
|
|
RETURNS JSONB AS $$
|
|
DECLARE
|
|
v_current_metadata JSONB;
|
|
v_current_phase TEXT;
|
|
v_completed_phases JSONB;
|
|
v_new_activity JSONB;
|
|
v_updated_metadata JSONB;
|
|
BEGIN
|
|
-- Get current metadata
|
|
SELECT phase_metadata INTO v_current_metadata
|
|
FROM projects WHERE id = p_project_id;
|
|
|
|
v_current_phase := v_current_metadata->>'currentPhase';
|
|
v_completed_phases := COALESCE(v_current_metadata->'completedPhases', '[]'::jsonb);
|
|
|
|
-- Add current phase to completed if transitioning
|
|
IF v_current_phase IS NOT NULL AND v_current_phase != p_new_phase THEN
|
|
v_completed_phases := v_completed_phases || to_jsonb(v_current_phase);
|
|
END IF;
|
|
|
|
-- Create activity record
|
|
v_new_activity := jsonb_build_object(
|
|
'id', gen_random_uuid(),
|
|
'type', 'phase_change',
|
|
'message', 'Transitioned to ' || p_new_phase || ' phase',
|
|
'timestamp', now()
|
|
);
|
|
|
|
-- Build updated metadata
|
|
v_updated_metadata := jsonb_build_object(
|
|
'currentPhase', p_new_phase,
|
|
'completedPhases', v_completed_phases,
|
|
'phaseStatus', p_status,
|
|
'activities', (v_new_activity || COALESCE(v_current_metadata->'activities', '[]'::jsonb))[0:49],
|
|
'metrics', COALESCE(v_current_metadata->'metrics', '{}'::jsonb)
|
|
);
|
|
|
|
-- Update project
|
|
UPDATE projects
|
|
SET phase_metadata = v_updated_metadata, updated_at = now()
|
|
WHERE id = p_project_id;
|
|
|
|
RETURN v_updated_metadata;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|