efa47d697d
Data model for the admin-only Project Overview cockpit (Model A — projects group events; money docs stay per-event and roll up). - migration 117: projects table (name, customer_account_id nullable, status) + events.project_id FK; backfill one auto-project per existing event (1:1 default, customer = the event's single assignment when unambiguous), admins relink freely afterward. 1 project : N events. - migration 118: customer_hour_entries.project_id (book hours to a project). - migration 119: email_queue.rendered_html (store actual sent HTML for the cockpit's email preview). All idempotent (hasTable/hasColumn guards), reversible downs. Verified: full migration boot + backfill on a temp DB.