new-site/api/migrations/057_traffic_study_and_lnpa.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

86 lines
4.1 KiB
SQL

-- 057: Traffic study FCC compliance + LNPA region allocations
--
-- 2026 FCC Form 499-A Section IV.C.5.h: filers relying on a traffic study
-- must:
-- (a) Sample with 1% margin of error @ 95% confidence
-- (b) Submit the study to USAC alongside the 499-A filing
-- (c) Stamp every page with Filer ID + Company Name + Affiliated Filers Name
--
-- The existing cdr_traffic_studies table (migration 050) tracks studies
-- but lacks the FCC-compliance metadata (sample size, margin of error,
-- methodology narrative) and the stamped-PDF path + USAC submission ID.
-- Add them here.
--
-- Block 5 Lines 503-510 are percentage splits across 10 LNPA regions for
-- both Block 3 (resale) and Block 4 (end user) revenue. Must sum to 100%
-- per column (or 0% if no revenue in that block). Stored per
-- (entity, year, period, region).
-- ── Traffic study FCC-compliance metadata ───────────────────────────────
ALTER TABLE cdr_traffic_studies
ADD COLUMN IF NOT EXISTS methodology_narrative TEXT;
ALTER TABLE cdr_traffic_studies
ADD COLUMN IF NOT EXISTS sample_size INTEGER;
ALTER TABLE cdr_traffic_studies
ADD COLUMN IF NOT EXISTS margin_of_error_pct NUMERIC(4,2);
ALTER TABLE cdr_traffic_studies
ADD COLUMN IF NOT EXISTS confidence_level_pct NUMERIC(4,2) DEFAULT 95.0;
-- Stamped PDF (Filer ID + Company Name + Affiliated Filers Name on every page)
ALTER TABLE cdr_traffic_studies
ADD COLUMN IF NOT EXISTS stamped_pdf_minio_path TEXT;
-- USAC submission tracking
ALTER TABLE cdr_traffic_studies
ADD COLUMN IF NOT EXISTS usac_submitted_at TIMESTAMPTZ;
ALTER TABLE cdr_traffic_studies
ADD COLUMN IF NOT EXISTS usac_submission_id TEXT;
-- Computed flag — TRUE when sample_size + margin_of_error + methodology_narrative
-- + stamped_pdf_minio_path are all populated AND margin_of_error_pct ≤ 1.0
-- AND confidence_level_pct ≥ 95.0. Maintained in application code (not
-- generated column — we want explicit state).
ALTER TABLE cdr_traffic_studies
ADD COLUMN IF NOT EXISTS fcc_compliance_ok BOOLEAN DEFAULT FALSE;
-- ── LNPA region allocations (Block 5 Lines 503-510) ─────────────────────
-- The 10 NANPA/LNPA regions as defined by iconectiv NPAC. Stored per
-- reporting period so historical filings remain reconstructible.
CREATE TABLE IF NOT EXISTS lnpa_region_allocations (
id BIGSERIAL PRIMARY KEY,
telecom_entity_id INTEGER NOT NULL REFERENCES telecom_entities(id)
ON DELETE CASCADE,
reporting_year SMALLINT NOT NULL,
reporting_period TEXT NOT NULL DEFAULT 'annual'
CHECK (reporting_period IN ('annual','Q1','Q2','Q3','Q4')),
region_code TEXT NOT NULL CHECK (region_code IN (
'NE', -- Northeast: CT, MA, ME, NH, NY (parts), RI, VT
'MA', -- Mid-Atlantic: DC, DE, MD, NJ, PA, VA, WV
'SE', -- Southeast: AL, FL, GA, KY, MS, NC, SC, TN
'SC', -- Southern: AR, LA, NM, OK
'TX', -- Texas
'MW', -- Midwest: IL, IN, MI, OH, WI
'IA', -- Iowa / Plains: IA, KS, MN, MO, ND, NE, SD
'RM', -- Rocky Mountain: CO, MT, UT, WY, ID
'NW', -- Northwest: AK, OR, WA
'WC' -- West Coast: AZ, CA, HI, NV
)),
block_3_pct NUMERIC(5,2) NOT NULL DEFAULT 0 -- Lines 503-510 col (a)
CHECK (block_3_pct >= 0 AND block_3_pct <= 100),
block_4_pct NUMERIC(5,2) NOT NULL DEFAULT 0 -- Lines 503-510 col (b)
CHECK (block_4_pct >= 0 AND block_4_pct <= 100),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE (telecom_entity_id, reporting_year, reporting_period, region_code)
);
CREATE INDEX IF NOT EXISTS idx_lnpa_region_entity_year
ON lnpa_region_allocations (telecom_entity_id, reporting_year);
-- Validator: the 10 rows for a given (entity, year, period) must sum to
-- 100% per column (or 0% if no revenue in that block). Not enforced at
-- DB level — checked in application code before submission to USAC.