sppurt 0.0.0-stage → 0.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +109 -2
  2. package/dist/cli.js +2 -0
  3. package/dist/dashboard-ui/assets/SupplyChainCanvas-7QWuKZkc.js +1 -0
  4. package/dist/dashboard-ui/assets/index-DDMobcDz.css +1 -0
  5. package/dist/dashboard-ui/assets/index-idYPQJpm.js +809 -0
  6. package/dist/dashboard-ui/favicons/29cm.co.kr.png +0 -0
  7. package/dist/dashboard-ui/favicons/aliexpress.com.png +0 -0
  8. package/dist/dashboard-ui/favicons/amazon.com.png +0 -0
  9. package/dist/dashboard-ui/favicons/apify.com.png +0 -0
  10. package/dist/dashboard-ui/favicons/argo.camp.png +0 -0
  11. package/dist/dashboard-ui/favicons/boxhero.io.png +0 -0
  12. package/dist/dashboard-ui/favicons/bronte.co.kr.png +0 -0
  13. package/dist/dashboard-ui/favicons/cafe24.com.png +0 -0
  14. package/dist/dashboard-ui/favicons/cjdropshipping.com.png +0 -0
  15. package/dist/dashboard-ui/favicons/claude.ai.png +0 -0
  16. package/dist/dashboard-ui/favicons/coupang.com.png +0 -0
  17. package/dist/dashboard-ui/favicons/datalab.naver.com.png +0 -0
  18. package/dist/dashboard-ui/favicons/domeggook.com.png +0 -0
  19. package/dist/dashboard-ui/favicons/domeme.com.png +0 -0
  20. package/dist/dashboard-ui/favicons/domeme.domeggook.com.png +0 -0
  21. package/dist/dashboard-ui/favicons/ecount.com.png +0 -0
  22. package/dist/dashboard-ui/favicons/ezadmin.co.kr.png +0 -0
  23. package/dist/dashboard-ui/favicons/fallback.svg +1 -0
  24. package/dist/dashboard-ui/favicons/hwahae.com.png +0 -0
  25. package/dist/dashboard-ui/favicons/ksystem.co.kr.png +0 -0
  26. package/dist/dashboard-ui/favicons/kurly.com.png +0 -0
  27. package/dist/dashboard-ui/favicons/mail.google.com.ico +0 -0
  28. package/dist/dashboard-ui/favicons/meta.com.jpg +0 -0
  29. package/dist/dashboard-ui/favicons/musinsa.com.png +0 -0
  30. package/dist/dashboard-ui/favicons/oliveyoung.co.kr.png +0 -0
  31. package/dist/dashboard-ui/favicons/onewms.co.kr.png +0 -0
  32. package/dist/dashboard-ui/favicons/openai.com.png +0 -0
  33. package/dist/dashboard-ui/favicons/openclaw.ai.png +0 -0
  34. package/dist/dashboard-ui/favicons/plto.com.png +0 -0
  35. package/dist/dashboard-ui/favicons/poomgo.co.kr.ico +0 -0
  36. package/dist/dashboard-ui/favicons/qoo10.jp.png +0 -0
  37. package/dist/dashboard-ui/favicons/sabangnet.co.kr.png +0 -0
  38. package/dist/dashboard-ui/favicons/say-go.co.kr.png +0 -0
  39. package/dist/dashboard-ui/favicons/searchad.naver.com.png +0 -0
  40. package/dist/dashboard-ui/favicons/shopify.com.png +0 -0
  41. package/dist/dashboard-ui/favicons/shopping.naver.com.ico +0 -0
  42. package/dist/dashboard-ui/favicons/smartstore.ico +0 -0
  43. package/dist/dashboard-ui/favicons/sources.json +170 -0
  44. package/dist/dashboard-ui/favicons/specialoffer.co.kr.png +0 -0
  45. package/dist/dashboard-ui/favicons/ssfshop.com.png +0 -0
  46. package/dist/dashboard-ui/favicons/toss.im.png +0 -0
  47. package/dist/dashboard-ui/favicons/wconcept.co.kr.ico +0 -0
  48. package/dist/dashboard-ui/favicons/wehago.com.png +0 -0
  49. package/dist/dashboard-ui/favicons/zigzag.kr.png +0 -0
  50. package/dist/dashboard-ui/index.html +13 -0
  51. package/dist/skills/README.md +104 -0
  52. package/dist/skills/cost-calc/SKILL.md +104 -0
  53. package/dist/skills/cost-calc/agents/openai.yaml +8 -0
  54. package/dist/skills/cost-register/SKILL.md +116 -0
  55. package/dist/skills/daily-report/SKILL.md +80 -0
  56. package/dist/skills/daily-report/agents/openai.yaml +8 -0
  57. package/dist/skills/dashboard/SKILL.md +50 -0
  58. package/dist/skills/dashboard/agents/openai.yaml +8 -0
  59. package/dist/skills/inventory-sync/SKILL.md +85 -0
  60. package/dist/skills/inventory-sync/agents/openai.yaml +8 -0
  61. package/dist/skills/order-collect/SKILL.md +132 -0
  62. package/dist/skills/order-collect/agents/openai.yaml +8 -0
  63. package/dist/skills/order-fulfill/SKILL.md +97 -0
  64. package/dist/skills/order-fulfill/agents/openai.yaml +8 -0
  65. package/dist/skills/policy-ask/SKILL.md +52 -0
  66. package/dist/skills/price-monitor/SKILL.md +103 -0
  67. package/dist/skills/price-monitor/agents/openai.yaml +8 -0
  68. package/dist/skills/product-parse/SKILL.md +233 -0
  69. package/dist/skills/product-parse/agents/openai.yaml +8 -0
  70. package/dist/skills/product-sync/SKILL.md +85 -0
  71. package/dist/skills/product-sync/agents/openai.yaml +8 -0
  72. package/dist/skills/settlement-deposit/SKILL.md +88 -0
  73. package/dist/skills/settlement-report/SKILL.md +121 -0
  74. package/dist/skills/settlement-report/agents/openai.yaml +8 -0
  75. package/dist/skills/shopport/SKILL.md +123 -0
  76. package/dist/skills/shopport/agents/openai.yaml +8 -0
  77. package/dist/skills/source-to-register/SKILL.md +92 -0
  78. package/dist/skills/source-to-register/agents/openai.yaml +8 -0
  79. package/dist/skills/sppt/SKILL.md +234 -0
  80. package/dist/skills/sppt/agents/openai.yaml +8 -0
  81. package/dist/skills/sppurt/SKILL.md +234 -0
  82. package/dist/skills/sppurt/agents/openai.yaml +8 -0
  83. package/dist/skills/status-check/SKILL.md +78 -0
  84. package/dist/skills/status-check/agents/openai.yaml +8 -0
  85. package/dist/skills/trend-research/SKILL.md +79 -0
  86. package/dist/skills/trend-research/agents/openai.yaml +8 -0
  87. package/dist/skills/update/SKILL.md +83 -0
  88. package/dist/skills/waterfall-source/SKILL.md +80 -0
  89. package/dist/skills/waterfall-source/agents/openai.yaml +8 -0
  90. package/dist/skills/weekly-analysis/SKILL.md +84 -0
  91. package/dist/skills/weekly-analysis/agents/openai.yaml +8 -0
  92. package/package.json +60 -5
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: sppt-status-check
3
+ description: |
4
+ 전채널 연결 상태 + API 건강 체크 + 스토어 브리핑.
5
+ Use when asked to "상태 확인", "채널 연결 돼있어?", "헬스체크", "지금 상황 알려줘".
6
+ ---
7
+
8
+ # status-check
9
+
10
+ 전체 채널 연결 상태를 점검하고 스토어 운영 현황을 브리핑하는 워크플로우.
11
+
12
+ ## When to use
13
+
14
+ - "지금 상태 어때?", "채널 다 연결돼있어?", "헬스체크 해줘"
15
+ - 작업 시작 전 환경 점검
16
+ - 오류 발생 후 연결 상태 진단
17
+
18
+ ## Steps
19
+
20
+ ### 1. 채널 연결 상태
21
+
22
+ ```bash
23
+ sppt status
24
+ ```
25
+
26
+ 각 판매/소싱 채널의 연결 상태, 토큰 만료 여부, API 레이턴시를 확인합니다.
27
+
28
+ ### 2. 스토어 브리핑
29
+
30
+ ```bash
31
+ sppt context
32
+ ```
33
+
34
+ AI용 스토어 정보를 확인합니다:
35
+ - 스토어 프로필 (브랜드, 포지셔닝)
36
+ - 상품 분류 규칙
37
+ - 판매 인사이트
38
+
39
+ ### 3. API 기능 현황
40
+
41
+ ```bash
42
+ sppt cap
43
+ ```
44
+
45
+ 채널별로 어떤 API 기능이 사용 가능한지 확인합니다.
46
+
47
+ ### 4. API 사용량
48
+
49
+ ```bash
50
+ sppt budget
51
+ ```
52
+
53
+ 채널별 API 호출량과 한도를 확인합니다.
54
+
55
+ ### 5. 진단 결과 요약
56
+
57
+ ```
58
+ 🏥 Sppurt 헬스체크
59
+ ────────────────────────────────────
60
+ 채널 상태 토큰 레이턴시
61
+ cafe24 ✅ 유효 120ms
62
+ coupang ✅ 유효 85ms
63
+ smartstore ⚠️ 만료임박 200ms
64
+ shopify ❌ 미설정 -
65
+ ────────────────────────────────────
66
+ 소싱 채널: domeggook ✅ | specialoffer ✅
67
+ ```
68
+
69
+ 문제가 있는 채널은 해결 방법을 안내합니다:
70
+ - 토큰 만료 → `sppt auth <channel>`
71
+ - 미설정 → `sppt init <channel>`
72
+ - 레이턴시 높음 → API 상태 모니터링 권장
73
+
74
+ ## Notes
75
+
76
+ - 작업 시작 전 `sppt status` 습관화 권장
77
+ - cafe24 토큰은 2시간마다 자동 갱신됩니다
78
+ - `--json` 플래그로 프로그래밍적 활용 가능
@@ -0,0 +1,8 @@
1
+ interface:
2
+ display_name: "채널 상태 체크"
3
+ short_description: "전채널 API 연결 상태 + 스토어 브리핑"
4
+ brand_color: "#2563EB"
5
+ default_prompt: "$sppt-status-check 채널 상태 확인해줘"
6
+
7
+ policy:
8
+ allow_implicit_invocation: true
@@ -0,0 +1,79 @@
1
+ ---
2
+ name: sppt-trend-research
3
+ description: |
4
+ 트렌드 키워드 리서치 — 검색량 조회, 키워드 비교, 전문몰 랭킹.
5
+ Use when asked to "트렌드 확인", "키워드 검색량", "뭐가 잘 팔려", "시장 조사".
6
+ ---
7
+
8
+ # trend-research
9
+
10
+ 트렌드 키워드를 리서치하고 시장 수요를 파악하는 워크플로우.
11
+
12
+ ## When to use
13
+
14
+ - "이 키워드 검색량 어때?", "뭐가 잘 팔려?", "트렌드 분석해줘"
15
+ - 신규 상품 소싱 전 수요 확인
16
+ - 키워드 간 비교가 필요할 때
17
+ - 전문몰(무신사, 올리브영 등) 랭킹 확인
18
+
19
+ ## Prerequisites
20
+
21
+ - `sppt` CLI 설치 완료
22
+
23
+ ## Steps
24
+
25
+ ### 1. 키워드 검색량 조회
26
+
27
+ ```bash
28
+ sppt trend keyword <키워드>
29
+ ```
30
+
31
+ 네이버 데이터랩 기반 검색량 + 트렌드 방향을 확인합니다.
32
+
33
+ 판단 기준:
34
+ | 월 검색량 | 수요 |
35
+ |---|---|
36
+ | 10,000+ | 높음 — 경쟁도 높을 수 있음 |
37
+ | 1,000~10,000 | 적정 — 니치 시장 가능성 |
38
+ | 1,000 미만 | 낮음 — 틈새 or 비인기 |
39
+
40
+ ### 2. 키워드 비교
41
+
42
+ 후보 키워드가 여러 개일 때 상대 비교:
43
+
44
+ ```bash
45
+ sppt trend compare <키워드1> <키워드2> [키워드3]
46
+ ```
47
+
48
+ 검색량, 트렌드 방향, 경쟁강도를 비교합니다.
49
+
50
+ ### 3. 전문몰 랭킹 확인
51
+
52
+ 특정 카테고리의 전문몰 인기 상품을 확인합니다:
53
+
54
+ ```bash
55
+ sppt trend platform musinsa
56
+ sppt trend platform oliveyoung
57
+ sppt trend platform hwahae
58
+ ```
59
+
60
+ 지원 플랫폼: 무신사, 올리브영, 화해 등
61
+
62
+ ### 4. 결과 종합
63
+
64
+ 사용자에게 다음을 제안합니다:
65
+
66
+ 1. **검색량 충분 + 상승 트렌드**: 소싱 적기 → `/sppt-source-to-register`로 진행
67
+ 2. **검색량 충분 + 하락 트렌드**: 재고 리스크 있음, 소량 테스트 권장
68
+ 3. **검색량 부족**: 키워드 변경 또는 연관 키워드로 확장
69
+
70
+ ## Error handling
71
+
72
+ - **검색량 데이터 없음**: 키워드 오타 확인, 영문/한글 변환 시도
73
+ - **전문몰 데이터 실패**: 해당 플랫폼 API 상태 확인
74
+
75
+ ## Notes
76
+
77
+ - 네이버 데이터랩은 상대값 기반이므로 절대 검색량은 추정치입니다
78
+ - 시즌 상품은 전년 동기 대비 확인 권장
79
+ - 소싱 전 트렌드 확인은 재고 리스크를 줄이는 핵심 단계입니다
@@ -0,0 +1,8 @@
1
+ interface:
2
+ display_name: "트렌드 키워드 리서치"
3
+ short_description: "검색량 조회 · 키워드 비교 · 전문몰 트렌드 분석"
4
+ brand_color: "#2563EB"
5
+ default_prompt: "$sppt-trend-research 요즘 잘 팔리는 키워드 알려줘"
6
+
7
+ policy:
8
+ allow_implicit_invocation: true
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: sppt-update
3
+ description: |
4
+ Sppurt CLI 버전 업데이트 + 릴리즈 노트 확인.
5
+ Use when asked to "업데이트", "최신 버전", "sppt update", "버전 올려줘", "새 버전 있어?".
6
+ ---
7
+
8
+ # update
9
+
10
+ Sppurt CLI를 최신 버전으로 업데이트하고 변경사항을 확인하는 워크플로우.
11
+
12
+ ## When to use
13
+
14
+ - "업데이트 해줘", "최신 버전으로 올려줘"
15
+ - "새 버전 나왔어?", "지금 몇 버전이야?"
16
+ - 스킬이 안 되거나 새 커맨드가 없을 때
17
+
18
+ ## Steps
19
+
20
+ ### 1. 현재 버전 확인
21
+
22
+ ```bash
23
+ sppt --version
24
+ ```
25
+
26
+ ### 2. 최신 버전 확인
27
+
28
+ ```bash
29
+ npm view sppurt version
30
+ ```
31
+
32
+ 현재 버전과 최신 버전을 비교합니다.
33
+ - 같으면 → "이미 최신 버전입니다" 안내 후 종료
34
+ - 다르면 → 3단계로 진행
35
+
36
+ ### 3. 업데이트 실행
37
+
38
+ ```bash
39
+ npm update -g sppurt
40
+ ```
41
+
42
+ 설치 시 `postinstall` 훅이 자동으로 `setup-skills`를 실행하여 새 스킬도 함께 등록됩니다.
43
+
44
+ ### 4. 업데이트 확인
45
+
46
+ ```bash
47
+ sppt --version
48
+ ```
49
+
50
+ 버전이 올라갔는지 확인합니다.
51
+
52
+ ### 5. 릴리즈 노트 확인
53
+
54
+ ```bash
55
+ gh release view v<최신버전> --repo onlymytho/sppurt
56
+ ```
57
+
58
+ 주요 변경사항을 사용자에게 요약해줍니다:
59
+ - 새로 추가된 기능/스킬
60
+ - 버그 수정 사항
61
+ - Breaking changes (있는 경우)
62
+
63
+ ## 결과 요약 형식
64
+
65
+ ```
66
+ 📦 Sppurt 업데이트 완료
67
+ ────────────────────────────────────
68
+ 이전 버전: v0.2.4
69
+ 현재 버전: v0.3.0
70
+ ────────────────────────────────────
71
+ 주요 변경:
72
+ • 정산 엔진 대폭 강화 (채널×PG 분리 계산)
73
+ • 알림 체계 구축
74
+ • 새 스킬: /sppt-policy-ask
75
+ ────────────────────────────────────
76
+ ```
77
+
78
+ ## Notes
79
+
80
+ - 기존 `shopport` 패키지 사용자라면 한 번 `npm uninstall -g shopport` 후 `npm install -g sppurt`를 실행하세요. `sppt` 명령과 기존 사용자 데이터는 유지됩니다.
81
+ - `npm update -g`가 안 되면 `npm install -g sppurt@latest`로 시도
82
+ - 권한 오류 시 `sudo npm update -g sppurt` 또는 nvm/volta 사용 권장
83
+ - 업데이트 후 스킬이 갱신되지 않으면 `sppt setup-skills` 수동 실행
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: sppt-waterfall-source
3
+ description: |
4
+ 3개 소싱 채널(도매매→specialoffer→cjdropshipping) 워터폴 가격 비교.
5
+ Use when asked to "가장 싼 공급사 찾아줘", "소싱 비교", "최적 소싱처".
6
+ ---
7
+
8
+ # waterfall-source
9
+
10
+ 3개 소싱 채널을 비용 낮은 순서대로 검색하는 워터폴 소싱 워크플로우.
11
+
12
+ ## When to use
13
+
14
+ - 사용자가 "가장 싼 공급사 찾아줘", "최적 소싱처 검색", "소싱 비교해줘" 같은 요청을 할 때
15
+ - 여러 소싱 채널에서 동일 상품의 가격/조건을 비교할 때
16
+
17
+ ## Prerequisites
18
+
19
+ - 최소 2개 이상 소싱 채널 설정
20
+ - `sppt config list`로 소싱 채널 확인
21
+
22
+ ## Steps
23
+
24
+ ### 1. 워터폴 검색 실행
25
+
26
+ `--waterfall` 플래그로 3채널을 자동으로 순서대로 검색합니다.
27
+
28
+ **비용 절약 모드 (기본)** — 첫 유효 결과에서 중단:
29
+
30
+ ```bash
31
+ sppt source search domeggook "<keyword>" --waterfall --strategy first
32
+ ```
33
+
34
+ **최적 품질 모드** — 3채널 전부 검색 후 스코어 비교:
35
+
36
+ ```bash
37
+ sppt source search domeggook "<keyword>" --waterfall --strategy best
38
+ ```
39
+
40
+ 워터폴 순서: domeggook(도매매) → specialoffer → cjdropshipping (비용 오름차순)
41
+
42
+ 결과에는 각 상품의 마진율과 종합 스코어(마진 40% + 재고유연성 30% + 공급사신뢰도 30%)가 표시됩니다.
43
+
44
+ ### 2. 상세 조회
45
+
46
+ 워터폴 결과에서 선택한 상품의 상세 정보를 확인합니다:
47
+
48
+ ```bash
49
+ sppt source detail <channel> <productId>
50
+ ```
51
+
52
+ ### 3. 결과 요약
53
+
54
+ 사용자에게 채널별 비교 결과를 표로 정리합니다:
55
+
56
+ ```
57
+ 워터폴 소싱 결과: "키워드"
58
+ 검색 채널: 도매매, specialoffer, cjdropshipping 캐시 히트: 0 API 호출: 2 결과: 8건
59
+
60
+ 채널 상품명 도매가 마진 스코어
61
+ 도매매 상품A 8,500원 32% 78/100
62
+ specialoffer 상품B 9,200원 28% 71/100
63
+ cjdropshipping 상품C 7,150원 35% 65/100
64
+ ─────────────────────────────────────
65
+ 추천: 도매매 — 상품A (스코어 1위)
66
+ ```
67
+
68
+ ## Error handling
69
+
70
+ - **전체 채널 검색 실패**: 키워드를 변경하거나 영문으로 검색 시도
71
+ - **도매매 일일 한도 초과**: CLI가 자동으로 다음 채널로 진행
72
+ - **Rate limit**: CLI의 rate limiter가 자동 처리하므로 대기
73
+
74
+ ## Notes
75
+
76
+ - `--strategy first` (기본): 첫 유효 결과에서 중단 — API 호출 최소화
77
+ - `--strategy best`: 전체 검색 후 스코어 기반 최적 선택
78
+ - 검색 결과는 2시간 캐시됨 — 같은 키워드 재검색 시 캐시 반환
79
+ - CJ Dropshipping USD 가격은 기본 환율(1,380원) 또는 `--usd-krw N`으로 지정
80
+ - 공급사 신뢰도 스코어는 `order score record`로 쌓인 실데이터 기반
@@ -0,0 +1,8 @@
1
+ interface:
2
+ display_name: "워터폴 소싱 비교"
3
+ short_description: "도매매→specialoffer→CJ 3채널 가격 비교"
4
+ brand_color: "#2563EB"
5
+ default_prompt: "$sppt-waterfall-source 소싱 가격 비교해줘"
6
+
7
+ policy:
8
+ allow_implicit_invocation: true
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: sppt-weekly-analysis
3
+ description: |
4
+ 전주 대비 매출 변화 원인 분석 + 채널 수수료 최적화 컨설팅 워크플로우.
5
+ Use when asked to "주간 분석", "왜 매출이 줄었어", "채널별 원인 분석", "지난 주 비교",
6
+ "매출이익률 분석", "수수료율 변화", "원인 분석해줘".
7
+ ---
8
+
9
+ # weekly-analysis
10
+
11
+ ## 채널 분류 컨텍스트
12
+
13
+ `channelMeta` 응답의 각 채널에는 `type`(own-mall/open-market/vertical-specialist), `entryRequirement`(open/contract), `hasChannelBrandValue`가 정의되어 있다.
14
+
15
+ **수수료 최적화 시 주의:**
16
+ - `entryRequirement: "contract"` 채널은 계약 관계이므로 단순 수수료 비교로 비중 축소를 권고하면 안 된다.
17
+ - `hasChannelBrandValue: true` 채널은 높은 수수료에 마케팅·브랜딩·노출 가치가 포함된다.
18
+ - 채널 간 이동보다 **같은 채널 내 최적화**(유입경로, 단가, 프로모션)가 실행 가능성이 높다.
19
+
20
+ ## Data Collection
21
+
22
+ 커맨드 **1회**로 모든 데이터를 가져옵니다:
23
+
24
+ ```bash
25
+ sppt report weekly --json
26
+ ```
27
+
28
+ 옵션:
29
+ - `--period 7d` (기본값) — 채널/상품 비교 기간
30
+ - `--top 10` (기본값) — 채널/상품 표시 개수
31
+ - `--settlement-days 30` (기본값) — 정산 집계 기간
32
+
33
+ 응답 구조:
34
+ - `channelMeta` — 채널 특성 (type/entryRequirement/hasChannelBrandValue)
35
+ - `channelFees` — 채널별 수수료 전체 (유입경로별 포함)
36
+ - `reportByChannel` — 채널별 현재/전주 비교 + diff
37
+ - `reportByProduct` — 상품별 현재/전주 비교 + diff (top 10)
38
+ - `settlement` — 채널별 정산 요약 (매출/수수료/순수익/실효수수료율)
39
+ - `costs` — SKU별 원가 목록 (미등록 시 null)
40
+
41
+ ## Analysis Steps
42
+
43
+ ### Step 1: 채널 수수료율 분석
44
+
45
+ 1. **채널별 수수료율 랭킹** — 채널 분류(자사몰/오픈마켓/버티컬)와 함께 표시. 표본 < 5건은 신뢰도 낮음 표기.
46
+ 2. **실효수수료율** = Σ(채널_비중 × 채널_수수료율), 오픈마켓 채널 간 비중과 버티컬 채널 비중을 분리해서 보여줌.
47
+ 3. **스마트스토어 유입경로 분석** — `fee list smartstore` 결과로 마케팅링크 유입 비중이 실효율에 미치는 영향 추정. 규칙 미등록 시 annualRevenue/브랜드스토어 여부에 따른 오차 가능성 언급.
48
+ 4. **오픈마켓 내 믹스 최적화** — smartstore ↔ cafe24 비중 이동 시 절감 효과. 버티컬 채널은 별도 분석.
49
+ 5. **집중 리스크** — 단일 채널 비중 > 70% 경고. 단, 버티컬 채널의 비중 감소는 리스크가 아닌 채널 특성으로 해석.
50
+ 6. **전주 대비 변화** (데이터 있을 때만) — 채널믹스 효과 vs 채널내 수수료율 변화로 분해.
51
+
52
+ ### Step 2: 채널별 매출 변화 분해
53
+
54
+ `reportByChannel.diff` 배열에서 직접 읽는다.
55
+
56
+ - 채널별 매출 증감, volumeEffect / priceEffect 요약
57
+ - 채널 점유율 변화 (이전주 비중 → 이번주 비중)
58
+
59
+ ### Step 3: Top Mover 상품 귀속
60
+
61
+ `reportByProduct.diff` 배열 상위 항목을 채널 변화에 귀속시킨다.
62
+
63
+ - 매출 변화 상위 5개 상품: revenueChange, volumeDiff%, priceDiff%
64
+ - 특이값 (신규 등장 또는 완전 소멸 상품) 별도 언급
65
+
66
+ ### Step 4: 공헌이익률 분석 (원가 있을 때만)
67
+
68
+ - 이번주 vs 지난주 공헌이익률 변화
69
+ - 상품 믹스 효과 vs 단가 변화 효과로 분해
70
+
71
+ ## AI Interpretation
72
+
73
+ 위 데이터를 바탕으로 각 변화에 대해:
74
+ 1. 가능한 원인 (내부/외부 구분)
75
+ 2. 우선순위 조치 (즉각 / 단기 / 검토)
76
+ 3. 수수료 최적화: 채널 특성과 진입 가능성을 고려한 실행 가능한 방안만 제안. "버티컬 채널 축소" 같은 계약 외 조치는 제안하지 않는다.
77
+
78
+ ## Error Handling
79
+
80
+ - **이번주 매출이 이전주 대비 -80% 이상**: 데이터 수집 공백 가능성 → `sppt order pull` 재실행 안내 후 분석
81
+ - **원가 미등록**: Step 4 skip
82
+ - **채널 1개만**: 수수료 비교 skip, 단가/볼륨 분석 집중
83
+ - **settlement 표본 부족** (채널별 < 5건): 수수료율 신뢰도 낮음 표기, `--settlement-days 90` 권장
84
+ - **smartstore fee rule 미등록**: 실효율 신뢰도 낮음 표기. `sppt settlement hints smartstore`로 annualRevenue 설정 권장.
@@ -0,0 +1,8 @@
1
+ interface:
2
+ display_name: "주간 매출 분석"
3
+ short_description: "전주 대비 매출 변화 원인 분석 + 채널 수수료 최적화"
4
+ brand_color: "#2563EB"
5
+ default_prompt: "$sppt-weekly-analysis 이번 주 매출 분석해줘"
6
+
7
+ policy:
8
+ allow_implicit_invocation: true
package/package.json CHANGED
@@ -1,6 +1,61 @@
1
1
  {
2
- "name": "sppurt",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
2
+ "name": "sppurt",
3
+ "version": "0.5.9",
4
+ "description": "커머스 운영 자동화 CLI — Cafe24, Coupang, SmartStore, Shopify 통합 관리",
5
+ "type": "module",
6
+ "bin": {
7
+ "sppt": "dist/cli.js",
8
+ "sppurt": "dist/cli.js"
9
+ },
10
+ "scripts": {
11
+ "dev": "tsx watch src/cli.ts",
12
+ "build:dashboard": "cd dashboard-ui && bun install && bun run build",
13
+ "build": "bun run build:dashboard && tsup && node -e \"const fs=require('fs');const f='dist/cli.js';const c=fs.readFileSync(f,'utf8');fs.writeFileSync(f,'#!/usr/bin/env bun\\n'+c);fs.chmodSync(f,0o755)\"",
14
+ "start": "node dist/cli.js",
15
+ "build:publish": "SHOPPORT_PUBLISH=1 bun run build",
16
+ "postinstall": "node -e \"try{require('child_process').execFileSync(process.execPath,['dist/cli.js','setup-skills'],{stdio:'pipe'})}catch(_){}\"",
17
+ "prepublishOnly": "bun run build:publish",
18
+ "test": "vitest run"
19
+ },
20
+ "keywords": [
21
+ "dropshipping",
22
+ "ecommerce",
23
+ "cafe24",
24
+ "coupang",
25
+ "smartstore",
26
+ "shopify",
27
+ "커머스운영",
28
+ "자동화"
29
+ ],
30
+ "license": "UNLICENSED",
31
+ "engines": {
32
+ "node": ">=18"
33
+ },
34
+ "files": ["dist", "README.md"],
35
+ "dependencies": {
36
+ "@browserbasehq/stagehand": "^2.0.0",
37
+ "@e965/xlsx": "^0.20.3",
38
+ "@hyunbinseo/holidays-kr": "^4.2026.0",
39
+ "@types/bcrypt": "^6.0.0",
40
+ "axios": "^1.13.5",
41
+ "basic-ftp": "^5.3.0",
42
+ "bcrypt": "^6.0.0",
43
+ "date-fns": "^4.1.0",
44
+ "form-data": "^4.0.5",
45
+ "posthog-node": "^5.30.8",
46
+ "zod": "^3.24.0"
47
+ },
48
+ "devDependencies": {
49
+ "@shopport/core": "workspace:*",
50
+ "@shopport/reliability": "workspace:*",
51
+ "@shopport/types": "workspace:*",
52
+ "@types/node": "^22.13.10",
53
+ "javascript-obfuscator": "^5.4.1",
54
+ "playwright": "^1.59.1",
55
+ "terser": "^5.46.1",
56
+ "tsup": "^8.5.1",
57
+ "tsx": "^4.19.4",
58
+ "typescript": "^5.8.2",
59
+ "vitest": "^4.1.4"
60
+ }
61
+ }