fix(schema): 입금자명 길이 제한 50자 → 15자로 조정

근거:
- SMS 입금자명: 한글 7자 제한 (은행 시스템)
- 사용자 수동 입력: 15자로 충분한 여유
- 매칭 로직: 앞 7자만 사용

변경사항:
- CHECK (length(depositor_name) <= 50) → 15
- 데이터 복원 시 truncate: 50자 → 15자
- SCHEMA_MIGRATION_GUIDE.md 업데이트
- MIGRATION_SUMMARY.md 업데이트

로컬 테스트 결과:
-  15자 이하: 정상 입력
  - 숫자 15자: "123456789012345" ✓
  - 한글 15자: "홍길동아버지어머니할머님고모고" ✓
-  16자 이상: 거부됨
  - 숫자 16자: "1234567890123456" ✗ (CHECK 제약조건)
  - 한글 16자: "홍길동아버지어머니할머님고모고모" ✗ (CHECK 제약조건)

실용성:
- SMS 7자 보장 + 사용자 입력 여유
- 불필요한 긴 이름 방지
- 매칭 로직과 완벽 호환

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
kappa
2026-01-19 16:02:18 +09:00
parent 04dcb57fae
commit 4a0499890a
3 changed files with 16 additions and 16 deletions

View File

@@ -59,7 +59,7 @@ CREATE TABLE deposit_transactions (
type TEXT NOT NULL CHECK(type IN ('deposit', 'withdrawal', 'refund')),
amount INTEGER NOT NULL,
status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending', 'confirmed', 'rejected', 'cancelled')),
depositor_name TEXT CHECK (length(depositor_name) <= 50),
depositor_name TEXT CHECK (length(depositor_name) <= 15),
description TEXT,
confirmed_at DATETIME,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
@@ -78,7 +78,7 @@ SELECT
status,
CASE
WHEN depositor_name IS NULL THEN NULL
WHEN length(depositor_name) > 50 THEN substr(depositor_name, 1, 50)
WHEN length(depositor_name) > 15 THEN substr(depositor_name, 1, 15)
ELSE depositor_name
END as depositor_name,
description,
@@ -89,7 +89,7 @@ FROM deposit_transactions_backup;
-- 2.5 Log truncated records (if any)
SELECT 'TRUNCATED DEPOSITOR NAME:' as warning, id, depositor_name, length(depositor_name) as original_length
FROM deposit_transactions_backup
WHERE depositor_name IS NOT NULL AND length(depositor_name) > 50;
WHERE depositor_name IS NOT NULL AND length(depositor_name) > 15;
-- 2.6 Drop backup table
DROP TABLE deposit_transactions_backup;