Coverage for src/lexigram/admin/config/observability.py: 18%
22 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:31 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:31 +0800
1"""Observability, storage, and notification configurations."""
3from __future__ import annotations
5from dataclasses import dataclass
7from lexigram.domain import DomainModel
8from lexigram.validation import Field
11@dataclass(init=False)
12class AdminObservabilityConfig(DomainModel):
13 metrics_enabled: bool = Field(default=True)
14 high_cardinality_labels_enabled: bool = Field(default=False)
17@dataclass(init=False)
18class AdminStorageConfig(DomainModel):
19 """Configuration for admin file storage service."""
21 base_path: str = Field(
22 default="uploads", description="Base path for uploaded files"
23 )
24 max_file_size: int = Field(
25 default=10 * 1024 * 1024,
26 description="Maximum allowed file size in bytes (default 10 MB)",
27 )
28 allowed_content_types: list[str] = Field(
29 default_factory=lambda: [
30 "image/jpeg",
31 "image/png",
32 "image/gif",
33 "image/webp",
34 "application/pdf",
35 "text/plain",
36 "text/csv",
37 ],
38 description="Allowed MIME content types for uploads",
39 )
40 presigned_url_expiry: int = Field(
41 default=3600,
42 description="Default expiry for presigned URLs in seconds",
43 )
46@dataclass(init=False)
47class AdminNotificationConfig(DomainModel):
48 """Configuration for admin notification service.
50 Controls email notification behaviour, delivery channels, and
51 retry settings.
52 """
54 email_from: str = Field(
55 default="admin@localhost", description="Sender email address"
56 )
57 email_from_name: str = Field(
58 default="Admin Panel", description="Sender display name"
59 )
60 default_channel: str = Field(
61 default="email", description="Default delivery channel"
62 )
63 max_retries: int = Field(default=3, description="Maximum delivery retry attempts")
64 retry_delay_seconds: int = Field(default=60, description="Seconds between retries")
65 enabled: bool = Field(default=True, description="Enable notification sending")