From 4f4ebe1e6854dc32d7b7111cf6b71bdd1418eec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sun, 22 Mar 2026 20:33:04 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20[bom]=20=EA=B0=9C=EB=B0=9C=ED=8C=80=20?= =?UTF-8?q?=ED=9A=8C=EC=9D=98=EC=9A=A9=20=EC=9A=94=EC=95=BD=EB=B3=B8=20+?= =?UTF-8?q?=20PPT=20=EB=B0=9C=ED=91=9C=EC=9E=90=EB=A3=8C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - bom-v2-meeting-summary.md: 핵심 요약 (V1 한계, V2 변경점, 테이블, 로드맵, 논의사항) - bom-v2-architecture-presentation.pptx: 9장 슬라이드 --- plans/bom-v2-architecture-presentation.pptx | Bin 0 -> 386281 bytes plans/bom-v2-meeting-summary.md | 129 ++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 plans/bom-v2-architecture-presentation.pptx create mode 100644 plans/bom-v2-meeting-summary.md diff --git a/plans/bom-v2-architecture-presentation.pptx b/plans/bom-v2-architecture-presentation.pptx new file mode 100644 index 0000000000000000000000000000000000000000..00bae4f19a79ac564fab4bfc4b5d03cbb009e0d5 GIT binary patch literal 386281 zcmeFaYmgk*l_u8GC=^4^D!krZdF>w#r7OY?N@8_YR%X50Xejzs5G0_1MFW(^s~I}G zD!Z%1s>)Jkbpw#Z36N^gToPK560iiRh6WmONJ@kCfFdb@J5*@BVTU)Y@DDq@Yj1?@ zuxB=A!l>$qwf$!!HvIVRz4^M?mD!cmw;J8m$(e?#vhs2B+#7hiN~kN zf4}{;&9Bi9_CKG*|2}Q%O)GOg^qj|VPR*#EH;qozX`jGpolZC6Mq~)&jJ+QCJN9|i zx@LBx9{F$cC+>CMf6G2yZ>{RJTBE%lb#G^|Exp#zB3{ZFgVk)*^fTI3V1d zclurf=bmv^v%0z&HFWM7&gpwS!y!5ySk&FQ!B~4vrbEYWU2o|_(6McFb;}ua_@Z>) zkvn~_cl_%%@##e?WWu6e^xqk9_Mj*H@PB{mhyNo^CVzhu*ZkcDqutfp-KQ^J?daC; zOPkaIYNSm0phS8o)$fWUw=ki*d^;B?_q5Yz5>T1#@1;MzKR?l zJhJu1+Q63~#|K~0Qa1xvY+}6{nN~*)y8^%PbGg?Qn~}3WU=oeBwMJEkGT3NgfluT5 zMN_+sMI17uD^2T4U`+n?wf7UOj;U)ktFG(aR&$#EFL~5Cu#yRKNavv;mbDhvZH8zT zoNZxXbb%4R+t;)GH^amIU#DAIqwOq^u)%Pm$@fJTJu=_D_ZkzG?v8ZzeGxt;-@S(# zla--YjAtA}jbH#(a-wHyM5>Hu9HUZ2IV4mW&p1YGM;gaN|pQ}p~`s1F)CFG zhlDEQ8ONwpDIOB4jAtC9Ql)fAs4|{$j7pXAA)(56#<3Sw2o$C67|~R4Z@kwCHXHio zv5dgI@m?cf{sj8({y`(X&7M!xR-5`t_i9tOMAND8(o$es`qMO}@?zl|%cqF`R@t+v*?&-u$T+?g2 zAATZ3-O?v{_x!*5pa1E<{=JV+O_4tmO<=xq;_$Ub_kUmTyNgHkgL5wD)XB#md+db& zw$ka^Y|1=clT#9Nf$!~RXOvpB{h-X-&OIeFfOxpQX0Geq*_697oN3C04k|bNpg7+@ zKbn@_)oNN-Lr8#IOaq4GF4pidDZ`IxZ$j~Bcmo>f&ShiD_-D@wtinIN*?KvLuqOE< z@tz>9M_-Br?=l`7ejV~}#}>-Kr2%Jk+nU+L;uvl9Ij{K?jjCx_##&c8N8SC>dE>Hfo;Mop?um^5L|k{?=Wwsk zIMm5=?X*=jb-gXE)Q!v16LMju{Mi$k0cVoyHB(zRwN9N5$M+4ttIgY=_wE`-vqYa8mx96bpi_B@$A=pu=-#(ahx^BI)Z(#1v>hEU8$ zVdC)m173$7XCx*|HxrnF6YOc{)=0c(@RZ1ql-`_BYIrlkh%<+IYWha((476cpfww- zW+U`>n;C)>=5NAi!zjvb>n#HI8=KL=zbU?l2d`5je#=MvR*3km81Y*v;x{&p>>Y?U zC6nr#yx?S=STI^0t$p?6`A+xBDZTxrl@l4~5GMOfqy3C^sdLd-)VjLEkNiQxu}B8d zYf!n)8QuZHv4~xpO>(1!y4GITYtC7_f56!gVo$MH{7JbmoyC7tusO$Y2E>&k>;wAc z_f9|e{eK07L;grAgd=#VY9*L!LOWlJGeuLYy0`3X zm`$2HP^)J2Cd3CsRYsncGb#J=wJP#WT3-5r{{s4p@61-COS1@UCFVc1R%JiBXJ4@z z?jSB-zC3+dp~FDxf}Hv4*)uCN%OTxple~zk&Tw0;I@2YB$6HF0U$LCXxF?Wxi7(d1 z>enH;qt16uv9Eyc(je)*E9gy~qvRyaQxi!zXOX_K*3fJ7+```dqkV~~Z#GEM#Ysp9 zoaBCGkEMj1p-<6k5=b+{2x$|4<}1p=;>AkpWG2!SB7dI&dwBU?e)kgLlf!2ijNdA-2&7?w zW)JE54%$(0b_VmGA=|+ZcO7FThFvfSgYxD99YJ6~TtGf#5JC-sh(R#NUC1Di^ulo1 zXux@BN-$?#$RP3uGzjLP3mF7Z>48v!IpsnIQ9PhQFh^X-AdpRWAe3Ovw~#@U4`>j~ z;TAFo8JUI$LJH<(3mb({-wO4=1*NF(pq24`iIk$mXb?voqTvX5LuRDo>2VKHZ(JC4 zgvwDjg656FJrp?#p@Nh~)VvYUuNnGp^n?f%q`t74Zzx`@%^^pmL+RYd|Ce|ETWM;F z{QWH((F9*-M9hCeo1u5Ifwtzt;fM_18cVorHJLMsBqFAyHcf%_Tc}9)wQs&;V|sF+ z+B7Mw*10R_xwU6xa)x!)T4k|fNGHe+AZ z?1o(HyRJh2v#+x+s6CUT&otLp-G{1bUMr30k!Z>xGSl zzh^PGK+|S1X5UHdcm3cb#^viP!^oGbx&C{nqM4vdO5FF ziaGn{-dUimySm6D*5L9ATWc-t>xM~uV&p`U4&Ii!FdNsjDtv3UA4WRUSg&K@!Es<% zIGoL8D_I5qlK)fbCpx3rjIQ~vCgZ|LtX+r5cqBL`8y)yqzl6J{e5d^7g9m@{{QH0L z{4f9FJKy<>=l|4xHoX;h-523o@L$(^`_=xPYtqB_?)GlpVvi1<4`txJ+h6^|zxP-F z=+{xV#~XX6|K&fp|5xwd|I6Ed|Nr=tn*;7XXKJhd(}}Owl9u($(gmZ17aTBtebtP2 z#l^bT@Lw^9T{Bu+BTpG{|D|r7JA3)6*3<@^H?Q+_e9DBV8Fb>QjjwY9Ua6ZK-Nt}B ze!1S_PCRQE&3VHdNQEzxXZgr{aihIH_~GV;|GW#DwmIn83tF3-<)w`d+^~&7w_K>} z+%V5K;W@^xhPK|7$Zy6ox<26Tez(!!=<2!Xf43pcYmI>NBTfZw;n`@drNYu=kEl$Kz=lg&=&Tp)9OZ$wDi0@^srt8wB(}T`8 zIvmZtL4TZ-$#Vy$teccEd&)KU1!E;q>w=^^C z&dZo}Kh2jAa%c@&0Oy+3XZ$BFH?YeK>t!HO&RMvJZ*hm-^?Y696d3t#4PLKTO>X{% z;W6;#*STQ~!I!v3k9`dUyZ@R<+FV4W&wsMFU@mG6>C7N;i%Yoa_bwsIm0q?n@VYgg zX}xIxI^sZ2tI^&Q0R^y6{$Q}r0G1PjdIsN^6In6wPMApfVgTiYofpJ53kZuh4nMS6 z)Hd4Zb!d~_aw|bL39?B|JhBPn=LFA$p^gO4q<}LLJY&09#NZhZ!T{Y6w+D0gQ0Gr8 z)c3R2Xg294iZd2<|5&hUY84zL*HOQx?)m~db$ldh4iDhYL&_MvMly}=R~p?qazRM# z0-1U;*Dd?j>z33pkhhSfhX>x9I-oXM2<0=Erz|_(O*~N}A%6RKHg9|E;8jH;96MSl zdTu=T_H?xC7P+%C0CH`dLHHiV4?-C*h@x|l5Q*eW5c&-m1bs6hqbLs;MTy+rnW|l* zz|h=Tf!Qs=Sf5ShRa}CL;3xn@M-HxYy)(O%gd%4;jF?UT3INPzZ{nZnG8t>=>&2RB zZVEi<)t;(QC+3lH5tQ?B3U}7)m_xAIwLq0It*tc zc}X{=W}`KmBCqeRhGv_}5IQzF2Z3;C2UmtzIc$T&r1O)kudN|n%RlYDBZSiIDV#l>+r>@x=#V^d+=~R@v!=c|?8u-51?+k+aNMb9()pep^{Y2%osjD^E7(%t~ z-WL(ddFrw3=}bzM**!;|NAZyju(tnQb5ChvvNC9zz=j5cs5i!MSaKZmy0P_&6LKN%P~n;Ht%; zH3wHxO4Hc6KfG1-*#lvWirn=a+&l=NIaugFVzIlDNYdlrhNTW`sE7Pqe;jM2PmNAKzJT@n12vzcPL zYP2#e6_4dX&1LVLrWBSST)578mlR za^=~Sgi=p9S)EfB)WT9JU62DJbAkK006psdOp`eHpFtw`XPU>r|D5yvT-r6X0@A76tINB8R((GsJM=vQm@_$pRu=MW|vEDDNXsDOaN6f!RODSppHN*aRwg1j^+~SU`yg z!U`f(u?bZ45vZstiHxR-i%`WTP{|_@p$-s4BBVE)geo?H%02=W^2J0*(-lOhLQR3) zs1f#o-`)zCdSCtFEC1v(AH%*q{5e&=$?0@Y1Id*aW#<7?GD~grjQ7K5>16`c{Ga}x z?|$zW*e^i-NLg^Q6VkUKVSn_5t-k6y^!80mEEG5o@(a0KURCGP#igYJae(B~^I5e7 zFUb7jLbLHY6!~)&4Y%K9KZ}OlXy5O5_!bMXrjY@Lj6S4o zqLQ9eH_UI&Yvu}SS0j+w(ylaGs5DW7nMJk=TiB4S*Uspu$w7^=e1RFB-ftI;4*jXD z7F?Uw{{UvbWA`b09{E~bY1ZtgTWt;d?@ytmHZ>F3*K^dHMjaOPbo*RXtf0j*n2`v> zoJ8-4K(?+(#5h#oSHNxHU1V0Bb#=gD;;3NPb!H5+0n1Z@nVgexEi7aO`?8o>UiF5% zzJbv*2Oh5W25);kxL2drII)(!%YAnWj+l*?8?AR}@JOMFF;2&M;NBZ24|w!C=(>XK z`7p1kH=tOcScmum*hluRn{*`vq{tVG|EBw=C^bO-{sUWz(4DejB>+ccH?j+zI$79# zCy?bNs`<=KmM6g8m#iXtE7amrW$x0MiWbiN(x3BCe~Sg-TY} z9sdtKnJz_kvDLYV8aU)O?afnWXNBryEZgNxFgsy0xVYG^Ewb+D5B6#FYa6GrRl!}p z?%YY6xw2-q2-m@-OjyUaAgOzsE;Jk@i_B)kY8@NIcAZ0Ps zN?5^uEqo-jqlE_Wv1y*wI_EYiE^E>LByhRoPzOt%y@u};a+_w2t+T*t|7ZW*_y5l# z&x{NJL@~DZ>6`MhoW)<@N+-D{?V6N7Wuwsh7F{ZdqNo z0sZ8P79v>)o!XnbB_+K5Oj6P;FNwIGiTELsl+t~fUgL^Q`YVy2_6O&NmTfls`xI$5b6=ij?7p4WJLb3r&ZLB2NK;< z>IS+oX_s}&$XHq{gDOT=Mzav4vNEd;a_H&R#?zPUNP3wjU2X6TJjEqD{l?~iJropa zRL>aIXDq30uo6sjRtHoeiq6&mm@s;>eX(zfFl=^r9CKb`6;<1uv_SG1F&Emm%MNx? zl91!%N|3T^>fLIckeDP9UBHvcQ++=WK5}nqlaX9Wmjk_rtx5A_x|uq)BL^Aw48TdM zC*^{gFXwD+S;)!7GC`}Lj&n2I)tU2w>w}HVIfX7$cUD10vZ%wk0nsZqr3Btm8RO0h zt^-$)^*$;y_}*Ps5%32ca4Qc`lybQ;^|BCH!M@lM%i${Ltp>h0osq$e(Kg6r(}xXO z@12?Mm3gCfl?-MT|BLl~8D#^J_w|hp)CHpvt_6byxlk<%)|8V6hFM`3kV~5ui=WZw zK;U4a2&bURX&WmQQ|biM=yNuf(TfYG;uf~-pa93jCD^u!3`V`3zO;h;Ma0KQd=CZa zD6T_NP?y3kau<%3IgaOc#B-+wgJdk>UFtNj#97V(Y$PlM(jX5k>modEC-j~drR5wo zvjW?thq;a!KH3aOLEf=@a{k;|=_!=9BcI8?^f0Q&l8TNbgcw3Emr^#BDK9uPjdjh~ zAedXN17R=yIZZsQ2D84{t zfIU~HGeQ1>0DE2}k_|4k8>Gpf)|Aeo(Ox5cQEy{^w=`!~i6*6a9x-?%K*kYy1TGan zd{V~8Bqc>9nv-J^*@+DjjiC@Hyb2~19|Ml7f(Bo!`YkO|{cx$4*msALODE=WKo zSZuVx!a#y3c+{ngOjYiXQl^a5xOti@1ntDFouj90dq2O~f8(c8@2A&xUcSF`{YG!= z#?DI*B%*`+x3+eke{<*hcl$rTE%mqFeE8m041p7%=!gObnPEP5$&Zg+l#-Gw1>_CK zE;$-jPS}M74Twj6SfyMb8HV#V<&HYL{Oq0H5AI6+*RJ>f=z9MS_~JXy?R@{mOn+;; z_u*Fmr8lLAAKdG2z1zRDCGFh0-FyBvJ?XWZ{kOOJ+aL9Qyd8&ycq)&`Ldc%^FEDTWCWgpm5#EOXbpm1wF@R(==Ws+neDIYy8WtC|u7spx;&})Cwav0`6j)6K! z^Z!KuCm(&b|Ert5A8hv?+~~da>;Bu<`meo8l;DN`2$ie;DJw7K%F19EHkv7mv=KkDC>?rQ2gn>s!$)b% z`nG+Fa3up|U^T{aB}ceCj+_r|<>K7(;@pK;f`}LAu6l|ohysDe@)(%|TT+Sz>W=V& zE5}O^xuHoG#}XXX<)pqCVkeSln4p%NoiCS$+WEDoW8N`KADK75a_+*}OK0ZdAR;k> z$c^!`j0Y%f8WWks^rT{*}>TP$YG*| zbIX;}r!HNXn?JL3@Zu;CL6ilD5IJ#_&nZQfW?LOsV8lloWx?UbF%UZuN5hDt(tLg) zB){*-iKFuu&V6ZV;o`wdA~&>X10%t~MUFYj<#JB36QrD!pW_9L_$UN&b{z_^BnJyhHw{3K6|SQNr)IoL$>e5O^6Uk!$%pU7ZI7K)xC#I zIG-e8!ghCY+gK#&+maNXO%y}s@I)OkcAs;7)HIw74K0*qu&pIaE8KxBoS0#47qV*fZ=>5d%j`Dkebd)6!Raj@Qff zc1kVa0fTBS4Bn67;%RynD<3dK5dr^Y$O^{x5YR0~+PP<=()F;s(OShK@Ke$*dhgN+ z`$mHcVsA=f&T(s2BZ8EwKvx-uu*@=zS_$3@?LpZ!R8=BH#lBT3X3-rW4<)3OifMIW zu8=Otg-ROV%9U~vG3faPbc-M@w#j-#nW8pEN2V)S)xw?)*+VXP2striM*ty3$TZLe z?MNGhQtiG3B&f<-Z_Lk^3%P~Te0pA1Nso(iF+Eo)u$)>=@|YmdR!1tlfA6Df(n%0QOy%3gxm>tOjGF3(6TS zUSVW_MYTx)V*T07+$Vm6B4_09a|4ta!&#ns+c(%E_3r$5#A4LjMLDCRw?Wr6Qk$}C zO&jKV29*n+0pbDCvW1N4!!%Zk)PLje>);$jYy_hTR?}=ZoN#KLQDU(#4xk7fop=<+ zjf*mtzhW9>D4BpreDm-B{{Qt~d}DKJiu?^Ky_VZw#aJkn<5PN#c+7?`y;dnz<|+%e zpU~&$1Jfs^*Zfg#!GR9u$Bpvf7K=r@AO>{H_&m4~m6%4`X652DJ5NchH;U2Cqm7p- z$+^GD7kg2Uk9149rBcQ5vHN&uWaqbs%ScaGNwDvm?QLh90cm9#LLiTRsw~4L&b9*D zpBb(RA)wwwNjXcW0Lt6j=Y4VtK#^x~#Nl@NMTEgeTYh}}K(H@VFbRh)o%rY-p`@{> z5LYN`ClhOjUxbJ{a_OT!n}V8zAr=LzT0+YW?$_AkqXU9ds+rJbGKIDZ;$?~(JD{Nf zfM{0XNq|ColpG-J#bSeq4bexA4f?Ndqh{j6`zWe$Ypegp&7E7@_~O~yd-Dbj zN$r<6`27ZgGpc>Op(>>^tLyLSTaGu9YE8a+qHGhmJGapQVv=IbPsyy1*~{A~O0jc& zo77?=^_hNrzkl~RaLRVfl4db>WRlvus02(sa!wgyy62Mm*4(`Zqt#Mgg{%3Q<5o+V z*(l6jVU-}E8)>m+;`}2`2b_`|wAhpjxeuzCGQYz?@CFB8o(;G;UkX-si_88jHLA6e3c5r-g~e1?%tF7Z@k~X{ahS?K13m`mRINq{9{uvxpHJ+Qni4k<7 ztNy?;j9K+3eB~UynzraMSlg&}iMWd+;3(1dE#MFi@|D{Zym!LS9Yv+61k1?t+(A3V z?jhcWO<8`F{sF<jP*gJu-%t`&njc%qG}{e!U#!9gI`06=PO zPR^qBUmzglw%;cHv!S#{JoPUt_|N9JxcWar0*~goN4W>TC=y-yXAHzXuEHpmbuvlb z`IIb}gzIKkDF|w#zjrI1Uu|@cBjOg-D9D5|z$cXI0 z1MA~sjjS52r@MNq1CG`Y-VkvEFykryq}aVMi1t5nhDe0;9nlcsLnES#KaGLdi6Mf8 zyO*N2D*U#HzQ(6Kuqoh*toNnIgg~fE5b`(r)@lnj#UxcQjKZ$HzoOSCcA;Cw5|r z95YjdWo$`1uWt9>jFZ7FMjE+c5mx(1a8$&XzmOZ$;X6rVgm*o-d*0V^H&&o?stycPn33NkSF@T8biP7FkB;1CxUa_14nnd%b9{sY%0ehl$l1K?*lQ~s=$zpG794lb zp370(;cguxWN>s30U4)sc!0=<+0?P&4&G)wKFJ5f(I@r3`=9s!!TbFm+(!!HlT!cA z`@Oq=EcJhJlk5%c{o=)V`=@zIj_3z^lFI(8zb0|30;gngQbTb2a^nRrQ9U>G`2`A%`&>4bv(u@#JP3#Qn&K^}k z@Zk&S3!zMr&*h6$kr5Y0VrRt4az5U6M*p?z{Xe=c;jjO~cMsmc;G-5$!Q*3##K4Hd z7CbCIJ_g3apZ}`&z1Lw_fH5RHxp3#!?cNWz`@g!`yLsR#hKjpWhM`iRE1@jn4_}l@ z1>#go3=6W{#f2}FK=?u#WB8(6&X*@Ne4+5+3uTPq3lUUI%nEauc6*6gu`jcN4_`o8 z2vrW8gVx>|!)u2me37Jmr0u8{-15kPA-c1B5&)|A(jUVcdksab4&1CDo>E`j0t$F+ zY@wozZ$2`rm&7f6Mct08S<$<3t^f1)cfS8(?`J4W~;*ZMy^_#|_ck7Ga)kBvDJgCkZE zBOV+dpEyQ;Ynw2}OK)aSH^2A2>zSRKTfHA|_wU}>dFjEtohouAUn$#Jz1(Ruf#2?tMQU%`nf9!Lb9fzR)r}|6 ztzJ;fLdoZg2o0nm+rt7PPgIwC5h=@Yn%kGvIqZ=gxGIiZ+CIuPqlb+&XIAUjl3nd? zn7Sl=TaupW|Ky|3lCbFywtEk5^xpb4(ax{E3ZWFkBghkVRPP2KJA%3v$}(;T8(4G$ zd4^^7Pa4m#q%=Y8(D-?dR@9TkJUJ;NmB+ykzJ|;DX9vNIp~us?v`qW|K#=)6F*_rH z2TxqbWI7LLw5!HOmm81oxZR(ao#b>(9yl`i#Keuv>uJpm%sXslyw7wcQBCQmm=#!+ z|KcD2^5d_3a%zhFeP%#2?ZEv;UzFG!X`u3<-FRFZrg?VF)GlMOx0L(Vq7q=3yF}%Sg6Afr_Wg(03vdTQN!M2>us^^%yjBf_i6`X50dtDYu!GP z5YVQdLwjN%u)FMKA-MkQWx7)RuR;6NM8C$~BV9FWSJ4EuMp}36Io{4p_sTpjAS5Ff z(wBhMV|7=$SDQMXhGZ-94-Fmfs-fWbTaw7~kgC#u85RQ`fR*431RwVzq3i8jq3dCJ zqqT}f;HM;Q7qDMSV$N}EsK0N{roOSEnO&X0DN0zn>L~+-tpx9d_Mq$6#-FWp$TOY&EK;VHs=PX|&YHFzK4<7?*XkV>GCM zm9rTprRlaJIg1A5r9!#vtaglzE+}WTc!jDhIIB(btkyZVNmp}AvoNCz^iT&Hz-BG) z6f(brM+3_2%HRHHzx>U|rl!c>=LRSJ}S+L!?827y3YP( zIZK>pj(6adDsz+vN-I|tfQ%i77$l4Q=-y*!0A|I?29DNZ?!eg1+LbHQn1@t2-c^$cM zg3qR)AUedNVAb^~srGB^xdBNQP!lUtn9%k0lOjUblgV!EfQHj(Z3jV8`B8R$6cJ97 zY3x208%$CKAVk#c;)%WYu3=kZ%;JfB;zNY_?f60lb$#X|&4Qz5KE_a$Qdy?1sSw5( zs^#NRsJJVHF|wpFmn-y$GzkZ6_CmM&p#S*`-ZQ#6uWI*sZ{NrL?d7j2_T>_6%RwB6!vpqY7)$z64;3NL@A zZnX4_c3HQKjHR_QHKS@}G|SSvR%W$94n4ivczP8c=Vxeu2+zP%h+}D)xPs|7_JutZ z&a_6=aX^PUo7o8Mi+w(2dPnA-cVA+)+2}Y)>EyFy&gk%Z!f$Avu2CBWZblp@Z;ut% zHT7<_P8Q!9GTASH`54*UABcVI-jYZe@=%;k!7{yv?fYk@3Nu^W-7@q9$Le!imJ%gt zqwoxF=0I<9+sIO2_Ke!q!l>_#j)#x{bR=^ao^Zo&vJh$`@&wR>&?v zGk6p*-lH$pB`>Mjxr)7XIc#|JdLPj)F9Fd8C?SnRXV5|yMWo}r7 z^(qq_jvB)pCdzD>5;0k|SjrD>YJcQ>+oXANUDuFM7Hpk7vU*8W8uII$K%GW&m)4NB zH=CL>8(K3ZbsBI}RJ2y33E_*{TT->InQ*(zrck)V_BmFqnAfr7EMLJBR<9jJ9KQ41 z&UdzhB_6Otg4BGteJg-tMwz>qip@)8qcM8med_%X)%C+K6`frUKu(?;*Ex77jkKep z+4zVpz{+8t!$h+kN6pr3wDm-_Pe^MgbiC=oN zzx~dW(!=*Y=-+(=%FPYj+lf?yb6N6*0;*{;v(3?CymFJX3US#VM&(vnswfMCVKXz^ za>V@*9Xzb$%S+k$L8hNTvyBfj%YwHvk6{jvqjICpiCDQ9W#r6fmjx5@Kh-b5>W!x8=pNO3r-&x z!yG2+Z5Z1vKcAE52d*{T--F=#xYtBC4hF%Mqw0LG3f{46Y6P-Mw7D{9*B26AC6x3Xn){XN*Y)+me zNfD;`)3!wuvMX`uEp=St7`G)lT+@uWtuyE5ZrJ-e1t)K)*+SV#z{%M#fb--sx{1%S zK1dn{LcLJcLc@gl99-RwHyr&YkAP+OiOVJVlx zE&w~Aa4@_qe2aE25S0OM3tfkP8lv?I>5I+LP%anpAR-IOI4z8DhO=2@z+RDfdEte! zn~oGWEj(hMF7;X!ls&V;!{%62896Q)zGETKOC(zAOcHq|iEKEgJ5E^*LQ11?P&j_ogYbP~M=umn+`Wt=1Fbx} zGmsFw*duoNaTYuftWd;?%^!s&Td3`+}bAn?F{1hgb^$f|mC*nU= zHx?d-MQe{q!mO#=Cgm?T`4->vV*0jl^-qQ{54 zhZ(kp?+HD6uvH$gj>nH%l|bYPI98}^SBr2n*dG4`w;JQYt#0ItI+Xxp$2f%vZXHcM zA6MMkfBEjiU!tCxQ)npQV2YA(Jjq5h%*l3LpHT-WJ3i(}uxo-{Bln6^cRXTHDCI%` zWcOq`zzzv;6}O-MFay`{Z39OSxaJ?;-wrI}D5)N>Q%4o+fh-H)SfO$qxjqUCk0t(A zGP7I;lDHHB#m(|yxK(hH2S0@gZcT7&L=~4^nwjiz_@nC*>3RJ~QbH9ze+DpieDW>9 ztqE>TaI0O?$w`@cWObkpGj0v9=5X|ItDJizz}3wFW9h+);1nI_%A8>TKv-7 zL|d7p4f$Q5g7aG3_CrWb8pt!wHq6Q58CE>nM6ca8dfd_il2S_>5lHg$e0+k-ijx=}kXmKrl={%g#t{NL%Zalu@b^~2@ zlGD<6;K&eR6*n@k=`uGk@37r!c!hMDrA>J$O!HGL*zNhtzw_XlDUO_9IP4Cwak z-Fx3ne(9|yxXmwXq`U9c6T{p1nxtl+7o$6AhfwLYdq!e zR8Q-!)AwYwfKRyNbdJIsV$(1nhH=4w8l;~>yGc2uWR0ZIIjQcpim#n+t^;ZDZ%byGFWd)UHD7*Dx1OGk0HG zEax(Nyj}|d}qT@Ah@f=gS$D4p2)Th_%;uO#aaB9VKKzc zW_M%eR0K)O8))KXa+Fluh0k7iz=GJDlF+WWb&9s({Kkf6qS3uWSZ0|5^Qir17m>DHl=6YkuL`l)D}weA^funW5mk*t4N{ z$OR7}Cx%Q2Aw|eEV39jOr89$OWoInRFa0EKm<^12e!g7DEtKZd^Rik=tBd7gdahE) zrz?3yRTt(GlsJQDs4Yt>+#1PR=v@&QYUd+{=N>*fru20CeCUWWuA+gxlW23PEThj zeb{juPp~fz&IuizcofFL9E!hevkHdQg2s{8Vb0~rY>Eqq~UwBx>~!YHH|jP`(M?q)E7Ldv#53_ktFn0Txb8XOq2)*Ua2xyS)h8E3j~AdSJ%nK^aHtJ=&+L+1c;i9$161YR^T8s3W%t-)B=$8iiOC)MjF&+OM(4XJHA>GhsrP$rPoyt4xa3=;+L0lWo2Nig`*doCs8%Bkw1Q&7Dl-JG6kP~B{)X!V+vI% zmC=leIusm~$1z3Hu-o6Tn=gtVjT|Ov_jm7S@AQ6fS7J$t{X4g5leq7{nCWkA_deW0 zOqurY-g>uxXG_|-b-VZcZFLtwYOT~sT|?Fg8vqs?@`l)I_etL zpqt#ybzvT5==GXzRbe4#>PAb?XqR=%$XHq{Q!}boMzhdU&&sSe$f2iK8&9t`;a#Bt zBRqptPNA+_JcNE@U)V$8Tx(Pvhjgg(`8++@zS!rprFUfRW_Aj(j{#mQjb@XqG4fe5 zXLNW$;YT!2*XSl9cAUID4CAh;BfFHGyoQS|AP<0%&HaIx$?h#}Yl&P*!85&w9SdNl zO8|z`6CC*f&#V&9&ahgi>Rk{M&ZD z;GPxl=HD>$O>q8=A3$fbd1R*YveBu$Nv#mMP?jMq_psyQRp!g9S*MC|TvH_ih90KM zd@|OS?GK_>q~LTArKpy(FjR>ZnU&RYiQ3to87`O0ic*G?k*r>tPPNDUaZ8t)d~qj6 zxDDyGyk|@xxFCjInT?V#2QPn+39#t%Wv6GDG7M^t#{;s8Ueflg#HID({L)-lQVVCP9ne1|GlRbhZkDSTAa&c~Xaqhxm9Ee3JwqGMfc0=8iH6Yl* zVGc%u`nIFkQ1@IQ)%MeR%AF~H&yi;%k$e`dd2Jx#X z+*y-k$3J}UE-LGzY0NAAAKkN!lsJ46!xRb62th+ge*&!N2G%}4ao{OfE`(3)lNkgL z@tpH$Jp%HKL5FmS3~_Q*$Xo1ART;x3b?WSL#UXiYctmoN?E3!Q?f#GNvtI8nd?59= z9-u2l4F2HhX4`dC33RW_Bi)F8+$$g_yCD%fA}2Vml*`L1b?Q@-ATjD1HOH|aZZ9>O z0&+$jpaGqGYPS>pzfUZX%jaO&9WJvjqWafpp+R&L;B7kGQIovcW(U@QK&dfBE+oont?JV5$wqJGf86C zjaEH|w@;3bUDtbXleEme^8mYlVcora2j#m-EBKrJAN?^t#$Xkmf+JdZUdvV6!V?^@ zPzwcwDQsYygzd&s<#pUWBGp1Mhj{Cu3fx7M8yU^Q8+((;l3GAO?r2(gm8FWZP_*NI zA}l;Kee+v*qPt0|;)$JDc*9tD5o~$nEWCwt%azloE?tf-R4nb+@#9>h$u`(uLE@r($SjF~;4PyCxROYT5O< zCdOT2+>K=1ZN2&My{-NmKSjCHmp(+iLfZM^mejwywe$Mz&&J^xA(o!kjE-4)f^+@- z9FtgjiKQ3E(gRB%hZ&)~AHCB1-s}DQ@5EpZAx56!=K3>iE4s^{Z{r=Z{tH>ydt4H; z!!XIlyGG46Sz;Hyal;|@6bkM|=i7OQLIC+3%sp-jAHmMMh(1@N1@KTVpR7dMu@?`7X46QeZ+N>n2ELfnGl}AeQGk@|CB6gCz^Tv(-*1K_- zM2tP>I<*;-2+r{LGf7#I$zIiPCQ0_)oj0YXMk=BD3hMBt$??h0eE9DB{jE2jlvYk7 zX!riB*rghSIe4OB$%WN+CS_H^%BU!TSOu__;0;^ern|(TGscpVNitsjl~mBPQScmk zo9+&aMYmKzJrbvMDi;hLaT}QGmIb!0V!^q|{(WFa&ZMg>p@u9i4+j||gxYSa2d0t* zyI99S?8K%U#-@v4%Ohvgtt?%5>h!|FXJe|aiw!*eIND-$f=Lc`3 z93RWB|7Y*OvfH_F{Yj~J@1x!yBRdlXh~hB`PrDHfJT(xhP(>&A`}W)=2HuzqJU8{6 z*(N{;LIs_F&)s1$@UkdKJulSca9!m#5d~LO@oxh=at7Yg0(RY1?0~Wm1CRH)LJEmp zvA#Wbf{2|Mc*7WY5o~$%47^M8D+?D+pTBte+;R-RtC+~0>N;MTl_%Km>fdvhSb2$+ zH#bsR=G|KlAKaH7zW33?2QQ++%I)5JAH-o4A)mFIBG|djF-l_OB}QJgUeQ{O zCN?M`n?kDAH52V1W>aaI#dYBTN0gr!vfYy_nzjP_?(U79@1U&8!w+8RZ~r(3e+aSf z@`1R8DmZSzwi!8G!UeXuPIii#E29n-vr_k4P?kfWmbt#V&@@>WSmE1;@_Zx$YFR8$ z%@0yDYDW&QnD~wjpcrmen~_avx~E963}< zT24Kcljh87z0rkHvSI3y^lb?{BYyJHXZydpiBe9z2RC|e{ks45wf<|bqUlZyk;4;p zM3+*Y4^Tis3uPI%?-WGvK%T)aVCTkG!9;{H7aoB=Q-N#I!Vl< zN*Sp<4t}7$i7uMD&Xziw8PjUUP4leQIk!pi0GgVk`86~Z4t3C#nQ#{h9($*dd*HhB zU;eF6JdWnkQ&YeFwau^ndMpWRRfZM&`Ak=LY5-wi~ankiOfrMLE@!eu`OvRk>+x|9`K1a%zhFea2pu z5%=3q%X50$32u5${E&o|OlG)REfuc5IzB?}$qz~(rVW==;12ZiI{pzauh^U+;A zO|R-wFwg#_=ZAIq^*?SRMPlXu9S=O`Gxs~XH)Ka zgz#-+bY!}M`vmOSP(9>=hmaFPCWMdz%@rxYa7Ing1v}zN8?rspb!e7cfH?bL<&(%gcw^ejf%k=2>1sl$FU+NW!_fX2bu zRK45n%w#fFwXOs6Ot%_U)3A)S?sU~?Wze*#QPndYvBuY+?SA_b#~vlPqjh7;_#jVIU_2j_&2PCN?Z#zpa$jl3LiLna^- zg>U}NKh6FRh4-eW$ls@V)J^Y~pT5#+?g!OC6iqOuanjAHb|;}-bd_Ca|1#fbgafZs znX4>Nz09Q&gXve-ZLP=d<%zNOCNP1c>Ae=PuIJO$9rkGuk4(}tmBC%U?%ZitpE=mu z@HhlE@7P`j`)IX(Zf#A1qUO%6)|Vh%tL!lG-cNW%oshmv_I|c1pp8;;$Cc?Zi15l8QnbEc>UBk;*l?7CmoXTOBH8vaV$0> z={#IUTkr}_4fEAjDO*F2ybPAxncCg+jr`I&KCj5z5 zTmT`WJ^DNlCR|W6w=iWbt~j48ephD}AUGNfkt}mM4?l*Z~cv z4bzhPD5QOfhzQ6u+8m1wCaD1|x}EfX_S63MU9u5<=k;4?fFeDSm;U^P?@MyN|3}wj zRT&c!xOdZ0DVqq+kMyyLsvwh=I;uk0WMWz-3tOi~M2vP?HmO-KE-uL3M4^LuZqlNgg;3RESPf8NA<{DKOQlW+b z@xZw`#>~MCs9w{psyUm=)Qy&&(Jt$jk+HN^re;*FjAkK`$I7fW$f2iK8&9voA^i-E zAK@8zii_LmHwNO^LovQa)$vb<`l8R%lkJOr7!Si{cgHd3C02oDo%XBbvt-WbaEjuk z%+ob$!oa_aHunc&KD)OhRwj8UPN!I!-ox&u&MX;b z)wrmfp5PdTa<*Kgb+(BPb%8m^7% z??Xy5FcAws#1Metj3Q&1`u#rGl90BA$kG>a|eAecw!!=5tf=NuWhKJ4boFt1>lKQW2_3v)S>%%G21-V}r4eUW%>Qc!wzMN;LPALS7XMM_k z)!|}L7hmoLFR8sS@scM_2InN%p-;&YgH~ic43U~b{FXeeZ1aQK9f9PCD8oZ`^L*I; zVBjly3sJ6oq>7Y?!9lyWB#3G(mC$52phe{x0M;X%!UR+8%5!4%P>(mJIv=bOoM0;3 zJ6*MCuG|{ZL}ybYZCI70-Y>2_5+`7Myp$$({sNC8(+q zr@`$b^Ht^CkhqPi1P8^7IW*D1c7+60jS*G3AzW%N0%QsGRmGda1XU%dY5=NQSV??U zh|>G(YKlZvFWl(;?43su0YsN;zeNX-H9pyspsEB_9T8OJ#>E+`0?HD~7QQ5Bl$nut z_euB1#SdGSx?GuC$`3AtFl3gxoSiS1SQ(x1xvJbCE(2A9W4N(qFu_#9Fje@{IeKa8 zD{~2^8Xu-Y-T(fN@AuyNRe;DLwaI)re)~;R&+)kjfLLQw9*QEPP&Z#pAjwn5Mo+Tm zHmbqfu?_#_(Dm@{!(VR4;0m5rBj%~++@QD(sRT#G{dwvMrt;Sj5*Yq-L%0l6369{# zo5BQCC7^16qv|WC&j&QTWe z#f^&Fuu5=P+@EZiz^d`UD#eZAGFT-zgd1-P6IhkNssXU-{1+2cH9lX}&W(FJ*RKUA zJbp)&!Y3X8VF`s)oZv|yRRXDw2&8gD;tWy&VhLpnf2Lsqsm27U+yE|xR6tmda0(Mh zl|ZTikZL}0RE;rF9TgS&&)-J@#DhmweC7c_*7#&kf~pc!bwp4V9~1}Y3*`!bK2A|p zNb_p0cpKNSIw_H>x6_waSjV{$O5~Q%Bd$^ym;!d>YDEsH7A`%3M%FA!F8%qno03;N zoD|}J;e*V>2QT)wKal#bT}KIiY3J4l{g>|@d?j5a5K&hIN7M-u*@fSfY(YWyJD#PS z(j~O&bg6*HE}O`0a^=e4E-fyV_gP6de2t5Xrz?CsT@f5l_fMdl zEtP{^N4N=eE2a~?6gGiLDcvsZlNMcsDSYW1!5qb>0{D64X!bO0xl*D~d=&%~!BKp_$jcWByBaNVB5z_k$OtZN&FA|?%eqOb z;oE=xLH{QoJt;l>Ia~+#01Tg$`fvQS|Jpx{!6iKHM$DB|13`TtJ)y>uT*S1M5p{+# zOQ79Y>d&csOdm*Zd^4C}yAhp0tlU>D6fjBH?#z5ZuqD`z5QH-;j~-%Y4bB2HdjP)dwKie{jC_>!INxMKo>|U0KgN<9WZ;! z=xdb#x}f+L=c`lsi~``h@y%cY=th)p#~jct{hfedO90&j06O%1hA$#8vj+g^_%sGp za2f-rvJyZyqQK+P$?*Ynj3@d(+Uni728Z4KS03KK*8k3P5AQ!0gHL$kjSB7Dyatvn z3KS+37^sE3nk$1B6JH%~nG1w=ZXlf|ivsD5Zw3=+H=?9F=FslULO`%3&~5^tUGL6E z{X6gXx9;{|dNVM;2LSN+>=RXR_6euB5`Z_N*yAzE@d0=%UxBag?zR4pUVZqB8&66* zFMYW4+KVw*gs0nx*beR1?PLWT+X>EAC}hiJbOKAT-T2&gc{h~Ku$|yYIyZv}wi{8% z9dm4VF^R*P(x%o#H^ik}S(%@V#BvsC>feo1X^k<$e(MkB`P>s#aPA2w^Acb;qRis~ z%JBhq{TE;F-MB0B)R@y%d@>_(Jw#~j(6|8l@&O}us!;I-Si@y^ckZ}#6l_<}uoJ_!XtZ+tQ@ zL3Sg`yyJ@Odhflz^V)5A>iV~S^`zAM`HQ_D#Bpl#WE<6E=O!)KxK41^LP5=D9bA_y zmP+Md@%5r2=Si2;D#Ep_xQ}hkhHa@dHrlldfqj+Q%zDjsJZiPCr=+!3Q=3h}LYCx` zT%y%n;W3N5DK;W?y$vy<%{0mXbY?6lDf`386XYxTx4pSS4|is&%bVv-sZpCv<=xOX zLtug<-{NT>&&LCZ)|9$o|4RNbHRW+ z1M5I*SL=p3o2qtABCDMX=&h~pO8070r_TYA$Fk3na#gGy4i);}WcXm*ef$9!78P6* zBZu6S0$UCV&M9D)r3z702v)i%%PNGFErJx}j<6H3^uk2Yux!C?jNta$SL8~*QXaTw zMiec4Y%(u8Hkn7)j0hTX)k1{Q@KK7EM!TlByHqT-v;zP)Wpz%OFAZE3N3KlB{JFCd zq{*CFtv9-0m<>~xq;E^o6WB5O+5WF?_I|M4dvK%o)~{g}^j~{5UOZoj$RSNyeLJh6 zoT(D0>Y8Y9d>|?u+JUfEm0~$USh~`7i(0Cmx?7|NZvYHotb`Q`Tc&{rJ=r`IB(0)9Gd`Y!ue5 z%+sdcwAh#Y^p#d~ntVU;1$>e=b<=7XZN#yr!3TP~YSi$=+0>)z#WHt!cDD z$E&)P`ohUiJ$~YXPPP~tZL8ksSQ75iwq{fHZnra&$yn98j`2?$9lecT)(o?yb@A0) z&vdlvGupbIff_4hFaqx$V0-^PrPDy_=II*Z;1{oU@Z`Pk4UTVA^+lt)(Sp7h@Q6&K zg=gc2nz^n+p-fL_T6(RavE%7{TAuE-*NNaCG!jIo#Epbb${FpdvC-wm<2!Co7CT8M zQx-Nd1O>#6tZj64YlW;CZeZSFE8~5pD~W1KKgF!Ts{EG^zEXPSlT%aV?=$wQ^zO0i zexol+Xb3WTwj5_*d+xnxYNmD>i@nuk>!qbN+9~^bm_K`8zvrTJ?gl$+@4IzO-NM?X zT)_>A$_HCcSRE!hh(0`Jb{qxh8Mtol2$>nGLG9CACCa1;clo+=r(G(P0nR`bEn8vQ zN2~R7Ox<$lR_jYwx>6Nd*nhT*=pn(}hep}!ZdjPEO6fFVV(EMna=mUeYq}}XmYgn9 zpfSnL8Ke4)CAAH_Ipi83hH=3F%hOK_b*;Uw&siM+B65gP!v-22&gjf^>Qa{qA4uBM zEh-r>=n(M1?!w#-;m!v)fVWIns{b{pgCzPj_8uuQ?4k8*AiDEn;p5%y5x@iBHP~h0 zv#xY-7&Jk-*_2&|&mZvDX1df*!2YG@hgqxs%di;WLI6?Y)Z%dfBU=y48?99=0zV}c zci}VUKrk=3Aoivt<{YepqpD!133#Iw=ysTEz>SDQ=o~sn{=}KNv)rI-e z+=8<7EJoRp)tRcPQ^9t+W(!yx+$9uSjjCx_##(o}YP2#;x@J1YW!>x;4XV}UY=%i` zmU@##fxl9rTy|DF#zq&EGg`bt)fSvS^rX!U1F)zz2`IDw_wP*UzxmkI6#4ty0A@g0H2tr%9Eq~v!ATCOWvlPqjh7;_#t^e5<2j_&2PCN?Z#zpa$A0|VR zkO{~{;T!#_pZ(v9=F}AV`!tWb>HP`>yzK|oKom_drg3tW3FefD$E-86y3YP(?NB2e zc%{l*Wq~SiE@1;qzq)Sw3fR3oF~*^uV*r}!T1S@z=LvBzk7xq|@;DD}u~@V#uex{- zI>xlRr*xwwkqbpa~Rz`+CV1{A|9cny{O0M{9ei}l`2l@ zTaLwOKrIkFqDX)+WjM5T6Pp<61PA%;ZWJUl4Y9-$E86SP&#nVY1DM0qgw>l(I4*Pw zpuC8r_sLnR)SB=&```iy@Dt}kDoT&G{P;u(!BJqrBpjN3AH5@#gfWG7rm<+YtE?1v zRb6#s2P7-PF44-2rTt3fN68T)A_6i^CW*xcle9;IMAdpf-|FApk{-T)t@qYF&(z+V zEhy>s%NBtYma(w~(!tBJ-G|wMDjZu(Ofh01Y(Wzk+_{a$4wF=Zxc9SndOx@;QNDQZ z+QXm!s(+Dq$Dvd(WnyrU~3WTd~>s2m~R;x9uc!D{QsG{(b6;8W!*9|me$JD zjH;E@u=~eimpP`{6JOfX0H5C2E9>g9B6R1&jT+^X$==1bs`(mH> z7Q<$D$1&$6Rsmy4))!f8lGB?uOesFngdyXwRr^ zG*Zpa6gdV-CN$C-aWiq4H6l0@#}<3k8j(vSq~#EM%`-;`_@Svf1Uh*3p7ZJh-aKYP zC2C>kZ4)uB(Gr#QBwYq@D`)AxBF>|NFXs9x;?Zo!W4Q1lGrFi*b#@-LEA4T{&C`^z zbbOg1f)hjhGl*5X3;c02I5FT)aLIicU6^8;L*Xmu=+!J-r2+hWVGFTv$u=<^$prHSNnVxQc|JZkaOdwo=)e7{)PM8U7+k>}Lm&cnLn>6LLGcT9e{yq}VBitA z7L0&_!`IHy!@%d4mKRSipNb>k#Gqh4R0b#I_;@41!6Whp5ABW*4t89eZ`|zvJWd-n zo?fG>em-Uc%p*NZ4~mJj}?Jhx-TPdk1hj~P?@Z$W^TvX5LVZ6cNX)pq@up6XdSXl7RWNr=!)~;TF^Ax27snh47#@*1cyJf3@+T=u;(+1Tw|YOh z5rZ{&dX1?2Nl_bL5K$H!MZ`9jGRbpJz;H?$xi~|>;~C8v2^iiV7|yxTLmLbWjvwX= zIVDeuI*>%|qvjZ1lq+*fPF}@`j$t`FUoNrTXn_n0abP&dN4sRf;Vy0t6EHlYz8?V$ zhp(L@2!DttHaMWHbCzfiw0#~KL~9+5S8Xcw*UCkhIG=T86m z`~BBmk^0Zy>%Z~S7~H{=Y*gmp1B$=`LYbo|D>sG#tKmjvg95H@|Z3%+ke2 zfQQ}S7sJDXV_zI|BzSm4=HS8I@xjB`AGY)Qc7N;Lo!4(3I2Psuia-KFv9RjZ>UBzt z0n}CJ_F^H)bvZYlXv1Q` z0YyJ^6v{=CJi#$XKAS^}0-HJPlcSj<=Jq*gDu>1)jb8I2!96LuQFzZ)vHb;=jq@mHyV758vC8dbG4m3`iiP)RN-H%$O|% zgdmhbd_Y<$7mFlX!0|^Zmn*|uVU7Y?X~mw@{rU+w0m@bP5MCNm34~b`!C@934OL{5 zkydsb4P{u9G)<50&o1PPNKlHFF){7Q{OI;%MB}nH*^F9H_N>MdK3@Vc6(3|#1P58f z&)_lC5^>zfljJgUD~&-#e9*tU{lo(4R`b~ynu4bs6AiH&6DV$|#nu#pV=X!4RXXVv ziJ0>j;o5buH&DXt3U=qp@5C!;Djaa zOU@t1wF(m2s65;dh{|ThdymlX#&rzS%t~ktq2%*>#0JqYY4#3z5$t_Pi|g=x$)iJx zlayn8_?x|}ZXAHIjNmYU+nEB%6-l%AGoS^cppQyo|4DIB?G@BiMvo_=ocX79B5 zWYX+C*zCQKG<)y(JFjzHP`&Q8{!{2mqG8jhW~hJj&%gO6!!>)~cUx3C%n5Fc${L&` z&EC1*-n6oY+xd-xyI^ncq}e+fa&F^4+4c(G_aMenGVr|mwon$bx?nrScJHBS` z1`)MoFq-@f_J<1~BUH`q#=y<2rOF+0urm%)d7@oGn( zP1U>I&P*m_RqHyYa@y$VZM0NhGt8FO#aDAZgRW$as=jDcH(GkTo5ALxLdMj|K4GIx zZfW;)=U|S%*}DU7_H6e4v!DEDXIHOGO_9Gr&EAViv-ftFlD*Yr)6miyZP=k;$rbdm zXR*f>+U%Xg9+PJ8w0XLn-^r&XLXEGR9Z!!FYI%Cy>s{~0I+!DOEPmW55AIM6?uLzT zM0jwMX76XLF7;K%-Lx2K+lyFwSdelT7JG@>_4S-w`dNPO>So;kiA5wbfYDa53?zA|9%VMhNIU3oRLs)esZaR|6|#E zvMLwt%48l1oy;_{nb!WygmefA^=1o%icN^pj-Xd({1 z4kyU~rE9d#Q7ts3)u&x^p6>Jni(K$&S5`PgkZ_(Pra0c^5n+e# zT)zP`qxayZ)JHx2t#{+FiIDP$GN1V^ye~Ja21+1IPAL}2j>rIn@v#ZZc|E*r(j_7U zIjBbMDl7Zew7M(Zt4-1=6`ptc4?K#33+wUw`J;iwgc;=6IoE&t+Rm+QssHX)4A$UD z#sD3go@9;q2n=gM982&^qfc(yU9=3Fq-`vZq7R7dhMt&34InHQ`J$k4xnOfd;#flV zPo>dpQpEx<%c5r0rA@6lo1)1dHkhGNb(Ul~oKSOvBla8$4j|^TN?C@eJWQ^o@M@|f z<|N3j&)g=W;22Y`kVC0^n-LC=b4ffM-BKykxdizlR-T9^i-9^>4uA_r zT?DB`U+o#u&6rW+(N(gEe@PoP-Q#%smwMm559iX()_psa9fwJTIG4Nz%}jF$ z4(@PFl6aR!+9S=oN}?^ZN%Af=x_Zl+UPWy5ODpG=Nm^74?%;{$YLLVSs3XcO(!YfH zdAhD^HQltN&r9T6v(eVA{ZCa)WzUCKMfWII3fWu{1qc%#Q_^czYaWSSvu<#enbttV zLTy3?%`pnZkwsHqN~PkiD(L?3st+J1$xBv;#HJwM_Hvx(+{m9jhk}bfDaEo%iqjt^ zA5$e?UdqnfPC0IO)`&i)aW`F7LB(>>W`x7zV-inC*J({H1<`$vg_AMyF`2`3If}^R zJaT)8lo+T}kdMiY0x+f!90c$yS)U3`a+qQj85^M)_$1YFM+U&$`O{KAZtS0tZQov4 zH^jp@L~w+MM-QHU!0fqTY{g?|k>8-jBCq zXpY3SBy}3ya5@WX*t&D;c7J~5eIiX^`4|I!KbqKmSCPtu1h=~LwJ3@ZI^`L4ORKPD(BoCRf$_^9H~p=?mCTK zg;_Q0q@Nv*U2&!P{6fXq>nOslL^k!=)urlMN0&smeJ;pK9%(nsH+Oj4O5*A0`l+dX zAi5#2a55%trDNw-Qe&V_F>WQV3ov5}!G3?gl1|z^2a+bXQ z&Wt+*_jTa7BXKDuE~Ri+$1a!B+2vE23%XYA#!wlFKk0z{NpOS{q4nDR-uGVL|NO+X zoB8Oe=!WJ+Sys`lImu5#GDB-*h0c3OqBAX%J#e-iFsdWTjhr$^5+JY8{G?*8TqwKy zrxHifSR6@iY|oxU!NI+vf@XfGP<5E{la?wf{u7v=gl3_fBT00d>tYFPP_$LU;c+Ah zr{kDgO$#Su;z&Anj--4H)G5Z1c(&wcL*-Z$8ksENJ<<@F&s(W=C}Tz-Ru3~M=^LK@h2USKk4%lL>Eo1yu1DI z-8kYaWQyXslvFoz%B(NZ9o3z}t0a{!pUdtl3|Gp*#73`mTHAK0!f^456U%C@N&0IPi0ik({@^k2Rw^?&$E|HId3q=5Fp z{xwMmk@?#D(d;-;Df!4eb}K(%rS0x%AW7erZ1vK6>86*bZ0EsBPwd>>>izic&PxyM zDD1-zZy-PRv-G-PJB0o=NpY6?Tid-4xB4%kZ^E0e_FjGmp^z8)cWwkGH?r}L7})LB z1GE*F-~cZ89s*BAy&a;S;Gg#P%dn;+w!l-=98tu~fgMs!d}uEXms4h$>#GY*lT{h3 z$d!DhJWwvQ;qumI;+7s$`B)NgfKbo5Pwx+;AuVI?=zXCyJnBk=U<%3IFcU4#CMkY2 zf9@>lSTtu=>#$p@-3?Qxa_EWvPd@r=|5rDAKiKX)xY2v-*N{;C*ItDLiXn4&qK+7C zQr&11we$hIgt837SrKw42PjLG9jQS&F+9V{D4QuEV1S?JJ6uwrH+H9L3)h|h@^5|O@hS4(Z+~s`YnOid-<_ZrBU)XpUDKLI8x5GR z>Q?FtCqMQ0i3|Ro$`bC`7&$7tY&y5zI&9#1R>9vNI zp~ut3v^?EuuM;>hXe97R3T{GuM!RZkbh+`+$zsRt$zoq*(oH&SWbihK8(G`v>K1Lw z%ni&tY-PO9bR|*zcJzI`5+As^U zW@?wQ*ts6n_Vwm4*YDYHJZ0alGtAvOrf$JNhEZy?xgk;cV9N%=}K2* zS8LiVob_-!-_)vl-Dsk^l_b0G$y#JNA$qHb5ZAH4wzOV8HP}KP}X?_PRc2 zbpVLSAw~_5$?337NJJ>tsY_kjcOH`Vbc;#`N;bPljMsvj)Qw?x*{g7j>ls|8E7kuR zbay75uF%)md!(el0te#z+8R!-^?9P>%pxkUq zZ>KM<`0zBniZ!HW|3+?kb744n8(Q`aV~bI=-gV5e=JCrLtyL@nKP8pD7sTF_#GK>S zP=DW?O?_iSGrKy0Q{_#io6e@bRVik3vYMCEvQjFh)rGl2x+E7W zX?!bJ%0+CFnqPP}<*vsD9BCLGnXcfx*t1dekP99{P7LuML`(x-&676zl`d^N-kHHC zX~S$_)bsP@LT;fnpPrZ1N?Khk7t?cTPFIaqhDp~<$GEJU9i!3i0yxOoOiOFDQ_O^yvpH;NE0oL5YRA~< zlsKcsD^zX485>|xZ4yvs-(LTBAN=NHQ&Z&ca|4ta!&#ns+c(&H{ISP4JYuW2U6eCA zdK(~N%`jV9*P1rW^-L7n!fpBcjs| z#hD==?~F`350|lR*WhHLe3xx7ZR2a84GuUB#L@(mnwuwP0V!*siabpKGG?2@pbcP_Q{3tm>NP0m0jwzFrB=GQq zdpozcBt-5>{Os)yJWG3TuAr3LFIVs}Gr@a%d|aU_WQ$4!SJ(~wB312?&=W$qB2LoG zB=v*nzkf$6|ADL^sQjd)B7f!Kds`A?k~plvlaH+_w5|k*+~pnYG^!^hi6O~Gm0(C4 zX;NpJyZMdziUA92x>bcgKT|hadPcjfTSmsxTA7+rwKAH8I)qkcwLuO&z1nzs6~5(X zXebEJz*AflOTV!Pv4_HY*{C|M=1{ltd3v&avCkWeVY9pAnDY{=%|^#*iAO$5=8O*i zCOm}Z=^C|0;Ht%OawSaOuBoHm9|6K^=%aT54sAv@_XlDLySKEP=#eWaET;Fc@ij9_ zn1LcY0GpmbynR*TPtKN$xm_5WW}vaV;kE&k&9lBeqe#&_r5i0evBVKgKadH<9EP_l z4eZ4eT<*_qGETQMX0v&cd5O__=7qC`hT0d3T2$?#`oc=)t9dnVgNwKswGnlq+a#m5 zpyc;Ts13IT#U<3DiM-?Kq4uHR@^nhBjCQjO%VlM?jL+N*%H^`6l;J)kU~Z_K=wTCT zIop}bFN?}`#;T9+oj`|ie^RpGJ!2db`&i#@Zx@ycv!H7 zNH-9~G7!VF*@?@!O+!9wh<47V_N)fvNG&bSMIw6+ov&+_F3B;pzK{(Uq?&-Qp`hU1 zVt&5J6=XD2;YCZr7f}2}kK46Qg8@kzLX{Pgf*Ff3Cdy=daKCr|HUY)`U)+kp9*k`J zwHMLGn$x||#T0dka?Y|1M@;$VvnArF<(03Esi^X0?6QaEh`AxD1juUNaj=F7SJDyU zceEsM*>!|dCoXjMA*c1QKxcxqbbS9+1j;^gS~~X!#8i(Vg@ib*WH-2B$JPXIE^$IY z!1r<)?M;I=9J6Yngop)@M~`6E7fqN62m3hdY$k~-geoC{?2&_Ur2m`02r@K)P$^{7 zj~L9kY`&6FEH@J9DD@6ODrs8olxZ;cQ2#tT_M0p%jON??QDsNj2O%Q*z|Sr*#=$j!+!~5IP&h;Dk+Iw*Gz@bjSTMcb2RB!m8P7ZE5I4A;KVt1@L7ElK- z&qE!-o@GDODU^#O&4@E@ZFs|MTLydZd$>e8q);cv`<7+F&SlY5OrXv%Jwzu7>f{bu zisyK*vgpqBKB$u`pdi97do_VNyEnH`U-EHW|qPA$fA)`BZ3_>JORc1p9}5;6}-*1$mc+nt+=G+z{mA_IyT};of@>q=gHY z7D?&O14lKkr=LZqpm>F<2%pP_6n5O@ML1rl#&sgw#1`yD_Uq$vv50iP$#mJcZbpV` z1bZ1pQ!zm`#|_oQ>CY(y)p$*?8Ak|q1^ZD=sZ_w0FkY_6393m@4Tox;lK=dL@1p{v zS5%fns@}gQq158ebN700{r~M<2V4{9`wti;C~9!DT1Aggt&5S6kOV~`K$N3UFBRL@_~>P z*d!u%s#hkUf-esWwZzF#%-eXT-l_*wK($BmE|~5b=hTV7gjDpaex;GBd5-(Yq!J<{ zl#LriZ4IfYit&q^=3vL52`TNLO`0M`JYw+M9~veQBv%jP-1{Y zrd4AkkV>TjOXc9&7FEG7dj+muR0R~@q)2L-_0=zd*-TgkK*x$AkD0KF7me-mwNYHt zU9K7YZN*{{xWb@~K%I}P@U_uggAky1(f1Qefy+3zU!}kb+BaTQ)ivFvl?8OOkoLK{!lkMZy3mXkqr9s3>-wYMQ7!p%til5U8i~KilDL z$}mDig|{hvC-JEYyDcjBs_Cv$QZC!P*`nD!os4prkcyJ>%VuuVoKb@!o?oGu3c68F zNg-I=90@D@%L9vau#rJIbq(cIMXyZHLQc(&L3dqUGRk41Dk2$_12z313qg!R2T2|S zc#!J~ciA929wL;JzsCr;1_Q%9fE}zW7NQ+tTWcp-o=NgANR;|BT=+f-5PS)ZuQ5KN)*{o1DbDM6B zGRer|`wE3w&<$}!)XW&Lywi)z>1HDXaq1exsqr`qyPiqMcysXP?LvVmfhj<^buRhNlxfk9l* z3Yn-Afr+cAp7(gwOI1jq47uFT?l`G+{yjvgimE7wXo;&pAyp*g1R~?*%?u{4f{Clp zsTHw2Osj@6VRA*BIu@Wqh3X=+lITB*s}NZ&3T6pRvq?e37mGwbW)xN1;ws8nfvXo+ zA)+d)L2%Q$9=!x+GjSDlEUv|RfFKBb!G@rS{jtzkBO^*>Xwk_ouaD- zAwVy;B_ff~kKpzz6jwp}#>-JqWUa`WDs;h=|oz^Kq zK{!lY1*5C3czTDsZDpq#pfa;joBrzLDuY}F4FQ-WsoFd5}A zF%=BTsRYWow|BoOV`Zm7ngoM7KDskzO3%z+vbv@Lj@YX2H;Y`l75*eE6%$b*wyKiN z+@@KVOaVBrPDBOm07q<9KH{r6EbcE4;LyQF2H?~+fK%fU6=JJ~n3xhYD~Krohl!|Q ztW*_SsgQZfH2;uk{XwL}S(|n*Ga0+L*Jw(~tZ|TI)%p`+7sN2F^1@Fdlt`?#4w$%# zml0PXwyLSkeMqyO+D{^ajVA08@z@x?PzrG}5YM3SS0x%SWg^O5EA{n7nN^i=1-M@M z5Ov(kuG3y=p-%~z(CeZjgJX5rWJPQMPaZ1w4Hnz=m#?0;rr4^_B%}n*>P+fHVB#uj zDy~8MoyWPJ(D zX5uPf;4<|p;-kV9I>n%H9TuyIj}G9e;ys5B=3)A20X$kPIZ&62;tB_Xo7S1(Cxx&I zsd*Wy^YtnuHX3UX0<>~l?BmN9quM+$cV3~m3febb5~{`;R`*w%jg{WK#%oXx1$?J$ zuZE)5-;gNNL`_9I=}7n=mW3%gg*JevpOm1`sd$*q5F4z4tuBZ=MZ7XbqYL0E4LZaf z%MIw(SiNDeVQMT&xDQ1z@n1km5gQ#(T#l*Zqg3&bpcTl(DXNJs@#U#Xbpp$g`n7J~ zRpW6LC=m%Mk{#A{dZz>#PBL*7jK;cRjdlM4z44$5*k?fkpn}z_s<6kR2iw>vszLhF zIw#23h6$>W*r=32M$^h|3buK5f-308HdLiDtn05f8yRd<8EgFOgl%d(s6s;3CQE46 zCX=-{Oi%^mZdeI-!$B&A(tx9z`~#V$kM?21YJO7KD3C$^(kdv(=!OZVkXjYUgt}fr zw+5M{xp{?xDQHJGQmeiZHw?ncPV1m0gG5@`$e^3LhHh#+m;!mhkTo}S>x4;~8zz{7 zK{u5^HwAMS<{KA6tx?Qm+zeqAP^V%={>S<96rj@QNEdUKuL&|9U6!%)iO0G>{h5Fa(j#&oOjkB%}=a7EMv z9yUHMRuRAhk2H+$BlVG*{frco`{@nvdZ3Uu(?s;kab}aqgXF<>os_C)B9~ef$YyTS ztwAOu96G`P=t+t}KfKekSiZ>uFig;xICm|eI*Xf-S zWQ4;+Q!uuvifvQF_*lV`G{}O1nN}O~H!ZAjXk%6Kn}sdST7J-00Av9`pzq27lfh3x z4GBu6RE@BdW{t2=Bo>&X7wqy-B$S|-g_pp?|Iz`34zCX};!2cSR~eZq6$bgrBz7Te zt@HOl;aS53SddN`1Lggch6J4o!=__cC&-oD*>r40{_=JC2N&jlcEYqJ*_6K2G=Fmy zmK-WmiOC8R1m=mw9jG!>#;PwSa4FsDVmyYYoOMSakic5>y3HBFX-dbV#bt`x&*ks` zUZ=?;!Mri)%a{-Nv>2jOsR+C|I5r9wBeA;v3hltjAX60naSFXbrGpqTIHiTu5omUS zq$#-s(SZBH`_^MOWT79<=*gppC+ioCaAdL2fx$Vg*5Iv=RY$4x-s5ztSUvGY;*}T| z>xI7e=mnp!$ts;*tpO)Hz8A~`RlHIY1y2m%4ILu)1c9bEDB`0Ov6^^Q0B@>F&+FB* zal;;iRI#uaYU1@VYONjvD)IUNUW~z@_4oGHD`Qm9elLwy6%T(IuhGRR4DeMK?X6WP zCn};<-XO;OyrBgpGyr>(X<}g@PIX~XpqC#4B}pqoTQh#VTB!=rC==qqOVG|Eyw!2= zY#^x6MWZ_JUS8gDswlOBIPWR(<$AF8Pd)BwSLGIi|N6mFi}PbJH5ISm*@mWD>623l|*9pCrSUOO3xZXN#X%uR;WuczI;i>sD{A)abRbn-v+#YSAr0}0bHrwv>;3rzD_Wz0Z3*D7N|&0)3VtF4G0Rxs;B%LCO`I|M!|u`o1=vG7=h zQWc|#jZ*0_zV$r`UVwg5+fSpMsK??p@aC|t!9HIzNCQ(I{}dbpF$=07y%qowIz?~; zP`rheh((BV+87MgLk2(Q*r>2Ld}V+}6Mw}&SZ>f0_4?47T)_^(syiNlk5uw&2r7P! zid%}@uR-cZp;%_~iE5I0=0Yq=}dobS#2Oj9=8Q(@o4!3ojQP*B$G+~1i=!Sr;IO@dkRCOV$UGCpU6`# z@)Zh$Ws;y^-_RM*N-baLuhgmVg)J<~yuiZAQj21oTB+0MHRBClN==+MvATL|HB(eN ztwxPYb-s@`u}b5?^L(g|;v?~sf&m}B2i`Wz|AgfN7C`gDNkUJR16a5;u@Pq4;(=Sw zIIvjg=we5h5jd+vyuC2kYUu1t!6P)GEg(y!`%(}W&WHXumMsk@i1TLoPkgc9oHAQS zKMJF?3&&q%m<*!|b%1wy_{O2{H&MZI77HCMsi+&LCq>}xMNkbaMXxcYG3($7>5jY% zwEmIN#BU^q%dqh%AOboqXM9jT4}4qwL&xkX~Mh0{#gmT z0q+=1oXT4lJa{Q5vP*TcOvh40`WKH99peQax@8(zM|lNq7c41%@E5ASS*M zUxR3gqc{!o9)YBp7Knx5mkC{u|J|Bc$5+fp zI)7ZfFX9V)Ajvjdf{+J645*enKFlb^>VyDI!<&Qni~19v26Oq!Rxn%7h?%xM`9UwS7YHaqFG6bIS)m!s<=49|(CmNW?;s?R4Oi-T83oNz-hgShOiA=gJv6 z<>4kmxn)nl+V~C7>^4B+Am~UW;1h{BRK|iLap7DVn7U5nq3S;QlT#@vx+ix2n3K0(JbvOIL?gja2RJrdR7!y8pP4#4N3cW zr5c@SwmH+y!@B4S2}l}7VV#ABRmsyqu*wP=swo5cz;2Q=B+YSTmW>gS(gDW+Za(Wl>kL6jQJZgAUf8Rj@-J<$<54xBxdw<@6bZHt5?l~ zBCEcc07W24aUC6D7z3k?+4%~@tF4U-*>_4bPK3#)l#3b(75VZ-LOg;K=&00#1h}v6c$-^nglGOS*J-i7a3So=U`D)Qi9L~i>%6LVouPk zd?v#pyX!auix^l$=w$#K5=L}T{g^(PixmL+`D}-2?gET2xR(j&XY*3bqCmR0e+Ouc zu>3tMkY4ECp8rNKWHmXMArQ?*2Qmcm6M#A@*>#1%t)n$_84;Vt&{5sO|= z2qduTGKuA$W?d%TTx1|nor6GC$r(Zq1OoRjvYm`iv(A|Uf$Xj03q|=RgG4#ej*iFE z-*<}C#Emnk;%Fl2y-Q6S_x)FDAOY2?00Np;Q9?#PB7q+Si%#D7I-Gat5K>YMXaZSl#k65UE>uORRsx7|r+^!ZG#$10`AuS&YQ*J&kx z^>aP?TFo-Vl%d%wgL0qZ5yfS#J4~)e6u^)64frqHd`>95xUNnfX|2ok*ye}y(28?C z;<;y-T#vT79;HmKM=d$=A|(k@N%AW4CHP1}yUB8MAwB(hQtQg)dVJxmNO&_};AFxO-KzIiU`?N}^yxRY}|T9R4f86Qc>EMGA1BSDElIcA?Lgg^0U zp;tbmHJ+cYj2!=1WHdj37i$3bN<$)iikb+YBBKT991MCxB7BOP2%i*6C8Ps~E6g7( zXW;L|8S6E^mNVd9L;MMH>zY4U&WJ2$z@35klb_`b7;|G{)$tP{A20e3ssUDqqVWde|0qb%jhnDgLgm4Rsj(_OBn^ZwYD26F|4yVCjGY|IN45&0?uF8z zLrELQ4^c!82Au|xm=aoJh{cJk6#e35I(S#$I-VB6{1u*yGJ``p`0#{yA~iT}2hu8K zs`2Je;ZR>2Pdtpb3i1Kzt$(#DDHZ_N~Pq)CMO5c&it z6TCyo7^#c}J|l=}hs|*cT|aA;CaZzS(_FU6+zYWUy$^t$gqyofKgc!lhN>jzGaE@G z6Ceqv4pYLf0N#z{PY528`V!@;dpUg>Ushknm(`c?<@Y7Z(g__aK$C*#Eiu&85<&AV z#!^p#L?lKhh&fZ+duw^A-Xbz3zKoeiV{f4jvMyo1CA|en%zSY_os#at3l+UC-Bo&W zK_2&4e{!K7vUZn{)Ljs7gD(!RX?NL~UHIsH#b+1lA!~PuO1ewnBNF4o?X~Q#oFk>z z!rIVVsDrG%&y)ee75ow?v zvUZoGq`L^vP639mJJP5PvkUc*wY#LG?lM=BCgFIdyHLTwYV4qCoL#7gh#fR(%M2T6 zjUh&*BkiDJHyI9B!tTtxuLS2mD7C1H_Z&L7WNVHt!OJID^cut#?xk$jNc&r2*?z?_ z9n$kynM2y&T3ny$-_F)H4wbd1wCKSY4wbo$vs5WzSX9>5$(pU6VNsd;6-!BJhDBxW z5%3~Gj64JRUM4PwO(3qLU`A1ySlFB(;U%cBYn#k3!Jj0=i5qk*W;3(-jW8(NI64eC z)p_x8C}@d}ZuYF&r0U@$+jd>_E5+^mbXD#K^DTXqyJ4phM=jcopYg_jTMBEI@4e~w z=JjJk+*mAhSiBoZB|J-)>U9j}OYk0484Q&K3Lu@J%2p zUkMlECUfHEI$OW8k4k}Re3Q#N<23Y%_gc5>tM2to^4ZIk_;`L@f2XG(3zu?

9l$@6C_pq~b?Qx{ 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 literal 0 HcmV?d00001 diff --git a/plans/bom-v2-meeting-summary.md b/plans/bom-v2-meeting-summary.md new file mode 100644 index 0000000..a8ab37a --- /dev/null +++ b/plans/bom-v2-meeting-summary.md @@ -0,0 +1,129 @@ +# BOM V2 아키텍처 — 개발팀 회의 요약 + +> **일자**: 2026-03-22 | **상세 문서**: `plans/bom-v2-universal-architecture-plan.md` + +--- + +## 1. 왜 V2가 필요한가 (V1 한계) + +| 문제 | 현재 (V1) | 영향 | +|------|---------|------| +| 3중 BOM 병렬 | Product BOM + Design BOM + Item BOM (JSON) | 데이터 불일치, 유지보수 3배 | +| 버전 관리 없음 | `items.bom` JSON 덮어쓰기 | 변경 이력 추적 불가 | +| 업종 종속 | 경동기업 수식 하드코딩 | 다른 회사 적용 불가 | +| 기능 부재 | 대체품목, 유효기간, 팬텀, 승인 없음 | 확장 불가 | + +**V2 목표**: 3중 병렬 → **단일 BOM 엔진**, 모든 업종 대응 + +--- + +## 2. V2 핵심 변경점 + +### 2.1 새 테이블 4개 + +``` +items (기존 유지) + └── bom 컬럼 → 제거 (관계형으로 이관) + +bom_headers (신규) ← BOM 버전/상태/유효기간 + └── bom_lines (신규) ← 구성품 목록 (수량, 수식, 로스율, 공정 연결) + └── bom_substitutes (신규) ← 대체품목 + +operations (신규) ← 공정 라우팅 (BOM-공정 연동) +tenant_bom_settings (신규) ← 테넌트별 BOM 설정 +``` + +### 2.2 BOM 유형 4→7종 + +| 유형 | 용도 | 대표 업종 | +|------|------|---------| +| **STANDARD** | 고정 자재 구성 | 제조, 유통 세트 | +| **FORMULA** | 수식/배합비 | 블라인드, 식품, 화장품 | +| **CONFIGURABLE** | 옵션 선택형 | 보험 특약, 호텔, 가구 | +| **ENGINEERING** | 설계용 (승인 후 STANDARD 전환) | 전자, 자동차 | +| **PROJECT** | 수주형 1회성 | 건설 BOQ, SI, 광고 | +| **SERVICE** | 인력공수 + 실비 | 컨설팅, 물류, 정비 | +| **SUBSCRIPTION** | 정기 과금/반복 | SaaS, 렌탈, 교육 | + +### 2.3 품목유형 5→15종 + +**기존 유지**: FG(완제품), PT(부품), SM(부자재), RM(원자재), CS(소모품) + +**물리적 추가**: SA(반조립), WIP(재공품), PH(팬텀), BP(부산물) + +**비물리적 추가**: SV(서비스), LB(노동), EQ(장비), LC(라이선스), TB(시간제), PK(패키지) + +### 2.4 BOM 버전 워크플로우 + +``` +DRAFT → PENDING → APPROVED → ACTIVE → OBSOLETE + ↓ (설계 변경) + 새 REVISION (REV.02) +``` + +--- + +## 3. 핵심 테이블 구조 + +### bom_headers + +| 컬럼 | 타입 | 설명 | +|------|------|------| +| item_id | FK→items | 부모 품목 | +| revision | VARCHAR(20) | REV.01, REV.02... | +| bom_type | VARCHAR(20) | 7종 중 하나 | +| status | VARCHAR(20) | DRAFT~OBSOLETE | +| effective_from/to | DATE | 유효기간 | +| base_qty | DECIMAL | 기준 수량 | +| source_template_id | FK→bom_templates | 수식 BOM 연결 | + +### bom_lines + +| 컬럼 | 타입 | 설명 | +|------|------|------| +| child_item_id | FK→items | 자식 품목 | +| quantity | DECIMAL | 소요량 | +| quantity_formula | VARCHAR | 수식 ("W1*H1/1e6") | +| waste_rate | DECIMAL | 로스율 (5%=0.05) | +| category | VARCHAR | 카테고리 그룹명 | +| operation_id | FK→operations | 공정 연결 | +| is_optional | BOOLEAN | 옵션 여부 | +| option_group | VARCHAR | 옵션 그룹 (택1) | +| duration_value/unit | DECIMAL/VARCHAR | 기간 (구독/렌탈) | +| billing_cycle | VARCHAR | 과금 주기 | +| grade_level | VARCHAR | 인력 등급 | + +--- + +## 4. V1 → V2 마이그레이션 + +``` +Phase 1: V2 테이블 생성 (V1 유지) +Phase 2: items.bom JSON → bom_headers + bom_lines 이관 +Phase 3: V2 API 추가 (V1 래퍼로 하위호환) +Phase 4: MNG/React UI 전환 +Phase 5: V1 items.bom 컬럼 제거 +``` + +**핵심**: V1 데이터 100% 무손실 이관, V1 API는 래퍼로 유지하여 점진적 전환 + +--- + +## 5. 구현 로드맵 + +| Phase | 기간 | 핵심 작업 | +|:-----:|:----:|---------| +| **1** | 2~3주 | DB 테이블 + 모델 + 기본 CRUD API + 데이터 이관 | +| **2** | 2~3주 | BOM 트리/전개/역전개 + 버전관리 + Diff | +| **3** | 3~4주 | 수식BOM + 대체품목 + 유효기간 + 공정연동 + 승인 | +| **4** | 2~3주 | MNG/React UI 전환 + 테넌트 설정 화면 | + +--- + +## 6. 논의 사항 + +- [ ] Phase 1 시작 시점 (현재 진행 중인 작업과 우선순위) +- [ ] V1 API 래퍼 유지 기간 (프론트엔드 전환 완료까지?) +- [ ] 업종 프리셋 12개 중 Phase 1에서 구현할 범위 +- [ ] 비물리적 품목유형 (LB, EQ, LC, TB, PK) 도입 시점 +- [ ] Design BOM (bom_templates) 통합 vs. 병존 결정