rules

package
v0.0.0-...-2bd5d0f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 4, 2026 License: AGPL-3.0 Imports: 15 Imported by: 0

Documentation

Overview

Package rules provides Expensor rule document, fixture, and merge utilities.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LoadPersisted

func LoadPersisted(ctx context.Context, st PersistedStore, tenant store.Tenant, logger *slog.Logger) []api.Rule

LoadPersisted compiles tenant-created rules, logging and skipping invalid rows.

func MergeRules

func MergeRules(system, user []api.Rule) []api.Rule

MergeRules combines system and user rules. A user rule with the same Name as a system rule completely replaces it. User-only rules are appended at the end. Order within each group is preserved.

Types

type Document

type Document struct {
	Version int
	Presets Presets
	Rules   []api.Rule
}

Document is the versioned rules.json shape.

func ParseDocument

func ParseDocument(body []byte) (*Document, error)

ParseDocument parses versioned v2 rules and the legacy array format.

type EmailFixture

type EmailFixture struct {
	TestName string                  `yaml:"-"`
	Rule     string                  `yaml:"rule"`
	Sender   string                  `yaml:"sender"`
	Subject  string                  `yaml:"subject"`
	Body     string                  `yaml:"-"`
	Expected EmailFixtureExpectation `yaml:"expected"`
}

EmailFixture is one positive email example for one rule. The rule regexes are intentionally not part of the fixture; tests load those from rules.json.

func LoadEmailFixtures

func LoadEmailFixtures(dir string) ([]EmailFixture, error)

LoadEmailFixtures discovers rule-email fixtures from dir and returns them sorted by filename.

type EmailFixtureExpectation

type EmailFixtureExpectation struct {
	Amount   float64 `yaml:"amount"`
	Merchant string  `yaml:"merchant"`
	Currency string  `yaml:"currency"`
}

EmailFixtureExpectation is the extraction result expected from a fixture.

type PersistedStore

type PersistedStore interface {
	ListRules(ctx context.Context, tenant store.Tenant) ([]store.RuleRow, error)
}

PersistedStore provides the tenant rule rows needed by LoadPersisted.

type PresetValue

type PresetValue struct {
	Value  string `json:"value"`
	Origin string `json:"origin"`
}

PresetValue identifies whether a taxonomy value is shipped or user-created.

type Presets

type Presets struct {
	SourceTypes []PresetValue `json:"source_types"`
	Banks       []PresetValue `json:"banks"`
}

Presets lists source taxonomy values shown by rule authoring UIs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL