exec("SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"); $ddl = [ "CREATE TABLE IF NOT EXISTS management_reviews ( id INT NOT NULL AUTO_INCREMENT, organization_id INT NOT NULL, code VARCHAR(20) NULL, review_date DATE NULL, period_label VARCHAR(100) NULL, chair_user_id INT NULL, attendees JSON NULL, status ENUM('draft','approved') NOT NULL DEFAULT 'draft', approved_by INT NULL, approved_at DATETIME NULL, snapshot JSON NULL, conclusions TEXT NULL, created_by INT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_mgr_org (organization_id), CONSTRAINT fk_mgr_org FOREIGN KEY (organization_id) REFERENCES organizations (id) ON DELETE CASCADE, CONSTRAINT fk_mgr_chair FOREIGN KEY (chair_user_id) REFERENCES users (id) ON DELETE SET NULL, CONSTRAINT fk_mgr_approved FOREIGN KEY (approved_by) REFERENCES users (id) ON DELETE SET NULL, CONSTRAINT fk_mgr_creator FOREIGN KEY (created_by) REFERENCES users (id) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", "CREATE TABLE IF NOT EXISTS management_review_decisions ( id INT NOT NULL AUTO_INCREMENT, review_id INT NOT NULL, decision TEXT NOT NULL, owner_role_id INT NULL, due_date DATE NULL, status ENUM('open','in_progress','done') NOT NULL DEFAULT 'open', capa_id INT NULL, ord INT NOT NULL DEFAULT 0, PRIMARY KEY (id), KEY idx_mrd_review (review_id), CONSTRAINT fk_mrd_review FOREIGN KEY (review_id) REFERENCES management_reviews (id) ON DELETE CASCADE, CONSTRAINT fk_mrd_owner FOREIGN KEY (owner_role_id) REFERENCES org_roles (id) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", ]; foreach ($ddl as $stmt) { try { $pdo->exec($stmt); } catch (PDOException $e) { if (!in_array($e->errorInfo[1] ?? 0, [1050, 1061], true)) { throw $e; } } } $counts = []; foreach (['management_reviews', 'management_review_decisions'] as $t) { $counts[$t] = (int) $pdo->query("SELECT COUNT(*) FROM $t")->fetchColumn(); } echo "OK seed-management-reviews — " . json_encode($counts, JSON_UNESCAPED_UNICODE) . "\n";