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

Sprint #3 Report โ€” ํ†ตํ•ฉ ํฌ์ธํŠธ ํ›„์† 4 ํŠธ๋ž™ ๋ณ‘๋ ฌ

๊ฒฐ์ •์  ๋ฐœ๊ฒฌ (turning point)

Sprint #2์˜ "4 ํ”Œ๋žซํผ hook ์ ์šฉ"์ด ์‹ค์€ silent fail์ด์—ˆ์Œ. hospitalโ†’kahan:3720 TCP ์ฐจ๋‹จ (UFW)๋กœ ๋ชจ๋“  callCentralApi๊ฐ€ timeout โ†’ catch โ†’ local fallback. Sprint #3์—์„œ api.star365.site (public HTTPS) ํ”„๋ก์‹œ๋กœ ์šฐํšŒ.

Track A: Hospital crash loop ๊ทผ๋ณธํ•ด๊ฒฐ โœ…

๋‘ ์‚ฌ์ „ issue ๋™์‹œ ์ง„๋‹จ + ํ•ด๊ฒฐ

  1. Redis ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ถˆ์ผ์น˜ โ€” /opt/hospital/.env REDIS_URL์ด ์˜› ๋น„๋ฐ€๋ฒˆํ˜ธ ์‚ฌ์šฉ โ†’ WRONGPASS
    • ์ •์ •: pHrmaSp4IaQRtP7ChzDAdVYYdyTyTqgh (ecosystem.config.js์™€ ์ผ์น˜)
  2. Docker-proxy 5440 ๋ˆ„๋ฝ โ€” starium_postgres host port ๋งคํ•‘ ์ฃฝ์–ด์žˆ์Œ (๋‹ค๋ฅธ 5434/5435/5437/5438/5439๋Š” ์ •์ƒ)
    • ํ•ด๊ฒฐ: docker restart starium_postgres (5์ดˆ ๋‹ค์šด, finance/legal/assistant/medical ๋ชจ๋‘ ์˜ํ–ฅ, ์ž๋™ ํšŒ๋ณต)

๊ฒฐ๊ณผ: hospital-api restarts=0 ์•ˆ์ • (์ด์ „ 220+ crash loop). hospital spend hook๋„ ์žฌ์ ์šฉ ๊ฐ€๋Šฅ โ†’ 4/4 ํ”Œ๋žซํผ hook ํ™œ์„ฑ.

Track B: members.star365.site ํ†ตํ•ฉ ์ž”๊ณ  UI โœ…

์‚ฐ์ถœ๋ฌผ

๊ฒ€์ฆ

Track C: Reconciliation cron + outbox โœ…

์‚ฐ์ถœ๋ฌผ

baseline (2026-04-30 12:30 KST)

Track D: Signup hook ํŒŒ์ผ๋Ÿฟ + ๋„คํŠธ์›Œํฌ ์šฐํšŒ๋กœ โœ…

๊ฒฐ์ •์  ๋ฐœ๊ฒฌ: hospitalโ†’kahan UFW ์ฐจ๋‹จ

ํฌํŠธ hospitalโ†’kahan hospitalโ†’paperclip
3100 (starium-point-service old) โœ… OPEN โŒ
3720 (Sprint #1+2 endpoint) โŒ BLOCKED โŒ
3400 (members hub) โŒ โŒ
3700 (api bridge) โŒ โŒ
public HTTPS โ€” โœ… api.star365.site/health 200

โ†’ CLAUDE.md "UFW ๋ณ€๊ฒฝ ๊ธˆ์ง€" ์ค€์ˆ˜ํ•˜๋ฉฐ ์šฐํšŒ: paperclip api.star365.site (HTTPS public) โ†’ kahan:3720 (paperclipโ†’kahan์€ ํ†ต๊ณผ)

api.star365.site /points proxy ์‹ ๊ทœ

/opt/star365-hq/api/server.mjs +33 lines:

4 ecosystem.config.js ๊ฐฑ์‹ 

POINT_SERVICE_URL: 'http://66.42.42.24:3720' โ†’ 'https://api.star365.site' (4 platforms ร— delete+start)

assistant signup hook (ํŒŒ์ผ๋Ÿฟ)

/opt/assistant/apps/api-gateway/dist/.../auth/auth.service.js +13 lines:

E2E ๊ฒ€์ฆ

Test email: sprint3-final-1777520201@test.local
1) assistant.starium.site/api/v1/auth/register โ†’ JWT ํ† ํฐ ๋ฐ˜ํ™˜ (๊ฐ€์ž… ์„ฑ๊ณต)
2) kahan star365_members โ†’ star365-2FF30A5C50 ์ž๋™ ๋“ฑ๋ก (first_platform=assistant)
3) platform_memberships โ†’ assistant + cmokxmt4n00007dgi34btu5r5 link ์ž๋™ ์ถ”๊ฐ€
4) hospital โ†’ https://api.star365.site/api/v1/points/health โ†’ 200 OK (๋„คํŠธ์›Œํฌ chain ์ž‘๋™)

๋ˆ„์  ํšจ๊ณผ (Sprint #1+#2+#3)

๋ฉ”ํŠธ๋ฆญ ์‹œ์ž‘ Sprint #1 ํ›„ Sprint #2 ํ›„ Sprint #3 ํ›„
unified_point_accounts 22 45 (+23) 46 (+1) 47 (+1, sprint3 ํ…Œ์ŠคํŠธ)
total balance 219,850P 333,050P 336,550P 336,550P (no real earn yet)
4 platform earn ์ž๋™ ๋™๊ธฐ โŒ โŒ ๐ŸŸก silent fail โœ…
4 platform spend ์ž๋™ ๋™๊ธฐ โŒ โŒ ๐ŸŸก silent fail โœ…
signup โ†’ ์ž๋™ ํ†ตํ•ฉ ๋“ฑ๋ก โŒ โŒ โŒ โœ… assistant only
ํ†ตํ•ฉ ์ž”๊ณ  UI โŒ โŒ โŒ โœ…
reconciliation cron โŒ โŒ โŒ โœ… */15min
hospital-api ์•ˆ์ • โŒ 220+/min โŒ โŒ โœ… restarts=0

Done Criteria

# ๊ธฐ์ค€ ๊ฒฐ๊ณผ
1 hospital crash loop ํ•ด๊ฒฐ โœ… restarts=0 (Redis pwd + docker-proxy 5440 fix)
2 hospital spend hook ์žฌ์ ์šฉ โœ…
3 members.star365.site/points 200 โœ…
4 /points/unified/:uid ์ •ํ™• โœ… eb9322 16,700P
5 UI์— byPlatform / ํŠธ๋žœ์žญ์…˜ ํ‘œ์‹œ โœ…
6 reconciliation ์Šคํฌ๋ฆฝํŠธ ๋™์ž‘ โœ… baseline ์ž‘์„ฑ
7 cron ๋“ฑ๋ก */15 โœ…
8 api.star365.site /points proxy โœ… 5 ๋ผ์šฐํŠธ
9 hospital โ†’ api.star365.site ํ†ต์‹  โœ…
10 4 ecosystem.config.js ๊ฐฑ์‹  โœ…
11 4 platform-api stable post-restart โœ… all online restarts=0
12 assistant signup hook ์ฝ”๋“œ โœ…
13 E2E signup โ†’ ์ž๋™ ๋“ฑ๋ก โœ… star365-2FF30A5C50
14 platform_membership ์ž๋™ link โœ…
15 UFW ๋ฌด๋ณ€๊ฒฝ โœ… (proxy ์šฐํšŒ๋กœ ์‚ฌ์šฉ)

15/15 PASS

Out of Scope / ํ›„์†

ํ‰๊ฐ€

๊ธฐ์ค€ ์ ์ˆ˜
product_depth 9/10 (4 ํŠธ๋ž™ ๋ชจ๋‘ ์‚ฐ์ถœ, ์šฐํšŒ๋กœ ์„ค๊ณ„)
functionality 9/10 (E2E ๊ฒ€์ฆ PASS)
code_quality 8/10 (dist ์ง์ ‘ ํŒจ์น˜ + bak, fail-soft)
design 9/10 (๋„คํŠธ์›Œํฌ ์ฐจ๋‹จ ์šฐํšŒ elegant)
Overall 8.75/10 โ†’ PASS

Files Changed

M  /opt/hospital/.env                                                       REDIS_URL pwd ์ •์ •
M  /opt/star365-hub/server.mjs                                              +44 lines (/points/unified)
M  /opt/star365-hub/public/points.html                                      ์žฌ์ž‘์„ฑ (ํ†ตํ•ฉ UI)
M  /etc/systemd/system/star365-hub.service                                  +KAHAN_INTERNAL_KEY env
+  /opt/star365-hq/scripts/points_reconciliation.py                         200 lines
M  /opt/star365-hq/api/server.mjs                                           +33 lines (/api/v1/points proxy)
M  /opt/finance/ecosystem.config.js                                         POINT_SERVICE_URL โ†’ api.star365.site
M  /opt/legal/ecosystem.config.js                                           ๋™์ผ
M  /opt/assistant/ecosystem.config.js                                       ๋™์ผ + KAHAN_MEMBERS_URL
M  /opt/hospital/ecosystem.config.js                                        ๋™์ผ
M  /opt/assistant/apps/api-gateway/dist/.../auth/auth.service.js            +13 lines (signup hook)
M  /opt/hospital/apps/api-gateway/dist/.../points/points.service.js         spend hook ์žฌ์ ์šฉ (sprint #2 revert ํ’€๊ธฐ)
+  /var/log/points-recon-baseline.json
+  cron: */15 reconciliation

(.bak* ๋ชจ๋‘ ๋ณด์กด)