new-site/api/migrations/010_canada_crtc.sql
justin f8cd37ac8c Initial commit — Performance West telecom compliance platform
Includes: API (Express/TypeScript), Astro site, Python workers,
document generators, FCC compliance tools, Canada CRTC formation,
Ansible infrastructure, and deployment scripts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 06:54:22 -05:00

71 lines
2.6 KiB
PL/PgSQL

-- 010_canada_crtc.sql
-- Canadian CRTC Telecom Carrier Package orders.
BEGIN;
CREATE TABLE IF NOT EXISTS canada_crtc_orders (
id SERIAL PRIMARY KEY,
order_number TEXT UNIQUE NOT NULL,
-- Customer
customer_name TEXT NOT NULL,
customer_email TEXT NOT NULL,
customer_phone TEXT,
customer_company TEXT,
-- Corporation details
company_type TEXT NOT NULL CHECK (company_type IN ('numbered', 'named')),
company_name_choice1 TEXT,
company_name_choice2 TEXT,
company_name_choice3 TEXT,
company_name_final TEXT,
bc_incorporation_number TEXT,
-- Director
director_name TEXT NOT NULL,
director_address TEXT NOT NULL,
director_citizenship TEXT,
-- Mailbox
mailbox_unit_number TEXT,
mailbox_address TEXT DEFAULT '329 Howe St, Vancouver, BC V6C 3N2',
mailbox_account_email TEXT,
-- Telecom details
services_description TEXT NOT NULL,
geographic_coverage TEXT DEFAULT 'Canada-wide',
include_bits BOOLEAN DEFAULT TRUE,
regulatory_contact_name TEXT,
regulatory_contact_email TEXT,
regulatory_contact_phone TEXT,
-- ID upload
id_upload_token TEXT,
id_verified BOOLEAN DEFAULT FALSE,
-- Pricing
service_fee_cents INTEGER DEFAULT 289900,
government_fee_cents INTEGER DEFAULT 38000,
discount_code TEXT,
discount_cents INTEGER DEFAULT 0,
total_cents INTEGER NOT NULL,
-- Fulfillment status
status TEXT DEFAULT 'received' CHECK (status IN (
'received', 'mailbox_setup', 'name_reservation', 'incorporation',
'crtc_letter', 'review', 'delivered', 'cancelled'
)),
automation_status TEXT DEFAULT 'pending',
automation_error TEXT,
-- Binder
binder_generated BOOLEAN DEFAULT FALSE,
binder_minio_path TEXT,
binder_shipped BOOLEAN DEFAULT FALSE,
binder_tracking_number TEXT,
binder_shipped_at TIMESTAMPTZ,
-- Subscription
subscription_id TEXT,
next_renewal_date DATE,
-- Timestamps
admin_notes TEXT,
created_at TIMESTAMPTZ DEFAULT now(),
delivered_at TIMESTAMPTZ
);
CREATE INDEX IF NOT EXISTS idx_crtc_orders_status ON canada_crtc_orders(status);
CREATE INDEX IF NOT EXISTS idx_crtc_orders_email ON canada_crtc_orders(customer_email);
CREATE INDEX IF NOT EXISTS idx_crtc_orders_number ON canada_crtc_orders(order_number);
COMMIT;