Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-feedback/src/lexigram/ai/feedback/config.py: 94%
16 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
1"""Feedback configuration for Lexigram."""
3from __future__ import annotations
5from dataclasses import dataclass
6from typing import TYPE_CHECKING, ClassVar, cast
8from lexigram.ai.feedback import constants as const
9from lexigram.config import (
10 BaseConfig,
11)
12from lexigram.validation import ConfigDict, Field
14if TYPE_CHECKING:
15 from lexigram.contracts.core.config import ConfigIssue, Environment
18@dataclass(init=False)
19class FeedbackConfig(BaseConfig):
20 """Configuration for AI feedback collection.
22 Loaded from the ``ai_feedback:`` key in application.yaml, with environment
23 variable overrides via ``LEX_AI_FEEDBACK__*`` prefix.
24 """
26 config_section: ClassVar[str] = "ai_feedback"
28 model_config: ClassVar[ConfigDict] = cast(
29 "ConfigDict",
30 {
31 "env_prefix": const.ENV_PREFIX,
32 "env_nested_delimiter": const.ENV_NESTED_DELIMITER,
33 "extra": "ignore",
34 },
35 )
37 enabled: bool = Field(
38 default=True, description="Master on/off switch for all feedback collection"
39 )
40 async_processing: bool = Field(
41 default=True,
42 description="Process feedback handlers asynchronously in the background",
43 )
44 store_raw_payloads: bool = Field(
45 default=False,
46 description="Persist raw incoming feedback payloads for auditing",
47 )
49 def validate_for_environment(
50 self, env: Environment | None = None
51 ) -> list[ConfigIssue]:
52 """Check config is safe for the target environment."""
53 return []
56__all__ = ["FeedbackConfig"]