๐Ÿ“– star365 Docs
โ† ๋ณด๊ณ ์„œ ๋ชฉ๋ก

Sprint Report โ€” ํ†ตํ•ฉ ํฌ์ธํŠธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ (Phase 1: API + ๋ฐฑํ•„)


1. ์‚ฌ์šฉ์ž ์š”๊ตฌ

finance์—์„œ 1๋งŒP ๋ฐ›์œผ๋ฉด shop์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ง„์งœ ํ†ตํ•ฉ ์ž”๊ณ 

2. Discovery ๊ฒฐ๊ณผ (ํ˜„ ์‹œ์Šคํ…œ)

DB point_accounts point_transactions ๋น„๊ณ 
medical_platform 17 44 ๐ŸŸข ๊ฐ€์žฅ ํ™œ์„ฑ
assistant_platform 4 10 ๐ŸŸก
legal_platform point_balances=3 4 ๐ŸŸก (์Šคํ‚ค๋งˆ ๋‹ค๋ฆ„)
finance_platform 2 2 ๐ŸŸก
pet_platform 0 0 โšช skip
hospital_db 0 0 โšช skip
shop_db (common) 0 0 โšช skip

ํ•ต์‹ฌ ๊ฐญ: unified_point_accounts ํ…Œ์ด๋ธ”์€ ์กด์žฌํ–ˆ์œผ๋‚˜ ๋…ธ์ถœ API ๋ถ€์žฌ. ์–ด๋–ค ํ”Œ๋žซํผ๋„ ํ˜ธ์ถœ ๋ถˆ๊ฐ€.

3. ์ฑ„ํƒ ์˜ต์…˜ (B): API-first + ๋ฐฑํ•„

์˜ต์…˜ ์‚ฌ์šฉ ๋ฆฌ์Šคํฌ
A. 7 ํ”Œ๋žซํผ ์ฝ”๋“œ hook ์ฃผ์ž… ๋ฏธ์ฑ„ํƒ 7 ๋ผ์ด๋ธŒ ์„œ๋น„์Šค ๋™์‹œ ๋ณ€๊ฒฝ = ํšŒ๊ท€ ๋ฆฌ์Šคํฌ
B. ์ค‘์•™ API ์‹ ๊ทœ + ๋ฐฑํ•„ โœ… ๋ฌด์ค‘๋‹จ, ์ฝ”๋“œ ๋ณ€๊ฒฝ 1 ํŒŒ์ผ(server.mjs)
C. View only ๋ฏธ์ฑ„ํƒ spend ๋ถˆ๊ฐ€

4. ์‚ฐ์ถœ๋ฌผ

4.1 ์ฝ”๋“œ ๋ณ€๊ฒฝ (1 ํŒŒ์ผ)

4.2 ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

4.3 ๋ฐฑ์—…

/opt/backups/2026-04-30-points-migration/ (180KB, 6 SQL dumps)

5. Done Criteria ๊ฒ€์ฆ (self-review)

# ๊ธฐ์ค€ ๊ฒฐ๊ณผ ์ฆ๊ฑฐ
1 /points/balance ์ž‘๋™ โœ… PASS samshin balance 200 ์‘๋‹ต, account_exists ์ •ํ™•
2 /points/earn ์ž‘๋™ โœ… PASS samshin 1๋งŒP โ†’ balance 10000
3 /points/earn ๋ฉฑ๋“ฑ์„ฑ โœ… PASS ๊ฐ™์€ idempotency_key ์žฌํ˜ธ์ถœ โ†’ idempotent_replay:true
4 /points/spend ์ž‘๋™ โœ… PASS shop 5000 spend โ†’ balance 5000
5 cross-platform spend โœ… PASS finance ์ ๋ฆฝ โ†’ SHOP/HOSPITAL spend ๊ฐ€๋Šฅ
6 insufficient balance ๊ฑฐ์ ˆ โœ… PASS 9999 ์š”์ฒญ / ์ž”๊ณ  3500 โ†’ 400 ๊ฑฐ์ ˆ
7 invalid platform ๊ฑฐ์ ˆ โœ… PASS 400 + allowed ๋ชฉ๋ก ๋ฐ˜ํ™˜
8 24 active accounts ๋ฐฑํ•„ โœ… PASS 24/24 ok, 0 errors
9 ๋ฉฑ๋“ฑ ๋ฐฑํ•„ (์žฌ์‹คํ–‰ ์‹œ) โœ… PASS ์žฌ์‹คํ–‰ 24/24 idempotent_replay
10 cross-platform ํ•ฉ์‚ฐ โœ… PASS eb9322@naver.com: assistant 5000 + hospital 5200 + legal 5000 = 15,200P
11 ๋ฌด์ค‘๋‹จ ๋ผ์ด๋ธŒ โœ… PASS systemd restart 1์ดˆ ๋ฏธ๋งŒ, /health 200
12 ํŠธ๋ ˆ์ด๋”ฉ/UFW ์˜ํ–ฅ 0 โœ… PASS star365-members.service ๋‹จ์ผ ์˜ํ–ฅ
13 ๋ฐฑ์—… ๋ณด๊ด€ โœ… PASS /opt/backups/2026-04-30-points-migration/ 6 dumps

13/13 PASS (100%)

6. ์‚ฐ์ˆ˜ ๊ฒ€์ฆ

platform EARN cnt EARN sum SPEND cnt SPEND sum
ASSISTANT 4 19,100 0 0
HOSPITAL 16 70,700 1 1,500
FINANCE 2 15,000 0 0
LEGAL 3 14,900 0 0
SHOP 0 0 1 5,000
ํ•ฉ๊ณ„ 25 119,700 2 6,500

7. samshin ์‚ฌ์šฉ์ž ์‹œ์—ฐ

EARN  +10,000 โ†’ 10,000 on FINANCE  | welcome bonus
SPEND  -5,000 โ†’  5,000 on SHOP     | shop purchase test
SPEND  -1,500 โ†’  3,500 on HOSPITAL | medical service test

์ตœ์ข… ์ž”๊ณ : 3,500P (lifetime_earned 10,000 / lifetime_spent 6,500). ์‚ฌ์šฉ์ž ์งˆ๋ฌธ "๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ๋ฐ›์€ ํฌ์ธํŠธ๋ฅผ ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉ"์— ์ •ํ™•ํžˆ ๋‹ตํ•˜๋Š” ๊ธฐ๋Šฅ ์ž‘๋™.

8. Out of Scope (์ด๋ฒˆ์— ์•ˆ ํ•จ, ๋ณ„๋„ sprint)

9. ๋‹ค์Œ ์•ก์…˜ (์ œ์•ˆ, ์‚ฌ์šฉ์ž ์Šน์ธ ํ•„์š”)

  1. ๊ฐ ํ”Œ๋žซํผ hook ์ฃผ์ž… โ€” finance/legal/assistant/medical ๊ฐ์ž ์ฝ”๋“œ์— POST /points/earn,spend ํ˜ธ์ถœ wire
  2. members.star365.site UI โ€” ํ†ตํ•ฉ ์ž”๊ณ  + ์ด๋ ฅ ํ™”๋ฉด ์ถ”๊ฐ€
  3. samshin ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ •๋ฆฌ โ€” welcome 1๋งŒP ๋ฐ spend 2๊ฑด์€ ์‹ค ๋ฐ์ดํ„ฐ ์•„๋‹˜. ์‚ฌ์šฉ์ž ๊ฒฐ์ • ํ•„์š”

10. ์œ„ํ—˜ / ์ž”์กด ์ด์Šˆ

# ํ•ญ๋ชฉ ์˜ํ–ฅ ๋Œ€์‘
1 ๋ฐฑํ•„์ด lifetime_earned์—๋งŒ ๋ˆ„์ , ์ž์ฒด plat์˜ lifetime_spent ๋ณ„๋„ ๋ณด์กด metadata ๊ธฐ๋ก source_lifetime_spent metadata ๋ณด๊ด€
2 medical_platform โ†’ HOSPITAL enum ๋งคํ•‘ (์ด๋ฆ„ ๋‹ค๋ฆ„) ๋งคํ•‘ ์ผ๊ด€์„ฑ PLATFORM_ENUM_MAP 17 ๋ณ„์นญ ๋“ฑ๋ก
3 ์ž์ฒด plat point_accounts ์ฝ”๋“œ๋Š” ์—ฌ์ „ํžˆ ์ž์ฒด ์ปฌ๋Ÿผ ์‚ฌ์šฉ dual reality ์ผ์‹œ์  ๋ณ„๋„ sprint๋กœ hook ์ฃผ์ž…
4 samshin "welcome 1๋งŒP" ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ž”์กด ์‹ค ์‚ฌ์šฉ์ž ์ž”๊ณ  ์˜ค์—ผ ์‚ฌ์šฉ์ž ์„ ํƒ: ์œ ์ง€ (์‹œ์—ฐ ์ฆ๊ฑฐ) vs ํ™˜์›

11. Files Changed Summary

M  /opt/star365-members/server.mjs              +99 lines (kahan)
+  /opt/backups/2026-04-30-points-migration/      6 SQL dumps
+  /opt/star365-hq/docs/01-plan/unified-points-migration-20260430.plan.md
+  /opt/star365-hq/docs/04-report/unified-points-migration-20260430.report.md
+  /tmp/backfill_runner.py (์žฌ์‹คํ–‰ ๊ฐ€๋Šฅ)

12. ํ‰๊ฐ€

๊ธฐ์ค€ ์ ์ˆ˜ ๋น„๊ณ 
product_depth 8/10 API 5๊ฐœ + ๋ฉฑ๋“ฑ์„ฑ + ์ž”๊ณ  ๊ฒ€์ฆ + ๋ฌด์ค‘๋‹จ. (-2) hook ๋ฏธ์ฃผ์ž… = ํ–ฅํ›„ ๋ณ€๊ฒฝ๋ถ„ ์ž๋™ sync ์•ˆ ๋จ
functionality 9/10 13/13 DC PASS. (-1) tier ์Šน๊ธ‰ ๋ฏธ๊ตฌํ˜„
code_quality 8/10 ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ + FOR UPDATE ์ž ๊ธˆ + ๋ฉฑ๋“ฑ์„ฑ + enum validation. (-2) ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ถ€์žฌ
design 8/10 ๊ธฐ์กด ์ธ์ฆ/์Šคํ‚ค๋งˆ/์ด๋ฒคํŠธ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ™•์žฅ. (-2) backfill API๋Š” admin only ํ‘œ์‹œ ์•ˆ ํ•จ

Overall: 8.25/10 โ†’ PASS


๋ณด๊ณ  ์™„๋ฃŒ. ์‚ฌ์šฉ์ž ํ›„์† ๊ฒฐ์ •์‚ฌํ•ญ: (a) samshin ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, (b) ๋‹ค์Œ sprint(ํ”Œ๋žซํผ hook ์ฃผ์ž…) ์šฐ์„ ์ˆœ์œ„.