"""Domain-specific constants.

Meeting defaults, export formats, NER models, rules schema, triggers, and providers.
"""

from typing import Final, Literal

# =============================================================================
# Meeting Defaults
# =============================================================================

DEFAULT_MEETING_TITLE: Final[str] = "Untitled"
"""Default title for meetings without an explicit title."""

MEETING_TITLE_PREFIX: Final[str] = "Meeting "
"""Prefix for auto-generated meeting titles."""

# =============================================================================
# Export Formats
# =============================================================================

EXPORT_FORMAT_HTML: Final[str] = "HTML"
"""HTML export format display name."""

EXPORT_EXT_HTML: Final[str] = ".html"
"""HTML file extension."""

EXPORT_EXT_PDF: Final[str] = ".pdf"
"""PDF file extension."""

# =============================================================================
# NER / spaCy Models
# =============================================================================

SPACY_MODEL_SM: Final[str] = "en_core_web_sm"
"""Small English spaCy model for NER."""

SPACY_MODEL_MD: Final[str] = "en_core_web_md"
"""Medium English spaCy model for NER."""

SPACY_MODEL_LG: Final[str] = "en_core_web_lg"
"""Large English spaCy model for NER."""

SPACY_MODEL_TRF: Final[str] = "en_core_web_trf"
"""Transformer-based English spaCy model for NER."""

# =============================================================================
# Provider Names
# =============================================================================

PROVIDER_NAME_OPENAI: Final[str] = "openai"
"""OpenAI provider name."""

# =============================================================================
# Feature Names & Status
# =============================================================================

FEATURE_NAME_PROJECTS: Final[str] = "Projects"
"""Feature name for projects in error messages."""

STATUS_DISABLED: Final[str] = "Disabled"
"""Status message for disabled features."""

# =============================================================================
# Settings Field Names
# =============================================================================

SETTING_CLOUD_CONSENT_GRANTED: Final[str] = "cloud_consent_granted"
"""Settings field name for cloud consent granted."""

# =============================================================================
# Trigger Actions
# =============================================================================

TRIGGER_ACTION_IGNORE: Final[Literal["ignore"]] = "ignore"
"""Trigger action value for ignore."""

# =============================================================================
# Rule Schema Field Names
# =============================================================================

RULE_FIELD_DEFAULT_FORMAT: Final[str] = "default_format"
"""Rule schema field name for default format."""

RULE_FIELD_INCLUDE_AUDIO: Final[str] = "include_audio"
"""Rule schema field name for include audio."""

RULE_FIELD_INCLUDE_TIMESTAMPS: Final[str] = "include_timestamps"
"""Rule schema field name for include timestamps."""

RULE_FIELD_TEMPLATE_ID: Final[str] = "template_id"
"""Rule schema field name for template ID."""

RULE_FIELD_AUTO_START_ENABLED: Final[str] = "auto_start_enabled"
"""Rule schema field name for auto start enabled."""

RULE_FIELD_DESCRIPTION: Final[str] = "description"
"""Rule schema field name for description."""

RULE_FIELD_EXPORT_RULES: Final[str] = "export_rules"
"""Rule schema field name for export rules."""

RULE_FIELD_TRIGGER_RULES: Final[str] = "trigger_rules"
"""Rule schema field name for trigger rules."""

RULE_FIELD_CALENDAR_MATCH_PATTERNS: Final[str] = "calendar_match_patterns"
"""Rule schema field name for calendar match patterns."""

RULE_FIELD_APP_MATCH_PATTERNS: Final[str] = "app_match_patterns"
"""Rule schema field name for app match patterns."""

# =============================================================================
# JSON Schema Type Names
# =============================================================================

SCHEMA_TYPE_STRING: Final[str] = "string"
"""JSON schema type name for string."""

SCHEMA_TYPE_BOOLEAN: Final[str] = "boolean"
"""JSON schema type name for boolean."""

SCHEMA_TYPE_ARRAY_ITEMS: Final[str] = "items"
"""JSON schema type name for array items."""
