Add FCC Carrier/ISP Registration: API, checkout, handler, dispatch

Phase 3-5:
- API: POST /api/v1/fcc-carrier-registration (order creation with pricing)
- API: GET /api/v1/fcc-carrier-registration/:id (status)
- API: GET /api/v1/fcc-carrier-registration/state-fees (formation fees)
- Checkout: fcc_carrier_registration order type with Stripe line items
- Payment handler: dispatch worker + send confirmation email
- Pipeline handler: 8-step CRTC-style pipeline (formation → CORES → 499 →
  DC Agent → State PUC → RMD/CPNI/CALEA/BDC → add-ons → final review)
- Job server dispatch map entry
- Service page CTA updated to link to order page

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
justin 2026-04-29 08:48:36 -05:00
parent 830f5ae738
commit 2927b5cebb
7 changed files with 677 additions and 2 deletions

View file

@ -1681,6 +1681,24 @@ def handle_import_499a(payload: dict) -> dict:
return {"success": False, "error": str(exc)}
def handle_process_fcc_carrier_registration(payload: dict) -> dict:
"""Process an FCC Carrier / ISP Registration pipeline order."""
import asyncio
from scripts.workers.services.fcc_carrier_registration import FCCCarrierRegistrationHandler
order_number = payload.get("order_number", "")
LOG.info("Processing FCC carrier registration: %s", order_number)
handler = FCCCarrierRegistrationHandler()
loop = asyncio.new_event_loop()
try:
files = loop.run_until_complete(handler.process({"order_number": order_number}))
finally:
loop.close()
return {"action": "process_fcc_carrier_registration", "files": files}
JOB_HANDLERS = {
"name_search": handle_name_search,
"file_entity": handle_file_entity,
@ -1689,6 +1707,7 @@ JOB_HANDLERS = {
"deliver": handle_deliver,
"send_to_attorney": handle_send_to_attorney,
"process_compliance_service": handle_process_compliance_service,
"process_fcc_carrier_registration": handle_process_fcc_carrier_registration,
# Canada CRTC pipeline actions (dispatched by ERPNext webhooks)
"register_ca_domain": handle_register_ca_domain,
"register_awaiting_funds": handle_register_awaiting_funds,