OPENENV_RL_01 / app /sector_profiles.py
Siddharaj Shirke
deploy: fresh snapshot to Hugging Face Space
3eae4cc
"""
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]