| Track | ๊ฒฐ๊ณผ | ํต์ฌ ์ฐ์ถ |
|---|---|---|
| A: ๋ง๋ฃ ์ฒ๋ฆฌ | โ | point_transactions.expires_at + 7 platform expiration_days=365 + cron 04:00 KST + 55 backfill |
| B: pet/shop readiness | โ | dist signup hook ์ธ์ ์ + ecosystem POINT_SERVICE_URL/KAHAN env. 6/7 platform ์๋ํ (kahan์ ์์ฒด) |
| C: Outbox/Retry queue | โ | points_outbox table + pointsProxyWithOutbox + drain endpoint + cron */5min + exponential backoff |
| D: signup โ cross-platform ๋งคํ | โ | platform_memberships.is_shadow + /register์ SPRINT5_XPLAT_SHADOW ๋ก์ง: ์ ๊ท ๊ฐ์ ์ ๋ค๋ฅธ 6 platform shadow ์๋ ์์ฑ |
| E: TS rebuild ํ์ผ๋ฟ | โ +myth | "3990 |
| ์ด์ ๊ฐ์ | ์ค์ |
|---|---|
| 4 platform ๊ฐ 3990~22685 TS errors | sprint #2 misplaced hook 7~10๊ฑด errors๋ง |
| TS source rebuild ๋ถ๊ฐ (์์ผ ์์ ) | npx tsc --noEmit 0 errors PASS (15๋ถ ์์ ) |
| ๋ถ์ฑ ์ ๋ฆฌ = ๋ค์ ๋ํ sprint ํ์ | ๋ฐฑ์ ๋ณต์ + ์ ๋ฆฌ๋ก ์ฆ์ ํด๊ฒฐ |
โ "๊ฑฐ๋ ๋ถ์ฑ" ์ธ์์ด sprint #4๊น์ง ์๋ชป๋ ๊ฐ์ . ์ค์ build๋ ๊ฐ๋ฅ.
| # | ๊ธฐ์ค | ๊ฒฐ๊ณผ |
|---|---|---|
| 1 | 6 platform PM2 online + KAHAN env | โ all True |
| 2 | 6 dist signup hook markers | โ all 2 markers |
| 3 | 4 source npx tsc 0 errors | โ all 0 |
| 4 | point_transactions.expires_at ์ปฌ๋ผ | โ + idx |
| 5 | 7 platform expiration_days=365 ์ ์ฑ | โ |
| 6 | 55 EARN ํธ๋์ญ์ expires_at ๋ฐฑํ | โ |
| 7 | points_expiration.py + cron 04:00 | โ |
| 8 | points_outbox ํ ์ด๋ธ + GRANT | โ |
| 9 | pointsProxyWithOutbox 5xx โ outbox | โ E2E PASS |
| 10 | drain endpoint (admin-key) | โ +50P drained โ eb9322 16800โ16850 |
| 11 | drain cron */5 | โ |
| 12 | platform_memberships.is_shadow | โ |
| 13 | /register โ 7 platform shadow ์๋ | โ E2E PASS (1 real + 6 shadow) |
| 14 | TS source 4/4 0 errors | โ |
| 15 | dist hooks ๊ทธ๋๋ก ๋ณด์กด | โ markers 6/3/6/6 |
| ํญ๋ชฉ | ์์ | ํ์ฌ |
|---|---|---|
| unified_point_accounts | 22 accounts | 46 accounts |
| ์ด ์๊ณ | 219,850P | 336,700P |
| 6 platform ์๋ earn/spend โ unified | โ | โ |
| 6 platform ์๋ signup โ ํตํฉ ๋ฑ๋ก | โ | โ |
| ์ ๊ท ๊ฐ์ โ 7 platform shadow membership | โ | โ |
| Hospital crash loop | 220+/min | โ restarts=0 |
| Reconciliation cron */15 | โ | โ |
| Tier ์๋ ์น๊ธ cron daily | โ | โ |
| ํฌ์ธํธ ๋ง๋ฃ cron daily | โ | โ |
| Outbox/retry queue + drain cron */5 | โ | โ |
| TS source build (4 platform) | ๋ถ์ฑ ์ถ์ | โ 0 errors |
| ํตํฉ ์๊ณ UI (๋ชจ๋ฐ์ผ+tier) | โ | โ |
| UFW ๋ฌด๋ณ๊ฒฝ (CLAUDE.md ์์ ์ฅ์น) | โ | โ |
| ๊ธฐ์ค | ์ ์ |
|---|---|
| product_depth | 9/10 (5 ํธ๋ ์ฐ์ถ + myth busting) |
| functionality | 9/10 (E2E ๋ชจ๋ PASS) |
| code_quality | 8/10 (dist ์ง์ ํจ์น๋ ์์) |
| design | 9/10 (outbox + shadow + expiration + cron ์๋ํ) |
| Overall | 8.75/10 โ PASS |
+ /opt/star365-hq/scripts/points_expiration.py
+ /opt/star365-hub PG: points_outbox table + GRANT
+ paperclip:5432 gunja_news: point_transactions.expires_at + idx + platform_point_policiesร7 + 55 backfill
+ paperclip:5432 gunja_news: platform_memberships.is_shadow column
M /opt/star365-members/server.mjs (+15 lines: SPRINT5_XPLAT_SHADOW)
M /opt/star365-hq/api/server.mjs (+60 lines: pointsProxyWithOutbox + drain + outboxPool)
M /opt/star365-hq/api service: HUB_ADMIN_KEY env ์ถ๊ฐ
M /opt/pet/apps/api-gateway/dist/.../auth/auth.service.js (+13 signup hook)
M /opt/shop/apps/api/dist/.../auth/auth.service.js (+13 signup hook)
M /opt/pet/ecosystem.config.js (POINT_SERVICE_URLโapi.star365 + KAHAN env)
M /opt/shop/ecosystem.config.js (๋์ผ)
M /opt/{finance,legal,assistant,hospital}/apps/api-gateway/src/.../points*.ts (Sprint #2 misplaced hooks ์ ๊ฑฐ โ 0 errors)
+ cron: points_expiration 04:00 + outbox drain */5