feat: manage owner usage history records
This commit is contained in:
@@ -6,7 +6,7 @@ TypeScript/Fastify API and PostgreSQL database layer for the current CONDO owner
|
||||
|
||||
- Database: existing `booking_test`.
|
||||
- Isolated schema: `condon`.
|
||||
- Migrations: `001_create_condon_schema`, `002_legacy_import_and_bookings`.
|
||||
- Migrations: `001_create_condon_schema`, `002_legacy_import_and_bookings`, `003_delete_usage_record`.
|
||||
- Reference data: 11 room types.
|
||||
- Imported latest `(2)` batch: 388 owners, 389 periods, 155 bookings, 157 usage records and 547 ledger rows.
|
||||
- Historical data import: `legacy-016dc36d15cc40a5` completed after local preflight and read-only verification.
|
||||
@@ -31,6 +31,7 @@ The database functions are:
|
||||
- `condon.open_entitlement_period`
|
||||
- `condon.create_usage_record`
|
||||
- `condon.create_usage_record_v2`
|
||||
- `condon.delete_usage_record`
|
||||
|
||||
`create_usage_record_v2` is the authoritative new-record write path. It calculates Night, Multiplier, Use and Balance, locks the entitlement period and writes the usage row, ledger row and new balance atomically. Historical rows use `legacy-source`, preserve source Use/Balance/Room/raw room type, and may have a null multiplier.
|
||||
|
||||
@@ -47,6 +48,7 @@ The database functions are:
|
||||
| GET | `/owner-accounts/:id` | Account detail and period balance |
|
||||
| GET | `/usage-records` | Searchable, paginated usage history |
|
||||
| POST | `/usage-records` | Transactional usage deduction |
|
||||
| DELETE | `/usage-records/:id` | Transactional usage deletion and balance restoration |
|
||||
| GET | `/dashboard` | Annual totals and room-type/month aggregates |
|
||||
|
||||
Runtime OpenAPI documentation is available at `/docs`.
|
||||
@@ -130,7 +132,7 @@ The database integration test covers all 100 automatic room-type combinations, b
|
||||
|
||||
## Rollback
|
||||
|
||||
The latest migration rollback is [002_legacy_import_and_bookings.down.sql](./migrations/002_legacy_import_and_bookings.down.sql). Do not run it after business data has been imported. The original empty-schema rollback remains [001_create_condon_schema.down.sql](./migrations/001_create_condon_schema.down.sql).
|
||||
The latest migration rollback is [003_delete_usage_record.down.sql](./migrations/003_delete_usage_record.down.sql). Do not run it after business data has been imported. The previous legacy rollback remains [002_legacy_import_and_bookings.down.sql](./migrations/002_legacy_import_and_bookings.down.sql), and the original empty-schema rollback remains [001_create_condon_schema.down.sql](./migrations/001_create_condon_schema.down.sql).
|
||||
|
||||
Do not run rollback after business data has been imported. Rollback is an explicit operator action and is not exposed as a normal npm command.
|
||||
|
||||
@@ -139,5 +141,5 @@ Do not run rollback after business data has been imported. Rollback is an explic
|
||||
- Importing a newer workbook without a new preflight batch.
|
||||
- Switching the static frontend to the API.
|
||||
- Multi-user identities, roles and backend-restart-persistent sessions.
|
||||
- Usage cancellation, reversal and manual balance adjustment.
|
||||
- Manual balance adjustment.
|
||||
- Cross-entitlement-year stays.
|
||||
|
||||
Reference in New Issue
Block a user