PR 6: Database migration validation - fresh/upgrade test complete

 Database Setup:
- Created PostgreSQL kartselldb with kartsell user
- SSH port forward established (localhost:5432 → 178.104.200.7:5432)

 DbMigrator Fixes:
- Fixed migration path discovery (AppContext.BaseDirectory fallback)
- Added empty variable dictionary to suppress DbUp preprocessing
- Fixed PostgreSQL dollar quoting conflict ($policy$ → $$)

 Migration Results:
- All 21 migrations executed successfully
- Schema versions journal created and tracked
- 21 scripts processed in order, no rollback needed

Status: FRESH DATABASE DEPLOYMENT SUCCESSFUL
- kartselldb fully initialized with v16 schema
- Ready for application startup

Next: Deploy application and run integration tests

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-08-02 06:45:20 +09:00
parent fc39c8d4bf
commit 3b76070394
135 changed files with 6673 additions and 2 deletions
@@ -0,0 +1,23 @@
export function formatCurrency(value, currency, locale = 'ko-KR') {
if (value == null || Number.isNaN(value))
return '—';
return new Intl.NumberFormat(locale, { style: 'currency', currency, maximumFractionDigits: 2 }).format(value);
}
export function formatPercent(value, digits = 2, locale = 'ko-KR') {
if (value == null || Number.isNaN(value))
return '—';
return new Intl.NumberFormat(locale, { style: 'percent', minimumFractionDigits: digits, maximumFractionDigits: digits }).format(value);
}
export function formatQuantity(value, digits = 4, locale = 'ko-KR') {
if (value == null || Number.isNaN(value))
return '—';
return new Intl.NumberFormat(locale, { maximumFractionDigits: digits }).format(value);
}
export function formatAsOf(value, locale = 'ko-KR') {
if (!value)
return '—';
const date = value instanceof Date ? value : new Date(value);
if (Number.isNaN(date.getTime()))
return '—';
return new Intl.DateTimeFormat(locale, { dateStyle: 'medium', timeStyle: 'short', timeZone: 'Asia/Seoul' }).format(date);
}
@@ -0,0 +1,7 @@
import { describe, expect, it } from 'vitest';
import { formatCurrency, formatPercent, formatQuantity } from '../financial';
describe('financial formatters', () => {
it('renders missing values as an explicit em dash', () => { expect(formatCurrency(null, 'KRW')).toBe('—'); expect(formatPercent(undefined)).toBe('—'); });
it('keeps percentage inputs in decimal-return units', () => { expect(formatPercent(0.125, 1)).toContain('12.5'); });
it('uses bounded quantity precision', () => { expect(formatQuantity(1.234567, 2)).toContain('1.23'); });
});