mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-29 19:35:20 +02:00
feat(automation): scaffold isolated module structure
Create app/automations/ with the SRP-per-file / grouped-folders layout
that mirrors app/agents/multi_agent_chat/. Twelve __init__.py files,
each a thin re-export with a single-line docstring describing the
subpackage's role, no exports yet (filled in subsequent commits).
Tree:
app/automations/
├── persistence/
│ ├── enums/ (status / type enums; one per file)
│ └── models/ (SQLAlchemy tables; one per file)
├── schemas/
│ ├── definition/ (the JSON envelope, broken by concern)
│ ├── triggers/ (per-trigger config schemas)
│ └── actions/ (per-action config schemas)
└── registries/
├── capabilities/ (types.py + store.py)
├── actions/ (types.py + store.py)
└── triggers/ (types.py + store.py)
The persistence/ folder is named to avoid surfsense_backend/.gitignore's
data/ ignore rule, which silently masked the original data/ name and
its contents from version control.
Isolation invariant: the module imports only from app.db (foundational
Base + FK targets, unavoidable) and stdlib / SQLAlchemy / Pydantic.
No imports from app.agents.*, app.services.*, app.tasks.*, app.routes.*
or any other business-logic module. Confirmed importable with no side
effects.
This commit is contained in:
parent
db8c472664
commit
113748dfd5
12 changed files with 60 additions and 0 deletions
5
surfsense_backend/app/automations/__init__.py
Normal file
5
surfsense_backend/app/automations/__init__.py
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""Automations: scheduled / triggered runs of capabilities — see automation-design-plan.md."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""Persistence layer: SQLAlchemy enums under ``enums/`` and models under ``models/``."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""SQLAlchemy / Python enums backing the three automation tables."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""SQLAlchemy models: one file per table (``automation.py``, ``trigger.py``, ``run.py``)."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
5
surfsense_backend/app/automations/registries/__init__.py
Normal file
5
surfsense_backend/app/automations/registries/__init__.py
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""Three registries — ``capabilities/``, ``actions/``, ``triggers/`` — populated at import time."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""Action registry: ``types.py`` (dataclass), ``store.py`` (dict + register fn)."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""Capability registry: ``types.py`` (dataclass), ``store.py`` (dict + register fn)."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""Trigger registry: ``types.py`` (dataclass), ``store.py`` (dict + register fn)."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
5
surfsense_backend/app/automations/schemas/__init__.py
Normal file
5
surfsense_backend/app/automations/schemas/__init__.py
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""Pydantic schemas: definition envelope, trigger configs, action configs."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""Per-action config schemas: one file per action type registered in v1."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""Automation definition envelope: the editable structured spec users author and run."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
"""Per-trigger config schemas: one file per trigger type registered in v1."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
__all__: list[str] = []
|
||||||
Loading…
Add table
Add a link
Reference in a new issue