refactor(automations): park manual trigger pending Run-now redesign

Manual-as-a-standalone-trigger conflates "user clicks Run now" with the
trigger model and forces ad-hoc input plumbing on the caller. Remove the
unreachable surface so the tree reflects reality (schedule is the only
v1 trigger).

- Unregister `manual`: drop import from triggers/__init__.py
- Delete `app/automations/triggers/manual/`
- Drop `RunService.dispatch_manual` (RunService is now read-only)
- Drop `POST /automations/{id}/run` and `RunDispatched` schema
- Keep `TriggerType.MANUAL` Python + PG enum value (reserved, documented)
  to avoid an Alembic round-trip when Run-now is redesigned
This commit is contained in:
CREDO23 2026-05-27 22:29:51 +02:00
parent 8fb65d7188
commit c0232fdcfe
13 changed files with 18 additions and 176 deletions

View file

@ -1,4 +1,9 @@
"""Trigger-kind discriminator. v1: schedule | manual; webhook/event in Phase 2/3."""
"""Trigger-kind discriminator.
v1 only registers ``schedule``. ``manual`` is reserved in the enum (mirrors the
postgres enum) but is intentionally unregistered pending a redesign of the
"Run now" UX.
"""
from __future__ import annotations

View file

@ -56,7 +56,7 @@ class AutomationTrigger(BaseModel, TimestampMixin):
# Precomputed next fire moment in UTC; advanced after each fire by the
# schedule tick. NULL means the trigger has never been scheduled (the
# tick self-heals on first sight). Manual triggers leave this NULL.
# tick self-heals on first sight).
next_fire_at = Column(TIMESTAMP(timezone=True), nullable=True)
automation = relationship("Automation", back_populates="triggers")