mirror of
https://github.com/whekin/household-bot.git
synced 2026-03-31 21:24:04 +00:00
3.8 KiB
3.8 KiB
Mini App Admin Billing Controls
Summary
Allow household admins to manage billing-cycle configuration from the mini app: rent amount, reminder timing, utility timing, utility categories, and admin promotion.
Goals
- Let admins control billing settings without bot commands or Terraform edits.
- Persist household-level billing preferences in the database.
- Support configurable utility categories per household.
- Let admins promote other household members to admin from the mini app.
- Provide a stable API contract for future reminder and finance UI.
Non-goals
- Full accounting redesign.
- Per-member notification preferences.
- Utility OCR/import integrations.
- Member removal/deactivation in this slice.
Scope
- In: household billing settings persistence, utility category management, admin promotion, mini app admin endpoints/UI.
- Out: historical category migration tools, reminder delivery redesign, presence/day-based utility UI.
Interfaces and Contracts
- Mini app admin endpoints:
POST /api/miniapp/admin/settingsPOST /api/miniapp/admin/settings/updatePOST /api/miniapp/admin/utility-categories/upsertPOST /api/miniapp/admin/members/promote
- Admin-only mini app settings screen sections:
- Rent
- Utility categories
- Reminder timing
- Admins
Domain Rules
- Only active household admins may update household billing settings.
- Billing timing is household-scoped, not user-scoped.
- Utility categories are household-scoped and deterministic in display order.
- Promotion can only target active household members of the same household.
- At least one admin must remain in the household.
- Money remains stored in minor units only.
Data Model Changes
- Add
household_billing_settingsone-to-one table:household_idrent_currencyrent_amount_minornullable until configuredrent_due_dayrent_warning_dayutilities_due_dayutilities_reminder_daytimezone- timestamps
- Add
household_utility_categoriestable:household_idslugnamesort_orderis_active- timestamps
- Seed default categories for new and existing households:
internetgas_watercleaningelectricity
- Add nullable
utility_category_idtoutility_billsin a later follow-up if needed for entry-level classification.
Security and Privacy
- All endpoints require authenticated mini app sessions.
- All write endpoints require admin authorization from persisted membership.
- Promote-admin actions should be logged with actor and target IDs.
Observability
- Structured logs for settings updates, category writes, and admin promotion.
- Include
householdId,actorMemberId,targetMemberId, and changed fields.
Edge Cases and Failure Modes
- Invalid day values outside 1..31.
- Reminder day later than due day.
- Duplicate category slug in one household.
- Promote-admin target missing or already admin.
- Missing settings record for an existing household should auto-bootstrap defaults.
Test Plan
- Unit:
- settings validation rules
- category upsert ordering and duplicate handling
- admin promotion authorization
- Integration:
- DB adapter round-trips for settings and categories
- E2E:
- admin changes settings in mini app and sees persisted values on reload
Acceptance Criteria
- Admin can view and update household billing settings in the mini app.
- Admin can manage household utility categories in the mini app.
- Admin can promote an active member to admin in the mini app.
- Reminder timing values are persisted per household.
- Existing households auto-bootstrap sensible defaults.
Rollout Plan
- Add schema and repository support first.
- Ship read-only settings payload next.
- Enable admin writes after UI is wired.
- Keep bot command paths working during rollout.