fix(datetime): standardize Vietnam timezone and business dates
Summary
Standardize date and time handling across the backend using Asia/Ho_Chi_Minh as the business timezone.
Key Changes
- Introduced centralized business-time utilities using the IANA timezone.
- Changed Transaction
date, BudgetstartDate/endDate, and Saving GoaltargetDateto date-only values. - Changed absolute timestamp columns to PostgreSQL
TIMESTAMPTZ(3). - Made Budget
endDateinclusive. - Removed client-provided timezone offsets from report APIs.
- Resolved report boundaries using the Vietnam business timezone.
- Updated monthly and yearly reminder recurrence to preserve Vietnam wall-clock time.
- Made token expiration independent of the server timezone.
- Updated notification, AI context, seed data, and Swagger contracts.
API Changes
- Business dates now use
YYYY-MM-DD. - Report requests no longer accept
timezoneOffsetMinutes. - Report responses include
timeZone: "Asia/Ho_Chi_Minh". - Absolute datetimes continue using offset-aware ISO 8601 timestamps.
Database
Applied migration:
20260816090000_standardize_business_time
The migration:
- Converts business calendar fields to PostgreSQL
DATE. - Converts absolute timestamps to
TIMESTAMPTZ(3). - Preserves existing dates according to
Asia/Ho_Chi_Minh.
Seed data was successfully regenerated.