aeat.application.ledger._rule_repository module

Profile-scoped encrypted repository for ledger classification rules.

LedgerClassificationRule records are stored through SecureBoundRepository at the SensitivityClass declared by aeat.adapters.persistence.storage.LEDGER_CLASSIFICATION_RULES_NAMESPACE. The bound repository serialises each rule through an Envelope, so the stored rule pattern, actor, category, and classification stay encrypted at rest.

See also

LedgerClassificationRule

Content-addressed payload model persisted by this repository.

aeat.application.ledger.add_classification_rule()

Application entry point that creates and saves a rule.

aeat.application.ledger.apply_classification_rules()

Application entry point that evaluates persisted rules over active ledger transactions.

class LedgerClassificationRuleRepository(*, bucket_id=None, objects=None, settings=None)[source]

Bases: SecureBoundRepository[LedgerClassificationRule]

Encrypted profile-local store of LedgerClassificationRule payloads.

The namespace, sensitivity, schema version, and object-key contract come from aeat.adapters.persistence.storage.LEDGER_CLASSIFICATION_RULES_NAMESPACE. Rules are sorted by (priority, created_at) ascending so that lower-priority-number rules (higher precedence) are evaluated first. Among same-priority rules the earliest-created rule wins.

Parameters:
namespace: ClassVar[str]
sensitivity: ClassVar[SensitivityClass]
schema_version: ClassVar[int]
payload_type

alias of LedgerClassificationRule

extract_identifier(payload)[source]

Return the natural id for payload (used as the SQL object key).

Subclasses MUST override. The base implementation raises NotImplementedError.

Return type:

str

Parameters:

payload (LedgerClassificationRule)

list_rules()[source]

Return all stored rules in application order: (priority asc, created_at asc).

Each element is a LedgerClassificationRule.

Return type:

tuple[LedgerClassificationRule, ...]