-- AlterTable: usage-metrics timestamps. Existing rows adopt the migration's -- own timestamp (acceptable one-off skew for trend charts — same posture as -- the ingredient_unit_catalog migration). ALTER TABLE "user_profiles" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; ALTER TABLE "recipe" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; ALTER TABLE "planning" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; ALTER TABLE "planning_item" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; -- CreateTable CREATE TABLE "analytics_events" ( "id" SERIAL NOT NULL, "type" TEXT NOT NULL, "actor_type" TEXT NOT NULL, "actor_id" INTEGER, "context" JSONB, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "analytics_events_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE INDEX "analytics_events_type_created_at_idx" ON "analytics_events"("type", "created_at"); -- CreateTable CREATE TABLE "worker_heartbeats" ( "worker_key" TEXT NOT NULL, "last_seen_at" TIMESTAMP(3) NOT NULL, "last_run_at" TIMESTAMP(3), "last_result" JSONB, CONSTRAINT "worker_heartbeats_pkey" PRIMARY KEY ("worker_key") );