shopport 0.3.5 → 0.4.1
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.
- package/dist/cli.js +1 -1
- package/dist/dashboard-ui/assets/index-B5XPkd-v.js +474 -0
- package/dist/dashboard-ui/assets/index-BKfg_788.css +1 -0
- package/dist/dashboard-ui/index.html +2 -2
- package/dist/skills/order-collect/SKILL.md +37 -12
- package/dist/skills/settlement-deposit/SKILL.md +88 -0
- package/dist/skills/shopport/SKILL.md +40 -0
- package/dist/skills/sppt/SKILL.md +19 -0
- package/package.json +3 -1
- package/dist/dashboard-ui/assets/index-5AhXL8tX.js +0 -422
- package/dist/dashboard-ui/assets/index-Cuq6bR2B.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 72 11% 95%;--foreground: 0 0% 7%;--card: 0 0% 100%;--card-foreground: 0 0% 7%;--popover: 0 0% 100%;--popover-foreground: 0 0% 7%;--border: 70 8% 86%;--muted: 70 8% 89%;--muted-foreground: 0 0% 7% / .55;--primary: 19 100% 49%;--primary-foreground: 0 0% 100%;--success: 142 71% 45%;--warning: 37 84% 55%;--destructive: 0 84% 60%;--destructive-foreground: 0 0% 100%;--radius: 8px}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.-top-6{top:-1.5rem}.bottom-0{bottom:0}.bottom-\[20px\]{bottom:20px}.left-0{left:0}.left-1\/2{left:50%}.left-2\.5{left:.625rem}.left-3{left:.75rem}.right-0{right:0}.right-1\.5{right:.375rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-6{right:1.5rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-3{top:.75rem}.top-8{top:2rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[5\]{z-index:5}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.col-span-2{grid-column:span 2 / span 2}.float-right{float:right}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.-ml-0\.5{margin-left:-.125rem}.-ml-1{margin-left:-.25rem}.-mr-1{margin-right:-.25rem}.-mt-0\.5{margin-top:-.125rem}.-mt-4{margin-top:-1rem}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[3px\]{margin-top:3px}.mt-\[7px\]{margin-top:7px}.mt-px{margin-top:1px}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[13px\]{height:13px}.h-\[18px\]{height:18px}.h-\[24px\]{height:24px}.h-\[400px\]{height:400px}.h-\[40px\]{height:40px}.h-\[72px\]{height:72px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[280px\]{max-height:280px}.max-h-\[70vh\]{max-height:70vh}.max-h-\[80vh\]{max-height:80vh}.min-h-0{min-height:0px}.min-h-\[120px\]{min-height:120px}.min-h-\[320px\]{min-height:320px}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-36{width:9rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[100px\]{width:100px}.w-\[105px\]{width:105px}.w-\[13px\]{width:13px}.w-\[160px\]{width:160px}.w-\[200px\]{width:200px}.w-\[220px\]{width:220px}.w-\[240px\]{width:240px}.w-\[28px\]{width:28px}.w-\[300px\]{width:300px}.w-\[32px\]{width:32px}.w-\[360px\]{width:360px}.w-\[36px\]{width:36px}.w-\[380px\]{width:380px}.w-\[40px\]{width:40px}.w-\[50px\]{width:50px}.w-\[52px\]{width:52px}.w-\[55px\]{width:55px}.w-\[56px\]{width:56px}.w-\[60\%\]{width:60%}.w-\[60px\]{width:60px}.w-\[70px\]{width:70px}.w-\[72px\]{width:72px}.w-\[80px\]{width:80px}.w-\[860px\]{width:860px}.w-\[88px\]{width:88px}.w-\[90px\]{width:90px}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-8{min-width:2rem}.min-w-\[110px\]{min-width:110px}.min-w-\[155px\]{min-width:155px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[230px\]{min-width:230px}.min-w-\[640px\]{min-width:640px}.max-w-\[100px\]{max-width:100px}.max-w-\[100vw\]{max-width:100vw}.max-w-\[120px\]{max-width:120px}.max-w-\[1280px\]{max-width:1280px}.max-w-\[140px\]{max-width:140px}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[280px\]{max-width:280px}.max-w-\[300px\]{max-width:300px}.max-w-\[320px\]{max-width:320px}.max-w-\[340px\]{max-width:340px}.max-w-\[360px\]{max-width:360px}.max-w-\[380px\]{max-width:380px}.max-w-\[400px\]{max-width:400px}.max-w-\[480px\]{max-width:480px}.max-w-\[560px\]{max-width:560px}.max-w-\[720px\]{max-width:720px}.max-w-\[860px\]{max-width:860px}.max-w-\[90px\]{max-width:90px}.max-w-\[95vw\]{max-width:95vw}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-full{max-width:100%}.max-w-screen-xl{max-width:1280px}.flex-1{flex:1 1 0%}.flex-\[1\]{flex:1}.flex-\[2\]{flex:2}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize{resize:both}.scroll-mt-4{scroll-margin-top:1rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[190px_1fr\]{grid-template-columns:190px 1fr}.grid-cols-\[1fr_auto_auto\]{grid-template-columns:1fr auto auto}.grid-cols-\[260px_1fr\]{grid-template-columns:260px 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[2px\]{gap:2px}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){border-color:hsl(var(--border))}.divide-border\/40>:not([hidden])~:not([hidden]){border-color:hsl(var(--border) / .4)}.divide-border\/50>:not([hidden])~:not([hidden]){border-color:hsl(var(--border) / .5)}.divide-border\/60>:not([hidden])~:not([hidden]){border-color:hsl(var(--border) / .6)}.self-center{align-self:center}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.rounded-b-md{border-bottom-right-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.rounded-br-xl{border-bottom-right-radius:.75rem}.rounded-tl-xl{border-top-left-radius:.75rem}.rounded-tr-xl{border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0px}.border-t-2{border-top-width:2px}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-200\/50{border-color:#fde68a80}.border-amber-200\/60{border-color:#fde68a99}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/20{border-color:hsl(var(--border) / .2)}.border-border\/30{border-color:hsl(var(--border) / .3)}.border-border\/40{border-color:hsl(var(--border) / .4)}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-border\/60{border-color:hsl(var(--border) / .6)}.border-emerald-200{--tw-border-opacity: 1;border-color:rgb(167 243 208 / var(--tw-border-opacity, 1))}.border-foreground{border-color:hsl(var(--foreground))}.border-foreground\/50{border-color:hsl(var(--foreground) / .5)}.border-muted-foreground\/40{border-color:hsl(var(--muted-foreground) / .4)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-primary{border-color:hsl(var(--primary))}.border-primary-foreground\/20{border-color:hsl(var(--primary-foreground) / .2)}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/40{border-color:hsl(var(--primary) / .4)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-primary\/60{border-color:hsl(var(--primary) / .6)}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-50\/50{background-color:#fffbeb80}.bg-amber-500\/60{background-color:#f59e0b99}.bg-background{background-color:hsl(var(--background))}.bg-black\/40{background-color:#0006}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-50\/50{background-color:#eff6ff80}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-500\/60{background-color:#3b82f699}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-card\/95{background-color:hsl(var(--card) / .95)}.bg-emerald-100{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity, 1))}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-emerald-50\/50{background-color:#ecfdf580}.bg-emerald-50\/60{background-color:#ecfdf599}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-emerald-500\/50{background-color:#10b98180}.bg-foreground{background-color:hsl(var(--foreground))}.bg-foreground\/25{background-color:hsl(var(--foreground) / .25)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-50\/60{background-color:#f9fafb99}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-500\/10{background-color:#22c55e1a}.bg-green-500\/15{background-color:#22c55e26}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground{background-color:hsl(var(--muted-foreground))}.bg-muted-foreground\/15{background-color:hsl(var(--muted-foreground) / .15)}.bg-muted-foreground\/30{background-color:hsl(var(--muted-foreground) / .3)}.bg-muted-foreground\/40{background-color:hsl(var(--muted-foreground) / .4)}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/10{background-color:hsl(var(--muted) / .1)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/40{background-color:hsl(var(--muted) / .4)}.bg-muted\/5{background-color:hsl(var(--muted) / .05)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-muted\/60{background-color:hsl(var(--muted) / .6)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-500\/15{background-color:#f9731626}.bg-pink-100{--tw-bg-opacity: 1;background-color:rgb(252 231 243 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/40{background-color:hsl(var(--primary) / .4)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-primary\/50{background-color:hsl(var(--primary) / .5)}.bg-primary\/60{background-color:hsl(var(--primary) / .6)}.bg-primary\/70{background-color:hsl(var(--primary) / .7)}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-red-400\/40{background-color:#f8717166}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/15{background-color:#ef444426}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-rose-100{--tw-bg-opacity: 1;background-color:rgb(255 228 230 / var(--tw-bg-opacity, 1))}.bg-rose-50{--tw-bg-opacity: 1;background-color:rgb(255 241 242 / var(--tw-bg-opacity, 1))}.bg-rose-500{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity, 1))}.bg-sky-100{--tw-bg-opacity: 1;background-color:rgb(224 242 254 / var(--tw-bg-opacity, 1))}.bg-sky-50{--tw-bg-opacity: 1;background-color:rgb(240 249 255 / var(--tw-bg-opacity, 1))}.bg-sky-500{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-stone-100{--tw-bg-opacity: 1;background-color:rgb(245 245 244 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/15{background-color:#eab30826}.bg-zinc-800{--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity, 1))}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-7{padding:1.75rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[1px\],.py-px{padding-top:1px;padding-bottom:1px}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-3\.5{padding-bottom:.875rem}.pb-4{padding-bottom:1rem}.pl-0\.5{padding-left:.125rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pl-\[200px\]{padding-left:200px}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pr-\[56px\]{padding-right:56px}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-3\.5{padding-top:.875rem}.pt-4{padding-top:1rem}.pt-7{padding-top:1.75rem}.pt-\[15vh\]{padding-top:15vh}.pt-\[8vh\]{padding-top:8vh}.pt-px{padding-top:1px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[0\.85em\]{font-size:.85em}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[20px\]{font-size:20px}.text-\[7px\]{font-size:7px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[14px\]{line-height:14px}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.3em\]{letter-spacing:.3em}.tracking-normal{letter-spacing:0em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-amber-400\/70{color:#fbbf24b3}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-background{color:hsl(var(--background))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-border{color:hsl(var(--border))}.text-destructive{color:hsl(var(--destructive))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-emerald-800{--tw-text-opacity: 1;color:rgb(6 95 70 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/40{color:hsl(var(--foreground) / .4)}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-foreground\/60{color:hsl(var(--foreground) / .6)}.text-foreground\/70{color:hsl(var(--foreground) / .7)}.text-foreground\/80{color:hsl(var(--foreground) / .8)}.text-foreground\/90{color:hsl(var(--foreground) / .9)}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/30{color:hsl(var(--muted-foreground) / .3)}.text-muted-foreground\/40{color:hsl(var(--muted-foreground) / .4)}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-muted-foreground\/80{color:hsl(var(--muted-foreground) / .8)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-pink-700{--tw-text-opacity: 1;color:rgb(190 24 93 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-primary\/70{color:hsl(var(--primary) / .7)}.text-primary\/80{color:hsl(var(--primary) / .8)}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-500\/70{color:#ef4444b3}.text-red-500\/80{color:#ef4444cc}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.text-rose-500{--tw-text-opacity: 1;color:rgb(244 63 94 / var(--tw-text-opacity, 1))}.text-rose-700{--tw-text-opacity: 1;color:rgb(190 18 60 / var(--tw-text-opacity, 1))}.text-sky-700{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity, 1))}.text-stone-500{--tw-text-opacity: 1;color:rgb(120 113 108 / var(--tw-text-opacity, 1))}.text-stone-700{--tw-text-opacity: 1;color:rgb(68 64 60 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/90{color:#ffffffe6}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.decoration-muted-foreground\/40{text-decoration-color:hsl(var(--muted-foreground) / .4)}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.accent-primary{accent-color:hsl(var(--primary))}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-inset{--tw-ring-inset: inset}.ring-amber-400\/60{--tw-ring-color: rgb(251 191 36 / .6)}.ring-primary\/50{--tw-ring-color: hsl(var(--primary) / .5)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.marker\:text-muted-foreground\/40 *::marker{color:hsl(var(--muted-foreground) / .4)}.marker\:text-muted-foreground\/40::marker{color:hsl(var(--muted-foreground) / .4)}.placeholder\:text-muted-foreground\/40::-moz-placeholder{color:hsl(var(--muted-foreground) / .4)}.placeholder\:text-muted-foreground\/40::placeholder{color:hsl(var(--muted-foreground) / .4)}.placeholder\:text-muted-foreground\/60::-moz-placeholder{color:hsl(var(--muted-foreground) / .6)}.placeholder\:text-muted-foreground\/60::placeholder{color:hsl(var(--muted-foreground) / .6)}.after\:pointer-events-none:after{content:var(--tw-content);pointer-events:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bottom-0:after{content:var(--tw-content);bottom:0}.after\:right-0:after{content:var(--tw-content);right:0}.after\:top-0:after{content:var(--tw-content);top:0}.after\:w-\[6px\]:after{content:var(--tw-content);width:6px}.after\:bg-gradient-to-r:after{content:var(--tw-content);background-image:linear-gradient(to right,var(--tw-gradient-stops))}.after\:from-black\/\[0\.04\]:after{content:var(--tw-content);--tw-gradient-from: rgb(0 0 0 / .04) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.after\:to-transparent:after{content:var(--tw-content);--tw-gradient-to: transparent var(--tw-gradient-to-position)}.first\:pt-0:first-child{padding-top:0}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.last\:pb-0:last-child{padding-bottom:0}.hover\:border-foreground\/30:hover{border-color:hsl(var(--foreground) / .3)}.hover\:border-foreground\/40:hover{border-color:hsl(var(--foreground) / .4)}.hover\:border-primary:hover{border-color:hsl(var(--primary))}.hover\:border-primary\/70:hover{border-color:hsl(var(--primary) / .7)}.hover\:bg-blue-50\/40:hover{background-color:#eff6ff66}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/15:hover{background-color:hsl(var(--muted) / .15)}.hover\:bg-muted\/20:hover{background-color:hsl(var(--muted) / .2)}.hover\:bg-muted\/30:hover{background-color:hsl(var(--muted) / .3)}.hover\:bg-muted\/40:hover{background-color:hsl(var(--muted) / .4)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-muted\/60:hover{background-color:hsl(var(--muted) / .6)}.hover\:bg-muted\/70:hover{background-color:hsl(var(--muted) / .7)}.hover\:bg-primary\/20:hover{background-color:hsl(var(--primary) / .2)}.hover\:bg-primary\/5:hover{background-color:hsl(var(--primary) / .05)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.focus\:w-\[300px\]:focus{width:300px}.focus\:border-foreground:focus{border-color:hsl(var(--foreground))}.focus\:bg-muted:focus{background-color:hsl(var(--muted))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-amber-400\/40:focus{--tw-ring-color: rgb(251 191 36 / .4)}.focus\:ring-primary\/50:focus{--tw-ring-color: hsl(var(--primary) / .5)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.group:hover .group-hover\:block{display:block}.group:hover .group-hover\:bg-primary\/50{background-color:hsl(var(--primary) / .5)}.group:hover .group-hover\:text-foreground\/80{color:hsl(var(--foreground) / .8)}@media(min-width:640px){.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:hidden{display:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[140px_1fr\]{grid-template-columns:140px 1fr}.sm\:grid-cols-\[190px_1fr\]{grid-template-columns:190px 1fr}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.sm\:divide-border\/40>:not([hidden])~:not([hidden]){border-color:hsl(var(--border) / .4)}}@media(min-width:768px){.md\:left-\[220px\]{left:220px}.md\:col-span-2{grid-column:span 2 / span 2}.md\:-mt-7{margin-top:-1.75rem}.md\:block{display:block}.md\:hidden{display:none}.md\:h-auto{height:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-\[200px_1fr\]{grid-template-columns:200px 1fr}.md\:grid-cols-\[2fr_1fr\]{grid-template-columns:2fr 1fr}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:overflow-clip{overflow:clip}.md\:pt-7{padding-top:1.75rem}}@media(min-width:1024px){.lg\:block{display:block}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@media(prefers-color-scheme:dark){.dark\:border-amber-500\/50{border-color:#f59e0b80}.dark\:border-amber-800\/40{border-color:#92400e66}.dark\:border-amber-900\/50{border-color:#78350f80}.dark\:border-amber-900\/60{border-color:#78350f99}.dark\:border-blue-900\/60{border-color:#1e3a8a99}.dark\:border-emerald-900\/60{border-color:#064e3b99}.dark\:border-red-900\/50{border-color:#7f1d1d80}.dark\:bg-amber-950\/20{background-color:#451a0333}.dark\:bg-amber-950\/30{background-color:#451a034d}.dark\:bg-amber-950\/40{background-color:#451a0366}.dark\:bg-amber-950\/50{background-color:#451a0380}.dark\:bg-blue-950\/20{background-color:#17255433}.dark\:bg-blue-950\/40{background-color:#17255466}.dark\:bg-blue-950\/50{background-color:#17255480}.dark\:bg-card{background-color:hsl(var(--card))}.dark\:bg-emerald-950\/20{background-color:#022c2233}.dark\:bg-emerald-950\/30{background-color:#022c224d}.dark\:bg-emerald-950\/40{background-color:#022c2266}.dark\:bg-emerald-950\/50{background-color:#022c2280}.dark\:bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:bg-muted\/5{background-color:hsl(var(--muted) / .05)}.dark\:bg-orange-950\/40{background-color:#43140766}.dark\:bg-purple-950\/40{background-color:#3b076466}.dark\:bg-red-950\/20{background-color:#450a0a33}.dark\:bg-rose-950\/40{background-color:#4c051966}.dark\:bg-sky-950\/40{background-color:#082f4966}.dark\:bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.dark\:bg-stone-800\/40{background-color:#29252466}.dark\:bg-zinc-200{--tw-bg-opacity: 1;background-color:rgb(228 228 231 / var(--tw-bg-opacity, 1))}.dark\:text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.dark\:text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-300\/80{color:#fcd34dcc}.dark\:text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.dark\:text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.dark\:text-emerald-300\/80{color:#6ee7b7cc}.dark\:text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.dark\:text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.dark\:text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-400\/50{color:#f8717180}.dark\:text-rose-300{--tw-text-opacity: 1;color:rgb(253 164 175 / var(--tw-text-opacity, 1))}.dark\:text-sky-300{--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity, 1))}.dark\:text-stone-300{--tw-text-opacity: 1;color:rgb(214 211 209 / var(--tw-text-opacity, 1))}.dark\:text-stone-400{--tw-text-opacity: 1;color:rgb(168 162 158 / var(--tw-text-opacity, 1))}.dark\:after\:from-white\/\[0\.06\]:after{content:var(--tw-content);--tw-gradient-from: rgb(255 255 255 / .06) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:hover\:bg-muted\/20:hover{background-color:hsl(var(--muted) / .2)}}.\[\&\>tr\:nth-child\(even\)\]\:bg-muted\/20>tr:nth-child(2n){background-color:hsl(var(--muted) / .2)}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>shopport</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-B5XPkd-v.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BKfg_788.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root"></div>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: sppt-order-collect
|
|
3
3
|
description: |
|
|
4
4
|
멀티채널 주문을 한번에 모아보는 워크플로우.
|
|
5
|
-
Use when asked to "주문 모아줘", "전채널 주문 조회", "오늘 주문 몇 개야".
|
|
5
|
+
Use when asked to "주문 모아줘", "전채널 주문 조회", "오늘 주문 몇 개야", "주문 동기화해줘".
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# order-collect
|
|
@@ -14,6 +14,7 @@ description: |
|
|
|
14
14
|
- "오늘 주문 몇 개야?", "주문 모아줘", "전채널 주문 현황" 요청 시
|
|
15
15
|
- 매일 아침 주문 현황 파악할 때
|
|
16
16
|
- 멀티채널 주문을 한눈에 보고 싶을 때
|
|
17
|
+
- 정산/분석을 위해 주문 데이터를 처음 수집할 때
|
|
17
18
|
|
|
18
19
|
## Prerequisites
|
|
19
20
|
|
|
@@ -30,26 +31,46 @@ sppt status
|
|
|
30
31
|
|
|
31
32
|
연결된 채널 목록을 파악합니다. 연결 실패한 채널이 있으면 사용자에게 알립니다.
|
|
32
33
|
|
|
33
|
-
### 2.
|
|
34
|
+
### 2. 수집 범위 결정
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
최근 1일치 주문이 있는지 확인해 첫 수집인지 판단합니다:
|
|
36
37
|
|
|
37
38
|
```bash
|
|
38
39
|
sppt order list cafe24 --days 1
|
|
39
|
-
sppt order list coupang --days 1
|
|
40
|
-
sppt order list smartstore --days 1
|
|
41
|
-
sppt order list shopify --days 1
|
|
42
40
|
```
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
사용자가 특정 기간을 요청하면 해당 기간으로 조정합니다.
|
|
42
|
+
**결과가 0건이거나 오류인 경우 → 첫 수집 가능성 높음:**
|
|
46
43
|
|
|
47
|
-
|
|
44
|
+
사용자에게 확인합니다:
|
|
45
|
+
|
|
46
|
+
> 저장된 주문이 없습니다. 처음 수집이라면 더 긴 기간이 필요할 수 있어요.
|
|
47
|
+
> 몇 일치를 가져올까요? (예: 30일, 90일, 또는 직접 입력)
|
|
48
|
+
|
|
49
|
+
사용자가 기간을 답하면 그 값을 `--days N`으로 사용합니다.
|
|
50
|
+
답하지 않거나 "그냥 해줘"이면 **90일**을 기본으로 사용합니다.
|
|
51
|
+
|
|
52
|
+
**결과가 있는 경우 → 일일 체크:**
|
|
53
|
+
`--days 1`을 사용합니다.
|
|
54
|
+
|
|
55
|
+
### 3. 채널별 주문 조회
|
|
56
|
+
|
|
57
|
+
결정된 기간(`DAYS`)으로 연결된 각 채널에서 주문을 조회합니다:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
sppt order list cafe24 --days DAYS
|
|
61
|
+
sppt order list coupang --days DAYS
|
|
62
|
+
sppt order list smartstore --days DAYS
|
|
63
|
+
sppt order list shopify --days DAYS
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
사용자가 특정 기간을 명시적으로 요청했으면 그 기간을 우선합니다.
|
|
67
|
+
|
|
68
|
+
### 4. 통합 요약
|
|
48
69
|
|
|
49
70
|
채널별 결과를 통합하여 사용자에게 보여줍니다:
|
|
50
71
|
|
|
51
72
|
```
|
|
52
|
-
📦 주문 현황 (최근
|
|
73
|
+
📦 주문 현황 (최근 N일)
|
|
53
74
|
─────────────────────────────────────
|
|
54
75
|
채널 신규 처리중 완료 합계
|
|
55
76
|
cafe24 3 2 5 10
|
|
@@ -60,14 +81,16 @@ shopify 1 0 1 2
|
|
|
60
81
|
합계 11 3 17 31
|
|
61
82
|
```
|
|
62
83
|
|
|
63
|
-
|
|
84
|
+
첫 수집으로 많은 데이터를 가져온 경우: "N일치 주문 XXX건을 수집했습니다. 대시보드에서 정산 현황을 확인하세요." 안내를 추가합니다.
|
|
85
|
+
|
|
86
|
+
### 5. 미처리 주문 안내
|
|
64
87
|
|
|
65
88
|
신규(미확인) 주문이 있으면 즉시 처리가 필요함을 안내합니다:
|
|
66
89
|
|
|
67
90
|
- 미확인 주문 → `/sppt-order-fulfill`로 처리 안내
|
|
68
91
|
- 발주 확인 후 송장 미등록 → 송장 등록 필요 안내
|
|
69
92
|
|
|
70
|
-
###
|
|
93
|
+
### 6. 주문 상세 (선택)
|
|
71
94
|
|
|
72
95
|
사용자가 특정 주문을 더 보고 싶으면:
|
|
73
96
|
|
|
@@ -80,9 +103,11 @@ sppt order get <channel> <orderId>
|
|
|
80
103
|
- **채널 연결 실패**: 해당 채널 건너뛰고 나머지 채널 결과 표시, 재인증 안내
|
|
81
104
|
- **SmartStore 24시간 제한**: CLI가 자동으로 일 단위 순회하므로 걱정 불필요
|
|
82
105
|
- **Rate limit**: CLI rate limiter가 자동 처리
|
|
106
|
+
- **긴 기간 조회 시 속도 저하**: "N일치 조회 중입니다, 잠시 기다려 주세요." 안내 후 진행
|
|
83
107
|
|
|
84
108
|
## Notes
|
|
85
109
|
|
|
86
110
|
- 매일 아침 체크 루틴으로 활용하면 효과적
|
|
87
111
|
- Coupang은 발주 확인 전에만 취소가 가능하므로 빠른 확인 중요
|
|
88
112
|
- `--json` 플래그로 JSON 출력 가능 (자동화/파이프라인 연동 시)
|
|
113
|
+
- 첫 수집 후 대시보드 정산 페이지를 새로고침하면 데이터가 반영됩니다
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sppt-settlement-deposit
|
|
3
|
+
description: |
|
|
4
|
+
통장 입금 내역 CSV를 임포트해서 정산 대사를 완성하는 워크플로우.
|
|
5
|
+
Use when asked to "입금 내역 넣어줘", "통장 CSV 임포트", "실입금 확인", "정산 대사".
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# settlement-deposit
|
|
9
|
+
|
|
10
|
+
은행 CSV 파일을 DB에 올려서 입금 예정액 vs 실입금을 자동 대조하는 워크플로우.
|
|
11
|
+
|
|
12
|
+
## When to use
|
|
13
|
+
|
|
14
|
+
- "통장 입금 내역 넣어줘", "은행 CSV 임포트해줘"
|
|
15
|
+
- "실입금이랑 정산 예정액 비교하고 싶어"
|
|
16
|
+
- 대시보드 정산 페이지에서 실입금 컬럼이 비어있을 때
|
|
17
|
+
|
|
18
|
+
## Prerequisites
|
|
19
|
+
|
|
20
|
+
- 주문 동기화 완료 (`/sppt-order-collect` 먼저 실행)
|
|
21
|
+
- 은행 CSV 파일 준비 (KB·신한·우리·하나 자동 감지)
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
### 1. 파일 확인
|
|
26
|
+
|
|
27
|
+
사용자에게 CSV 파일 경로를 물어봅니다:
|
|
28
|
+
|
|
29
|
+
> 입금 내역 CSV 파일 경로를 알려주세요. (예: ~/Downloads/kb_2026_05.csv)
|
|
30
|
+
|
|
31
|
+
파일 경로를 받으면 진행합니다.
|
|
32
|
+
|
|
33
|
+
### 2. 미리보기 (dry-run)
|
|
34
|
+
|
|
35
|
+
실제 임포트 전에 어떤 데이터가 들어오는지 확인합니다:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
sppt settlement deposit <file> --dry-run
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
미리보기 결과를 사용자에게 보여주고 확인을 받습니다:
|
|
42
|
+
|
|
43
|
+
> N건의 입금 내역이 감지됐습니다. 임포트할까요?
|
|
44
|
+
|
|
45
|
+
### 3. 날짜 범위 필터 (선택)
|
|
46
|
+
|
|
47
|
+
사용자가 특정 기간만 넣고 싶다면:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
sppt settlement deposit <file> --from 2026-05-01 --to 2026-06-01 --dry-run
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
범위 필터 없이 전체를 넣어도 됩니다.
|
|
54
|
+
|
|
55
|
+
### 4. 임포트 실행
|
|
56
|
+
|
|
57
|
+
확인 후 실제로 저장합니다:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
sppt settlement deposit <file>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 5. 결과 안내
|
|
64
|
+
|
|
65
|
+
임포트 완료 후:
|
|
66
|
+
|
|
67
|
+
> N건의 입금 내역을 저장했습니다.
|
|
68
|
+
> 대시보드 정산 페이지 → 카페24 → '정산 대사' 패널에서 실입금과 오차를 확인하세요.
|
|
69
|
+
|
|
70
|
+
### 6. 잘못 넣은 항목 삭제 (선택)
|
|
71
|
+
|
|
72
|
+
실수로 넣은 항목이 있으면:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
sppt settlement deposit delete --date 2026-05-06 --provider 카페24페이먼
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Error handling
|
|
79
|
+
|
|
80
|
+
- **파일 형식 미지원**: 지원 은행(KB·신한·우리·하나) 확인 후 재시도 안내
|
|
81
|
+
- **중복 데이터**: CLI가 자동으로 중복 체크하므로 걱정 불필요
|
|
82
|
+
- **날짜 파싱 오류**: `--from`/`--to` 형식 `YYYY-MM-DD` 확인
|
|
83
|
+
|
|
84
|
+
## Notes
|
|
85
|
+
|
|
86
|
+
- 같은 파일을 다시 올려도 중복 저장 안 됨
|
|
87
|
+
- 임포트 후 대시보드를 새로고침하면 실입금·오차 컬럼이 채워짐
|
|
88
|
+
- 매월 말 정산 마감 후 CSV를 받아서 넣는 루틴으로 활용하면 효과적
|
|
@@ -31,6 +31,7 @@ sppt --help
|
|
|
31
31
|
| `/sppt-price-monitor` | 소싱가 변동 감지 → 마진 체크 → 판매가 조정 |
|
|
32
32
|
| `/sppt-weekly-analysis` | 전주 대비 매출 변화 원인 분석 + 채널 수수료 최적화 |
|
|
33
33
|
| `/sppt-settlement-report` | 정산 현황 조회 + 수익 요약 |
|
|
34
|
+
| `/sppt-settlement-deposit` | 통장 입금 CSV 임포트 → 정산 대사 |
|
|
34
35
|
| `/sppt-policy-ask` | PG사·판매채널 수수료·정산 정책 Q&A |
|
|
35
36
|
| `/sppt-cost-calc` | 원가/마진/수수료 계산 |
|
|
36
37
|
| `/sppt-cost-register` | SKU 원가 등록·관리 |
|
|
@@ -49,11 +50,50 @@ sppt order list cafe24 # 주문 조회
|
|
|
49
50
|
sppt order exclude <id> --reason "테스트" # 매출 집계에서 제외
|
|
50
51
|
sppt order excluded # 제외된 주문 목록
|
|
51
52
|
sppt report --by category --explain # 수량 기여 분해
|
|
53
|
+
sppt analytics cafe24 visitors --period 7d # 카페24 방문자수 조회
|
|
54
|
+
sppt analytics cafe24 visitpaths --type domains --period 7d # 카페24 유입경로 조회
|
|
52
55
|
sppt product mapping --confirmed # 확정 SKU 매핑 조회
|
|
56
|
+
sppt crm cafe24 groups # cafe24 회원등급 조회
|
|
57
|
+
sppt crm cafe24 customers --limit 30 # cafe24 회원목록 조회
|
|
58
|
+
sppt coupon list cafe24 --name "재구매" # 카페24 쿠폰 목록 + 다운로드 URL
|
|
59
|
+
sppt coupon issues cafe24 <coupon_no> # 쿠폰 발급내역 조회
|
|
60
|
+
sppt coupon revoke cafe24 <member_id> <coupon_no> --confirm # 회원 쿠폰 회수
|
|
61
|
+
sppt coupon link cafe24 <coupon_no> --domain birthtii.com # 쿠폰 다운로드 URL 조립
|
|
53
62
|
sppt settlement deposit <file.csv> # 은행 입금 내역 CSV 임포트 (KB·신한·우리·하나)
|
|
54
63
|
sppt settlement deposit delete --date YYYY-MM-DD --provider <입금처> # 입금 내역 삭제
|
|
55
64
|
```
|
|
56
65
|
|
|
66
|
+
## 쿠폰
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
sppt coupon list cafe24 [--name <검색어>] [--json]
|
|
70
|
+
sppt coupon get cafe24 <coupon_no> [--json]
|
|
71
|
+
sppt coupon issues cafe24 <coupon_no> [--member <member_id>] [--order-status <status>] [--json]
|
|
72
|
+
sppt coupon revoke cafe24 <member_id> <coupon_no> [--confirm]
|
|
73
|
+
sppt coupon link cafe24 <coupon_no[,coupon_no...]> [--domain <domain>] [--copy]
|
|
74
|
+
sppt coupon create <channel> --name <name> --type <type> --value <N>
|
|
75
|
+
sppt coupon issue <channel> <couponId> --members <id1,id2,...>
|
|
76
|
+
sppt coupon support
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## CRM
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
sppt crm cafe24 groups [--json]
|
|
83
|
+
sppt crm cafe24 customers [--limit N] [--group-no <no>] [--json]
|
|
84
|
+
sppt crm cafe24 customer <member_id> [--json]
|
|
85
|
+
sppt crm cafe24 group assign <member_id> --group-no <no> [--fixed] [--dry-run]
|
|
86
|
+
sppt crm balance
|
|
87
|
+
sppt crm sms send --content "본문" --to <phone>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## 분석/리포트
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
sppt analytics cafe24 visitors [--period 7d] [--device total] [--format day] [--json]
|
|
94
|
+
sppt analytics cafe24 visitpaths [--type domains|ads|keywords] [--period 7d] [--json]
|
|
95
|
+
```
|
|
96
|
+
|
|
57
97
|
판매 채널: cafe24, coupang, smartstore, shopify, toss-shopping, 29cm, musinsa
|
|
58
98
|
소싱 채널: domemae, domeggook, specialoffer, cjdropshipping, 1688
|
|
59
99
|
물류 채널: dada-erp, ezadmin, onewms, sabangnet, boxhero, ecount-erp, douzone-wehago, playauto, argo, poomgo
|
|
@@ -15,6 +15,8 @@ description: |
|
|
|
15
15
|
sppt --help # CLI 전체 도움말
|
|
16
16
|
sppt status # 채널 연결 상태 확인
|
|
17
17
|
sppt context # AI용 스토어 브리핑
|
|
18
|
+
sppt crm cafe24 groups # cafe24 회원등급 조회
|
|
19
|
+
sppt crm cafe24 customers # cafe24 회원목록 조회
|
|
18
20
|
```
|
|
19
21
|
|
|
20
22
|
## 사용 가능한 스킬
|
|
@@ -32,6 +34,7 @@ sppt context # AI용 스토어 브리핑
|
|
|
32
34
|
| `/sppt-price-monitor` | 소싱가 변동 감지 → 마진 체크 → 판매가 조정 |
|
|
33
35
|
| `/sppt-weekly-analysis` | 전주 대비 매출 변화 원인 분석 + 채널 수수료 최적화 |
|
|
34
36
|
| `/sppt-settlement-report` | 정산 현황 조회 + 수익 요약 |
|
|
37
|
+
| `/sppt-settlement-deposit` | 통장 입금 CSV 임포트 → 정산 대사 |
|
|
35
38
|
| `/sppt-policy-ask` | PG사·판매채널 수수료·정산 정책 Q&A |
|
|
36
39
|
| `/sppt-cost-calc` | 원가/마진/수수료 계산 |
|
|
37
40
|
| `/sppt-cost-register` | SKU 원가 등록·관리 |
|
|
@@ -78,6 +81,7 @@ sppt context # AI용 스토어 브리핑
|
|
|
78
81
|
- `sppt product sync-batch <from> <to> [--ids ...] [--all] [--markup N]` — 배치 복사
|
|
79
82
|
- `sppt product keyword get|set|support` — 검색 키워드/태그 관리
|
|
80
83
|
- `sppt product seo get|set|support` — SEO 메타데이터 관리
|
|
84
|
+
- `sppt product fields get|set|apply cafe24` — Cafe24 SEO/discovery 필드 안전 조회·수정
|
|
81
85
|
- `sppt product image get|set|add|delete|support` — 이미지 관리
|
|
82
86
|
- `sppt product catalog [--local]` — 상품 카탈로그 브라우징
|
|
83
87
|
- `sppt product unmapped [--local]` — 미매핑 상품 목록
|
|
@@ -141,10 +145,23 @@ sppt context # AI용 스토어 브리핑
|
|
|
141
145
|
- `sppt price set <channel> <productId> <price> [--sale-price N]` — 가격 변경
|
|
142
146
|
- `sppt price variant shopify <variantId> <price> [--compare-at N]` — Shopify 옵션가 변경
|
|
143
147
|
- `sppt price support` — 채널별 가격 기능 지원 현황
|
|
148
|
+
- `sppt coupon list cafe24 [--name <검색어>] [--json]` — 카페24 쿠폰 목록 + 다운로드 URL
|
|
149
|
+
- `sppt coupon get cafe24 <coupon_no> [--json]` — 카페24 쿠폰 상세
|
|
150
|
+
- `sppt coupon issues cafe24 <coupon_no> [--member <member_id>] [--order-status <status>] [--json]` — 쿠폰 발급내역 조회
|
|
151
|
+
- `sppt coupon revoke cafe24 <member_id> <coupon_no> [--confirm]` — 회원 쿠폰 회수 (`--confirm` 없으면 dry-run)
|
|
152
|
+
- `sppt coupon link cafe24 <coupon_no[,coupon_no...]> [--domain <domain>] [--copy]` — 쿠폰 다운로드 URL 조립
|
|
144
153
|
- `sppt coupon create <channel> --name <name> --type <type> --value <N>` — 쿠폰 생성
|
|
145
154
|
- `sppt coupon issue <channel> <couponId> --members <id1,id2,...>` — 쿠폰 발급
|
|
146
155
|
- `sppt coupon support` — 채널별 쿠폰 기능 지원 현황
|
|
147
156
|
|
|
157
|
+
### CRM
|
|
158
|
+
- `sppt crm cafe24 groups [--group-no <no>] [--group-name <name>] [--json]` — cafe24 회원등급 조회
|
|
159
|
+
- `sppt crm cafe24 customers [--limit N] [--offset N] [--group-no <no>] [--created-start-date YYYY-MM-DD] [--json]` — cafe24 회원목록 조회
|
|
160
|
+
- `sppt crm cafe24 customer <member_id> [--json]` — cafe24 단일 회원 상세 조회
|
|
161
|
+
- `sppt crm cafe24 group assign <member_id> --group-no <no> [--fixed] [--dry-run]` — cafe24 회원등급 지정
|
|
162
|
+
- `sppt crm balance` — cafe24 SMS 잔액·발신번호 상태
|
|
163
|
+
- `sppt crm sms send --content "본문" [--to <phone> | --member <id> | --group <no>]` — cafe24 SMS 발송
|
|
164
|
+
|
|
148
165
|
### 분석/리포트
|
|
149
166
|
- `sppt trend keyword <keyword> [--volume] [--trend] [--months N]` — 검색량 + 트렌드
|
|
150
167
|
- `sppt trend compare <kw1> <kw2> [kw3...]` — 키워드 비교
|
|
@@ -157,6 +174,8 @@ sppt context # AI용 스토어 브리핑
|
|
|
157
174
|
- `sppt report compare --by <dim> --period <period>` — 기간 대비 비교 분석
|
|
158
175
|
- `sppt report daily [--period N] [--top N]` — 일간 리포트
|
|
159
176
|
- `sppt report weekly [--period N] [--top N]` — 주간 리포트
|
|
177
|
+
- `sppt analytics cafe24 visitors [--period 7d] [--device total] [--format day] [--json]` — cafe24 방문자수 조회
|
|
178
|
+
- `sppt analytics cafe24 visitpaths [--type domains|ads|keywords] [--period 7d] [--json]` — cafe24 유입경로 조회
|
|
160
179
|
|
|
161
180
|
### 물류
|
|
162
181
|
- `sppt logistics status` — 물류 채널 연결 상태
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shopport",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "커머스 운영 자동화 CLI — Cafe24, Coupang, SmartStore, Shopify 통합 관리",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -41,11 +41,13 @@
|
|
|
41
41
|
"basic-ftp": "^5.3.0",
|
|
42
42
|
"bcrypt": "^6.0.0",
|
|
43
43
|
"date-fns": "^4.1.0",
|
|
44
|
+
"form-data": "^4.0.5",
|
|
44
45
|
"posthog-node": "^5.30.8",
|
|
45
46
|
"zod": "^3.24.0"
|
|
46
47
|
},
|
|
47
48
|
"devDependencies": {
|
|
48
49
|
"@shopport/core": "workspace:*",
|
|
50
|
+
"@shopport/reliability": "workspace:*",
|
|
49
51
|
"@shopport/types": "workspace:*",
|
|
50
52
|
"@types/node": "^22.13.10",
|
|
51
53
|
"javascript-obfuscator": "^5.4.1",
|