""" sector_profiles.py — Phase 2 update: enrichment type, probability, delay range per service. """ from app.models import ( DocEnrichmentType, SectorProfile, ServiceType, UrgencyProfile ) INCOME_CERTIFICATE_PROFILE = SectorProfile( service_type=ServiceType.INCOME_CERTIFICATE, sector_name="Revenue Sector — Income Certificate", missing_docs_probability=0.45, doc_defect_rate_digital=0.30, doc_defect_rate_paper=0.65, field_verification_probability=0.30, manual_scrutiny_intensity=0.60, decision_backlog_sensitivity=0.70, system_dependency_risk=0.20, sla_days=21, urgency_profile=UrgencyProfile.MODERATE, base_processing_rate=8.0, field_verification_days=3, doc_enrichment_type=DocEnrichmentType.NONE, doc_enrichment_probability=0.0, doc_enrichment_delay_days_min=1, doc_enrichment_delay_days_max=2, ) LAND_REGISTRATION_PROFILE = SectorProfile( service_type=ServiceType.LAND_REGISTRATION, sector_name="Land Sector — 7/12 Mutation", missing_docs_probability=0.35, doc_defect_rate_digital=0.25, doc_defect_rate_paper=0.55, field_verification_probability=0.65, manual_scrutiny_intensity=0.75, decision_backlog_sensitivity=0.85, system_dependency_risk=0.55, sla_days=30, urgency_profile=UrgencyProfile.LOW_BUT_STICKY, base_processing_rate=4.0, field_verification_days=5, doc_enrichment_type=DocEnrichmentType.PAST_LAND_RECORDS, doc_enrichment_probability=0.70, doc_enrichment_delay_days_min=2, doc_enrichment_delay_days_max=5, # REVENUE_DB_DELAY event adds 1-2 more ) CASTE_CERTIFICATE_PROFILE = SectorProfile( service_type=ServiceType.CASTE_CERTIFICATE, sector_name="Revenue Sector — Caste Certificate", missing_docs_probability=0.40, doc_defect_rate_digital=0.25, doc_defect_rate_paper=0.60, field_verification_probability=0.35, manual_scrutiny_intensity=0.65, decision_backlog_sensitivity=0.65, system_dependency_risk=0.25, sla_days=21, urgency_profile=UrgencyProfile.MODERATE, base_processing_rate=7.0, field_verification_days=3, doc_enrichment_type=DocEnrichmentType.FAMILY_CASTE_HISTORY, doc_enrichment_probability=0.55, doc_enrichment_delay_days_min=2, doc_enrichment_delay_days_max=4, ) BIRTH_CERTIFICATE_PROFILE = SectorProfile( service_type=ServiceType.BIRTH_CERTIFICATE, sector_name="Municipal Sector — Birth Certificate", missing_docs_probability=0.20, doc_defect_rate_digital=0.15, doc_defect_rate_paper=0.35, field_verification_probability=0.05, manual_scrutiny_intensity=0.30, decision_backlog_sensitivity=0.40, system_dependency_risk=0.30, sla_days=7, urgency_profile=UrgencyProfile.HIGH, base_processing_rate=15.0, field_verification_days=1, doc_enrichment_type=DocEnrichmentType.NONE, doc_enrichment_probability=0.0, doc_enrichment_delay_days_min=1, doc_enrichment_delay_days_max=1, ) PASSPORT_PROFILE = SectorProfile( service_type=ServiceType.PASSPORT, sector_name="National Sector — Passport", missing_docs_probability=0.25, doc_defect_rate_digital=0.20, doc_defect_rate_paper=0.50, field_verification_probability=0.90, manual_scrutiny_intensity=0.80, decision_backlog_sensitivity=0.75, system_dependency_risk=0.35, sla_days=30, urgency_profile=UrgencyProfile.HIGH, base_processing_rate=5.0, field_verification_days=14, doc_enrichment_type=DocEnrichmentType.POLICE_VERIFICATION, doc_enrichment_probability=0.85, doc_enrichment_delay_days_min=7, doc_enrichment_delay_days_max=14, ) GST_REGISTRATION_PROFILE = SectorProfile( service_type=ServiceType.GST_REGISTRATION, sector_name="Tax Sector — GST Registration", missing_docs_probability=0.30, doc_defect_rate_digital=0.20, doc_defect_rate_paper=0.50, field_verification_probability=0.20, manual_scrutiny_intensity=0.55, decision_backlog_sensitivity=0.60, system_dependency_risk=0.45, sla_days=7, urgency_profile=UrgencyProfile.HIGH, base_processing_rate=10.0, field_verification_days=2, doc_enrichment_type=DocEnrichmentType.TAX_RECORD_CROSS_CHECK, doc_enrichment_probability=0.50, doc_enrichment_delay_days_min=1, doc_enrichment_delay_days_max=3, ) DRIVING_LICENSE_PROFILE = SectorProfile( service_type=ServiceType.DRIVING_LICENSE, sector_name="Transport Sector — Driving License", missing_docs_probability=0.28, doc_defect_rate_digital=0.18, doc_defect_rate_paper=0.45, field_verification_probability=0.40, manual_scrutiny_intensity=0.50, decision_backlog_sensitivity=0.55, system_dependency_risk=0.30, sla_days=14, urgency_profile=UrgencyProfile.MODERATE, base_processing_rate=12.0, field_verification_days=2, doc_enrichment_type=DocEnrichmentType.NONE, doc_enrichment_probability=0.0, doc_enrichment_delay_days_min=1, doc_enrichment_delay_days_max=1, ) AADHAAR_CARD_PROFILE = SectorProfile( service_type=ServiceType.AADHAAR_CARD, sector_name="National Identity Sector - Aadhaar Card", missing_docs_probability=0.22, doc_defect_rate_digital=0.12, doc_defect_rate_paper=0.30, field_verification_probability=0.18, manual_scrutiny_intensity=0.42, decision_backlog_sensitivity=0.50, system_dependency_risk=0.38, sla_days=10, urgency_profile=UrgencyProfile.HIGH, base_processing_rate=13.0, field_verification_days=2, doc_enrichment_type=DocEnrichmentType.NONE, doc_enrichment_probability=0.0, doc_enrichment_delay_days_min=1, doc_enrichment_delay_days_max=2, ) SECTOR_REGISTRY: dict = { ServiceType.INCOME_CERTIFICATE: INCOME_CERTIFICATE_PROFILE, ServiceType.LAND_REGISTRATION: LAND_REGISTRATION_PROFILE, ServiceType.CASTE_CERTIFICATE: CASTE_CERTIFICATE_PROFILE, ServiceType.BIRTH_CERTIFICATE: BIRTH_CERTIFICATE_PROFILE, ServiceType.PASSPORT: PASSPORT_PROFILE, ServiceType.GST_REGISTRATION: GST_REGISTRATION_PROFILE, ServiceType.DRIVING_LICENSE: DRIVING_LICENSE_PROFILE, ServiceType.AADHAAR_CARD: AADHAAR_CARD_PROFILE, } def get_sector_profile(service_type: ServiceType) -> SectorProfile: if service_type not in SECTOR_REGISTRY: raise KeyError(f"No SectorProfile for {service_type}") return SECTOR_REGISTRY[service_type]