From 380bed83ed46fb61b3886ef498e0d4b685c80258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Mon, 16 Mar 2026 20:33:07 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20[sales]=20customer-pricing=20PPTX=20?= =?UTF-8?q?=EC=9E=AC=EC=83=9D=EC=84=B1=20(=EC=9D=B4=EC=B9=B4=EC=9A=B4?= =?UTF-8?q?=ED=8A=B8=20=EC=A0=9C=EA=B1=B0=20=EB=B0=98=EC=98=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - HTML→PPTX 변환 스크립트 추가 - 이카운트 연동 행 제거된 슬라이드 반영 --- rules/customer-pricing.pptx | Bin 294356 -> 291312 bytes rules/slides/customer-pricing/convert.cjs | 27 ++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 rules/slides/customer-pricing/convert.cjs diff --git a/rules/customer-pricing.pptx b/rules/customer-pricing.pptx index f96693b7870866e564e9400ce95fa43d0687fe5c..4d5d2971329ef883f54e3f4d76e0d5b706aaffbb 100644 GIT binary patch delta 8095 zcmb7J33yaRwoWa#10iGqk`TfY!lts_{oc-C7GXdH1w{lGNC0;TBoH7#fW)VwvgW%= zJ$VR-jyj4E?U9l}O!83ip$Lw+u_MYG$rFN#>^SGv?M`<><9yHW!&KLD&VNpwI@{fQ zF}dMba_f=92#t$z|LbsHaaHTC#Qmdm7k|cfasN2ea7xwkBr&tTrxtt24U8katr(=G{Rb9<7t(w9TENnM8=vbQ7ueaQ631(O74uF-$=1|t z!x@t`wCTi#EJGapK5Kid7`%SNrA#sS>#)~ai@}|D4@2(2S%1&>V&dt0?;~RH&++vh z+pi`pK!R=g_hWYi?wfRsCMvq6`Li-7&ABm4mHh@s7mm;9L`fW{hRxHTysj_M+{=i!cj?$jqbXF$7(M(e{O*yN7&VUKo50sT=PAUV8 zVzZM}e=bn{_)+T9E!k8W$yk;FWTxZ54NGR=Uf$Xt(}ELDa{XB#HXQ}}R!t#3#ZnC2 z-xOFe3dk!DqMqK`A5%1yAUYuU!m3y#`7K+q1Nk2$BR=vpIg8l6sW{Q8T~p$%@QQEo zAjFf-kd25fABU1yc^n<#ELxu>foy)W@#I3}lD3E?y@C6&b&uc#-sKYM zfSk3jo%ew*R8x;U(r?4B!C9BlaO{+Bxfr8#Y&;9gf+^eA0p~=#R3UoC|~5w##U|v-<0J2klP{ZA-2%#(|{= zkNFx&0P?!yKZn+<&)$mJnnA?p#Gm**G?`p~SC}R2fA_bD{i7QpB-c;FY}qEX4AKmI-&GMYTu2lWHHWSA7-I^zHu*Fh}ilJ zlqFWbt>su;iPNJdKd@qRD~acHMWej;T$c7FXKT`EAGUKQjpMts(3dE|^)KC*Jb7X9 zOEEEvUvd&_Qu)W-QHmt#@SnzuzDJ`lGy0&Dv8t@unl1DFYrsMpujh(nTC!!i@4hZp z(pB3p4&8!zRW|BMB)_cbewWNGn4vuMt7I9PW%CPp=rIx;R}Ml)CCRoF+YBVvg9FHW z2$VDJHJst>d8C%VJshPHpXCS2e)ic2lp)zNSTL)I$7h}D$2&53Fk{%B)mUP+cc7L| z!Ze*#B;(_(;tq7Ur*|&+8Vy_4&8EJ>?-2vf;}RRnHvR(duFDHOn0zDI%Xf`NZ&Jwu zFQc%9_XyT-i`Qb!Hjc#?*xI3hBy}9x*F&5OIReYDl&e^~#G0^Xo1Vt!`M5$f5ciaI zO$M(EUQSp1;Pb4e$5o+8)v4U;A#X@SeT3GSJQ&sSga=Rt@~Nt&S*lPg2elSbaHIyD z(kfXbx*=4W*y-nHGdfKQDd_y^GlW z<8T41n2cIwfXx`-lbh0MVmIeEp!qEKMKr#bVTJV_^;}rG2rCKMR0;cOJ!#37yo^To z3|_mqgXokZ%NlOS`2Tirol>XCin1fw-SQbmB(;PcCikPW=H1Yc(!R5N{NVECo!A+I3Ca5 ztR-205Tw?PY0+N;E zkPn3xYI|ac$}jwe+8{}jWnJOw&wx_W?MB(*40FP_?~<4U`T?x zgEJg>8J(9PG164`Os>ld-kkW61F4&V7a=~3;@2@~$CM2hLkV*I=utMjCH~o`LP87C za!?%ZhSOEew3<0}FfUoRIK;LABm<;?#HaICl4#*g)FXBsK zx9wD~@zO=MB^75$eh6l^3qA)iz^i#qzE3*79F{9YBlNmvvcyh!;Z?FGAbz9^E{LXZ z_FfNsB|_hoB&g}rMfiOzA_+?<0Rx-X7pGDkasm!3K}h^UKl~XA!>Pe5XOjX}ui>s& zVJM=K-&R4Q$lLZ0z=@Dki+NDgRLr;L;i4@6tHDyQ7e`+ z1gA!VVc_ix*z8;2D1=~}=Yb)Jy9a%o7>*x+q{r4(arce(_sJc&g^S3Y_Ye)f3#UaO zs=>l7LzZz(M3cth$|g8+UIZMm6W~%c9jYVmQe7hiAaf_-LKjFA)y&3WrN9f=KLs90 z_+E0!HBERLhH@2v~qSd2n-;Uv4SnAfP*VpN@8t@M34?fsfpl z3HMTB9)D}g6EQJco)GS3&PouYNrrp;1$@e98mgiAT_EhK6c#si=e-G=g%9}3`?eDLld8SxS^*rp>^ z@eQ8KHr`4Kec%xwv1V^0SU?EwGVc?7zBx=4ONOj~umJ8Y!tF2c6|jvc z5HC{ja3){)EiMI(*|MeZWZgvveswGxc^-1z&To*uUgBA?6L06!kK!)K+Zw1V@^+^3 z_mAQIl-io9vrH59^?WK%I)RTOpF3;2C15gg`W+av@_T#}JJpi>#Fw4K9gzf?ho-x| zfy7v!CR?VdMY^w~A>;s01{|&>!(yOfZ<{7$j`Izda0-F~1KhStW-xvyp8SInTTyxL z6(~wPKL}V3awV1|B6o!~OhxBeLn~C`!r=htoQnkNevbr$(x5XRnLzHxjk4wwt|)IzqgmUNA7)xvHYBx9`?G^cbV-yvb?w|6ExePYzP2MLDC9TP8pG;?)K z%*@rUEwgqXk$l#BH>u|ft|LD}WgSts)$}8$e5$5{d+^G(%_;#m6lvO{4ALI_1lX_* zw*`J|#Xyn(Hk?g<^TDhNCrfNH471#IB$lBj1U`w~Zj*G$vY;d2RO~(HR$g2# zhO~{>4T#aV1BRP-*{Ld)zLlm-VP}T^tZu5b)9Yan_ zmZ{1LKlB{gj9AUxWMX&2(iN}V&}0Q1NYf~<*s`o@p*nM@TivQ&0`kx*GAkU>Yi}m; zKEqHI)z6M>B^ea_l2F})Ea?@T&Khn;r`>*0fwQ7CKEniWWJgg3Jn#so4Ej63_DvxF zWTge9UC0O`qyl9<=3IZakR8q;t=RMek}5^jQ}M&(s7s@5?6p+GCzGEf)6`Y)LqavR z*W-d-;AFzuG5w0A`u{)Lag&QewtFjy^C^DlJsIruT-=ES6%)28PdU4Pz^-yybp$VC z8gjFA%r%v(w6mYhnMHo>0P(?ZGy`_EW$l^+PXRh!C89sX4&}hlHl+j_M6PM+Jb3|u zmW^BYdanl7QX2IIi`|H1n5JQJeguD}JLHT=DjmMzi5yHt?3WKS7R5 zP#)M?R2$i|6#dNdF5~f@8g$)+IC8aISE=CuOI%ET?f`|N+T41Zs6o7$!e!)GdbF)k zEoXfdITnrZwd|<=S#px-kOUrhj`x25Wqs@Tnixz^j_@V4%OGzF|ihp-JPGW4P# z%%$>EYsd*nGNF;}IX>2K7?<$Eg(w#B+g>H{;8NYSU?wR419Cn7%Il;uHu@Qsu$UzA z4S$1XMwEjWIGG?tgpa9^I!9{2^kSo%m6Q7YC|E9@*A=Jrd^M1v>opsg6MVp>yenTcUw(p&KWJC2bj!Ju_F%@XTgw#pzqPv+S_k_tC|!IecE=I|{c4!$lJ zni6hvLn13C_@}>+=>!UFD4iknhx+Hx68-W#1Tb%&FWN^U(kamj?}dHffWc%M&s3u4 z4$ie}il;pBZFT4)_0 zpGoB%;%Pb-*JUP9#~Xc`M1zt2`81m3&231hUvy4(^V-{XT)*sn6cgkA>*Lg+cJ6nk z3|?c?kG;g;nQXeElOWk?EG_Zos_v#~E!{Z=qptkZiS%3xw<{0shl+1Z?BZmqiy3ta z?Jowm7tsv1a0=}pepO9{UwjJ95Wn)L!LNoXRD4cj?TTo2=!p2t#Kii`MZxt7clWU( z+ADnax~Y+C4^0iO0T(m8>4(rJ0j2x2AQT`zKx_iKH;KWA)99bXfE3ewF&I)zbHw1O z;vmJkV)`f12zNi3FxZxMsVB{WwIc7+Cs(}R3&n;s;#JT&v!bUIvY?lgmr z5menTVyt{d5XawV&|zX)dlK7vy(HaAr6a<%7oc8m5luu3j8vf#-Ozl$Kqzwc(FmWS6mGE{++C9 z7VRsD*Uf^vR6a)z+SYX?oEC|u+iPK+;TInC1v6*UZo+2nn+;nREW{r1s?cUpVYzh4 zGnJT4=uF^}XVc_xrR54q#ykbxh;3b&Sw>ScT>}mmTrn{z;>&F4e~&)Hrj*fc;gr{v z3g4B)HkHwS0?CmwKr*onak*u(&U0wInC?3Vru(N8!DvJe;tAi?H>lbxa{>9EG4)hCE`i3e8|MY38a@x!pfVDwb*fV&_6#fuq~#B_e^=NL zd94){QtwQQJbD_A;;pS&LODEU_u1!xkHA%Z*tl|ds_w)pn23G8AB`z4E@g+?)6Q&P zd64gqutfR{r)xj_!9LR}^)SD+Aj2i>vJydI|5vX&Nhg8b<_lf%JvKUX2%)VaoR5Ff=vC1v#Q9RXh_A7ooG-f&cUZMDMnGQgCLjX=@_k1Exz;nZ z#_o&6B6}cCU{RB4i*VfbLZk*aC)j^O?ZkK?a>gxKWg7L^7jY{A?1)2D(t^0V1~+!F zw_rim{v5l=uH$>eTo0l+-+_sQw-b(*mX@lw`j2ioshwfAxyN<{@uJi@~UILy$ADUmyPu0a*6<1R@4! zCY^K19?MyX1lemrqobLR!vLhNA{6q5}2I#IHsDe8SHWas%4pf#dB=AJT7ow z;ThzSO-;4*fLvTg+PdRZ@05A{QVm%StlD=M3Y?rf4hL89zt!Ma#4aV`4uQ$@?v^~J ztf-c0moH58D4M04MqvBGYTDfer+NX6rt7M%%c;Hl_s!{(TUz3sQra(7br;*Q=dK1S zo~foDzpTop;^2{B%G3fC3+LcK&lPiUcX#UcxJ=Co;+l;D>8oZDk1A`j;tyx62nFQT zCsB8I?)Df#lzNQo)ELCxc zXAnu#6hjUCabI3&c=f>2mPEA-hL)pW95WlrybDP>D~iI$?SscI!>L&C2~=DiiUV!G zYk@+5*mFfV@WRO&&n{lqx})T z)Di6$4uJnhJZkBl$G4Rni?g!3?#T$0zu#Ko{Zr6L*9nw%{F<|jc#_6HOGQ1ZU8{JP(?c$tj$ zMoOyBulk&o4`aTn4@x1_RAoP}?tzA2h6bW5l5Y4FnO_@-o+iO@*&tLc5k*%5ZO^qw zY~VDIxa}(>!OmW~m%lp{#SxDQ-ovM`LnBZk^@CmU_2Usk;G2GBiyuW*-Q4-$P4%0y zPY?Gamb1xX;FYf070(Q2`D0L9yVJU^t5eBQmWfHSJ)kVfxe}UPez3c+L*91`>Q5xo zfGfckjYo-+UsVl-Zy1jrAzcMHa`M`i;}=28*mC%Aog4=;-Ix`3g-f9l3nlp{l{o1Upxo3 zK&x*MiCxV{UrT<&P<8f20jN>e6`ke$ihp79NAALwi1jZ<-%6J5H)OHMqv)DySa#Xb zt97eL6Do7qk!R3xc6c88o;n0pFGNX=&@*hv56}a=as?`D zO5YXWg;nUEU4$Y9ZdI1ya;V{l2adF%cEiPAz_MOO*$voh9z_%OKr=PqJp8(*@v37x5XW?)-MSs;KiF}8&5jGpcY4pWigPPpWv{J5MQp+< zlGV)*rVJM13f3&nTM7m${{uVqCz5qHI3&k{ZiA$WXmy%rRewQQt6xRYiMmhonf`Ez z{B;)J9Wn1363x=1kmbgX@BalhxbDxWjHSJawzI{jNN;{)EgFni`desGV_O=^V>Y6t zh%MR**T#{V$=jP4lyiIBOHs-WO~qM}LCKf`YwHcS?rJ=ZSmnPFhy5rve+OF5y_-=q zV!zuAu^&z;iv8hz)S)pa!P`^21wG3)766gp8L+>8(Bzi7b`kOQEg0n_lzx`-5)uninhmy_+nSBnPsbzJ;|nkZ-$r3pBtjd< zwCK$$<54PKu^;{5hTh@>=zz$Hc>ga@3>GoW6`s$IoFr}7#*3(!Lb7V`>a%z@q<@YPO}>nNk$jfV@8ind7*YsXhg6V# z)DO?ICL5Nl z@+mh^XB@9-s@%v=>N2DY{`WTEz9bPYx2{^@7hVmD4Kmsy-1DU#9Me!v26B#biWIh| z8lMJvuSte($T~;AU`W9rwo5EC8rL=ylR3e(ZV!u@h&=4Y5;T|fip7f>$U7ACo9!_q zkPVg3j>qF0AqenQMkGh;DlZ#?Kf4t z9aFCnxCGa-1tfGFdm#OviWlF4E5}u{qUmtCo8ACmXuj*W-^;_Pw`Prl$39OY4a-s? z&lQLaPw=V|+!G4yX7c*Yj>}uz#H%>96n}mZ4kquvpR@L+NZ#4aJSy>hWq6I- zG}!a-iq>x8{_=CU3Pn4KyYEW7xgRc#i1?6~Eyro$IlJ@{{>kHqdjXllwU_X?201%8 znDwvV1rnSqB<{)UaeqRgy4QK^ZVc`Ssvd$oKFc(zsj5C-ohrmyC|1@V#PjWbFUGJF86?xAT9$69?7()ML<~jeRq0^L;Uy`Q zI8Y~K?7)ANB;EAOn!_C2==fdu3iuw=r}3QE9KfVK_?IReZUPR$THv~94qMv^e{3JV zfp5*+by)28gY#^zIOb;$9#knmHCNp@Nw!f zOrI=UjvE?|dFv`nQ4j>hS}c0mOXHX~3T4#!A`bqmC3saogi5D<(iVy-1DX>-cMi45 zy@>a^fIVRH4m_|ozg;tEgd5}sF5wQ4C_~iZ2W#*{nD@Mbzoe4Sr-LT}mL?K+d<$M2 zBp3L#8@M$BRV%9IFa(wY-t_5);xec)M2Cov^^j$xSyO*gB!#z$qL(E91~-Z>k0HS* zTG);RqiElF5{#lBbT-dYhwixNqr%JgI^`N^XgvSTYf(-F8ZD8O5U2h-vn z09f@M2b<)8D=42{nLn08{BiY9$IVPFTg<_dHiT6M`Y?`9Pa_T%T z*x@bv5{j^8@JC)iMG!i+;cPo*L#rf3HKG00C@WTi;y87n>wQE$2Cap&?DGWNF49?0 zCs_6(6p7e?ab$`8Q%x2du>|=2BmqNSs?`a~2R=@q6#MZZ@=pgt`!HEt1VR>N2)Qho zeyA9D?K1K{Vkd`@$z4oM(cH32QxsWkRM(1H%;GDbB%v&%B9r_eLA~VnvDiXz2o^Mk zK<=pl`6ir9`9w6yE-#5WB+92Ze{ zrVaG)br!h*dhi)mP!Hu_LPBdowNj@FLy--mQFhZ*6`8r@2dXPRnZ*?1yBtjfE#Shp z&_OCMY0bVYAaTuV;W%S6$ra!lnv3B{R5QnaHlIWjZ>iVbdpeE9WP=4eEh?4?#*m=M zK1FMkr@6Kf82ITRu&`Lvor!9zsD#XBYoCH3;8=Z<+T6~N%0yE!Z0jk|n5rp!f8 z{-0W#|1_xq+iAKq+;-sR>{?1{nnN1WhUnKdFd%6exkyZ(#eZH#5^((uQlVF-nvJV5 zr<>9E2K}B57!D^0)lX}lvy#lmkd)}Mrisix7TJ5=h~q77a#oW3GMJ)>9!?A!!v!0B z`kzS@xJqZvjX3q)FsD@DmFr1aWb=F3-HS*J|NKpYZ-?NHEhI;35+OJ=IeVZciI6C- z{=Vg&eQsb#-U)$0z}o*X|82LQ*{OrX<|dN9Zc}sq9x~D`z>ZXg0>&t6755ns5z%LW z2pIGevai8&M}HE0t6;C5!S~o3D^82&3f|`+nG9jrdFJbgh=O2MZ|xUGF(;c0vAnpifr zhWsXJrfD>KG^llf{Kp^3Y!azhI`jzD&;tNuUzaYBpF?1N;UXy^9^Fz5(R2^JJzTv) zYJ*S*&os;@)RIR@3?%j7o89*tP1Q`kJrDVSuQiZzJB&le@Qg=Qd{B|Gi#JFTbn|u1 zv@<>xeZYkGytKDl+K%3QV8mD)5iu6CqWvg|jVPq8*t{>0!LoLeo%XgJ$-JD<(eBZl zq4a>8z%H0}=T0|)J>8mCxwHGD=~u}j174p-CGlRx|GgJ2ze~WZp|sdtw{;lp*wTS9 z7^UztkI~u|;@6riDxTX|$872okm1?1w-_vjCXc&iGEHP(Wz$6Q+vRN9R}ADF+9$Ly zkv*3~6GHQetTKnDh~L&ufxS0#X!rWLL6aNKEtwpg+d7%*^^4Gy;3D86kqw;E5P4~6 z4v^m`wp34{_liNMsWd|jrc9;%#o#YfgJ@4qrT2>K;Jh9(Z!R^&{P=ZE1AmXBx9K8;=;K#Xg)) zqf(p#slE#n5z#@sEr2_CSo&*p#pj* zgH*T`yD%##)vqu`1|<`hnm?b$iXDUV0UXW&LlC|rqV5j?CJ49TsF$qhNQKl_0E5s) zbP-LY8{%n%Jt->5mb*x7SW%GQ2{1+Gnv`uzqv;KWAI(o+u*1`AG}g7BiNz!9#;21XEeXaHP+SV+)F@_+tSk S0P82Sy~VVLXJ;OT{r?NkQFYM( diff --git a/rules/slides/customer-pricing/convert.cjs b/rules/slides/customer-pricing/convert.cjs new file mode 100644 index 0000000..feaf880 --- /dev/null +++ b/rules/slides/customer-pricing/convert.cjs @@ -0,0 +1,27 @@ +const path = require('path'); +const fs = require('fs'); +module.paths.unshift(path.join(require('os').homedir(), '.claude/skills/pptx-skill/scripts/node_modules')); + +const PptxGenJS = require('pptxgenjs'); +const html2pptx = require(path.join(require('os').homedir(), '.claude/skills/pptx-skill/scripts/html2pptx.js')); + +async function main() { + const pres = new PptxGenJS(); + pres.defineLayout({ name: 'CUSTOM_16x9', width: 10, height: 5.625 }); + pres.layout = 'CUSTOM_16x9'; + + const dir = __dirname; + const slides = fs.readdirSync(dir) + .filter(f => f.startsWith('slide-') && f.endsWith('.html')) + .sort(); + + for (const file of slides) { + await html2pptx(path.join(dir, file), pres); + } + + const output = path.join(dir, '..', '..', 'customer-pricing.pptx'); + await pres.writeFile({ fileName: output }); + console.log('PPTX created:', output); +} + +main().catch(console.error);