[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CBPMBBTNJB9C35VCP5EHT8":3,"skill-same:01M6CBPMBBTNJB9C35VCP5EHT8":51},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":20,"linkOnly":21,"markdownContent":22,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":13,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":29,"updatedAt":30,"install":31,"resources":44},"01M6CBPMBBTNJB9C35VCP5EHT8","09-ssot-operations",null,"devwinsoft\u002Fdevian","devwinsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F22570160?v=4","01M6C6RR8W05NH8NPKQNCE3Q72","maoshy","01M6C6RRDJ5TJJCZXRTY801YDH",0,"MIT","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian-unity\u002F50-mobile-package\u002F48-mission-system\u002F09-ssot-operations\u002FSKILL.md",[],[18,19],"operations","09 ssot operations","2026-11-10 10:12:30",false,"# 09-ssot-operations — 48-mission-system\n\nStatus: ACTIVE  \nAppliesTo: v10\n\n운영 시나리오\u002F테스트\u002FDoD 정본이다.  \n테이블\u002F구조 정본은 [03-ssot](..\u002F03-ssot\u002FSKILL.md)를 따른다.\n\n---\n\n## 운영 시나리오\n\n### 1) 앱 시작\n\n- MissionStorage 로드\n- 서버 시각 동기화\n- daily\u002Fweekly anchor(`dailyMissionStartUtcMs`, `weeklyMissionStartUtcMs`) 초기화\u002F보정\n- scheduler가 runtime 재구성\n  - daily: active row 중 최대 5개 선택\n  - weekly: active row 전부 생성(WAIT), `day` 규칙으로 즉시\u002F지연 활성화\n\n### 2) 플레이 중 trigger 입력\n\n- 이벤트 발행: `GameMessageManager.Notify(messageType, delta)`\n- 처리 순서:\n  1. `message.stats[message_id]` 갱신\n  2. `GameMessageTrigger` publish\n  3. runtime 반영 (`DAILY`\u002F`WEEKLY`)\n- WAIT runtime은 progress 이벤트를 소비하지 않는다.\n\n### 3) claim\n\n- claimable 검증 후 RewardManager apply\n- runtime 상태 갱신\n- save 즉시 실행\n\n### 4) 주기 전환\n\n- daily cycle 전환 시 기존 daily runtime set 정리 후 재선택\n- weekly cycle(10일) 전환 시 weekly runtime 전량 WAIT 재생성 후 day 규칙 재활성화\n\n---\n\n## 테스트 체크리스트\n\n- trigger 1회당 `message.stats` 갱신이 1회만 일어나는지\n- `GAME_MESSAGE_TYPE` 변경 시 정상 라우팅되는지\n- daily\u002Fperiod `SUM` 누적이 음수로 내려가지 않는지\n- weekly `day=1` 즉시 활성화가 보장되는지\n- weekly `day=n`이 `(n-1)`일 후에만 활성화되는지\n- weekly 10일 리셋 타이밍에서 중복 runtime 생성이 없는지\n\n---\n\n## DoD\n\nHard:\n- `condition_msg_id` 미해결 row에서 runtime 생성 0건\n- level-up 후 구독 누락\u002F중복 0건\n- WAIT runtime에서 progress 콜백 전송 0건\n- weekly cycle reset 후 stale runtime 잔존 0건\n\nSoft:\n- UI 재바인딩 시 메시지 순서 일관성 유지\n",{},"main","8cb5bd877a3a7004867d2f55697cb9e4ff2f1734","skills\u002Fdevian-unity\u002F50-mobile-package\u002F48-mission-system\u002F09-ssot-operations","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian","https:\u002F\u002Fgithub.com\u002Fdevwinsoft","Kim Hyong Joon","2026-04-12 18:44:10",{"source":7,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add devwinsoft\u002Fdevian --skill 09-ssot-operations",{"tool":37,"command":38},"bunx","bunx skills add devwinsoft\u002Fdevian --skill 09-ssot-operations",{"tool":40,"command":41},"pnpm","pnpm dlx skills add devwinsoft\u002Fdevian --skill 09-ssot-operations","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian-unity\u002F50-mobile-package\u002F48-mission-system\u002F09-ssot-operations\u002FSKILL.md",true,[45],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"agents\u002Fopenai.yaml","REFERENCE","参考文档",108,"https:\u002F\u002Fgithub.com\u002Fmalinskibeniamin\u002Fskills\u002Fblob\u002Fmain\u002Fcodex-skills\u002Ffull-stop\u002Fagents\u002Fopenai.yaml",[52,58,66,74,83,90],{"skillNo":53,"name":54,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":57,"publishedAt":20},"01M6CBX3K2JJV38ANHVGCAT8A0","devian","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002FSKILL.md",[],[54],{"skillNo":59,"name":60,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":20},"01M6CBX210BFMM8AMN770J9WY8","90-project-archive","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F90-project-archive\u002FSKILL.md",[],[64,65],"archive","90 project archive",{"skillNo":67,"name":68,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":20},"01M6CBWZSGRR9R3YJZB3177667","30-env-management","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F30-env-management\u002FSKILL.md",[],[72,73],"management","30 env management",{"skillNo":75,"name":76,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":20},"01M6CBWYD3TGWBQV7V35551THF","19-page-push-send","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F19-page-push-send\u002FSKILL.md",[],[80,81,82],"push","page","19 page push send",{"skillNo":84,"name":85,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":20},"01M6CBWWRQ05A7604GHJKTPJTF","18-page-savedata","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F18-page-savedata\u002FSKILL.md",[],[81,89],"18 page savedata",{"skillNo":91,"name":92,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":20},"01M6CBWVH4S2VF1V7B2GBTESCT","17-page-deobfuscate","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F17-page-deobfuscate\u002FSKILL.md",[],[81,96],"17 page deobfuscate"]