Jun 29 - Update: Fail2ban, welcome email, dunning sequence, escalation

This commit is contained in:
2026-06-29 13:47:57 -04:00
parent c133b5d419
commit b00bbba2da
14 changed files with 414 additions and 1 deletions
+5
View File
@@ -113,6 +113,11 @@ class Tenant(ControlBase):
current_period_end = Column(DateTime, nullable=True)
billing_email = Column(String(255), nullable=True)
# ── Dunning (payment failure reminders) ────────────────────────────────
past_due_since = Column(DateTime, nullable=True) # set when payment first fails
dunning_stage = Column(Integer, nullable=False, default=0) # 0=none 1=day3 2=day7 3=day14
dunning_sent_at = Column(DateTime, nullable=True) # last dunning email timestamp
plan = relationship('Plan', back_populates='tenants')
domains = relationship('TenantDomain', back_populates='tenant',
cascade='all, delete-orphan')