-- AP A1.1 — CadenceInstance (minimal): eine offene Instanz pro Recurring, Tages-Tracking CREATE TABLE cadence_instances ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE, recurring_element_id UUID NOT NULL REFERENCES recurring_elements(id) ON DELETE CASCADE, status VARCHAR(32) NOT NULL DEFAULT 'open' CHECK (status IN ('open', 'completed')), due_at TIMESTAMPTZ NOT NULL, completed_at TIMESTAMPTZ NULL, measurement_note TEXT NOT NULL DEFAULT '', created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE INDEX idx_cadence_instances_tenant_recurring ON cadence_instances(tenant_id, recurring_element_id); CREATE INDEX idx_cadence_instances_open_due ON cadence_instances(tenant_id, due_at) WHERE status = 'open'; CREATE UNIQUE INDEX idx_cadence_instances_one_open_per_recurring ON cadence_instances(recurring_element_id) WHERE status = 'open';