mirror of
https://github.com/whekin/household-bot.git
synced 2026-03-31 17:44:03 +00:00
49 lines
1.6 KiB
Markdown
49 lines
1.6 KiB
Markdown
# HOUSEBOT-077 Custom Rent Split Weights
|
|
|
|
## Summary
|
|
|
|
Support unequal room rents by storing a deterministic rent-share weight per active household member and using those weights in monthly settlement calculations.
|
|
|
|
## Goals
|
|
|
|
- Preserve equal split as the default when all member weights are `1`.
|
|
- Allow household admins to edit per-member rent weights from the mini app.
|
|
- Keep settlement math deterministic and money-safe.
|
|
- Reflect weighted rent shares consistently in statements and dashboard views.
|
|
|
|
## Non-goals
|
|
|
|
- Per-cycle rent weights.
|
|
- Free-form percentage editing.
|
|
- Automatic square-meter or room-type calculations.
|
|
|
|
## Scope
|
|
|
|
- In: member-level `rentShareWeight`, settlement-engine support, admin API/UI, tests.
|
|
- Out: historical backfill UI, move-in/move-out proration logic, rent history analytics.
|
|
|
|
## Data Model Changes
|
|
|
|
- Add `members.rent_share_weight integer not null default 1`.
|
|
- Existing members migrate to `1`.
|
|
|
|
## Domain Rules
|
|
|
|
- Rent weights must be positive integers.
|
|
- Active members participate in rent splitting according to their weight.
|
|
- Utility splitting remains independent from rent splitting.
|
|
- The same input must always produce the same minor-unit allocation.
|
|
|
|
## Interfaces
|
|
|
|
- Household admin mini app payload includes member `rentShareWeight`.
|
|
- Admin write endpoint updates one member rent weight at a time.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [ ] Settlement engine uses weighted rent shares.
|
|
- [ ] Equal split still holds when all weights are `1`.
|
|
- [ ] Admins can edit member rent weights in the mini app.
|
|
- [ ] Dashboard and statements reflect the new rent shares.
|
|
- [ ] Validation rejects zero or negative weights.
|