<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[쓰리뷰 기술블로그]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://tech.e3view.com/</link><image><url>https://tech.e3view.com/favicon.png</url><title>쓰리뷰 기술블로그</title><link>https://tech.e3view.com/</link></image><generator>Ghost 5.75</generator><lastBuildDate>Sat, 25 Apr 2026 15:57:00 GMT</lastBuildDate><atom:link href="https://tech.e3view.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[기술뉴스, 2026-04-24]]></title><description><![CDATA[<p></p><h2 id="anthropic-%ED%81%B4%EB%A1%9C%EB%93%9C-47-%EC%B6%9C%EC%8B%9C-%EB%B0%8F-%EB%94%94%EC%9E%90%EC%9D%B8-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8-%EB%8F%84%EC%9E%85">Anthropic: &#xD074;&#xB85C;&#xB4DC; 4.7 &#xCD9C;&#xC2DC; &#xBC0F; &#xB514;&#xC790;&#xC778; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xB3C4;&#xC785;</h2><ul><li><strong>&#xD074;&#xB85C;&#xB4DC; &#xC624;&#xD37C;&#xC2A4; 4.7&#xACFC; &#xCF54;&#xB529; &#xC131;&#xB2A5; &#xD5A5;&#xC0C1;</strong>: &#xCD5C;&#xADFC; &#xACF5;&#xAC1C;&#xB41C; &#xD074;&#xB85C;&#xB4DC; &#xC624;&#xD37C;&#xC2A4; 4.7&#xC740; <strong>&#xC5D0;&#xC774;&#xC804;</strong></li></ul>]]></description><link>https://tech.e3view.com/gisulnyuseu-2026-03-05-2/</link><guid isPermaLink="false">69eaf488573aee461c28ff17</guid><dc:creator><![CDATA[Taehwan Go]]></dc:creator><pubDate>Fri, 24 Apr 2026 04:50:15 GMT</pubDate><content:encoded><![CDATA[<p></p><h2 id="anthropic-%ED%81%B4%EB%A1%9C%EB%93%9C-47-%EC%B6%9C%EC%8B%9C-%EB%B0%8F-%EB%94%94%EC%9E%90%EC%9D%B8-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8-%EB%8F%84%EC%9E%85">Anthropic: &#xD074;&#xB85C;&#xB4DC; 4.7 &#xCD9C;&#xC2DC; &#xBC0F; &#xB514;&#xC790;&#xC778; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xB3C4;&#xC785;</h2><ul><li><strong>&#xD074;&#xB85C;&#xB4DC; &#xC624;&#xD37C;&#xC2A4; 4.7&#xACFC; &#xCF54;&#xB529; &#xC131;&#xB2A5; &#xD5A5;&#xC0C1;</strong>: &#xCD5C;&#xADFC; &#xACF5;&#xAC1C;&#xB41C; &#xD074;&#xB85C;&#xB4DC; &#xC624;&#xD37C;&#xC2A4; 4.7&#xC740; <strong>&#xC5D0;&#xC774;&#xC804;&#xD2F1; &#xCF54;&#xB529; &#xC5ED;&#xB7C9;&#xC774; &#xB300;&#xD3ED; &#xAC15;&#xD654;</strong>&#xB418;&#xC5B4; &#xD604;&#xC7AC; &#xC885;&#xD569; 1&#xC704; &#xBAA8;&#xB378;&#xB85C; &#xD3C9;&#xAC00;&#xBC1B;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xD2B9;&#xD788; &#xC9C0;&#xC2DC; &#xC0AC;&#xD56D; &#xC774;&#xD589; &#xB2A5;&#xB825;&#xC774; &#xAC1C;&#xC120;&#xB418;&#xC5C8;&#xACE0;, &#xACE0;&#xD574;&#xC0C1;&#xB3C4; &#xC774;&#xBBF8;&#xC9C0; &#xCC98;&#xB9AC; &#xB2A5;&#xB825;&#xC774; &#xC774;&#xC804; &#xBAA8;&#xB378; &#xB300;&#xBE44; 3&#xBC30; &#xC774;&#xC0C1; &#xD5A5;&#xC0C1;&#xB418;&#xC5B4; &#xBCF5;&#xC7A1;&#xD55C; &#xB2E4;&#xC774;&#xC5B4;&#xADF8;&#xB7A8; &#xBD84;&#xC11D; &#xB4F1;&#xC5D0; &#xAC15;&#xC810;&#xC744; &#xBCF4;&#xC785;&#xB2C8;&#xB2E4;. &#xB2E4;&#xB9CC;, &#xD1A0;&#xD06C;&#xB098;&#xC774;&#xC800; &#xBCC0;&#xACBD;&#xC73C;&#xB85C; &#xC778;&#xD574; <strong>&#xBE44;&#xC6A9;&#xC774; &#xC57D; 30% &#xC815;&#xB3C4; &#xC99D;&#xAC00;</strong>&#xD558;&#xB294; &#xD6A8;&#xACFC;&#xAC00; &#xBC1C;&#xC0DD;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>&#xD074;&#xB85C;&#xB4DC; &#xB514;&#xC790;&#xC778;(Claude Design)</strong>: &#xD504;&#xB86C;&#xD504;&#xD2B8; &#xC785;&#xB825;&#xB9CC;&#xC73C;&#xB85C; &#xD504;&#xB85C;&#xD1A0;&#xD0C0;&#xC785;, &#xC2AC;&#xB77C;&#xC774;&#xB4DC;, &#xC6F9;&#xC0AC;&#xC774;&#xD2B8; &#xB514;&#xC790;&#xC778;&#xC744; &#xC0DD;&#xC131;&#xD560; &#xC218; &#xC788;&#xB294; &#xAE30;&#xB2A5;&#xC785;&#xB2C8;&#xB2E4;. &#xC778;&#xD130;&#xB799;&#xD2F0;&#xBE0C;&#xD55C; &#xC218;&#xC815;&#xC774; &#xAC00;&#xB2A5;&#xD558;&#xBA70;, &#xACB0;&#xACFC;&#xBB3C;&#xC744; PPT&#xB85C; &#xB0B4;&#xBCF4;&#xB0B4;&#xAC70;&#xB098; &#xD074;&#xB85C;&#xB4DC; &#xCF54;&#xB4DC;(Claude Code)&#xB85C; &#xC804;&#xB2EC;&#xD574; &#xC989;&#xC2DC; &#xC6F9;&#xC0AC;&#xC774;&#xD2B8;&#xB85C; &#xAD6C;&#xD604;&#xD560; &#xC218; &#xC788;&#xC5B4; &#xC5B4;&#xB3C4;&#xBE44;&#xB098; &#xD53C;&#xADF8;&#xB9C8; &#xAC19;&#xC740; &#xAE30;&#xC874; &#xB3C4;&#xAD6C;&#xB4E4;&#xC744; &#xC704;&#xD611;&#xD558;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>&#xB8E8;&#xD2F4; &#xBC0F; &#xB370;&#xC2A4;&#xD06C;&#xD0D1; &#xC571; &#xC5C5;&#xB370;&#xC774;&#xD2B8;</strong>: &#xD2B9;&#xC815; &#xC774;&#xBCA4;&#xD2B8;(GitHub PR &#xB4F1;)&#xB098; API &#xD638;&#xCD9C;&#xC5D0; &#xBC18;&#xC751;&#xD558;&#xB294; <strong>&apos;&#xB8E8;&#xD2F4;&apos;</strong> &#xAE30;&#xB2A5;&#xC774; &#xCD94;&#xAC00;&#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB610;&#xD55C;, &#xD074;&#xB85C;&#xB4DC; &#xB370;&#xC2A4;&#xD06C;&#xD0D1; &#xC571;&#xC740; &#xBE0C;&#xB77C;&#xC6B0;&#xC800;&#xC640; &#xD130;&#xBBF8;&#xB110;&#xC774; &#xB0B4;&#xC7A5;&#xB41C; <strong>&#xC77C;&#xCCB4;&#xD615; &#xAC1C;&#xBC1C; &#xD658;&#xACBD;(IDE)</strong> &#xD615;&#xD0DC;&#xB85C; &#xC9C4;&#xD654;&#xD558;&#xC5EC; &#xBCC4;&#xB3C4;&#xC758; &#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xC5C6;&#xC774;&#xB3C4; &#xAC15;&#xB825;&#xD55C; &#xAC1C;&#xBC1C; &#xBCF4;&#xC870; &#xB3C4;&#xAD6C;&#xB85C; &#xD65C;&#xC6A9; &#xAC00;&#xB2A5;&#xD569;&#xB2C8;&#xB2E4;.</li></ul><h2 id="openai-gpt-55-%EC%B6%9C%EC%8B%9C-%EC%9E%84%EB%B0%95-%EB%B0%8F-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8-%ED%99%98%EA%B2%BD-%EA%B0%95%ED%99%94">OpenAI: GPT-5.5 &#xCD9C;&#xC2DC; &#xC784;&#xBC15; &#xBC0F; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xD658;&#xACBD; &#xAC15;&#xD654;</h2><ul><li><strong>GPT-5.5 &#xB8E8;&#xBA38;</strong>: &#xC608;&#xCE21; &#xC2DC;&#xC7A5; &#xB4F1;&#xC5D0;&#xC11C; <strong>GPT-5.5&#xAC00; &#xB2E4;&#xC74C; &#xC8FC; &#xC911; &#xCD9C;&#xC2DC;&#xB420; &#xD655;&#xB960;&#xC774; 80% &#xC774;&#xC0C1;</strong>&#xC73C;&#xB85C; &#xC810;&#xCCD0;&#xC9C0;&#xACE0; &#xC788;&#xC73C;&#xBA70;, &#xC774;&#xB294; &#xD074;&#xB85C;&#xB4DC; &#xC624;&#xD37C;&#xC2A4; 4.7&#xC744; &#xB118;&#xC5B4;&#xC11C;&#xB294; &#xC131;&#xB2A5;&#xC77C; &#xAC83;&#xC73C;&#xB85C; &#xAE30;&#xB300;&#xB429;&#xB2C8;&#xB2E4;.</li><li><strong>GPT-Image-2</strong>: &#xC778;&#xBB3C; &#xC0AC;&#xC9C4;&#xC758; &#xD004;&#xB9AC;&#xD2F0;&#xAC00; &#xBE44;&#xC57D;&#xC801;&#xC73C;&#xB85C; &#xBC1C;&#xC804;&#xD588;&#xC73C;&#xBA70;, &#xD2B9;&#xD788; <strong>&#xC774;&#xBBF8;&#xC9C0; &#xB0B4; &#xD55C;&#xAE00; &#xD14D;&#xC2A4;&#xD2B8;&#xAC00; &#xAE68;&#xC9C0;&#xC9C0; &#xC54A;&#xACE0; &#xC815;&#xD655;&#xD558;&#xAC8C; &#xC0DD;&#xC131;</strong>&#xB418;&#xB294; &#xC131;&#xB2A5;&#xC744; &#xBCF4;&#xC5EC;&#xC90D;&#xB2C8;&#xB2E4;.</li><li><strong>&#xC5D0;&#xC774;&#xC804;&#xD2B8; SDK &#xBC0F; &#xC5D1;&#xC140; &#xD1B5;&#xD569;</strong>: &#xC81C;&#xC5B4;&#xB41C; &#xC0CC;&#xB4DC;&#xBC15;&#xC2A4; &#xD658;&#xACBD;&#xC5D0;&#xC11C; &#xD30C;&#xC77C;&#xC744; &#xAC80;&#xC0AC;&#xD558;&#xACE0; &#xCF54;&#xB4DC;&#xB97C; &#xD3B8;&#xC9D1;&#xD560; &#xC218; &#xC788;&#xB294; <strong>&#xCC28;&#xC138;&#xB300; &#xC5D0;&#xC774;&#xC804;&#xD2B8; SDK</strong>&#xB97C; &#xACF5;&#xAC1C;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB354;&#xBD88;&#xC5B4; &#xC5D1;&#xC140; &#xB0B4;&#xC5D0;&#xC11C; &#xC9C1;&#xC811; &#xD504;&#xB86C;&#xD504;&#xD2B8;&#xB97C; &#xD1B5;&#xD574; &#xB370;&#xC774;&#xD130;&#xB97C; &#xC870;&#xC791;&#xD560; &#xC218; &#xC788;&#xB294; <strong>&apos;ChatGPT for Excel&apos;</strong> &#xAE30;&#xB2A5;&#xB3C4; &#xCD9C;&#xC2DC;&#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</li></ul><h2 id="%EC%98%A4%ED%94%88-%EC%86%8C%EC%8A%A4-%EB%B0%8F-%EA%B8%80%EB%A1%9C%EB%B2%8C-%EB%AA%A8%EB%8D%B8%EC%9D%98-%EC%95%BD%EC%A7%84">&#xC624;&#xD508; &#xC18C;&#xC2A4; &#xBC0F; &#xAE00;&#xB85C;&#xBC8C; &#xBAA8;&#xB378;&#xC758; &#xC57D;&#xC9C4;</h2><ul><li><strong>&#xC54C;&#xB9AC;&#xBC14;&#xBC14; Qwen 3.6</strong>: &#xC911;&#xAD6D;&#xC758; &#xC624;&#xD508; &#xC18C;&#xC2A4; &#xBAA8;&#xB378;&#xC778; Qwen 3.6&#xC740; &#xAD6C;&#xAE00;&#xC758; &#xC82C;&#xB9C8; 4&#xB97C; &#xD06C;&#xAC8C; &#xC0C1;&#xD68C;&#xD558;&#xBA70;, <strong>&#xD074;&#xB85C;&#xB4DC; 4.6 &#xC218;&#xC900;&#xC758; &#xC131;&#xB2A5;</strong>&#xC744; &#xBCF4;&#xC5EC;&#xC8FC;&#xB294; &#xB4F1; &#xD504;&#xB860;&#xD2F0;&#xC5B4;&#xAE09; &#xBAA8;&#xB378;&#xC5D0; &#xC721;&#xBC15;&#xD558;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>&#xC288;&#xD37C; &#xC82C;&#xB9C8; 4 (Super Gemma 4)</strong>: &#xD55C;&#xAD6D;&#xC778; &#xAC1C;&#xBC1C;&#xC790;&#xAC00; &#xACF5;&#xAC1C;&#xD55C; &#xBAA8;&#xB378;&#xB85C;, &#xC82C;&#xB9C8; 4&#xC758; <strong>&#xAC80;&#xC5F4;&#xC744; &#xD574;&#xC81C;&#xD558;&#xACE0; &#xD55C;&#xAD6D;&#xC5B4; &#xBC0F; &#xCF54;&#xB529; &#xC131;&#xB2A5;&#xC744; &#xCD5C;&#xC801;&#xD654;</strong>&#xD558;&#xC5EC; &#xC6D0;&#xBCF8;&#xBCF4;&#xB2E4; &#xB354; &#xB192;&#xC740; &#xD6A8;&#xC728;&#xACFC; &#xC815;&#xD655;&#xB3C4;&#xB97C; &#xC790;&#xB791;&#xD569;&#xB2C8;&#xB2E4;.</li><li><strong>Grok 4.3</strong>: &#xBA40;&#xD2F0;&#xBAA8;&#xB2EC; &#xB2A5;&#xB825;&#xC774; &#xAC15;&#xD654;&#xB418;&#xC5B4; &#xC6F9;&#xC0AC;&#xC774;&#xD2B8; &#xC2A4;&#xD06C;&#xB9B0;&#xC0F7;&#xC744; &#xC989;&#xC2DC; &#xCF54;&#xB4DC;&#xB85C; &#xBCF5;&#xC81C;&#xD558;&#xAC70;&#xB098;, PPT &#xBC0F; &#xC5D1;&#xC140; &#xC2DC;&#xD2B8; &#xB4F1; &#xBE44;&#xC988;&#xB2C8;&#xC2A4; &#xBB38;&#xC11C;&#xB97C; &#xC0DD;&#xC131;&#xD558;&#xB294; &#xAE30;&#xB2A5;&#xC774; &#xD0D1;&#xC7AC;&#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</li></ul><h2 id="%EB%A9%80%ED%8B%B0%EB%AA%A8%EB%8B%AC-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8-%EB%B0%8F-%EC%9E%90%EB%8F%99%ED%99%94-%ED%88%B4">&#xBA40;&#xD2F0;&#xBAA8;&#xB2EC; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xBC0F; &#xC790;&#xB3D9;&#xD654; &#xD234;</h2><ul><li><strong>&#xBE44;&#xB514;&#xC624; &#xC720;&#xC988;(Video Use)</strong>: &#xD074;&#xB85C;&#xB4DC; &#xCF54;&#xB4DC;&#xB97C; &#xD65C;&#xC6A9;&#xD574; &#xC601;&#xC0C1; &#xD3B8;&#xC9D1;, &#xC790;&#xB9C9; &#xC0DD;&#xC131;, &#xC560;&#xB2C8;&#xBA54;&#xC774;&#xC158; &#xCD94;&#xAC00; &#xB4F1;&#xC744; &#xC790;&#xB3D9;&#xD654;&#xD558;&#xB294; &#xC624;&#xD508; &#xC18C;&#xC2A4; &#xC2A4;&#xD0AC;&#xC785;&#xB2C8;&#xB2E4;.</li><li><strong>&#xBE0C;&#xB77C;&#xC6B0;&#xC800; &#xD558;&#xB124;&#xC2A4;(Browser Harness)</strong>: &#xBE0C;&#xB77C;&#xC6B0;&#xC800; &#xC870;&#xC791; &#xC911; &#xC624;&#xB958;&#xAC00; &#xBC1C;&#xC0DD;&#xD558;&#xBA74; &#xC2A4;&#xC2A4;&#xB85C; &#xC218;&#xC815;&#xD558;&#xBA70; &#xC791;&#xC5C5;&#xC744; &#xC644;&#xC218;&#xD558;&#xB294; <strong>&#xC140;&#xD504; &#xD790;&#xB9C1;(Self-healing)</strong> &#xAE30;&#xB2A5;&#xC744; &#xAC16;&#xCD98; &#xC790;&#xB3D9;&#xD654; &#xB3C4;&#xAD6C;&#xC785;&#xB2C8;&#xB2E4;.</li><li><strong>&#xCF54;&#xB371;&#xC2A4;(Codex) &#xC5C5;&#xB370;&#xC774;&#xD2B8;</strong>: &#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4; &#xAC1C;&#xBC1C; &#xC804; &#xACFC;&#xC815;&#xC744; &#xD558;&#xB098;&#xC758; &#xC6CC;&#xD06C;&#xC2A4;&#xD398;&#xC774;&#xC2A4;&#xC5D0;&#xC11C; &#xC218;&#xD589;&#xD560; &#xC218; &#xC788;&#xB3C4;&#xB85D; &#xC5C5;&#xB370;&#xC774;&#xD2B8;&#xB418;&#xC5C8;&#xC73C;&#xBA70;, iOS &#xC2DC;&#xBBAC;&#xB808;&#xC774;&#xD130;&#xC640; &#xC5F0;&#xB3D9;&#xD558;&#xC5EC; &#xC571; &#xAC1C;&#xBC1C;&#xC744; &#xC790;&#xB3D9;&#xD654;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</li></ul><h2 id="%EC%82%B0%EC%97%85-%ED%8A%B8%EB%A0%8C%EB%93%9C-%EB%B0%8F-%EC%82%AC%ED%9A%8C%EC%A0%81-%EB%B3%80%ED%99%94">&#xC0B0;&#xC5C5; &#xD2B8;&#xB80C;&#xB4DC; &#xBC0F; &#xC0AC;&#xD68C;&#xC801; &#xBCC0;&#xD654;</h2><ul><li><strong>&#xC2A4;&#xD0E0;&#xD3EC;&#xB4DC; AI &#xC778;&#xB371;&#xC2A4; &#xB9AC;&#xD3EC;&#xD2B8;</strong>: AI &#xC5ED;&#xB7C9; &#xAC00;&#xC18D;&#xD654;&#xB85C; &#xC778;&#xD574; <strong>&#xBBF8;&#xAD6D;&#xACFC; &#xC911;&#xAD6D;&#xC758; &#xAE30;&#xC220; &#xACA9;&#xCC28;&#xAC00; 2.7% &#xC218;&#xC900;&#xC73C;&#xB85C; &#xC881;&#xD600;&#xC84C;&#xC73C;&#xBA70;</strong>, AI&#xC758; &#xCC44;&#xD0DD; &#xC18D;&#xB3C4;&#xAC00; &#xC778;&#xD130;&#xB137;&#xBCF4;&#xB2E4; &#xBE68;&#xB77C; &#xC0DD;&#xC131;&#xD615; AI&#xAC00; 3&#xB144; &#xB9CC;&#xC5D0; &#xC778;&#xAD6C;&#xC758; 53%&#xC5D0; &#xB3C4;&#xB2EC;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>&#xC804;&#xD1B5;&#xC801; &#xD3C9;&#xAC00; &#xBC29;&#xC2DD;&#xC758; &#xC885;&#xB9D0;</strong>: AI&#xAC00; &#xC54C;&#xACE0;&#xB9AC;&#xC998; &#xBB38;&#xC81C;&#xB97C; &#xC644;&#xBCBD;&#xD788; &#xD574;&#xACB0;&#xD568;&#xC5D0; &#xB530;&#xB77C;, 16&#xB144;&#xAC04; &#xC6B4;&#xC601;&#xB41C; <strong>&#xBC31;&#xC900; &#xC628;&#xB77C;&#xC778; &#xC800;&#xC9C0;(BOJ)&#xAC00; &#xC11C;&#xBE44;&#xC2A4; &#xC885;&#xB8CC;&#xB97C; &#xBC1C;&#xD45C;</strong>&#xD558;&#xB294; &#xB4F1; &#xAC1C;&#xBC1C;&#xC790; &#xD3C9;&#xAC00; &#xBC29;&#xC2DD;&#xC5D0; &#xD070; &#xBCC0;&#xD654;&#xAC00; &#xC694;&#xAD6C;&#xB418;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>&#xBC14;&#xC774;&#xBE0C; &#xCF54;&#xB529;&#xACFC; 1&#xC778; &#xCC3D;&#xC5C5;</strong>: AI &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB97C; &#xB3C4;&#xAD6C;&#xB85C; &#xD65C;&#xC6A9;&#xD574; &#xAE30;&#xD68D;&#xBD80;&#xD130; &#xAC1C;&#xBC1C;, &#xB9C8;&#xCF00;&#xD305;&#xAE4C;&#xC9C0; &#xD63C;&#xC790; &#xC218;&#xD589;&#xD558;&#xB294; <strong>&apos;&#xBC14;&#xC774;&#xBE0C; &#xCF54;&#xB529;&apos; &#xAE30;&#xBC18;&#xC758; 1&#xC778; &#xCC3D;&#xC5C5;</strong>&#xC774; &#xC0C8;&#xB85C;&#xC6B4; &#xCEE4;&#xB9AC;&#xC5B4; &#xD2B8;&#xB80C;&#xB4DC;&#xB85C; &#xBD80;&#xC0C1;&#xD558;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</li></ul><h2 id="%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-hwp-%EC%95%B1">&#xC624;&#xD508;&#xC18C;&#xC2A4; HWP &#xC571;</h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://golbin.github.io/hop/?ref=tech.e3view.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">HOP is Open HWP</div><div class="kg-bookmark-description">HWP/HWPX &#xBB38;&#xC11C;&#xB97C; &#xBCF4;&#xACE0; &#xD3B8;&#xC9D1;&#xD560; &#xC218; &#xC788;&#xB294; &#xC624;&#xD508;&#xC18C;&#xC2A4; &#xB370;&#xC2A4;&#xD06C;&#xD1B1; &#xC571;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://golbin.github.io/hop/assets/logo/favicon.ico" alt><span class="kg-bookmark-author">HOP is Open HWP</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://golbin.github.io/hop/assets/screenshots/hop-editor.webp" alt></div></a></figure>]]></content:encoded></item><item><title><![CDATA[쉬어가며2]]></title><description><![CDATA[<p>&#xAC1C;&#xBC1C; &#xC77C;&#xB9CC; &#xD558;&#xB2E4; &#xBCF4;&#xBA74; &#xB208;&#xC55E;&#xC758; &#xCF54;&#xB4DC;&#xC5D0;&#xB9CC; &#xC9D1;&#xC911;&#xD558;&#xAC8C; &#xB41C;&#xB2E4;.<br>
&#xC624;&#xB298;&#xC740; &#xC870;&#xAE08; &#xB2E4;&#xB978; &#xC774;&#xC57C;&#xAE30;&#xB97C; &#xD574;&#xBCFC;&#xAE4C; &#xD55C;&#xB2E4;. &#xBC14;&#xB85C; <strong>&#xC8FC;&#xC2DD;</strong>&#xC5D0; &#xB300;&#xD55C; &#xC774;&#xC57C;&#xAE30;&#xB2E4;.</p>
<h2 id="%EC%99%9C-%EC%A3%BC%EC%8B%9D%EC%9D%84-%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94%EA%B0%80">&#xC65C; &#xC8FC;</h2>]]></description><link>https://tech.e3view.com/swieogamyeo2/</link><guid isPermaLink="false">69eab4ed573aee461c28ff06</guid><dc:creator><![CDATA[Jeonggil]]></dc:creator><pubDate>Fri, 24 Apr 2026 00:15:09 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2026/04/IMG_0123-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://tech.e3view.com/content/images/2026/04/IMG_0123-1.jpg" alt="&#xC26C;&#xC5B4;&#xAC00;&#xBA70;2"><p>&#xAC1C;&#xBC1C; &#xC77C;&#xB9CC; &#xD558;&#xB2E4; &#xBCF4;&#xBA74; &#xB208;&#xC55E;&#xC758; &#xCF54;&#xB4DC;&#xC5D0;&#xB9CC; &#xC9D1;&#xC911;&#xD558;&#xAC8C; &#xB41C;&#xB2E4;.<br>
&#xC624;&#xB298;&#xC740; &#xC870;&#xAE08; &#xB2E4;&#xB978; &#xC774;&#xC57C;&#xAE30;&#xB97C; &#xD574;&#xBCFC;&#xAE4C; &#xD55C;&#xB2E4;. &#xBC14;&#xB85C; <strong>&#xC8FC;&#xC2DD;</strong>&#xC5D0; &#xB300;&#xD55C; &#xC774;&#xC57C;&#xAE30;&#xB2E4;.</p>
<h2 id="%EC%99%9C-%EC%A3%BC%EC%8B%9D%EC%9D%84-%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94%EA%B0%80">&#xC65C; &#xC8FC;&#xC2DD;&#xC744; &#xD574;&#xC57C; &#xD558;&#xB294;&#xAC00;?</h2>
<p>&#xC8FC;&#xC2DD;&#xC744; &#xC2DC;&#xC791;&#xD558;&#xBA74; &#xC790;&#xC5F0;&#xC2A4;&#xB7FD;&#xAC8C; &#xC9C8;&#xBB38;&#xC774; &#xB9CE;&#xC544;&#xC9C4;&#xB2E4;.</p>
<p>&quot;&#xC65C; &#xC774; &#xD68C;&#xC0AC;&#xB294; &#xC601;&#xC5C5;&#xC774;&#xC775;&#xC774; &#xB298;&#xC5C8;&#xB294;&#xB370; &#xC8FC;&#xAC00;&#xB294; &#xB5A8;&#xC5B4;&#xC84C;&#xC744;&#xAE4C;?&quot;<br>
&quot;PER&#xC774; &#xB0AE;&#xC740;&#xB370; &#xC65C; &#xC544;&#xBB34;&#xB3C4; &#xC0AC;&#xC9C0; &#xC54A;&#xC744;&#xAE4C;?&quot;</p>
<p>&#xC7AC;&#xBB34;&#xC81C;&#xD45C;&#xB97C; &#xC77D;&#xACE0;, &#xB274;&#xC2A4;&#xB97C; &#xCC3E;&#xC544;&#xBCF4;&#xACE0;, &#xC2DC;&#xC7A5;&#xC758; &#xD750;&#xB984;&#xC744; &#xCD94;&#xC801;&#xD558;&#xB2E4; &#xBCF4;&#xBA74; &#xC138;&#xC0C1;&#xC744; &#xBCF4;&#xB294; &#xB208;&#xC774; &#xB2EC;&#xB77C;&#xC9C4;&#xB2E4;. &#xB2E8;&#xC21C;&#xD788; &#xB3C8;&#xC744; &#xBC8C;&#xAE30; &#xC704;&#xD55C; &#xD589;&#xC704;&#xAC00; &#xC544;&#xB2C8;&#xB77C;, <strong>&#xACBD;&#xC81C;&#xC640; &#xC0B0;&#xC5C5;&#xC744; &#xC774;&#xD574;&#xD558;&#xB294; &#xACFC;&#xC815;</strong> &#xADF8; &#xC790;&#xCCB4;&#xAC00; &#xB41C;&#xB2E4;.</p>
<h3 id="%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%98-%ED%9B%88%EB%A0%A8">&#xC2DC;&#xC2A4;&#xD15C;&#xC801; &#xC0AC;&#xACE0;&#xC758; &#xD6C8;&#xB828;</h3>
<p>&#xC8FC;&#xC2DD; &#xC2DC;&#xC7A5;&#xC740; &#xAC70;&#xB300;&#xD55C; &#xC0DD;&#xD0DC;&#xACC4;&#xB2E4;. &#xC218;&#xB9CE;&#xC740; &#xBCC0;&#xC218;&#xB4E4;&#xC774; &#xC5BD;&#xD600;&#xC788;&#xACE0;, &#xD558;&#xB098;&#xC758; &#xB274;&#xC2A4;&#xAC00; &#xC5F0;&#xC1C4; &#xBC18;&#xC751;&#xC744; &#xC77C;&#xC73C;&#xD0A8;&#xB2E4;. &#xBBF8;&#xAD6D; &#xAE08;&#xB9AC;&#xAC00; &#xC624;&#xB974;&#xBA74; &#xD55C;&#xAD6D; &#xC99D;&#xC2DC;&#xAC00; &#xD754;&#xB4E4;&#xB9AC;&#xACE0;, &#xC720;&#xAC00;&#xAC00; &#xC624;&#xB974;&#xBA74; &#xD56D;&#xACF5;&#xC8FC;&#xAC00; &#xB5A8;&#xC5B4;&#xC9C0;&#xACE0;, &#xD658;&#xC728;&#xC774; &#xBCC0;&#xD558;&#xBA74; &#xC218;&#xCD9C;&#xC8FC;&#xAC00; &#xC694;&#xB3D9;&#xCE5C;&#xB2E4;.</p>
<p>&#xC774;&#xB7F0; &#xBCF5;&#xC7A1;&#xD55C; &#xC2DC;&#xC2A4;&#xD15C;&#xC744; &#xC77D;&#xB294; &#xC5F0;&#xC2B5;&#xC740; &#xC0AC;&#xACE0;&#xC758; &#xD3ED;&#xC744; &#xB113;&#xD600;&#xC900;&#xB2E4;.</p>
<h3 id="%EA%B2%BD%EC%A0%9C-%ED%9D%90%EB%A6%84%EC%9D%98-%EC%9D%B4%ED%95%B4">&#xACBD;&#xC81C; &#xD750;&#xB984;&#xC758; &#xC774;&#xD574;</h3>
<p>&#xC5B4;&#xB5A4; &#xAE30;&#xC220;&#xC774; &#xC131;&#xC7A5;&#xD560;&#xC9C0; &#xC54C;&#xACE0; &#xC2F6;&#xB2E4;&#xBA74;, &#xADF8; &#xAE30;&#xC220;&#xC5D0; &#xD22C;&#xC790;&#xD558;&#xB294; &#xAE30;&#xC5C5;&#xB4E4;&#xC744; &#xBCF4;&#xB77C;.<br>
AI&#xAC00; &#xD654;&#xB450;&#xB77C;&#xBA74; NVIDIA, AMD, OpenAI&#xC5D0; &#xD22C;&#xC790;&#xD558;&#xB294; &#xD380;&#xB4DC;&#xB97C; &#xBCF4;&#xB77C;.<br>
&#xC804;&#xAE30;&#xCC28; &#xC2DC;&#xC7A5;&#xC774; &#xCEE4;&#xC9C4;&#xB2E4;&#xBA74; &#xBC30;&#xD130;&#xB9AC;, &#xBC18;&#xB3C4;&#xCCB4;, &#xCDA9;&#xC804; &#xC778;&#xD504;&#xB77C; &#xAE30;&#xC5C5;&#xB4E4;&#xC744; &#xBCF4;&#xB77C;.</p>
<p>&#xC8FC;&#xC2DD;&#xC740; &#xB2E8;&#xC21C;&#xD788; &#xB3C8;&#xC744; &#xBC84;&#xB294; &#xC218;&#xB2E8;&#xC774; &#xC544;&#xB2C8;&#xB77C;, <strong>&#xC138;&#xC0C1;&#xC774; &#xC5B4;&#xB514;&#xB85C; &#xAC00;&#xB294;&#xC9C0;</strong>&#xB97C; &#xC77D;&#xB294; &#xCC3D;&#xC774;&#xB2E4;. &#xAC1C;&#xBC1C;&#xC790;&#xB85C;&#xC11C; &#xC5B4;&#xB5A4; &#xAE30;&#xC220;&#xC744; &#xBC30;&#xC6B8;&#xC9C0;, &#xC5B4;&#xB5A4; &#xCEE4;&#xB9AC;&#xC5B4;&#xB97C; &#xC313;&#xC744;&#xC9C0; &#xACE0;&#xBBFC;&#xD560; &#xB54C;, &#xC774;&#xB7F0; &#xAC70;&#xC2DC;&#xC801; &#xC2DC;&#xC57C;&#xB294; &#xC5C4;&#xCCAD;&#xB09C; &#xC790;&#xC0B0;&#xC774; &#xB41C;&#xB2E4;.</p>
<h2 id="%EC%A3%BC%EC%9D%98%ED%95%A0-%EC%A0%90">&#xC8FC;&#xC758;&#xD560; &#xC810;</h2>
<p>&#xD558;&#xC9C0;&#xB9CC; &#xC8FC;&#xC2DD;&#xC740; &#xACB0;&#xCF54; &#xC27D;&#xC9C0; &#xC54A;&#xB2E4;. &#xBA87; &#xAC00;&#xC9C0; &#xC6D0;&#xCE59;&#xC744; &#xC9C0;&#xD0A4;&#xC9C0; &#xC54A;&#xC73C;&#xBA74; &#xD070; &#xC190;&#xD574;&#xB97C; &#xBCFC; &#xC218; &#xC788;&#xB2E4;.</p>
<p><strong>&#xB2E8;&#xD0C0;&#xB9E4;&#xB9E4;&#xB294; &#xD53C;&#xD558;&#xC790;.</strong> &#xD558;&#xB8E8;&#xC5D0;&#xB3C4; &#xC218;&#xC2ED; &#xBC88; &#xC0AC;&#xACE0;&#xD30C;&#xB294; &#xAC83;&#xC740; &#xB3C4;&#xBC15;&#xC5D0; &#xAC00;&#xAE5D;&#xB2E4;. &#xC218;&#xC218;&#xB8CC;&#xB9CC; &#xC99D;&#xAD8C;&#xC0AC;&#xC5D0; &#xAC16;&#xB2E4; &#xBC14;&#xCE58;&#xB294; &#xAF34;&#xC774;&#xB2E4;.</p>
<p><strong>&#xBB3C;&#xB9AC;&#xC9C0; &#xB9D0;&#xC790;.</strong> &#xB5A8;&#xC5B4;&#xC9C0;&#xB294; &#xCE7C;&#xB0A0;&#xC744; &#xC7A1;&#xC73C;&#xB824;&#xB2E4; &#xC190;&#xB9CC; &#xBCA0;&#xC778;&#xB2E4;. &#xC190;&#xC808;&#xC740; &#xC6A9;&#xAE30;&#xB2E4;.</p>
<p><strong>&#xC8FC;&#xB3C4;&#xC8FC; &#xC704;&#xC8FC;&#xB85C; &#xD22C;&#xC790;&#xD558;&#xC790;.</strong> &#xAC70;&#xB798;&#xB7C9;&#xC774; &#xC801;&#xC740; &#xD14C;&#xB9C8;&#xC8FC;&#xB098; &#xC7A1;&#xC8FC;&#xB294; &#xD53C;&#xD558;&#xB294; &#xAC8C; &#xC88B;&#xB2E4;. &#xC720;&#xB3D9;&#xC131;&#xC774; &#xC5C6;&#xC73C;&#xBA74; &#xD314;&#xACE0; &#xC2F6;&#xC744; &#xB54C; &#xD314;&#xC9C0; &#xBABB;&#xD55C;&#xB2E4;.</p>
<p><strong>&#xD55C; &#xBC88;&#xC5D0; &#xD070; &#xC695;&#xC2EC;&#xC744; &#xBC84;&#xB9AC;&#xC790;.</strong> 10% &#xC218;&#xC775;&#xB3C4; &#xD6CC;&#xB96D;&#xD558;&#xB2E4;. &#xB2E8;&#xAE30;&#xAC04;&#xC5D0; &#xBA87; &#xBC30;&#xB97C; &#xB178;&#xB9AC;&#xB2E4;&#xAC00;&#xB294; &#xC6D0;&#xAE08;&#xC744; &#xB0A0;&#xB9B4; &#xC218; &#xC788;&#xB2E4;.</p>
<p><strong>&#xBD84;&#xC0B0;&#xD22C;&#xC790;&#xB97C; &#xD558;&#xC790;.</strong> &#xD55C; &#xC885;&#xBAA9;&#xC5D0; &#xBAB0;&#xBE75;&#xD558;&#xB294; &#xAC83;&#xC740; &#xC704;&#xD5D8;&#xD558;&#xB2E4;. &#xACC4;&#xB780;&#xC744; &#xD55C; &#xBC14;&#xAD6C;&#xB2C8;&#xC5D0; &#xB2F4;&#xC9C0; &#xB9D0;&#xB77C;&#xB294; &#xB9D0;&#xC774; &#xAD1C;&#xD788; &#xC788;&#xB294; &#xAC8C; &#xC544;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xBD84;&#xD560;&#xB9E4;&#xC218;&#xB97C; &#xD65C;&#xC6A9;&#xD558;&#xC790;.</strong> &#xD55C; &#xBC88;&#xC5D0; &#xB2E4; &#xC0AC;&#xC9C0; &#xB9D0;&#xACE0; &#xC5EC;&#xB7EC; &#xBC88; &#xB098;&#xB220;&#xC11C; &#xC0AC;&#xBA74; &#xD3C9;&#xADE0; &#xB2E8;&#xAC00;&#xB97C; &#xB0AE;&#xCD9C; &#xC218; &#xC788;&#xB2E4;.</p>
<p><strong>&#xC77C;&#xD76C;&#xC77C;&#xBE44;&#xD558;&#xC9C0; &#xB9D0;&#xC790;.</strong> &#xC624;&#xB298; 5% &#xB5A8;&#xC5B4;&#xC84C;&#xB2E4;&#xACE0; &#xD328;&#xB2C9;&#xC5D0; &#xBE60;&#xC9C0;&#xC9C0; &#xB9D0;&#xACE0;, &#xB0B4;&#xC77C; 5% &#xC62C;&#xB790;&#xB2E4;&#xACE0; &#xD765;&#xBD84;&#xD558;&#xC9C0; &#xB9D0;&#xC790;. &#xC911;&#xC694;&#xD55C; &#xAC74; &#xC7A5;&#xAE30;&#xC801;&#xC778; &#xC218;&#xC775;&#xC774;&#xB2E4;.</p>
<p><strong>&#xAE30;&#xB2E4;&#xB9B4;&#xC904; &#xC54C;&#xC544;&#xC57C;&#xD55C;&#xB2E4;.</strong> &#xC88B;&#xC740; &#xC885;&#xBAA9;&#xC744; &#xBC1C;&#xACAC;&#xD588;&#xB2E4;&#xACE0; &#xBC14;&#xB85C; &#xC0AC;&#xB294; &#xAC83;&#xC774; &#xB2A5;&#xC0AC;&#xAC00; &#xC544;&#xB2C8;&#xB2E4;. &#xB0B4;&#xAC00; &#xC6D0;&#xD558;&#xB294; &#xAC00;&#xACA9;&#xB300;, &#xB0B4;&#xAC00; &#xC6D0;&#xD558;&#xB294; &#xAD6C;&#xAC04;&#xC774; &#xC62C; &#xB54C;&#xAE4C;&#xC9C0; &#xC0AC;&#xC9C0; &#xC54A;&#xACE0; &#xAE30;&#xB2E4;&#xB9AC;&#xB294; &#xAC83;&#xB3C4; &#xC2E4;&#xB825;&#xC774;&#xB2E4;. &#xC2DC;&#xC7A5;&#xC740; &#xD56D;&#xC0C1; &#xAE30;&#xD68C;&#xB97C; &#xC900;&#xB2E4;. &#xAE09;&#xB4F1;&#xD558;&#xB294; &#xCC28;&#xD2B8;&#xB97C; &#xBCF4;&#xBA70; &#xC870;&#xAE09;&#xD574;&#xD558;&#xACE0;, &#xB4A4;&#xB2A6;&#xAC8C; &#xB6F0;&#xC5B4;&#xB4DC;&#xB294; &#xC21C;&#xAC04; &#xBB3C;&#xB9AC;&#xAE30; &#xC2DC;&#xC791;&#xD55C;&#xB2E4;. &#xB9E4;&#xC218; &#xBC84;&#xD2BC;&#xC744; &#xB204;&#xB974;&#xC9C0; &#xC54A;&#xB294; &#xAC83;&#xB3C4; &#xD22C;&#xC790;&#xB2E4;. &#xCD1D;&#xC54C;&#xC744; &#xC544;&#xB07C;&#xACE0;, &#xC790;&#xB9AC;&#xAC00; &#xC654;&#xC744; &#xB54C; &#xD655;&#xC2E4;&#xD558;&#xAC8C; &#xB4E4;&#xC5B4;&#xAC00;&#xB294; &#xC0AC;&#xB78C;&#xC774; &#xACB0;&#xAD6D; &#xC0B4;&#xC544;&#xB0A8;&#xB294;&#xB2E4;.</p>
<p><strong>&#xACB0;&#xAD6D; &#xC218;&#xC775;&#xC744; &#xBCF4;&#xB294; &#xAC8C; &#xC911;&#xC694;&#xD558;&#xB2E4;.</strong> &#xC544;&#xBB34;&#xB9AC; &#xBD84;&#xC11D;&#xC744; &#xC798;&#xD574;&#xB3C4;, &#xACB0;&#xACFC;&#xAC00; &#xC88B;&#xC9C0; &#xC54A;&#xC73C;&#xBA74; &#xC758;&#xBBF8;&#xAC00; &#xC5C6;&#xB2E4;. &#xACB8;&#xC190;&#xD558;&#xAC8C;, &#xAFB8;&#xC900;&#xD788;.</p>
<h2 id="%EB%A7%88%EC%B9%98%EB%A9%B0-%ED%88%AC%EC%9E%90%EB%8A%94-%EB%98%90-%EB%8B%A4%EB%A5%B8-%EC%84%B1%EC%9E%A5">&#xB9C8;&#xCE58;&#xBA70;: &#xD22C;&#xC790;&#xB294; &#xB610; &#xB2E4;&#xB978; &#xC131;&#xC7A5;</h2>
<p>&#xC694;&#xC998; &#xC77D;&#xACE0; &#xC788;&#xB294; &#xCC45;&#xC5D0;&#xC11C; &#xC778;&#xC0C1; &#xAE4A;&#xC5C8;&#xB358; &#xAD6C;&#xC808;&#xC774; &#xC788;&#xB2E4;.</p>
<p>&quot;&#xC8FC;&#xC2DD;&#xC758; &#xD750;&#xB984;&#xC740; &#xAC1C;&#xC778; &#xD22C;&#xC790;&#xC790;&#xAC00; &#xC544;&#xB2CC;, &#xC138;&#xB825;&#xC774; &#xB9CC;&#xB4E0;&#xB2E4;.&quot;</p>
<p>&#xACB0;&#xAD6D; &#xBC25;&#xC0C1;&#xC744; &#xCC28;&#xB9AC;&#xB294; &#xAC74; &#xC138;&#xB825;&#xC774;&#xB2E4;. &#xADF8;&#xB4E4;&#xC774; &#xC644;&#xC131;&#xD55C; &#xBC25;&#xC0C1;&#xC5D0; &#xB4A4;&#xB2A6;&#xAC8C; &#xC549;&#xC544; &#xACB8;&#xC0C1;&#xC744; &#xD558;&#xB824;&#xACE0; &#xD558;&#xBA74; &#xBB3C;&#xB9AC;&#xAE30; &#xB531; &#xC88B;&#xB2E4;. &#xCC28;&#xB77C;&#xB9AC; &#xBC25;&#xC0C1;&#xC774; &#xCC28;&#xB824;&#xC9C0;&#xAE30; &#xC804;, &#xC7AC;&#xB8CC;&#xB97C; &#xB2E4;&#xB4EC;&#xB294; &#xB2E8;&#xACC4;&#xC5D0;&#xC11C; &#xD55C; &#xC785; &#xBA39;&#xACE0; &#xBE60;&#xC838;&#xB098;&#xC624;&#xB294; &#xC804;&#xB7B5;&#xC774; &#xD604;&#xBA85;&#xD558;&#xC9C0; &#xC54A;&#xC744;&#xAE4C;.</p>
<p>&#xC8FC;&#xC2DD; &#xC2DC;&#xC7A5;&#xC740; &#xB0C9;&#xC815;&#xD558;&#xB2E4;. &#xD558;&#xC9C0;&#xB9CC; &#xADF8; &#xC548;&#xC5D0;&#xC11C; &#xBC30;&#xC6B0;&#xB294; &#xAC83;&#xB4E4;&#xC740; &#xACB0;&#xCF54; &#xCC28;&#xAC11;&#xC9C0; &#xC54A;&#xB2E4;. &#xC138;&#xC0C1;&#xC744; &#xC77D;&#xB294; &#xB208;, &#xB9AC;&#xC2A4;&#xD06C;&#xB97C; &#xAD00;&#xB9AC;&#xD558;&#xB294; &#xBC95;, &#xAC10;&#xC815;&#xC744; &#xB2E4;&#xC2A4;&#xB9AC;&#xB294; &#xD798;.</p>
<p>&#xAC1C;&#xBC1C;&#xACFC; &#xD22C;&#xC790;, &#xCF54;&#xB4DC;&#xC640; &#xCC28;&#xD2B8;. &#xAC89;&#xBCF4;&#xAE30;&#xC5D4; &#xB2E4;&#xB974;&#xC9C0;&#xB9CC; &#xACB0;&#xAD6D; &#xB458; &#xB2E4; &#xB04A;&#xC784;&#xC5C6;&#xC774; &#xBC30;&#xC6B0;&#xACE0; &#xC131;&#xC7A5;&#xD558;&#xB294; &#xACFC;&#xC815;&#xC774;&#xB2E4;.</p>
<hr>
<p><img src="https://tech.e3view.com/content/images/2026/04/IMG_0123-2.jpg" alt="&#xC26C;&#xC5B4;&#xAC00;&#xBA70;2" loading="lazy"><br>
<img src="https://tech.e3view.com/content/images/2026/04/IMG_0125.jpg" alt="&#xC26C;&#xC5B4;&#xAC00;&#xBA70;2" loading="lazy"></p>
]]></content:encoded></item><item><title><![CDATA[쉬어가며]]></title><description><![CDATA[<p></p><p>&#xAC1C;&#xBC1C; &#xC77C;&#xB9CC; &#xD558;&#xB2E4; &#xBCF4;&#xBA74; &#xB54C;&#xB85C;&#xB294; &#xC7A0;&#xC2DC; &#xBA48;&#xCDB0;&#xC11C; &#xC8FC;&#xBCC0;&#xC744; &#xB458;&#xB7EC;&#xBCF4;&#xB294; &#xAC83;&#xB3C4; &#xC911;&#xC694;&#xD558;&#xB2E4;.<br>
&#xC624;&#xB298;&#xC740; &#xC624;&#xB798;&#xC804;&#xC5D0; &#xB2E4;&#xB154;&#xB358; &#xBCD1;&#xC6D0;&#xC5D0;&#xC11C;&#xC758; &#xC77C;&#xC744; &#xAC00;&#xBCCD;&#xAC8C; &#xD480;</p>]]></description><link>https://tech.e3view.com/swieogamyeo/</link><guid isPermaLink="false">69c1d7fd5ad32607062037b8</guid><dc:creator><![CDATA[Jeonggil]]></dc:creator><pubDate>Tue, 24 Mar 2026 00:25:43 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2026/03/TalkFile_hmf.png" medium="image"/><content:encoded><![CDATA[<img src="https://tech.e3view.com/content/images/2026/03/TalkFile_hmf.png" alt="&#xC26C;&#xC5B4;&#xAC00;&#xBA70;"><p></p><p>&#xAC1C;&#xBC1C; &#xC77C;&#xB9CC; &#xD558;&#xB2E4; &#xBCF4;&#xBA74; &#xB54C;&#xB85C;&#xB294; &#xC7A0;&#xC2DC; &#xBA48;&#xCDB0;&#xC11C; &#xC8FC;&#xBCC0;&#xC744; &#xB458;&#xB7EC;&#xBCF4;&#xB294; &#xAC83;&#xB3C4; &#xC911;&#xC694;&#xD558;&#xB2E4;.<br>
&#xC624;&#xB298;&#xC740; &#xC624;&#xB798;&#xC804;&#xC5D0; &#xB2E4;&#xB154;&#xB358; &#xBCD1;&#xC6D0;&#xC5D0;&#xC11C;&#xC758; &#xC77C;&#xC744; &#xAC00;&#xBCCD;&#xAC8C; &#xD480;&#xC5B4;&#xBCFC;&#xAE4C; &#xD55C;&#xB2E4;.</p>
<blockquote>
<p>&#xACE0;&#xAC1D;&#xC774; &#xBCD1;&#xC6D0;&#xC5D0; &#xBC29;&#xBB38;&#xD558;&#xACE0;, &#xADF8;&#xAC83;&#xC774; &#xC218;&#xC775;&#xC73C;&#xB85C; &#xC774;&#xC5B4;&#xC9C0;&#xAE30;&#xAE4C;&#xC9C0;.<br>
&#xADF8; &#xC548;&#xC5D0;&#xB294; &#xC0DD;&#xAC01;&#xBCF4;&#xB2E4; &#xD6E8;&#xC52C; &#xB9CE;&#xC740; &#xC804;&#xB7B5;&#xACFC; &#xAE30;&#xC220;, &#xADF8;&#xB9AC;&#xACE0; &#xC0AC;&#xB78C;&#xB4E4;&#xC758; &#xB178;&#xB825;&#xC774; &#xC228;&#xC5B4;&#xC788;&#xB2E4;.</p>
</blockquote>
<h2 id="1-%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0">1. &#xB4E4;&#xC5B4;&#xAC00;&#xBA70;</h2>
<p>&#xC624;&#xB798;&#xC804; &#xB2E4;&#xB154;&#xB358; &#xD55C; &#xBCD1;&#xC6D0;&#xC5D0;&#xC11C;&#xC758; &#xC77C;&#xC774;&#xB2E4;.</p>
<p>&#xB2F9;&#xC2DC; &#xB098;&#xB294; &quot;&#xC758;&#xB8CC; IT&quot;&#xB77C;&#xB294; &#xB0AF;&#xC120; &#xB3C4;&#xBA54;&#xC778;&#xC5D0; &#xCC98;&#xC74C; &#xBC1C;&#xC744; &#xB4E4;&#xC600;&#xACE0;, &#xC194;&#xC9C1;&#xD788; &#xB9D0;&#xD558;&#xBA74; &#xC790;&#xC2E0;&#xAC10;&#xC73C;&#xB85C; &#xAC00;&#xB4DD;&#xD588;&#xB2E4;.<br>
&quot;&#xC88B;&#xC740; &#xAE30;&#xC220;&#xB9CC; &#xC788;&#xC73C;&#xBA74; &#xB418;&#xACA0;&#xC9C0;&quot;&#xB77C;&#xACE0; &#xC0DD;&#xAC01;&#xD588;&#xB2E4;.</p>
<p>&#xADF8;&#xB7F0;&#xB370; &#xCCAB; &#xD68C;&#xC758;&#xC5D0;&#xC11C; &#xB9C8;&#xCF00;&#xD305;&#xD300;&#xC774; &#xB358;&#xC9C4; &#xC9C8;&#xBB38;&#xB4E4;&#xC740; &#xC644;&#xC804;&#xD788; &#xB2EC;&#xB790;&#xB2E4;.</p>
<p>&quot;&#xB124;&#xC774;&#xBC84; &#xBE0C;&#xB79C;&#xB4DC; &#xAC80;&#xC0C9;&#xC73C;&#xB85C; &#xB4E4;&#xC5B4;&#xC628; &#xACE0;&#xAC1D;&#xC774; &#xAC15;&#xB0A8;&#xC5B8;&#xB2C8;&#xB85C; &#xB4E4;&#xC5B4;&#xC628; &#xACE0;&#xAC1D;&#xBCF4;&#xB2E4; &#xC804;&#xD658;&#xC728;&#xC774; &#xB0AE;&#xC740;&#xB370;, &#xC774;&#xC720;&#xB97C; &#xC54C; &#xC218; &#xC788;&#xC744;&#xAE4C;&#xC694;?&quot;<br>
&quot;UTM &#xD30C;&#xB77C;&#xBBF8;&#xD130;&#xAC00; &#xB04A;&#xAE30;&#xB294; &#xC9C0;&#xC810;&#xC744; &#xCC3E;&#xC744; &#xC218; &#xC788;&#xB098;&#xC694;?&quot;<br>
&quot;&#xC2E4;&#xC81C; &#xB0B4;&#xC6D0; &#xACBD;&#xB85C;&#xC640; &#xC628;&#xB77C;&#xC778; &#xCD94;&#xC801; &#xB370;&#xC774;&#xD130;&#xAC00; &#xC65C; &#xC774;&#xB807;&#xAC8C; &#xB2E4;&#xB978;&#xAC00;&#xC694;?&quot;</p>
<p>&#xB098;&#xB294; &#xBA4D;&#xD588;&#xB2E4;. &#xC804;&#xD658;&#xC728;? UTM? &#xB0B4;&#xC6D0; &#xACBD;&#xB85C;? &#xC774;&#xAC8C; &#xBB34;&#xC2A8; &#xB9D0;&#xC774;&#xC9C0;?</p>
<p>&#xB124;&#xC774;&#xBC84; &#xAC80;&#xC0C9;&#xAD11;&#xACE0;, &#xB124;&#xC774;&#xBC84; &#xBE0C;&#xB79C;&#xB4DC;, &#xB124;&#xC774;&#xBC84; &#xD0A4;&#xC6CC;&#xB4DC;, &#xCE74;&#xCE74;&#xC624;&#xD1A1;, &#xC778;&#xC2A4;&#xD0C0;&#xADF8;&#xB7A8;, &#xD398;&#xC774;&#xC2A4;&#xBD81;, &#xAC15;&#xB0A8;&#xC5B8;&#xB2C8;, &#xAD6C;&#xAE00; &#xAD11;&#xACE0;... &#xC218;&#xB9CE;&#xC740; &#xCC44;&#xB110;&#xC744; &#xD1B5;&#xD574; &#xB9E4;&#xC77C; &#xC218;&#xBC31;, &#xC218;&#xCC9C; &#xBA85;&#xC758; &#xACE0;&#xAC1D;&#xC774; &#xC720;&#xC785;&#xB41C;&#xB2E4;. &#xB9C8;&#xCF00;&#xD130;&#xB4E4;&#xC740; &#xAC01; &#xCC44;&#xB110;&#xC758; &#xAD11;&#xACE0;&#xBE44;&#xB97C; &#xC0B0;&#xC815;&#xD558;&#xACE0;, &#xC5B4;&#xB5A4; &#xBA54;&#xC2DC;&#xC9C0;&#xAC00; &#xD6A8;&#xACFC;&#xC801;&#xC778;&#xC9C0; &#xD14C;&#xC2A4;&#xD2B8;&#xD558;&#xACE0;, &#xC7AC;&#xBC29;&#xBB38;&#xC728;&#xC744; &#xB192;&#xC774;&#xAE30; &#xC704;&#xD574; &#xBC24;&#xB0AE;&#xC73C;&#xB85C; &#xACE0;&#xBBFC;&#xD55C;&#xB2E4;.</p>
<p>&#xADF8;&#xC81C;&#xC57C; &#xAE68;&#xB2EC;&#xC558;&#xB2E4;. &#xB0B4;&#xAC00; &#xB9CC;&#xB4E4;&#xC5B4;&#xC57C; &#xD560; &#xAC83;&#xC740; &#xB2E8;&#xC21C;&#xD788; &quot;&#xC798; &#xC791;&#xB3D9;&#xD558;&#xB294; &#xCF54;&#xB4DC;&quot;&#xAC00; &#xC544;&#xB2C8;&#xB77C;,<br>
<strong>&#xBE44;&#xC988;&#xB2C8;&#xC2A4; &#xBB38;&#xC81C;&#xB97C; &#xD574;&#xACB0;&#xD558;&#xB294; &#xC2DC;&#xC2A4;&#xD15C;</strong>&#xC774;&#xB77C;&#xB294; &#xAC83;&#xC744;.</p>
<p>&#xAE30;&#xC220;&#xC740; &#xC2DC;&#xC791;&#xC774;&#xC5C8;&#xACE0;, &#xB3C4;&#xBA54;&#xC778;&#xC744; &#xC774;&#xD574;&#xD558;&#xB294; &#xAC83;&#xC774; &#xC9C4;&#xC9DC; &#xC2DC;&#xC791;&#xC774;&#xC5C8;&#xB2E4;.</p>
<h2 id="2-%EB%A7%88%EC%BC%80%ED%8C%85-%EC%B1%84%EB%84%90-%EA%B3%A0%EA%B0%9D%EA%B3%BC%EC%9D%98-%EC%B2%AB-%EB%A7%8C%EB%82%A8">2. &#xB9C8;&#xCF00;&#xD305; &#xCC44;&#xB110;: &#xACE0;&#xAC1D;&#xACFC;&#xC758; &#xCCAB; &#xB9CC;&#xB0A8;</h2>
<p>&#xACE0;&#xAC1D;&#xC774; &#xBCD1;&#xC6D0;&#xC744; &#xC54C;&#xAC8C; &#xB418;&#xB294; &#xACBD;&#xB85C;&#xB294; &#xC815;&#xB9D0; &#xB2E4;&#xC591;&#xD558;&#xB2E4;.</p>
<ul>
<li><strong>&#xAC80;&#xC0C9; &#xAD11;&#xACE0;</strong>: &quot;&#xAC15;&#xB0A8; &#xD53C;&#xBD80;&#xACFC;&quot;&#xB97C; &#xAC80;&#xC0C9;&#xD55C; &#xC0AC;&#xB78C;&#xC5D0;&#xAC8C; &#xAD11;&#xACE0;&#xB97C; &#xBCF4;&#xC5EC;&#xC900;&#xB2E4;</li>
<li><strong>&#xC18C;&#xC15C; &#xBBF8;&#xB514;&#xC5B4;</strong>: &#xC778;&#xC2A4;&#xD0C0;&#xADF8;&#xB7A8; &#xD53C;&#xB4DC;&#xB97C; &#xB118;&#xAE30;&#xB2E4;&#xAC00; &#xC6B0;&#xC5F0;&#xD788; &#xBCF8; &#xAD11;&#xACE0;</li>
<li><strong>&#xC804;&#xBB38; &#xD50C;&#xB7AB;&#xD3FC;</strong>: &#xAC15;&#xB0A8;&#xC5B8;&#xB2C8; &#xAC19;&#xC740; &#xBBF8;&#xC6A9; &#xC758;&#xB8CC; &#xD2B9;&#xD654; &#xD50C;&#xB7AB;&#xD3FC;</li>
<li><strong>&#xB9AC;&#xD0C0;&#xAC8C;&#xD305;</strong>: &#xD55C; &#xBC88; &#xBC29;&#xBB38;&#xD588;&#xB358; &#xC0AC;&#xB78C;&#xC5D0;&#xAC8C; &#xB2E4;&#xC2DC; &#xAD11;&#xACE0;&#xB97C; &#xBCF4;&#xC5EC;&#xC900;&#xB2E4;</li>
</ul>
<p>&#xAC01; &#xCC44;&#xB110;&#xB9C8;&#xB2E4; &#xAD11;&#xACE0;&#xBE44;&#xAC00; &#xB2E4;&#xB974;&#xACE0;, &#xC804;&#xD658;&#xC728;&#xB3C4; &#xB2E4;&#xB974;&#xACE0;, &#xC2EC;&#xC9C0;&#xC5B4; &#xC720;&#xC785;&#xB41C; &#xACE0;&#xAC1D;&#xC758; &apos;&#xC9C8;&apos;&#xB3C4; &#xB2E4;&#xB974;&#xB2E4;. &#xC5B4;&#xB5A4; &#xCC44;&#xB110;&#xC740; &#xD074;&#xB9AD;&#xC740; &#xB9CE;&#xC740;&#xB370; &#xC2E4;&#xC81C; &#xBC29;&#xBB38;&#xC73C;&#xB85C;&#xB294; &#xC774;&#xC5B4;&#xC9C0;&#xC9C0; &#xC54A;&#xACE0;, &#xC5B4;&#xB5A4; &#xCC44;&#xB110;&#xC740; &#xBE44;&#xC2F8;&#xC9C0;&#xB9CC; &#xB192;&#xC740; &#xC804;&#xD658;&#xC728;&#xC744; &#xC790;&#xB791;&#xD55C;&#xB2E4;.</p>
<h2 id="3-%EC%B6%94%EC%A0%81%EC%9D%98-%EC%8B%9C%EC%9E%91-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%8C%93%EC%9D%B4%EB%8A%94%EA%B0%80">3. &#xCD94;&#xC801;&#xC758; &#xC2DC;&#xC791;: &#xB370;&#xC774;&#xD130;&#xB294; &#xC5B4;&#xB5BB;&#xAC8C; &#xC313;&#xC774;&#xB294;&#xAC00;</h2>
<p>&#xACE0;&#xAC1D;&#xC774; &#xAD11;&#xACE0;&#xB97C; &#xD074;&#xB9AD;&#xD558;&#xACE0; &#xBCD1;&#xC6D0; &#xC6F9;&#xC0AC;&#xC774;&#xD2B8;&#xB098; &#xC571;&#xC5D0; &#xB4E4;&#xC5B4;&#xC624;&#xB294; &#xC21C;&#xAC04;, &#xCD94;&#xC801;&#xC774; &#xC2DC;&#xC791;&#xB41C;&#xB2E4;.</p>
<pre><code class="language-json">UTM &#xD30C;&#xB77C;&#xBBF8;&#xD130; &#xC608;&#xC2DC;:
https://hospital.com/?utm_source=naver&amp;utm_medium=cpc&amp;utm_campaign=spring_promo
</code></pre>
<p>&#xC774;&#xB7F0; &#xC2DD;&#xC73C;&#xB85C; URL&#xC5D0; &#xBD99;&#xB294; &#xC791;&#xC740; &#xD30C;&#xB77C;&#xBBF8;&#xD130;&#xB4E4;&#xC774; &#xACE0;&#xAC1D;&#xC758; &#xC5EC;&#xC815;&#xC744; &#xAE30;&#xB85D;&#xD55C;&#xB2E4;. Google Analytics, &#xC790;&#xCCB4; &#xCD94;&#xC801; &#xC2DC;&#xC2A4;&#xD15C;, &#xCFE0;&#xD0A4; &#xB4F1; &#xC5EC;&#xB7EC; &#xAE30;&#xC220;&#xC774; &#xB3D9;&#xC6D0;&#xB41C;&#xB2E4;.</p>
<p>&#xC6B0;&#xB9AC;&#xB294; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC740; &#xB370;&#xC774;&#xD130;&#xB97C; &#xC218;&#xC9D1;&#xD55C;&#xB2E4;:</p>
<ul>
<li><strong>&#xC720;&#xC785; &#xACBD;&#xB85C;</strong>: &#xC5B4;&#xB5A4; &#xAD11;&#xACE0;&#xB97C; &#xD0C0;&#xACE0; &#xB4E4;&#xC5B4;&#xC654;&#xB294;&#xAC00;?</li>
<li><strong>&#xB79C;&#xB529; &#xD398;&#xC774;&#xC9C0;</strong>: &#xCCAB; &#xD654;&#xBA74;&#xC73C;&#xB85C; &#xBB34;&#xC5C7;&#xC744; &#xBD24;&#xB294;&#xAC00;?</li>
<li><strong>&#xD589;&#xB3D9; &#xD328;&#xD134;</strong>: &#xC5B4;&#xB5A4; &#xD398;&#xC774;&#xC9C0;&#xB97C; &#xB458;&#xB7EC;&#xBD24;&#xB294;&#xAC00;?</li>
<li><strong>&#xC804;&#xD658; &#xC5EC;&#xBD80;</strong>: &#xC608;&#xC57D;&#xC744; &#xD588;&#xB294;&#xAC00;? &#xC0C1;&#xB2F4; &#xC2E0;&#xCCAD;&#xC744; &#xD588;&#xB294;&#xAC00;?</li>
</ul>
<h2 id="4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80-%ED%9D%90%EB%A5%B4%EB%8A%94-%EA%B8%B8">4. &#xC544;&#xD0A4;&#xD14D;&#xCC98;: &#xB370;&#xC774;&#xD130;&#xAC00; &#xD750;&#xB974;&#xB294; &#xAE38;</h2>
<p>&#xC774; &#xBAA8;&#xB4E0; &#xACFC;&#xC815;&#xC744; &#xD55C;&#xB208;&#xC5D0; &#xBCF4;&#xAE30; &#xC704;&#xD574; &#xAC00;&#xBCBC;&#xC6B4; &#xC544;&#xD0A4;&#xD14D;&#xCC98; &#xB2E4;&#xC774;&#xC5B4;&#xADF8;&#xB7A8;&#xC744; &#xADF8;&#xB824;&#xBD24;&#xB2E4;.</p>
<figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2026/03/TalkFile_hmf-2.png" width="1041" height="641" loading="lazy" alt="&#xC26C;&#xC5B4;&#xAC00;&#xBA70;" srcset="https://tech.e3view.com/content/images/size/w600/2026/03/TalkFile_hmf-2.png 600w, https://tech.e3view.com/content/images/size/w1000/2026/03/TalkFile_hmf-2.png 1000w, https://tech.e3view.com/content/images/2026/03/TalkFile_hmf-2.png 1041w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p></p><p>&#xAC04;&#xB2E8;&#xD788; &#xC815;&#xB9AC;&#xD558;&#xBA74; &#xC774;&#xB7F0; &#xD750;&#xB984;&#xC774;&#xB2E4;:</p>
<ol>
<li><strong>&#xB9C8;&#xCF00;&#xD305; &#xCC44;&#xB110;</strong> &#x2192; &#xACE0;&#xAC1D;&#xC774; &#xAD11;&#xACE0;&#xB97C; &#xBCF8;&#xB2E4;</li>
<li><strong>&#xB79C;&#xB529; &#xD398;&#xC774;&#xC9C0;</strong> &#x2192; &#xBCD1;&#xC6D0; &#xC6F9;&#xC0AC;&#xC774;&#xD2B8;/&#xC571;&#xC5D0; &#xC811;&#xC18D;&#xD55C;&#xB2E4;</li>
<li><strong>&#xCD94;&#xC801; &#xC2DC;&#xC2A4;&#xD15C;</strong> &#x2192; &#xC720;&#xC785; &#xACBD;&#xB85C;&#xC640; &#xD589;&#xB3D9;&#xC774; &#xAE30;&#xB85D;&#xB41C;&#xB2E4;</li>
<li><strong>&#xB370;&#xC774;&#xD130; &#xC218;&#xC9D1;</strong> &#x2192; &#xBAA8;&#xB4E0; &#xC815;&#xBCF4;&#xAC00; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4;&#xC5D0; &#xC800;&#xC7A5;&#xB41C;&#xB2E4;</li>
<li><strong>MRM &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;</strong> &#x2192; &#xB9C8;&#xCF00;&#xD130;&#xAC00; &#xBCFC; &#xC218; &#xC788;&#xAC8C; &#xC2DC;&#xAC01;&#xD654;&#xB41C;&#xB2E4;</li>
<li><strong>&#xC758;&#xC0AC;&#xACB0;&#xC815;</strong> &#x2192; &#xAD11;&#xACE0;&#xBE44;&#xB97C; &#xC5B4;&#xB514;&#xC5D0; &#xC4F8;&#xC9C0; &#xACB0;&#xC815;&#xD55C;&#xB2E4;</li>
<li><strong>&#xACE0;&#xAC1D; &#xC138;&#xADF8;&#xBA3C;&#xD2B8;</strong> &#x2192; &#xC2E0;&#xADDC; vs &#xC7AC;&#xBC29;&#xBB38; &#xACE0;&#xAC1D;&#xC744; &#xAD6C;&#xBD84;&#xD55C;&#xB2E4;</li>
<li><strong>&#xC7AC;&#xD0C0;&#xAC9F;&#xD305;</strong> &#x2192; &#xC774;&#xBCA4;&#xD2B8; &#xBB38;&#xC790;, &#xD504;&#xB85C;&#xBAA8;&#xC158; &#xBC1C;&#xC1A1;</li>
<li><strong>&#xC2E4;&#xC81C; &#xB0B4;&#xC6D0;</strong> &#x2192; &#xACE0;&#xAC1D;&#xC774; &#xBCD1;&#xC6D0;&#xC5D0; &#xBC29;&#xBB38;&#xD55C;&#xB2E4;</li>
<li><strong>&#xB0B4;&#xC6D0; &#xACBD;&#xB85C; &#xAC80;&#xC99D;</strong> &#x2192; &quot;&#xC5B4;&#xB5BB;&#xAC8C; &#xC54C;&#xACE0; &#xC624;&#xC168;&#xC5B4;&#xC694;?&quot;</li>
<li><strong>&#xC218;&#xC775;&#xD654;</strong> &#x2192; &#xC9C4;&#xB8CC;&#xBE44; &#xBC1C;&#xC0DD;</li>
</ol>
<p>&#xADF8;&#xB9AC;&#xACE0; &#xAC00;&#xC7A5; &#xC911;&#xC694;&#xD55C; &#xAC83;&#xC740;, &#xC774; &#xBAA8;&#xB4E0; &#xB370;&#xC774;&#xD130;&#xAC00; &#xB2E4;&#xC2DC; &#xCC98;&#xC74C;&#xC73C;&#xB85C; &#xD53C;&#xB4DC;&#xBC31;&#xB418;&#xC5B4; &#xB9C8;&#xCF00;&#xD305; &#xC804;&#xB7B5;&#xC744; &#xAC1C;&#xC120;&#xD55C;&#xB2E4;&#xB294; &#xC810;&#xC774;&#xB2E4;.</p>
<h2 id="5-%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98-%EC%97%AD%ED%95%A0-mrm-%EB%8C%80%EC%8B%9C%EB%B3%B4%EB%93%9C">5. &#xAC1C;&#xBC1C;&#xC790;&#xC758; &#xC5ED;&#xD560;: MRM &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;</h2>
<p>&#xB9C8;&#xCF00;&#xD130;&#xB4E4;&#xC774; &#xB9E4;&#xC77C; &#xBCF4;&#xB294; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;<br>
&#xB098;&#xB294; &#xC774;&#xAC78; <strong>MRM(Marketing Resource Management)</strong> &#xC774;&#xB77C;&#xACE0; &#xBD88;&#xB800;&#xB2E4;.</p>
<p>&#xC774; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;&#xC5D0;&#xB294; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC740; &#xC815;&#xBCF4;&#xAC00; &#xC2E4;&#xC2DC;&#xAC04;&#xC73C;&#xB85C; &#xD45C;&#xC2DC;&#xB41C;&#xB2E4;:</p>
<ul>
<li><strong>&#xCC44;&#xB110;&#xBCC4; &#xC720;&#xC785; &#xD604;&#xD669;</strong>: &#xC624;&#xB298; &#xB124;&#xC774;&#xBC84;&#xC5D0;&#xC11C; &#xBA87; &#xBA85;, &#xC778;&#xC2A4;&#xD0C0;&#xC5D0;&#xC11C; &#xBA87; &#xBA85;?</li>
<li><strong>&#xC804;&#xD658;&#xC728;</strong>: 100&#xBA85;&#xC774; &#xB4E4;&#xC5B4;&#xC640;&#xC11C; &#xBA87; &#xBA85;&#xC774; &#xC608;&#xC57D;&#xD588;&#xB098;?</li>
<li><strong>&#xAD11;&#xACE0;&#xBE44; &#xB300;&#xBE44; &#xC218;&#xC775;</strong>: ROAS(Return On Ad Spend)&#xB294;?</li>
<li><strong>&#xC2DC;&#xAC04;&#xB300;&#xBCC4; &#xD2B8;&#xB80C;&#xB4DC;</strong>: &#xC5B8;&#xC81C; &#xAC00;&#xC7A5; &#xB9CE;&#xC774; &#xB4E4;&#xC5B4;&#xC624;&#xB098;?</li>
<li><strong>&#xCEA0;&#xD398;&#xC778; &#xC131;&#xACFC;</strong>: &#xC5B4;&#xB5A4; &#xBB38;&#xAD6C;, &#xC5B4;&#xB5A4; &#xC774;&#xBBF8;&#xC9C0;&#xAC00; &#xD6A8;&#xACFC;&#xC801;&#xC778;&#xAC00;?</li>
</ul>
<p>&#xAC1C;&#xBC1C;&#xC790;&#xB85C;&#xC11C; &#xC774;&#xB7F0; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;&#xB97C; &#xB9CC;&#xB4DC;&#xB294; &#xC77C;&#xC740; &#xB2E8;&#xC21C;&#xD788; &#xCC28;&#xD2B8;&#xB97C; &#xADF8;&#xB9AC;&#xB294; &#xAC83; &#xC774;&#xC0C1;&#xC774;&#xB2E4;. &#xB370;&#xC774;&#xD130; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;, &#xC2E4;&#xC2DC;&#xAC04; &#xC9D1;&#xACC4;, &#xC131;&#xB2A5; &#xCD5C;&#xC801;&#xD654;, &#xADF8;&#xB9AC;&#xACE0; &#xBB34;&#xC5C7;&#xBCF4;&#xB2E4; <strong>&#xB9C8;&#xCF00;&#xD130;&#xAC00; &#xC6D0;&#xD558;&#xB294; &#xC778;&#xC0AC;&#xC774;&#xD2B8;&#xB97C; &#xC27D;&#xAC8C; &#xCC3E;&#xC744; &#xC218; &#xC788;&#xAC8C;</strong> &#xD558;&#xB294; UX &#xC124;&#xACC4;&#xAC00; &#xC911;&#xC694;&#xD588;&#xB2E4;.</p>
<h2 id="6-%EA%B3%A0%EA%B0%9D-%EC%84%B8%EA%B7%B8%EB%A8%BC%ED%8A%B8-%EC%8B%A0%EA%B7%9C-vs-%EC%9E%AC%EB%B0%A9%EB%AC%B8">6. &#xACE0;&#xAC1D; &#xC138;&#xADF8;&#xBA3C;&#xD2B8;: &#xC2E0;&#xADDC; vs &#xC7AC;&#xBC29;&#xBB38;</h2>
<p>&#xBAA8;&#xB4E0; &#xACE0;&#xAC1D;&#xC774; &#xAC19;&#xC740; &#xAC83;&#xC740; &#xC544;&#xB2C8;&#xB2E4;.<br>
&#xC6B0;&#xB9AC;&#xB294; &#xD06C;&#xAC8C; &#xB450; &#xAC00;&#xC9C0;&#xB85C; &#xB098;&#xB220;&#xC11C; <strong>&#xACE0;&#xAC1D;&#xC758; &#xC5EC;&#xC815;</strong>&#xC744; &#xB9CC;&#xB4E4;&#xC5C8;&#xB2E4;.</p>
<h3 id="%EC%8B%A0%EA%B7%9C-%EA%B3%A0%EA%B0%9D">&#xC2E0;&#xADDC; &#xACE0;&#xAC1D;</h3>
<ul>
<li>&#xCC98;&#xC74C; &#xBC29;&#xBB38;&#xD558;&#xB294; &#xC0AC;&#xB78C;</li>
<li>&#xB192;&#xC740; &#xD68D;&#xB4DD; &#xBE44;&#xC6A9; (CAC: Customer Acquisition Cost)</li>
<li>&#xC2E0;&#xB8B0; &#xAD6C;&#xCD95;&#xC774; &#xC911;&#xC694;</li>
<li>&#xCCAB;&#xC778;&#xC0C1;&#xC774; &#xC804;&#xBD80;</li>
</ul>
<h3 id="%EC%9E%AC%EB%B0%A9%EB%AC%B8-%EA%B3%A0%EA%B0%9D">&#xC7AC;&#xBC29;&#xBB38; &#xACE0;&#xAC1D;</h3>
<ul>
<li>&#xC774;&#xBBF8; &#xBCD1;&#xC6D0;&#xC744; &#xACBD;&#xD5D8;&#xD55C; &#xC0AC;&#xB78C;</li>
<li>&#xB0AE;&#xC740; &#xB9C8;&#xCF00;&#xD305; &#xBE44;&#xC6A9;</li>
<li>&#xB192;&#xC740; &#xC804;&#xD658;&#xC728;</li>
<li>&#xB85C;&#xC5F4;&#xD2F0; &#xD504;&#xB85C;&#xADF8;&#xB7A8; &#xB300;&#xC0C1;</li>
</ul>
<p>&#xC7AC;&#xBC29;&#xBB38; &#xACE0;&#xAC1D;&#xC744; &#xC7A1;&#xB294; &#xAC83;&#xC774; &#xD6E8;&#xC52C; &#xD6A8;&#xC728;&#xC801;&#xC774;&#xB2E4;. &#xADF8;&#xB798;&#xC11C; &#xC6B0;&#xB9AC;&#xB294;:</p>
<ul>
<li><strong>&#xC774;&#xBCA4;&#xD2B8;&#xC131; &#xBB38;&#xC790;</strong>: &quot;&#xC9C0;&#xB09C;&#xBC88; &#xC2DC;&#xC220; &#xD6C4; 3&#xAC1C;&#xC6D4;&#xC774; &#xC9C0;&#xB0AC;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC7AC;&#xBC29;&#xBB38; &#xC2DC; 20% &#xD560;&#xC778;&quot;</li>
<li><strong>&#xB9AC;&#xB9C8;&#xC778;&#xB354;</strong>: &quot;&#xC815;&#xAE30; &#xAC80;&#xC9C4; &#xC2DC;&#xAE30;&#xAC00; &#xB2E4;&#xAC00;&#xC654;&#xC2B5;&#xB2C8;&#xB2E4;&quot;</li>
<li><strong>&#xB9DE;&#xCDA4;&#xD615; &#xD504;&#xB85C;&#xBAA8;&#xC158;</strong>: &#xACE0;&#xAC1D;&#xC758; &#xAD00;&#xC2EC;&#xC0AC;&#xC5D0; &#xB9DE;&#xB294; &#xC2DC;&#xC220; &#xC548;&#xB0B4;</li>
</ul>
<p>&#xC774; &#xBAA8;&#xB4E0; &#xAC83;&#xC774; &#xB370;&#xC774;&#xD130; &#xAE30;&#xBC18;&#xC73C;&#xB85C; &#xC6C0;&#xC9C1;&#xC778;&#xB2E4;.</p>
<h2 id="7-%EC%8B%A4%EC%A0%9C-%EA%B2%80%EC%A6%9D-%EC%98%A8%EB%9D%BC%EC%9D%B8%EA%B3%BC-%EC%98%A4%ED%94%84%EB%9D%BC%EC%9D%B8%EC%9D%98-%EA%B0%84%EA%B7%B9">7. &#xC2E4;&#xC81C; &#xAC80;&#xC99D;: &#xC628;&#xB77C;&#xC778;&#xACFC; &#xC624;&#xD504;&#xB77C;&#xC778;&#xC758; &#xAC04;&#xADF9;</h2>
<p>&#xACE0;&#xAC1D;&#xC774; &#xC2E4;&#xC81C;&#xB85C; &#xBCD1;&#xC6D0;&#xC5D0; &#xB0B4;&#xC6D0;&#xD558;&#xBA74;, &#xAC04;&#xD638;&#xC0AC;&#xB098; &#xC0C1;&#xB2F4;&#xC0AC;&#xAC00; &#xBB3C;&#xC5B4;&#xBCF8;&#xB2E4;:<br>
<strong>&quot;&#xC5B4;&#xB5BB;&#xAC8C; &#xC800;&#xD76C; &#xBCD1;&#xC6D0;&#xC744; &#xC54C;&#xAC8C; &#xB418;&#xC168;&#xC5B4;&#xC694;?&quot;</strong></p>
<p>&#xB180;&#xB78D;&#xAC8C;&#xB3C4;, &#xC628;&#xB77C;&#xC778;&#xC5D0;&#xC11C; &#xCD94;&#xC801;&#xD55C; &#xB370;&#xC774;&#xD130;&#xC640; &#xC2E4;&#xC81C; &#xACE0;&#xAC1D;&#xC774; &#xB9D0;&#xD558;&#xB294; &#xC720;&#xC785; &#xACBD;&#xB85C;&#xAC00; &#xB2E4;&#xB97C; &#xB54C;&#xAC00; &#xB9CE;&#xB2E4;.</p>
<ul>
<li>&#xC628;&#xB77C;&#xC778; &#xB370;&#xC774;&#xD130;: &quot;&#xB124;&#xC774;&#xBC84; &#xAC80;&#xC0C9;&#xAD11;&#xACE0;&#xB85C; &#xC720;&#xC785;&quot;</li>
<li>&#xACE0;&#xAC1D;&#xC758; &#xB300;&#xB2F5;: &quot;&#xCE5C;&#xAD6C; &#xCD94;&#xCC9C;&#xC73C;&#xB85C; &#xC654;&#xC5B4;&#xC694;&quot;</li>
</ul>
<p>&#xC65C; &#xC774;&#xB7F0; &#xC77C;&#xC774; &#xBC8C;&#xC5B4;&#xC9C8;&#xAE4C;?</p>
<ul>
<li>&#xACE0;&#xAC1D;&#xC740; &#xC5EC;&#xB7EC; &#xCC44;&#xB110;&#xC744; &#xAC70;&#xCCD0;&#xC11C; &#xC628;&#xB2E4;</li>
<li>&#xAE30;&#xC5B5;&#xC774; &#xC815;&#xD655;&#xD558;&#xC9C0; &#xC54A;&#xB2E4;</li>
<li>&#xCFE0;&#xD0A4; &#xC0AD;&#xC81C;, &#xC5EC;&#xB7EC; &#xAE30;&#xAE30; &#xC0AC;&#xC6A9; &#xB4F1;&#xC73C;&#xB85C; &#xCD94;&#xC801;&#xC774; &#xB04A;&#xAE34;&#xB2E4;</li>
</ul>
<p>&#xADF8;&#xB798;&#xC11C; &#xC628;&#xB77C;&#xC778; &#xB370;&#xC774;&#xD130;&#xC640; &#xC624;&#xD504;&#xB77C;&#xC778; &#xC124;&#xBB38;&#xC744; &#xBE44;&#xAD50;&#xD558;&#xACE0;, &#xC11C;&#xB85C; &#xBCF4;&#xC644;&#xD558;&#xBA70; &#xB354; &#xC815;&#xD655;&#xD55C; &#xADF8;&#xB9BC;&#xC744; &#xADF8;&#xB824;&#xB0B8;&#xB2E4;.</p>
<h2 id="8-%EB%A7%88%EC%B9%98%EB%A9%B0-%EB%A9%80%ED%8B%B0-%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EC%9D%98-%EC%8B%9C%EB%8C%80">8. &#xB9C8;&#xCE58;&#xBA70;: &#xBA40;&#xD2F0; &#xB3C4;&#xBA54;&#xC778; &#xC5D4;&#xC9C0;&#xB2C8;&#xC5B4;&#xC758; &#xC2DC;&#xB300;</h2>
<p>&#xC608;&#xC804;&#xC5D0; &#xB2E4;&#xB154;&#xB358; &#xD68C;&#xC0AC;&#xC758; &#xB300;&#xD45C;&#xB2D8;&#xC774; &#xC774;&#xB7F0; &#xB9D0;&#xC500;&#xC744; &#xD558;&#xC168;&#xB2E4;.</p>
<p>&quot;&#xC6B0;&#xB9AC; &#xAC1C;&#xBC1C;&#xC790; &#xBAA8;&#xB450;&#xB294; PL, PM&#xC774; &#xB418;&#xC5B4;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;. &#xADF8;&#xAC8C; &#xB2F9;&#xC5F0;&#xC2DC;&#xB418;&#xB294; &#xC138;&#xC0C1;&#xC774; &#xC624;&#xACE0;<br>
&#xC788;&#xC5B4;&#xC694;.&quot;</p>
<p>&#xB2F9;&#xC2DC;&#xC5D4; &#xAC1C;&#xBC1C;&#xB9CC; &#xD558;&#xAE30;&#xC5D0;&#xB3C4; &#xC2DC;&#xAC04;&#xC774; &#xBD80;&#xC871;&#xD574; &#xC798; &#xC640;&#xB2FF;&#xC9C0; &#xC54A;&#xC558;&#xC9C0;&#xB9CC; &#xC9C0;&#xAE08;&#xC740; &#xC815;&#xB9D0;<br>
&#xADF8;&#xB807;&#xB2E4;. &#xBD88;&#xACFC; &#xBA87; &#xB144; &#xC804;&#xB9CC; &#xD574;&#xB3C4; React&#xB97C; &#xD560; &#xC904; &#xC548;&#xB2E4;&#xB294; &#xAC83;&#xB9CC;&#xC73C;&#xB85C; &#xCDA9;&#xBD84;&#xD55C;<br>
&#xACBD;&#xC7C1;&#xB825;&#xC774;&#xC5C8;&#xB2E4;. &#xC9C0;&#xAE08;&#xC740; ChatGPT, Copilot, Claude&#xAC00; &#xCF54;&#xB4DC;&#xB97C; &#xB354; &#xC798; &#xC9DC;&#xC900;&#xB2E4;.</p>
<p><strong>&#xAE30;&#xC220;&#xC740; &#xC774;&#xC81C; Default&#xB2E4;.</strong> &#xADF8;&#xB807;&#xB2E4;&#xBA74; &#xC6B0;&#xB9AC;&#xB294; &#xBB34;&#xC5C7;&#xC73C;&#xB85C; &#xCC28;&#xBCC4;&#xD654;&#xD560; &#xC218; &#xC788;&#xC744;&#xAE4C;? &#xBC14;&#xB85C;<br>
<strong>&#xB3C4;&#xBA54;&#xC778; &#xC9C0;&#xC2DD;</strong>&#xC774;&#xB2E4;.</p>
<p>&#xBCD1;&#xC6D0; &#xB9C8;&#xCF00;&#xD305;&#xC744; &#xC774;&#xD574;&#xD558;&#xB294; &#xAC1C;&#xBC1C;&#xC790;&#xB294; &#xB2E8;&#xC21C;&#xD788; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;&#xB97C; &#xB9CC;&#xB4E4;&#xC9C0; &#xC54A;&#xB294;&#xB2E4;. &quot;&#xB9C8;&#xCF00;&#xD130;&#xAC00;<br>
&#xC9C4;&#xC9DC; &#xD544;&#xC694;&#xB85C; &#xD558;&#xB294; &#xC9C0;&#xD45C;&quot;&#xB97C; &#xACE0;&#xBBFC;&#xD55C;&#xB2E4;. &#xD55C; &#xB3C4;&#xBA54;&#xC778;&#xC744; &#xAE4A;&#xC774; &#xC774;&#xD574;&#xD55C; &#xAC1C;&#xBC1C;&#xC790;&#xB3C4;<br>
&#xAC15;&#xB825;&#xD558;&#xC9C0;&#xB9CC;, &#xC5EC;&#xB7EC; &#xB3C4;&#xBA54;&#xC778;&#xC744; &#xB118;&#xB098;&#xB4E0; &#xACBD;&#xD5D8;&#xC774; &#xC788;&#xB294; <strong>&#xBA40;&#xD2F0; &#xB3C4;&#xBA54;&#xC778; &#xC5D4;&#xC9C0;&#xB2C8;&#xC5B4;</strong>&#xB294; &#xD55C;&#xCE35; &#xB354;<br>
&#xAC15;&#xB825;&#xD558;&#xB2E4;.</p>
<p>&#xAC1C;&#xBC1C;&#xC790;&#xB85C;&#xC11C; &#xC131;&#xC7A5;&#xD55C;&#xB2E4;&#xB294; &#xAC83;&#xC740; &#xC774;&#xC81C; &#xB354; &#xBCF5;&#xC7A1;&#xD55C; &#xC54C;&#xACE0;&#xB9AC;&#xC998;&#xC744; &#xD478;&#xB294; &#xAC83;&#xC774; &#xC544;&#xB2C8;&#xB77C;,</p>
<p><strong>&#xB354; &#xB9CE;&#xC740; &#xBE44;&#xC988;&#xB2C8;&#xC2A4; &#xBB38;&#xC81C;&#xB97C; &#xC774;&#xD574;&#xD558;&#xACE0; &#xD574;&#xACB0;&#xD560; &#xC218; &#xC788;&#xB294; &#xC0AC;&#xB78C;</strong>&#xC774; &#xB418;&#xB294; &#xAC83;&#xC774; &#xC544;&#xB2D0;&#xAE4C;?</p>
<p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[기술뉴스, 2026-03-05]]></title><description><![CDATA[<figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://anthropic.skilljar.com/?ref=tech.e3view.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Anthropic Courses</div><div class="kg-bookmark-description">Browse all Anthropic courses</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cc.sj-cdn.net/instructor/4hdejjwplbrm-anthropic/themes/3gufixqhei80k/favicon.1749519148.ico" alt><span class="kg-bookmark-author">Anthropic</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cc.sj-cdn.net/instructor/4hdejjwplbrm-anthropic/catalog_page/33z62i4zzunao/tile-image.1750175621.png" alt></div></a><figcaption><p><span style="white-space: pre-wrap;">&#xC564;&#xD2B8;&#xB85C;&#xD53D; &#xACF5;&#xC2DD; AI &#xC544;&#xCE74;&#xB370;&#xBBF8; &#xBB34;&#xB8CC;. &#xACF5;&#xC2DD; &#xC218;&#xB8CC;&#xC99D; &#xBC1C;&#xAE09;</span></p></figcaption></figure><figure class="kg-card kg-embed-card kg-card-hascaption"><div><blockquote class="twitter-tweet"><p lang="ko" dir="ltr">&#xB124;&#xC774;&#xBC84;&#xC5D0;&#xC11C; &#xD074;&#xB85C;&#xB4DC; &#xCF54;&#xB4DC; &#xB3C4;&#xC785; &#xC774;&#xD6C4;.. (&#xBE14;&#xB77C;&#xC778;&#xB4DC; &#xD38C;)<br>&#xC0AC;&#xB0B4;&#xC5D0;&#xC11C;</p></blockquote></div></figure>]]></description><link>https://tech.e3view.com/gisulnyuseu-2026-03-05/</link><guid isPermaLink="false">69a933b1f4b84ffe438372f5</guid><category><![CDATA[기술뉴스]]></category><category><![CDATA[claude]]></category><category><![CDATA[3view]]></category><category><![CDATA[machine365]]></category><dc:creator><![CDATA[Hyonsok]]></dc:creator><pubDate>Thu, 05 Mar 2026 07:45:52 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2026/03/HBpW-yzW0AAhbcL.jpeg" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://anthropic.skilljar.com/?ref=tech.e3view.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Anthropic Courses</div><div class="kg-bookmark-description">Browse all Anthropic courses</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cc.sj-cdn.net/instructor/4hdejjwplbrm-anthropic/themes/3gufixqhei80k/favicon.1749519148.ico" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"><span class="kg-bookmark-author">Anthropic</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cc.sj-cdn.net/instructor/4hdejjwplbrm-anthropic/catalog_page/33z62i4zzunao/tile-image.1750175621.png" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"></div></a><figcaption><img src="https://tech.e3view.com/content/images/2026/03/HBpW-yzW0AAhbcL.jpeg" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"><p><span style="white-space: pre-wrap;">&#xC564;&#xD2B8;&#xB85C;&#xD53D; &#xACF5;&#xC2DD; AI &#xC544;&#xCE74;&#xB370;&#xBBF8; &#xBB34;&#xB8CC;. &#xACF5;&#xC2DD; &#xC218;&#xB8CC;&#xC99D; &#xBC1C;&#xAE09;</span></p></figcaption></figure><figure class="kg-card kg-embed-card kg-card-hascaption"><div><blockquote class="twitter-tweet"><p lang="ko" dir="ltr">&#xB124;&#xC774;&#xBC84;&#xC5D0;&#xC11C; &#xD074;&#xB85C;&#xB4DC; &#xCF54;&#xB4DC; &#xB3C4;&#xC785; &#xC774;&#xD6C4;.. (&#xBE14;&#xB77C;&#xC778;&#xB4DC; &#xD38C;)<br>&#xC0AC;&#xB0B4;&#xC5D0;&#xC11C; &#xD074;&#xB85C;&#xB4DC; &#xCF54;&#xB4DC; &#xC5D4;&#xD130;&#xD504;&#xB77C;&#xC774;&#xC988; &#xB3C4;&#xC785;&#xD6C4; &#xC11D;&#xB2EC;&#xC9F8;.<br><br>&#xB9CE;&#xC740; &#xBCC0;&#xD654;&#xAC00; &#xBCF4;&#xC784;. &#xC544;&#xB798;&#xB294; &#xC9E7;&#xC740; &#xC18C;&#xD68C;.<br><br>1. &#xC0DD;&#xC0B0;&#xC131; &#xBBF8;&#xCE68;<br>- &#xD558;&#xB8E8;&#xC5D0; 1&#xCC9C;&#xB77C;&#xC778; &#xC721;&#xBC15;&#xD558;&#xB294; &#xD53C;&#xCCD0; 3&#xAC1C;&#xC529; pr &#xC62C;&#xB9AC;&#xAE30; &#xC309;&#xAC00;&#xB2A5;<br>- &#xCF54;&#xB4DC; &#xB9AC;&#xBDF0;&#xAC00; &#xD300;&#xC758; &#xBC14;&#xD2C0;&#xB125;&#xC774; &#xB428;<br>- &#xB8F0;&#xC124;&#xC815; &#xC798;&#xD558;&#xBA74; &#xCF54;&#xB4DC; &#xD004;&#xB9AC;&#xD2F0;&#xB3C4; &#xB354; &#xC88B;&#xC74C;<br>- tc&#x2026; <a href="https://t.co/afvkoheTVP?ref=tech.e3view.com">pic.twitter.com/afvkoheTVP</a></p>&#x2014; &#xD638;&#xB7AD;&#xAD50;&#xAD00; (@block_atom) <a href="https://twitter.com/block_atom/status/2024968812987142469?ref_src=twsrc%5Etfw&amp;ref=tech.e3view.com">February 20, 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div><figcaption><p><span style="white-space: pre-wrap;">&#xB124;&#xC774;&#xBC84;&#xC5D0;&#xC11C; &#xD074;&#xB85C;&#xB4DC; &#xCF54;&#xB4DC; &#xB3C4;&#xC785;&#xC774;&#xD6C4;</span></p></figcaption></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://brunch.co.kr/@wavv/97?ref=tech.e3view.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Claude Code&#xC5D0; PM &#xC2A4;&#xD0AC;&#xC744; &#xBD99;&#xC774;&#xBA74; &#xC0DD;&#xAE30;&#xB294; &#xC77C;</div><div class="kg-bookmark-description">AI&#xAC00; PM&#xCC98;&#xB7FC; &#xC77C;&#xD558;&#xAC8C; &#xB9CC;&#xB4DC;&#xB294; &#xC624;&#xD508;&#xC18C;&#xC2A4;&#xAC00; &#xB098;&#xC654;&#xB2E4;! - &#xBBB9;&#xC791;&#xAC00; | AI&#xB97C; &#xC0AC;&#xC6A9;&#xD560; &#xB54C; &#xB300;&#xBD80;&#xBD84;&#xC740; &#xC544;&#xB798;&#xC640; &#xAC19;&#xC774; &#xC9C8;&#xBB38;&#xC744; &#xC9C1;&#xC811; &#xC501;&#xB2C8;&#xB2E4;. &#x201C;&#xC694;&#xC57D;&#xD574; &#xC918;.&#x201D;&#x201C;&#xBB38;&#xC11C; &#xC880; &#xC815;&#xB9AC;&#xD574; &#xC918;.&#x201D;&#x201C;&#xC544;&#xC774;&#xB514;&#xC5B4; &#xBA87; &#xAC1C;&#xB9CC; &#xC918;.&#x201D; &#xADF8;&#xB7F0;&#xB370; &#xD55C; &#xAC00;&#xC9C0; &#xBB38;&#xC81C;&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.&#xBB34;&#xC5C7;&#xC744; &#xBB3C;&#xC5B4;&#xBD10;&#xC57C; &#xD560;&#xC9C0; &#xBAA8;&#xB974;&#xB294; &#xACBD;&#xC6B0;&#xAC00; &#xB9CE;&#xB2E4;&#xB294; &#xC810;&#xC785;&#xB2C8;&#xB2E4;. &#xCD5C;&#xADFC; GitHub&#xC5D0; &#xC62C;&#xB77C;&#xC628;&#xA0;PM Skills Marketplace&#xB294; &#xC774; &#xBB38;&#xC81C;&#xB97C; &#xC870;&#xAE08; &#xB2E4;&#xB978; &#xBC29;&#xC2DD;&#xC73C;&#xB85C; &#xC811;&#xADFC;&#xD569;&#xB2C8;&#xB2E4;. AI&#xC5D0;&#xAC8C; &#xC9C8;&#xBB38;&#xC744; &#xACC4;&#xC18D; &#xB358;&#xC9C0;&#xB294;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://t1.kakaocdn.net/brunch/static/icon/ios/brunchstory/ico_bi_180.png" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"><span class="kg-bookmark-author">WAVV</span><span class="kg-bookmark-publisher">WAVV</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://img1.daumcdn.net/thumb/R1280x0.fgif/?fname=http://t1.kakaocdn.net/brunch/service/user/1G6j/image/4XRRjJVzjQ7Rj8WGd3MJx2Xjc2Y.gif" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"></div></a></figure><figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://info.cern.ch/?ref=tech.e3view.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">http://info.cern.ch</div><div class="kg-bookmark-description"></div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://info.cern.ch/favicon.ico" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"></div></div></a><figcaption><p><span style="white-space: pre-wrap;">&#xC138;&#xACC4; &#xCD5C;&#xCD08;&#xC758; &#xC6F9;&#xC0AC;&#xC774;&#xD2B8;</span></p></figcaption></figure><figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://saewitz.com/tests-are-the-new-moat?ref=tech.e3view.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Tests Are The New Moat | Daniel Saewitz</div><div class="kg-bookmark-description">As AI becomes better at cloning people&#x2019;s open source work, what ends up becoming most valuable are software contracts, tests, and API surface area. This clashes the incentives of clearly defining your commercialized open source software with protecting it.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://saewitz.com/favicon.ico?favicon.0e4fff2a.ico" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"><span class="kg-bookmark-author">Daniel Saewitz</span><span class="kg-bookmark-publisher">Daniel Saewitz</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://saewitz.com/tests-are-the-new-moat/opengraph-image-mo4bkb?2c3c113f789fd397" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"></div></a><figcaption><p><span style="white-space: pre-wrap;">&#xD14C;&#xC2A4;&#xD2B8; &#xCF54;&#xB4DC;&#xAC00; &#xC0C8;&#xB85C;&#xC6B4; &#xD574;&#xC790;(&#x5793;&#x5B57;,Moat)&#xAC00; &#xB418;&#xB294; &#xC2DC;&#xB300;</span></p></figcaption></figure><figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://simonwillison.net/guides/agentic-engineering-patterns/code-is-cheap/?ref=tech.e3view.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Writing code is cheap now - Agentic Engineering Patterns</div><div class="kg-bookmark-description">Writing code is cheap now - Agentic Engineering Patterns</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://simonwillison.net/favicon.ico" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"><span class="kg-bookmark-author">Simon Willison&#x2019;s Weblog</span><span class="kg-bookmark-publisher">Simon Willison</span></div></div></a><figcaption><p><span style="white-space: pre-wrap;">&#xCF54;&#xB4DC; &#xC791;&#xC131;&#xC740; &#xC774;&#xC81C; &#xC2F8;&#xB2E4;</span></p></figcaption></figure><figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://www.cio.com/article/4135692/%EC%A0%AF%EB%B8%8C%EB%A0%88%EC%9D%B8-vs-%EC%BD%94%EB%93%9C%EC%9A%A9-%EC%9E%90%EB%B0%94%E2%86%92%EC%BD%94%ED%8B%80%EB%A6%B0-%EB%B3%80%ED%99%98%EA%B8%B0-%EA%B3%B5%EA%B0%9C%C2%B7%C2%B7.html?ref=tech.e3view.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">&#xC82F;&#xBE0C;&#xB808;&#xC778;, VS &#xCF54;&#xB4DC;&#xC6A9; &#x2018;&#xC790;&#xBC14;&#x2192;&#xCF54;&#xD2C0;&#xB9B0;&#x2019; &#xBCC0;&#xD658;&#xAE30; &#xACF5;&#xAC1C;&#xB7;&#xB7;&#xB7;&#xCF54;&#xD2C0;&#xB9B0; &#xC804;&#xD658; &#xC9C0;&#xC6D0;</div><div class="kg-bookmark-description">&#xAC1C;&#xBCC4; &#xC790;&#xBC14; &#xD30C;&#xC77C;&#xC744; &#xCF54;&#xD2C0;&#xB9B0; &#xCF54;&#xB4DC;&#xB85C; &#xBCC0;&#xD658;&#xD558;&#xB294; &#xC774; &#xD655;&#xC7A5; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC740; &#xC790;&#xBC14; &#xAC1C;&#xBC1C;&#xC790;&#xAC00; &#xCF54;&#xD2C0;&#xB9B0;&#xC73C;&#xB85C; &#xBCF4;&#xB2E4; &#xC218;&#xC6D4;&#xD558;&#xAC8C; &#xC804;&#xD658;&#xD560; &#xC218; &#xC788;&#xB3C4;&#xB85D; &#xB3D5;&#xB294;&#xB2E4;.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.cio.com/wp-content/uploads/2023/02/cropped-CIO-favicon-2023.png?w=192" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"><span class="kg-bookmark-author">CIO</span><span class="kg-bookmark-publisher">Paul Krill</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.cio.com/wp-content/uploads/2026/02/4135692-0-68463800-1771833192-shutterstock_1449950858.jpg?quality=50&amp;strip=all&amp;w=1024" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"></div></a><figcaption><p><span style="white-space: pre-wrap;">&#xC82F;&#xBE0C;&#xB808;&#xC778;, VS &#xCF54;&#xB4DC;&#xC6A9; &#x2018;&#xC790;&#xBC14;&#x2192;&#xCF54;&#xD2C0;&#xB9B0;&#x2019; &#xBCC0;&#xD658;&#xAE30; &#xACF5;&#xAC1C;&#xB7;&#xB7;&#xB7;&#xCF54;&#xD2C0;&#xB9B0; &#xC804;&#xD658; &#xC9C0;&#xC6D0;</span></p></figcaption></figure><figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://flowkater.io/posts/2026-02-19-code-reading-era/?ref=tech.e3view.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">&#xCF54;&#xB4DC;&#xB97C; &#xC77D;&#xC9C0; &#xC54A;&#xB294; &#xC2DC;&#xB300;, &#xC5D4;&#xC9C0;&#xB2C8;&#xC5B4;&#xB294; &#xBB34;&#xC5C7;&#xC744; &#xC77D;&#xC5B4;&#xC57C; &#xD558;&#xB294;&#xAC00;</div><div class="kg-bookmark-description">AI&#xAC00; &#xCF54;&#xB4DC;&#xB97C; &#xB300;&#xC2E0; &#xC4F0;&#xB294; &#xC2DC;&#xB300;, Anthropic &#xC5F0;&#xAD6C;&#xB294; AI&#xB97C; &#xC4F4; &#xAC1C;&#xBC1C;&#xC790;&#xAC00; 17% &#xB35C; &#xBC30;&#xC6E0;&#xB2E4;&#xACE0; &#xB9D0;&#xD55C;&#xB2E4;. &#xD558;&#xC9C0;&#xB9CC; &#xAC19;&#xC740; &#xB3C4;&#xAD6C;&#xB97C; &#xC4F0;&#xBA74;&#xC11C;&#xB3C4; &#xACB0;&#xACFC;&#xAC00; &#xADF9;&#xBA85;&#xD558;&#xAC8C; &#xAC08;&#xB9AC;&#xB294; &#xC774;&#xC720;&#xB294; &#xBB34;&#xC5C7;&#xC778;&#xAC00;. AI&#xB294; &#xAC70;&#xC6B8;&#xC774;&#xB2E4;.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://flowkater.io/favicon.svg" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"><span class="kg-bookmark-author">Flowkater.io</span><span class="kg-bookmark-publisher">Tony Cho</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://flowkater.io/og/2026-02-19-code-reading-era.png" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"></div></a><figcaption><p><span style="white-space: pre-wrap;">&#xCF54;&#xB4DC;&#xB97C; &#xC77D;&#xC9C0; &#xC54A;&#xB294; &#xC2DC;&#xB300;, &#xC5D4;&#xC9C0;&#xB2C8;&#xC5B4;&#xB294; &#xBB34;&#xC5C7;&#xC744; &#xC77D;&#xC5B4;&#xC57C; &#xD558;&#xB294;&#xAC00;?</span></p></figcaption></figure><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="ko" dir="ltr">&#xC544;&#xB2C8; &#xBB50; &#xC774;&#xB7F0;.. Amazon AWS&#xC5D0;&#xC11C; &#xC790;&#xCCB4; AI &#xCF54;&#xB529; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xC778; Kiro &#xB54C;&#xBB38;&#xC5D0; &#xC2E4;&#xC81C; &#xC11C;&#xBE44;&#xC2A4; &#xC911;&#xB2E8; &#xC0AC;&#xACE0;&#xAC00; &#xD130;&#xC9D0;.<br><br>Financial Times &#xBCF4;&#xB3C4;&#xC5D0; &#xB530;&#xB974;&#xBA74;, &#xC791;&#xB144; 12&#xC6D4; Kiro&#xAC00; AWS Cost Explorer &#xC11C;&#xBE44;&#xC2A4;(&#xC911;&#xAD6D; &#xB9AC;&#xC804;)&#xB97C; &#xBB34;&#xB824; 13&#xC2DC;&#xAC04;&#xC774;&#xB098; &#xC911;&#xB2E8;&#xC2DC;&#xD0B4;.<br><br>&#xAC00;&#xC7A5; &#xB180;&#xB77C;&#xC6B4;&#xAC74; Kiro&#xAC00; &#xB0B4;&#xB9B0; &#xCD5C;&#xC801;&#xC758; &#xD574;&#xACB0;&#xCC45;..<br><br>&quot;&#xD658;&#xACBD;&#xC744; &#xC0AD;&#xC81C;&#xD558;&#xACE0; &#xB2E4;&#xC2DC;&#x2026; <a href="https://t.co/CYvxVhH51l?ref=tech.e3view.com">https://t.co/CYvxVhH51l</a> <a href="https://t.co/wG5D1GGgYi?ref=tech.e3view.com">pic.twitter.com/wG5D1GGgYi</a></p>&#x2014; lucas (@lucas_flatwhite) <a href="https://twitter.com/lucas_flatwhite/status/2025125144478552412?ref_src=twsrc%5Etfw&amp;ref=tech.e3view.com">February 21, 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><figure class="kg-card kg-embed-card kg-card-hascaption"><div><blockquote class="twitter-tweet"><p lang="zxx" dir="ltr"><a href="https://t.co/YMqPBcJDjn?ref=tech.e3view.com">https://t.co/YMqPBcJDjn</a></p>&#x2014; lucas (@lucas_flatwhite) <a href="https://twitter.com/lucas_flatwhite/status/2006192256106258614?ref_src=twsrc%5Etfw&amp;ref=tech.e3view.com">December 31, 2025</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div><figcaption><p><span style="white-space: pre-wrap;">Claude Code &#xC5B4;&#xB5BB;&#xAC8C; &#xB9CC;&#xB4E4;&#xC5B4;&#xC84C;&#xC744;&#xAE4C;</span></p></figcaption></figure><figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://www.dbreunig.com/2026/02/21/why-is-claude-an-electron-app.html?ref=tech.e3view.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Why is Claude an Electron App?</div><div class="kg-bookmark-description">If code is free, why aren&#x2019;t all apps native?</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.dbreunig.com/assets/favicon/apple-touch-icon.png" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"><span class="kg-bookmark-author">Drew Breunig</span><span class="kg-bookmark-publisher">Drew Breunig</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.dbreunig.com/img/sf_beach_og.jpg" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"></div></a><figcaption><p><span style="white-space: pre-wrap;">Claude&#xB294; &#xC65C; Electron &#xC571; &#xC77C;&#xAE4C;?</span></p></figcaption></figure><figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://cheuora.github.io/2026/02/23/%EC%A3%BC%EB%8B%88%EC%96%B4%EC%99%80AI.html?ref=tech.e3view.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">AI&#xC640; &#xC8FC;&#xB2C8;&#xC5B4; &#xAC1C;&#xBC1C;&#xC790;</div><div class="kg-bookmark-description">&#x203B; &#xC774; &#xAE00;&#xC740; wada kentaro(&#x548C;&#x7530;&#x5065;&#x592A;&#x90CE;) &#xAE00; https://qiita.com/WdknWdkn/items/9b7dea889fec59194df5 &#xC744; &#xC758;&#xC5ED;&#xD55C; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://t1.gstatic.com/faviconV2?client=SOCIAL&amp;type=FAVICON&amp;fallback_opts=TYPE,SIZE,URL&amp;url=https://github.io/2026/02/23/%EC%A3%BC%EB%8B%88%EC%96%B4%EC%99%80AI.html&amp;size=128" alt="&#xAE30;&#xC220;&#xB274;&#xC2A4;, 2026-03-05"><span class="kg-bookmark-author">Thinking Storage of CHEUORA</span><span class="kg-bookmark-publisher">cheuora</span></div></div></a><figcaption><p><span style="white-space: pre-wrap;">AI&#xC640; &#xC8FC;&#xB2C8;&#xC5B4; &#xAC1C;&#xBC1C;&#xC790;</span></p></figcaption></figure><p>From &apos;B&#xAE09; &#xD504;&#xB85C;&#xADF8;&#xB798;&#xBA38;&apos; Web Site</p>]]></content:encoded></item><item><title><![CDATA[기술뉴스, 2026-02-24]]></title><description><![CDATA[<hr><h1 id="%EC%A1%B0%EC%BD%94%EB%94%A9-ai-%EB%89%B4%EC%8A%A4-gemini-31-pro-claude-46-grok-42-%EB%B0%8F-%EC%B5%9C%EC%8B%A0-ai-%ED%8A%B8%EB%A0%8C%EB%93%9C-%EC%A0%95%EB%A6%AC">&#xC870;&#xCF54;&#xB529; AI &#xB274;&#xC2A4;: Gemini 3.1 Pro, Claude 4.6, Grok 4.2 &#xBC0F; &#xCD5C;&#xC2E0; AI &#xD2B8;&#xB80C;&#xB4DC; &#xC815;&#xB9AC;</h1><p></p><h2 id="1-%EA%B5%AC%EA%B8%80google%EC%9D%98-%EC%97%AD%EC%8A%B5-gemini-31-pro-%EB%B0%8F-%EC%8B%A0%EA%B7%9C-%EB%8F%84%EA%B5%AC">1. &#xAD6C;&#xAE00;(Google)&#xC758; &#xC5ED;&#xC2B5;: Gemini 3.1 Pro &#xBC0F; &#xC2E0;&#xADDC; &#xB3C4;&#xAD6C;</h2><ul><li><strong>Gemini 3.1 Pro &#xCD9C;&#xC2DC;</strong>:<ul><li><strong>ARC-AGI-2 &#xBCA4;&#xCE58;</strong></li></ul></li></ul>]]></description><link>https://tech.e3view.com/gisulnyuseu-2026-02-25/</link><guid isPermaLink="false">699d1687f4b84ffe438372e7</guid><dc:creator><![CDATA[Taehwan Go]]></dc:creator><pubDate>Tue, 24 Feb 2026 03:13:50 GMT</pubDate><content:encoded><![CDATA[<hr><h1 id="%EC%A1%B0%EC%BD%94%EB%94%A9-ai-%EB%89%B4%EC%8A%A4-gemini-31-pro-claude-46-grok-42-%EB%B0%8F-%EC%B5%9C%EC%8B%A0-ai-%ED%8A%B8%EB%A0%8C%EB%93%9C-%EC%A0%95%EB%A6%AC">&#xC870;&#xCF54;&#xB529; AI &#xB274;&#xC2A4;: Gemini 3.1 Pro, Claude 4.6, Grok 4.2 &#xBC0F; &#xCD5C;&#xC2E0; AI &#xD2B8;&#xB80C;&#xB4DC; &#xC815;&#xB9AC;</h1><p></p><h2 id="1-%EA%B5%AC%EA%B8%80google%EC%9D%98-%EC%97%AD%EC%8A%B5-gemini-31-pro-%EB%B0%8F-%EC%8B%A0%EA%B7%9C-%EB%8F%84%EA%B5%AC">1. &#xAD6C;&#xAE00;(Google)&#xC758; &#xC5ED;&#xC2B5;: Gemini 3.1 Pro &#xBC0F; &#xC2E0;&#xADDC; &#xB3C4;&#xAD6C;</h2><ul><li><strong>Gemini 3.1 Pro &#xCD9C;&#xC2DC;</strong>:<ul><li><strong>ARC-AGI-2 &#xBCA4;&#xCE58;&#xB9C8;&#xD06C;</strong> &#xC810;&#xC218;&#xAC00; &#xAE30;&#xC874; 31.1&#xC810;&#xC5D0;&#xC11C; <strong>77.1&#xC810;</strong>&#xC73C;&#xB85C; &#xC57D; 9&#xBC30; &#xC0C1;&#xC2B9;&#xD558;&#xBA70; &#xC885;&#xD569; 1&#xC704;&#xB97C; &#xCC28;&#xC9C0;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>2016&#xB144; &#xC218;&#xB2A5; &#xD14C;&#xC2A4;&#xD2B8;</strong>&#xC5D0;&#xC11C; &#xCD5C;&#xCD08;&#xB85C; &#xB9CC;&#xC810;&#xC744; &#xAE30;&#xB85D;&#xD558;&#xBA70; &#xC555;&#xB3C4;&#xC801;&#xC778; &#xC131;&#xB2A5;&#xC744; &#xC99D;&#xBA85;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>&#xCD94;&#xB860; &#xB2A5;&#xB825; &#xD5A5;&#xC0C1;</strong>: &quot;50m &#xAC70;&#xB9AC;&#xC758; &#xC138;&#xCC28;&#xC7A5;&#xC5D0; &#xAC08; &#xB54C; &#xAC78;&#xC5B4;&#xAC08;&#xAE4C;, &#xC6B4;&#xC804;&#xD560;&#xAE4C;?&quot;&#xB77C;&#xB294; &#xC9C8;&#xBB38;&#xC5D0; &#xB2E4;&#xB978; &#xBAA8;&#xB378;&#xACFC; &#xB2EC;&#xB9AC; &quot;&#xCC28;&#xB97C; &#xAC00;&#xC838;&#xAC00;&#xC57C; &#xC138;&#xCC28;&#xB97C; &#xD558;&#xB2C8; &#xC6B4;&#xC804;&#xD574;&#xC57C; &#xD55C;&#xB2E4;&quot;&#xACE0; &#xC815;&#xD655;&#xD788; &#xB2F5;&#xBCC0;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>&#xB514;&#xC790;&#xC778; &#xBC0F; &#xC560;&#xB2C8;&#xBA54;&#xC774;&#xC158;</strong>: 100&#xB9CC; &#xD1A0;&#xD070;&#xC758; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xB97C; &#xC9C0;&#xC6D0;&#xD558;&#xBA70;, SVG &#xC560;&#xB2C8;&#xBA54;&#xC774;&#xC158;, CSS &#xC560;&#xB2C8;&#xBA54;&#xC774;&#xC158;, &#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC; &#xB514;&#xC790;&#xC778; &#xBC0F; 3D &#xBCF5;&#xC140; &#xC0DD;&#xC131; &#xB2A5;&#xB825;&#xC774; &#xD0C1;&#xC6D4;&#xD569;&#xB2C8;&#xB2E4;.</li></ul></li><li><strong>Google Labs &apos;&#xD3EC;&#xD1A0;&#xC29B;(Photoshoot)&apos;</strong>: &#xC81C;&#xD488; &#xC774;&#xBBF8;&#xC9C0;&#xB97C; &#xC62C;&#xB9AC;&#xBA74; &#xBE0C;&#xB79C;&#xB4DC; &#xC774;&#xBBF8;&#xC9C0;&#xC5D0; &#xB9DE;&#xB294; &#xCEA0;&#xD398;&#xC778;&#xC6A9; &#xAD11;&#xACE0; &#xC774;&#xBBF8;&#xC9C0;&#xB97C; &#xC989;&#xC2DC; &#xC0DD;&#xC131;&#xD574; &#xC90D;&#xB2C8;&#xB2E4;.</li><li><strong>Lyria 3</strong>: &#xAD6C;&#xAE00; &#xB525;&#xB9C8;&#xC778;&#xB4DC;&#xC758; &#xCD5C;&#xC2E0; &#xC74C;&#xC545; &#xC0DD;&#xC131; &#xBAA8;&#xB378;&#xB85C;, &#xC0AC;&#xC9C4;&#xC744; &#xC778;&#xC2DD;&#xD558;&#xC5EC; &#xC74C;&#xC545;&#xC744; &#xB9CC;&#xB4DC;&#xB294; &#xBA40;&#xD2F0;&#xBAA8;&#xB2EC; &#xAE30;&#xB2A5;&#xC744; &#xC9C0;&#xC6D0;&#xD569;&#xB2C8;&#xB2E4;.</li><li><strong>&#xD504;&#xB85C;&#xBAA8;&#xC158;</strong>: &#xAD6C;&#xAE00; AI &#xC804;&#xBB38;&#xAC00; &#xC790;&#xACA9;&#xC99D; &#xAD50;&#xC721; &#xC2E0;&#xCCAD; &#xC2DC; <strong>&#xAD6C;&#xAE00; AI &#xD504;&#xB85C; 3&#xAC1C;&#xC6D4; &#xBB34;&#xB8CC; &#xC774;&#xC6A9;&#xAD8C;</strong>&#xC744; &#xC99D;&#xC815;&#xD569;&#xB2C8;&#xB2E4;.</li></ul><h2 id="2-%EC%95%A4%ED%8A%B8%EB%A1%9C%ED%94%BDanthropic-claude-46-%EB%B0%8F-%ED%81%B4%EB%A1%9C%EB%93%9C-%EC%BD%94%EB%93%9C">2. &#xC564;&#xD2B8;&#xB85C;&#xD53D;(Anthropic): Claude 4.6 &#xBC0F; &#xD074;&#xB85C;&#xB4DC; &#xCF54;&#xB4DC;</h2><ul><li><strong>Claude 4.6 Sonnet</strong>: &#xC774;&#xC804; &#xC624;&#xD37C;&#xC2A4;(Opus) &#xBAA8;&#xB378;&#xC5D0; &#xADFC;&#xC811;&#xD558;&#xAC70;&#xB098; &#xB2A5;&#xAC00;&#xD558;&#xB294; &#xC131;&#xB2A5;&#xC744; &#xBCF4;&#xC774;&#xBA70;, &#xD2B9;&#xD788; <strong>&#xAE08;&#xC735;(Financial) &#xC5C5;&#xBB34;</strong>&#xC5D0;&#xC11C; &#xD6A8;&#xC728;&#xC801;&#xC785;&#xB2C8;&#xB2E4;.</li><li><strong>&#xD074;&#xB85C;&#xB4DC; &#xCF54;&#xB4DC;(Claude Code)</strong>:<ul><li><strong>&#xD53C;&#xADF8;&#xB9C8;(Figma) &#xC5F0;&#xB3D9;</strong>: &#xCF54;&#xB4DC;&#xB97C; &#xC9DC;&#xC11C; &#xBC14;&#xB85C; &#xD53C;&#xADF8;&#xB9C8; &#xB514;&#xC790;&#xC778;&#xC73C;&#xB85C; &#xC62E;&#xAE30;&#xB294; &#xAE30;&#xB2A5;&#xC774; &#xCD94;&#xAC00;&#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>&#xB370;&#xC2A4;&#xD06C;&#xD0D1; &#xBC84;&#xC804;</strong>: &#xC571; &#xC2E4;&#xD589;, UI &#xD14C;&#xC2A4;&#xD2B8;(&#xB2E4;&#xD06C;&#xBAA8;&#xB4DC; &#xB4F1;), &#xB514;&#xBC84;&#xAE45;&#xC744; &#xBCC4;&#xB3C4; &#xBE0C;&#xB77C;&#xC6B0;&#xC800; &#xC5C6;&#xC774; &#xC790;&#xCCB4;&#xC801;&#xC73C;&#xB85C; &#xC218;&#xD589;&#xD569;&#xB2C8;&#xB2E4;.</li><li><strong>&#xBCF4;&#xC548;(Security) &#xC2A4;&#xCE94;</strong>: &#xCF54;&#xB4DC; &#xCDE8;&#xC57D;&#xC810;&#xC744; &#xCC3E;&#xC544; &#xACE0;&#xCCD0;&#xC8FC;&#xB294; &#xAE30;&#xB2A5;&#xC744; &#xD1B5;&#xD574; &#xC2A4;&#xB9C8;&#xD2B8; &#xACC4;&#xC57D; &#xAC10;&#xC0AC; &#xB4F1;&#xC5D0; &#xD65C;&#xC6A9; &#xAC00;&#xB2A5;&#xD558;&#xBA70;, &#xC774; &#xBC1C;&#xD45C; &#xC9C1;&#xD6C4; &#xC0AC;&#xC774;&#xBC84; &#xBCF4;&#xC548; &#xAD00;&#xB828;&#xC8FC;&#xB4E4;&#xC774; &#xD558;&#xB77D;&#xD558;&#xAE30;&#xB3C4; &#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</li></ul></li><li><strong>&#xB3C4;&#xBA54;&#xC778; &#xC804;&#xBB38;&#xAC00;&#xC758; &#xBD80;&#xC0C1;</strong>: &#xD074;&#xB85C;&#xB4DC; &#xCF54;&#xB4DC; &#xD574;&#xCEE4;&#xD1A4; &#xC6B0;&#xC2B9;&#xC790;&#xB4E4;&#xC774; &#xAC1C;&#xBC1C;&#xC790;&#xAC00; &#xC544;&#xB2CC; <strong>&#xC758;&#xC0AC;, &#xBCC0;&#xD638;&#xC0AC;, &#xC74C;&#xC545;&#xAC00;</strong> &#xB4F1; &#xB3C4;&#xBA54;&#xC778; &#xC804;&#xBB38;&#xAC00;&#xB4E4;&#xC774;&#xC5C8;&#xC73C;&#xBA70;, &#xC774;&#xB294; &apos;&#xBC14;&#xC774;&#xBE0C; &#xCF54;&#xB529;&apos;&#xC758; &#xC2DC;&#xB300;&#xB97C; &#xC2DC;&#xC0AC;&#xD569;&#xB2C8;&#xB2E4;.</li></ul><h2 id="3-%EB%A8%B8%EC%8A%A4%ED%81%AC%EC%9D%98-xai-%EB%B0%8F-%EA%B8%B0%ED%83%80-%EB%AA%A8%EB%8D%B8">3. &#xBA38;&#xC2A4;&#xD06C;&#xC758; XAI &#xBC0F; &#xAE30;&#xD0C0; &#xBAA8;&#xB378;</h2><ul><li><strong>Grok 4.2</strong>: <strong>&#xBA40;&#xD2F0; &#xC5D0;&#xC774;&#xC804;&#xD2B8;(Multi-agent) &#xAD6C;&#xC870;</strong>&#xB97C; &#xB3C4;&#xC785;&#xD558;&#xC5EC; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB4E4;&#xC774; &#xC11C;&#xB85C; &#xD1A0;&#xB860;&#xD558;&#xBA70; &#xCD5C;&#xC801;&#xC758; &#xACB0;&#xB860;&#xC744; &#xB3C4;&#xCD9C;&#xD569;&#xB2C8;&#xB2E4;.<ul><li>&#xC77C;&#xB860; &#xBA38;&#xC2A4;&#xD06C;&#xB294; 6&#xC6D4;&#xAE4C;&#xC9C0; &#xCF54;&#xB529; &#xBD84;&#xC57C;&#xC5D0;&#xC11C; &#xD074;&#xB85C;&#xB4DC;&#xB97C; &#xB2A5;&#xAC00;&#xD558;&#xACA0;&#xB2E4;&#xB294; &#xD3EC;&#xBD80;&#xB97C; &#xBC1D;&#xD614;&#xC2B5;&#xB2C8;&#xB2E4;.</li></ul></li><li><strong>Qwen 3.5</strong>: &#xC624;&#xD508; &#xC18C;&#xC2A4; &#xBAA8;&#xB378;&#xC784;&#xC5D0;&#xB3C4; GPT-4o, &#xC81C;&#xBBF8;&#xB098;&#xC774; 3.1&#xACFC; &#xB300;&#xB4F1;&#xD558;&#xAC70;&#xB098; &#xC77C;&#xBD80; &#xBCA4;&#xCE58;&#xB9C8;&#xD06C;&#xC5D0;&#xC11C; 1&#xC704;&#xB97C; &#xAE30;&#xB85D;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>JUNA</strong>: &#xC0DD;&#xAC01;&#xC744; &#xD14D;&#xC2A4;&#xD2B8;&#xB85C; &#xBCC0;&#xD658;&#xD558;&#xB294; <strong>BCI(&#xB1CC;-&#xCEF4;&#xD4E8;&#xD130; &#xC778;&#xD130;&#xD398;&#xC774;&#xC2A4;)</strong> &#xC624;&#xD508; &#xC18C;&#xC2A4; &#xBAA8;&#xB378;&#xC785;&#xB2C8;&#xB2E4;.</li></ul><h2 id="4-%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4-%EB%B0%8F-%EC%B9%A9chip-%EA%B8%B0%EC%88%A0">4. &#xD558;&#xB4DC;&#xC6E8;&#xC5B4; &#xBC0F; &#xCE69;(Chip) &#xAE30;&#xC220;</h2><ul><li><strong>Talas HC1</strong>: &#xD2B9;&#xC815; &#xBAA8;&#xB378;(&#xB77C;&#xB9C8; 3.1 8B) &#xC804;&#xC6A9;&#xC73C;&#xB85C; &#xC124;&#xACC4;&#xB41C; &#xCD94;&#xB860; &#xCE69;&#xC73C;&#xB85C;, &#xCD08;&#xB2F9; <strong>15,000~17,000 &#xD1A0;&#xD070;</strong>&#xC774;&#xB77C;&#xB294; &#xC555;&#xB3C4;&#xC801;&#xC778; &#xC18D;&#xB3C4;&#xB97C; &#xBCF4;&#xC5EC;&#xC90D;&#xB2C8;&#xB2E4;.</li><li><strong>&#xD14C;&#xC2AC;&#xB77C; &#xCF54;&#xB9AC;&#xC544; &#xCC44;&#xC6A9;</strong>: &#xC77C;&#xB860; &#xBA38;&#xC2A4;&#xD06C;&#xAC00; &#xD55C;&#xAD6D;&#xC758; &#xBC18;&#xB3C4;&#xCCB4; &#xC778;&#xB825;&#xC744; &#xB192;&#xC774; &#xD3C9;&#xAC00;&#xD558;&#xBA70; <strong>AI &#xCE69; &#xB514;&#xC790;&#xC778; &#xC5D4;&#xC9C0;&#xB2C8;&#xC5B4;</strong> &#xAD6C;&#xC778; &#xACF5;&#xACE0;&#xB97C; &#xB0C8;&#xC2B5;&#xB2C8;&#xB2E4;.</li></ul><h2 id="5-%EB%A9%94%ED%83%80meta-%EB%B0%8F-%EC%98%81%EC%83%81%EB%A1%9C%EB%B4%87-%EA%B8%B0%EC%88%A0">5. &#xBA54;&#xD0C0;(Meta) &#xBC0F; &#xC601;&#xC0C1;/&#xB85C;&#xBD07; &#xAE30;&#xC220;</h2><ul><li><strong>&#xBA54;&#xD0C0;&#xC758; &#xD30C;&#xACA9; &#xD589;&#xBCF4;</strong>: &#xC0AC;&#xD6C4; &#xACC4;&#xC815;&#xC744; AI&#xAC00; &#xAD00;&#xB9AC;&#xD558;&#xBA70; &#xAC8C;&#xC2DC;&#xBB3C;&#xC744; &#xC62C;&#xB9AC;&#xACE0; &#xCC44;&#xD305;&#xD558;&#xB294; **&apos;&#xC778;&#xACF5;&#xC9C0;&#xB2A5; &#xD2B9;&#xD5C8;&apos;**&#xB97C; &#xCD9C;&#xC6D0;&#xD588;&#xC73C;&#xBA70;, AI &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xAE30;&#xC5C5; &apos;&#xB9C8;&#xB204;&#xC2A4;(Manus)&apos;&#xB97C; &#xC778;&#xC218;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>&#xC601;&#xC0C1; AI</strong>:<ul><li><strong>Cidance</strong>: 100% AI&#xB85C; &#xB9CC;&#xB4E0; &#xACE0;&#xD004;&#xB9AC;&#xD2F0; &#xC601;&#xD654;&#xAC00; &#xD654;&#xC81C;&#xC774;&#xB098;, &#xC800;&#xC791;&#xAD8C; &#xBB38;&#xC81C;&#xB85C; API &#xCD9C;&#xC2DC;&#xAC00; &#xC9C0;&#xC5F0;&#xB418;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</li><li><strong>Monark RT</strong>: RTX 5090&#xC5D0;&#xC11C; &#xC2E4;&#xC2DC;&#xAC04; &#xBE44;&#xB514;&#xC624; &#xC0DD;&#xC131;&#xC774; &#xAC00;&#xB2A5;&#xD569;&#xB2C8;&#xB2E4;.</li></ul></li><li><strong>&#xB85C;&#xBD07; &#xAE30;&#xC220;</strong>: &#xC911;&#xAD6D; &#xC120;&#xC804;&#xC758; &#xB85C;&#xBD07; &#xC11C;&#xBE59; &#xC2DD;&#xB2F9;, &#xC720;&#xB2C8;&#xD2B8;&#xB9AC;(Unitree) &#xD734;&#xBA38;&#xB178;&#xC774;&#xB4DC;&#xC758; &#xD654;&#xB824;&#xD55C; &#xACF5;&#xC5F0; &#xBC0F; &#xAD70;&#xC0AC;&#xC801; &#xD65C;&#xC6A9; &#xAC00;&#xB2A5;&#xC131;&#xC774; &#xC8FC;&#xBAA9;&#xBC1B;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</li></ul><h2 id="6-%EA%B2%B0%EB%A1%A0-ai-%EC%8B%9C%EB%8C%80%EC%9D%98-%EA%B8%B0%ED%9A%8C%EC%99%80-%EC%96%91%EA%B7%B9%ED%99%94">6. &#xACB0;&#xB860;: AI &#xC2DC;&#xB300;&#xC758; &#xAE30;&#xD68C;&#xC640; &#xC591;&#xADF9;&#xD654;</h2><ul><li><strong>&#xB0AE;&#xC740; AI &#xD65C;&#xC6A9;&#xB960;</strong>: &#xC804; &#xC138;&#xACC4; AI &#xC720;&#xB8CC; &#xC0AC;&#xC6A9;&#xC790;&#xB294; 0.3%, &#xCF54;&#xB529; &#xD65C;&#xC6A9;&#xC790;&#xB294; **0.04%**&#xC5D0; &#xBD88;&#xACFC;&#xD558;&#xC5EC; &#xC5EC;&#xC804;&#xD788; &#xD070; &#xAE30;&#xD68C;&#xC758; &#xB545;(&#xBE14;&#xB8E8;&#xC624;&#xC158;)&#xC785;&#xB2C8;&#xB2E4;.</li><li><strong>K&#xC790;&#xD615; &#xC591;&#xADF9;&#xD654;</strong>: &#xACBD;&#xC81C;&#xD559;&#xC790;&#xB4E4;&#xC740; AI&#xB97C; &#xC9C0;&#xB81B;&#xB300; &#xC0BC;&#xC544; &#xC0DD;&#xC0B0;&#xC131;&#xC744; &#xB192;&#xC774;&#xB294; &#xCE35;&#xACFC; &#xADF8;&#xB807;&#xC9C0; &#xBABB;&#xD55C; &#xCE35; &#xC0AC;&#xC774;&#xC758; &#xACA9;&#xCC28;&#xAC00; &#xADF9;&#xB2E8;&#xC801;&#xC73C;&#xB85C; &#xBC8C;&#xC5B4;&#xC9C8; &#xAC83;&#xC774;&#xB77C; &#xACBD;&#xACE0;&#xD569;&#xB2C8;&#xB2E4;.</li></ul><hr><p><strong>&#xC774;&#xBCA4;&#xD2B8; &#xC548;&#xB0B4;:</strong> NVIDIA GTC 2026 &#xB4F1;&#xB85D; &#xC774;&#xBCA4;&#xD2B8; &#xCC38;&#xC5EC; &#xC2DC; &#xCD94;&#xCCA8;&#xC744; &#xD1B5;&#xD574; <strong>RTX 5090 FE</strong>&#xB97C; &#xC99D;&#xC815;&#xD569;&#xB2C8;&#xB2E4;.</p><p></p><h1 id="%EC%B0%B8%EA%B3%A0">&#xCC38;&#xACE0;</h1><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/p6W4DH3X4nI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="AI&#xB274;&#xC2A4; - 2&#xBC30; &#xB118;&#xAC8C; &#xC88B;&#xC544;&#xC9C4; Gemini 3.1 Pro, Lyria 3, Sonnet 4.6, Claude Code &#xC5C5;&#xB370;&#xC774;&#xD2B8;, &#xBCF4;&#xC548;&#xC8FC; &#xAE09;&#xB77D;, Grok 4.2, Qwen3.5 &#xB4F1;"></iframe></figure>]]></content:encoded></item><item><title><![CDATA[Building AI Sales Pipeline That Actually Researches: Multi-Agent Orchestration with tool-use]]></title><description><![CDATA[<h2 id="%EA%B3%84%EC%86%8D-%EC%9A%B0%EB%A6%AC%EB%A5%BC-%EA%B4%B4%EB%A1%AD%ED%98%94%EB%8D%98-%EB%AC%B8%EC%A0%9C">&#xACC4;&#xC18D; &#xC6B0;&#xB9AC;&#xB97C; &#xAD34;&#xB86D;&#xD614;&#xB358; &#xBB38;&#xC81C;</h2>
<p>&#xC138;&#xC77C;&#xC988; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC774; &#xC791;&#xB3D9;&#xD558;&#xACE0; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC5EC;&#xC12F; &#xAC1C;&#xC758; Claude &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xAC01;&#xC790; &#xC5ED;&#xD560;&#xC744; &#xC218;&#xD589;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;</p>]]></description><link>https://tech.e3view.com/multi-agent-orchestration-with-tool-use/</link><guid isPermaLink="false">6989f9cef4b84ffe438372b3</guid><category><![CDATA[3view]]></category><category><![CDATA[Ai]]></category><category><![CDATA[Ai Agent]]></category><category><![CDATA[b2b]]></category><category><![CDATA[esg]]></category><category><![CDATA[pipeline]]></category><category><![CDATA[Vector DB]]></category><category><![CDATA[RAG]]></category><dc:creator><![CDATA[Sardor Madaminov]]></dc:creator><pubDate>Mon, 09 Feb 2026 15:39:36 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2026/03/Screenshot-2026-03-10-at-2.14.55-PM.png" medium="image"/><content:encoded><![CDATA[<h2 id="%EA%B3%84%EC%86%8D-%EC%9A%B0%EB%A6%AC%EB%A5%BC-%EA%B4%B4%EB%A1%AD%ED%98%94%EB%8D%98-%EB%AC%B8%EC%A0%9C">&#xACC4;&#xC18D; &#xC6B0;&#xB9AC;&#xB97C; &#xAD34;&#xB86D;&#xD614;&#xB358; &#xBB38;&#xC81C;</h2>
<img src="https://tech.e3view.com/content/images/2026/03/Screenshot-2026-03-10-at-2.14.55-PM.png" alt="Building AI Sales Pipeline That Actually Researches: Multi-Agent Orchestration with tool-use"><p>&#xC138;&#xC77C;&#xC988; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC774; &#xC791;&#xB3D9;&#xD558;&#xACE0; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC5EC;&#xC12F; &#xAC1C;&#xC758; Claude &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xAC01;&#xC790; &#xC5ED;&#xD560;&#xC744; &#xC218;&#xD589;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;: &#xD68C;&#xC0AC;&#xB97C; &#xC870;&#xC0AC;&#xD558;&#xACE0;, &#xC194;&#xB8E8;&#xC158;&#xC744; &#xB9E4;&#xD551;&#xD558;&#xACE0;, &#xC81C;&#xC548;&#xC11C;&#xB97C; &#xC791;&#xC131;&#xD558;&#xACE0;, &#xB51C; &#xADDC;&#xBAA8;&#xB97C; &#xCD94;&#xC815;&#xD558;&#xACE0;, &#xC774;&#xBA54;&#xC77C;&#xC744; &#xC791;&#xC131;&#xD569;&#xB2C8;&#xB2E4;. CLI &#xBA85;&#xB839;&#xC5B4; &#xD558;&#xB098;&#xBA74; &#xBA87; &#xBD84; &#xC548;&#xC5D0; &#xAC1C;&#xC778;&#xD654;&#xB41C; &#xC138;&#xC77C;&#xC988; &#xC81C;&#xC548;&#xC11C;&#xAC00; &#xC644;&#xC131;&#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xD558;&#xC9C0;&#xB9CC; &#xAC70;&#xAE30;&#xC5D0;&#xB294; &#xAC70;&#xC9D3;&#xB9D0;&#xC774; &#xB0B4;&#xC7AC;&#xB418;&#xC5B4; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&quot;&#xB9AC;&#xC11C;&#xCC98;&quot; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xC2E4;&#xC81C;&#xB85C; &#xC544;&#xBB34;&#xAC83;&#xB3C4; &#xC870;&#xC0AC;&#xD558;&#xC9C0; &#xC54A;&#xC558;&#xC2B5;&#xB2C8;&#xB2E4;. &quot;Koelle GmbH, Germany&quot;&#xB97C; &#xC785;&#xB825;&#xD558;&#xBA74;, &#xADF8;&#xB4E4;&#xC758; &#xC81C;&#xC870; &#xACF5;&#xC815;, &#xC5D0;&#xB108;&#xC9C0; &#xBB38;&#xC81C;, ESG &#xB9AC;&#xC2A4;&#xD06C;&#xC5D0; &#xB300;&#xD574; &#xC790;&#xC2E0;&#xAC10; &#xB118;&#xCE58;&#xB294; &#xBE0C;&#xB9AC;&#xD504;&#xB97C; &#xC791;&#xC131;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xBAA8;&#xB4E0; &#xB2E8;&#xC5B4;&#xAC00; &#xADF8;&#xB7F4;&#xB4EF;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xD558;&#xC9C0;&#xB9CC; &#xAC80;&#xC99D;&#xB41C; &#xAC83;&#xC740; &#xD558;&#xB098;&#xB3C4; &#xC5C6;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC870;&#xC0AC;&#xAC00; &#xC544;&#xB2C8;&#xB77C; &#xCD94;&#xB860;&#xC774;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB2E8;&#xC21C;&#xD55C; &#xC0AC;&#xB840;&#xC5D0;&#xC11C;&#xB294; &#xCDA9;&#xBD84;&#xD788; &#xC798; &#xC791;&#xB3D9;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4; &#x2014; &#xADF8;&#xB807;&#xC9C0; &#xC54A;&#xC744; &#xB54C;&#xAE4C;&#xC9C0;&#xC694;.</p>
<p>&#xC798; &#xC54C;&#xB824;&#xC9C0;&#xC9C0; &#xC54A;&#xC740; &#xD68C;&#xC0AC;&#xB85C; &#xD14C;&#xC2A4;&#xD2B8;&#xD588;&#xC744; &#xB54C; &#xACA9;&#xCC28;&#xAC00; &#xBD84;&#xBA85;&#xD574;&#xC84C;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xC2E4;&#xC81C;&#xB85C;&#xB294; &#xD50C;&#xB77C;&#xC2A4;&#xD2F1; &#xC0AC;&#xCD9C; &#xC131;&#xD615; &#xBD80;&#xD488;&#xC744; &#xB9CC;&#xB4DC;&#xB294; &#xD68C;&#xC0AC;&#xC5D0; &#xB300;&#xD574; &quot;&#xC608;&#xC0C1;&#xB418;&#xB294; &#xC2A4;&#xD0EC;&#xD551; &#xC791;&#xC5C5;&quot;&#xC774;&#xB77C;&#xACE0; &#xC790;&#xC138;&#xD55C; &#xB2E8;&#xB77D;&#xC744; &#xC791;&#xC131;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB3D9;&#xB0A8;&#xC544;&#xC2DC;&#xC544;&#xC758; &#xD68C;&#xC0AC;&#xC5D0; &#xB300;&#xD574; &#xD574;&#xB2F9; &#xADDC;&#xC815;&#xC774; &#xC801;&#xC6A9;&#xB418;&#xC9C0; &#xC54A;&#xB294;&#xB370;&#xB3C4; &quot;EU &#xD0C4;&#xC18C; &#xBCF4;&#xACE0; &#xC694;&#xAC74;&quot;&#xC744; &#xC5B8;&#xAE09;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xD574;&#xACB0;&#xCC45;&#xC740; &#xB354; &#xB098;&#xC740; &#xD504;&#xB86C;&#xD504;&#xD2B8;&#xB97C; &#xC791;&#xC131;&#xD558;&#xB294; &#xAC83;&#xC774; &#xC544;&#xB2C8;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xD574;&#xACB0;&#xCC45;&#xC740; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xC5D0;&#xAC8C; &#xC2E4;&#xC81C; &#xB3C4;&#xAD6C;&#xB97C; &#xC8FC;&#xACE0;, &#xC2A4;&#xC2A4;&#xB85C; &#xC0AC;&#xC6A9; &#xBC29;&#xBC95;&#xC744; &#xACB0;&#xC815;&#xD558;&#xAC8C; &#xD558;&#xACE0;, &#xBAA8;&#xB4E0; &#xAC83;&#xC744; &#xC870;&#xC728;&#xD558;&#xB294; &#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xD130;&#xB97C; &#xAD6C;&#xCD95;&#xD558;&#xB294; &#xAC83;&#xC774;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h2 id="%EB%AC%B4%EC%97%87%EC%9D%B4-%EB%B0%94%EB%80%8C%EC%97%88%EB%8A%94%EA%B0%80">&#xBB34;&#xC5C7;&#xC774; &#xBC14;&#xB00C;&#xC5C8;&#xB294;&#xAC00;</h2>
<p>&#xB3C4;&#xAD6C;&#xB9CC; &#xCD94;&#xAC00;&#xD55C; &#xAC83;&#xC774; &#xC544;&#xB2D9;&#xB2C8;&#xB2E4; &#x2014; &#xC644;&#xC804;&#xD55C; &#xC544;&#xD0A4;&#xD14D;&#xCC98; &#xC804;&#xD658;&#xC785;&#xB2C8;&#xB2E4;.</p>
<h3 id="%EC%9D%B4%EC%A0%84">&#xC774;&#xC804;</h3>
<pre><code>&#xC0AC;&#xC6A9;&#xC790; &#xC785;&#xB825; &#x2192; [&#xB9AC;&#xC11C;&#xCC98;: &quot;&#xBAA8;&#xB4E0; &#xAC83;&#xC744; &#xCD94;&#xB860;&quot;] &#x2192; &#xB9AC;&#xC11C;&#xCE58; &#xBE0C;&#xB9AC;&#xD504; &#x2192; [&#xB098;&#xBA38;&#xC9C0; 4&#xAC1C; &#xC5D0;&#xC774;&#xC804;&#xD2B8;]
</code></pre>
<p>&#xBAA8;&#xB4E0; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xB2E8;&#xC77C; &#xD134; <code>&#xD504;&#xB86C;&#xD504;&#xD2B8; &#x2192; &#xC751;&#xB2F5;</code> &#xD638;&#xCD9C;&#xC774;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB9AC;&#xC11C;&#xCC98;&#xB294; &#xD68C;&#xC0AC; &#xC774;&#xB984;&#xC744; &#xBC1B;&#xACE0; &#xD559;&#xC2B5; &#xB370;&#xC774;&#xD130;&#xB9CC;&#xC73C;&#xB85C; &#xB9AC;&#xC11C;&#xCE58; &#xBE0C;&#xB9AC;&#xD504;&#xB97C; &#xC791;&#xC131;&#xD574;&#xC57C; &#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC6F9; &#xC811;&#xADFC;&#xB3C4;, &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4;&#xB3C4;, &#xAC80;&#xC99D;&#xD560; &#xBC29;&#xBC95;&#xB3C4; &#xC5C6;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xAC01; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xC774;&#xC804; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xC758; &#xC6D0;&#xC2DC; &#xD14D;&#xC2A4;&#xD2B8;&#xB97C; &#xADF8;&#xB300;&#xB85C; &#xC804;&#xB2EC;&#xBC1B;&#xC558;&#xACE0;, Writer&#xAC00; &#xC2E4;&#xD589;&#xB420; &#xB54C;&#xCBE4;&#xC774;&#xBA74; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xAC00; &#xC624;&#xC5FC;&#xB418;&#xC5B4; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h3 id="%EC%9D%B4%ED%9B%84">&#xC774;&#xD6C4;</h3>
<pre><code>&#xC0AC;&#xC6A9;&#xC790; &#xC785;&#xB825;
    &#x2502;
    &#x25BC;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;              ORCHESTRATOR                     &#x2502;
&#x2502;  plan() &#x2192; execute() &#x2192; aggregate()            &#x2502;
&#x2502;                                               &#x2502;
&#x2502;  Group 0: Researcher (&#xBA40;&#xD2F0;&#xD134;, 3&#xAC1C; &#xB3C4;&#xAD6C;)       &#x2502;
&#x2502;            + &#xB9AC;&#xD50C;&#xB809;&#xC158; + &#xCCB4;&#xD06C;&#xD3EC;&#xC778;&#xD305;             &#x2502;
&#x2502;                      &#x2502;                        &#x2502;
&#x2502;                      &#x25BC; &#xC694;&#xC57D;                   &#x2502;
&#x2502;  Group 1: Analyst + Architect (&#xBCD1;&#xB82C; &#xC2E4;&#xD589;)     &#x2502;
&#x2502;                      &#x2502;                        &#x2502;
&#x2502;                      &#x25BC; &#xC694;&#xC57D;                   &#x2502;
&#x2502;  Group 2: Scorer (&#xAD6C;&#xC870;&#xD654;&#xB41C; &#xCD9C;&#xB825;)              &#x2502;
&#x2502;                      &#x2502;                        &#x2502;
&#x2502;  Group 3: Writer (&#xAD6C;&#xC870;&#xD654;&#xB41C; &#xCD9C;&#xB825;)              &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
    &#x2502;
    &#x25BC;
&#xC81C;&#xC548;&#xC11C; + &#xCF5C;&#xB4DC; &#xC774;&#xBA54;&#xC77C; + &#xD2B8;&#xB808;&#xC774;&#xC2A4; &#xD30C;&#xC77C;
</code></pre>
<p>&#xB9AC;&#xC11C;&#xCC98;&#xB294; &#xC774;&#xC81C; &#xC138; &#xAC00;&#xC9C0; &#xB3C4;&#xAD6C;&#xB97C; &#xAC16;&#xC2B5;&#xB2C8;&#xB2E4;: &#xC6F9; &#xAC80;&#xC0C9;, &#xC9C0;&#xC2DD; &#xBCA0;&#xC774;&#xC2A4; &#xCFFC;&#xB9AC;, &#xC6F9;&#xC0AC;&#xC774;&#xD2B8; &#xC2A4;&#xD06C;&#xB808;&#xC774;&#xD37C;. &#xBB34;&#xC5C7;&#xC744; &#xC5B4;&#xB5A4; &#xC21C;&#xC11C;&#xB85C; &#xC870;&#xC0AC;&#xD560;&#xC9C0; &#xC2A4;&#xC2A4;&#xB85C; &#xACB0;&#xC815;&#xD569;&#xB2C8;&#xB2E4;. &#xD558;&#xC9C0;&#xB9CC; &#xB354; &#xD070; &#xBCC0;&#xD654;&#xB294; <strong>&#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xD130;</strong>&#xC785;&#xB2C8;&#xB2E4; &#x2014; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xC2E4;&#xD589;&#xC744; &#xACC4;&#xD68D;&#xD558;&#xACE0;, &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xB97C; &#xAD00;&#xB9AC;&#xD558;&#xACE0;, &#xBE44;&#xC6A9;&#xC744; &#xCD94;&#xC801;&#xD558;&#xACE0;, &#xAC01; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xC815;&#xD655;&#xD788; &#xD544;&#xC694;&#xD55C; &#xB370;&#xC774;&#xD130;&#xB9CC; &#xBC1B;&#xB3C4;&#xB85D; &#xBCF4;&#xC7A5;&#xD558;&#xB294; &#xC911;&#xC559; &#xB450;&#xB1CC;&#xC785;&#xB2C8;&#xB2E4;.</p>
<h2 id="%EC%98%A4%EC%BC%80%EC%8A%A4%ED%8A%B8%EB%A0%88%EC%9D%B4%ED%84%B0-%ED%8C%A8%ED%84%B4">&#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xD130; &#xD328;&#xD134;</h2>
<p>&#xAC00;&#xC7A5; &#xC911;&#xC694;&#xD55C; &#xC544;&#xD0A4;&#xD14D;&#xCC98; &#xACB0;&#xC815;: <strong>&#xC5B4;&#xB5A4; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB3C4; &#xB2E4;&#xB978; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xC758; &#xC6D0;&#xC2DC; &#xCD9C;&#xB825;&#xC744; &#xBCF4;&#xC9C0; &#xC54A;&#xC2B5;&#xB2C8;&#xB2E4;</strong>.</p>
<p>&#xC774;&#xC804; &#xC2DC;&#xC2A4;&#xD15C;&#xC5D0;&#xC11C;&#xB294; Writer&#xAC00; &#xBAA8;&#xB4E0; &#xAC83;&#xC744; &#xBC1B;&#xC558;&#xC2B5;&#xB2C8;&#xB2E4; &#x2014; &#xC804;&#xCCB4; &#xB9AC;&#xC11C;&#xCE58; &#xBE0C;&#xB9AC;&#xD504;, &#xC194;&#xB8E8;&#xC158; &#xB9E4;&#xD551;, &#xB51C; &#xCD94;&#xC815; &#x2014; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC708;&#xB3C4;&#xC6B0;&#xC5D0; &#xADF8;&#xB300;&#xB85C; &#xB123;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC774;&#xC804; &#xCD9C;&#xB825;&#xC774; 15,000 &#xD1A0;&#xD070;&#xC5D0; &#xB2EC;&#xD558;&#xBA74; Writer&#xB294; &#xB178;&#xC774;&#xC988; &#xC18D;&#xC5D0;&#xC11C; &#xD5C8;&#xC6B0;&#xC801;&#xAC70;&#xB838;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC0C8;&#xB85C;&#xC6B4; &#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xD130;&#xB294; &#xC774;&#xB97C; &#xC138; &#xB2E8;&#xACC4;&#xB85C; &#xD574;&#xACB0;&#xD569;&#xB2C8;&#xB2E4;:</p>
<h3 id="plan">Plan</h3>
<pre><code class="language-python">def plan(self, task: str) -&gt; PipelinePlan:
    return PipelinePlan(
        target_company=company_name,
        steps=[
            PipelineStep(agent=RESEARCHER, parallel_group=0, criticality=&quot;required&quot;),
            PipelineStep(agent=ANALYST, parallel_group=1, criticality=&quot;optional&quot;),
            PipelineStep(agent=ARCHITECT, parallel_group=1, criticality=&quot;required&quot;),
            PipelineStep(agent=SCORER, parallel_group=2, criticality=&quot;optional&quot;),
            PipelineStep(agent=WRITER, parallel_group=3, criticality=&quot;required&quot;),
        ],
    )
</code></pre>
<p>&#xAC01; &#xB2E8;&#xACC4;&#xC5D0;&#xB294; <code>parallel_group</code>(&#xAC19;&#xC740; &#xADF8;&#xB8F9;&#xC758; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xB3D9;&#xC2DC;&#xC5D0; &#xC2E4;&#xD589;)&#xACFC; <code>criticality</code> &#xC218;&#xC900;&#xC774; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. Analyst&#xAC00; &#xC2E4;&#xD328;&#xD558;&#xBA74; &#x2014; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC740; &#xACC4;&#xC18D;&#xB429;&#xB2C8;&#xB2E4;. Researcher&#xAC00; &#xC2E4;&#xD328;&#xD558;&#xBA74; &#x2014; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC774; &#xC911;&#xB2E8;&#xB429;&#xB2C8;&#xB2E4;.</p>
<h3 id="execute">Execute</h3>
<p>&#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xD130;&#xB294; &#xADF8;&#xB8F9;&#xC744; &#xC21C;&#xC11C;&#xB300;&#xB85C; &#xC2E4;&#xD589;&#xD569;&#xB2C8;&#xB2E4;. &#xAC01; &#xADF8;&#xB8F9; &#xC804;&#xC5D0; &#xC608;&#xC0B0;&#xC744; &#xD655;&#xC778;&#xD569;&#xB2C8;&#xB2E4;. &#xAC01; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xC5D0; &#xB300;&#xD574; &#xB9DE;&#xCDA4;&#xD615; <code>ContextPacket</code>&#xC744; &#xAD6C;&#xCD95;&#xD569;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-python"># Architect&#xAC00; &#xBC1B;&#xB294; &#xAC83;: &#xC694;&#xC57D;&#xB41C; &#xB9AC;&#xC11C;&#xCE58; + &#xC804;&#xCCB4; &#xC81C;&#xD488; &#xC9C0;&#xC2DD;
# &#xD1A0;&#xD070; &#xC608;&#xC0B0;: 4,000
context = self.context_manager.build_context_packet(
    task_description=&quot;&#xACE0;&#xCDA9;&#xC810;&#xC744; &#xC81C;&#xD488; &#xAE30;&#xB2A5;&#xC5D0; &#xB9E4;&#xD551;&#xD558;&#xC138;&#xC694;.&quot;,
    prior_summaries=[
        self.context_manager.summarize_for_handoff(research.raw_text, &quot;architect&quot;)
    ],
    company_config=COMPANY_CONFIG,
    token_budget=4000,
)
</code></pre>
<p>&#xD575;&#xC2EC; &#xD1B5;&#xCC30;: <code>summarize_for_handoff()</code>&#xB294; Claude Haiku&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xB2E4;&#xC6B4;&#xC2A4;&#xD2B8;&#xB9BC; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xC5D0; <strong>&#xB9DE;&#xCDA4;&#xD654;&#xB41C; &#xC694;&#xC57D;</strong>&#xC744; &#xC0DD;&#xC131;&#xD569;&#xB2C8;&#xB2E4;. Architect&#xB294; &#xACE0;&#xCDA9;&#xC810;&#xACFC; &#xAE30;&#xC220;&#xC801; &#xC138;&#xBD80;&#xC0AC;&#xD56D;&#xC744; &#xAC15;&#xC870;&#xD55C; &#xC694;&#xC57D;&#xC744; &#xBC1B;&#xC2B5;&#xB2C8;&#xB2E4;. Writer&#xB294; &#xB0B4;&#xB7EC;&#xD2F0;&#xBE0C; &#xD6C5;&#xACFC; &#xD68C;&#xC0AC; &#xD2B9;&#xC131;&#xC744; &#xAC15;&#xC870;&#xD55C; &#xC694;&#xC57D;&#xC744; &#xBC1B;&#xC2B5;&#xB2C8;&#xB2E4;. &#xAC19;&#xC740; &#xC18C;&#xC2A4; &#xB370;&#xC774;&#xD130;, &#xB2E4;&#xB978; &#xAC15;&#xC870;&#xC810;.</p>
<h3 id="aggregate">Aggregate</h3>
<p>&#xBAA8;&#xB4E0; &#xAD6C;&#xC870;&#xD654;&#xB41C; &#xACB0;&#xACFC;&#xB97C; <code>PipelineResult</code>&#xB85C; &#xC218;&#xC9D1;&#xD569;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-python">result.research_brief = ResearchBrief(company=CompanyProfile(name=...), raw_brief=...)
result.deal_estimate = DealEstimate(**scorer.output)      # tool_choice&#xB85C; &#xBCF4;&#xC7A5;&#xB41C; JSON
result.proposal = ProposalOutput(**writer.output)          # tool_choice&#xB85C; &#xBCF4;&#xC7A5;&#xB41C; JSON
</code></pre>
<h2 id="%EB%8B%A4%EC%84%AF-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8">&#xB2E4;&#xC12F; &#xC5D0;&#xC774;&#xC804;&#xD2B8;</h2>
<table>
<thead>
<tr>
<th>#</th>
<th>&#xC5D0;&#xC774;&#xC804;&#xD2B8;</th>
<th>&#xC720;&#xD615;</th>
<th>&#xC628;&#xB3C4;</th>
<th>&#xB3C4;&#xAD6C;</th>
<th>&#xC5ED;&#xD560;</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td><strong>Researcher</strong></td>
<td>&#xBA40;&#xD2F0;&#xD134; &#xC5D0;&#xC774;&#xC804;&#xD2F1;</td>
<td>0.6</td>
<td>search_web, scrape_website, query_kb</td>
<td>&#xC790;&#xC728;&#xC801; &#xD68C;&#xC0AC; &#xC870;&#xC0AC; + &#xB9AC;&#xD50C;&#xB809;&#xC158;</td>
</tr>
<tr>
<td>2</td>
<td><strong>Analyst</strong></td>
<td>&#xB2E8;&#xC77C; &#xD134;</td>
<td>0.5</td>
<td>&#x2014;</td>
<td>&#xACBD;&#xC7C1; &#xD658;&#xACBD; &#xBC0F; &#xC7AC;&#xBB34; &#xBD84;&#xC11D;</td>
</tr>
<tr>
<td>3</td>
<td><strong>Architect</strong></td>
<td>&#xB2E8;&#xC77C; &#xD134;</td>
<td>0.5</td>
<td>&#x2014;</td>
<td>&#xACE0;&#xCDA9;&#xC810; &#x2192; &#xC81C;&#xD488; &#xAE30;&#xB2A5; &#xB9E4;&#xD551; + ROI</td>
</tr>
<tr>
<td>4</td>
<td><strong>Scorer</strong></td>
<td>&#xB2E8;&#xC77C; &#xD134; (tool_choice)</td>
<td>0.3</td>
<td>submit_deal_estimate</td>
<td>&#xAD6C;&#xC870;&#xD654;&#xB41C; &#xB51C; &#xCD94;&#xC815; (&#xBCF4;&#xC7A5;&#xB41C; JSON)</td>
</tr>
<tr>
<td>5</td>
<td><strong>Writer</strong></td>
<td>&#xB2E8;&#xC77C; &#xD134; (tool_choice)</td>
<td>0.7</td>
<td>submit_proposal</td>
<td>&#xC81C;&#xC548;&#xC11C; + &#xCF5C;&#xB4DC; &#xC774;&#xBA54;&#xC77C; &#xC0DD;&#xC131;</td>
</tr>
</tbody>
</table>
<p>Researcher&#xB9CC; &#xC5D0;&#xC774;&#xC804;&#xD2F1;(&#xBA40;&#xD2F0;&#xD134; &#xB3C4;&#xAD6C; &#xC0AC;&#xC6A9;)&#xC785;&#xB2C8;&#xB2E4;. &#xB098;&#xBA38;&#xC9C0; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xB2E8;&#xC77C; &#xD134; &#x2014; &#xC774;&#xC804; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB85C;&#xBD80;&#xD130; &#xD48D;&#xBD80;&#xD55C; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xB97C; &#xBC1B;&#xACE0; &#xB3C4;&#xAD6C; &#xC5C6;&#xC774; &#xC804;&#xBB38;&#xD654;&#xB41C; &#xCD94;&#xB860;&#xC744; &#xC801;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;. Scorer&#xC640; Writer&#xB294; Claude&#xC758; <code>tool_choice</code>&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; <strong>&#xBCF4;&#xC7A5;&#xB41C; &#xAD6C;&#xC870;&#xD654;&#xB41C; &#xCD9C;&#xB825;</strong>(regex &#xD30C;&#xC2F1; &#xBD88;&#xD544;&#xC694;)&#xC744; &#xC0DD;&#xC131;&#xD569;&#xB2C8;&#xB2E4;.</p>
<h2 id="%EC%84%B8-%EA%B0%80%EC%A7%80-%EB%8F%84%EA%B5%AC">&#xC138; &#xAC00;&#xC9C0; &#xB3C4;&#xAD6C;</h2>
<h3 id="%EB%8F%84%EA%B5%AC-1-searchweb">&#xB3C4;&#xAD6C; 1: <code>search_web</code></h3>
<p>DuckDuckGo&#xB97C; &#xD1B5;&#xD574; &#xD68C;&#xC0AC; &#xC815;&#xBCF4;, &#xC0B0;&#xC5C5; &#xB370;&#xC774;&#xD130;, &#xB274;&#xC2A4;&#xB97C; &#xAC80;&#xC0C9;&#xD569;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-python">{
    &quot;name&quot;: &quot;search_web&quot;,
    &quot;description&quot;: &quot;DuckDuckGo&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xC6F9; &#xAC80;&#xC0C9;...&quot;,
    &quot;input_schema&quot;: {
        &quot;type&quot;: &quot;object&quot;,
        &quot;properties&quot;: {
            &quot;query&quot;: {&quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;&#xAC80;&#xC0C9; &#xCFFC;&#xB9AC;.&quot;}
        },
        &quot;required&quot;: [&quot;query&quot;]
    }
}
</code></pre>
<p>&#xB3C4;&#xAD6C;&#xB294; &#xACF5;&#xACA9;&#xC801;&#xC73C;&#xB85C; &#xD544;&#xD130;&#xB9C1;&#xD569;&#xB2C8;&#xB2E4; &#x2014; 92&#xAC1C;&#xC758; &#xCC28;&#xB2E8; &#xB3C4;&#xBA54;&#xC778;(Wikipedia, LinkedIn, Glassdoor, &#xB514;&#xB809;&#xD1A0;&#xB9AC; &#xB4F1;)&#xACFC; &quot;Top 10 companies&quot; &#xB9AC;&#xC2A4;&#xD2F0;&#xD074;&#xC744; &#xC7A1;&#xC544;&#xB0B4;&#xB294; regex &#xD328;&#xD134;. &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xC0C1;&#xC704; 5&#xAC1C; &#xC2E4;&#xC81C; &#xD68C;&#xC0AC; &#xACB0;&#xACFC;&#xC758; &#xC81C;&#xBAA9;, URL, &#xC2A4;&#xB2C8;&#xD3AB;&#xC744; &#xBC1B;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h3 id="%EB%8F%84%EA%B5%AC-2-queryknowledgebase">&#xB3C4;&#xAD6C; 2: <code>query_knowledge_base</code></h3>
<p>&#xC2DC;&#xB9E8;&#xD2F1; &#xC720;&#xC0AC;&#xB3C4;&#xB97C; &#xC0AC;&#xC6A9;&#xD55C; <strong>ChromaDB &#xBCA1;&#xD130; &#xC2A4;&#xD1A0;&#xC5B4;</strong> &#xAC80;&#xC0C9; (all-MiniLM-L6-v2 &#xC784;&#xBCA0;&#xB529;):</p>
<ul>
<li><strong>&#xC81C;&#xD488; &#xC9C0;&#xC2DD;</strong> (~17&#xAC1C; &#xCCAD;&#xD06C;): &#xC81C;&#xD488; &#xAE30;&#xB2A5;, &#xC2A4;&#xD399;, &#xC0AC;&#xB840; &#xC5F0;&#xAD6C;, ROI &#xB370;&#xC774;&#xD130;, &#xC774;&#xC0C1;&#xC801;&#xC778; &#xACE0;&#xAC1D; &#xD504;&#xB85C;&#xD544; &#x2014; YAML &#xC124;&#xC815;&#xC5D0;&#xC11C; &#xC790;&#xB3D9; &#xC2DC;&#xB529;, &#xC124;&#xC815; &#xBCC0;&#xACBD; &#xC2DC; &#xC7AC;&#xC2DC;&#xB529; (MD5 &#xD574;&#xC2DC; &#xCD94;&#xC801;)</li>
<li><strong>&#xACFC;&#xAC70; &#xC544;&#xC6C3;&#xB9AC;&#xCE58; &#xAE30;&#xB85D;</strong> (&#xC2DC;&#xAC04;&#xC774; &#xC9C0;&#xB0A8;&#xC5D0; &#xB530;&#xB77C; &#xC99D;&#xAC00;): &#xC644;&#xB8CC;&#xB41C; &#xBAA8;&#xB4E0; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778; &#xC2E4;&#xD589;&#xC774; ChromaDB&#xC5D0; &#xC790;&#xB3D9; &#xC778;&#xB371;&#xC2F1;</li>
</ul>
<pre><code class="language-python">{
    &quot;name&quot;: &quot;query_knowledge_base&quot;,
    &quot;description&quot;: &quot;&#xB0B4;&#xBD80; &#xC9C0;&#xC2DD; &#xBCA0;&#xC774;&#xC2A4; &#xAC80;&#xC0C9;...&quot;,
    &quot;input_schema&quot;: {
        &quot;type&quot;: &quot;object&quot;,
        &quot;properties&quot;: {
            &quot;query&quot;: {&quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;&#xAC80;&#xC0C9; &#xCFFC;&#xB9AC;.&quot;}
        },
        &quot;required&quot;: [&quot;query&quot;]
    }
}
</code></pre>
<p>&#xC2DC;&#xC2A4;&#xD15C;&#xC758; &#xBA54;&#xBAA8;&#xB9AC;&#xAC00; &#xC0AC;&#xB294; &#xACF3;&#xC785;&#xB2C8;&#xB2E4;. &#xD0A4;&#xC6CC;&#xB4DC; &#xAC80;&#xC0C9;&#xACFC; &#xB2EC;&#xB9AC;, &#xC2DC;&#xB9E8;&#xD2F1; &#xC784;&#xBCA0;&#xB529;&#xC740; &quot;&#xC804;&#xB825; &#xC18C;&#xBE44; &#xBD84;&#xC11D;&quot;&#xC774; &#xACF5;&#xC720; &#xB2E8;&#xC5B4;&#xAC00; &#xC5C6;&#xB354;&#xB77C;&#xB3C4; &quot;&#xC2A4;&#xD0EC;&#xD551; &#xACF5;&#xC7A5;&#xC744; &#xC704;&#xD55C; &#xC5D0;&#xB108;&#xC9C0; &#xBAA8;&#xB2C8;&#xD130;&#xB9C1;&quot;&#xACFC; &#xB9E4;&#xCE6D;&#xB429;&#xB2C8;&#xB2E4;. 6&#xAC1C;&#xC6D4; &#xC804;&#xC5D0; &#xCE98;&#xB9AC;&#xD3EC;&#xB2C8;&#xC544;&#xC758; &#xB3D9; &#xD53C;&#xD305; &#xC81C;&#xC870;&#xC5C5;&#xCCB4;&#xC5D0; &#xC81C;&#xC548;&#xD588;&#xB2E4;&#xBA74;, &#xB9AC;&#xC11C;&#xCC98;&#xB294; &#xC720;&#xC0AC;&#xD55C; &#xD68C;&#xC0AC;&#xB97C; &#xC870;&#xC0AC;&#xD560; &#xB54C; &#xADF8; &#xB9E5;&#xB77D;&#xC744; &#xCC3E;&#xC544; &#xC0AC;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4; &#x2014; &#xAC01; &#xC544;&#xC6C3;&#xB9AC;&#xCE58; &#xC2E4;&#xD589;&#xC774; ChromaDB&#xC758; <code>outreach_history</code> &#xCEEC;&#xB809;&#xC158;&#xC5D0; &#xC778;&#xB371;&#xC2F1;&#xB418;&#xAE30; &#xB54C;&#xBB38;&#xC785;&#xB2C8;&#xB2E4;.</p>
<h3 id="%EB%8F%84%EA%B5%AC-3-scrapecompanywebsite">&#xB3C4;&#xAD6C; 3: <code>scrape_company_website</code></h3>
<p>URL&#xC744; &#xAC00;&#xC838;&#xC640; HTML&#xC744; &#xC81C;&#xAC70;&#xD558;&#xACE0; &#xAE68;&#xB057;&#xD55C; &#xD14D;&#xC2A4;&#xD2B8;(&#xCD5C;&#xB300; 4,000&#xC790;)&#xB97C; &#xBC18;&#xD658;&#xD569;&#xB2C8;&#xB2E4;. <code>requests</code> + <code>BeautifulSoup</code>&#xC73C;&#xB85C; &#xAD6C;&#xCD95;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xD575;&#xC2EC; &#xC124;&#xACC4; &#xACB0;&#xC815;: &#xC5D0;&#xB7EC;&#xB294; &#xC608;&#xC678;&#xAC00; &#xC544;&#xB2CC; &#xBB38;&#xC790;&#xC5F4;&#xC744; &#xBC18;&#xD658;&#xD569;&#xB2C8;&#xB2E4;. &#xC6F9;&#xC0AC;&#xC774;&#xD2B8;&#xAC00; &#xB2E4;&#xC6B4;&#xB418;&#xAC70;&#xB098; &#xC694;&#xCCAD;&#xC744; &#xCC28;&#xB2E8;&#xD558;&#xBA74;, &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; <code>&quot;Error: Could not connect to https://company.com&quot;</code>&#xC744; &#xBCF4;&#xACE0; &#xC801;&#xC751;&#xD569;&#xB2C8;&#xB2E4; &#x2014; &#xB300;&#xC2E0; &#xC6F9; &#xAC80;&#xC0C9;&#xC744; &#xD569;&#xB2C8;&#xB2E4;. &#xC608;&#xC678;&#xB97C; &#xBC1C;&#xC0DD;&#xC2DC;&#xD0A4;&#xBA74; &#xC804;&#xCCB4; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC774; &#xCDA9;&#xB3CC;&#xD560; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;.</p>
<h2 id="%EC%97%90%EC%9D%B4%EC%A0%84%ED%8B%B1-%EB%A3%A8%ED%94%84">&#xC5D0;&#xC774;&#xC804;&#xD2F1; &#xB8E8;&#xD504;</h2>
<p>&#xD558;&#xB098;&#xC758; <code>&#xD504;&#xB86C;&#xD504;&#xD2B8; &#x2192; &#xC751;&#xB2F5;</code> &#xD638;&#xCD9C; &#xB300;&#xC2E0;, &#xB9AC;&#xC11C;&#xCC98;&#xB294; &#xBA40;&#xD2F0;&#xD134; &#xB300;&#xD654;&#xB97C; &#xC218;&#xD589;&#xD569;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-python">def _agentic_loop(self, system_prompt, messages, total_in, total_out, on_event=None):
    for turn in range(self.max_turns):
        # &#xC624;&#xBC84;&#xD50C;&#xB85C;&#xC6B0; &#xBC29;&#xC9C0;&#xB97C; &#xC704;&#xD55C; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xD504;&#xB8E8;&#xB2DD;
        messages = self.context_manager.prune_messages(messages)

        response, t_in, t_out = self._api_call(
            system_prompt, messages, tools=self.tools, on_event=on_event,
        )
        total_in += t_in
        total_out += t_out

        # &#xBCF5;&#xAD6C;&#xB97C; &#xC704;&#xD55C; &#xCCB4;&#xD06C;&#xD3EC;&#xC778;&#xD2B8;
        self._checkpoint = {&quot;turn&quot;: turn, &quot;messages&quot;: messages.copy(), ...}

        if response.stop_reason == &quot;tool_use&quot;:
            for block in response.content:
                if block.type == &quot;tool_use&quot;:
                    result = self._execute_tool(block.name, block.input)
                    # &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xACF5;&#xAC04; &#xC808;&#xC57D;&#xC744; &#xC704;&#xD574; &#xB3C4;&#xAD6C; &#xACB0;&#xACFC; &#xC694;&#xC57D;
                    result = self.context_manager.summarize_tool_result(block.name, result)
                    tool_results.append({
                        &quot;type&quot;: &quot;tool_result&quot;,
                        &quot;tool_use_id&quot;: block.id,
                        &quot;content&quot;: result,
                    })

            messages.append({&quot;role&quot;: &quot;assistant&quot;, &quot;content&quot;: response.content})
            messages.append({&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: tool_results})
        else:
            # &#xCD5C;&#xC885; &#xD14D;&#xC2A4;&#xD2B8; &#xC751;&#xB2F5; &#x2014; &#xB9AC;&#xC11C;&#xCE58; &#xC644;&#xB8CC;
            return AgentResult(success=True, raw_text=final_text, ...)
</code></pre>
<p>&#xC138; &#xAC00;&#xC9C0;&#xAC00; &#xC774;&#xAC83;&#xC744; &#xACAC;&#xACE0;&#xD558;&#xAC8C; &#xB9CC;&#xB4ED;&#xB2C8;&#xB2E4;:</p>
<ol>
<li>
<p><strong>&#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xD504;&#xB8E8;&#xB2DD;</strong>: &#xB9E4; &#xD134;&#xB9C8;&#xB2E4; &#xBA54;&#xC2DC;&#xC9C0;&#xAC00; &#xD504;&#xB8E8;&#xB2DD;&#xB429;&#xB2C8;&#xB2E4;. &#xB3C4;&#xAD6C; &#xACB0;&#xACFC;&#xB294; ~800 &#xD1A0;&#xD070;&#xC73C;&#xB85C; &#xC694;&#xC57D;&#xB429;&#xB2C8;&#xB2E4;. &#xC774;&#xAC83;&#xC774; &#xC5C6;&#xC73C;&#xBA74; &#xD134; 5&#xAE4C;&#xC9C0; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xAC00; 25,000+ &#xD1A0;&#xD070;&#xC73C;&#xB85C; &#xC99D;&#xAC00;&#xD569;&#xB2C8;&#xB2E4;.</p>
</li>
<li>
<p><strong>&#xCCB4;&#xD06C;&#xD3EC;&#xC778;&#xD305;</strong>: &#xAC01; &#xC131;&#xACF5;&#xC801;&#xC778; API &#xD638;&#xCD9C; &#xD6C4; &#xC0C1;&#xD0DC;&#xAC00; &#xC800;&#xC7A5;&#xB429;&#xB2C8;&#xB2E4;. &#xD134; 4&#xC5D0;&#xC11C; API&#xAC00; &#xC2E4;&#xD328;&#xD558;&#xBA74;, &#xD134; 3&#xC758; &#xB9AC;&#xC11C;&#xCE58;&#xB97C; &#xBCF5;&#xAD6C;&#xD569;&#xB2C8;&#xB2E4; &#x2014; &#xCC98;&#xC74C;&#xBD80;&#xD130;&#xAC00; &#xC544;&#xB2D9;&#xB2C8;&#xB2E4;.</p>
</li>
<li>
<p><strong>&#xB9AC;&#xD50C;&#xB809;&#xC158;</strong>: &#xB05D;&#xC5D0;&#xC11C; &#xB450; &#xBC88;&#xC9F8; &#xD134;&#xC5D0;&#xC11C;, &#xB9AC;&#xC11C;&#xCC98;&#xB294; &#xC790;&#xC2E0;&#xC758; &#xC791;&#xC5C5;&#xC744; &#xAC80;&#xD1A0;&#xD558;&#xACE0; &#xC2E0;&#xB8B0;&#xB3C4;&#xB97C; &#xD3C9;&#xAC00;&#xD558;&#xACE0; &#xAC2D;&#xC744; &#xC2DD;&#xBCC4;&#xD558;&#xB3C4;&#xB85D; &#xD504;&#xB86C;&#xD504;&#xD2B8;&#xB429;&#xB2C8;&#xB2E4;. &#xC774;&#xAC83;&#xC774; &#xB208;&#xC5D0; &#xB744;&#xAC8C; &#xB354; &#xB098;&#xC740; &#xCD5C;&#xC885; &#xBE0C;&#xB9AC;&#xD504;&#xB97C; &#xC0DD;&#xC131;&#xD569;&#xB2C8;&#xB2E4;.</p>
</li>
</ol>
<h2 id="%EA%B5%AC%EC%A1%B0%ED%99%94%EB%90%9C-%EC%B6%9C%EB%A0%A5-%E2%80%94-regex-%ED%8C%8C%EC%8B%B1%EC%9D%98-%EC%A2%85%EB%A7%90">&#xAD6C;&#xC870;&#xD654;&#xB41C; &#xCD9C;&#xB825; &#x2014; Regex &#xD30C;&#xC2F1;&#xC758; &#xC885;&#xB9D0;</h2>
<p>&#xC774;&#xC804; &#xB51C; &#xCD94;&#xC815;&#xC790;&#xB294; &#xD504;&#xB86C;&#xD504;&#xD2B8;&#xC5D0; &quot;&#xC720;&#xD6A8;&#xD55C; JSON&#xB9CC; &#xCD9C;&#xB825;&#xD558;&#xC138;&#xC694;&quot;&#xB77C;&#xACE0; &#xC9C0;&#xC2DC;&#xBC1B;&#xC558;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB54C;&#xB54C;&#xB85C; &#xB9C8;&#xD06C;&#xB2E4;&#xC6B4; &#xD39C;&#xC2A4;&#xB97C; &#xCD94;&#xAC00;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB54C;&#xB54C;&#xB85C; JSON &#xC55E;&#xC5D0; &quot;&#xBD84;&#xC11D; &#xACB0;&#xACFC;&#xC785;&#xB2C8;&#xB2E4;:&quot;&#xB97C; &#xCD94;&#xAC00;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. regex&#xB85C; &#xD30C;&#xC2F1;&#xD558;&#xACE0; &#xAE30;&#xB3C4;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC0C8;&#xB85C;&#xC6B4; Scorer&#xB294; Claude&#xC758; <code>tool_choice</code>&#xB97C; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-python">response = client.messages.create(
    tools=[{
        &quot;name&quot;: &quot;submit_deal_estimate&quot;,
        &quot;input_schema&quot;: {
            &quot;properties&quot;: {
                &quot;company_name&quot;: {&quot;type&quot;: &quot;string&quot;},
                &quot;estimated_machines&quot;: {&quot;type&quot;: &quot;integer&quot;},
                &quot;first_year_value&quot;: {&quot;type&quot;: &quot;number&quot;},
                &quot;deal_category&quot;: {&quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;Small&quot;, &quot;Medium&quot;, &quot;Enterprise&quot;]},
                ...
            },
            &quot;required&quot;: [&quot;company_name&quot;, &quot;estimated_machines&quot;, &quot;first_year_value&quot;, ...]
        }
    }],
    tool_choice={&quot;type&quot;: &quot;tool&quot;, &quot;name&quot;: &quot;submit_deal_estimate&quot;},
)

# response.content[0].input&#xC740; &#xC2A4;&#xD0A4;&#xB9C8;&#xC5D0; &#xB9E4;&#xCE6D;&#xB418;&#xB294; &#xC720;&#xD6A8;&#xD55C; JSON&#xC774; &#xBCF4;&#xC7A5;&#xB428;
deal = DealEstimate(**response.content[0].input)
</code></pre>
<p>&#xD30C;&#xC2F1; &#xC5C6;&#xC74C;. Regex &#xC5C6;&#xC74C;. &#xCDA9;&#xB3CC; &#xC5C6;&#xC74C;. &#xC751;&#xB2F5;&#xC740; &#xD56D;&#xC0C1; &#xC720;&#xD6A8;&#xD55C; <code>DealEstimate</code> Pydantic &#xBAA8;&#xB378;&#xC785;&#xB2C8;&#xB2E4;. Writer&#xB3C4; <code>ProposalOutput</code> (proposal_markdown + email_subject + email_body)&#xC5D0; &#xB3D9;&#xC77C;&#xD55C; &#xD328;&#xD134;&#xC744; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;.</p>
<h2 id="%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8-%EA%B4%80%EB%A6%AC-%E2%80%94-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8-%EB%B6%80%ED%8C%A8-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0">&#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xAD00;&#xB9AC; &#x2014; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xBD80;&#xD328; &#xBB38;&#xC81C; &#xD574;&#xACB0;</h2>
<p><code>ContextManager</code>&#xB294; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xAC04; &#xC815;&#xBCF4; &#xC190;&#xC2E4;(&#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xBD80;&#xD328;)&#xC744; 4&#xAC00;&#xC9C0; &#xBA54;&#xCEE4;&#xB2C8;&#xC998;&#xC73C;&#xB85C; &#xD574;&#xACB0;&#xD569;&#xB2C8;&#xB2E4;:</p>
<ol>
<li>
<p><strong>&#xB3C4;&#xAD6C; &#xACB0;&#xACFC; &#xC694;&#xC57D;</strong>: &#xB9F9;&#xBAA9;&#xC801; &#xC798;&#xB77C;&#xB0B4;&#xAE30; &#xB300;&#xC2E0; Claude Haiku&#xB85C; ~800 &#xD1A0;&#xD070;&#xC73C;&#xB85C; &#xC9C0;&#xB2A5;&#xC801; &#xC694;&#xC57D;. &#xD575;&#xC2EC; &#xC0AC;&#xC2E4;, &#xC22B;&#xC790;, &#xD68C;&#xC0AC;&#xBA85;, URL &#xBCF4;&#xC874;.</p>
</li>
<li>
<p><strong>&#xD578;&#xB4DC;&#xC624;&#xD504; &#xC694;&#xC57D;</strong>: &#xB2E4;&#xC6B4;&#xC2A4;&#xD2B8;&#xB9BC; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xBCC4; &#xB9DE;&#xCDA4; &#xC694;&#xC57D; (~1,500 &#xD1A0;&#xD070;). Analyst vs Architect vs Writer &#xAC01;&#xAC01; &#xB9AC;&#xC11C;&#xCC98; &#xCD9C;&#xB825;&#xC758; &#xB2E4;&#xB978; &#xCE21;&#xBA74;&#xC744; &#xAC15;&#xC870;&#xD55C; &#xC694;&#xC57D;&#xC744; &#xBC1B;&#xC74C;.</p>
</li>
<li>
<p><strong>&#xBA54;&#xC2DC;&#xC9C0; &#xD788;&#xC2A4;&#xD1A0;&#xB9AC; &#xD504;&#xB8E8;&#xB2DD;</strong>: &#xCCAB; &#xBA54;&#xC2DC;&#xC9C0;(&#xACFC;&#xC81C;) + &#xB9C8;&#xC9C0;&#xB9C9; 2&#xD134;&#xB9CC; &#xC720;&#xC9C0;. 8,000 &#xD1A0;&#xD070; &#xCD08;&#xACFC; &#xC2DC; &#xC911;&#xAC04; &#xD134;&#xC744; &#xB2E8;&#xC77C; &#xC694;&#xC57D;&#xC73C;&#xB85C; &#xC555;&#xCD95;.</p>
</li>
<li>
<p><strong>&#xB9DE;&#xCDA4;&#xD615; ContextPacket</strong>: &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xBCC4; &#xC9D1;&#xC911;&#xB41C; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#x2014; Architect&#xB294; &#xB9AC;&#xC11C;&#xCE58; &#xC694;&#xC57D; + &#xC804;&#xCCB4; &#xC81C;&#xD488; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xB97C; &#xBC1B;&#xACE0;, Writer&#xB294; &#xB9AC;&#xC11C;&#xCE58; + Architect &#xC694;&#xC57D;&#xC744; &#xBC1B;&#xC9C0;&#xB9CC; &#xC6D0;&#xC2DC; &#xC2A4;&#xD06C;&#xB808;&#xC774;&#xD551; &#xD398;&#xC774;&#xC9C0;&#xB294; &#xBC1B;&#xC9C0; &#xC54A;&#xC74C;.</p>
</li>
</ol>
<h2 id="%EB%B9%84%EC%9A%A9-%EC%B6%94%EC%A0%81-%E2%80%94-%EC%98%88%EC%82%B0-%EA%B0%80%EB%93%9C">&#xBE44;&#xC6A9; &#xCD94;&#xC801; &#x2014; &#xC608;&#xC0B0; &#xAC00;&#xB4DC;</h2>
<p>&#xC2A4;&#xB808;&#xB4DC; &#xC548;&#xC804;&#xD55C; <code>CostTracker</code>&#xAC00; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xB2F9; API &#xC9C0;&#xCD9C;&#xC744; &#xBAA8;&#xB2C8;&#xD130;&#xB9C1;&#xD569;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-python">class CostTracker:
    # &#xBAA8;&#xB378;&#xBCC4; &#xAC00;&#xACA9;
    # claude-sonnet-4-20250514: $3.00/1M &#xC785;&#xB825;, $15.00/1M &#xCD9C;&#xB825;
    # claude-haiku-4-5-20251001: $0.80/1M &#xC785;&#xB825;, $4.00/1M &#xCD9C;&#xB825;

    def record(self, agent, model, tokens_in, tokens_out): ...
    def check_budget(self) -&gt; bool: ...    # &#xCD08;&#xACFC; &#xC2DC; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778; &#xC911;&#xC9C0;
    def get_report(self) -&gt; dict: ...      # &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xBCC4; &#xBD84;&#xC11D;
</code></pre>
<ul>
<li>&#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xBCC4; &#xBE44;&#xC6A9; &#xBD84;&#xC11D; (&#xC785;&#xB825;/&#xCD9C;&#xB825; &#xD1A0;&#xD070;, &#xBAA8;&#xB378;&#xBCC4; &#xC694;&#xAE08;)</li>
<li>&#xC608;&#xC0B0; &#xAC00;&#xB4DC; &#x2014; &#xB2E4;&#xC74C; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xADF8;&#xB8F9; &#xC804;&#xC5D0; &#xC608;&#xC0B0; &#xCD08;&#xACFC; &#xC2DC; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778; &#xC911;&#xC9C0;</li>
<li>&#xBE44;&#xC6A9; &#xBCF4;&#xACE0;&#xC11C;&#xAC00; &#xBAA8;&#xB4E0; <code>PipelineResult</code>&#xC5D0; &#xCCA8;&#xBD80;</li>
</ul>
<h2 id="%EC%97%90%EB%9F%AC-%EB%B3%B5%EA%B5%AC-%E2%80%94-%EB%8B%A4%EC%B8%B5-%ED%8F%B4%EB%B0%B1">&#xC5D0;&#xB7EC; &#xBCF5;&#xAD6C; &#x2014; &#xB2E4;&#xCE35; &#xD3F4;&#xBC31;</h2>
<p>&#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC740; &#xC5EC;&#xB7EC; &#xC218;&#xC900;&#xC5D0;&#xC11C; &#xC2E4;&#xD328;&#xC5D0; &#xB300;&#xBE44;&#xD569;&#xB2C8;&#xB2E4;:</p>
<h3 id="%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8-%EC%88%98%EC%A4%80-%ED%8F%B4%EB%B0%B1">&#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xC218;&#xC900; &#xD3F4;&#xBC31;</h3>
<pre><code>Researcher &#xBA40;&#xD2F0;&#xD134; &#xB8E8;&#xD504; &#xC2E4;&#xD328;
    &#x2192; &#xCCB4;&#xD06C;&#xD3EC;&#xC778;&#xD2B8; &#xBCF5;&#xAD6C; (&#x2265;2&#xD134; &#xC644;&#xB8CC;&#xB41C; &#xACBD;&#xC6B0; &#xBD80;&#xBD84; &#xACB0;&#xACFC; &#xBC18;&#xD658;)
    &#x2192; &#xCCB4;&#xD06C;&#xD3EC;&#xC778;&#xD2B8; &#xBCF5;&#xAD6C; &#xC2E4;&#xD328; &#x2192; &#xB808;&#xAC70;&#xC2DC; &#xB2E8;&#xC77C; &#xD134; &#xBAA8;&#xB4DC; (&#xB3C4;&#xAD6C; &#xC5C6;&#xC74C;, &#xD504;&#xB86C;&#xD504;&#xD2B8; &#xAE30;&#xBC18;)

Sonnet &#xBAA8;&#xB378; &#xC2E4;&#xD328;
    &#x2192; &#xC9C0;&#xC218; &#xBC31;&#xC624;&#xD504;&#xB85C; 3&#xD68C; &#xC7AC;&#xC2DC;&#xB3C4;
    &#x2192; &#xC18D;&#xB3C4; &#xC81C;&#xD55C;&#xC774; &#xC544;&#xB2CC; &#xC5D0;&#xB7EC; &#x2192; Haiku &#xBAA8;&#xB378;&#xB85C; &#xD3F4;&#xBC31;
</code></pre>
<h3 id="%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8-%EC%88%98%EC%A4%80-%ED%8F%B4%EB%B0%B1">&#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778; &#xC218;&#xC900; &#xD3F4;&#xBC31;</h3>
<pre><code>required &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xC2E4;&#xD328; &#x2192; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778; &#xC911;&#xB2E8; (&#xC608;&#xC678; &#xBC1C;&#xC0DD;)
optional &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xC2E4;&#xD328; &#x2192; &#xB85C;&#xADF8; &#xAE30;&#xB85D;, &#xBE48; AgentResult&#xB85C; &#xACC4;&#xC18D; &#xC9C4;&#xD589;
</code></pre>
<h3 id="%EB%8F%84%EA%B5%AC-%EC%88%98%EC%A4%80-%ED%8F%B4%EB%B0%B1">&#xB3C4;&#xAD6C; &#xC218;&#xC900; &#xD3F4;&#xBC31;</h3>
<pre><code>&#xC5F0;&#xC18D; 3&#xD68C; &#xC2E4;&#xD328; &#x2192; &#xC11C;&#xD0B7; &#xBE0C;&#xB808;&#xC774;&#xCEE4;: 60&#xCD08; &#xCFE8;&#xB2E4;&#xC6B4;
&#xC6F9;&#xC0AC;&#xC774;&#xD2B8; &#xC2A4;&#xD06C;&#xB808;&#xC774;&#xD551; &#xC2E4;&#xD328; &#x2192; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xC6F9; &#xAC80;&#xC0C9;&#xC73C;&#xB85C; &#xB300;&#xCCB4;
ChromaDB &#xC0AC;&#xC6A9; &#xBD88;&#xAC00; &#x2192; &#xD0A4;&#xC6CC;&#xB4DC; &#xAC80;&#xC0C9;&#xC73C;&#xB85C; &#xD3F4;&#xBC31;
</code></pre>
<p>&#xC138;&#xC77C;&#xC988; &#xB3C4;&#xAD6C;&#xC5D0;&#xC11C; &#xC774;&#xAC83;&#xC740; &#xC911;&#xC694;&#xD569;&#xB2C8;&#xB2E4; &#x2014; &#xCD5C;&#xC801;&#xC774; &#xC544;&#xB2CC; &#xC81C;&#xC548;&#xC11C;&#xAC00; &#xC81C;&#xC548;&#xC11C;&#xAC00; &#xC5C6;&#xB294; &#xAC83;&#xBCF4;&#xB2E4; &#xB0AB;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h2 id="%EC%8B%A4%EC%8B%9C%EA%B0%84-%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D">&#xC2E4;&#xC2DC;&#xAC04; &#xC2A4;&#xD2B8;&#xB9AC;&#xBC0D;</h2>
<p>CLI&#xC640; Streamlit &#xBAA8;&#xB450; <code>on_event</code> &#xCF5C;&#xBC31;&#xC744; &#xD1B5;&#xD574; &#xC2E4;&#xC2DC;&#xAC04; &#xC9C4;&#xD589; &#xC0C1;&#xD669;&#xC744; &#xD45C;&#xC2DC;&#xD569;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-python"># &#xC774;&#xBCA4;&#xD2B8; &#xC720;&#xD615;
agent_start, agent_end, agent_error     # &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xC218;&#xBA85;&#xC8FC;&#xAE30;
turn                                     # &#xB9AC;&#xC11C;&#xCC98; &#xD134; &#xC9C4;&#xD589;
tool_call, tool_result                   # &#xB3C4;&#xAD6C; &#xC0AC;&#xC6A9; &#xCD94;&#xC801;
text_delta, input_json_delta             # &#xC6D0;&#xC2DC; &#xC2A4;&#xD2B8;&#xB9AC;&#xBC0D;
retry, fallback                          # &#xC5D0;&#xB7EC; &#xBCF5;&#xAD6C; &#xC774;&#xBCA4;&#xD2B8;
budget_exceeded, pipeline_end            # &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778; &#xC218;&#xC900; &#xC774;&#xBCA4;&#xD2B8;
</code></pre>
<p>&#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xCD9C;&#xB825;&#xC740; <code>client.messages.stream()</code>&#xC744; &#xD1B5;&#xD574; &#xC2A4;&#xD2B8;&#xB9AC;&#xBC0D;&#xB429;&#xB2C8;&#xB2E4; &#x2014; &#xC0AC;&#xC6A9;&#xC790;&#xAC00; &#xB9AC;&#xC11C;&#xCC98;&#xC758; &#xB3C4;&#xAD6C; &#xD638;&#xCD9C;, &#xACB0;&#xACFC;, &#xB9AC;&#xD50C;&#xB809;&#xC158;&#xC744; &#xC2E4;&#xC2DC;&#xAC04;&#xC73C;&#xB85C; &#xBCFC; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xBCD1;&#xB82C; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xCD9C;&#xB825;&#xC740; &#xACF5;&#xC720; &#xB77D;&#xC73C;&#xB85C; &#xC9C1;&#xB82C;&#xD654;&#xB429;&#xB2C8;&#xB2E4;.</p>
<h2 id="%EC%8B%A4%EC%A0%9C-%EC%B6%9C%EB%A0%A5-koelle-gmbh">&#xC2E4;&#xC81C; &#xCD9C;&#xB825;: Koelle GmbH</h2>
<pre><code class="language-bash">python src/main.py proposal &quot;Koelle GmbH, Germany&quot;
</code></pre>
<h3 id="%ED%84%B0%EB%AF%B8%EB%84%90-%EC%B6%9C%EB%A0%A5-rich-%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D">&#xD130;&#xBBF8;&#xB110; &#xCD9C;&#xB825; (Rich &#xC2A4;&#xD2B8;&#xB9AC;&#xBC0D;)</h3>
<pre><code>&#x25B8; Researcher &#x2014; &#xC774; &#xBAA9;&#xD45C; &#xAE30;&#xC5C5;&#xC744; &#xC870;&#xC0AC;&#xD558;&#xC138;&#xC694;...
  Turn 1/5
  Tool: search_web({&quot;query&quot;: &quot;Koelle GmbH Germany manufactu...)
  &#x2192; Koelle GmbH EN | For 90 years, Koelle has been a reliabl...
  Turn 2/5
  Tool: scrape_company_website({&quot;url&quot;: &quot;https://www.koelle-g...)
  &#x2192; Koelle GmbH EN | Tel: +49-7042/9448-0 | Werkzeugbau und ...
  Turn 3/5
  Tool: query_knowledge_base({&quot;query&quot;: &quot;metal stamping autom...)
  &#x2192; [Result 1] ProMonitor X1 Key Functions: Catch defective ...
  Turn 4/5
  Tool: search_web({&quot;query&quot;: &quot;K&#xF6;lle GmbH Vaihingen energy m...)
  &#x2192; Koelle GmbH | Werkzeugbau und Stanzerei | ISO 50001 cert...
  &#x2713; Done &#x2014; 15,943+1,367 tokens, 18.4s

&#x25B8; Analyst &#x2014; &#xACBD;&#xC7C1; &#xD658;&#xACBD; &#xBD84;&#xC11D;...
&#x25B8; Architect &#x2014; &#xC194;&#xB8E8;&#xC158; &#xB9E4;&#xD551;...                 &#x25C4;&#x2500;&#x2500; &#xBCD1;&#xB82C; &#xC2E4;&#xD589;
  &#x2713; Done &#x2014; 2,800+1,500 tokens, 6.2s
  &#x2713; Done &#x2014; 2,900+1,800 tokens, 8.1s

&#x25B8; Scorer &#x2014; &#xB51C; &#xADDC;&#xBAA8; &#xCD94;&#xC815;...
  &#x2713; Done &#x2014; 1,200+400 tokens, 3.1s

&#x25B8; Writer &#x2014; &#xC81C;&#xC548;&#xC11C; &#xBC0F; &#xC774;&#xBA54;&#xC77C; &#xC0DD;&#xC131;...
  &#x2713; Done &#x2014; 3,500+2,800 tokens, 9.8s

  Metric      Value
  Tokens In   26,343
  Tokens Out   7,867
  Duration       42.3s
  Cost          $0.07
</code></pre>
<h3 id="%EC%9D%B4%EC%A0%84-%EB%A6%AC%EC%84%9C%EC%B2%98%EA%B0%80-%ED%96%88%EC%9D%84-%EA%B2%83">&#xC774;&#xC804; &#xB9AC;&#xC11C;&#xCC98;&#xAC00; &#xD588;&#xC744; &#xAC83;</h3>
<blockquote>
<p>&quot;&#xB3C5;&#xC77C; &#xC81C;&#xC870;&#xC5C5;&#xCCB4;&#xB85C;&#xC11C; Koelle GmbH&#xB294; &#xC2A4;&#xD0EC;&#xD551; &#xD504;&#xB808;&#xC2A4;&#xB97C; &#xC6B4;&#xC601;&#xD558;&#xACE0; &#xC5D0;&#xB108;&#xC9C0; &#xBE44;&#xC6A9; &#xC0C1;&#xC2B9;&#xC5D0; &#xC9C1;&#xBA74;&#xD558;&#xACE0; &#xC788;&#xC744; &#xAC00;&#xB2A5;&#xC131;&#xC774; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;...&quot;</p>
</blockquote>
<p>&#xC77C;&#xBC18;&#xC801;&#xC785;&#xB2C8;&#xB2E4;. &#xBAA8;&#xD638;&#xD569;&#xB2C8;&#xB2E4;. &#xCD94;&#xB860;&#xC5D0; &#xAE30;&#xBC18;&#xD569;&#xB2C8;&#xB2E4;.</p>
<h3 id="%EC%83%88%EB%A1%9C%EC%9A%B4-%EB%A6%AC%EC%84%9C%EC%B2%98%EA%B0%80-%EC%8B%A4%EC%A0%9C%EB%A1%9C-%EC%B0%BE%EC%9D%80-%EA%B2%83">&#xC0C8;&#xB85C;&#xC6B4; &#xB9AC;&#xC11C;&#xCC98;&#xAC00; &#xC2E4;&#xC81C;&#xB85C; &#xCC3E;&#xC740; &#xAC83;</h3>
<blockquote>
<p>&quot;Koelle GmbH&#xB294; Vaihingen/Enz&#xC5D0; &#xC704;&#xCE58;&#xD55C; 90&#xB144; &#xC5ED;&#xC0AC;&#xC758; &#xAC00;&#xC871; &#xAE30;&#xC5C5;&#xC73C;&#xB85C;, &#xC790;&#xB3D9;&#xCC28; &#xBD80;&#xBB38;&#xC744; &#xC704;&#xD55C; &#xAE08;&#xD615; &#xC81C;&#xC791; &#xBC0F; &#xAE08;&#xC18D; &#xC2A4;&#xD0EC;&#xD551;&#xC744; &#xC804;&#xBB38;&#xC73C;&#xB85C; &#xD569;&#xB2C8;&#xB2E4;. &#xC530; &#xC11C;&#xD3EC;&#xD2B8; &#xD504;&#xB808;&#xC784;&#xACFC; &#xD788;&#xD2B8; &#xC274;&#xB4DC;&#xB97C; &#xC0DD;&#xC0B0;&#xD569;&#xB2C8;&#xB2E4;. &#xC778;&#xC99D;&#xB41C; ISO 50001 &#xC5D0;&#xB108;&#xC9C0; &#xAD00;&#xB9AC; &#xC2DC;&#xC2A4;&#xD15C;&#xC744; &#xBCF4;&#xC720;&#xD558;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;...&quot;</p>
</blockquote>
<p>&#xAD6C;&#xCCB4;&#xC801;&#xC785;&#xB2C8;&#xB2E4;. &#xC0AC;&#xC2E4;&#xC801;&#xC785;&#xB2C8;&#xB2E4;. &#xC2E4;&#xC81C; &#xC6F9;&#xC0AC;&#xC774;&#xD2B8;&#xC5D0;&#xC11C; &#xCD9C;&#xCC98;&#xB97C; &#xD655;&#xC778;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC774; &#xCC28;&#xC774;&#xB294; &#xC804;&#xCCB4; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC5D0; &#xAC78;&#xCCD0; &#xC5F0;&#xC1C4;&#xC801;&#xC73C;&#xB85C; &#xC791;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;. Architect&#xB294; &#xC2E4;&#xC81C; &#xC6B4;&#xC601;&#xC5D0; &#xAE30;&#xB2A5;&#xC744; &#xB9E4;&#xD551;&#xD569;&#xB2C8;&#xB2E4;. Writer&#xB294; Vaihingen/Enz, &#xC790;&#xB3D9;&#xCC28; OEM &#xACE0;&#xAC1D;, &#xAE30;&#xC874; &#xC5D0;&#xB108;&#xC9C0; &#xAD00;&#xB9AC; &#xC2DC;&#xC2A4;&#xD15C;&#xC744; &#xCC38;&#xC870;&#xD569;&#xB2C8;&#xB2E4; &#x2014; &#xC544;&#xBB34;&#xB9AC; &#xB9CE;&#xC740; &#xCD94;&#xB860;&#xB3C4; &#xB9CC;&#xB4E4;&#xC5B4;&#xB0B4;&#xC9C0; &#xBABB;&#xD560; &#xC138;&#xBD80;&#xC0AC;&#xD56D;&#xC785;&#xB2C8;&#xB2E4;.</p>
<h2 id="%EB%B0%B0%EC%9A%B4-%EA%B5%90%ED%9B%88">&#xBC30;&#xC6B4; &#xAD50;&#xD6C8;</h2>
<h3 id="1-%EC%98%A4%EC%BC%80%EC%8A%A4%ED%8A%B8%EB%A0%88%EC%9D%B4%ED%84%B0%EA%B0%80-%EA%B0%80%EC%9E%A5-%EC%A4%91%EC%9A%94%ED%95%9C-%EB%B3%80%ED%99%94%EC%98%80%EB%8B%A4">1. &#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xD130;&#xAC00; &#xAC00;&#xC7A5; &#xC911;&#xC694;&#xD55C; &#xBCC0;&#xD654;&#xC600;&#xB2E4;</h3>
<p>&#xB3C4;&#xAD6C; &#xCD94;&#xAC00;&#xBCF4;&#xB2E4; &#xB354; &#xC911;&#xC694;&#xD569;&#xB2C8;&#xB2E4;. &#xC774;&#xC804; &#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xAC04;&#xC5D0; &#xC6D0;&#xC2DC; &#xD14D;&#xC2A4;&#xD2B8;&#xB97C; &#xC804;&#xB2EC;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. Writer&#xAC00; &#xC2E4;&#xD589;&#xB420; &#xB54C;&#xCBE4;&#xC774;&#xBA74; 15,000 &#xD1A0;&#xD070;&#xC758; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xAC00; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4; &#x2014; &#xB300;&#xBD80;&#xBD84; &#xBB34;&#xAD00;&#xD55C; &#xC2A4;&#xD06C;&#xB808;&#xC774;&#xD551;&#xB41C; &#xC6F9;&#xC0AC;&#xC774;&#xD2B8; &#xD14D;&#xC2A4;&#xD2B8;&#xB098; &#xC7A5;&#xD669;&#xD55C; &#xBD84;&#xC11D;.</p>
<p>&#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xD130;&#xB294; <strong>&#xC694;&#xC57D;&#xB41C; &#xD578;&#xB4DC;&#xC624;&#xD504;</strong>&#xB85C; &#xC774;&#xB97C; &#xD574;&#xACB0;&#xD569;&#xB2C8;&#xB2E4;. &#xAC01; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xD2B9;&#xC815; &#xC5ED;&#xD560;&#xC5D0; &#xB9DE;&#xCDA4;&#xD654;&#xB41C; ~1,500 &#xD1A0;&#xD070; &#xC694;&#xC57D;&#xC744; &#xBC1B;&#xC2B5;&#xB2C8;&#xB2E4;. Writer&#xB294; &#xB0B4;&#xB7EC;&#xD2F0;&#xBE0C; &#xD6C5;&#xC744;, Scorer&#xB294; &#xC22B;&#xC790;&#xB97C; &#xBC1B;&#xC2B5;&#xB2C8;&#xB2E4;. &#xAC19;&#xC740; &#xB370;&#xC774;&#xD130;, &#xC801;&#xC808;&#xD55C; &#xB80C;&#xC988;.</p>
<h3 id="2-%EA%B5%AC%EC%A1%B0%ED%99%94%EB%90%9C-%EC%B6%9C%EB%A0%A5%EC%9D%B4-%EB%B2%84%EA%B7%B8%EC%9D%98-%EC%A0%84%EC%B2%B4-%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%EB%A5%BC-%EC%A0%9C%EA%B1%B0%ED%95%9C%EB%8B%A4">2. &#xAD6C;&#xC870;&#xD654;&#xB41C; &#xCD9C;&#xB825;&#xC774; &#xBC84;&#xADF8;&#xC758; &#xC804;&#xCCB4; &#xCE74;&#xD14C;&#xACE0;&#xB9AC;&#xB97C; &#xC81C;&#xAC70;&#xD55C;&#xB2E4;</h3>
<p><code>tool_choice</code> &#xC774;&#xC804;&#xC5D0;&#xB294; JSON &#xCD94;&#xCD9C;&#xC744; &#xC704;&#xD55C; 40&#xC904; &#xC774;&#xC0C1;&#xC758; regex &#xD30C;&#xC2F1;&#xC774; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB54C;&#xB54C;&#xB85C; &#xBAA8;&#xB378;&#xC774; JSON&#xC744; &#xB9C8;&#xD06C;&#xB2E4;&#xC6B4; &#xD39C;&#xC2A4;&#xB85C; &#xAC10;&#xC30C;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB54C;&#xB54C;&#xB85C; JSON &#xC55E;&#xC5D0; &quot;&#xBD84;&#xC11D; &#xACB0;&#xACFC;&#xC785;&#xB2C8;&#xB2E4;:&quot;&#xB97C; &#xCD94;&#xAC00;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB54C;&#xB54C;&#xB85C; &#xC720;&#xD6A8;&#xD55C; JSON&#xC744; &#xCD9C;&#xB825;&#xD558;&#xC9C0;&#xB9CC; &#xCD94;&#xAC00; &#xD544;&#xB4DC;&#xAC00; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p><code>tool_choice</code>&#xB85C; &#xC774; &#xBAA8;&#xB4E0; &#xAC83;&#xC774; &#xC0AC;&#xB77C;&#xC9D1;&#xB2C8;&#xB2E4;. &#xC751;&#xB2F5;&#xC740; &#xD56D;&#xC0C1; &#xC6B0;&#xB9AC;&#xAC00; &#xC9C0;&#xC815;&#xD55C; &#xD544;&#xB4DC;&#xB97C; &#xC815;&#xD655;&#xD788; &#xAC00;&#xC9C4; &#xC720;&#xD6A8;&#xD55C; &#xB3C4;&#xAD6C; &#xD638;&#xCD9C;&#xC785;&#xB2C8;&#xB2E4;. &#xD504;&#xB85C;&#xB355;&#xC158;&#xC5D0;&#xC11C; &#xD30C;&#xC2F1; &#xC2E4;&#xD328; &#xC81C;&#xB85C;.</p>
<h3 id="3-%EC%9E%84%EA%B3%84%EB%8F%84-%EC%88%98%EC%A4%80%EC%9D%B4-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8%EC%9D%84-%ED%83%84%EB%A0%A5%EC%A0%81%EC%9C%BC%EB%A1%9C-%EB%A7%8C%EB%93%A0%EB%8B%A4">3. &#xC784;&#xACC4;&#xB3C4; &#xC218;&#xC900;&#xC774; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC744; &#xD0C4;&#xB825;&#xC801;&#xC73C;&#xB85C; &#xB9CC;&#xB4E0;&#xB2E4;</h3>
<p>&#xBAA8;&#xB4E0; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xC131;&#xACF5;&#xD560; &#xD544;&#xC694;&#xB294; &#xC5C6;&#xC2B5;&#xB2C8;&#xB2E4;. Analyst&#xB294; &#xACBD;&#xC7C1; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xB97C; &#xC81C;&#xACF5;&#xD569;&#xB2C8;&#xB2E4; &#x2014; &#xC720;&#xC6A9;&#xD558;&#xC9C0;&#xB9CC; &#xD544;&#xC218;&#xC801;&#xC774;&#xC9C0; &#xC54A;&#xC2B5;&#xB2C8;&#xB2E4;. Scorer&#xB294; &#xB51C; &#xCD94;&#xC815;&#xC744; &#xC81C;&#xACF5;&#xD569;&#xB2C8;&#xB2E4; &#x2014; &#xC788;&#xC73C;&#xBA74; &#xC88B;&#xC9C0;&#xB9CC; &#xC81C;&#xC548;&#xC11C;&#xB294; &#xADF8;&#xAC83; &#xC5C6;&#xC774;&#xB3C4; &#xC791;&#xB3D9;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xC774;&#xB7EC;&#xD55C; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB97C; <code>optional</code>&#xB85C; &#xB9CC;&#xB4E4;&#xBA74; &#xAC1C;&#xBCC4; &#xAD6C;&#xC131; &#xC694;&#xC18C;&#xAC00; &#xC2E4;&#xD328;&#xD574;&#xB3C4; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC774; &#xC720;&#xC6A9;&#xD55C; &#xCD9C;&#xB825;&#xC744; &#xC0DD;&#xC131;&#xD569;&#xB2C8;&#xB2E4;. &#xC18D;&#xB3C4; &#xC81C;&#xD55C;&#xACFC; API &#xC5D0;&#xB7EC;&#xAC00; &#xC788;&#xB294; &#xD658;&#xACBD;&#xC5D0;&#xC11C; &#xD2B9;&#xD788; &#xC911;&#xC694;&#xD569;&#xB2C8;&#xB2E4;.</p>
<h3 id="4-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8-%ED%94%84%EB%A3%A8%EB%8B%9D%EC%9D%80-%EB%A9%80%ED%8B%B0%ED%84%B4-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8%EC%97%90-%ED%95%84%EC%88%98%EB%8B%A4">4. &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xD504;&#xB8E8;&#xB2DD;&#xC740; &#xBA40;&#xD2F0;&#xD134; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xC5D0; &#xD544;&#xC218;&#xB2E4;</h3>
<p>&#xD504;&#xB8E8;&#xB2DD; &#xC5C6;&#xC774;&#xB294; &#xB9AC;&#xC11C;&#xCC98;&#xC758; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xAC00; &#xD134; 5&#xAE4C;&#xC9C0; 25,000+ &#xD1A0;&#xD070;&#xC73C;&#xB85C; &#xC99D;&#xAC00;&#xD569;&#xB2C8;&#xB2E4;. &#xBAA8;&#xB378;&#xC774; &#xC9D1;&#xC911;&#xB825;&#xC744; &#xC783;&#xACE0; &#xBC18;&#xBCF5;&#xD558;&#xBA70; &#xB354; &#xB098;&#xC05C; &#xB3C4;&#xAD6C; &#xACB0;&#xC815;&#xC744; &#xB0B4;&#xB9BD;&#xB2C8;&#xB2E4;.</p>
<p>&#xD504;&#xB8E8;&#xB2DD;(&#xB3C4;&#xAD6C; &#xACB0;&#xACFC;&#xB97C; ~800 &#xD1A0;&#xD070;&#xC73C;&#xB85C; &#xC694;&#xC57D;, &#xB9C8;&#xC9C0;&#xB9C9; 2&#xD134;&#xB9CC; &#xC720;&#xC9C0;)&#xC73C;&#xB85C; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xB294; &#xC57D; 8,000 &#xD1A0;&#xD070;&#xC744; &#xC720;&#xC9C0;&#xD569;&#xB2C8;&#xB2E4;. &#xBAA8;&#xB378;&#xC740; &#xC9D1;&#xC911;&#xD558;&#xACE0; &#xD6C4;&#xBC18; &#xD134;&#xC5D0;&#xC11C; &#xB354; &#xB098;&#xC740; &#xACB0;&#xC815;&#xC744; &#xB0B4;&#xB9BD;&#xB2C8;&#xB2E4;.</p>
<h3 id="5-%EB%B9%84%EC%9A%A9-%EC%B6%94%EC%A0%81%EC%9D%B4-%ED%96%89%EB%8F%99%EC%9D%84-%EB%B0%94%EA%BE%BC%EB%8B%A4">5. &#xBE44;&#xC6A9; &#xCD94;&#xC801;&#xC774; &#xD589;&#xB3D9;&#xC744; &#xBC14;&#xAFBC;&#xB2E4;</h3>
<p>Researcher&#xAC00; &#xC2E4;&#xD589;&#xB2F9; $0.06&#xC774;&#xACE0; Writer&#xAC00; $0.05&#xC778; &#xAC83;&#xC744; &#xBCFC; &#xC218; &#xC788;&#xC73C;&#xBA74;, &#xB2E4;&#xB978; &#xC544;&#xD0A4;&#xD14D;&#xCC98; &#xACB0;&#xC815;&#xC744; &#xB0B4;&#xB9BD;&#xB2C8;&#xB2E4;. &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC694;&#xC57D;&#xC744; Sonnet &#xB300;&#xC2E0; Haiku($0.008/&#xC694;&#xC57D;)&#xB85C; &#xC62E;&#xACBC;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC608;&#xC0B0; &#xAC00;&#xB4DC;&#xB97C; &#xC124;&#xC815;&#xD558;&#xC5EC; &#xBE44;&#xC6A9;&#xC774; &#xD55C;&#xB3C4;&#xB97C; &#xCD08;&#xACFC;&#xD558;&#xBA74; &#xB2E4;&#xC74C; &#xADF8;&#xB8F9; &#xC804;&#xC5D0; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC744; &#xC911;&#xC9C0;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xCD1D; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778; &#xBE44;&#xC6A9;: &#xB9AC;&#xC11C;&#xCE58; &#xAE4A;&#xC774;&#xC5D0; &#xB530;&#xB77C; &#xC804;&#xB9DD; &#xACE0;&#xAC1D;&#xB2F9; ~$0.07-0.20.</p>
<h2 id="%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EA%B2%B0%EC%A0%95">&#xC544;&#xD0A4;&#xD14D;&#xCC98; &#xACB0;&#xC815;</h2>
<h3 id="%EC%99%9C-%EB%A6%AC%EC%84%9C%EC%B2%98%EB%A7%8C-%EB%8F%84%EA%B5%AC%EB%A5%BC-%EB%B0%9B%EB%8A%94%EA%B0%80">&#xC65C; &#xB9AC;&#xC11C;&#xCC98;&#xB9CC; &#xB3C4;&#xAD6C;&#xB97C; &#xBC1B;&#xB294;&#xAC00;</h3>
<p>&#xB098;&#xBA38;&#xC9C0; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xB2E8;&#xC77C; &#xD134;&#xC744; &#xC720;&#xC9C0;&#xD569;&#xB2C8;&#xB2E4;. &#xB3C4;&#xAD6C;&#xAC00; &#xD544;&#xC694; &#xC5C6;&#xAE30; &#xB54C;&#xBB38;&#xC785;&#xB2C8;&#xB2E4;:</p>
<ul>
<li><strong>Architect</strong>&#xB294; &#xC2DC;&#xC2A4;&#xD15C; &#xD504;&#xB86C;&#xD504;&#xD2B8;&#xC5D0; &#xC804;&#xCCB4; &#xC81C;&#xD488; &#xC9C0;&#xC2DD;&#xC774; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC870;&#xC0AC;&#xAC00; &#xC544;&#xB2C8;&#xB77C; &#xB9E4;&#xD551; &#xC791;&#xC5C5;&#xC785;&#xB2C8;&#xB2E4;.</li>
<li><strong>Writer</strong>&#xB294; &#xB9AC;&#xC11C;&#xCE58; + &#xC194;&#xB8E8;&#xC158; &#xB9E4;&#xD551;&#xC744; &#xBC1B;&#xC544; &#xC0B0;&#xBB38;&#xC744; &#xC0DD;&#xC131;&#xD569;&#xB2C8;&#xB2E4;. &#xAC80;&#xC0C9;&#xC774; &#xC544;&#xB2CC; &#xC0DD;&#xC131; &#xC791;&#xC5C5;&#xC785;&#xB2C8;&#xB2E4;.</li>
<li><strong>Scorer</strong>&#xB294; &#xBE0C;&#xB9AC;&#xD504;&#xC5D0; &#xAC00;&#xACA9; &#xACF5;&#xC2DD;&#xC744; &#xC801;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;. &#xAD6C;&#xC870;&#xD654;&#xB41C; &#xCD9C;&#xB825;, &#xB0AE;&#xC740; &#xC628;&#xB3C4;(0.3).</li>
</ul>
<p>&#xC774;&#xB7EC;&#xD55C; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xC5D0; &#xB3C4;&#xAD6C;&#xB97C; &#xCD94;&#xAC00;&#xD558;&#xBA74; &#xD488;&#xC9C8; &#xD5A5;&#xC0C1; &#xC5C6;&#xC774; &#xC9C0;&#xC5F0;&#xACFC; &#xBE44;&#xC6A9;&#xB9CC; &#xC99D;&#xAC00;&#xD569;&#xB2C8;&#xB2E4;.</p>
<h3 id="%EC%99%9C-%EC%B5%9C%EB%8C%80-5%ED%84%B4%EC%9D%B8%EA%B0%80">&#xC65C; &#xCD5C;&#xB300; 5&#xD134;&#xC778;&#xAC00;</h3>
<p>&#xAC01; &#xB3C4;&#xAD6C; &#xC0AC;&#xC6A9; &#xD134;&#xC740; API &#xD1A0;&#xD070;&#xC744; &#xC18C;&#xBE44;&#xD569;&#xB2C8;&#xB2E4;. 5&#xD134;&#xC73C;&#xB85C; &#xC81C;&#xD55C;&#xD55C; &#xC774;&#xC720;:</p>
<ul>
<li>&#xB300;&#xBD80;&#xBD84;&#xC758; &#xD68C;&#xC0AC;&#xB294; 3-4&#xD134;&#xC774;&#xBA74; &#xCDA9;&#xBD84;&#xD788; &#xC870;&#xC0AC;&#xB429;&#xB2C8;&#xB2E4;</li>
<li>5&#xD134;&#xC744; &#xB118;&#xC73C;&#xBA74; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xC911;&#xBCF5; &#xAC80;&#xC0C9;&#xC744; &#xC2DC;&#xC791;&#xD569;&#xB2C8;&#xB2E4;</li>
<li>&#xC548;&#xC804; &#xC81C;&#xD55C;&#xC740; &#xBE44;&#xC6A9; &#xD3ED;&#xC8FC;&#xB97C; &#xBC29;&#xC9C0;&#xD569;&#xB2C8;&#xB2E4;</li>
</ul>
<p><code>config/company.yaml</code>&#xC5D0;&#xC11C; &#xC124;&#xC815; &#xAC00;&#xB2A5; &#x2014; <code>quick</code> (2&#xD134;), <code>standard</code> (5&#xD134;), <code>deep</code> (8&#xD134;).</p>
<h3 id="%EC%99%9C-%EC%8A%A4%EB%A0%88%EB%93%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%B3%91%EB%A0%AC-%EC%8B%A4%ED%96%89%EC%9D%B8%EA%B0%80">&#xC65C; &#xC2A4;&#xB808;&#xB4DC;&#xB97C; &#xC774;&#xC6A9;&#xD55C; &#xBCD1;&#xB82C; &#xC2E4;&#xD589;&#xC778;&#xAC00;</h3>
<p>Analyst&#xC640; Architect&#xB294; &#xB3C5;&#xB9BD;&#xC801;&#xC785;&#xB2C8;&#xB2E4; &#x2014; &#xB458; &#xB2E4; &#xB9AC;&#xC11C;&#xCE58; &#xBE0C;&#xB9AC;&#xD504;&#xB9CC; &#xD544;&#xC694;&#xD569;&#xB2C8;&#xB2E4;. &#xBCD1;&#xB82C; &#xC2E4;&#xD589;&#xC73C;&#xB85C; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xB2F9; ~6&#xCD08; &#xC808;&#xC57D;.</p>
<p>Anthropic Python SDK&#xAC00; &#xB3D9;&#xAE30;&#xC2DD;&#xC774;&#xBBC0;&#xB85C; <code>asyncio</code> &#xB300;&#xC2E0; <code>ThreadPoolExecutor</code>&#xB97C; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;. &#xC2A4;&#xB808;&#xB4DC; &#xC548;&#xC804;&#xC131;&#xC740; <code>CostTracker</code>&#xC758; &#xB77D;&#xACFC; <code>on_event</code> &#xCF5C;&#xBC31;&#xC758; &#xACF5;&#xC720; &#xB77D;&#xC73C;&#xB85C; &#xCC98;&#xB9AC;&#xD569;&#xB2C8;&#xB2E4;.</p>
<h2 id="%EC%88%AB%EC%9E%90%EB%A1%9C-%EB%B3%B4%EA%B8%B0">&#xC22B;&#xC790;&#xB85C; &#xBCF4;&#xAE30;</h2>
<h3 id="%EC%A0%9C%EC%95%88%EC%84%9C-%EC%8B%A4%ED%96%89%EB%8B%B9-%ED%86%A0%ED%81%B0-%EC%82%AC%EC%9A%A9%EB%9F%89">&#xC81C;&#xC548;&#xC11C; &#xC2E4;&#xD589;&#xB2F9; &#xD1A0;&#xD070; &#xC0AC;&#xC6A9;&#xB7C9;</h3>
<table>
<thead>
<tr>
<th>&#xC5D0;&#xC774;&#xC804;&#xD2B8;</th>
<th>&#xC785;&#xB825; &#xD1A0;&#xD070;</th>
<th>&#xCD9C;&#xB825; &#xD1A0;&#xD070;</th>
<th>&#xBE44;&#xC6A9; (~)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Researcher (5&#xD134;)</td>
<td>~16,000</td>
<td>~1,400</td>
<td>$0.06</td>
</tr>
<tr>
<td>&#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC694;&#xC57D; (Haiku)</td>
<td>~3,000</td>
<td>~1,500</td>
<td>$0.01</td>
</tr>
<tr>
<td>Analyst</td>
<td>~2,800</td>
<td>~1,500</td>
<td>$0.03</td>
</tr>
<tr>
<td>Architect</td>
<td>~2,900</td>
<td>~1,800</td>
<td>$0.04</td>
</tr>
<tr>
<td>Scorer</td>
<td>~1,200</td>
<td>~400</td>
<td>$0.01</td>
</tr>
<tr>
<td>Writer</td>
<td>~3,500</td>
<td>~2,800</td>
<td>$0.05</td>
</tr>
<tr>
<td><strong>&#xD569;&#xACC4;</strong></td>
<td><strong>~29,400</strong></td>
<td><strong>~9,400</strong></td>
<td><strong>~$0.20</strong></td>
</tr>
</tbody>
</table>
<h3 id="%EA%B2%80%EC%83%89-%EC%8B%A4%ED%96%89%EB%8B%B9-%ED%86%A0%ED%81%B0-%EC%82%AC%EC%9A%A9%EB%9F%89-5%EA%B0%9C-%ED%9A%8C%EC%82%AC-%EC%84%A0%ED%83%9D">&#xAC80;&#xC0C9; &#xC2E4;&#xD589;&#xB2F9; &#xD1A0;&#xD070; &#xC0AC;&#xC6A9;&#xB7C9; (5&#xAC1C; &#xD68C;&#xC0AC; &#xC120;&#xD0DD;)</h3>
<table>
<thead>
<tr>
<th>&#xB2E8;&#xACC4;</th>
<th>&#xD1A0;&#xD070;</th>
<th>&#xBE44;&#xC6A9; (~)</th>
</tr>
</thead>
<tbody>
<tr>
<td>&#xB51C; &#xCD94;&#xC815; (10&#xAC1C; &#xD68C;&#xC0AC;)</td>
<td>~30,000</td>
<td>$0.10</td>
</tr>
<tr>
<td>&#xD480; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778; (5&#xAC1C; &#xD68C;&#xC0AC;)</td>
<td>~145,000</td>
<td>$0.99</td>
</tr>
<tr>
<td><strong>&#xD569;&#xACC4;</strong></td>
<td><strong>~175,000</strong></td>
<td><strong>~$1.09</strong></td>
</tr>
</tbody>
</table>
<p>&#xC774; &#xACB0;&#xACFC;&#xAC00; &#xB300;&#xCCB4;&#xD558;&#xB294; &#xC218; &#xC2DC;&#xAC04;&#xC758; &#xC218;&#xB3D9; &#xC870;&#xC0AC; &#xBC0F; &#xC791;&#xC131; &#xC791;&#xC5C5;&#xACFC; &#xBE44;&#xAD50;&#xD574; &#xBCF4;&#xC138;&#xC694;.</p>
<h2 id="rag-%EC%A7%80%EC%8B%9D-%EB%B2%A0%EC%9D%B4%EC%8A%A4">RAG &#xC9C0;&#xC2DD; &#xBCA0;&#xC774;&#xC2A4;</h2>
<h3 id="%EC%99%9C-chromadb%EC%9D%B8%EA%B0%80">&#xC65C; ChromaDB&#xC778;&#xAC00;?</h3>
<p>&#xD544;&#xC694;&#xD55C; &#xAC83;&#xC740;:</p>
<ul>
<li>&#xB85C;&#xCEEC; &#xC2E4;&#xD589; (&#xBC30;&#xD3EC;&#xD560; &#xC678;&#xBD80; &#xC11C;&#xBC84; &#xC5C6;&#xC74C;)</li>
<li>&#xB514;&#xC2A4;&#xD06C;&#xC5D0; &#xB370;&#xC774;&#xD130; &#xC601;&#xC18D;&#xD654; (&#xC7AC;&#xC2DC;&#xC791;&#xD574;&#xB3C4; &#xC720;&#xC9C0;)</li>
<li>&#xC2DC;&#xB9E8;&#xD2F1; &#xAC80;&#xC0C9; &#xCC98;&#xB9AC; (&#xD0A4;&#xC6CC;&#xB4DC; &#xB9E4;&#xCE6D;&#xB9CC;&#xC774; &#xC544;&#xB2CC;)</li>
<li>Python 3.13&#xACFC; &#xD638;&#xD658;</li>
</ul>
<p>ChromaDB &#xC784;&#xBCA0;&#xB514;&#xB4DC; &#xBAA8;&#xB4DC;&#xB294; &#xB124; &#xAC00;&#xC9C0; &#xC694;&#xAC74;&#xC744; &#xBAA8;&#xB450; &#xCDA9;&#xC871;&#xD569;&#xB2C8;&#xB2E4;. &#xC784;&#xBCA0;&#xB529;&#xC5D0; all-MiniLM-L6-v2&#xB97C; ONNX&#xB97C; &#xD1B5;&#xD574; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4; &#x2014; &#xD55C; &#xBC88; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;(~80MB), &#xB85C;&#xCEEC;&#xC5D0; &#xCE90;&#xC2DC;, API &#xD0A4; &#xBD88;&#xD544;&#xC694;.</p>
<h3 id="3%EA%B0%9C-%EC%BB%AC%EB%A0%89%EC%85%98">3&#xAC1C; &#xCEEC;&#xB809;&#xC158;</h3>
<ul>
<li><strong>product_knowledge</strong>: ~17&#xAC1C; &#xC2DC;&#xB9E8;&#xD2F1; &#xCCAD;&#xD06C; &#x2014; &#xC81C;&#xD488; &#xAE30;&#xB2A5;, &#xC2A4;&#xD399;, &#xC0AC;&#xB840; &#xC5F0;&#xAD6C;, ROI &#xB370;&#xC774;&#xD130;. YAML &#xC124;&#xC815;(<code>config/products.yaml</code>)&#xC5D0;&#xC11C; &#xC790;&#xB3D9; &#xC2DC;&#xB529;, &#xC124;&#xC815; &#xBCC0;&#xACBD; &#xC2DC; MD5 &#xD574;&#xC2DC;&#xB85C; &#xCD94;&#xC801;&#xD558;&#xC5EC; &#xC7AC;&#xC2DC;&#xB529;</li>
<li><strong>company_facts</strong>: &#xB9AC;&#xC11C;&#xCE58; &#xC911; &#xC6F9; &#xD398;&#xC774;&#xC9C0;&#xC5D0;&#xC11C; &#xCD94;&#xCD9C;&#xB41C; &#xAD6C;&#xC870;&#xD654;&#xB41C; &#xC0AC;&#xC2E4;</li>
<li><strong>outreach_history</strong>: &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778; &#xC2E4;&#xD589; &#xD6C4; &#xC790;&#xB3D9; &#xC778;&#xB371;&#xC2F1; &#x2014; &#xD50C;&#xB77C;&#xC774;&#xD720; &#xD6A8;&#xACFC;</li>
</ul>
<h3 id="%ED%94%8C%EB%9D%BC%EC%9D%B4%ED%9C%A0-%ED%9A%A8%EA%B3%BC">&#xD50C;&#xB77C;&#xC774;&#xD720; &#xD6A8;&#xACFC;</h3>
<p>&#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC744; &#xCC98;&#xC74C; &#xC2E4;&#xD589;&#xD558;&#xBA74; &#xC9C0;&#xC2DD; &#xBCA0;&#xC774;&#xC2A4;&#xC5D0;&#xB294; &#xC81C;&#xD488; &#xC9C0;&#xC2DD;&#xB9CC; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xD558;&#xC9C0;&#xB9CC; &#xBA87; &#xBC88;&#xC758; &#xC2E4;&#xD589; &#xD6C4; &#xACFC;&#xAC70; &#xC544;&#xC6C3;&#xB9AC;&#xCE58; &#xB370;&#xC774;&#xD130;&#xAC00; &#xCD95;&#xC801;&#xB429;&#xB2C8;&#xB2E4;. &#xB9AC;&#xC11C;&#xCC98;&#xAC00; &#xC774;&#xB97C; &#xCC38;&#xC870;&#xD558;&#xAE30; &#xC2DC;&#xC791;&#xD569;&#xB2C8;&#xB2E4;:</p>
<blockquote>
<p>&quot;&#xCE98;&#xB9AC;&#xD3EC;&#xB2C8;&#xC544;&#xC758; &#xB3D9; &#xD53C;&#xD305; &#xC81C;&#xC870;&#xC5C5;&#xCCB4;&#xC5D0; &#xB300;&#xD55C; &#xACFC;&#xAC70; &#xC544;&#xC6C3;&#xB9AC;&#xCE58;&#xB97C; &#xAE30;&#xBC18;&#xC73C;&#xB85C;, &#xC8FC;&#xC694; &#xACE0;&#xCDA9;&#xC740; &#xC5D0;&#xB108;&#xC9C0; &#xBE44;&#xC6A9;&#xACFC; &#xD488;&#xC9C8; &#xAD00;&#xB9AC;&#xC600;&#xC2B5;&#xB2C8;&#xB2E4;...&quot;</p>
</blockquote>
<p>&#xB354; &#xB9CE;&#xC740; &#xC0AC;&#xC6A9; &#x2192; &#xB354; &#xB9CE;&#xC740; &#xC778;&#xB371;&#xC2F1;&#xB41C; &#xB370;&#xC774;&#xD130; &#x2192; &#xB354; &#xB098;&#xC740; &#xB9AC;&#xC11C;&#xCE58; &#x2192; &#xB354; &#xB098;&#xC740; &#xC81C;&#xC548;&#xC11C;. &#xC0AC;&#xC6A9;&#xD560;&#xC218;&#xB85D; &#xC2DC;&#xC2A4;&#xD15C;&#xC774; &#xB354; &#xB611;&#xB611;&#xD574;&#xC9D1;&#xB2C8;&#xB2E4;.</p>
<h2 id="%EC%84%A4%EC%A0%95-%EA%B8%B0%EB%B0%98-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98">&#xC124;&#xC815; &#xAE30;&#xBC18; &#xC544;&#xD0A4;&#xD14D;&#xCC98;</h2>
<p>&#xBAA8;&#xB4E0; &#xAC83;&#xC774; YAML &#xC124;&#xC815;&#xC73C;&#xB85C; &#xAD6C;&#xB3D9;&#xB429;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-yaml"># config/company.yaml
research:
  depth: &quot;standard&quot;    # quick (2&#xD134;), standard (5&#xD134;), deep (8&#xD134;)

# config/products.yaml
products:
  - name: &quot;ProMonitor X1&quot;
    category: &quot;hardware&quot;
    key_features: [...]
    case_studies: [...]
</code></pre>
<p>&#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xD504;&#xB86C;&#xD504;&#xD2B8;&#xB294; <code>config/agent_prompts/*.md</code>&#xC5D0; <code>{{placeholder}}</code> &#xCE58;&#xD658;&#xC73C;&#xB85C; &#xC815;&#xC758;&#xB429;&#xB2C8;&#xB2E4;. &#xCF54;&#xB4DC;&#xB97C; &#xBCC0;&#xACBD;&#xD558;&#xC9C0; &#xC54A;&#xACE0; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xB3D9;&#xC791;&#xC744; &#xCEE4;&#xC2A4;&#xD130;&#xB9C8;&#xC774;&#xC988;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h2 id="%EB%8B%A4%EC%9D%8C-%EB%8B%A8%EA%B3%84">&#xB2E4;&#xC74C; &#xB2E8;&#xACC4;</h2>
<ul>
<li><strong>&#xBE44;&#xB3D9;&#xAE30; &#xC544;&#xD0A4;&#xD14D;&#xCC98;</strong> &#x2014; ThreadPoolExecutor&#xB97C; asyncio&#xB85C; &#xAD50;&#xCCB4;&#xD558;&#xC5EC; 3-5&#xBC30; &#xBE60;&#xB978; &#xC2E4;&#xD589;</li>
<li><strong>&#xB3D9;&#xC801; &#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xC158;</strong> &#x2014; Claude&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xC791;&#xC5C5; &#xBCF5;&#xC7A1;&#xB3C4;&#xC5D0; &#xB530;&#xB77C; &#xC2E4;&#xD589; &#xACC4;&#xD68D; &#xC790;&#xB3D9; &#xC0DD;&#xC131;</li>
<li><strong>CRM &#xD1B5;&#xD569;</strong> &#x2014; &#xC804;&#xB9DD; &#xACE0;&#xAC1D;&#xACFC; &#xB51C; &#xCD94;&#xC815;&#xC744; HubSpot&#xC774;&#xB098; Salesforce&#xC5D0; &#xD478;&#xC2DC;</li>
<li><strong>&#xB2E4;&#xAD6D;&#xC5B4; &#xC81C;&#xC548;&#xC11C;</strong> &#x2014; &#xB3C5;&#xC77C;&#xC5B4;, &#xC77C;&#xBCF8;&#xC5B4;, &#xBCA0;&#xD2B8;&#xB0A8;&#xC5B4;&#xB85C; &#xD604;&#xC9C0; &#xC2DC;&#xC7A5;&#xC6A9; &#xC81C;&#xC548;&#xC11C; &#xC0DD;&#xC131;</li>
</ul>
<h2 id="%EA%B2%B0%EB%A1%A0">&#xACB0;&#xB860;</h2>
<p>&#xB2E8;&#xC77C; &#xD134; &#xCD94;&#xB860;&#xC5D0;&#xC11C; &#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xC158;&#xB41C; &#xBA40;&#xD2F0;&#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC73C;&#xB85C;&#xC758; &#xC804;&#xD658;&#xC740; &#xC774; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC5D0; &#xAC00;&#xD55C; &#xAC00;&#xC7A5; &#xB192;&#xC740; &#xB808;&#xBC84;&#xB9AC;&#xC9C0;&#xC758; &#xBCC0;&#xD654;&#xC600;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB3D9;&#xC77C;&#xD55C; &#xC81C;&#xD488; &#xC9C0;&#xC2DD;, &#xB3D9;&#xC77C;&#xD55C; &#xCD9C;&#xB825; &#xD615;&#xC2DD; &#x2014; &#xD558;&#xC9C0;&#xB9CC; &#xC774;&#xC81C; &#xCD94;&#xB860; &#xB300;&#xC2E0; &#xC0AC;&#xC2E4; &#xC704;&#xC5D0; &#xAD6C;&#xCD95;&#xB418;&#xC5C8;&#xACE0;, &#xAC01; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xC815;&#xD655;&#xD788; &#xD544;&#xC694;&#xD55C; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xB9CC; &#xBC1B;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xD575;&#xC2EC; &#xD1B5;&#xCC30;:</p>
<ol>
<li><strong>&#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xD130;&#xAC00; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xBCF4;&#xB2E4; &#xB354; &#xC911;&#xC694;&#xD569;&#xB2C8;&#xB2E4;.</strong> &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xAD00;&#xB9AC;, &#xC694;&#xC57D;&#xB41C; &#xD578;&#xB4DC;&#xC624;&#xD504;, &#xBCD1;&#xB82C; &#xC2E4;&#xD589;&#xC774; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC744; &#xC791;&#xB3D9;&#xD558;&#xAC8C; &#xB9CC;&#xB4ED;&#xB2C8;&#xB2E4;.</li>
<li><strong>&#xBAA8;&#xB4E0; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xB3C4;&#xAD6C;&#xB97C; &#xD544;&#xC694;&#xB85C; &#xD558;&#xC9C0;&#xB294; &#xC54A;&#xC2B5;&#xB2C8;&#xB2E4;.</strong> &#xB9AC;&#xC11C;&#xCC98;&#xB9CC; &#xB3C4;&#xAD6C;&#xC758; &#xD61C;&#xD0DD;&#xC744; &#xBC1B;&#xC2B5;&#xB2C8;&#xB2E4;.</li>
<li><strong>&#xAD6C;&#xC870;&#xD654;&#xB41C; &#xCD9C;&#xB825;&#xC774; &#xBC84;&#xADF8;&#xB97C; &#xC81C;&#xAC70;&#xD569;&#xB2C8;&#xB2E4;.</strong> <code>tool_choice</code>&#xAC00; regex &#xD30C;&#xC2F1;&#xC744; &#xB300;&#xCCB4;&#xD569;&#xB2C8;&#xB2E4;.</li>
<li><strong>&#xC784;&#xACC4;&#xB3C4; &#xC218;&#xC900;&#xC774; &#xD0C4;&#xB825;&#xC131;&#xC744; &#xB9CC;&#xB4ED;&#xB2C8;&#xB2E4;.</strong> optional &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xD30C;&#xC774;&#xD504;&#xB77C;&#xC778;&#xC744; &#xAE68;&#xB728;&#xB9AC;&#xC9C0; &#xC54A;&#xACE0; &#xC2E4;&#xD328;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</li>
</ol>
<p>&#xB2E4;&#xC12F; &#xC5D0;&#xC774;&#xC804;&#xD2B8;. &#xC138; &#xB3C4;&#xAD6C;. &#xD558;&#xB098;&#xC758; &#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xD130;. &#xADF9;&#xC801;&#xC73C;&#xB85C; &#xB098;&#xC544;&#xC9C4; &#xCD9C;&#xB825;.</p>
<p><em>Repository: <a href="https://github.com/Sardor-M/agentic-outreach-pipeline?ref=tech.e3view.com">agentic-outreach-pipeline</a></em></p>
]]></content:encoded></item><item><title><![CDATA[배타적 서브타입(Exlusive Subtype) 테이블 설계와 백엔드 구현]]></title><description><![CDATA[<p></p><h1 id="%EB%B0%B0%ED%83%80%EC%A0%81-%EC%84%9C%EB%B8%8C%ED%83%80%EC%9E%85%EC%9D%B4%EB%9E%80">&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;&#xC774;&#xB780;?</h1><p>&#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC5D0;&#xC11C; &#xC288;&#xD37C;&#xD0C0;&#xC785;(Super Type)&#xACFC; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Sub Type)&#xC740; &#xACF5;&#xD1B5; &#xC18D;&#xC131;&#xC744; &#xAE30;&#xC900;&#xC73C;&#xB85C; &#xC5D4;&#xD2F0;&#xD2F0;(&#xD14C;&#xC774;</p>]]></description><link>https://tech.e3view.com/baetajeog-seobeutaib-exlusive-subtype-teibeul-seolgyewa-baegendeu-guhyeon/</link><guid isPermaLink="false">6974f895f4b84ffe43837120</guid><category><![CDATA[3view]]></category><category><![CDATA[쓰리뷰]]></category><category><![CDATA[esg]]></category><category><![CDATA[subtype]]></category><category><![CDATA[db]]></category><dc:creator><![CDATA[Plato Jung]]></dc:creator><pubDate>Sun, 25 Jan 2026 09:26:39 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2026/01/exsub.png" medium="image"/><content:encoded><![CDATA[<img src="https://tech.e3view.com/content/images/2026/01/exsub.png" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;"><p></p><h1 id="%EB%B0%B0%ED%83%80%EC%A0%81-%EC%84%9C%EB%B8%8C%ED%83%80%EC%9E%85%EC%9D%B4%EB%9E%80">&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;&#xC774;&#xB780;?</h1><p>&#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC5D0;&#xC11C; &#xC288;&#xD37C;&#xD0C0;&#xC785;(Super Type)&#xACFC; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Sub Type)&#xC740; &#xACF5;&#xD1B5; &#xC18D;&#xC131;&#xC744; &#xAE30;&#xC900;&#xC73C;&#xB85C; &#xC5D4;&#xD2F0;&#xD2F0;(&#xD14C;&#xC774;&#xBE14;)&#xB97C; &#xC0C1;&#xC704;/&#xD558;&#xC704;&#xB85C; &#xB098;&#xB204;&#xB294; &#xB370;&#xC774;&#xD130; &#xBAA8;&#xB378;&#xB9C1; &#xAE30;&#xBC95;&#xC785;&#xB2C8;&#xB2E4;.</p><ul><li>Super Type (&#xC0C1;&#xC704; &#xC5D4;&#xD2F0;&#xD2F0;)<ul><li>&#xC5EC;&#xB7EC; &#xC5D4;&#xD2F0;&#xD2F0;&#xAC00; &#xACF5;&#xD1B5;&#xC73C;&#xB85C; &#xAC00;&#xC9C0;&#xB294; &#xC18D;&#xC131;&#xC744; &#xBAA8;&#xC544; &#xB193;&#xC740; &#xC5D4;&#xD2F0;&#xD2F0;</li><li>&#xC2DD;&#xBCC4;&#xC790;(PK, ID)&#xB97C; &#xD3EC;&#xD568;&#xD55C; &#xACF5;&#xD1B5; &#xC815;&#xBCF4;&#xB97C; &#xAC00;&#xC9C0;&#xACE0; &#xC788;&#xC74C;</li></ul></li><li>Sub Type (&#xD558;&#xC704; &#xC5D4;&#xD2F0;&#xD2F0;)<ul><li>&#xAC01; &#xD0C0;&#xC785;&#xB9CC;&#xC758; &#xACE0;&#xC720;&#xD55C; &#xC18D;&#xC131;&#xC744; &#xCD94;&#xAC00;&#xB85C; &#xAC00;&#xC9C0;&#xB294; &#xC5D4;&#xD2F0;&#xD2F0;</li></ul></li></ul><p>&#xC81C;&#xC870;&#xC2E4;&#xD589;&#xC2DC;&#xC2A4;&#xD15C;(MES)&#xB97C; &#xC704;&#xD55C; &#xD14C;&#xC774;&#xBE14;&#xC744; &#xC124;&#xACC4; &#xD560; &#xB54C;&#xB97C; &#xC608;&#xC2DC;&#xB85C; &#xC65C; &#xD14C;&#xC774;&#xBE14;&#xC744; Super Type&#xACFC; Sub Type&#xC73C;&#xB85C; &#xB098;&#xB204;&#xB294; &#xC9C0; &#xC0B4;&#xD3B4;&#xBCF4;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;.</p><p>&#xB300;&#xD45C;&#xC801;&#xC73C;&#xB85C; &#xACF5;&#xC7A5;&#xC5D0;&#xC11C; &#xC81C;&#xC870;&#xB97C; &#xD560; &#xB54C; &#xC0AC;&#xC6A9;&#xB418;&#xB294; ITEM(&#xD488;&#xBAA9;)&#xC740; &#xC5EC;&#xB7EC; &#xC885;&#xB958;&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p><ul><li>&#xC81C;&#xD488;(&#xCD5C;&#xC885; &#xC81C;&#xD488;)</li><li>&#xBC18;&#xC81C;&#xD488;(&#xC81C;&#xD488;&#xC744; &#xC0DD;&#xC0B0; &#xD560; &#xB54C; &#xB2E4;&#xB978; &#xD544;&#xC694;&#xD55C; &#xC911;&#xAC04; &#xC0DD;&#xC0B0; &#xC81C;&#xD488;)</li><li>&#xC790;&#xC7AC;</li><li>&#xACF5;&#xAD6C;</li></ul><p>&#xC704; &#xD604;&#xC2E4;&#xC138;&#xACC4;&#xC758; &#xC81C;&#xD488;&#xC744; &#xC5D4;&#xD2F0;&#xD2F0;&#xB85C; &#xBAA8;&#xC0AC;&#xD574;&#xC11C; &#xD14C;&#xC774;&#xBE14; &#xD654; &#xD560; &#xB54C; &#xB9CC;&#xC57D; &#xC704; &#xB2E4;&#xC591;&#xD55C; &#xC885;&#xB958;&#xB97C; &#xD558;&#xB098;&#xC758; &#xC5D4;&#xD2F0;&#xD2F0;&#xB85C; &#xAD00;&#xB9AC;&#xD55C;&#xB2E4;&#xBA74; NULL &#xCEEC;&#xB7FC;&#xC774; &#xAE09;&#xC99D;&#xD558;&#xAC8C; &#xB429;&#xB2C8;&#xB2E4;.</p><ul><li>NULL &#xCEEC;&#xB7FC;&#xC774; &#xAE09;&#xC99D;&#xD558;&#xB294; &#xC774;&#xC720;?<ul><li>&#xACF5;&#xAD6C;&#xB294; &#xC218;&#xBA85; &#xBC0F; &#xC810;&#xAC80;&#xC8FC;&#xAE30; &#xCEEC;&#xB7FC;&#xC774; &#xD544;&#xC694;&#xD569;&#xB2C8;&#xB2E4;.</li><li>&#xC790;&#xC7AC;&#xB294; &#xC790;&#xC7AC;&#xC5D0;&#xB9CC; &#xC801;&#xC6A9;&#xB418;&#xB294; &#xC2A4;&#xD399;, &#xC790;&#xC7AC;&#xAC80;&#xC0AC;&#xC758; &#xC720;&#xBB34; &#xB4F1;&#xC758; &#xCEEC;&#xB7FC;&#xC774; &#xD544;&#xC694;&#xD569;&#xB2C8;&#xB2E4;.</li><li>&#xC81C;&#xD488;&#xC740; &#xC81C;&#xD488;&#xC758; &#xCD5C;&#xC885;&#xC801;&#xC778; &#xCC98;&#xB9AC; &#xBC29;&#xC2DD;&#xC744; &#xB098;&#xD0C0;&#xB0B4;&#xB294; &#xCEEC;&#xB7FC;&#xC774; &#xD544;&#xC694;&#xD569;&#xB2C8;&#xB2E4;.</li></ul></li></ul><p></p><p>&#xC704;&#xC758; &#xACBD;&#xC6B0; &#xD558;&#xB098;&#xC758; &#xD14C;&#xC774;&#xBE14;&#xB85C; ITEM&#xC744; &#xAD00;&#xB9AC;&#xD558;&#xAC8C; &#xB418;&#xBA74; &#xACF5;&#xAD6C;&#xC6A9; &#xCEEC;&#xB7FC;&#xC5D0;&#xB294; &#xC790;&#xC7AC;, &#xC81C;&#xD488; &#xB4F1;&#xC758; &#xB370;&#xC774;&#xD130;&#xB294; &#xBAA8;&#xB450; NULL&#xB85C; &#xC800;&#xC7A5;&#xB418;&#xBA70; &#xBC18;&#xB300;&#xC758; &#xACBD;&#xC6B0;&#xB3C4; &#xBC1C;&#xC0DD;&#xD569;&#xB2C8;&#xB2E4;.</p><p>&#xADF8;&#xB807;&#xB2E4;&#xBA74; &#xC704; ITEM &#xBCC4; &#xC885;&#xB958;&#xB4E4;&#xC744; &#xBAA8;&#xB450; &#xBCC4;&#xAC1C;&#xC758; &#xC5D4;&#xD2F0;&#xD2F0;&#xB85C; &#xAD00;&#xB9AC;&#xD558;&#xBA74; &#xB418;&#xC9C0; &#xC54A;&#xC744;&#xAE4C;&#xC694;? &#xADF8;&#xB7F0; &#xACBD;&#xC6B0; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC740; &#xB2E8;&#xC810;&#xC774; &#xBC1C;&#xC0DD;&#xD569;&#xB2C8;&#xB2E4;.</p><ul><li>&#xACF5;&#xD1B5;&#xC18D;&#xC131;&#xC774; &#xC5EC;&#xB7EC; &#xD14C;&#xC774;&#xBE14;&#xC5D0; &#xC911;&#xBCF5;&#xB429;&#xB2C8;&#xB2E4;.<ul><li>&#xC81C;&#xD488;/&#xBC18;&#xC81C;&#xD488;/&#xC790;&#xC7AC;/&#xACF5;&#xAD6C; &#xB4F1;&#xC740; &#xBAA8;&#xB450; ITEM&#xC758; &#xC131;&#xACA9;&#xC744; &#xAC00;&#xC9C0;&#xACE0; &#xC788;&#xC5B4;&#xC11C; &#xACF5;&#xD1B5;&#xC801;&#xC73C;&#xB85C; &#xAC00;&#xC9C0;&#xB294; &#xC18D;&#xC131; &#xC608;) &#xCF54;&#xB4DC;, &#xC774;&#xB984;, &#xC0AC;&#xC6A9;&#xC5EC;&#xBD80;, &#xC0DD;&#xC131;&#xC77C;, &#xC218;&#xC815;&#xC77C; &#xB4F1; &#xC774; &#xD14C;&#xC774;&#xBE14;&#xB9C8;&#xB2E4; &#xC911;&#xBCF5;&#xC73C;&#xB85C; &#xC800;&#xC7A5;&#xB429;&#xB2C8;&#xB2E4;.<ul><li>&#xC774; &#xACBD;&#xC6B0; &#xACF5;&#xD1B5; &#xC18D;&#xC131; &#xCEEC;&#xB7FC; &#xC815;&#xC758; &#xC218;&#xC815; &#xC2DC; &#xC608;)&#xCF54;&#xB4DC;&#xC758; &#xAE38;&#xC774; &#xBCC0;&#xACBD; &#xC2DC; &#xBAA8;&#xB4E0; &#xC885;&#xB958;&#xC758; ITEM  &#xD14C;&#xC774;&#xBE14; &#xC815;&#xC758;&#xB97C; &#xBCC0;&#xACBD;&#xD574;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;.</li></ul></li><li>ITEM&#xC774;&#xB77C;&#xB294; &#xACF5;&#xD1B5; &#xAD00;&#xC810;&#xC5D0;&#xC11C;&#xC758; &#xC870;&#xD68C;/&#xCC38;&#xC870;&#xAC00; &#xC5B4;&#xB824;&#xC6CC;&#xC9D1;&#xB2C8;&#xB2E4;.<ul><li>&#xB9CC;&#xC57D; ITEM&#xC774;&#xB77C;&#xB294; &#xACF5;&#xD1B5; &#xC18D;&#xC131;&#xC73C;&#xB85C;&#xB9CC; &#xC870;&#xD68C;&#xB97C; &#xD560; &#xACBD;&#xC6B0;, &#xD14C;&#xC774;&#xBE14;&#xC774; &#xC644;&#xC804; &#xBD84;&#xB9AC;&#xB418;&#xC5B4; &#xC788;&#xC73C;&#xBA74; &#xD488;&#xBAA9; &#xAC80;&#xC0C9; &#xC2DC; (&#xACF5;&#xD1B5;&#xCEEC;&#xB7FC;&#xB9CC; &#xD544;&#xC694;&#xD55C; &#xACBD;&#xC6B0;&#xC5D0;&#xB3C4;)  <code>&#xC81C;&#xD488;/&#xBC18;&#xC81C;&#xD488;/&#xC790;&#xC7AC;/&#xACF5;&#xAD6C;</code> &#xB97C; &#xAC01; &#xAC01; &#xC870;&#xD68C;&#xD558;&#xC5EC; <code>UNION ALL</code> &#xB85C; &#xD569;&#xCCD0;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;.</li><li>&#xB610;&#xD55C; ITEM&#xC774;&#xB77C;&#xB294; &#xACF5;&#xD1B5;&#xC758; &#xAC1C;&#xB150;&#xACFC; &#xC5F0;&#xAD00;&#xB41C; &#xD14C;&#xC774;&#xBE14;&#xC744; &#xC124;&#xACC4;&#xD560; &#xB54C; &#xB2E4; &#xC218;&#xC758; <code>&#xC81C;&#xD488;/&#xBC18;&#xC81C;&#xD488;/&#xC790;&#xC7AC;/&#xACF5;&#xAD6C;</code> &#xD14C;&#xC774;&#xBE14;&#xACFC; &#xAC01;&#xAC01; PK/FK &#xAD00;&#xACC4;&#xB97C; &#xB9FA;&#xC744; &#xD544;&#xC694; &#xC5C6;&#xC774; ITEM &#xC288;&#xD37C;&#xD0C0;&#xC785;&#xC758; ITEM_ID&#xB97C; FK&#xB85C; &#xD55C;&#xBC88; &#xCC38;&#xC870;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</li></ul></li></ul></li></ul><p>&#xC774;&#xB7F0; &#xB2E8;&#xC810;&#xB4E4;&#xC744; &#xBCF4;&#xC644;&#xD558;&#xAE30; &#xC704;&#xD574; Super Type&#xC73C;&#xB85C; ITEM(&#xD488;&#xBAA9;) &#xC5D4;&#xD2F0;&#xD2F0;&#xB97C; &#xC124;&#xC815;&#xD558;&#xACE0; Sub Type&#xC73C;&#xB85C; &#xAC01; &#xAC01; &#xC81C;&#xD488;, &#xBC18;&#xC81C;&#xD488;, &#xC790;&#xC7AC;, &#xACF5;&#xAD6C; &#xB4F1;&#xC758; &#xC5D4;&#xD2F0;&#xD2F0;&#xB97C; &#xC124;&#xACC4;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC774; &#xACBD;&#xC6B0; &#xACF5;&#xD1B5; &#xCEEC;&#xB7FC;&#xC740; Super Type&#xC778; ITEM(&#xD488;&#xBAA9;) &#xC5D4;&#xD2F0;&#xD2F0;&#xC5D0; &#xC124;&#xC815;&#xD558;&#xACE0; &#xAC01; Sub Type&#xC758; &#xACE0;&#xC720; &#xD2B9;&#xC131;&#xB4E4;&#xC744; &#xAC01; &#xAC01;&#xC758; &#xC5D4;&#xD2F0;&#xD2F0;&#xC5D0; &#xC124;&#xC815;&#xD574;&#xC11C; &#xAD00;&#xB9AC; &#xD574;&#xC8FC;&#xBA74; &#xB429;&#xB2C8;&#xB2E4;. </p><p>&#xADF8;&#xB7F0;&#xB370; <code>&#xBC30;&#xD0C0;&#xC801;</code> - exclusive &#xB77C;&#xB294; &#xB9D0;&#xC774; &#xC65C; &#xBD99;&#xC740; &#xAC78;&#xAE4C;&#xC694;?</p><p>&#xC5EC;&#xAE30;&#xC11C; &#xBC30;&#xD0C0;&#xC801;&#xC774;&#xB77C;&#xB294; &#xC758;&#xBBF8;&#xB294; ITEM(&#xD488;&#xBAA9;) &#xC774; &#xBB34;&#xC870;&#xAC74; &#xC81C;&#xD488;, &#xB610;&#xB294; &#xC790;&#xC7AC; &#xB4F1;&#xC758; &#xD558;&#xC704; &#xC131;&#xACA9;&#xC911;&#xC5D0;&#xC11C; &#xD558;&#xB098;&#xB9CC; &#xAC00;&#xC9C0;&#xACE0; &#xC788;&#xC5B4;&#xC57C; &#xB41C;&#xB2E4;&#xB294; &#xC758;&#xBBF8;&#xC785;&#xB2C8;&#xB2E4;. &#xB9CC;&#xC57D; ITEM_ID &#xB85C; ITEM_001&#xC774;&#xB77C;&#xB294; &#xB370;&#xC774;&#xD130;&#xAC00; &#xC81C;&#xD488;&#xC774;&#xC790; &#xC790;&#xC7AC;&#xC5EC;&#xC11C; &#xC81C;&#xD488; Sub-Type entity&#xC5D0;&#xB3C4; &#xC800;&#xC7A5;&#xB418;&#xACE0;, &#xC790;&#xC7AC; Sub-Type entity&#xC5D0;&#xB3C4; &#xC800;&#xC7A5;&#xB418;&#xBA74; &#xC548;&#xB41C;&#xB2E4;&#xB294; &#xC758;&#xBBF8; &#xC785;&#xB2C8;&#xB2E4;.</p><p>&#xB9CC;&#xC57D; <code>ITEM_ID = &apos;ITEM_001&apos;</code> &#xC778; &#xB370;&#xC774;&#xD130;&#xAC00;<br>PRODUCT &#xD14C;&#xC774;&#xBE14;&#xACFC; MATERIAL &#xD14C;&#xC774;&#xBE14;&#xC5D0; <strong>&#xB3D9;&#xC2DC;&#xC5D0; &#xC874;&#xC7AC;&#xD55C;&#xB2E4;&#xBA74;</strong>,<br>&#xD574;&#xB2F9; ITEM&#xC740; &#x201C;&#xC81C;&#xD488;&#xC774;&#xBA74;&#xC11C; &#xC790;&#xC7AC;&#x201D;&#xAC00; &#xB418;&#xC5B4;&#xBC84;&#xB9AC;&#xBA70;<br>&#xC774;&#xB294; &#xC6B0;&#xB9AC;&#xAC00; &#xC815;&#xC758;&#xD55C; &#xD488;&#xBAA9;&#xC758; &#xB3C4;&#xBA54;&#xC778; &#xADDC;&#xCE59;&#xC744; &#xBA85;&#xD655;&#xD788; &#xC704;&#xBC18;&#xD558;&#xB294; &#xC0C1;&#xD0DC;&#xAC00; &#xB429;&#xB2C8;&#xB2E4;.</p><p>&#xC774;&#xCC98;&#xB7FC; &#xC11C;&#xBE0C;&#xD0C0;&#xC785; &#xAC04; <strong>&#xC911;&#xBCF5;&#xC744; &#xD5C8;&#xC6A9;&#xD558;&#xC9C0; &#xC54A;&#xACE0;</strong>,<br>&#xBC18;&#xB4DC;&#xC2DC; &#xD558;&#xB098;&#xC758; &#xD558;&#xC704; &#xC131;&#xACA9;&#xB9CC; &#xAC00;&#xC9C8; &#xC218; &#xC788;&#xB3C4;&#xB85D; &#xC81C;&#xD55C;&#xD558;&#xB294; &#xAD6C;&#xC870;&#xB97C;<br><strong>&#xBC30;&#xD0C0;&#xC801;(Exclusive) &#xC11C;&#xBE0C;&#xD0C0;&#xC785;</strong>&#xC774;&#xB77C;&#xACE0; &#xBD80;&#xB985;&#xB2C8;&#xB2E4;.</p><p>&#xC774;&#xCC98;&#xB7FC; &#xBC30;&#xD0C0;&#xC801;&#xC73C;&#xB85C; &#xC124;&#xACC4; &#xD558;&#xC9C0; &#xC54A;&#xC744; &#xACBD;&#xC6B0;&#xC5D0;&#xB294; &#xC544;&#xB798;&#xC640; &#xAC19;&#xC740; &#xB2E8;&#xC810;&#xC774; &#xC874;&#xC7AC;&#xD569;&#xB2C8;&#xB2E4;.</p><ol><li>&#xB3C4;&#xBA54;&#xC778; &#xC758;&#xBBF8;&#xAC00; &#xAE68;&#xC9D1;&#xB2C8;&#xB2E4;.<ol><li>MES &#xAD00;&#xC810;&#xC5D0;&#xC11C; &#xC81C;&#xD488;, &#xC790;&#xC7AC;, &#xACF5;&#xAD6C;&#xB294; &#xC5ED;&#xD560;&#xACFC; &#xCC45;&#xC784;&#xC774; &#xC804;&#xD600; &#xB2E4;&#xB978; &#xAC1C;&#xB150;&#xC785;&#xB2C8;&#xB2E4;.<ol><li>&#xC81C;&#xD488;&#xC740; &#xC0DD;&#xC0B0;&#xC758; &#xACB0;&#xACFC;&#xBB3C;&#xC774;&#xBA70; &#xCD9C;&#xD558; &#xB300;&#xC0C1;&#xC774; &#xB418;&#xACE0;</li><li>&#xC790;&#xC7AC;&#xB294; &#xC0DD;&#xC0B0;&#xC5D0; &#xD22C;&#xC785;&#xB418;&#xC5B4; &#xC18C;&#xBAA8;&#xB418;&#xBA70;</li><li>&#xACF5;&#xAD6C;&#xB294; &#xC218;&#xBA85;&#xC744; &#xAD00;&#xB9AC;&#xD558;&#xBA70; &#xBC18;&#xBCF5; &#xC0AC;&#xC6A9;&#xB429;&#xB2C8;&#xB2E4;.</li></ol></li><li>&#xADF8;&#xB7F0;&#xB370; &#xD558;&#xB098;&#xC758; ITEM&#xC774; &#xC81C;&#xD488;&#xC774;&#xBA74;&#xC11C; &#xB3D9;&#xC2DC;&#xC5D0; &#xC790;&#xC7AC;&#xB85C; &#xC874;&#xC7AC;&#xD55C;&#xB2E4;&#xBA74;, &#xC774; ITEM&#xC774; <code>&#xCD9C;&#xD558;&#xB300;&#xC0C1;</code>&#xC778;&#xC9C0; <code>&#xC18C;&#xBAA8;&#xB300;&#xC0C1;</code> &#xC778;&#xC9C0; &#xBA85;&#xD655;&#xD558;&#xC9C0; &#xC54A;&#xAC8C; &#xB429;&#xB2C8;&#xB2E4;.</li></ol></li><li>&#xBD84;&#xAE30;&#xBB38;&#xC774; &#xBCF5;&#xC7A1;&#xD574;&#xC9D1;&#xB2C8;&#xB2E4;.<ol><li>&#xB9CC;&#xC57D; ITEM&#xC774; &#xC5EC;&#xB7EC; Sub Type&#xC5D0; &#xB3D9;&#xC2DC;&#xC5D0; &#xC874;&#xC7AC; &#xD560; &#xC218; &#xC788;&#xB2E4;&#xBA74;, &#xBC31;&#xC5D4;&#xB4DC; &#xB85C;&#xC9C1;&#xC740; &#xD56D;&#xC0C1; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC740; &#xBC29;&#xC5B4; &#xCF54;&#xB4DC;&#xB97C; &#xC791;&#xC131;&#xD574;&#xC8FC;&#xC5B4;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;<ol><li> &#xC774; ITEM&#xC740; &#xC81C;&#xD488;&#xC774;&#xAE30;&#xB3C4; &#xD558;&#xACE0;  &#xC790;&#xC7AC;&#xC774;&#xAE30;&#xB3C4; &#xD569;&#xB2C8;&#xB2E4;.</li><li>&#xC774; ITEM&#xC744; &#xC5B4;&#xB5A4; &#xAE30;&#xC900;&#xC73C;&#xB85C; &#xC81C;&#xD488;&#xC73C;&#xB85C; &#xCC98;&#xB9AC;&#xD560; &#xC9C0;, &#xC790;&#xC7AC;&#xB85C; &#xCC98;&#xB9AC;&#xD560; &#xC9C0; &#xBAA8;&#xD638;&#xD569;&#xB2C8;&#xB2E4;.</li><li>&#xACB0;&#xAD6D; &#xCF54;&#xB4DC; &#xACF3;&#xACF3;&#xC5D0; &#xC544;&#xB798;&#xC640; &#xAC19;&#xC740; &#xBD84;&#xAE30;&#xBB38;&#xC774; &#xC0DD;&#xAE30;&#xAC8C; &#xB429;&#xB2C8;&#xB2E4;.</li></ol></li></ol></li></ol><pre><code class="language-java">if (isProduct &amp;&amp; isMaterial) {
    ...
}</code></pre><hr><h1 id="%EB%B0%B0%ED%83%80%EC%A0%81-%EC%84%9C%EB%B8%8C%ED%83%80%EC%9E%85-%EC%84%A4%EA%B3%84-%EC%98%88%EC%8B%9C">&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785; &#xC124;&#xACC4; &#xC608;&#xC2DC;</h1><p></p><p>&#xADF8;&#xB7FC; &#xC2E4;&#xC81C;&#xB85C; &#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785; &#xC124;&#xACC4; + &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;&#xC744; &#xD574;&#xBCF4;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;.</p><h2 id="%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B5%AC%ED%98%84">&#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xAD6C;&#xD604;</h2><p></p><p>&#xBA3C;&#xC800; &#xD14C;&#xC2A4;&#xD2B8; &#xD658;&#xACBD;&#xC740; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xC11C;&#xBC84;&#xB294; <code>MS SQL SERVER</code>  15&#xBC84;&#xC804;&#xC774;&#xBA70; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xAD00;&#xB9AC; &#xBC0F; &#xCFFC;&#xB9AC; &#xD234;&#xC740; <code>SQL Server Management Studio</code> 18.12.1 &#xBC84;&#xC804; &#xC785;&#xB2C8;&#xB2E4;.</p><p>&#xD14C;&#xC2A4;&#xD2B8;&#xC6A9; &#xB370;&#xC774;&#xD130;&#xB370;&#xC774;&#xC2A4;&#xB97C; &#xC0DD;&#xC131;&#xD574;&#xBCF4;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="774" height="292" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image.png 600w, https://tech.e3view.com/content/images/2026/01/image.png 774w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-1.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="806" height="601" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-1.png 600w, https://tech.e3view.com/content/images/2026/01/image-1.png 806w" sizes="(min-width: 720px) 720px"></figure><p></p><p>&#xC0DD;&#xC131;&#xB41C; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4;&#xC5D0; &#xAC01; &#xAC01; Super Type&#xC73C;&#xB85C; ITEM(&#xD488;&#xBAA9;)&#xC744; Sub Type&#xC73C;&#xB85C; PRODUCT(&#xC81C;&#xD488;), MATERIAL(&#xC790;&#xC7AC;) &#xD14C;&#xC774;&#xBE14;&#xC744; &#xCD94;&#xAC00; &#xD574;&#xC90D;&#xB2C8;&#xB2E4;. </p><ul><li>Super Type<ul><li>ITEM(&#xD488;&#xBAA9;)<ul><li>ITEM_ID (PK)</li><li>ITEM_TYPE (&#xD0C0;&#xC785;)</li><li>ITEM_ATT (&#xACF5;&#xD1B5;&#xC18D;&#xC131;)</li></ul></li></ul></li><li>Sub Type<ul><li>PRODUCT(&#xC81C;&#xD488;)<ul><li>PRDT_ID (PK,FK)</li><li>PRDT_TYPE (&#xD0C0;&#xC785;)</li><li>PRDT_ATT (&#xACE0;&#xC720;&#xC18D;&#xC131;)</li></ul></li><li>MATERIAL(&#xC790;&#xC7AC;)<ul><li>MAT_ID (PK,FK)</li><li>MAT_TYPE (&#xD0C0;&#xC785;)</li><li>MAT_ATT (&#xACE0;&#xC720;&#xC18D;&#xC131;)</li></ul></li></ul></li></ul><p>&#xD14C;&#xC774;&#xBE14; &#xC0DD;&#xC131; &#xBC0F; &#xC5F0;&#xAD00;&#xAD00;&#xACC4; &#xC124;&#xC815;&#xC740; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xAD00;&#xB9AC; &#xD234;&#xC5D0;&#xC11C; -&gt; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xB2E4;&#xC774;&#xC5B4;&#xADF8;&#xB7A8; &#xAE30;&#xB2A5;(&#xC6B0;&#xD074;&#xB9AD;-&#xC0C8; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xB2E4;&#xC774;&#xC5B4;&#xADF8;&#xB7A8;)&#xC744; &#xC774;&#xC6A9;&#xD574;&#xC11C; &#xC0DD;&#xC131;&#xD558;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-2.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="1270" height="235" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-2.png 600w, https://tech.e3view.com/content/images/size/w1000/2026/01/image-2.png 1000w, https://tech.e3view.com/content/images/2026/01/image-2.png 1270w" sizes="(min-width: 720px) 720px"></figure><p>&#xB2E4;&#xC774;&#xC5B4;&#xADF8;&#xB7A8; &#xCC3D; -&gt; &#xC6B0;&#xD074;&#xB9AD; -&gt; &#xC0C8; &#xD14C;&#xC774;&#xBE14;</p><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-3.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="829" height="459" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-3.png 600w, https://tech.e3view.com/content/images/2026/01/image-3.png 829w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://tech.e3view.com/content/images/2026/01/image-4.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="467" height="364"><figcaption><span style="white-space: pre-wrap;">&#xCEEC;&#xB7FC;&#xC744; &#xC791;&#xC131;&#xD574;&#xC90D;&#xB2C8;&#xB2E4;.</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://tech.e3view.com/content/images/2026/01/image-6.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="573" height="534"><figcaption><span style="white-space: pre-wrap;">PK &#xC801;&#xC6A9;&#xD560; &#xCEEC;&#xB7FC; &#xC6B0;&#xD074;&#xB9AD; -&gt; &#xAE30;&#xBCF8;&#xD0A4; &#xC124;&#xC815;</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://tech.e3view.com/content/images/2026/01/image-7.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="1027" height="509" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-7.png 600w, https://tech.e3view.com/content/images/size/w1000/2026/01/image-7.png 1000w, https://tech.e3view.com/content/images/2026/01/image-7.png 1027w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">3&#xAC1C;&#xC758; &#xD14C;&#xC774;&#xBE14; &#xC0DD;&#xC131;&#xB41C; &#xBAA8;&#xC2B5;</span></figcaption></figure><p>&#xC774;&#xC81C; &#xC5F0;&#xAD00;&#xAD00;&#xACC4;&#xB97C; &#xC124;&#xC815;&#xD574;&#xC90D;&#xB2C8;&#xB2E4;. Sub Type&#xC758; PK&#xC778; PRDT_ID&#xC640; MAT_ID&#xC758; FK&#xB97C; ITEM&#xC758; PK&#xB85C; &#xC9C0;&#xC815;&#xD569;&#xB2C8;&#xB2E4;.</p><p>&#xBA3C;&#xC800; ITEM &#xD14C;&#xC774;&#xBE14;&#xC758;  PRIMARY KEY &#xCE7C;&#xB7FC;&#xC778; ITEM ID&#xC758; &#xC5F4;&#xC1E0; &#xC544;&#xC774;&#xCF58;&#xC744; &#xB9C8;&#xC6B0;&#xC2A4; &#xC88C; &#xD074;&#xB9AD; &#xD6C4;  PRODUCT &#xD14C;&#xC774;&#xBE14;&#xC758; PRIMARY  &#xCE7C;&#xB7FC;&#xC778;  PRDT_ID &#xCE7C;&#xB7FC;&#xC73C;&#xB85C; &#xB04C;&#xC5B4;&#xB2E4; &#xB193;&#xC2B5;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-11.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="1131" height="679" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-11.png 600w, https://tech.e3view.com/content/images/size/w1000/2026/01/image-11.png 1000w, https://tech.e3view.com/content/images/2026/01/image-11.png 1131w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-13.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="641" height="408" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-13.png 600w, https://tech.e3view.com/content/images/2026/01/image-13.png 641w"></figure><p>MATERIAL &#xD14C;&#xC774;&#xBE14;&#xB3C4; &#xB611;&#xAC19;&#xC774; &#xD574;&#xC90D;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-14.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="648" height="412" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-14.png 600w, https://tech.e3view.com/content/images/2026/01/image-14.png 648w"></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://tech.e3view.com/content/images/2026/01/image-15.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="1049" height="547" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-15.png 600w, https://tech.e3view.com/content/images/size/w1000/2026/01/image-15.png 1000w, https://tech.e3view.com/content/images/2026/01/image-15.png 1049w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Super Type&#xACFC; Sub Type&#xC758; 1:1 &#xAD00;&#xACC4; &#xB9E4;&#xD551; &#xD655;&#xC778;</span></figcaption></figure><p>&#xD574;&#xB2F9; &#xB2E4;&#xC774;&#xC5B4;&#xADF8;&#xB7A8;&#xC744; &#xC800;&#xC7A5;(ctrl + s)&#xD558;&#xC5EC; &#xC2E4;&#xC81C; &#xD14C;&#xC774;&#xBE14;&#xC774; &#xC0DD;&#xC131;&#xB428;&#xC744; &#xD655;&#xC778;&#xD569;&#xB2C8;&#xB2E4;.</p><blockquote>&#xC8FC;&#xC758;: &#xC6B4;&#xC601;&#xD658;&#xACBD;&#xC758; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4;&#xC5D0;&#xC11C; &#xB2E4;&#xC774;&#xC5B4;&#xADF8;&#xB7A8;&#xD234;&#xC744; &#xC774;&#xC6A9;&#xD558;&#xC5EC; &#xC218;&#xC815;, &#xC0DD;&#xC131; &#xD6C4; &#xC800;&#xC7A5;&#xC740; &#xC2E4;&#xC81C;&#xB85C; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4;&#xC5D0; &#xBC18;&#xC601;&#xC774; &#xB418;&#xBBC0;&#xB85C; &#xC8FC;&#xC758;&#xD574;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;.</blockquote><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-16.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="890" height="667" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-16.png 600w, https://tech.e3view.com/content/images/2026/01/image-16.png 890w" sizes="(min-width: 720px) 720px"></figure><p>&#xC0DD;&#xC131;&#xB41C; &#xD14C;&#xC774;&#xBE14;&#xC758; CREATE &#xBB38;&#xC744; &#xC0B4;&#xD3B4;&#xBCF4;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;.</p><ul><li>Super Type</li></ul><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-17.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="970" height="459" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-17.png 600w, https://tech.e3view.com/content/images/2026/01/image-17.png 970w" sizes="(min-width: 720px) 720px"></figure><pre><code class="language-sql">USE [exclusive_test]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[ITEM](
	[ITEM_ID] [nvarchar](50) NOT NULL,
	[ITEM_TYPE] [nvarchar](50) NOT NULL,
	[ITEM_ATT] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_ITEM] PRIMARY KEY CLUSTERED 
(
	[ITEM_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO</code></pre><p>&#xB2E8;&#xC21C;&#xD654; &#xBC84;&#xC804;</p><pre><code class="language-sql">CREATE TABLE ITEM (
    ITEM_ID   NVARCHAR(50) PRIMARY KEY,
    ITEM_TYPE NVARCHAR(50) NOT NULL,
    ITEM_ATT  NVARCHAR(50) NOT NULL
);</code></pre><ul><li>Sub Type</li></ul><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-18.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="886" height="370" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-18.png 600w, https://tech.e3view.com/content/images/2026/01/image-18.png 886w" sizes="(min-width: 720px) 720px"></figure><pre><code class="language-sql">USE [exclusive_test]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[MATERIAL](
	[MAT_ID] [nvarchar](50) NOT NULL,
	[MAT_TYPE] [nvarchar](50) NOT NULL,
	[MAT_ATT] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_MATERIAL] PRIMARY KEY CLUSTERED 
(
	[MAT_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[MATERIAL]  WITH CHECK ADD  CONSTRAINT [FK_MATERIAL_ITEM] FOREIGN KEY([MAT_ID])
REFERENCES [dbo].[ITEM] ([ITEM_ID])
GO

ALTER TABLE [dbo].[MATERIAL] CHECK CONSTRAINT [FK_MATERIAL_ITEM]
GO</code></pre><p>&#xB2E8;&#xC21C;&#xD654; &#xBC84;&#xC804;</p><pre><code class="language-sql">CREATE TABLE MATERIAL (
    MAT_ID   NVARCHAR(50) PRIMARY KEY,
    MAT_TYPE NVARCHAR(50) NOT NULL,
    MAT_ATT  NVARCHAR(50) NOT NULL,
    CONSTRAINT FK_MATERIAL_ITEM
        FOREIGN KEY (MAT_ID)
        REFERENCES ITEM (ITEM_ID)
);</code></pre><p></p><hr><h2 id="%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B5%AC%ED%98%84">&#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;</h2><p>&#xC774;&#xC81C; &#xD574;&#xB2F9; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xD14C;&#xC774;&#xBE14;&#xB4E4;&#xC5D0; &#xB370;&#xC774;&#xD130;&#xB97C; &#xC800;&#xC7A5;, &#xC870;&#xD68C; &#xD558;&#xB294; &#xBC31;&#xC5D4;&#xB4DC; &#xC608;&#xC2DC; &#xCF54;&#xB4DC;&#xB97C; &#xAD6C;&#xD604;&#xD574;&#xBCF4;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;. </p><p>&#xBA3C;&#xC800;, &#xC6B0;&#xB9AC;&#xAC00; &#xAD6C;&#xD604;&#xD55C; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC5D0;&#xC11C; &#xD55C;&#xAC00;&#xC9C0; &#xC758;&#xBB38;&#xC810;&#xC744; &#xAC00;&#xC838;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;.</p><p>&#xACFC;&#xC5F0; &#xC800; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4; &#xAD6C;&#xC870;&#xC5D0;&#xC11C; &#xC704;&#xC5D0;&#xC11C; &#xC5B8;&#xAE09;&#xB41C; <code>&#xBC30;&#xD0C0;&#xC801;</code> &#xD2B9;&#xC131;&#xC774; &#xBCF4;&#xC7A5;&#xB418;&#xB294;&#xC9C0; &#xC785;&#xB2C8;&#xB2E4;.</p><p>&#xACB0;&#xB860;&#xC801;&#xC73C;&#xB85C; &#xC9C0;&#xAE08; &#xC0C1;&#xD0DC;&#xC5D0;&#xC11C;&#xB294; &#xBC30;&#xD0C0;&#xC801; &#xD2B9;&#xC131;&#xC774; &#xBCF4;&#xC7A5;&#xB418;&#xC9C0; &#xC54A;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC608;&#xC2DC;&#xB85C; &#xC704; &#xC124;&#xACC4;&#xB41C; &#xD14C;&#xC774;&#xBE14;&#xC5D0; &#xB370;&#xC774;&#xD130;&#xB97C; &#xB123;&#xC5B4; &#xBCF4;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;.</p><p>&#xC815;&#xC0C1; &#xCF00;&#xC774;&#xC2A4;</p><pre><code class="language-sql">-- &#xC288;&#xD37C;&#xD0C0;&#xC785; &#xC0DD;&#xC131;
INSERT INTO ITEM (ITEM_ID, ITEM_TYPE, ITEM_ATT)
VALUES (&apos;ITM001&apos;, &apos;PRDT&apos;, &apos;COMMON&apos;);

-- PRODUCT &#xC11C;&#xBE0C;&#xD0C0;&#xC785; &#xC0DD;&#xC131; (OK)
INSERT INTO PRODUCT (PRDT_ID, PRDT_TYPE, PRDT_ATT)
VALUES (&apos;ITM001&apos;, &apos;PRDT&apos;, &apos;PRDT&apos;);</code></pre><p>&#xBC30;&#xD0C0;&#xC131;&#xC774; &#xAE68;&#xC9C4; &#xCF00;&#xC774;&#xC2A4;</p><pre><code class="language-sql">INSERT INTO MATERIAL (MAT_ID, MAT_TYPE, MAT_ATT)
VALUES (&apos;ITM001&apos;, &apos;MAT&apos;, &apos;MAT&apos;);</code></pre><p>&#xC870;&#xD68C; &#xD574;&#xBD05;&#xB2C8;&#xB2E4;.</p><pre><code class="language-sql">select * from ITEM
select * from PRODUCT
select * from MATERIAL</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://tech.e3view.com/content/images/2026/01/image-19.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="811" height="251" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-19.png 600w, https://tech.e3view.com/content/images/2026/01/image-19.png 811w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">ITEM001&#xC774; &#xC81C;&#xD488;&#xC774;&#xC790; &#xC790;&#xC7AC;&#xAC00; &#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</span></figcaption></figure><p>&#xC65C; &#xC774;&#xB7F0; &#xACB0;&#xACFC;&#xAC00; &#xBC1C;&#xC0DD;&#xD560;&#xAE4C;&#xC694;?</p><ul><li>FOREIGN KEY&#xB294;<br>&#x2192; &#x201C;&#xBD80;&#xBAA8;&#xAC00; &#xC874;&#xC7AC;&#xD558;&#xB294;&#xC9C0;&#x201D;&#xB9CC; &#xAC80;&#xC99D;&#xD55C;&#xB2E4;.</li><li>PRIMARY KEY&#xB294;<br>&#x2192; &#x201C;&#xC911;&#xBCF5;&#xB418;&#xC9C0; &#xC54A;&#xB294;&#xC9C0;&#x201D;&#xB9CC; &#xBCF4;&#xC7A5;&#xD55C;&#xB2E4;.</li></ul><p>&#xD558;&#xC9C0;&#xB9CC; DB &#xC81C;&#xC57D;&#xB9CC;&#xC73C;&#xB85C;&#xB294;,</p><ul><li>&#x201C;&#xC774; ITEM_ID&#xAC00; &#xC5B4;&#xB290; Sub Type&#xC5D0; &#xC18D;&#xD558;&#xB294;&#xC9C0;&#x201D;</li><li>&#x201C;&#xC774;&#xBBF8; &#xB2E4;&#xB978; Sub Type&#xC5D0; &#xC18D;&#xD574; &#xC788;&#xB294;&#xC9C0;&#x201D;</li></ul><p>&#xC640; &#xAC19;&#xC740; &#xB3C4;&#xBA54;&#xC778; &#xADDC;&#xCE59;&#xAE4C;&#xC9C0; &#xD45C;&#xD604;&#xD558;&#xAE30;&#xB294; &#xC5B4;&#xB835;&#xC2B5;&#xB2C8;&#xB2E4;.</p><p>&#xBB3C;&#xB860;, &#xD2B8;&#xB9AC;&#xAC70;(trigger)&#xB098; &#xBCF5;&#xC7A1;&#xD55C; &#xC81C;&#xC57D;&#xC870;&#xAC74;&#xC744; &#xAC78;&#xC5B4; &#xC77C;&#xBD80; &#xC81C;&#xC5B4;&#xB294; &#xAC00;&#xB2A5;&#xD558;&#xC9C0;&#xB9CC; &#xC2E4;&#xBB34;&#xC5D0;&#xC11C;&#xB294; &#xBC30;&#xD0C0;&#xC131;&#xC758; &#xCD5C;&#xC885; &#xCC45;&#xC784;&#xC744; <code>&#xBC31;&#xC5D4;&#xB4DC; &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158;</code> &#xC774; &#xAC00;&#xC838;&#xAC00;&#xB294; &#xACBD;&#xC6B0;&#xB2E4; &#xB300;&#xBD80;&#xBD84;&#xC785;&#xB2C8;&#xB2E4;.</p><p>&#xC774;&#xC5D0; &#xB530;&#xB77C; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604; &#xC608;&#xC2DC;&#xB294; <strong>&#xC5B4;&#xB5BB;&#xAC8C; &#xBC30;&#xD0C0;&#xC131;</strong>&#xC744; <strong>&#xC801;&#xC6A9;</strong>&#xD558;&#xB294;&#xC9C0;&#xC758; &#xAD00;&#xC810;&#xC73C;&#xB85C; &#xC791;&#xC131;&#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p><ul><li>&#xBC31;&#xC5D4;&#xB4DC; &#xD658;&#xACBD;<ul><li>java 17</li><li>spring boot 3.5.10</li></ul></li></ul><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-20.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="779" height="713" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-20.png 600w, https://tech.e3view.com/content/images/2026/01/image-20.png 779w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-24.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="770" height="708" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-24.png 600w, https://tech.e3view.com/content/images/2026/01/image-24.png 770w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-23.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="1347" height="408" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-23.png 600w, https://tech.e3view.com/content/images/size/w1000/2026/01/image-23.png 1000w, https://tech.e3view.com/content/images/2026/01/image-23.png 1347w" sizes="(min-width: 720px) 720px"></figure><pre><code>spring.application.name=exclu_demo

#Hikari CP
spring.datasource.max-lifetime=1800000
spring.datasource.maximum-pool-size=20

#JPA
spring.jpa.hibernate.ddl-auto=none

# MS-SQL config
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://127.0.0.1;databaseName=exclusive_test;trustServerCertificate=true
spring.datasource.username=plato
spring.datasource.password=</code></pre><p></p><p>&#xBA3C;&#xC800; DB &#xD14C;&#xC774;&#xBE14; &#xB9E4;&#xD551;&#xD558;&#xB294; &#xCF54;&#xB4DC;&#xB97C; &#xC791;&#xC131;&#xD558;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;.<br><code>entity</code> &#xD3F4;&#xB354;&#xB97C; &#xB9CC;&#xB4E4;&#xACE0; &#xC6B0;&#xB9AC;&#xAC00; &#xC0DD;&#xC131;&#xD55C; &#xD14C;&#xC774;&#xBE14;&#xACFC; &#xB9E4;&#xD551; &#xB418;&#xB294; <code>Item</code>  <code>Product</code>  <code>Material</code> &#xCF54;&#xB4DC;&#xB97C; &#xC791;&#xC131;&#xD569;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-25.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="718" height="191" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-25.png 600w, https://tech.e3view.com/content/images/2026/01/image-25.png 718w"></figure><pre><code class="language-java">package plato.io.exclu_demo.entity;

import jakarta.persistence.*;
import lombok.*;
import org.springframework.data.domain.Persistable;

import java.io.Serializable;

@Entity
@Table(name = &quot;ITEM&quot;)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Item implements Persistable&lt;String&gt;, Serializable {

    @Id
    @Column(name = &quot;ITEM_ID&quot;, length = 50 )
    private String itemId;

    @Enumerated(EnumType.STRING)
    @Column(name = &quot;ITEM_TYPE&quot;, length = 50)
    private ItemType itemType;

    @Column(name = &quot;ITEM_ATT&quot;, length = 50)
    private String itemAtt;

    @Override
    public String getId() {
        return itemId;
    }

    @Override
    public boolean isNew() {
        return false;
    }

    @Setter
    @Transient
    @Builder.Default
    private boolean isNew = false;
}
</code></pre><pre><code class="language-java">package plato.io.exclu_demo.entity;

import jakarta.persistence.*;
import lombok.*;
import org.springframework.data.domain.Persistable;

import java.io.Serializable;

@Entity
@Table(name = &quot;PRODUCT&quot;)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Product implements Persistable&lt;String&gt;, Serializable {
    @Id
    @Column(name = &quot;PRDT_ID&quot;, length = 50)
    private String prdtId;

    @Enumerated(EnumType.STRING)
    @Column(name = &quot;PRDT_TYPE&quot;, length = 50)
    private ItemType prdtType;

    @Column(name = &quot;PRDT_ATT&quot;, length = 50)
    private String prdtAtt;

    // &#xBD80;&#xBAA8;(Item) &#xCC38;&#xC870; - FK
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = &quot;PRDT_ID&quot;, referencedColumnName = &quot;ITEM_ID&quot;, insertable = false, updatable = false)
    private Item item;

    @Transient
    @Builder.Default
    private boolean isNew = false;

    @Override
    public String getId() {
        return prdtId;
    }

    @Override
    public boolean isNew() {
        return isNew;
    }

}
</code></pre><pre><code class="language-java">package plato.io.exclu_demo.entity;

import jakarta.persistence.*;
import lombok.*;
import org.springframework.data.domain.Persistable;

import java.io.Serializable;

@Entity
@Table(name = &quot;MATERIAL&quot;)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Material implements Persistable&lt;String&gt;, Serializable {

    @Id
    @Column(name = &quot;MAT_ID&quot;, length = 50)
    private String matId;

    @Enumerated(EnumType.STRING)
    @Column(name = &quot;MAT_TYPE&quot;, length = 50)
    private ItemType matType;

    @Column(name = &quot;MAT_ATT&quot;, length = 50)
    private String matAtt;

    // &#xBD80;&#xBAA8;(Item) &#xCC38;&#xC870; - FK
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = &quot;MAT_ID&quot;, referencedColumnName = &quot;ITEM_ID&quot;, insertable = false, updatable = false)
    private Item item;

    @Transient
    @Builder.Default
    private boolean isNew = false;

    @Override
    public String getId() {
        return matId;
    }

    @Override
    public boolean isNew() {
        return isNew;
    }
}
</code></pre><p>ItemType enum &#xD074;&#xB798;&#xC2A4;&#xB3C4; &#xC0DD;&#xC131;&#xD574;&#xC90D;&#xB2C8;&#xB2E4;.</p><pre><code class="language-java">package plato.io.exclu_demo.entity;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum ItemType {
    PRODUCT(&quot;P&quot;, &quot;&#xC81C;&#xD488;&quot;),
    MATERIAL(&quot;M&quot;, &quot;&#xC790;&#xC7AC;&quot;);

    private final String prefix;      // ID prefix
    private final String description; // &#xC124;&#xBA85;
}
</code></pre><p></p><p>&#xADF8; &#xB2E4;&#xC74C; repository &#xACC4;&#xCE35;&#xC744; &#xC778;&#xD130;&#xD398;&#xC774;&#xC2A4;&#xB85C; &#xC120;&#xC5B8;&#xD574;&#xC90D;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-26.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="627" height="313" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-26.png 600w, https://tech.e3view.com/content/images/2026/01/image-26.png 627w"></figure><p></p><pre><code class="language-java">package plato.io.exclu_demo.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import plato.io.exclu_demo.entity.Item;

import java.util.List;

@Repository
public interface ItemRepository extends JpaRepository&lt;Item, String&gt; {
}
</code></pre><pre><code class="language-java">package plato.io.exclu_demo.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import plato.io.exclu_demo.entity.Product;

@Repository
public interface ProductRepository extends JpaRepository&lt;Product,String&gt; {
}
</code></pre><pre><code class="language-java">package plato.io.exclu_demo.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import plato.io.exclu_demo.entity.Material;

@Repository
public interface MaterialRepository extends JpaRepository&lt;Material,String&gt; {
}
</code></pre><p></p><p>&#xB2E4;&#xC74C;&#xC73C;&#xB85C; ITEM &#xC0DD;&#xC131;&#xC2DC; &#xD544;&#xC694;&#xD55C; DTO &#xAD6C;&#xC870;&#xB97C; &#xC791;&#xC131;&#xD569;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-30.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="619" height="286" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-30.png 600w, https://tech.e3view.com/content/images/2026/01/image-30.png 619w"></figure><pre><code class="language-java">package plato.io.exclu_demo.dto;

import lombok.*;
import plato.io.exclu_demo.entity.ItemType;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ItemSaveRequest {
    // &#xACF5;&#xD1B5; (ITEM)
    private ItemType itemType;
    private String itemAtt;

    // &#xC81C;&#xD488; (PRODUCT)
    private String prdtAtt;

    // &#xC790;&#xC7AC; (MATERIAL)
    private String matAtt;
}
</code></pre><pre><code class="language-java">package plato.io.exclu_demo.dto;

import lombok.Builder;
import lombok.Getter;
import plato.io.exclu_demo.entity.Item;
import plato.io.exclu_demo.entity.ItemType;

@Getter
@Builder
public class ItemSaveResponse {
    private String itemId;
    private ItemType itemType;
    private String itemAtt;

    public static ItemSaveResponse from(Item item) {
        return ItemSaveResponse.builder()
                .itemId(item.getItemId())
                .itemType(item.getItemType())
                .itemAtt(item.getItemAtt())
                .build();
    }
}
</code></pre><p></p><p>&#xB2E4;&#xC74C;&#xC73C;&#xB85C; &#xC2E4;&#xC81C; ITEM/&#xC81C;&#xD488;/&#xC790;&#xC7AC;&#xB97C; &#xC800;&#xC7A5;, &#xC870;&#xD68C;&#xD558;&#xB294; service &#xACC4;&#xCE35;&#xC785;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-27.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="478" height="215"></figure><pre><code class="language-java">package plato.io.exclu_demo.service;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import plato.io.exclu_demo.dto.ItemSaveRequest;
import plato.io.exclu_demo.dto.ItemSaveResponse;
import plato.io.exclu_demo.entity.Item;
import plato.io.exclu_demo.entity.ItemType;
import plato.io.exclu_demo.entity.Material;
import plato.io.exclu_demo.entity.Product;
import plato.io.exclu_demo.repository.ItemRepository;
import plato.io.exclu_demo.repository.MaterialRepository;
import plato.io.exclu_demo.repository.ProductRepository;


@Service
@RequiredArgsConstructor
@Transactional
public class ItemService {
    private final ItemRepository itemRepository;
    private final ProductRepository productRepository;
    private final MaterialRepository materialRepository;

    /**
     * ITEM_TYPE&#xC5D0; &#xB530;&#xB77C; ID &#xC790;&#xB3D9; &#xC0DD;&#xC131;
     */
    private String generateId(ItemType itemType) {
        long count = switch (itemType) {
            case PRODUCT -&gt; productRepository.count();
            case MATERIAL -&gt; materialRepository.count();
        };
        return itemType.getPrefix() + String.format(&quot;%05d&quot;, count + 1);
    }

    /**
     * &#xD488;&#xBAA9; &#xC800;&#xC7A5; - ITEM_TYPE&#xC5D0; &#xB530;&#xB77C; &#xC11C;&#xBE0C;&#xD0C0;&#xC785; &#xC790;&#xB3D9; &#xC0DD;&#xC131;
     */
    public ItemSaveResponse saveItem(ItemSaveRequest request) {
        ItemType itemType = request.getItemType();

        // 1. ID &#xC790;&#xB3D9; &#xC0DD;&#xC131;
        String itemId = generateId(itemType);

        // 2. Super Type &#xC0DD;&#xC131;
        Item item = Item.builder()
                .itemId(itemId)
                .itemType(itemType)
                .itemAtt(request.getItemAtt())
                .build();
        item.setNew(true);

        // 3. Item &#xBA3C;&#xC800; &#xC800;&#xC7A5;
        itemRepository.save(item);

        // 4. ITEM_TYPE&#xC5D0; &#xB530;&#xB77C; Sub Type &#xC0DD;&#xC131; &#xBC0F; &#xC800;&#xC7A5; (&#xBC30;&#xD0C0;&#xC801;)
        switch (itemType) {
            case PRODUCT -&gt; {
                Product product = Product.builder()
                        .prdtId(itemId)
                        .prdtType(itemType)
                        .prdtAtt(request.getPrdtAtt())
                        .build();
                product.setNew(true);
                productRepository.save(product);
            }
            case MATERIAL -&gt; {
                Material material = Material.builder()
                        .matId(itemId)
                        .matType(itemType)
                        .matAtt(request.getMatAtt())
                        .build();
                material.setNew(true);
                materialRepository.save(material);
            }
        }

        return ItemSaveResponse.from(item);
    }
}
</code></pre><p>&#xB2E4;&#xC74C;&#xC73C;&#xB85C; controller &#xACC4;&#xCE35;&#xC744; &#xB9CC;&#xB4ED;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-31.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="441" height="260"></figure><pre><code class="language-java">package plato.io.exclu_demo.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import plato.io.exclu_demo.dto.ItemSaveRequest;
import plato.io.exclu_demo.dto.ItemSaveResponse;
import plato.io.exclu_demo.service.ItemService;

@RestController
@RequestMapping(&quot;/api/item&quot;)
@RequiredArgsConstructor
public class ItemController {

    private final ItemService itemService;
    
    @PostMapping
    public ResponseEntity&lt;ItemSaveResponse&gt; saveItem(@RequestBody ItemSaveRequest request) {
        ItemSaveResponse response = itemService.saveItem(request);
        return ResponseEntity.ok(response);
    }
}
</code></pre><hr><p>&#xD14C;&#xC2A4;&#xD2B8;&#xB97C; &#xD574;&#xBD05;&#xB2C8;&#xB2E4;.</p><ul><li>&#xC81C;&#xD488; &#xC800;&#xC7A5;</li></ul><p><code>POST</code> <a href="http://localhost:8080/api/item?ref=tech.e3view.com"><code>http://localhost:8080/api/item</code></a></p><pre><code class="language-json">{
    &quot;itemType&quot;: &quot;PRODUCT&quot;,
    &quot;itemAtt&quot;: &quot;COMMON&quot;,
    &quot;prdtAtt&quot;: &quot;PRDT&quot;
}</code></pre><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-32.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="1057" height="461" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-32.png 600w, https://tech.e3view.com/content/images/size/w1000/2026/01/image-32.png 1000w, https://tech.e3view.com/content/images/2026/01/image-32.png 1057w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-33.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="907" height="377" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-33.png 600w, https://tech.e3view.com/content/images/2026/01/image-33.png 907w" sizes="(min-width: 720px) 720px"></figure><ul><li>&#xC790;&#xC7AC; &#xC800;&#xC7A5;</li></ul><p><code>POST</code> <a href="http://localhost:8080/api/item?ref=tech.e3view.com"><code>http://localhost:8080/api/item</code></a></p><pre><code class="language-json">{
    &quot;itemType&quot;: &quot;MATERIAL&quot;,
    &quot;itemAtt&quot;: &quot;COMMON&quot;,
    &quot;matAtt&quot;: &quot;MAT&quot;
}</code></pre><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-34.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="1019" height="464" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-34.png 600w, https://tech.e3view.com/content/images/size/w1000/2026/01/image-34.png 1000w, https://tech.e3view.com/content/images/2026/01/image-34.png 1019w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2026/01/image-35.png" class="kg-image" alt="&#xBC30;&#xD0C0;&#xC801; &#xC11C;&#xBE0C;&#xD0C0;&#xC785;(Exlusive Subtype) &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;&#xC640; &#xBC31;&#xC5D4;&#xB4DC; &#xAD6C;&#xD604;" loading="lazy" width="778" height="370" srcset="https://tech.e3view.com/content/images/size/w600/2026/01/image-35.png 600w, https://tech.e3view.com/content/images/2026/01/image-35.png 778w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[A2A 메모리 레이어: AI 에이전트를 위한 공유 두뇌 구축하기]]></title><description><![CDATA[<h2 id="%EB%AA%A8%EB%93%A0-%EA%B2%83%EC%9D%98-%EC%8B%9C%EC%9E%91%EC%9D%B4-%EB%90%9C-%EB%AC%B8%EC%A0%9C">&#xBAA8;&#xB4E0; &#xAC83;&#xC758; &#xC2DC;&#xC791;&#xC774; &#xB41C; &#xBB38;&#xC81C;</h2><p>&#xC6B0;&#xB9AC;&#xB97C; &#xACC4;&#xC18D; &#xAD34;&#xB86D;&#xD788;&#xB358; &#xAC83;&#xC774; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;:&#xA0;<strong>&#xC65C; AI &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xB300;&#xD654;&#xAC00; &#xB05D;&#xB098;&#xB294; &#xC21C;&#xAC04; &#xBAA8;&#xB4E0; &#xAC83;&#xC744; &#xC78A;&#xC5B4;&#xBC84;&#xB9B4;</strong></p>]]></description><link>https://tech.e3view.com/a2a-memori-reieo-ai-eijeonteureul-wihan-gongyu-dunoe-gucughagi/</link><guid isPermaLink="false">696519c7f4b84ffe438370f0</guid><category><![CDATA[3view]]></category><category><![CDATA[쓰리뷰]]></category><category><![CDATA[esg]]></category><category><![CDATA[Ai]]></category><category><![CDATA[Ai Agent]]></category><dc:creator><![CDATA[Sardor Madaminov]]></dc:creator><pubDate>Mon, 12 Jan 2026 16:00:46 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2026/01/Screenshot-2026-01-13-at-1.04.02-AM.png" medium="image"/><content:encoded><![CDATA[<h2 id="%EB%AA%A8%EB%93%A0-%EA%B2%83%EC%9D%98-%EC%8B%9C%EC%9E%91%EC%9D%B4-%EB%90%9C-%EB%AC%B8%EC%A0%9C">&#xBAA8;&#xB4E0; &#xAC83;&#xC758; &#xC2DC;&#xC791;&#xC774; &#xB41C; &#xBB38;&#xC81C;</h2><img src="https://tech.e3view.com/content/images/2026/01/Screenshot-2026-01-13-at-1.04.02-AM.png" alt="A2A &#xBA54;&#xBAA8;&#xB9AC; &#xB808;&#xC774;&#xC5B4;: AI &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB97C; &#xC704;&#xD55C; &#xACF5;&#xC720; &#xB450;&#xB1CC; &#xAD6C;&#xCD95;&#xD558;&#xAE30;"><p>&#xC6B0;&#xB9AC;&#xB97C; &#xACC4;&#xC18D; &#xAD34;&#xB86D;&#xD788;&#xB358; &#xAC83;&#xC774; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;:&#xA0;<strong>&#xC65C; AI &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xB300;&#xD654;&#xAC00; &#xB05D;&#xB098;&#xB294; &#xC21C;&#xAC04; &#xBAA8;&#xB4E0; &#xAC83;&#xC744; &#xC78A;&#xC5B4;&#xBC84;&#xB9B4;&#xAE4C;&#xC694;?</strong></p><p>&#xD55C;&#xBC88; &#xC0DD;&#xAC01;&#xD574;&#xBCF4;&#xC138;&#xC694;. &#xCC57;&#xBD07;&#xC5D0;&#xAC8C; &#xC804;&#xD654;&#xBCF4;&#xB2E4; &#xC774;&#xBA54;&#xC77C;&#xC744; &#xC120;&#xD638;&#xD55C;&#xB2E4;&#xACE0; &#xB9D0;&#xD569;&#xB2C8;&#xB2E4;. &#xB2E4;&#xC74C; &#xC138;&#xC158;&#xC5D0;&#xC11C;&#xB294;&#xC694;? &#xB9C8;&#xCE58; &#xCC98;&#xC74C; &#xB9CC;&#xB09C; &#xAC83;&#xCC98;&#xB7FC; &#xD589;&#xB3D9;&#xD569;&#xB2C8;&#xB2E4;. &#xD55C; &#xC0C1;&#xB2F4;&#xC6D0;&#xC5D0;&#xAC8C; &#xC8FC;&#xBB38; &#xBB38;&#xC81C;&#xB97C; &#xC124;&#xBA85;&#xD558;&#xACE0;, &#xB2E4;&#xB978; &#xC0C1;&#xB2F4;&#xC6D0;&#xC5D0;&#xAC8C; &#xC5F0;&#xACB0;&#xB418;&#xBA74;, &#xAC11;&#xC790;&#xAE30; &#xCC98;&#xC74C;&#xBD80;&#xD130; &#xB2E4;&#xC2DC; &#xC2DC;&#xC791;&#xD574;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;.</p><p>&#xC6B0;&#xB9AC; &#xBAA8;&#xB450; &#xACAA;&#xC5B4;&#xBCF8; &#xC77C;&#xC785;&#xB2C8;&#xB2E4;. &#xC0AC;&#xC6A9;&#xC790;&#xB85C;&#xC11C; &#xB2F5;&#xB2F5;&#xD558;&#xACE0;, &#xC194;&#xC9C1;&#xD788; &#xC5D4;&#xC9C0;&#xB2C8;&#xC5B4;&#xB85C;&#xC11C;&#xB294; &#xB9E4;&#xB825;&#xC801;&#xC778; &#xBB38;&#xC81C;&#xC785;&#xB2C8;&#xB2E4;.</p><p>&#xADF8;&#xB798;&#xC11C; &#xC6B0;&#xB9AC;&#xB294; &#xC2A4;&#xC2A4;&#xB85C;&#xC5D0;&#xAC8C; &#xBB3C;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;:&#xA0;<em>&#xB9CC;&#xC57D; AI &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xC2E4;&#xC81C;&#xB85C; &#xAE30;&#xC5B5;&#xD560; &#xC218; &#xC788;&#xB2E4;&#xBA74;? &#xADF8;&#xB9AC;&#xACE0; &#xB2E8;&#xC21C;&#xD788; &#xAE30;&#xC5B5;&#xD558;&#xB294; &#xAC83;&#xC744; &#xB118;&#xC5B4;&#xC11C;, &#xC11C;&#xB85C; &#xBC30;&#xC6B4; &#xAC83;&#xC744; &#xACF5;&#xC720;&#xD560; &#xC218; &#xC788;&#xB2E4;&#xBA74;?</em></p><p>&#xC774;&#xAC83;&#xC774; A2A &#xBA54;&#xBAA8;&#xB9AC; &#xB808;&#xC774;&#xC5B4;&#xAC00; &#xD0C4;&#xC0DD;&#xD55C; &#xBC30;&#xACBD;&#xC785;&#xB2C8;&#xB2E4;.</p><hr><h2 id="%EC%9E%A0%EA%B9%90-%EC%A0%95%ED%99%95%ED%9E%88-%EB%AC%B4%EC%97%87%EC%9D%84-%EB%A7%8C%EB%93%9C%EB%8A%94-%EA%B1%B4%EA%B0%80%EC%9A%94">&#xC7A0;&#xAE50;, &#xC815;&#xD655;&#xD788; &#xBB34;&#xC5C7;&#xC744; &#xB9CC;&#xB4DC;&#xB294; &#xAC74;&#xAC00;&#xC694;?</h2><p>&#xAE30;&#xC220;&#xC801;&#xC778; &#xB0B4;&#xC6A9;&#xC73C;&#xB85C; &#xB4E4;&#xC5B4;&#xAC00;&#xAE30; &#xC804;&#xC5D0;, &#xC774; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xAC00; &#xC2E4;&#xC81C;&#xB85C; &#xBB34;&#xC5C7;&#xC744; &#xD558;&#xB294;&#xC9C0; &#xBA85;&#xD655;&#xD788; &#xD574;&#xBD05;&#xC2DC;&#xB2E4;:</p><p><strong>A2A &#xBA54;&#xBAA8;&#xB9AC; &#xB808;&#xC774;&#xC5B4;&#xB294; &#xC5EC;&#xB7EC; AI &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xB2E4;&#xC74C;&#xC744; &#xD560; &#xC218; &#xC788;&#xAC8C; &#xD558;&#xB294; &#xACF5;&#xC720; &#xBA54;&#xBAA8;&#xB9AC; &#xC2DC;&#xC2A4;&#xD15C;&#xC785;&#xB2C8;&#xB2E4;:</strong></p><ul><li>&#xB300;&#xD654;&#xB97C; &#xB118;&#xC5B4;&#xC11C; &#xC0AC;&#xC2E4;&#xC744; &#xAE30;&#xC5B5; (&#xB2E8;&#xC77C; &#xCC44;&#xD305; &#xB0B4;&#xC5D0;&#xC11C;&#xB9CC;&#xC774; &#xC544;&#xB2CC;)</li><li>&#xC2E4;&#xC2DC;&#xAC04;&#xC73C;&#xB85C; &#xC11C;&#xB85C; &#xC9C0;&#xC2DD;&#xC744; &#xACF5;&#xC720;</li><li>&#xC804;&#xBB38; &#xC9C0;&#xC2DD;&#xC744; &#xACB0;&#xD569;&#xD558;&#xC5EC; &#xBCF5;&#xC7A1;&#xD55C; &#xC791;&#xC5C5;&#xC5D0; &#xD611;&#xB825;</li><li>&#xC218;&#xB3D9;&#xC73C;&#xB85C; &#xC815;&#xBCF4;&#xB97C; &#xBCF5;&#xC0AC;&#xD558;&#xC9C0; &#xC54A;&#xACE0;&#xB3C4; &#xB3D9;&#xAE30;&#xD654; &#xC720;&#xC9C0;</li></ul><p>&#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC740; &#xACE0;&#xAC1D; &#xC11C;&#xBE44;&#xC2A4; &#xD300;&#xC744; &#xC0C1;&#xC0C1;&#xD574;&#xBCF4;&#xC138;&#xC694;:</p><ul><li><strong>Alex</strong>&#xA0;(&#xCF54;&#xB514;&#xB124;&#xC774;&#xD130;)&#xB294; &#xBB38;&#xC81C;&#xB97C; &#xB77C;&#xC6B0;&#xD305;&#xD558;&#xB294; &#xBC29;&#xBC95;&#xC744; &#xC54C;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;</li><li><strong>Sam</strong>&#xA0;(&#xC8FC;&#xBB38; &#xC804;&#xBB38;&#xAC00;)&#xC740; &#xBC30;&#xC1A1;&#xACFC; &#xD658;&#xBD88;&#xC5D0; &#xB300;&#xD574; &#xBAA8;&#xB4E0; &#xAC83;&#xC744; &#xC54C;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;</li><li><strong>Jordan</strong>&#xA0;(&#xAE30;&#xC220; &#xC9C0;&#xC6D0;)&#xC740; &#xBAA8;&#xB4E0; &#xC2DC;&#xC2A4;&#xD15C; &#xBB38;&#xC81C;&#xB97C; &#xD574;&#xACB0;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;</li></ul><p>&#xC774;&#xC81C; &#xC774;&#xB4E4;&#xC774; &#xBAA8;&#xB450; &#xAC19;&#xC740; &#xB178;&#xD2B8;&#xBD81;&#xC744; &#xACF5;&#xC720;&#xD55C;&#xB2E4;&#xACE0; &#xC0C1;&#xC0C1;&#xD574;&#xBCF4;&#xC138;&#xC694;. Sam&#xC774; &#xACE0;&#xAC1D; #12345&#xAC00; &#xC774;&#xBA54;&#xC77C;&#xC744; &#xC120;&#xD638;&#xD55C;&#xB2E4;&#xB294; &#xAC83;&#xC744; &#xC54C;&#xAC8C; &#xB418;&#xBA74;, Alex&#xC640; Jordan&#xB3C4; &#xC989;&#xC2DC; &#xC54C;&#xAC8C; &#xB429;&#xB2C8;&#xB2E4;. &#xC774;&#xAC83;&#xC774; &#xC6B0;&#xB9AC;&#xAC00; &#xB9CC;&#xB4E0; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;.</p><hr><h2 id="%EA%B7%B8%EB%9F%B0%EB%8D%B0-%EC%99%9C-%EC%9D%B4%EA%B1%B8-%EB%A7%8C%EB%93%A4%EC%97%88%EB%82%98%EC%9A%94-llm%EC%97%90%EB%8A%94-%EC%9D%B4%EB%AF%B8-%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B0%80-%EC%9E%88%EC%A7%80-%EC%95%8A%EB%82%98%EC%9A%94">&#xADF8;&#xB7F0;&#xB370; &#xC65C; &#xC774;&#xAC78; &#xB9CC;&#xB4E4;&#xC5C8;&#xB098;&#xC694;? LLM&#xC5D0;&#xB294; &#xC774;&#xBBF8; &#xBA54;&#xBAA8;&#xB9AC;&#xAC00; &#xC788;&#xC9C0; &#xC54A;&#xB098;&#xC694;?</h2><p>&#xC88B;&#xC740; &#xC9C8;&#xBB38;&#xC785;&#xB2C8;&#xB2E4;. &#xADF8;&#xB9AC;&#xACE0; &#xADF8; &#xB2F5;&#xC740; LLM&#xC774; &#xC5B4;&#xB5BB;&#xAC8C; &#xC791;&#xB3D9;&#xD558;&#xB294;&#xC9C0;&#xC5D0; &#xB300;&#xD55C; &#xADFC;&#xBCF8;&#xC801;&#xC778; &#xAC83;&#xC744; &#xB4DC;&#xB7EC;&#xB0C5;&#xB2C8;&#xB2E4;.</p><p><strong>LLM&#xC740; &#xC0C1;&#xD0DC;&#xAC00; &#xC5C6;&#xC2B5;&#xB2C8;&#xB2E4;(stateless).</strong>&#xA0;&#xBA54;&#xC2DC;&#xC9C0;&#xB97C; &#xBCF4;&#xB0BC; &#xB54C;&#xB9C8;&#xB2E4; &#xBAA8;&#xB378;&#xC740; &#xC0C8;&#xB86D;&#xAC8C; &#xC2DC;&#xC791;&#xD569;&#xB2C8;&#xB2E4;. &#xBA85;&#xC2DC;&#xC801;&#xC73C;&#xB85C; &#xC54C;&#xB824;&#xC8FC;&#xC9C0; &#xC54A;&#xB294; &#xD55C; &#xC774;&#xC804; &#xB300;&#xD654;&#xC5D0;&#xC11C; &#xBB34;&#xC2A8; &#xC77C;&#xC774; &#xC788;&#xC5C8;&#xB294;&#xC9C0; &#xC804;&#xD600; &#xBAA8;&#xB985;&#xB2C8;&#xB2E4;. &#xD754;&#xD788; &#xB4E3;&#xB294; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC708;&#xB3C4;&#xC6B0;? &#xADF8;&#xAC83;&#xC740; &#xBA54;&#xBAA8;&#xB9AC;&#xAC00; &#xC544;&#xB2D9;&#xB2C8;&#xB2E4;&#x2014;&#xB9E4; &#xC138;&#xC158;&#xC774; &#xB05D;&#xB098;&#xBA74; &#xC9C0;&#xC6CC;&#xC9C0;&#xB294; &#xBA54;&#xBAA8;&#xC7A5;&#xC5D0; &#xB354; &#xAC00;&#xAE5D;&#xC2B5;&#xB2C8;&#xB2E4;.</p><p>Google&#xC758; &quot;Context Engineering&quot; &#xBC31;&#xC11C;(2025&#xB144; 11&#xC6D4;)&#xB294; &#xC774; &#xBB38;&#xC81C;&#xB97C; &#xC544;&#xB984;&#xB2F5;&#xAC8C; &#xC815;&#xB9AC;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xADF8;&#xB4E4;&#xC740; &#xB2E4;&#xC74C;&#xC744; &#xAD6C;&#xBD84;&#xD569;&#xB2C8;&#xB2E4;:</p><ul><li><strong>&#xC138;&#xC158;(Sessions)</strong>: &#xB2E8;&#xC77C; &#xB300;&#xD654;&#xB97C; &#xC704;&#xD55C; &#xC784;&#xC2DC; &#xBA54;&#xBAA8;&#xC7A5;</li><li><strong>&#xBA54;&#xBAA8;&#xB9AC;(Memory)</strong>: &#xC138;&#xC158;&#xC744; &#xB118;&#xC5B4; &#xC9C0;&#xC18D;&#xB418;&#xB294; &#xC601;&#xAD6C;&#xC801;&#xC778; &#xC9C0;&#xC2DD;</li></ul><p>&#xB300;&#xBD80;&#xBD84;&#xC758; &#xCC57;&#xBD07;&#xC740; &#xC138;&#xC158;&#xB9CC; &#xCC98;&#xB9AC;&#xD569;&#xB2C8;&#xB2E4;. &#xC6B0;&#xB9AC;&#xB294; &#xB458; &#xB2E4; &#xB2E4;&#xB8E8;&#xACE0; &#xC2F6;&#xC5C8;&#xACE0;&#x2014;&#xC5EC;&#xAE30;&#xC5D0; &#xC138; &#xBC88;&#xC9F8; &#xCC28;&#xC6D0;&#xC744; &#xCD94;&#xAC00;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;:&#xA0;<strong>&#xC5EC;&#xB7EC; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xAC04;&#xC5D0; &#xBA54;&#xBAA8;&#xB9AC;&#xB97C; &#xACF5;&#xC720;&#xD558;&#xB294; &#xAC83;</strong>.</p><hr><h2 id="%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EC%9D%B4%EA%B2%83%EC%9D%80-%EC%8B%A4%EC%A0%9C%EB%A1%9C-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9E%91%EB%8F%99%ED%95%98%EB%82%98%EC%9A%94">&#xC544;&#xD0A4;&#xD14D;&#xCC98;: &#xC774;&#xAC83;&#xC740; &#xC2E4;&#xC81C;&#xB85C; &#xC5B4;&#xB5BB;&#xAC8C; &#xC791;&#xB3D9;&#xD558;&#xB098;&#xC694;?</h2><p>&#xC790;, &#xC774;&#xC81C; &#xD765;&#xBBF8;&#xB85C;&#xC6B4; &#xBD80;&#xBD84;&#xC73C;&#xB85C; &#xB4E4;&#xC5B4;&#xAC00;&#xBD05;&#xC2DC;&#xB2E4;. AI &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB97C; &#xC704;&#xD55C; &#xACF5;&#xC720; &#xB450;&#xB1CC;&#xB97C; &#xC5B4;&#xB5BB;&#xAC8C; &#xAD6C;&#xCD95;&#xD560;&#xAE4C;&#xC694;?</p><h3 id="%EC%A0%84%EC%B2%B4-%EA%B7%B8%EB%A6%BC">&#xC804;&#xCCB4; &#xADF8;&#xB9BC;</h3><pre><code>&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;                    &#xC0AC;&#xC6A9;&#xC790;&#xAC00; &#xBCF4;&#xB294; &#xAC83; (&#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC;)                   &#x2502;
&#x2502;         &#xD06C;&#xAE30; &#xC870;&#xC808; &#xAC00;&#xB2A5;&#xD55C; &#xD328;&#xB110;&#xC774; &#xC788;&#xB294; Next.js &#xC778;&#xD130;&#xD398;&#xC774;&#xC2A4;               &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                           &#x2502;
                           &#x25BC;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;                      API &#xAC8C;&#xC774;&#xD2B8;&#xC6E8;&#xC774;                            &#x2502;
&#x2502;               Flask REST API (15&#xAC1C; &#xC5D4;&#xB4DC;&#xD3EC;&#xC778;&#xD2B8;)                  &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                           &#x2502;
        &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x253C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
        &#x25BC;                  &#x25BC;                  &#x25BC;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;   &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;   &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;    &#xC138;&#xC158;      &#x2502;   &#x2502;    &#xBA54;&#xBAA8;&#xB9AC;     &#x2502;   &#x2502;  A2A &#xBE0C;&#xB9BF;&#xC9C0;      &#x2502;
&#x2502;   &#xB9E4;&#xB2C8;&#xC800;     &#x2502;   &#x2502;    &#xB9E4;&#xB2C8;&#xC800;     &#x2502;   &#x2502;   &#xD504;&#xB85C;&#xD1A0;&#xCF5C;        &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;   &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;   &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
        &#x2502;                  &#x2502;                  &#x2502;
        &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x253C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                           &#x25BC;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;                       &#xACF5;&#xC720; &#xB450;&#xB1CC;                               &#x2502;
&#x2502;       &#xBCA1;&#xD130; &#xC2A4;&#xD1A0;&#xC5B4; + &#xBA54;&#xBAA8;&#xB9AC; &#xC720;&#xD615; + &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xAC04; &#xB3D9;&#xAE30;&#xD654;                  &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                           &#x2502;
                           &#x25BC;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;                   Ollama + phi4-mini                        &#x2502;
&#x2502;                 128k &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC708;&#xB3C4;&#xC6B0; LLM                        &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
</code></pre><h3 id="%EC%99%9C-%EC%9D%B4%EB%9F%B0-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8%EB%93%A4%EC%9D%B8%EA%B0%80%EC%9A%94">&#xC65C; &#xC774;&#xB7F0; &#xCEF4;&#xD3EC;&#xB10C;&#xD2B8;&#xB4E4;&#xC778;&#xAC00;&#xC694;?</h3><p><strong>&#xC138;&#xC158; &#xB9E4;&#xB2C8;&#xC800;</strong>&#xA0;&#x2014;&#xA0;<em>&quot;&#xBC29;&#xAE08; &#xBB34;&#xC2A8; &#xC774;&#xC57C;&#xAE30;&#xB97C; &#xD588;&#xC9C0;?&quot;</em></p><p>&#xB2E8;&#xAE30;&#xC801;&#xC778; &#xAC83;&#xB4E4;&#xC744; &#xCC98;&#xB9AC;&#xD569;&#xB2C8;&#xB2E4;. &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xC640; &#xCC44;&#xD305;&#xD560; &#xB54C;, &#xC138;&#xC158; &#xB9E4;&#xB2C8;&#xC800;&#xB294; &#xB300;&#xD654;&#xB97C; &#xCD94;&#xC801;&#xD558;&#xACE0;, &#xD1A0;&#xD070;&#xC744; &#xC138;&#xACE0;(128k &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC708;&#xB3C4;&#xC6B0;&#xB3C4; &#xBB34;&#xD55C;&#xD558;&#xC9C0; &#xC54A;&#xC73C;&#xB2C8;&#xAE4C;&#xC694;), &#xB0B4;&#xC6A9;&#xC774; &#xB108;&#xBB34; &#xAE38;&#xC5B4;&#xC9C0;&#xBA74; &#xBB34;&#xC5C7;&#xC744; &#xC720;&#xC9C0;&#xD560;&#xC9C0; &#xACB0;&#xC815;&#xD569;&#xB2C8;&#xB2E4;.</p><p><strong>&#xBA54;&#xBAA8;&#xB9AC; &#xB9E4;&#xB2C8;&#xC800;</strong>&#xA0;&#x2014;&#xA0;<em>&quot;&#xC601;&#xC6D0;&#xD788; &#xAE30;&#xC5B5;&#xD574;&#xC57C; &#xD560; &#xAC83;&#xC740; &#xBB34;&#xC5C7;&#xC778;&#xAC00;?&quot;</em></p><p>&#xB300;&#xD654;&#xC758; &#xBAA8;&#xB4E0; &#xAC83;&#xC774; &#xAE30;&#xC5B5;&#xD560; &#xAC00;&#xCE58;&#xAC00; &#xC788;&#xB294; &#xAC83;&#xC740; &#xC544;&#xB2D9;&#xB2C8;&#xB2E4;. &#xBA54;&#xBAA8;&#xB9AC; &#xB9E4;&#xB2C8;&#xC800;&#xB294; &#xC911;&#xC694;&#xD55C; &#xBD80;&#xBD84;&#x2014;&#xACE0;&#xAC1D; &#xC120;&#xD638;&#xB3C4;, &#xD574;&#xACB0;&#xB41C; &#xBB38;&#xC81C;, &#xD559;&#xC2B5;&#xB41C; &#xC808;&#xCC28;&#x2014;&#xC744; &#xCD94;&#xCD9C;&#xD558;&#xACE0; &#xC7A5;&#xAE30;&#xAC04; &#xC800;&#xC7A5;&#xD569;&#xB2C8;&#xB2E4;.</p><p><strong>A2A &#xBE0C;&#xB9BF;&#xC9C0;</strong>&#xA0;&#x2014;&#xA0;<em>&quot;&#xB2E4;&#xB978; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB4E4;&#xC544;, &#xB108;&#xD76C;&#xB3C4; &#xC774;&#xAC70; &#xC54C;&#xC544;&#xC57C; &#xD574;.&quot;</em></p><p>&#xC774;&#xAC83;&#xC774; &#xB9C8;&#xBC95;&#xC758; &#xC18C;&#xC2A4;&#xC785;&#xB2C8;&#xB2E4;. &#xD55C; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xAC00;&#xCE58; &#xC788;&#xB294; &#xAC83;&#xC744; &#xBC30;&#xC6B0;&#xBA74;, A2A &#xBE0C;&#xB9BF;&#xC9C0;&#xB294; &#xADF8;&#xAC83;&#xC774; &#xD544;&#xC694;&#xD560; &#xC218; &#xC788;&#xB294; &#xB2E4;&#xB978; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB4E4;&#xC5D0;&#xAC8C; &#xC804;&#xD30C;&#xD569;&#xB2C8;&#xB2E4;. &#xD300;&#xC758; &#xB2E8;&#xCCB4; &#xCC44;&#xD305;&#xACFC; &#xAC19;&#xC9C0;&#xB9CC;, &#xC9C0;&#xC2DD;&#xC744; &#xC704;&#xD55C; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;.</p><hr><h2 id="%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%9C%A0%ED%98%95-%EB%AA%A8%EB%93%A0-%EA%B8%B0%EC%96%B5%EC%9D%B4-%EB%8F%99%EB%93%B1%ED%95%98%EA%B2%8C-%EB%A7%8C%EB%93%A4%EC%96%B4%EC%A7%80%EC%A7%80%EB%8A%94-%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4">&#xBA54;&#xBAA8;&#xB9AC; &#xC720;&#xD615;: &#xBAA8;&#xB4E0; &#xAE30;&#xC5B5;&#xC774; &#xB3D9;&#xB4F1;&#xD558;&#xAC8C; &#xB9CC;&#xB4E4;&#xC5B4;&#xC9C0;&#xC9C0;&#xB294; &#xC54A;&#xC2B5;&#xB2C8;&#xB2E4;</h2><p>&#xC778;&#xC9C0; &#xACFC;&#xD559;&#xC5D0;&#xC11C; &#xBC30;&#xC6B4; &#xAC83;&#xC774; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;: &#xC778;&#xAC04;&#xC5D0;&#xAC8C;&#xB294; &#xB2E4;&#xC591;&#xD55C; &#xC720;&#xD615;&#xC758; &#xAE30;&#xC5B5;&#xC774; &#xC788;&#xACE0;, &#xC6B0;&#xB9AC; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB3C4; &#xADF8;&#xB798;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;.</p><h3 id="%EC%84%A0%EC%96%B8%EC%A0%81-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%82%B4%EA%B0%80-%EC%95%84%EB%8A%94-%EA%B2%83%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80">&#xC120;&#xC5B8;&#xC801; &#xBA54;&#xBAA8;&#xB9AC;: &quot;&#xB0B4;&#xAC00; &#xC544;&#xB294; &#xAC83;&#xC740; &#xBB34;&#xC5C7;&#xC778;&#xAC00;?&quot;</h3><p>&#xC774;&#xAC83;&#xB4E4;&#xC740; &#xC0AC;&#xC2E4;&#xC785;&#xB2C8;&#xB2E4;. &#xC815;&#xC801;&#xC778; &#xC9C0;&#xC2DD;. &#xB9E5;&#xB77D;&#xACFC; &#xAD00;&#xACC4;&#xC5C6;&#xC774; &#xCC38;&#xC778; &#xAC83;&#xB4E4;.</p>
<!--kg-card-begin: html-->
<table data-line="123" class="code-line" dir="auto" style="border-collapse: collapse; margin-bottom: 0.7em; position: relative; color: rgb(204, 204, 204); font-family: -apple-system, " system-ui", "segoe wpc", ui", system-ui, ubuntu, "droid sans", sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: font-variant-caps: font-weight: 400; letter-spacing: orphans: 2; text-align: start; text-transform: none; widows: word-spacing: 0px; -webkit-text-stroke-width: white-space: text-decoration-thickness: initial; text-decoration-style: text-decoration-color: initial;"><thead data-line="123" class="code-line" dir="auto" style="position: relative;"><tr data-line="123" class="code-line" dir="auto" style="position: relative;"><th style="text-align: left; border-bottom: 1px solid rgba(255, 255, 255, 0.69); padding: 5px 10px; border-top-color: rgba(255, 255, 255, 0.69); border-right-color: rgba(255, 255, 255, 0.69); border-left-color: rgba(255, 255, 255, 0.69);">&#xD558;&#xC704; &#xC720;&#xD615;</th><th style="text-align: left; border-bottom: 1px solid rgba(255, 255, 255, 0.69); padding: 5px 10px; border-top-color: rgba(255, 255, 255, 0.69); border-right-color: rgba(255, 255, 255, 0.69); border-left-color: rgba(255, 255, 255, 0.69);">&#xC800;&#xC7A5;&#xD558;&#xB294; &#xAC83;</th><th style="text-align: left; border-bottom: 1px solid rgba(255, 255, 255, 0.69); padding: 5px 10px; border-top-color: rgba(255, 255, 255, 0.69); border-right-color: rgba(255, 255, 255, 0.69); border-left-color: rgba(255, 255, 255, 0.69);">&#xC608;&#xC2DC;</th></tr></thead><tbody data-line="125" class="code-line" dir="auto" style="position: relative;"><tr data-line="125" class="code-line" dir="auto" style="position: relative;"><td style="padding: 5px 10px; border-color: rgba(255, 255, 255, 0.18);"><strong>&#xC758;&#xBBF8;&#xC801;(Semantic)</strong></td><td style="padding: 5px 10px; border-color: rgba(255, 255, 255, 0.18);">&#xC77C;&#xBC18; &#xC9C0;&#xC2DD;</td><td style="padding: 5px 10px; border-color: rgba(255, 255, 255, 0.18);">&quot;&#xD504;&#xB9AC;&#xBBF8;&#xC5C4; &#xACE0;&#xAC1D;&#xC740; 48&#xC2DC;&#xAC04; &#xD658;&#xBD88;&#xC744; &#xBC1B;&#xC2B5;&#xB2C8;&#xB2E4;&quot;</td></tr><tr data-line="126" class="code-line" dir="auto" style="position: relative;"><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);"><strong>&#xAC1C;&#xCCB4;(Entity)</strong></td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&#xD2B9;&#xC815; &#xB300;&#xC0C1;&#xC5D0; &#xB300;&#xD55C; &#xC0AC;&#xC2E4;</td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&quot;&#xACE0;&#xAC1D; #12345&#xB294; &#xC774;&#xBA54;&#xC77C;&#xC744; &#xC120;&#xD638;&#xD569;&#xB2C8;&#xB2E4;&quot;</td></tr><tr data-line="127" class="code-line" dir="auto" style="position: relative;"><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);"><strong>&#xC77C;&#xD654;&#xC801;(Episodic)</strong></td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&#xD2B9;&#xC815; &#xC0AC;&#xAC74;</td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&quot;1&#xC6D4; 5&#xC77C;&#xC5D0; John&#xC758; &#xBC30;&#xC1A1; &#xBB38;&#xC81C;&#xB97C; &#xD574;&#xACB0;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;&quot;</td></tr></tbody></table>
<!--kg-card-end: html-->
<h3 id="%EC%A0%88%EC%B0%A8%EC%A0%81-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%98%EB%8A%94-%EA%B1%B0%EC%A7%80">&#xC808;&#xCC28;&#xC801; &#xBA54;&#xBAA8;&#xB9AC;: &quot;&#xC5B4;&#xB5BB;&#xAC8C; &#xD558;&#xB294; &#xAC70;&#xC9C0;?&quot;</h3><p>&#xC774;&#xAC83;&#xB4E4;&#xC740; &#xAE30;&#xC220;&#xACFC; &#xC6CC;&#xD06C;&#xD50C;&#xB85C;&#xC6B0;&#xC785;&#xB2C8;&#xB2E4;. &#xC791;&#xC5C5;&#xC744; &#xC218;&#xD589;&#xD558;&#xB294; &#xBC29;&#xBC95;&#xC5D0; &#xB300;&#xD55C; &#xB2E8;&#xACC4;&#xBCC4; &#xC9C0;&#xC2DD;.</p>
<!--kg-card-begin: html-->
<table data-line="133" class="code-line" dir="auto" style="border-collapse: collapse; margin-bottom: 0.7em; position: relative; color: rgb(204, 204, 204); font-family: -apple-system, " system-ui", "segoe wpc", ui", system-ui, ubuntu, "droid sans", sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: font-variant-caps: font-weight: 400; letter-spacing: orphans: 2; text-align: start; text-transform: none; widows: word-spacing: 0px; -webkit-text-stroke-width: white-space: text-decoration-thickness: initial; text-decoration-style: text-decoration-color: initial;"><thead data-line="133" class="code-line" dir="auto" style="position: relative;"><tr data-line="133" class="code-line" dir="auto" style="position: relative;"><th style="text-align: left; border-bottom: 1px solid rgba(255, 255, 255, 0.69); padding: 5px 10px; border-top-color: rgba(255, 255, 255, 0.69); border-right-color: rgba(255, 255, 255, 0.69); border-left-color: rgba(255, 255, 255, 0.69);">&#xD558;&#xC704; &#xC720;&#xD615;</th><th style="text-align: left; border-bottom: 1px solid rgba(255, 255, 255, 0.69); padding: 5px 10px; border-top-color: rgba(255, 255, 255, 0.69); border-right-color: rgba(255, 255, 255, 0.69); border-left-color: rgba(255, 255, 255, 0.69);">&#xC800;&#xC7A5;&#xD558;&#xB294; &#xAC83;</th><th style="text-align: left; border-bottom: 1px solid rgba(255, 255, 255, 0.69); padding: 5px 10px; border-top-color: rgba(255, 255, 255, 0.69); border-right-color: rgba(255, 255, 255, 0.69); border-left-color: rgba(255, 255, 255, 0.69);">&#xC608;&#xC2DC;</th></tr></thead><tbody data-line="135" class="code-line" dir="auto" style="position: relative;"><tr data-line="135" class="code-line" dir="auto" style="position: relative;"><td style="padding: 5px 10px; border-color: rgba(255, 255, 255, 0.18);"><strong>&#xAE30;&#xC220;(Skill)</strong></td><td style="padding: 5px 10px; border-color: rgba(255, 255, 255, 0.18);">&#xB3C4;&#xAD6C; &#xC0AC;&#xC6A9;&#xBC95;</td><td style="padding: 5px 10px; border-color: rgba(255, 255, 255, 0.18);">&quot;&#xBC18;&#xD488; &#xCC98;&#xB9AC;&#xC5D0;&#xB294; refund_api&#xB97C; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;&quot;</td></tr><tr data-line="136" class="code-line" dir="auto" style="position: relative;"><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);"><strong>&#xC6CC;&#xD06C;&#xD50C;&#xB85C;&#xC6B0;(Workflow)</strong></td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&#xB2E4;&#xB2E8;&#xACC4; &#xD504;&#xB85C;&#xC138;&#xC2A4;</td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&quot;1) &#xC8FC;&#xBB38; &#xD655;&#xC778; &#x2192; 2) &#xC790;&#xACA9; &#xD655;&#xC778; &#x2192; 3) &#xD658;&#xBD88; &#xCC98;&#xB9AC;&quot;</td></tr></tbody></table>
<!--kg-card-end: html-->
<h3 id="%EC%99%9C-%EC%9D%B4-%EA%B5%AC%EB%B6%84%EC%9D%B4-%EC%A4%91%EC%9A%94%ED%95%9C%EA%B0%80%EC%9A%94">&#xC65C; &#xC774; &#xAD6C;&#xBD84;&#xC774; &#xC911;&#xC694;&#xD55C;&#xAC00;&#xC694;?</h3><p>&#xBA54;&#xBAA8;&#xB9AC;&#xB97C; &#xAC80;&#xC0C9;&#xD558;&#xACE0; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xBC29;&#xC2DD;&#xC5D0; &#xC601;&#xD5A5;&#xC744; &#xBBF8;&#xCE58;&#xAE30; &#xB54C;&#xBB38;&#xC785;&#xB2C8;&#xB2E4;. &#xACE0;&#xAC1D;&#xC774; &quot;&#xD658;&#xBD88; &#xC815;&#xCC45;&#xC774; &#xBB50;&#xC608;&#xC694;?&quot;&#xB77C;&#xACE0; &#xBB3C;&#xC73C;&#xBA74;, &#xC120;&#xC5B8;&#xC801; &#xBA54;&#xBAA8;&#xB9AC;&#xB97C; &#xAC80;&#xC0C9;&#xD569;&#xB2C8;&#xB2E4;. &quot;&#xD658;&#xBD88; &#xBC1B;&#xACE0; &#xC2F6;&#xC5B4;&#xC694;&quot;&#xB77C;&#xACE0; &#xB9D0;&#xD558;&#xBA74;, &#xC6CC;&#xD06C;&#xD50C;&#xB85C;&#xC6B0;&#xB97C; &#xC704;&#xD55C; &#xC808;&#xCC28;&#xC801; &#xBA54;&#xBAA8;&#xB9AC;&#xB3C4; &#xAC00;&#xC838;&#xC635;&#xB2C8;&#xB2E4;.</p><p>&#xB2E4;&#xB978; &#xC9C8;&#xBB38;&#xC5D0;&#xB294; &#xB2E4;&#xB978; &#xC720;&#xD615;&#xC758; &#xC9C0;&#xC2DD;&#xC774; &#xD544;&#xC694;&#xD569;&#xB2C8;&#xB2E4;. &#xC6B0;&#xB9AC; &#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xADF8; &#xCC28;&#xC774;&#xB97C; &#xC54C;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p><hr><h2 id="%EC%84%B8%EC%85%98-%EB%AC%B8%EC%A0%9C-%EB%8C%80%ED%99%94%EA%B0%80-%EA%B8%B8%EC%96%B4%EC%A7%80%EB%A9%B4-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%90%98%EB%82%98%EC%9A%94">&#xC138;&#xC158; &#xBB38;&#xC81C;: &#xB300;&#xD654;&#xAC00; &#xAE38;&#xC5B4;&#xC9C0;&#xBA74; &#xC5B4;&#xB5BB;&#xAC8C; &#xB418;&#xB098;&#xC694;?</h2><p>&#xC6B0;&#xB9AC;&#xAC00; &#xD574;&#xACB0;&#xD574;&#xC57C; &#xD588;&#xB358; &#xC2E4;&#xC9C8;&#xC801;&#xC778; &#xBB38;&#xC81C;&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;:&#xA0;<strong>LLM&#xC740; &#xC81C;&#xD55C;&#xB41C; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC708;&#xB3C4;&#xC6B0;&#xB97C; &#xAC00;&#xC9C0;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</strong></p><p>phi4-mini&#xC758; &#xC778;&#xC0C1;&#xC801;&#xC778; 128k &#xD1A0;&#xD070; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xB3C4; &#xACB0;&#xAD6D; &#xAC00;&#xB4DD; &#xCC39;&#xB2C8;&#xB2E4;. &#xB2E8;&#xC77C; &#xACE0;&#xAC1D; &#xC0C1;&#xD638;&#xC791;&#xC6A9;&#xC774; &#xC218;&#xCC9C; &#xAC1C;&#xC758; &#xD1A0;&#xD070;&#xC744; &#xC0DD;&#xC131;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC5EC;&#xB7EC; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xD611;&#xC5C5;&#xD558;&#xBA74;, &#xBA54;&#xBAA8;&#xB9AC; &#xAD00;&#xB9AC; &#xBB38;&#xC81C;&#xAC00; &#xC0DD;&#xAE41;&#xB2C8;&#xB2E4;.</p><h3 id="%EC%9A%B0%EB%A6%AC%EC%9D%98-%ED%95%B4%EA%B2%B0%EC%B1%85-%EC%95%95%EC%B6%95-%EC%A0%84%EB%9E%B5">&#xC6B0;&#xB9AC;&#xC758; &#xD574;&#xACB0;&#xCC45;: &#xC555;&#xCD95; &#xC804;&#xB7B5;</h3><p>&#xC138; &#xAC00;&#xC9C0; &#xC811;&#xADFC; &#xBC29;&#xC2DD;&#xC744; &#xAD6C;&#xD604;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4; (&#xADF8;&#xB9AC;&#xACE0; &#xC11C;&#xB85C; &#xAD50;&#xCCB4;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;):</p><p><strong>1. &#xC2AC;&#xB77C;&#xC774;&#xB529; &#xC708;&#xB3C4;&#xC6B0;</strong>&#xA0;&#xB9C8;&#xC9C0;&#xB9C9; N&#xAC1C;&#xC758; &#xBA54;&#xC2DC;&#xC9C0;&#xB97C; &#xC720;&#xC9C0;&#xD558;&#xACE0;, &#xC774;&#xC804; &#xAC83;&#xC740; &#xBAA8;&#xB450; &#xC0AD;&#xC81C;&#xD569;&#xB2C8;&#xB2E4;.</p><ul><li><em>&#xC7A5;&#xC810;</em>: &#xAC04;&#xB2E8;&#xD558;&#xACE0;, &#xC608;&#xCE21; &#xAC00;&#xB2A5;</li><li><em>&#xB2E8;&#xC810;</em>: &#xC911;&#xC694;&#xD55C; &#xCD08;&#xAE30; &#xB9E5;&#xB77D;&#xC744; &#xC783;&#xC744; &#xC218; &#xC788;&#xC74C;</li></ul><p><strong>2. &#xD1A0;&#xD070; &#xAE30;&#xBC18; &#xC798;&#xB77C;&#xB0B4;&#xAE30;</strong>&#xA0;&#xD1A0;&#xD070; &#xC218;&#xB97C; &#xBAA8;&#xB2C8;&#xD130;&#xB9C1;&#xD558;&#xACE0;, &#xD55C;&#xACC4;&#xC5D0; &#xAC00;&#xAE4C;&#xC6CC;&#xC9C0;&#xBA74; &#xAC00;&#xC7A5; &#xC624;&#xB798;&#xB41C; &#xB0B4;&#xC6A9;&#xC744; &#xC81C;&#xAC70;&#xD569;&#xB2C8;&#xB2E4;.</p><ul><li><em>&#xC7A5;&#xC810;</em>: &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC0AC;&#xC6A9;&#xC744; &#xCD5C;&#xB300;&#xD654;</li><li><em>&#xB2E8;&#xC810;</em>: &#xC815;&#xD655;&#xD55C; &#xD1A0;&#xD070; &#xACC4;&#xC0B0;&#xC774; &#xD544;&#xC694;</li></ul><p><strong>3. &#xC694;&#xC57D;</strong>&#xA0;&#xC624;&#xB798;&#xB41C; &#xB300;&#xD654; &#xCCAD;&#xD06C;&#xB97C; AI&#xAC00; &#xC0DD;&#xC131;&#xD55C; &#xC694;&#xC57D;&#xC73C;&#xB85C; &#xB300;&#xCCB4;&#xD569;&#xB2C8;&#xB2E4;.</p><ul><li><em>&#xC7A5;&#xC810;</em>: &#xD1A0;&#xD070;&#xC744; &#xC904;&#xC774;&#xBA74;&#xC11C; &#xC758;&#xBBF8;&#xB97C; &#xBCF4;&#xC874;</li><li><em>&#xB2E8;&#xC810;</em>: &#xC694;&#xC57D;&#xC774; &#xB258;&#xC559;&#xC2A4;&#xB97C; &#xB193;&#xCE60; &#xC218; &#xC788;&#xC74C;</li></ul><pre><code class="language-python"># &#xC608;&#xC2DC;: &#xC555;&#xCD95;&#xC744; &#xD2B8;&#xB9AC;&#xAC70;&#xD558;&#xB294; &#xBC29;&#xBC95;
if session.token_count &gt; (self.max_tokens * 0.8):  # 80% &#xC784;&#xACC4;&#xAC12;
    self.trigger_compaction(session_id)
</code></pre><p>&#xD575;&#xC2EC; &#xD1B5;&#xCC30;?&#xA0;<strong>&#xACF5;&#xAC04;&#xC774; &#xB2E4; &#xCC30; &#xB54C;&#xAE4C;&#xC9C0; &#xAE30;&#xB2E4;&#xB9AC;&#xC9C0; &#xB9C8;&#xC138;&#xC694;.</strong>&#xA0;80% &#xC6A9;&#xB7C9;&#xC5D0;&#xC11C; &#xC555;&#xCD95;&#xC744; &#xC2DC;&#xC791;&#xD558;&#xC5EC; &#xC2DC;&#xC2A4;&#xD15C;&#xC5D0; &#xC5EC;&#xC720; &#xACF5;&#xAC04;&#xC744; &#xC90D;&#xB2C8;&#xB2E4;.</p><hr><h2 id="a2a-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8%EB%93%A4%EC%9D%B4-%EC%8B%A4%EC%A0%9C%EB%A1%9C-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8C%80%ED%99%94%ED%95%98%EB%82%98%EC%9A%94">A2A &#xD504;&#xB85C;&#xD1A0;&#xCF5C;: &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB4E4;&#xC774; &#xC2E4;&#xC81C;&#xB85C; &#xC5B4;&#xB5BB;&#xAC8C; &#xB300;&#xD654;&#xD558;&#xB098;&#xC694;?</h2><p>&#xC5EC;&#xAE30;&#xC11C; &#xC815;&#xB9D0; &#xD765;&#xBBF8;&#xB85C;&#xC6CC;&#xC9D1;&#xB2C8;&#xB2E4;. &#xB3C5;&#xB9BD;&#xC801;&#xC778; AI &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB4E4;&#xC774; &#xC5B4;&#xB5BB;&#xAC8C; &#xD611;&#xB825;&#xD558;&#xAC8C; &#xD560;&#xAE4C;&#xC694;?</p><h3 id="%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%9D%90%EB%A6%84">&#xBA54;&#xC2DC;&#xC9C0; &#xD750;&#xB984;</h3><p>&#xACE0;&#xAC1D;&#xC774; &#xC9C0;&#xC6D0;&#xD300;&#xC5D0; &#xC5F0;&#xB77D;&#xD560; &#xB54C; &#xC5B4;&#xB5A4; &#xC77C;&#xC774; &#xC77C;&#xC5B4;&#xB098;&#xB294;&#xC9C0; &#xC0B4;&#xD3B4;&#xBD05;&#xC2DC;&#xB2E4;:</p><pre><code>1. &#xACE0;&#xAC1D;: &quot;&#xC8FC;&#xBB38;&#xC774; &#xB3C4;&#xCC29;&#xD558;&#xC9C0; &#xC54A;&#xC558;&#xC5B4;&#xC694;. &#xD504;&#xB9AC;&#xBBF8;&#xC5C4; &#xD68C;&#xC6D0;&#xC774;&#xC5D0;&#xC694;.&quot;
                    &#x2502;
                    &#x25BC;
2. Alex (&#xCF54;&#xB514;&#xB124;&#xC774;&#xD130;)&#xAC00; &#xBA54;&#xC2DC;&#xC9C0;&#xB97C; &#xBC1B;&#xC74C;
   &#x2514;&#x2500;&#x2500; &#xACF5;&#xC720; &#xBA54;&#xBAA8;&#xB9AC; &#xC870;&#xD68C;: &quot;&#xD504;&#xB9AC;&#xBBF8;&#xC5C4; &#xACE0;&#xAC1D;&#xC5D0; &#xB300;&#xD574; &#xBB58; &#xC54C;&#xACE0; &#xC788;&#xC9C0;?&quot;
   &#x2514;&#x2500;&#x2500; &#xBC1C;&#xACAC;: &quot;&#xD504;&#xB9AC;&#xBBF8;&#xC5C4; &#xD68C;&#xC6D0;&#xC740; 48&#xC2DC;&#xAC04; &#xBE60;&#xB978; &#xD658;&#xBD88;&#xC744; &#xBC1B;&#xC2B5;&#xB2C8;&#xB2E4;&quot;
   &#x2514;&#x2500;&#x2500; &#xACB0;&#xC815;: &quot;Sam(&#xC8FC;&#xBB38;)&#xACFC; Jordan(&#xAE30;&#xC220; &#xD655;&#xC778;)&#xC774; &#xD544;&#xC694;&#xD574;&quot;
                    &#x2502;
                    &#x25BC;
3. Alex&#xAC00; &#xC804;&#xBB38;&#xAC00;&#xB4E4;&#xC5D0;&#xAC8C; A2A &#xBA54;&#xC2DC;&#xC9C0; &#xC804;&#xC1A1;:
   &#x251C;&#x2500;&#x2500; Sam&#xC5D0;&#xAC8C;: &quot;&#xC774; &#xACE0;&#xAC1D;&#xC758; &#xC8FC;&#xBB38; &#xC0C1;&#xD0DC; &#xD655;&#xC778;&#xD574;&#xC918;&quot;
   &#x2514;&#x2500;&#x2500; Jordan&#xC5D0;&#xAC8C;: &quot;&#xBC30;&#xC1A1; &#xC2DC;&#xC2A4;&#xD15C;&#xC774; &#xC791;&#xB3D9;&#xD558;&#xB294;&#xC9C0; &#xD655;&#xC778;&#xD574;&#xC918;&quot;
                    &#x2502;
                    &#x25BC;
4. &#xC804;&#xBB38;&#xAC00;&#xB4E4;&#xC774; &#xBCD1;&#xB82C;&#xB85C; &#xC791;&#xC5C5;:
   &#x251C;&#x2500;&#x2500; Sam: &#xC8FC;&#xBB38; &#xC774;&#xB825; &#xC811;&#xADFC;, &#xBC30;&#xC1A1; &#xC9C0;&#xC5F0; &#xBC1C;&#xACAC;
   &#x2514;&#x2500;&#x2500; Jordan: &#xC2DC;&#xC2A4;&#xD15C; &#xC815;&#xC0C1; &#xC791;&#xB3D9; &#xD655;&#xC778;, &#xAD11;&#xBC94;&#xC704;&#xD55C; &#xBB38;&#xC81C; &#xC5C6;&#xC74C;
                    &#x2502;
                    &#x25BC;
5. &#xACB0;&#xACFC;&#xAC00; Alex&#xC5D0;&#xAC8C; &#xB3CC;&#xC544;&#xC634;
   &#x2514;&#x2500;&#x2500; Alex &#xC885;&#xD569;: &quot;&#xC8FC;&#xBB38;&#xC774; &#xC9C0;&#xC5F0;&#xB428; (&#xC2DC;&#xC2A4;&#xD15C; &#xC804;&#xCCB4; &#xBB38;&#xC81C; &#xC544;&#xB2D8;), 
                   &#xACE0;&#xAC1D;&#xC740; &#xBE60;&#xB978; &#xD658;&#xBD88; &#xC790;&#xACA9;&#xC774; &#xC788;&#xC74C;&quot;
                    &#x2502;
                    &#x25BC;
6. Alex&#xAC00; &#xC804;&#xCCB4; &#xB9E5;&#xB77D;&#xC744; &#xAC00;&#xC9C0;&#xACE0; &#xACE0;&#xAC1D;&#xC5D0;&#xAC8C; &#xC751;&#xB2F5;
</code></pre><h3 id="%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%8F%99%EA%B8%B0%ED%99%94-%EB%A9%94%EC%BB%A4%EB%8B%88%EC%A6%98">&#xBA54;&#xBAA8;&#xB9AC; &#xB3D9;&#xAE30;&#xD654; &#xBA54;&#xCEE4;&#xB2C8;&#xC998;</h3><p>Sam&#xC774; &#xC774; &#xACE0;&#xAC1D;&#xC5D0;&#xAC8C; &#xC774;&#xC804;&#xC5D0;&#xB3C4; &#xBC30;&#xC1A1; &#xBB38;&#xC81C;&#xAC00; &#xC788;&#xC5C8;&#xB2E4;&#xB294; &#xAC83;&#xC744; &#xBC1C;&#xACAC;&#xD558;&#xBA74;, &#xADF8; &#xC815;&#xBCF4;&#xB294; &#xACF5;&#xC720; &#xBA54;&#xBAA8;&#xB9AC;&#xC5D0; &#xB4E4;&#xC5B4;&#xAC11;&#xB2C8;&#xB2E4;:</p><pre><code class="language-python"># &#xC774;&#xAC83;&#xC740; &#xC791;&#xC5C5; &#xCC98;&#xB9AC; &#xC911; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xBC1C;&#xC0DD;&#xD569;&#xB2C8;&#xB2E4;
new_memory = Memory(
    content=&quot;&#xACE0;&#xAC1D; #12345 &#xBC30;&#xC1A1; &#xC9C0;&#xC5F0; &#xACBD;&#xD5D8; - 3&#xBC88;&#xC9F8; &#xBC1C;&#xC0DD;&quot;,
    type=MemoryType.EPISODIC,
    scope=MemoryScope.SHARED,  # &lt;-- &#xBAA8;&#xB4E0; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xC5D0;&#xAC8C; &#xBCF4;&#xC774;&#xAC8C; &#xD568;
    confidence=0.95
)
memory_manager.add_memory(new_memory)
</code></pre><p>&#xC774;&#xC81C;&#xA0;<em>&#xC5B4;&#xB5A4;</em>&#xA0;&#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xC774; &#xACE0;&#xAC1D;&#xC744; &#xC0C1;&#xB300;&#xD558;&#xB4E0;, &#xC774;&#xB825;&#xC744; &#xC54C;&#xAC8C; &#xB429;&#xB2C8;&#xB2E4;.</p><hr><h2 id="%EC%8B%A4%EC%A0%9C%EB%A1%9C-%EB%8F%99%EC%9E%91%ED%95%98%EB%8A%94-%EA%B2%83%EC%9D%84-%EB%B4%85%EC%8B%9C%EB%8B%A4-%EC%8B%A4%EC%A0%9C-%EB%8D%B0%EB%AA%A8">&#xC2E4;&#xC81C;&#xB85C; &#xB3D9;&#xC791;&#xD558;&#xB294; &#xAC83;&#xC744; &#xBD05;&#xC2DC;&#xB2E4;: &#xC2E4;&#xC81C; &#xB370;&#xBAA8;</h2><p>&#xC774;&#xB860;&#xC740; &#xCDA9;&#xBD84;&#xD569;&#xB2C8;&#xB2E4;. &#xC774;&#xAC83;&#xC744; &#xC2E4;&#xC81C;&#xB85C; &#xC5B4;&#xB5BB;&#xAC8C; &#xC0AC;&#xC6A9;&#xD558;&#xB294;&#xC9C0; &#xBD05;&#xC2DC;&#xB2E4;.</p><h3 id="%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0">&#xC124;&#xC815;&#xD558;&#xAE30;</h3><p><strong>&#xD544;&#xC218; &#xC870;&#xAC74;:</strong></p><pre><code class="language-bash"># Ollama &#xC124;&#xCE58;&#xD558;&#xACE0; phi4-mini &#xAC00;&#xC838;&#xC624;&#xAE30;
curl -fsSL https://ollama.ai/install.sh | sh
ollama pull phi4-mini
ollama serve
</code></pre><p><strong>&#xBC31;&#xC5D4;&#xB4DC; &#xC2DC;&#xC791;:</strong></p><pre><code class="language-bash">cd backend
source venv/bin/activate
python3 api.py  # http://localhost:5001&#xC5D0;&#xC11C; &#xC2E4;&#xD589;
</code></pre><p><strong>&#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC; &#xC2DC;&#xC791;:</strong></p><pre><code class="language-bash">cd frontend
npm run dev  # http://localhost:3000&#xC5D0;&#xC11C; &#xC2E4;&#xD589;
</code></pre><h3 id="%EA%B3%A0%EA%B0%9D-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%8B%9C%EB%82%98%EB%A6%AC%EC%98%A4">&#xACE0;&#xAC1D; &#xC11C;&#xBE44;&#xC2A4; &#xC2DC;&#xB098;&#xB9AC;&#xC624;</h3><p><strong>1&#xB2E8;&#xACC4;: &#xACF5;&#xC720; &#xBA54;&#xBAA8;&#xB9AC; &#xB85C;&#xB4DC;</strong></p><pre><code class="language-bash">curl -X POST http://localhost:5001/api/memory/demo/prepare
</code></pre><p>&#xC774;&#xAC83;&#xC740; &#xB2E4;&#xC74C;&#xC744; &#xBBF8;&#xB9AC; &#xB85C;&#xB4DC;&#xD569;&#xB2C8;&#xB2E4;:</p><ul><li>&#xACE0;&#xAC1D; &#xD504;&#xB85C;&#xD544; (&#xB204;&#xAC00; &#xBB34;&#xC5C7;&#xC744; &#xC120;&#xD638;&#xD558;&#xB294;&#xC9C0;)</li><li>&#xD658;&#xBD88; &#xC815;&#xCC45; (&#xD504;&#xB9AC;&#xBBF8;&#xC5C4; &#xD68C;&#xC6D0;&#xC774; &#xBC1B;&#xB294; &#xAC83;)</li><li>&#xD574;&#xACB0; &#xC6CC;&#xD06C;&#xD50C;&#xB85C;&#xC6B0; (&#xC77C;&#xBC18;&#xC801;&#xC778; &#xBB38;&#xC81C; &#xCC98;&#xB9AC; &#xBC29;&#xBC95;)</li></ul><p><strong>2&#xB2E8;&#xACC4;: Alex&#xC5D0;&#xAC8C; &#xBCF5;&#xC7A1;&#xD55C; &#xC694;&#xCCAD; &#xBCF4;&#xB0B4;&#xAE30;</strong></p><p><code>http://localhost:3000/agents</code>&#xB85C; &#xC774;&#xB3D9;&#xD558;&#xC5EC; Alex&#xB97C; &#xC120;&#xD0DD;&#xD558;&#xACE0; &#xB2E4;&#xC74C;&#xC744; &#xBCF4;&#xB0C5;&#xB2C8;&#xB2E4;:</p><blockquote>&quot;&#xACE0;&#xAC1D;&#xC774; &#xCD5C;&#xADFC; &#xC8FC;&#xBB38;&#xC774; &#xB3C4;&#xCC29;&#xD558;&#xC9C0; &#xC54A;&#xC558;&#xB2E4;&#xACE0; &#xBCF4;&#xACE0;&#xD558;&#xACE0; &#xD658;&#xBD88;&#xC744; &#xC694;&#xCCAD;&#xD558;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC774;&#xC804;&#xC5D0; &#xC774;&#xBA54;&#xC77C; &#xD1B5;&#xC2E0;&#xC744; &#xC120;&#xD638;&#xD55C;&#xB2E4;&#xACE0; &#xC5B8;&#xAE09;&#xD588;&#xACE0; &#xD504;&#xB9AC;&#xBBF8;&#xC5C4; &#xD68C;&#xC6D0;&#xC785;&#xB2C8;&#xB2E4;.&quot;</blockquote><p><strong>3&#xB2E8;&#xACC4;: &#xD611;&#xC5C5;&#xC774; &#xD3BC;&#xCCD0;&#xC9C0;&#xB294; &#xAC83;&#xC744; &#xAD00;&#xCC30;</strong></p><p>&#xB85C;&#xADF8; &#xD398;&#xC774;&#xC9C0;(<code>http://localhost:3000/logs</code>)&#xB97C; &#xC5F4;&#xACE0; &#xAD00;&#xCC30;&#xD558;&#xC138;&#xC694;:</p><ul><li>Alex&#xAC00; &#xC791;&#xC5C5;&#xC744; &#xBD84;&#xC11D;&#xD558;&#xACE0; &#xB204;&#xAD6C;&#xB97C; &#xCC38;&#xC5EC;&#xC2DC;&#xD0AC;&#xC9C0; &#xACB0;&#xC815;</li><li>&#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xAC04; A2A &#xBA54;&#xC2DC;&#xC9C0;&#xAC00; &#xC624;&#xAC00;&#xB294; &#xAC83;</li><li>&#xACF5;&#xC720; &#xBA54;&#xBAA8;&#xB9AC;&#xAC00; &#xC811;&#xADFC;&#xB418;&#xACE0; &#xC5C5;&#xB370;&#xC774;&#xD2B8;&#xB418;&#xB294; &#xAC83;</li><li>&#xCD5C;&#xC885; &#xC870;&#xC728;&#xB41C; &#xC751;&#xB2F5;&#xC774; &#xD568;&#xAED8; &#xB9CC;&#xB4E4;&#xC5B4;&#xC9C0;&#xB294; &#xAC83;</li></ul><h3 id="%EB%B3%BC-%EC%88%98-%EC%9E%88%EB%8A%94-%EA%B2%83">&#xBCFC; &#xC218; &#xC788;&#xB294; &#xAC83;</h3><p><strong>Alex&#xC758; &#xC870;&#xC728;:</strong></p><blockquote>&quot;&#xC6B0;&#xB9AC; &#xD300;&#xC744; &#xC870;&#xC728;&#xD558;&#xC5EC; &#xC774; &#xD504;&#xB9AC;&#xBBF8;&#xC5C4; &#xACE0;&#xAC1D; &#xBB38;&#xC81C;&#xB97C; &#xCC98;&#xB9AC;&#xD558;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;. &#xACF5;&#xC720; &#xBA54;&#xBAA8;&#xB9AC;&#xC5D0; &#xB530;&#xB974;&#xBA74;, &#xC774; &#xACE0;&#xAC1D;&#xC740; &#xC774;&#xBA54;&#xC77C;&#xC744; &#xC120;&#xD638;&#xD558;&#xACE0; &#xBE60;&#xB978; &#xC11C;&#xBE44;&#xC2A4; &#xC790;&#xACA9;&#xC774; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;...&quot;</blockquote><p><strong>Sam&#xC758; &#xC8FC;&#xBB38; &#xBD84;&#xC11D;:</strong></p><blockquote>&quot;&#xC8FC;&#xBB38; &#xAD00;&#xB9AC; &#xAD00;&#xC810;&#xC5D0;&#xC11C;, &#xC8FC;&#xBB38;&#xC774; &#xBC1C;&#xC1A1;&#xB418;&#xC5C8;&#xC9C0;&#xB9CC; &#xCD94;&#xC801;&#xC5D0;&#xC11C; &#xC9C0;&#xC5F0;&#xC774; &#xBCF4;&#xC785;&#xB2C8;&#xB2E4;. &#xACE0;&#xAC1D;&#xC740; 48&#xC2DC;&#xAC04; &#xD504;&#xB9AC;&#xBBF8;&#xC5C4; &#xD658;&#xBD88; &#xC790;&#xACA9;&#xC774; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;...&quot;</blockquote><p><strong>Jordan&#xC758; &#xAE30;&#xC220; &#xD655;&#xC778;:</strong></p><blockquote>&quot;&#xBC30;&#xC1A1; &#xC54C;&#xB9BC; &#xC2DC;&#xC2A4;&#xD15C;&#xC774; &#xC815;&#xC0C1; &#xC791;&#xB3D9;&#xD558;&#xB294; &#xAC83;&#xC744; &#xD655;&#xC778;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC9C0;&#xC5F0;&#xC740; &#xC6B0;&#xB9AC; &#xCABD;&#xC774; &#xC544;&#xB2CC; &#xBC30;&#xC1A1;&#xC0AC; &#xAD00;&#xB828; &#xBB38;&#xC81C;&#xB85C; &#xBCF4;&#xC785;&#xB2C8;&#xB2E4;...&quot;</blockquote><p><strong>&#xC885;&#xD569;&#xB41C; &#xC751;&#xB2F5;:</strong></p><blockquote>&quot;&#xC5F0;&#xB77D;&#xD574; &#xC8FC;&#xC154;&#xC11C; &#xAC10;&#xC0AC;&#xD569;&#xB2C8;&#xB2E4;. &#xC800;&#xD76C; &#xD300;&#xC774; &#xADC0;&#xD558;&#xC758; &#xCF00;&#xC774;&#xC2A4;&#xB97C; &#xAC80;&#xD1A0;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;: [&#xAD6C;&#xCCB4;&#xC801;&#xC778; &#xC8FC;&#xBB38; &#xC138;&#xBD80; &#xC0AC;&#xD56D;], [&#xBB34;&#xC5C7;&#xC774; &#xC798;&#xBABB;&#xB418;&#xC5C8;&#xB294;&#xC9C0;], [&#xC6B0;&#xB9AC;&#xAC00; &#xC5B4;&#xB5BB;&#xAC8C; &#xCC98;&#xB9AC;&#xD558;&#xACE0; &#xC788;&#xB294;&#xC9C0;]. &#xBE60;&#xB978; &#xD658;&#xBD88;&#xC774; 48&#xC2DC;&#xAC04; &#xB0B4;&#xC5D0; &#xCC98;&#xB9AC;&#xB418;&#xBA70;, &#xC774;&#xBA54;&#xC77C; &#xD655;&#xC778;&#xC744; &#xBC1B;&#xC73C;&#xC2E4; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;...&quot;</blockquote><hr><h2 id="%EC%BD%94%EB%93%9C-%ED%95%B5%EC%8B%AC-%EA%B5%AC%ED%98%84-%ED%8C%A8%ED%84%B4">&#xCF54;&#xB4DC;: &#xD575;&#xC2EC; &#xAD6C;&#xD604; &#xD328;&#xD134;</h2><p>&#xC6B0;&#xB9AC;&#xAC00; &#xAC1C;&#xBC1C;&#xD55C; &#xD765;&#xBBF8;&#xB85C;&#xC6B4; &#xCF54;&#xB4DC; &#xD328;&#xD134;&#xB4E4;&#xC744; &#xC0B4;&#xD3B4;&#xBD05;&#xC2DC;&#xB2E4;.</p><h3 id="%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%B6%94%EC%B6%9C-%EA%B8%B0%EC%96%B5%ED%95%A0-%EA%B0%80%EC%B9%98%EA%B0%80-%EC%9E%88%EB%8A%94-%EA%B2%83-%EC%B0%BE%EA%B8%B0">&#xBA54;&#xBAA8;&#xB9AC; &#xCD94;&#xCD9C;: &#xAE30;&#xC5B5;&#xD560; &#xAC00;&#xCE58;&#xAC00; &#xC788;&#xB294; &#xAC83; &#xCC3E;&#xAE30;</h3><pre><code class="language-python">class MemoryExtractor:
    # &#xBA85;&#xC2DC;&#xC801; &#xBA54;&#xBAA8;&#xB9AC; &#xBA85;&#xB839; &#xD328;&#xD134;
    EXPLICIT_PATTERNS = [
        r&quot;remember (?:that )?(.+)&quot;,
        r&quot;don&apos;t forget (?:that )?(.+)&quot;,
        r&quot;note (?:that )?(.+)&quot;,
    ]
    
    # &#xC554;&#xC2DC;&#xC801; &#xC0AC;&#xC2E4; &#xD328;&#xD134; (&#xBA85;&#xB839;&#xD558;&#xC9C0; &#xC54A;&#xC544;&#xB3C4; &#xAE30;&#xC5B5;&#xD560; &#xAC00;&#xCE58;&#xAC00; &#xC788;&#xB294; &#xAC83;&#xB4E4;)
    FACT_PATTERNS = [
        r&quot;(?:my|our|the) (\w+) is (.+)&quot;,
        r&quot;i (?:prefer|like|want|need) (.+)&quot;,
        r&quot;we (?:always|usually|typically) (.+)&quot;,
    ]
    
    def extract_from_text(self, text: str) -&gt; List[Memory]:
        memories = []
        
        # &#xBA85;&#xC2DC;&#xC801; &#xBA54;&#xBAA8;&#xB9AC;&#xB294; &#xB192;&#xC740; &#xC2E0;&#xB8B0;&#xB3C4;&#xB97C; &#xBC1B;&#xC74C;
        for pattern in self.EXPLICIT_PATTERNS:
            if match := re.search(pattern, text.lower()):
                memories.append(Memory(
                    content=match.group(1),
                    mechanism=CreationMechanism.EXPLICIT,
                    confidence=0.95  # &#xC9C1;&#xC811; &#xBA85;&#xB839;&#xC740; &#xB192;&#xC740; &#xC2E0;&#xB8B0;&#xB3C4;
                ))
        
        # &#xC554;&#xC2DC;&#xC801; &#xBA54;&#xBAA8;&#xB9AC;&#xB294; &#xB0AE;&#xC740; &#xC2E0;&#xB8B0;&#xB3C4;&#xB97C; &#xBC1B;&#xC74C;
        for pattern in self.FACT_PATTERNS:
            if match := re.search(pattern, text.lower()):
                memories.append(Memory(
                    content=match.group(0),
                    mechanism=CreationMechanism.IMPLICIT,
                    confidence=0.70  # &#xCD94;&#xB860;&#xB41C; &#xC0AC;&#xC2E4;&#xC740; &#xB0AE;&#xC740; &#xC2E0;&#xB8B0;&#xB3C4;
                ))
        
        return memories
</code></pre><p><strong>&#xC65C; &#xC2E0;&#xB8B0;&#xB3C4; &#xC810;&#xC218;&#xC778;&#xAC00;&#xC694;?</strong>&#xA0;&#xBAA8;&#xB4E0; &#xC815;&#xBCF4;&#xAC00; &#xB3D9;&#xB4F1;&#xD558;&#xAC8C; &#xC2E0;&#xB8B0;&#xD560; &#xC218; &#xC788;&#xB294; &#xAC83;&#xC740; &#xC544;&#xB2C8;&#xAE30; &#xB54C;&#xBB38;&#xC785;&#xB2C8;&#xB2E4;. &#xC9C1;&#xC811;&#xC801;&#xC778; &quot;&#xC774;&#xAC83;&#xC744; &#xAE30;&#xC5B5;&#xD574;&quot; &#xBA85;&#xB839;&#xC740; &#xB9E5;&#xB77D;&#xC5D0;&#xC11C; &#xC6B0;&#xB9AC;&#xAC00; &#xCD94;&#xB860;&#xD55C; &#xAC83;&#xBCF4;&#xB2E4; &#xB354; &#xC2E0;&#xB8B0;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p><h3 id="%EC%9D%98%EB%AF%B8-%EA%B2%80%EC%83%89-%EA%B4%80%EB%A0%A8-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%B0%BE%EA%B8%B0">&#xC758;&#xBBF8; &#xAC80;&#xC0C9;: &#xAD00;&#xB828; &#xBA54;&#xBAA8;&#xB9AC; &#xCC3E;&#xAE30;</h3><pre><code class="language-python">class SemanticMemoryStore:
    def search(self, query: str, top_k: int = 5) -&gt; List[Tuple[Memory, float]]:
        # &#xCFFC;&#xB9AC;&#xB97C; &#xBCA1;&#xD130;&#xB85C; &#xBCC0;&#xD658;
        query_embedding = self.embedder.embed(query)
        
        # &#xC720;&#xC0AC;&#xD55C; &#xBA54;&#xBAA8;&#xB9AC; &#xCC3E;&#xAE30;
        results = self.vector_store.similarity_search(
            query_embedding,
            top_k=top_k,
            filter={&quot;confidence&quot;: {&quot;$gte&quot;: 0.7}}  # &#xB192;&#xC740; &#xC2E0;&#xB8B0;&#xB3C4; &#xBA54;&#xBAA8;&#xB9AC;&#xB9CC;
        )
        
        return [(self.memories[id], score) for id, score in results]
</code></pre><p><strong>&#xC65C; &#xD0A4;&#xC6CC;&#xB4DC; &#xB9E4;&#xCE6D; &#xB300;&#xC2E0; &#xBCA1;&#xD130; &#xAC80;&#xC0C9;&#xC778;&#xAC00;&#xC694;?</strong>&#xA0;&quot;&#xACE0;&#xAC1D;&#xC774; &#xC774;&#xBA54;&#xC77C;&#xC744; &#xC120;&#xD638;&#xD568;&quot;&#xC774; &quot;&#xD1B5;&#xC2E0; &#xC120;&#xD638;&#xB3C4;&quot;&#xC5D0; &#xB300;&#xD55C; &#xCFFC;&#xB9AC;&#xC640; &#xC77C;&#xCE58;&#xD574;&#xC57C; &#xD558;&#xAE30; &#xB54C;&#xBB38;&#xC785;&#xB2C8;&#xB2E4;. &#xBE44;&#xB85D; &#xADF8; &#xB2E8;&#xC5B4;&#xB4E4;&#xC774; &#xC815;&#xD655;&#xD788; &#xACB9;&#xCE58;&#xC9C0; &#xC54A;&#xB354;&#xB77C;&#xB3C4;&#xC694;.</p><h3 id="a2a-%EB%B8%8C%EB%A6%BF%EC%A7%80-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8-%EA%B0%84-%ED%86%B5%EC%8B%A0">A2A &#xBE0C;&#xB9BF;&#xC9C0;: &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xAC04; &#xD1B5;&#xC2E0;</h3><pre><code class="language-python">class A2AMemoryBridge:
    def sync_memory_to_agents(self, memory: Memory, target_agents: List[str]):
        # &#xBA54;&#xBAA8;&#xB9AC; &#xD398;&#xC774;&#xB85C;&#xB4DC;&#xB85C; A2A &#xBA54;&#xC2DC;&#xC9C0; &#xC0DD;&#xC131;
        message = A2AMessage(
            source_agent=self.agent_id,
            content_type=&quot;application/vnd.a2a.memory-sync+json&quot;,
            payload={
                &quot;memories&quot;: [memory.to_dict()],
                &quot;source_confidence&quot;: memory.confidence,
                &quot;sync_timestamp&quot;: datetime.utcnow().isoformat()
            }
        )
        
        for target in target_agents:
            # &#xAC01; &#xB300;&#xC0C1;&#xC5D0;&#xAC8C; &#xC804;&#xC1A1;
            self.send_message(target, message)
            
            # &#xC218;&#xC2E0;&#xD558;&#xB294; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB294; &#xC2E0;&#xB8B0;&#xB3C4; &#xD560;&#xC778; &#xC801;&#xC6A9;
            # (&#xAC04;&#xC811; &#xC815;&#xBCF4;&#xB294; &#xC57D;&#xAC04; &#xB35C; &#xC2E0;&#xB8B0;&#xD560; &#xC218; &#xC788;&#xC74C;)
            received_memory = memory.copy()
            received_memory.confidence *= 0.9
            target_bridge = self.get_bridge(target)
            target_bridge.memory_manager.add_memory(received_memory)
</code></pre><p><strong>&#xC65C; 0.9 &#xC2E0;&#xB8B0;&#xB3C4; &#xC2B9;&#xC218;&#xC778;&#xAC00;&#xC694;?</strong>&#xA0;&#xC804;&#xD654; &#xAC8C;&#xC784;&#xCC98;&#xB7FC; &#xC0DD;&#xAC01;&#xD558;&#xC138;&#xC694;. &#xC5EC;&#xB7EC; &#xC0AC;&#xB78C;&#xC744; &#xAC70;&#xCCD0; &#xC804;&#xB2EC;&#xB41C; &#xC815;&#xBCF4;&#xB294; &#xC9C1;&#xC811; &#xC5BB;&#xC740; &#xC9C0;&#xC2DD;&#xBCF4;&#xB2E4; &#xC57D;&#xAC04; &#xB35C; &#xC2E0;&#xB8B0;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC6B0;&#xB9AC;&#xB294; &#xADF8; &#xBD88;&#xD655;&#xC2E4;&#xC131;&#xC744; &#xC2DC;&#xC2A4;&#xD15C;&#xC5D0; &#xC9C1;&#xC811; &#xC778;&#xCF54;&#xB529;&#xD569;&#xB2C8;&#xB2E4;.</p><hr><h2 id="%EC%84%B1%EB%8A%A5-%EC%9D%B4%EA%B2%83%EC%9D%B4-%EC%8B%A4%EC%A0%9C%EB%A1%9C-%ED%99%95%EC%9E%A5%EB%90%98%EB%82%98%EC%9A%94">&#xC131;&#xB2A5;: &#xC774;&#xAC83;&#xC774; &#xC2E4;&#xC81C;&#xB85C; &#xD655;&#xC7A5;&#xB418;&#xB098;&#xC694;?</h2><p>&#xC22B;&#xC790;&#xC5D0; &#xB300;&#xD574; &#xC194;&#xC9C1;&#xD574;&#xC9D1;&#xC2DC;&#xB2E4;.</p><h3 id="%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%9C%88%EB%8F%84%EC%9A%B0-%EC%82%AC%EC%9A%A9">&#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC708;&#xB3C4;&#xC6B0; &#xC0AC;&#xC6A9;</h3><p>phi4-mini&#xC758; 128k &#xD1A0;&#xD070; &#xD55C;&#xACC4;&#xB85C;:</p><ul><li>&#xD3C9;&#xADE0; &#xB300;&#xD654;: 2,000-8,000 &#xD1A0;&#xD070;</li><li>&#xC138;&#xC158;&#xB2F9; &#xC800;&#xC7A5;&#xB41C; &#xBA54;&#xBAA8;&#xB9AC;: 50-100&#xAC1C;</li><li>&#xB3D9;&#xC2DC;&#xC5D0; &#xD611;&#xC5C5;&#xD558;&#xB294; &#xC5D0;&#xC774;&#xC804;&#xD2B8;: 3-5&#xAC1C;</li><li>&#xC555;&#xCD95; &#xC804; &#xC5F0;&#xC18D; &#xC138;&#xC158; &#xC2DC;&#xAC04;: 4-6&#xC2DC;&#xAC04;</li></ul><h3 id="%EC%A7%80%EC%97%B0-%EC%8B%9C%EA%B0%84">&#xC9C0;&#xC5F0; &#xC2DC;&#xAC04;</h3><p>&#xBAA9;&#xD45C; (Google &#xBC31;&#xC11C;&#xC5D0;&#xC11C;): &#xBA54;&#xBAA8;&#xB9AC; &#xC870;&#xD68C; 200ms &#xBBF8;&#xB9CC;</p><p>&#xC6B0;&#xB9AC;&#xC758; &#xBCA4;&#xCE58;&#xB9C8;&#xD06C;:</p><ul><li>&#xBCA1;&#xD130; &#xC720;&#xC0AC;&#xC131; &#xAC80;&#xC0C9;: 1000&#xAC1C; &#xBA54;&#xBAA8;&#xB9AC;&#xC5D0; ~50ms</li><li>&#xC804;&#xCCB4; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC870;&#xB9BD;: ~150ms</li><li>A2A &#xBA54;&#xC2DC;&#xC9C0; &#xB77C;&#xC6B0;&#xD305;: ~30ms</li></ul><p>&#xC608;&#xC0B0; &#xB0B4;&#xC5D0; &#xC788;&#xC9C0;&#xB9CC;, &#xCD5C;&#xC801;&#xD654;&#xD560; &#xC5EC;&#xC9C0;&#xB294; &#xD56D;&#xC0C1; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p><h3 id="%ED%94%84%EB%A1%9C%EB%8D%95%EC%85%98%EC%9D%84-%EC%9C%84%ED%95%B4-%EB%AC%B4%EC%97%87%EC%9D%84-%EB%B0%94%EA%BF%80-%EA%B2%83%EC%9D%B8%EA%B0%80%EC%9A%94">&#xD504;&#xB85C;&#xB355;&#xC158;&#xC744; &#xC704;&#xD574; &#xBB34;&#xC5C7;&#xC744; &#xBC14;&#xAFC0; &#xAC83;&#xC778;&#xAC00;&#xC694;?</h3><p>&#xC774;&#xAC83;&#xC740; &#xCC38;&#xC870; &#xAD6C;&#xD604;&#xC785;&#xB2C8;&#xB2E4;. &#xC2E4;&#xC81C; &#xD504;&#xB85C;&#xB355;&#xC158; &#xC0AC;&#xC6A9;&#xC744; &#xC704;&#xD574;:</p>
<!--kg-card-begin: html-->
<table data-line="433" class="code-line" dir="auto" style="border-collapse: collapse; margin-bottom: 0.7em; position: relative; color: rgb(204, 204, 204); font-family: -apple-system, " system-ui", "segoe wpc", ui", system-ui, ubuntu, "droid sans", sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: font-variant-caps: font-weight: 400; letter-spacing: orphans: 2; text-align: start; text-transform: none; widows: word-spacing: 0px; -webkit-text-stroke-width: white-space: text-decoration-thickness: initial; text-decoration-style: text-decoration-color: initial;"><thead data-line="433" class="code-line" dir="auto" style="position: relative;"><tr data-line="433" class="code-line" dir="auto" style="position: relative;"><th style="text-align: left; border-bottom: 1px solid rgba(255, 255, 255, 0.69); padding: 5px 10px; border-top-color: rgba(255, 255, 255, 0.69); border-right-color: rgba(255, 255, 255, 0.69); border-left-color: rgba(255, 255, 255, 0.69);">&#xCEF4;&#xD3EC;&#xB10C;&#xD2B8;</th><th style="text-align: left; border-bottom: 1px solid rgba(255, 255, 255, 0.69); padding: 5px 10px; border-top-color: rgba(255, 255, 255, 0.69); border-right-color: rgba(255, 255, 255, 0.69); border-left-color: rgba(255, 255, 255, 0.69);">&#xD604;&#xC7AC;</th><th style="text-align: left; border-bottom: 1px solid rgba(255, 255, 255, 0.69); padding: 5px 10px; border-top-color: rgba(255, 255, 255, 0.69); border-right-color: rgba(255, 255, 255, 0.69); border-left-color: rgba(255, 255, 255, 0.69);">&#xD504;&#xB85C;&#xB355;&#xC158; &#xB300;&#xC548;</th></tr></thead><tbody data-line="435" class="code-line" dir="auto" style="position: relative;"><tr data-line="435" class="code-line" dir="auto" style="position: relative;"><td style="padding: 5px 10px; border-color: rgba(255, 255, 255, 0.18);">&#xBCA1;&#xD130; &#xC2A4;&#xD1A0;&#xC5B4;</td><td style="padding: 5px 10px; border-color: rgba(255, 255, 255, 0.18);">&#xC778;&#xBA54;&#xBAA8;&#xB9AC; Python</td><td style="padding: 5px 10px; border-color: rgba(255, 255, 255, 0.18);">Pinecone, Weaviate, &#xB610;&#xB294; Qdrant</td></tr><tr data-line="436" class="code-line" dir="auto" style="position: relative;"><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&#xC784;&#xBCA0;&#xB529;</td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&#xD574;&#xC2DC; &#xAE30;&#xBC18; &#xC758;&#xC0AC; &#xC784;&#xBCA0;&#xB529;</td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">OpenAI, Cohere, &#xB610;&#xB294; Sentence Transformers</td></tr><tr data-line="437" class="code-line" dir="auto" style="position: relative;"><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&#xC138;&#xC158; &#xC800;&#xC7A5;&#xC18C;</td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&#xC778;&#xBA54;&#xBAA8;&#xB9AC; dict</td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">Redis &#xB610;&#xB294; PostgreSQL</td></tr><tr data-line="438" class="code-line" dir="auto" style="position: relative;"><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&#xBA54;&#xC2DC;&#xC9C0; &#xD050;</td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">&#xB3D9;&#xAE30; &#xD638;&#xCD9C;</td><td style="padding: 5px 10px; border-top: 1px solid rgba(255, 255, 255, 0.18); border-right-color: rgba(255, 255, 255, 0.18); border-bottom-color: rgba(255, 255, 255, 0.18); border-left-color: rgba(255, 255, 255, 0.18);">RabbitMQ &#xB610;&#xB294; Kafka</td></tr></tbody></table>
<!--kg-card-end: html-->
<hr><h2 id="%EB%B0%B0%EC%9A%B4-%EA%B5%90%ED%9B%88-%EC%9A%B0%EB%A6%AC%EB%A5%BC-%EB%86%80%EB%9D%BC%EA%B2%8C-%ED%95%9C-%EA%B2%83%EB%93%A4">&#xBC30;&#xC6B4; &#xAD50;&#xD6C8;: &#xC6B0;&#xB9AC;&#xB97C; &#xB180;&#xB77C;&#xAC8C; &#xD55C; &#xAC83;&#xB4E4;</h2><p>&#xC774;&#xAC83;&#xC744; &#xAD6C;&#xCD95;&#xD558;&#xBA74;&#xC11C; &#xC608;&#xC0C1;&#xCE58; &#xBABB;&#xD55C; &#xBA87; &#xAC00;&#xC9C0;&#xB97C; &#xBC30;&#xC6E0;&#xC2B5;&#xB2C8;&#xB2E4;.</p><h3 id="1-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%B6%94%EC%B6%9C%EC%9D%80-%EB%B3%B4%EA%B8%B0%EB%B3%B4%EB%8B%A4-%EC%96%B4%EB%A0%B5%EC%8A%B5%EB%8B%88%EB%8B%A4">1. &#xBA54;&#xBAA8;&#xB9AC; &#xCD94;&#xCD9C;&#xC740; &#xBCF4;&#xAE30;&#xBCF4;&#xB2E4; &#xC5B4;&#xB835;&#xC2B5;&#xB2C8;&#xB2E4;</h3><p>&#xCD08;&#xAE30; &#xC811;&#xADFC; &#xBC29;&#xC2DD;&#xC740; &#xB108;&#xBB34; &#xACF5;&#xACA9;&#xC801;&#xC774;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;&#x2014;&#xBAA8;&#xB4E0; &#xAC83;&#xC744; &#xC800;&#xC7A5;&#xD558;&#xACE0; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xACB0;&#xACFC;&#xB294;&#xC694;? &#xAC80;&#xC0C9; &#xACB0;&#xACFC;&#xB97C; &#xB35C; &#xC720;&#xC6A9;&#xD558;&#xAC8C; &#xB9CC;&#xB4DC;&#xB294; &#xB178;&#xC774;&#xC988;&#xAC00; &#xB9CE;&#xC740; &#xBA54;&#xBAA8;&#xB9AC;. &#xD575;&#xC2EC;&#xC740; &#xC120;&#xD0DD;&#xC801;&#xC774; &#xB418;&#xB294; &#xAC83;&#xC774;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;: &#xBA85;&#xC2DC;&#xC801; &#xBA85;&#xB839;&#xACFC; &#xBA85;&#xD655;&#xD55C; &#xC120;&#xD638;&#xB3C4; &#xC9C4;&#xC220;&#xB9CC;.</p><h3 id="2-%EC%8B%A0%EB%A2%B0%EB%8F%84-%EC%A0%90%EC%88%98%EB%8A%94-%ED%95%84%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4">2. &#xC2E0;&#xB8B0;&#xB3C4; &#xC810;&#xC218;&#xB294; &#xD544;&#xC218;&#xC785;&#xB2C8;&#xB2E4;</h3><p>&#xBAA8;&#xB4E0; &#xBA54;&#xBAA8;&#xB9AC;&#xAC00; &#xB3D9;&#xB4F1;&#xD558;&#xAC8C; &#xC2E0;&#xB8B0;&#xD560; &#xC218; &#xC788;&#xB294; &#xAC83;&#xC740; &#xC544;&#xB2D9;&#xB2C8;&#xB2E4;. &#xACE0;&#xAC1D;&#xC774; &#xD55C; &#xB300;&#xD654;&#xC5D0;&#xC11C; &quot;&#xC774;&#xBA54;&#xC77C;&#xC744; &#xC120;&#xD638;&#xD574;&#xC694;&quot;&#xB77C;&#xACE0; &#xB9D0;&#xD558;&#xB294; &#xAC83;&#xC740; &#xC5EC;&#xB7EC; &#xC138;&#xC158;&#xC5D0; &#xAC78;&#xCCD0; &#xC138; &#xBC88; &#xB9D0;&#xD558;&#xB294; &#xAC83;&#xBCF4;&#xB2E4; &#xB35C; &#xD655;&#xC2E4;&#xD569;&#xB2C8;&#xB2E4;. &#xC2E0;&#xB8B0;&#xB3C4; &#xC810;&#xC218;&#xB97C; &#xD575;&#xC2EC; &#xB370;&#xC774;&#xD130; &#xBAA8;&#xB378;&#xC5D0; &#xAD6C;&#xCD95;&#xD574;&#xC57C; &#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p><h3 id="3-%EC%95%95%EC%B6%95-%EC%A0%84%EB%9E%B5%EC%9D%80-%EC%83%9D%EA%B0%81%EB%B3%B4%EB%8B%A4-%EC%A4%91%EC%9A%94%ED%95%A9%EB%8B%88%EB%8B%A4">3. &#xC555;&#xCD95; &#xC804;&#xB7B5;&#xC740; &#xC0DD;&#xAC01;&#xBCF4;&#xB2E4; &#xC911;&#xC694;&#xD569;&#xB2C8;&#xB2E4;</h3><p>&#xCC98;&#xC74C;&#xC5D0;&#xB294; &#xB2E8;&#xC21C; &#xC798;&#xB77C;&#xB0B4;&#xAE30;&#xB97C; &#xAE30;&#xBCF8;&#xAC12;&#xC73C;&#xB85C; &#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB098;&#xC05C; &#xC544;&#xC774;&#xB514;&#xC5B4;&#xC600;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB300;&#xD654; &#xCD08;&#xBC18;&#xC758; &#xC911;&#xC694;&#xD55C; &#xB9E5;&#xB77D;&#xC774; &#xC0AD;&#xC81C;&#xB418;&#xACE0; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC694;&#xC57D; &#xAE30;&#xBC18; &#xC555;&#xCD95;&#xC740; &#xCD94;&#xAC00;&#xC801;&#xC778; &#xBCF5;&#xC7A1;&#xC131;&#xC744; &#xAC10;&#xC218;&#xD560; &#xAC00;&#xCE58;&#xAC00; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p><h3 id="4-a2a-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC%9D%80-%EC%8B%A0%EC%A4%91%ED%95%9C-%EC%84%A4%EA%B3%84%EA%B0%80-%ED%95%84%EC%9A%94%ED%95%A9%EB%8B%88%EB%8B%A4">4. A2A &#xD504;&#xB85C;&#xD1A0;&#xCF5C;&#xC740; &#xC2E0;&#xC911;&#xD55C; &#xC124;&#xACC4;&#xAC00; &#xD544;&#xC694;&#xD569;&#xB2C8;&#xB2E4;</h3><p>&#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xAC04; &#xD1B5;&#xC2E0;&#xC740; &#xB8E8;&#xD504;&#xC640; &#xBD88;&#xC77C;&#xCE58;&#xC758; &#xAC00;&#xB2A5;&#xC131;&#xC744; &#xB9CC;&#xB4ED;&#xB2C8;&#xB2E4;. &#xBA87; &#xAC00;&#xC9C0; &#xC548;&#xC804;&#xC7A5;&#xCE58;&#xB97C; &#xCD94;&#xAC00;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;:</p><ul><li>&#xBA54;&#xC2DC;&#xC9C0; &#xC911;&#xBCF5; &#xC81C;&#xAC70;</li><li>&#xC804;&#xB2EC;&#xB41C; &#xC815;&#xBCF4;&#xC5D0; &#xB300;&#xD55C; &#xC2E0;&#xB8B0;&#xB3C4; &#xAC10;&#xC18C;</li><li>&#xB514;&#xBC84;&#xAE45;&#xC744; &#xC704;&#xD55C; &#xBA85;&#xD655;&#xD55C; &#xC18C;&#xC2A4; &#xCD94;&#xC801;</li></ul><hr><h2 id="%EB%8B%A4%EC%9D%8C%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94">&#xB2E4;&#xC74C;&#xC740; &#xBB34;&#xC5C7;&#xC778;&#xAC00;&#xC694;?</h2><p>&#xC6B0;&#xB9AC;&#xB294; &#xB05D;&#xB098;&#xC9C0; &#xC54A;&#xC558;&#xC2B5;&#xB2C8;&#xB2E4;. &#xD0D0;&#xC0C9; &#xC911;&#xC778; &#xAC83;&#xB4E4;:</p><p><strong>&#xB2E8;&#xAE30;:</strong></p><ul><li>&#xC758;&#xBBF8; &#xAC80;&#xC0C9;&#xC744; &#xC704;&#xD55C; &#xB354; &#xB098;&#xC740; &#xC784;&#xBCA0;&#xB529; &#xBAA8;&#xB378;</li><li>&#xC601;&#xAD6C; &#xC800;&#xC7A5;&#xC18C; &#xBC31;&#xC5D4;&#xB4DC; (&#xD604;&#xC7AC; &#xC778;&#xBA54;&#xBAA8;&#xB9AC;)</li><li>&#xBA54;&#xBAA8;&#xB9AC; &#xC5C5;&#xB370;&#xC774;&#xD2B8;&#xB97C; &#xC704;&#xD55C; &#xB354; &#xC815;&#xAD50;&#xD55C; &#xCDA9;&#xB3CC; &#xD574;&#xACB0;</li></ul><p><strong>&#xC7A5;&#xAE30;:</strong></p><ul><li>&#xBA54;&#xBAA8;&#xB9AC; &#xD1B5;&#xD569; (&#xC778;&#xAC04;&#xC758; &#xC218;&#xBA74;&#xCC98;&#xB7FC;, &#xAE30;&#xC5B5;&#xC774; &#xC7AC;&#xAD6C;&#xC131;&#xB418;&#xB294; &#xAC83;)</li><li>&#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xAC04; &#xC5F0;&#xD569; &#xD559;&#xC2B5;</li><li>&#xD504;&#xB77C;&#xC774;&#xBC84;&#xC2DC; &#xBCF4;&#xC874; &#xBA54;&#xBAA8;&#xB9AC; &#xACF5;&#xC720;</li></ul><hr><h2 id="%EC%A7%81%EC%A0%91-%ED%95%B4%EB%B3%B4%EC%84%B8%EC%9A%94">&#xC9C1;&#xC811; &#xD574;&#xBCF4;&#xC138;&#xC694;</h2><p>&#xBAA8;&#xB4E0; &#xAC83;&#xC774; &#xC624;&#xD508; &#xC18C;&#xC2A4;&#xC785;&#xB2C8;&#xB2E4;. &#xD074;&#xB860;&#xD558;&#xACE0;, &#xC2E4;&#xD589;&#xD558;&#xACE0;, &#xBD80;&#xC218;&#xACE0;, &#xAC1C;&#xC120;&#xD558;&#xC138;&#xC694;.</p><pre><code class="language-bash">git clone https://github.com/your-org/a2a-memory-layer
cd a2a-memory-layer

# &#xBC31;&#xC5D4;&#xB4DC;
cd backend &amp;&amp; pip install -r requirements.txt &amp;&amp; python api.py

# &#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC; (&#xC0C8; &#xD130;&#xBBF8;&#xB110;)
cd frontend &amp;&amp; npm install &amp;&amp; npm run dev

# http://localhost:3000/agents &#xC5F4;&#xAE30;
</code></pre><p>&#xB370;&#xBAA8; &#xC2DC;&#xB098;&#xB9AC;&#xC624;&#xAC00; &#xBBF8;&#xB9AC; &#xAD6C;&#xC131;&#xB418;&#xC5B4; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xD074;&#xB9AD;&#xD558;&#xBA74;&#xC11C; &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xB4E4;&#xC774; &#xD611;&#xC5C5;&#xD558;&#xB294; &#xAC83;&#xC744; &#xC9C0;&#xCF1C;&#xBCF4;&#xC138;&#xC694;.</p><hr><h2 id="%EA%B0%90%EC%82%AC%EC%9D%98-%EB%A7%90">&#xAC10;&#xC0AC;&#xC758; &#xB9D0;</h2><p>&#xC774; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xB294; &#xAC70;&#xC778;&#xB4E4;&#xC758; &#xC5B4;&#xAE68; &#xC704;&#xC5D0; &#xC11C; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;:</p><ul><li><strong>Google&#xC758; Context Engineering &#xD300;</strong>&#xA0;- &#xAE30;&#xCD08;&#xAC00; &#xB41C; &#xBC31;&#xC11C;</li><li><strong>Ollama</strong>&#xA0;- &#xB85C;&#xCEEC; LLM &#xBC30;&#xD3EC;&#xB97C; &#xC811;&#xADFC; &#xAC00;&#xB2A5;&#xD558;&#xAC8C; &#xB9CC;&#xB4E4;&#xC5B4;&#xC90C;</li><li><strong>&#xC624;&#xD508;&#xC18C;&#xC2A4; &#xCEE4;&#xBBA4;&#xB2C8;&#xD2F0;</strong>&#xA0;- Flask, Next.js, &#xADF8;&#xB9AC;&#xACE0; &#xC218;&#xB9CE;&#xC740; &#xB2E4;&#xB978; &#xB3C4;&#xAD6C;&#xB4E4;</li></ul><hr><h2 id="%EA%B8%B0%EC%97%AC%ED%95%98%EA%B3%A0-%EC%8B%B6%EC%9C%BC%EC%8B%A0%EA%B0%80%EC%9A%94">&#xAE30;&#xC5EC;&#xD558;&#xACE0; &#xC2F6;&#xC73C;&#xC2E0;&#xAC00;&#xC694;?</h2><p>&#xB2E4;&#xC74C;&#xC5D0; &#xB300;&#xD55C; &#xB3C4;&#xC6C0;&#xC744; &#xD658;&#xC601;&#xD569;&#xB2C8;&#xB2E4;:<br><br>&#x1F517; Demo Repository: <a href="https://github.com/Sardor-M/a2a-memory-system?ref=tech.e3view.com">https://github.com/Sardor-M/a2a-memory-system</a></p><ul><li>&#xC0C8;&#xB85C;&#xC6B4; &#xBA54;&#xBAA8;&#xB9AC; &#xC555;&#xCD95; &#xC54C;&#xACE0;&#xB9AC;&#xC998;</li><li>&#xC0C8;&#xB85C;&#xC6B4; &#xC5D0;&#xC774;&#xC804;&#xD2B8; &#xC804;&#xBB38;&#xD654;</li><li>&#xC131;&#xB2A5; &#xCD5C;&#xC801;&#xD654;</li><li>&#xB354; &#xB098;&#xC740; &#xBB38;&#xC11C; (&#xB124;, &#xC774; README &#xD3EC;&#xD568;)</li></ul><p>&#xC774;&#xC288;&#xB97C; &#xC5F4;&#xAC70;&#xB098; PR&#xC744; &#xC81C;&#xCD9C;&#xD558;&#xC138;&#xC694;. &#xD568;&#xAED8; &#xD765;&#xBBF8;&#xB85C;&#xC6B4; &#xAC83;&#xC744; &#xB9CC;&#xB4E4;&#xC5B4;&#xBD05;&#xC2DC;&#xB2E4;.</p><hr>]]></content:encoded></item><item><title><![CDATA[[시리즈 2편] 실무로 배우는 메시지 큐 - RabbitMQ]]></title><description><![CDATA[<p></p><h2 id="%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0">&#xB4E4;&#xC5B4;&#xAC00;&#xBA70;</h2>
<blockquote>
<p>[&#xC2DC;&#xB9AC;&#xC988;1]&#xC5D0;&#xC11C;&#xB294; &#xD504;&#xB85C;&#xC138;&#xC2A4; &#xB0B4;&#xBD80; &#xBA54;&#xC2DC;&#xC9C0; &#xD050;&#xB97C; &#xB2E4;&#xB918;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC774;&#xBC88;&#xC5D4; <strong>&#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xBA54;&#xC2DC;&#xC9C0; &#xD050;</strong>&#xC778; RabbitMQ&#xB97C; &#xB2E4;&#xB8F9;&#xB2C8;&#xB2E4;.</p>
</blockquote>
<p>RabbitMQ &#xACF5;&#xC2DD; &#xBB38;&#xC11C;</p>]]></description><link>https://tech.e3view.com/sirijeu2-silmuro-baeuneun-mesiji-kyu-rabbitmq/</link><guid isPermaLink="false">693019edf4b84ffe438370b8</guid><category><![CDATA[3view]]></category><category><![CDATA[쓰리뷰]]></category><category><![CDATA[esg]]></category><category><![CDATA[rabbitmq]]></category><dc:creator><![CDATA[Jeonggil]]></dc:creator><pubDate>Wed, 03 Dec 2025 11:10:04 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2025/12/map-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://tech.e3view.com/content/images/2025/12/map-1.png" alt="[&#xC2DC;&#xB9AC;&#xC988; 2&#xD3B8;] &#xC2E4;&#xBB34;&#xB85C; &#xBC30;&#xC6B0;&#xB294; &#xBA54;&#xC2DC;&#xC9C0; &#xD050; - RabbitMQ"><p></p><h2 id="%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0">&#xB4E4;&#xC5B4;&#xAC00;&#xBA70;</h2>
<blockquote>
<p>[&#xC2DC;&#xB9AC;&#xC988;1]&#xC5D0;&#xC11C;&#xB294; &#xD504;&#xB85C;&#xC138;&#xC2A4; &#xB0B4;&#xBD80; &#xBA54;&#xC2DC;&#xC9C0; &#xD050;&#xB97C; &#xB2E4;&#xB918;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC774;&#xBC88;&#xC5D4; <strong>&#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xBA54;&#xC2DC;&#xC9C0; &#xD050;</strong>&#xC778; RabbitMQ&#xB97C; &#xB2E4;&#xB8F9;&#xB2C8;&#xB2E4;.</p>
</blockquote>
<p>RabbitMQ &#xACF5;&#xC2DD; &#xBB38;&#xC11C;&#xB098; &#xAE30;&#xC220; &#xBE14;&#xB85C;&#xADF8;&#xB294; &#xB9CE;&#xC9C0;&#xB9CC;, <strong>&#xC2E4;&#xBB34;&#xC5D0;&#xC11C; &#xC5B4;&#xB5BB;&#xAC8C; &#xC0AC;&#xC6A9;&#xD558;&#xB294;&#xC9C0;</strong>&#xC5D0; &#xB300;&#xD55C; &#xAE00;&#xC740; &#xC758;&#xC678;&#xB85C; &#xC801;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&quot;Producer&#xAC00; &#xBB50;&#xACE0; Consumer&#xAC00; &#xBB54;&#xC9C0;&#xB294; &#xC54C;&#xACA0;&#xB294;&#xB370;, &#xADF8;&#xB798;&#xC11C; &#xC2E4;&#xC81C;&#xB85C;&#xB294; &#xC5B4;&#xB5BB;&#xAC8C; &#xC4F0;&#xB294;&#xB370;?&quot;</p>
<p>&#xC774;&#xBC88; &#xAE00;&#xC5D0;&#xC11C;&#xB294; &#xC6B0;&#xB9AC; MES &#xC2DC;&#xC2A4;&#xD15C;&#xC5D0;&#xC11C; RabbitMQ&#xB97C; &#xC5B4;&#xB5BB;&#xAC8C; &#xD65C;&#xC6A9;&#xD558;&#xACE0; &#xC788;&#xB294;&#xC9C0; <strong>&#xC2E4;&#xC81C; &#xCF54;&#xB4DC;&#xC640; &#xD568;&#xAED8;</strong> &#xACF5;&#xC720;&#xD569;&#xB2C8;&#xB2E4;.</p>
<hr>
<h2 id="%EC%9A%B0%EB%A6%AC-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EA%B5%AC%EC%84%B1">&#xC6B0;&#xB9AC; &#xC2DC;&#xC2A4;&#xD15C;&#xC758; &#xAD6C;&#xC131;</h2>
<p>MES &#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xAD00;&#xB9AC;&#xC790; PC 1&#xB300;&#xC640; &#xD604;&#xC7A5; Worker PC &#xC218;&#xC2ED; &#xB300;&#xAC00; &#xC5F0;&#xB3D9;&#xB429;&#xB2C8;&#xB2E4;. &#xAD00;&#xB9AC;&#xC790;&#xAC00; &#xC0DD;&#xC0B0;&#xC9C0;&#xC2DC;&#xB97C; &#xB4F1;&#xB85D;&#xD558;&#xBA74;, &#xD604;&#xC7A5;&#xC758; <strong>&#xBAA8;&#xB4E0; Worker PC</strong>&#xC5D0; &#xC989;&#xC2DC; &#xC54C;&#xB9BC;&#xC774; &#xC804;&#xB2EC;&#xB418;&#xC5B4;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;.</p>
<hr>
<h2 id="%ED%98%84%EC%9E%AC-%EC%82%AC%EC%9A%A9-%EC%A4%91%EC%9D%B8-%EB%B0%A9%EC%8B%9D-rabbitmq">&#xD604;&#xC7AC; &#xC0AC;&#xC6A9; &#xC911;&#xC778; &#xBC29;&#xC2DD;: RabbitMQ</h2>
<h3 id="rabbitmq-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98">RabbitMQ &#xC544;&#xD0A4;&#xD14D;&#xCC98;</h3>
<pre><code class="language-json">&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;                     RabbitMQ Server                       &#x2502;
&#x2502;                                                           &#x2502;
&#x2502;  &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;    &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;    &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;    &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510; &#x2502;
&#x2502;  &#x2502;Producer &#x2502;&#x2500;&#x2500;&#x2500;&#x2192;&#x2502; Exchange &#x2502;&#x2500;&#x2500;&#x2500;&#x2192;&#x2502; Queue &#x2502;&#x2500;&#x2500;&#x2500;&#x2192;&#x2502; Consumer &#x2502; &#x2502;
&#x2502;  &#x2502;(&#xC11C;&#xBC84;)   &#x2502;    &#x2502;(&#xB77C;&#xC6B0;&#xD305;)   &#x2502;    &#x2502;(&#xB300;&#xAE30;&#xC5F4;)&#x2502;   &#x2502;(&#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8;)&#x2502;&#x2502;
&#x2502;  &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;    &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;    &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;    &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518; &#x2502;
&#x2502;                                                           &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;

Producer: Spring Boot API &#xC11C;&#xBC84;
Exchange: &#xB77C;&#xC6B0;&#xD305; &#xADDC;&#xCE59;&#xC5D0; &#xB530;&#xB77C; &#xBA54;&#xC2DC;&#xC9C0; &#xC804;&#xB2EC;
Queue:    &#xAC01; Worker PC&#xBCC4; &#xBA54;&#xC2DC;&#xC9C0; &#xB300;&#xAE30;&#xC5F4; (ALARM_QUE_WPC001)
Consumer: C# Worker PC &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8;
</code></pre>
<h3 id="%EC%8B%A4%EC%A0%9C-%EB%8F%99%EC%9E%91-%EB%B0%A9%EC%8B%9D">&#xC2E4;&#xC81C; &#xB3D9;&#xC791; &#xBC29;&#xC2DD;</h3>
<pre><code class="language-json">&#xAD00;&#xB9AC;&#xC790;&#xAC00; &#xC0DD;&#xC0B0;&#xC9C0;&#xC2DC; &#xB4F1;&#xB85D;
  &#x2502;
  &#x2514;&#x2500;&#x2192; RabbitMQ&#xC5D0; &#xBA54;&#xC2DC;&#xC9C0; &#xB358;&#xC9D0; (&#xB05D;!)
      &#x2502;
      &#x251C;&#x2500;&#x2192; Worker PC 1 (&#xC989;&#xC2DC; &#xC804;&#xB2EC;)
      &#x251C;&#x2500;&#x2192; Worker PC 2 (&#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xBCF5;&#xAD6C; &#xC2DC; &#xC790;&#xB3D9; &#xC804;&#xB2EC;)
      &#x2514;&#x2500;&#x2192; Worker PC 3 (&#xC989;&#xC2DC; &#xC804;&#xB2EC;)

&#xC11C;&#xBC84;&#xB294; &#xBA54;&#xC2DC;&#xC9C0; &#xC804;&#xC1A1; &#xD6C4; &#xBC14;&#xB85C; &#xB2E4;&#xC74C; &#xC791;&#xC5C5; &#xCC98;&#xB9AC; &#xAC00;&#xB2A5;
</code></pre>
<p><strong>&#xC7A5;&#xC810;:</strong></p>
<ul>
<li>&#xC11C;&#xBC84;&#xB294; RabbitMQ&#xC5D0;&#xB9CC; &#xBA54;&#xC2DC;&#xC9C0; &#xC804;&#xB2EC; (&#xBE14;&#xB85C;&#xD0B9; &#xC5C6;&#xC74C;)</li>
<li>&#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xC7A5;&#xC560; &#xC2DC; &#xC790;&#xB3D9; &#xC7AC;&#xC2DC;&#xB3C4;</li>
<li>Worker PC &#xC99D;&#xC124; &#xC2DC; &#xCF54;&#xB4DC; &#xC218;&#xC815; &#xBD88;&#xD544;&#xC694;</li>
</ul>
<hr>
<h2 id="%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%A1%B0">&#xC2DC;&#xC2A4;&#xD15C; &#xAD6C;&#xC870;</h2>
<h3 id="mes-%EC%95%8C%EB%A6%BC-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%A0%84%EC%B2%B4-%ED%9D%90%EB%A6%84">MES &#xC54C;&#xB9BC; &#xC2DC;&#xC2A4;&#xD15C; &#xC804;&#xCCB4; &#xD750;&#xB984;</h3>
<pre><code class="language-json">&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;   &#xAD00;&#xB9AC;&#xC790; PC      &#x2502;  1. &#xC0DD;&#xC0B0;&#xC9C0;&#xC2DC; &#xB4F1;&#xB85D;
&#x2502;                 &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
         &#x2502;
         &#x25BC;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;       &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  Spring Boot    &#x2502;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2192;&#x2502;    RabbitMQ     &#x2502;  2. &#xBA54;&#xC2DC;&#xC9C0; &#xBC1C;&#xC1A1;
&#x2502;   API &#xC11C;&#xBC84;      &#x2502;   2-1 &#x2502;     &#xC11C;&#xBC84;         &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;       &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                                   &#x2502; 3. &#xB77C;&#xC6B0;&#xD305;
         &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x253C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
         &#x25BC;                         &#x25BC;                         &#x25BC;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;     &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;     &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;   Worker PC 1   &#x2502;     &#x2502;   Worker PC 2   &#x2502;     &#x2502;   Worker PC 3   &#x2502;
&#x2502;   (&#xC124;&#xBE44; A)      &#x2502;     &#x2502;   (&#xC124;&#xBE44; B)       &#x2502;     &#x2502;   (&#xC124;&#xBE44; C)      &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;     &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;     &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
  4. &#xC54C;&#xB9BC; &#xD31D;&#xC5C5; &#xD45C;&#xC2DC;         4. &#xC54C;&#xB9BC; &#xD31D;&#xC5C5; &#xD45C;&#xC2DC;       4. &#xC54C;&#xB9BC; &#xD31D;&#xC5C5; &#xD45C;&#xC2DC;
  5. &#xB370;&#xC774;&#xD130; &#xC0C8;&#xB85C;&#xACE0;&#xCE68;        5. &#xB370;&#xC774;&#xD130; &#xC0C8;&#xB85C;&#xACE0;&#xCE68;       5. &#xB370;&#xC774;&#xD130; &#xC0C8;&#xB85C;&#xACE0;&#xCE68;
</code></pre>
<h3 id="%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%83%80%EC%9E%85-%EC%A0%95%EC%9D%98">&#xBA54;&#xC2DC;&#xC9C0; &#xD0C0;&#xC785; &#xC815;&#xC758;</h3>
<pre><code class="language-csharp">// &#xC2E4;&#xC2DC;&#xAC04; &#xC54C;&#xB9BC; &#xBA54;&#xC2DC;&#xC9C0; &#xD0C0;&#xC785;
public enum MqMessageType
{
    WORKORDER_ADDED,      // &#xC0DD;&#xC0B0;&#xC9C0;&#xC2DC; &#xCD94;&#xAC00;
    WORKORDER_DELETED,    // &#xC0DD;&#xC0B0;&#xC9C0;&#xC2DC; &#xC0AD;&#xC81C;
    ...
}
</code></pre>
<hr>
<h2 id="%EC%BD%94%EB%93%9C%EB%A1%9C-%EB%B3%B4%EB%8A%94-%EC%8B%A4%EC%A0%9C-%EA%B5%AC%ED%98%84">&#xCF54;&#xB4DC;&#xB85C; &#xBCF4;&#xB294; &#xC2E4;&#xC81C; &#xAD6C;&#xD604;</h2>
<h3 id="%EC%84%9C%EB%B2%84-%EC%B8%A1-spring-boot">&#xC11C;&#xBC84; &#xCE21; (Spring Boot)</h3>
<h3 id="1-%EC%84%A4%EC%A0%95-applicationyml">1. &#xC124;&#xC815; (application.yml)</h3>
<pre><code class="language-yaml">spring:
  rabbitmq:
    host: 192.xxx.xxx.xxx
    port: 5672
    username: xxx
    password: xxx

  alarmmq:
    exchange: alarm.topic # Topic Exchange
    queue: ALARM_QUE_ # &#xD050; &#xC811;&#xB450;&#xC0AC;
</code></pre>
<h3 id="2-%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%B0%9C%EC%86%A1-api">2. &#xBA54;&#xC2DC;&#xC9C0; &#xBC1C;&#xC1A1; API</h3>
<pre><code class="language-java">@RestController
@RequestMapping(&quot;/api&quot;)
public class QueueController {

    private final RabbitTemplate rabbitTemplate;

    @Value(&quot;${spring.alarmmq.exchange}&quot;)
    private String EXCHANGE_NAME;

    @PostMapping(&quot;/messagePub&quot;)
    public CommonResult MessagePub(@RequestBody AlarmInfo[] alarmInfo) {
        try {
            // 1. &#xC218;&#xC2E0;&#xC790; &#xBAA9;&#xB85D; &#xCD94;&#xCD9C;
            HashSet&lt;String&gt; userNoSet = new HashSet&lt;&gt;();
            for (AlarmInfo alarm : alarmInfo) {
                userNoSet.add(alarm.getUserNo());
            }

            // 2. &#xC0AC;&#xC6A9;&#xC790;&#xBCC4; &#xD050; &#xC0DD;&#xC131; &#xBC0F; &#xBC14;&#xC778;&#xB529;
            for (String userNo : userNoSet) {
                Queue queue = new Queue(&quot;ALARM_QUE_&quot; + userNo, true);
                amqpAdmin.declareQueue(queue);

                TopicExchange exchange = new TopicExchange(EXCHANGE_NAME);
                amqpAdmin.declareBinding(
                    BindingBuilder.bind(queue).to(exchange).with(userNo + &quot;.#&quot;)
                );
            }

            // 3. &#xBA54;&#xC2DC;&#xC9C0; &#xBC1C;&#xC1A1;
            for (AlarmInfo alarm : alarmInfo) {
                rabbitTemplate.convertAndSend(
                    EXCHANGE_NAME,         // Exchange
                    alarm.getUserNo(),     // &#xB77C;&#xC6B0;&#xD305; &#xD0A4;
                    alarm                  // &#xBA54;&#xC2DC;&#xC9C0;
                );
            }

            return responseService.getSuccessResult();
        } catch (Exception e) {
            return responseService.getFailResult(&quot;MQE001&quot;, &quot;&#xBA54;&#xC2DC;&#xC9C0; &#xC804;&#xC1A1; &#xC2E4;&#xD328;&quot;);
        }
    }
}
</code></pre>
<hr>
<h3 id="%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%B8%A1-c-winforms">&#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8; &#xCE21; (C# WinForms)</h3>
<h3 id="1-mq-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%B4%88%EA%B8%B0%ED%99%94">1. MQ &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8; &#xCD08;&#xAE30;&#xD654;</h3>
<pre><code class="language-csharp">public class BackgroundForm : BackgroundFormUI
{
    private MqClient mqClient;

    private void InitializeMqClient()
    {
        // &#xD050; &#xC774;&#xB984;: workerPc.WPC001
        string queue = &quot;workerPc.&quot; + ConnectionConfig.WorkerPcId;

        mqClient = new MqClient(queue);
        mqClient.MessageQueueReceived += MqClient_MessageQueueReceived;

        if (mqClient.IsOpen)
            ShowNotification(&quot;MQ &#xC11C;&#xBC84; &#xC5F0;&#xACB0; &#xC131;&#xACF5;&quot;, NotificationType.Success);
        else
            ShowNotification(&quot;MQ &#xC11C;&#xBC84; &#xC5F0;&#xACB0; &#xC2E4;&#xD328;&quot;, NotificationType.Error);
    }
}
</code></pre>
<h3 id="2-%EB%A9%94%EC%8B%9C%EC%A7%80-%EC%88%98%EC%8B%A0-%EC%B2%98%EB%A6%AC">2. &#xBA54;&#xC2DC;&#xC9C0; &#xC218;&#xC2E0; &#xCC98;&#xB9AC;</h3>
<pre><code class="language-csharp">private void MqClient_MessageQueueReceived(MqMessageModel mqMessage)
{
    string message = string.Empty;

    switch (mqMessage.MqMessage)
    {
        case MqMessageType.WORKORDER_ADDED:
        case MqMessageType.WORKORDER_DELETED:
            message = &quot;&#xC0DD;&#xC0B0;&#xC9C0;&#xC2DC; &#xC815;&#xBCF4;&#xAC00; &#xC5C5;&#xB370;&#xC774;&#xD2B8; &#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.&quot;;
            WorkorderUpdateRequired?.Invoke(mqMessage.MchId, null);
            break;

        ...
    }

    // UI &#xC2A4;&#xB808;&#xB4DC;&#xC5D0;&#xC11C; &#xC54C;&#xB9BC; &#xD45C;&#xC2DC;
    this.BeginInvoke(new MethodInvoker(delegate
    {
        TrayNotification frm = new TrayNotification();
        frm.showAlert(message, TrayNotification.enmType.Info);
    }));
}
</code></pre>
<hr>
<h2 id="%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%9D%90%EB%A6%84-%EC%8B%9C%ED%80%80%EC%8A%A4-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8">&#xBA54;&#xC2DC;&#xC9C0; &#xD750;&#xB984; (&#xC2DC;&#xD000;&#xC2A4; &#xB2E4;&#xC774;&#xC5B4;&#xADF8;&#xB7A8;)</h2>
<pre><code class="language-json">&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;   &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;   &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;   &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;   &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; &#xAD00;&#xB9AC;&#xC790; &#x2502;   &#x2502;  API    &#x2502;   &#x2502;RabbitMQ &#x2502;   &#x2502;  Queue   &#x2502;   &#x2502; Worker   &#x2502;
&#x2502;   PC   &#x2502;   &#x2502; Server  &#x2502;   &#x2502; Server  &#x2502;   &#x2502;          &#x2502;   &#x2502;   PC     &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;   &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;   &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;   &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;   &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
    &#x2502;             &#x2502;              &#x2502;             &#x2502;             &#x2502;
    &#x2502;&#xC0DD;&#xC0B0;&#xC9C0;&#xC2DC; &#xB4F1;&#xB85D; &#x2502;              &#x2502;             &#x2502;              &#x2502;
    &#x2502;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&gt;&#x2502;              &#x2502;             &#x2502;              &#x2502;
    &#x2502;             &#x2502;              &#x2502;             &#x2502;              &#x2502;
    &#x2502;             &#x2502;DB &#xC800;&#xC7A5;       &#x2502;             &#x2502;              &#x2502;
    &#x2502;             &#x2502;              &#x2502;             &#x2502;              &#x2502;
    &#x2502;             &#x2502;&#xBA54;&#xC2DC;&#xC9C0; &#xBC1C;&#xC1A1;    &#x2502;             &#x2502;              &#x2502;
    &#x2502;             &#x2502;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&gt;&#x2502;             &#x2502;              &#x2502;
    &#x2502;             &#x2502;              &#x2502;             &#x2502;              &#x2502;
    &#x2502;             &#x2502;              &#x2502;&#xD050;&#xC5D0; &#xC800;&#xC7A5;      &#x2502;             &#x2502;
    &#x2502;             &#x2502;              &#x2502;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&gt;&#x2502;              &#x2502;
    &#x2502;             &#x2502;              &#x2502;             &#x2502;              &#x2502;
    &#x2502;             &#x2502;              &#x2502;             &#x2502;&#xBA54;&#xC2DC;&#xC9C0; &#xC804;&#xB2EC;    &#x2502;
    &#x2502;             &#x2502;              &#x2502;             &#x2502;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&gt;&#x2502;
    &#x2502;             &#x2502;              &#x2502;             &#x2502;              &#x2502;
    &#x2502;             &#x2502;              &#x2502;             &#x2502;  &#xC54C;&#xB9BC; &#xD45C;&#xC2DC;    &#x2502;
    &#x2502;             &#x2502;              &#x2502;             &#x2502;  &#xB370;&#xC774;&#xD130; &#xAC31;&#xC2E0;  &#x2502;
    &#x2502;             &#x2502;              &#x2502;             &#x2502;              &#x2502;
</code></pre>
<p><strong>&#xC18C;&#xC694; &#xC2DC;&#xAC04;</strong>: &#xBA54;&#xC2DC;&#xC9C0; &#xBC1C;&#xC1A1;&#xBD80;&#xD130; &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8; &#xC218;&#xC2E0;&#xAE4C;&#xC9C0; &#xD3C9;&#xADE0; <strong>50~100ms</strong></p>
<hr>
<h2 id="exchange-%ED%83%80%EC%9E%85%EA%B3%BC-%EB%9D%BC%EC%9A%B0%ED%8C%85">Exchange &#xD0C0;&#xC785;&#xACFC; &#xB77C;&#xC6B0;&#xD305;</h2>
<h3 id="topic-exchange-%ED%98%84%EC%9E%AC-%EC%8B%9C%EC%8A%A4%ED%85%9C">Topic Exchange (&#xD604;&#xC7AC; &#xC2DC;&#xC2A4;&#xD15C;)</h3>
<pre><code class="language-json">&#xB77C;&#xC6B0;&#xD305; &#xD328;&#xD134;: &quot;&#xC0AC;&#xC6A9;&#xC790;&#xBC88;&#xD638;.#&quot;

&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  Topic Exchange &#x2502;
&#x2502;  &quot;alarm.topic&quot;  &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
         &#x2502; &#xB77C;&#xC6B0;&#xD305; &#xD0A4;: &quot;WPC001&quot;
         &#x2502;
    &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2534;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
    &#x25BC;         &#x25BC;             &#x25BC;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510; &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510; &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; Queue 1 &#x2502; &#x2502; Queue 2 &#x2502; &#x2502; Queue 3 &#x2502;
&#x2502; WPC001  &#x2502; &#x2502; WPC002  &#x2502; &#x2502; WPC003  &#x2502;
&#x2502;  .#     &#x2502; &#x2502;  .#     &#x2502; &#x2502;  .#     &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518; &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518; &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
   &#x2705; &#xC804;&#xB2EC;    &#x274C; &#xBD88;&#xC77C;&#xCE58;   &#x274C; &#xBD88;&#xC77C;&#xCE58;
</code></pre>
<h3 id="exchange-%ED%83%80%EC%9E%85-%EB%B9%84%EA%B5%90">Exchange &#xD0C0;&#xC785; &#xBE44;&#xAD50;</h3>
<table>
<thead>
<tr>
<th>&#xD0C0;&#xC785;</th>
<th>&#xB77C;&#xC6B0;&#xD305; &#xBC29;&#xC2DD;</th>
<th>&#xC0AC;&#xC6A9; &#xC608;&#xC2DC;</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Direct</strong></td>
<td>&#xC815;&#xD655;&#xD788; &#xC77C;&#xCE58;</td>
<td>&#xD2B9;&#xC815; PC 1&#xB300;</td>
</tr>
<tr>
<td><strong>Topic</strong></td>
<td>&#xD328;&#xD134; &#xB9E4;&#xCE6D; (*, #)</td>
<td>&#xBD80;&#xC11C;&#xBCC4;, &#xAD8C;&#xD55C;&#xBCC4;</td>
</tr>
<tr>
<td><strong>Fanout</strong></td>
<td>&#xBE0C;&#xB85C;&#xB4DC;&#xCE90;&#xC2A4;&#xD2B8;</td>
<td>&#xC804;&#xCCB4; &#xACF5;&#xC9C0;</td>
</tr>
</tbody>
</table>
<hr>
<h2 id="%EB%A7%88%EC%B9%98%EB%A9%B0">&#xB9C8;&#xCE58;&#xBA70;</h2>
<h3 id="windows-%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%81%90-vs-rabbitmq">Windows &#xBA54;&#xC2DC;&#xC9C0; &#xD050; vs RabbitMQ</h3>
<table>
<thead>
<tr>
<th>&#xD56D;&#xBAA9;</th>
<th>Windows &#xBA54;&#xC2DC;&#xC9C0; &#xD050;</th>
<th>RabbitMQ</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>&#xBC94;&#xC704;</strong></td>
<td>&#xB2E8;&#xC77C; &#xD504;&#xB85C;&#xC138;&#xC2A4;</td>
<td>&#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xC804;&#xCCB4;</td>
</tr>
<tr>
<td><strong>&#xC6A9;&#xB3C4;</strong></td>
<td>UI &#xC774;&#xBCA4;&#xD2B8;</td>
<td>&#xC2DC;&#xC2A4;&#xD15C; &#xAC04; &#xD1B5;&#xC2E0;</td>
</tr>
<tr>
<td><strong>&#xC601;&#xC18D;&#xC131;</strong></td>
<td>&#xC5C6;&#xC74C;</td>
<td>&#xC788;&#xC74C; (&#xC11C;&#xBC84; &#xC7AC;&#xC2DC;&#xC791; &#xD6C4;&#xC5D0;&#xB3C4; &#xC720;&#xC9C0;)</td>
</tr>
<tr>
<td><strong>&#xB77C;&#xC6B0;&#xD305;</strong></td>
<td>&#xC5C6;&#xC74C;</td>
<td>Exchange&#xB85C; &#xC720;&#xC5F0;&#xD55C; &#xBD84;&#xBC30;</td>
</tr>
</tbody>
</table>
<h3 id="%ED%95%B5%EC%8B%AC-%ED%8F%AC%EC%9D%B8%ED%8A%B8">&#xD575;&#xC2EC; &#xD3EC;&#xC778;&#xD2B8;</h3>
<p><strong>&quot;&#xC11C;&#xBC84;&#xC640; &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8;&#xB97C; &#xB290;&#xC2A8;&#xD558;&#xAC8C; &#xC5F0;&#xACB0;&#xD558;&#xB77C;&quot;</strong></p>
<ul>
<li>&#xC9C1;&#xC811; &#xD638;&#xCD9C;: &#xAC15;&#xD55C; &#xACB0;&#xD569; (&#xD55C; &#xB300; &#xC7A5;&#xC560; = &#xC804;&#xCCB4; &#xC601;&#xD5A5;)</li>
<li>RabbitMQ: &#xB290;&#xC2A8;&#xD55C; &#xACB0;&#xD569; (&#xBA54;&#xC2DC;&#xC9C0;&#xB9CC; &#xB358;&#xC9C0;&#xACE0; &#xB05D;)</li>
</ul>
<p>&#xC774; &#xD328;&#xD134;&#xC740; Kafka, Redis Pub/Sub &#xB4F1; &#xB2E4;&#xB978; &#xBA54;&#xC2DC;&#xC9D5; &#xC2DC;&#xC2A4;&#xD15C;&#xC5D0;&#xB3C4; &#xB3D9;&#xC77C;&#xD558;&#xAC8C; &#xC801;&#xC6A9;&#xB429;&#xB2C8;&#xB2E4;.</p>
<h3 id="%EC%9D%B4-%EA%B8%80%EC%9D%B4-%EB%8F%84%EC%9B%80%EC%9D%B4-%EB%90%98%EC%97%88%EC%9C%BC%EB%A9%B4">&#xC774; &#xAE00;&#xC774; &#xB3C4;&#xC6C0;&#xC774; &#xB418;&#xC5C8;&#xC73C;&#xBA74;</h3>
<table>
<thead>
<tr>
<th>&#xAE30;&#xC220;&#xBE14;&#xB85C;&#xADF8;&#xC5D0;&#xC11C; &#xC790;&#xC8FC; &#xBCF4;&#xB294; &#xAE00;</th>
<th>&#xD604;&#xC2E4;&#xC758; &#xC6B0;&#xB9AC;</th>
</tr>
</thead>
<tbody>
<tr>
<td>&quot;&#xC6B0;&#xB9AC;&#xAC00; Kafka, RabbitMQ&#xB97C; &#xC120;&#xD0DD;&#xD55C; &#xC774;&#xC720;&quot;</td>
<td>&#xC785;&#xC0AC;&#xD588;&#xB354;&#xB2C8; &#xC774;&#xBBF8; &#xAE54;&#xB824;&#xC788;&#xC74C;</td>
</tr>
<tr>
<td>&quot;&#xCD08;&#xB2F9; 100&#xB9CC; TPS &#xCC98;&#xB9AC;&#xAE30;&quot;</td>
<td>MES&#xB294; &#xD558;&#xB8E8;&#xC5D0; &#xC218;&#xBC31;~&#xBA87;&#xCC9C; &#xAC74;&#xC774;&#xBA74; &#xB9CE;&#xC740; &#xAC70;</td>
</tr>
<tr>
<td>&quot;&#xC7A5;&#xC560; &#xB300;&#xC751; &#xD3EC;&#xC2A4;&#xD2B8;&#xBAA8;&#xD15C;&quot;</td>
<td>&#xC7A5;&#xC560;&#xB098;&#xBA74; &#xBE14;&#xB85C;&#xADF8; &#xC4F8; &#xC2DC;&#xAC04;&#xC5D0; &#xACE0;&#xCCD0;&#xC57C; &#xD568;</td>
</tr>
</tbody>
</table>
<p>&#xC774; &#xAE00;&#xC740; &#xB808;&#xAC70;&#xC2DC; MES &#xC2DC;&#xC2A4;&#xD15C;&#xC744; &#xD558;&#xC790;&#xBCF4;&#xC218;&#xD558;&#xBA74;&#xC11C; &#xBC30;&#xC6B4; &#xB0B4;&#xC6A9;&#xC785;&#xB2C8;&#xB2E4;.<br>
&#xD654;&#xB824;&#xD55C; &#xC2E0;&#xADDC; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xAC00; &#xC544;&#xB2C8;&#xC5B4;&#xB3C4;, &#xB204;&#xAD70;&#xAC00; &#xB9CC;&#xB4E4;&#xC5B4;&#xB454; &#xC2DC;&#xC2A4;&#xD15C;&#xC744; &#xC774;&#xD574;&#xD558;&#xACE0; &#xBB38;&#xC81C;&#xB97C; &#xD574;&#xACB0;&#xD558;&#xB294; &#xACFC;&#xC815;&#xC5D0;&#xC11C; &#xBC30;&#xC6B0;&#xB294; &#xAC83;&#xB3C4; &#xB9CE;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xBA54;&#xC2DC;&#xC9C0; &#xD050;&#xC5D0; &#xB300;&#xD55C; &#xAC1C;&#xB150; &#xAE00;&#xC774;&#xB098; &#xC544;&#xD0A4;&#xD14D;&#xCC98; &#xB2E4;&#xC774;&#xC5B4;&#xADF8;&#xB7A8;&#xC740; &#xB9CE;&#xC9C0;&#xB9CC;, &#xC815;&#xC791; <strong>&quot;&#xC2E4;&#xBB34;&#xC5D0;&#xC11C; &#xC5B4;&#xB5BB;&#xAC8C; &#xC4F0;&#xB294;&#xB370;?&quot;</strong> &#xC5D0; &#xB300;&#xD55C; &#xB2F5;&#xC740; &#xC758;&#xC678;&#xB85C; &#xCC3E;&#xAE30; &#xC5B4;&#xB824;&#xC6E0;&#xC2B5;&#xB2C8;&#xB2E4;. &#xBE44;&#xC2B7;&#xD55C; &#xAD81;&#xAE08;&#xC99D;&#xC744; &#xAC00;&#xC84C;&#xB358; &#xBD84;&#xB4E4;&#xAED8; &#xC774; &#xAE00;&#xC774; &#xC870;&#xAE08;&#xC774;&#xB098;&#xB9C8; &#xB3C4;&#xC6C0;&#xC774; &#xB418;&#xC5C8;&#xC73C;&#xBA74; &#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xAC10;&#xC0AC;&#xD569;&#xB2C8;&#xB2E4;.</p>
<hr>
<h2 id="%EC%B0%B8%EA%B3%A0-%EC%9E%90%EB%A3%8C">&#xCC38;&#xACE0; &#xC790;&#xB8CC;</h2>
<ul>
<li><a href="https://www.rabbitmq.com/documentation.html?ref=tech.e3view.com">RabbitMQ &#xACF5;&#xC2DD; &#xBB38;&#xC11C;</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[[시리즈 1편] 실무로 배우는 메시지 큐 - Windows Message Loop]]></title><description><![CDATA[<p></p><h2 id="%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0">&#xB4E4;&#xC5B4;&#xAC00;&#xBA70;</h2>
<p>&#xC774; &#xAE00;&#xC740; <strong>&quot;&#xC2E4;&#xBB34;&#xB85C; &#xBC30;&#xC6B0;&#xB294; &#xBA54;&#xC2DC;&#xC9C0; &#xD050;&quot;</strong> &#xC2DC;&#xB9AC;&#xC988;&#xC758; &#xCCAB; &#xBC88;&#xC9F8; &#xAE00;&#xC785;&#xB2C8;&#xB2E4;.</p>
<p>&#xC2E4;&#xBB34;&#xC5D0;&#xC11C; &#xBC1C;&#xACAC;&#xD55C; &#xBB38;&#xC81C;&#xB97C; &#xD574;&#xACB0;&#xD558;&#xB294; &#xACFC;&#xC815;&#xC5D0;&#xC11C;, IME &#xC785;</p>]]></description><link>https://tech.e3view.com/sirijeu1-silmuro-baeuneun-mesiji-kyu-windows-message-loop/</link><guid isPermaLink="false">693017dff4b84ffe4383709f</guid><category><![CDATA[3view]]></category><category><![CDATA[쓰리뷰]]></category><category><![CDATA[machine365]]></category><category><![CDATA[mq]]></category><category><![CDATA[mes]]></category><dc:creator><![CDATA[Jeonggil]]></dc:creator><pubDate>Wed, 03 Dec 2025 11:03:51 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2025/12/map.png" medium="image"/><content:encoded><![CDATA[<img src="https://tech.e3view.com/content/images/2025/12/map.png" alt="[&#xC2DC;&#xB9AC;&#xC988; 1&#xD3B8;] &#xC2E4;&#xBB34;&#xB85C; &#xBC30;&#xC6B0;&#xB294; &#xBA54;&#xC2DC;&#xC9C0; &#xD050; - Windows Message Loop"><p></p><h2 id="%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0">&#xB4E4;&#xC5B4;&#xAC00;&#xBA70;</h2>
<p>&#xC774; &#xAE00;&#xC740; <strong>&quot;&#xC2E4;&#xBB34;&#xB85C; &#xBC30;&#xC6B0;&#xB294; &#xBA54;&#xC2DC;&#xC9C0; &#xD050;&quot;</strong> &#xC2DC;&#xB9AC;&#xC988;&#xC758; &#xCCAB; &#xBC88;&#xC9F8; &#xAE00;&#xC785;&#xB2C8;&#xB2E4;.</p>
<p>&#xC2E4;&#xBB34;&#xC5D0;&#xC11C; &#xBC1C;&#xACAC;&#xD55C; &#xBB38;&#xC81C;&#xB97C; &#xD574;&#xACB0;&#xD558;&#xB294; &#xACFC;&#xC815;&#xC5D0;&#xC11C;, IME &#xC785;&#xB825; &#xBB38;&#xC81C;&#xC640; &#xD574;&#xACB0; &#xACFC;&#xC815;&#xC744; &#xACF5;&#xC720;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xBA54;&#xC2DC;&#xC9C0; &#xD050;&#xB294; RabbitMQ, Kafka &#xAC19;&#xC740; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xB808;&#xBCA8;&#xB9CC; &#xC788;&#xB294; &#xAC8C; &#xC544;&#xB2D9;&#xB2C8;&#xB2E4;. &#xC6B0;&#xB9AC;&#xAC00; &#xB9E4;&#xC77C; &#xC4F0;&#xB294; Windows &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158;&#xB3C4; &#xBA54;&#xC2DC;&#xC9C0; &#xD050; &#xAE30;&#xBC18;&#xC73C;&#xB85C; &#xB3D9;&#xC791;&#xD569;&#xB2C8;&#xB2E4;.</p>
<ul>
<li><strong>&#xC2DC;&#xB9AC;&#xC988;1 (&#xC774; &#xAE00;)</strong>: &#xD504;&#xB85C;&#xC138;&#xC2A4; &#xB0B4;&#xBD80;&#xC758; &#xBA54;&#xC2DC;&#xC9C0; &#xD050; - Windows Message Loop&#xC758; &#xC774;&#xD574;&#xC640; &#xD65C;&#xC6A9;</li>
<li><strong>&#xC2DC;&#xB9AC;&#xC988;2</strong>: &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xB808;&#xBCA8;&#xC758; &#xBA54;&#xC2DC;&#xC9C0; &#xD050; - RabbitMQ</li>
</ul>
<hr>
<h2 id="%EB%AC%B8%EC%A0%9C-%EC%83%81%ED%99%A9">&#xBB38;&#xC81C; &#xC0C1;&#xD669;</h2>
<p>MES &#xC2DC;&#xC2A4;&#xD15C; &#xC6B4;&#xC601; &#xC911; &#xACE0;&#xAC1D;&#xC73C;&#xB85C;&#xBD80;&#xD130; &#xC774;&#xB7F0; &#xBB38;&#xC758;&#xAC00; &#xBC18;&#xBCF5;&#xC801;&#xC73C;&#xB85C; &#xB4E4;&#xC5B4;&#xC654;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<blockquote>
<p>&quot;&#xC124;&#xBE44;&#xCF54;&#xB4DC; &#xAC80;&#xC0C9;&#xC774; &#xC548; &#xB3FC;&#xC694;. &#xBD84;&#xBA85;&#xD788; SS0002 &#xC785;&#xB825;&#xD588;&#xB294;&#xB370;...&quot;</p>
</blockquote>
<p>&#xD655;&#xC778;&#xD574;&#xBCF4;&#xB2C8; &#xC2E4;&#xC81C; &#xC785;&#xB825;&#xB41C; &#xAC12;&#xC740; <code>&#xFF33;&#xFF33;&#xFF10;&#xFF10;&#xFF10;&#xFF12;</code> (&#xC804;&#xAC01; &#xBB38;&#xC790;)&#xC600;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC791;&#xC5C5;&#xC790;&#xB4E4;&#xC774; &#xBA54;&#xBAA8;&#xC7A5;, &#xC5D1;&#xC140;, MES&#xB97C; &#xC624;&#xAC00;&#xBA70; &#xC791;&#xC5C5;&#xD558;&#xB2E4; &#xBCF4;&#xB2C8; <strong>IME &#xC0C1;&#xD0DC;&#xAC00; &#xC804;&#xAC01; &#xBAA8;&#xB4DC;&#xB85C; &#xACE0;&#xC815;</strong>&#xB418;&#xC5B4; &#xBC1C;&#xC0DD;&#xD55C; &#xBB38;&#xC81C;&#xC600;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-json">&#xBC18;&#xAC01;: SS0002, ABC123  &#x2192; &#xAC80;&#xC0C9; &#xAC00;&#xB2A5;
&#xC804;&#xAC01;: &#xFF33;&#xFF33;&#xFF10;&#xFF10;&#xFF10;&#xFF12;, &#xFF21;&#xFF22;&#xFF23;&#xFF11;&#xFF12;&#xFF13;  &#x2192; &#xAC80;&#xC0C9; &#xBD88;&#xAC00;
</code></pre>
<p>&#xCC98;&#xC74C;&#xC5D4; &#xD2B9;&#xC815; &#xBA54;&#xB274;&#xC5D0;&#xB9CC; &#xC801;&#xC6A9;&#xD558;&#xB824; &#xD588;&#xC73C;&#xB098;, &#xC5EC;&#xB7EC; &#xD654;&#xBA74;&#xC5D0;&#xC11C; &#xB3D9;&#xC77C;&#xD55C; &#xBB38;&#xC81C;&#xAC00; &#xBC1C;&#xC0DD;&#xD574; <strong>&#xC804;&#xCCB4; &#xC2DC;&#xC2A4;&#xD15C; &#xB808;&#xBCA8;</strong>&#xC5D0;&#xC11C; &#xD574;&#xACB0;&#xD558;&#xAE30;&#xB85C; &#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<hr>
<h2 id="%EC%8B%9C%EB%8F%84%ED%95%9C-%EB%B0%A9%EB%B2%95%EB%93%A4">&#xC2DC;&#xB3C4;&#xD55C; &#xBC29;&#xBC95;&#xB4E4;</h2>
<pre><code class="language-json">| &#xBC29;&#xBC95;                      | &#xACB0;&#xACFC; | &#xBB38;&#xC81C;&#xC810;                                     |
| ------------------------- | ---- | ------------------------------------------ |
| TextChanged &#xC774;&#xBCA4;&#xD2B8;        | &#x274C;   | &#xBB34;&#xD55C; &#xB8E8;&#xD504; (Text &#xBCC0;&#xACBD; &#x2192; &#xC774;&#xBCA4;&#xD2B8; &#xBC1C;&#xC0DD; &#x2192; &#xBC18;&#xBCF5;) |
| KeyPress &#xC774;&#xBCA4;&#xD2B8;           | &#x274C;   | IME &#xC870;&#xD569; &#xC911; &#xBB38;&#xC790; &#xCE90;&#xCE58; &#xBABB;&#xD568;                 |
| IMessageFilter (WM_CHAR)  | &#x274C;   | WM_IME_CHAR&#xB294; &#xC870;&#xD569; &#xC644;&#xB8CC; &#xD6C4;&#xC5D0;&#xB9CC; &#xB3C4;&#xCC29;        |
| Form.Activated + IME &#xB9AC;&#xC14B; | &#x25B3;    | &#xBA54;&#xC778;&#xD3FC;&#xB9CC; &#xB3D9;&#xC791;, &#xD31D;&#xC5C5;&#xC740; &#xC548; &#xB428;                |
| **Application.Idle**      | &#x2705;   | **&#xBAA8;&#xB4E0; &#xD3FC;&#xC5D0;&#xC11C; &#xB3D9;&#xC791;, &#xC785;&#xB825; &#xC9C1;&#xD6C4; &#xBCC0;&#xD658;**       |
</code></pre>
<hr>
<h2 id="%ED%95%B4%EA%B2%B0%EC%B1%85-applicationidle-%EC%9D%B4%EB%B2%A4%ED%8A%B8">&#xD574;&#xACB0;&#xCC45;: Application.Idle &#xC774;&#xBCA4;&#xD2B8;</h2>
<h3 id="windows-%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%81%90-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98">Windows &#xBA54;&#xC2DC;&#xC9C0; &#xD050; &#xC544;&#xD0A4;&#xD14D;&#xCC98;</h3>
<p>Windows Forms&#xB294; <strong>&#xBA54;&#xC2DC;&#xC9C0; &#xD050;</strong> &#xAE30;&#xBC18;&#xC73C;&#xB85C; &#xB3D9;&#xC791;&#xD569;&#xB2C8;&#xB2E4;. &#xBAA8;&#xB4E0; &#xC0AC;&#xC6A9;&#xC790; &#xC785;&#xB825;(&#xD0A4;&#xBCF4;&#xB4DC;, &#xB9C8;&#xC6B0;&#xC2A4;)&#xC740; &#xBA54;&#xC2DC;&#xC9C0;&#xB85C; &#xBCC0;&#xD658;&#xB418;&#xC5B4; &#xD050;&#xC5D0; &#xC313;&#xC774;&#xACE0;, <code>Application.Run</code>&#xC774; &#xC21C;&#xCC28;&#xC801;&#xC73C;&#xB85C; &#xCC98;&#xB9AC;&#xD569;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-json">&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;              Windows Message Queue                  &#x2502;
&#x2502;  &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;  &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;  &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;  &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;            &#x2502;
&#x2502;  &#x2502; WM_  &#x2502;&#x2192; &#x2502; WM_  &#x2502;&#x2192; &#x2502; WM_  &#x2502;&#x2192; &#x2502; WM_  &#x2502;  ...       &#x2502;
&#x2502;  &#x2502; KEY  &#x2502;  &#x2502; IME  &#x2502;  &#x2502;MOUSE &#x2502;  &#x2502;PAINT &#x2502;            &#x2502;
&#x2502;  &#x2502; DOWN &#x2502;  &#x2502; CHAR &#x2502;  &#x2502; MOVE &#x2502;  &#x2502;      &#x2502;            &#x2502;
&#x2502;  &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;  &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;  &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;  &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;            &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
         &#x2502;
         &#x25BC;
    &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
    &#x2502;Application.Run  &#x2502;  &#x2190; &#xBA54;&#xC2DC;&#xC9C0; &#xB8E8;&#xD504; (Message Pump)
    &#x2502;  (Main Thread)  &#x2502;
    &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
         &#x2502;
         &#x251C;&#x2500;&#x2192; &#xD050;&#xC5D0; &#xBA54;&#xC2DC;&#xC9C0; &#xC788;&#xC74C; &#x2192; &#xBA54;&#xC2DC;&#xC9C0; &#xCC98;&#xB9AC;
         &#x2502;                      (WM_IME_CHAR &#x2192; TextBox&#xC5D0; &apos;&#xFF21;&apos; &#xC785;&#xB825;)
         &#x2502;
         &#x2514;&#x2500;&#x2192; &#xD050;&#xAC00; &#xBE44;&#xC5B4;&#xC788;&#xC74C; &#x2192; Application.Idle &#xBC1C;&#xC0DD; &#x26A1;
                              (&#xC6B0;&#xB9AC; &#xCF54;&#xB4DC; &#xC2E4;&#xD589;: &apos;&#xFF21;&apos; &#x2192; &apos;A&apos; &#xBCC0;&#xD658;)
</code></pre>
<h3 id="%ED%95%B5%EC%8B%AC-%EC%95%84%EC%9D%B4%EB%94%94%EC%96%B4">&#xD575;&#xC2EC; &#xC544;&#xC774;&#xB514;&#xC5B4;</h3>
<p><code>Application.Idle</code>&#xC740; &#xBA54;&#xC2DC;&#xC9C0; &#xD050;&#xAC00; &#xBE44;&#xC5B4;&#xC788;&#xC744; &#xB54C;, &#xC989; <strong>&#xBAA8;&#xB4E0; &#xC785;&#xB825; &#xCC98;&#xB9AC;&#xAC00; &#xC644;&#xB8CC;&#xB41C; &#xC9C1;&#xD6C4;</strong> &#xBC1C;&#xC0DD;&#xD569;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-csharp">// Application.Run &#xB0B4;&#xBD80; &#xB3D9;&#xC791; (&#xC758;&#xC0AC; &#xCF54;&#xB4DC;)
while (&#xD504;&#xB85C;&#xADF8;&#xB7A8; &#xC2E4;&#xD589; &#xC911;)
{
    if (&#xBA54;&#xC2DC;&#xC9C0;&#xD050;&#xC5D0; &#xBA54;&#xC2DC;&#xC9C0; &#xC788;&#xC74C;)
        &#xBA54;&#xC2DC;&#xC9C0; &#xCC98;&#xB9AC;();  // WM_KEYDOWN &#x2192; TextBox &#xC785;&#xB825;
    else
        Application.Idle &#xBC1C;&#xC0DD;();  // &#x2190; &#xC5EC;&#xAE30;&#xC11C; &#xBCC0;&#xD658;!
}
</code></pre>
<h3 id="%ED%83%80%EC%9D%B4%EB%B0%8D-%EB%B9%84%EA%B5%90-%EC%99%9C-idle%EC%9D%B4-%EC%99%84%EB%B2%BD%ED%95%9C%EA%B0%80">&#xD0C0;&#xC774;&#xBC0D; &#xBE44;&#xAD50;: &#xC65C; Idle&#xC774; &#xC644;&#xBCBD;&#xD55C;&#xAC00;?</h3>
<pre><code class="language-json">&#xD0C0;&#xC784;&#xB77C;&#xC778;: &#xC804;&#xAC01; &apos;&#xFF21;&apos; &#xC785;&#xB825; &#xC2DC; &#xAC01; &#xC774;&#xBCA4;&#xD2B8; &#xBC1C;&#xC0DD; &#xC2DC;&#xC810;
&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;

[&#xC785;&#xB825; &#xC2DC;&#xC791;]    [IME &#xC870;&#xD569;]    [&#xBB38;&#xC790; &#xD655;&#xC815;]    [&#xD654;&#xBA74; &#xC5C5;&#xB370;&#xC774;&#xD2B8;]
     &#x2502;             &#x2502;             &#x2502;                &#x2502;
     &#x25BC;             &#x25BC;             &#x25BC;                &#x25BC;
&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x25CF;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x25CF;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x25CF;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x25CF;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2192; &#xC2DC;&#xAC04;

     &#x274C; KeyPress      (&#xB108;&#xBB34; &#xBE60;&#xB984; - IME &#xC870;&#xD569; &#xC804;&#xC774;&#xB77C; &#xCE90;&#xCE58; &#xBABB;&#xD568;)

                  &#x274C; IMessageFilter (&#xC774;&#xBBF8; &#xC870;&#xD569; &#xC644;&#xB8CC; &#xD6C4;)

                                &#x274C; TextChanged (&#xBCC0;&#xD658; &#xC2DC; &#xB2E4;&#xC2DC; &#xBC1C;&#xC0DD; &#x2192; &#xBB34;&#xD55C;&#xB8E8;&#xD504;)

                                               &#x2705; Application.Idle
                                               (&#xD050; &#xBE44;&#xC5C8;&#xC74C; = &#xC785;&#xB825; &#xC644;&#xB8CC;)
</code></pre>
<p><strong>Application.Idle&#xC774; &#xC644;&#xBCBD;&#xD55C; &#xC774;&#xC720;:</strong></p>
<ul>
<li>&#x2705; &#xC785;&#xB825;&#xC774; &#xC644;&#xB8CC;&#xB41C; &#xD6C4; &#xD638;&#xCD9C; (TextBox&#xC5D0; &#xC774;&#xBBF8; &#xD45C;&#xC2DC;&#xB41C; &#xC0C1;&#xD0DC;)</li>
<li>&#x2705; &#xD55C; &#xBC88;&#xB9CC; &#xC2E4;&#xD589; (&#xBB34;&#xD55C;&#xB8E8;&#xD504; &#xC5C6;&#xC74C;)</li>
<li>&#x2705; &#xBAA8;&#xB4E0; &#xD3FC;&#xC5D0;&#xC11C; &#xC790;&#xB3D9; &#xB3D9;&#xC791;</li>
</ul>
<h3 id="%EA%B5%AC%ED%98%84-%EC%BD%94%EB%93%9C">&#xAD6C;&#xD604; &#xCF54;&#xB4DC;</h3>
<p><strong>Program.cs</strong></p>
<pre><code class="language-csharp">static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    // &#xC804;&#xAC01;&#x2192;&#xBC18;&#xAC01; &#xC790;&#xB3D9; &#xBCC0;&#xD658; &#xB4F1;&#xB85D;
    Application.Idle += FullWidthConverter.Application_Idle;

    Application.Run(new MainForm());
}
</code></pre>
<p><strong>FullWidthConverter.cs</strong></p>
<pre><code class="language-csharp">public static class FullWidthConverter
{
    public static void Application_Idle(object sender, EventArgs e)
    {
        try
        {
            Control focused = GetFocusedControl();
            if (focused == null) return;

            // &#xD3EC;&#xCEE4;&#xC2A4;&#xB41C; &#xCEE8;&#xD2B8;&#xB864;&#xC758; &#xD14D;&#xC2A4;&#xD2B8; &#xBCC0;&#xD658;
            if (focused is TextBox tb)
                ConvertText(tb, () =&gt; tb.Text, s =&gt; tb.Text = s,
                            () =&gt; tb.SelectionStart, v =&gt; tb.SelectionStart = v);
            // TextEdit, ComboBoxEdit &#xB4F1; &#xB3D9;&#xC77C; &#xD328;&#xD134;
        }
        catch { }
    }

    private static string ToHalfWidth(string s)
    {
        if (string.IsNullOrEmpty(s)) return s;
        char[] c = s.ToCharArray();

        for (int i = 0; i &lt; c.Length; i++)
        {
            // &#xC804;&#xAC01; &#xACF5;&#xBC31; &#x2192; &#xBC18;&#xAC01;
            if (c[i] == &apos;\u3000&apos;) c[i] = &apos; &apos;;
            // &#xC804;&#xAC01; ASCII &#x2192; &#xBC18;&#xAC01; (0xFEE0 &#xCC28;&#xC774;)
            else if (c[i] &gt;= &apos;\uFF01&apos; &amp;&amp; c[i] &lt;= &apos;\uFF5E&apos;)
                c[i] = (char)(c[i] - 0xFEE0);
        }

        return new string(c);
    }
}
</code></pre>
<p><strong>&#xC804;&#xAC01;&#x2194;&#xBC18;&#xAC01; &#xBCC0;&#xD658; &#xC6D0;&#xB9AC;</strong></p>
<pre><code class="language-json">&#xC804;&#xAC01; &apos;&#xFF21;&apos; = U+FF21
&#xBC18;&#xAC01; &apos;A&apos;  = U+0041
&#xCC28;&#xC774;&#xAC12;    = 0xFEE0  &#x2190; &#xC774; &#xAC12;&#xB9CC; &#xBE7C;&#xBA74; &#xBCC0;&#xD658; &#xC644;&#xB8CC;
</code></pre>
<hr>
<h2 id="%EC%8B%A4%ED%96%89-%ED%9D%90%EB%A6%84-%EC%8B%9C%ED%80%80%EC%8A%A4-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8">&#xC2E4;&#xD589; &#xD750;&#xB984; (&#xC2DC;&#xD000;&#xC2A4; &#xB2E4;&#xC774;&#xC5B4;&#xADF8;&#xB7A8;)</h2>
<h3 id="%EC%82%AC%EC%9A%A9%EC%9E%90%EA%B0%80-%EC%A0%84%EA%B0%81-%EF%BD%81-%EC%9E%85%EB%A0%A5-%EC%8B%9C">&#xC0AC;&#xC6A9;&#xC790;&#xAC00; &#xC804;&#xAC01; &apos;&#xFF21;&apos; &#xC785;&#xB825; &#xC2DC;</h3>
<pre><code class="language-json">&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;         &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;         &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;         &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  &#xC0AC;&#xC6A9;&#xC790; &#x2502;         &#x2502; Windows  &#x2502;         &#x2502; Message Queue&#x2502;        &#x2502;FullWidth     &#x2502; 
&#x2502;         &#x2502;         &#x2502;   OS     &#x2502;         &#x2502;             &#x2502;         &#x2502;Converter     &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;         &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;         &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;         &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
     &#x2502;                   &#x2502;                      &#x2502;                       &#x2502;
     &#x2502; &apos;&#xFF21;&apos; &#xD0A4; &#xC785;&#xB825;      &#x2502;                       &#x2502;                       &#x2502;
     &#x2502;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&gt;&#x2502;                       &#x2502;                       &#x2502;
     &#x2502;                   &#x2502;                       &#x2502;                       &#x2502;
     &#x2502;                   &#x2502; WM_IME_CHAR &#xC0DD;&#xC131;      &#x2502;                       &#x2502;
     &#x2502;                   &#x2502;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&gt;&#x2502;                       &#x2502;
     &#x2502;                   &#x2502;                       &#x2502;                       &#x2502;
     &#x2502;                   &#x2502;    &#xBA54;&#xC2DC;&#xC9C0; &#xCC98;&#xB9AC; &#xC2DC;&#xC791;    &#x2502;                       &#x2502;
     &#x2502;                   &#x2502;&lt;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2502;                       &#x2502;
     &#x2502;                   &#x2502;                       &#x2502;                       &#x2502;
     &#x2502;                   &#x2502;  TextBox.Text = &quot;&#xFF21;&quot;  &#x2502;                       &#x2502;
     &#x2502;                   &#x2502;  (&#xD654;&#xBA74;&#xC5D0; &#xC804;&#xAC01; &#xD45C;&#xC2DC;)    &#x2502;                       &#x2502;
     &#x2502;                   &#x2502;                       &#x2502;                       &#x2502;
     &#x2502;                   &#x2502;  &#xD050;&#xAC00; &#xBE44;&#xC5B4;&#xC788;&#xC74C;!        &#x2502;                       &#x2502;
     &#x2502;                   &#x2502;  Application.Idle &#xBC1C;&#xC0DD;&#x2502;                       &#x2502;
     &#x2502;                   &#x2502;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&gt;&#x2502;
     &#x2502;                   &#x2502;                       &#x2502;                       &#x2502;
     &#x2502;                   &#x2502;                       &#x2502;    &apos;&#xFF21;&apos; &#x2192; &apos;A&apos; &#xBCC0;&#xD658;     &#x2502;
     &#x2502;                   &#x2502;                       &#x2502;    TextBox.Text = &quot;A&quot; &#x2502;
     &#x2502;                   &#x2502;                       &#x2502;                       &#x2502;
     &#x2502;    &#xD654;&#xBA74;&#xC5D0; &apos;A&apos; &#xD45C;&#xC2DC; (&#xB108;&#xBB34; &#xBE68;&#xB77C;&#xC11C; &apos;&#xFF21;&apos;&#xB294; &#xBABB; &#xBD04;)                        &#x2502;
     &#x2502;&lt;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2502;
     &#x2502;                   &#x2502;                       &#x2502;                       &#x2502;
</code></pre>
<p><strong>&#xC18C;&#xC694; &#xC2DC;&#xAC04;</strong>: &#xC804;&#xCCB4; &#xACFC;&#xC815;&#xC774; &#xC57D; <strong>10ms &#xC774;&#xB0B4;</strong>&#xC5D0; &#xC644;&#xB8CC;&#xB418;&#xC5B4; &#xC0AC;&#xC6A9;&#xC790;&#xB294; &#xC804;&#xAC01; &#xC785;&#xB825;&#xC744; &#xC778;&#xC9C0;&#xD558;&#xC9C0; &#xBABB;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xBD99;&#xC5EC;&#xB123;&#xAE30;(<code>Ctrl+V</code>)&#xB3C4; &#xB3D9;&#xC77C;</strong>: <code>WM_PASTE</code> &#xBA54;&#xC2DC;&#xC9C0; &#xCC98;&#xB9AC; &#xD6C4; Idle &#xBC1C;&#xC0DD; &#x2192; &#xBCC0;&#xD658;</p>
<hr>
<h2 id="%EC%84%B1%EB%8A%A5-%EC%98%81%ED%96%A5">&#xC131;&#xB2A5; &#xC601;&#xD5A5;</h2>
<p><strong>Q: Idle &#xC774;&#xBCA4;&#xD2B8;&#xAC00; &#xB108;&#xBB34; &#xC790;&#xC8FC; &#xD638;&#xCD9C;&#xB418;&#xC9C0; &#xC54A;&#xB098;&#xC694;?</strong></p>
<p>&#xC2E4;&#xC81C; &#xCE21;&#xC815; &#xACB0;&#xACFC; CPU &#xC0AC;&#xC6A9;&#xB7C9; <strong>0.01% &#xBBF8;&#xB9CC;</strong>&#xC785;&#xB2C8;&#xB2E4;.</p>
<hr>
<h2 id="%EB%A7%88%EC%B9%98%EB%A9%B0">&#xB9C8;&#xCE58;&#xBA70;</h2>
<h3 id="%EC%A0%81%EC%9A%A9-%EA%B2%B0%EA%B3%BC">&#xC801;&#xC6A9; &#xACB0;&#xACFC;</h3>
<ul>
<li>&#x2705; &#xC804;&#xAC01; &#xBB38;&#xC790; &#xC785;&#xB825; &#xBB38;&#xC758; <strong>100% &#xD574;&#xC18C;</strong></li>
<li>&#x2705; &#xC0AC;&#xC6A9;&#xC790; &#xCD94;&#xAC00; &#xC870;&#xC791; &#xBD88;&#xD544;&#xC694; (&#xC790;&#xB3D9; &#xBCC0;&#xD658;)</li>
<li>&#x2705; &#xAE30;&#xC874; &#xCF54;&#xB4DC; &#xC218;&#xC815; &#xC5C6;&#xC774; <code>Program.cs</code> &#xD55C; &#xC904; &#xCD94;&#xAC00;&#xB85C; &#xC804;&#xCCB4; &#xC801;&#xC6A9;</li>
</ul>
<h3 id="%ED%95%B5%EC%8B%AC-%EA%B5%90%ED%9B%88">&#xD575;&#xC2EC; &#xAD50;&#xD6C8;</h3>
<p><strong>&quot;&#xD0C0;&#xC774;&#xBC0D;&#xC774; &#xC911;&#xC694;&#xD558;&#xB2E4;&quot;</strong></p>
<ul>
<li><code>TextChanged</code>: &#xB108;&#xBB34; &#xBE60;&#xB984; (&#xBCC0;&#xACBD; &#xC911;)</li>
<li><code>KeyPress</code>: &#xB108;&#xBB34; &#xBE60;&#xB984; (&#xC870;&#xD569; &#xC804;)</li>
<li><code>Application.Idle</code>: <strong>&#xB531; &#xB9DE;&#xC74C; (&#xC785;&#xB825; &#xC644;&#xB8CC; &#xC9C1;&#xD6C4;)</strong></li>
</ul>
<p>Windows &#xBA54;&#xC2DC;&#xC9C0; &#xB8E8;&#xD504;&#xB97C; &#xC774;&#xD574;&#xD558;&#xBA74; &#xBE44;&#xC2B7;&#xD55C; UI &#xD0C0;&#xC774;&#xBC0D; &#xBB38;&#xC81C;&#xB97C; &#xD574;&#xACB0;&#xD560; &#xB54C; &#xC720;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;.</p>
<hr>
<h2 id="%EC%B0%B8%EA%B3%A0-%EC%9E%90%EB%A3%8C">&#xCC38;&#xACE0; &#xC790;&#xB8CC;</h2>
<ul>
<li><a href="https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.application.idle?ref=tech.e3view.com">Microsoft Docs - Application.Idle Event</a></li>
<li><a href="https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)?ref=tech.e3view.com">Unicode Full-width Forms</a></li>
<li><a href="https://docs.microsoft.com/en-us/windows/win32/winmsg/about-messages-and-message-queues?ref=tech.e3view.com">Windows Message Loop</a></li>
</ul>
<hr>
<p><strong>&#xB2E4;&#xC74C; &#xAE00; &#xC608;&#xACE0;</strong><br>
&#xC774;&#xBC88; &#xAE00;&#xC740; <strong>&#xD504;&#xB85C;&#xC138;&#xC2A4; &#xB0B4;&#xBD80;</strong> &#xBA54;&#xC2DC;&#xC9C0; &#xD050;&#xB97C; &#xB2E4;&#xB918;&#xC2B5;&#xB2C8;&#xB2E4;.<br>
&#xB2E4;&#xC74C; &#xD3B8;&#xC5D0;&#xC11C;&#xB294; <strong>&#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xAC04;</strong> &#xBA54;&#xC2DC;&#xC9C0; &#xD050;&#xC778; RabbitMQ&#xB97C; &#xB2E4;&#xB8F9;&#xB2C8;&#xB2E4;.</p>
]]></content:encoded></item><item><title><![CDATA[[시리즈 2편] 그림으로 풀어낸 SaaS 알림 시스템]]></title><description><![CDATA[<p></p><blockquote>
<p>&#xC774; &#xAE00;&#xC740; <a href="https://tech.e3view.com/sirijeu-1pyeon-geurimeuro-puleonaen-saas-alrim-siseutem/">1&#xD3B8; - &#xADF8;&#xB9BC;&#xC73C;&#xB85C; &#xD480;&#xC5B4;&#xB0B8; SaaS &#xC54C;&#xB9BC; &#xC2DC;&#xC2A4;&#xD15C;</a>&#xC758; &#xD6C4;&#xC18D;&#xD3B8;&#xC785;&#xB2C8;&#xB2E4;.</p>
</blockquote>
<h2 id="%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0">&#xB4E4;&#xC5B4;&#xAC00;&#xBA70;</h2>
<p>1&#xD3B8;&#xC5D0;&#xC11C;&#xB294; &#xC124;&#xBE44; &#xC5F0;&#xC18D; OFF &#xC54C;&#xB9BC; &#xAE30;&#xB2A5;&#xC758; &#xD575;&#xC2EC; &#xB85C;&#xC9C1;&#xACFC;</p>]]></description><link>https://tech.e3view.com/sirijeu-2pyeon-geurimeuro-puleonaen-saas-alrim-siseutem/</link><guid isPermaLink="false">691c4e2ff4b84ffe4383708f</guid><category><![CDATA[3view]]></category><category><![CDATA[쓰리뷰]]></category><category><![CDATA[esg]]></category><category><![CDATA[saas]]></category><category><![CDATA[machine365]]></category><dc:creator><![CDATA[Jeonggil]]></dc:creator><pubDate>Tue, 18 Nov 2025 11:00:04 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2025/11/blog_image-4.png" medium="image"/><content:encoded><![CDATA[<img src="https://tech.e3view.com/content/images/2025/11/blog_image-4.png" alt="[&#xC2DC;&#xB9AC;&#xC988; 2&#xD3B8;] &#xADF8;&#xB9BC;&#xC73C;&#xB85C; &#xD480;&#xC5B4;&#xB0B8; SaaS &#xC54C;&#xB9BC; &#xC2DC;&#xC2A4;&#xD15C;"><p></p><blockquote>
<p>&#xC774; &#xAE00;&#xC740; <a href="https://tech.e3view.com/sirijeu-1pyeon-geurimeuro-puleonaen-saas-alrim-siseutem/">1&#xD3B8; - &#xADF8;&#xB9BC;&#xC73C;&#xB85C; &#xD480;&#xC5B4;&#xB0B8; SaaS &#xC54C;&#xB9BC; &#xC2DC;&#xC2A4;&#xD15C;</a>&#xC758; &#xD6C4;&#xC18D;&#xD3B8;&#xC785;&#xB2C8;&#xB2E4;.</p>
</blockquote>
<h2 id="%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0">&#xB4E4;&#xC5B4;&#xAC00;&#xBA70;</h2>
<p>1&#xD3B8;&#xC5D0;&#xC11C;&#xB294; &#xC124;&#xBE44; &#xC5F0;&#xC18D; OFF &#xC54C;&#xB9BC; &#xAE30;&#xB2A5;&#xC758; &#xD575;&#xC2EC; &#xB85C;&#xC9C1;&#xACFC; &#xC5B4;&#xB5A4;&#xC2DD;&#xC73C;&#xB85C; &#xD574;&#xACB0;&#xD588;&#xB294;&#xC9C0; &#xADF8;&#xB9BC;&#xC73C;&#xB85C; &#xC54C;&#xC544;&#xBD24;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC774;&#xBC88; &#xAE00;&#xC5D0;&#xC11C;&#xB294; &#xC2E4;&#xBB34;&#xC5D0;&#xC11C; &#xB9C8;&#xC8FC;&#xD55C; <strong>&#xC9C4;&#xC9DC; &#xACE0;&#xBBFC;</strong>&#xB4E4;&#xC744; &#xACF5;&#xC720;&#xD569;&#xB2C8;&#xB2E4;:</p>
<ul>
<li>&#xC65C; 3&#xAC1C;&#xC758; &#xC0C8;&#xB85C;&#xC6B4; &#xD14C;&#xC774;&#xBE14;&#xC774; &#xD544;&#xC694;&#xD588;&#xB098;?</li>
<li>&#xC5B4;&#xB5BB;&#xAC8C; &#xD655;&#xC7A5; &#xAC00;&#xB2A5;&#xD55C; &#xAD6C;&#xC870;&#xB97C; &#xB9CC;&#xB4E4;&#xC5C8;&#xB098;?</li>
<li><strong>SMS 14&#xC6D0;&#xC9DC;&#xB9AC; &#xC54C;&#xB9BC;&#xC774; &#xC65C; &#xBB34;&#xC11C;&#xC6B4;&#xAC00;?</strong></li>
<li>&#xC6B4;&#xC601; &#xB808;&#xBCA8;&#xB85C; &#xB098;&#xAC00;&#xAE30;&#xAE4C;&#xC9C0; &#xBB34;&#xC5C7;&#xC744; &#xC900;&#xBE44;&#xD588;&#xB098;?</li>
</ul>
<hr>
<h2 id="1-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%84%B1%EA%B3%BC-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%84%A4%EA%B3%84">1. &#xC2DC;&#xC2A4;&#xD15C; &#xAD6C;&#xC131;&#xACFC; &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;</h2>
<h3 id="11-%EA%B8%B0%EC%A1%B4-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%8C%8C%EC%95%85%ED%95%98%EA%B8%B0">1.1 &#xAE30;&#xC874; &#xC2DC;&#xC2A4;&#xD15C; &#xD30C;&#xC545;&#xD558;&#xAE30;</h3>
<p>&#xBA3C;&#xC800; &#xC0AC;&#xC6A9;&#xD574;&#xC57C; &#xB418;&#xB294; <strong>&#xAE30;&#xC874; &#xD14C;&#xC774;&#xBE14;</strong>&#xB4E4;&#xC744; &#xC0B4;&#xD3B4;&#xBD24;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-json">&#xAE30;&#xC874; &#xD14C;&#xC774;&#xBE14;
&#x251C;&#x2500;&#x2500; company
&#x251C;&#x2500;&#x2500; factory
&#x251C;&#x2500;&#x2500; machine
&#x251C;&#x2500;&#x2500; monitoring       # &#xC124;&#xBE44; &#xBAA8;&#xB2C8;&#xD130;&#xB9C1; &#xB370;&#xC774;&#xD130;
&#x251C;&#x2500;&#x2500; user
&#x2514;&#x2500;&#x2500; notification
</code></pre>
<p><strong>monitoring &#xD14C;&#xC774;&#xBE14;</strong>&#xC740; &#xC2E4;&#xC2DC;&#xAC04;&#xC73C;&#xB85C; &#xB370;&#xC774;&#xD130;&#xB97C; &#xBC1B;&#xC544; &#xC800;&#xC7A5;&#xD558;&#xB294; &#xD575;&#xC2EC; &#xD14C;&#xC774;&#xBE14;&#xB85C;, onoff_monitored(&#xC124;&#xBE44; ON/OFF), spm(&#xBD84;&#xB2F9; &#xD68C;&#xC804;&#xC218;), vibration(&#xC9C4;&#xB3D9;), current(&#xC804;&#xB958;) &#xB4F1; &#xB2E4;&#xC591;&#xD55C; &#xB370;&#xC774;&#xD130;&#xB97C; &#xC800;&#xC7A5;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xC774; &#xD14C;&#xC774;&#xBE14;&#xC744; &#xBCF4;&#xBA74;&#xC11C; &#xC911;&#xC694;&#xD55C; &#xAE68;&#xB2EC;&#xC74C;&#xC744; &#xC5BB;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<blockquote>
<p><strong>&quot;&#xC5F0;&#xC18D; OFF &#xC54C;&#xB9BC;&quot;&#xC740; &#xC2DC;&#xC791;&#xC77C; &#xBFD0;&#xC774;&#xB2E4;.</strong><br>
SPM &#xC774;&#xC0C1;, &#xC9C4;&#xB3D9; &#xC784;&#xACC4;&#xCE58; &#xCD08;&#xACFC;, &#xC804;&#xB958; &#xAE09;&#xB4F1; &#xB4F1; &#xB2E4;&#xC591;&#xD55C; &#xC54C;&#xB9BC;&#xC774; &#xD544;&#xC694;&#xD560; &#xAC83;&#xC774;&#xB2E4;.<br>
&#xB610;&#xB294; &#xB2E4;&#xB978; &#xD14C;&#xC774;&#xBE14;&#xC5D0; &#xC788;&#xB294; &#xD2B9;&#xC815;&#xAC12;&#xC744; &#xC0AC;&#xC6A9;&#xD560;&#xC218;&#xB3C4; &#xC788;&#xC744;&#xAC83;&#xC774;&#xB2E4;.</p>
</blockquote>
<h3 id="12-%EC%83%88%EB%A1%9C%EC%9A%B4-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%84%A4%EA%B3%84">1.2 &#xC0C8;&#xB85C;&#xC6B4; &#xD14C;&#xC774;&#xBE14; &#xC124;&#xACC4;</h3>
<p>&#xD68C;&#xC0AC;&#xBCC4;&#xB85C; &#xB2E4;&#xC591;&#xD55C; &#xC54C;&#xB78C;&#xC744; &#xC801;&#xC6A9;&#xD558;&#xACE0; &#xAD00;&#xB9AC;&#xD560;&#xC218;&#xC788;&#xAC8C; <strong>3&#xAC1C;&#xC758; &#xC0C8;&#xB85C;&#xC6B4; &#xD14C;&#xC774;&#xBE14;</strong>&#xC744; &#xC124;&#xACC4;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<h4 id="1%EF%B8%8F%E2%83%A3-alertrule%EC%95%8C%EB%A6%BC-%EA%B7%9C%EC%B9%99-%EC%A0%95%EC%9D%98">1&#xFE0F;&#x20E3; alert_rule - &#xC54C;&#xB9BC; &#xADDC;&#xCE59; &#xC815;&#xC758;</h4>
<p>&#xD68C;&#xC0AC;&#xBCC4;&#xB85C; &#xC5B4;&#xB5A4; &#xC54C;&#xB9BC;&#xC744; &#xC5B4;&#xB5A4; &#xC870;&#xAC74;&#xC73C;&#xB85C; &#xBC1B;&#xC744;&#xC9C0; &#xC124;&#xC815;&#xD558;&#xB294; &#xD14C;&#xC774;&#xBE14;&#xC785;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-sql">CREATE TABLE alert_rule (
    ...
);
</code></pre>
<p><strong>&#xD575;&#xC2EC; &#xCEEC;&#xB7FC;</strong>: <code>id</code>(PK), <code>id_company</code>, <strong><code>rule_type</code></strong>(&#xD655;&#xC7A5; &#xD3EC;&#xC778;&#xD2B8;), <code>count</code>, <code>enabled</code>, <code>resend_interval_minutes</code></p>
<p><strong>rule_type</strong>&#xC73C;&#xB85C; &#xD655;&#xC7A5; &#xAC00;&#xB2A5;&#xD55C; &#xAD6C;&#xC870;&#xC785;&#xB2C8;&#xB2E4;. &#xD604;&#xC7AC;&#xB294; CONSECUTIVE_OFF(&#xC5F0;&#xC18D; OFF)&#xB9CC; &#xAD6C;&#xD604;&#xB418;&#xC5B4; &#xC788;&#xC9C0;&#xB9CC;, &#xD5A5;&#xD6C4; SPM_ABNORMAL, VIBRATION_HIGH, CURRENT_SPIKE &#xB4F1; &#xB2E4;&#xC591;&#xD55C; &#xC54C;&#xB9BC; &#xD0C0;&#xC785;&#xC744; DB &#xB370;&#xC774;&#xD130;&#xB9CC; &#xCD94;&#xAC00;&#xD574;&#xC11C; &#xC9C0;&#xC6D0;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h4 id="2%EF%B8%8F%E2%83%A3-alertmachine%EC%95%8C%EB%A6%BC-%EC%9D%B4%EB%A0%A5-%EA%B4%80%EB%A6%AC">2&#xFE0F;&#x20E3; alert_machine - &#xC54C;&#xB9BC; &#xC774;&#xB825; &#xAD00;&#xB9AC;</h4>
<p>&#xC5B4;&#xB5A4; &#xC124;&#xBE44;&#xC5D0; &#xC5B8;&#xC81C; &#xC54C;&#xB9BC;&#xC774; &#xBC1C;&#xC0DD;&#xD588;&#xB294;&#xC9C0;, &#xC5B8;&#xC81C; &#xD574;&#xC18C;&#xB418;&#xC5C8;&#xB294;&#xC9C0; &#xCD94;&#xC801;&#xD558;&#xB294; &#xD14C;&#xC774;&#xBE14;&#xC785;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-sql">CREATE TABLE alert_machine (
    ...
);
</code></pre>
<p><strong>&#xD575;&#xC2EC; &#xCEEC;&#xB7FC;</strong>: <code>id</code>(PK), <code>id_machine</code>, <code>alert_type</code>, <strong><code>resolved_at</code></strong>(NULL&#xC774;&#xBA74; &#xBBF8;&#xD574;&#xACB0;)</p>
<h4 id="3%EF%B8%8F%E2%83%A3-shedlock%EB%B6%84%EC%82%B0-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%9F%AC-%EB%8F%99%EA%B8%B0%ED%99%94">3&#xFE0F;&#x20E3; shedlock - &#xBD84;&#xC0B0; &#xC2A4;&#xCF00;&#xC904;&#xB7EC; &#xB3D9;&#xAE30;&#xD654;</h4>
<pre><code class="language-sql">CREATE TABLE shedlock (
    ...
);
</code></pre>
<p>&#xB2E4;&#xC911; &#xC11C;&#xBC84; &#xD658;&#xACBD;&#xC5D0;&#xC11C; &#xC2A4;&#xCF00;&#xC904;&#xB7EC;&#xAC00; &#xC911;&#xBCF5; &#xC2E4;&#xD589;&#xB418;&#xC9C0; &#xC54A;&#xB3C4;&#xB85D; &#xB77D;&#xC744; &#xAD00;&#xB9AC;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xACB0;&#xACFC;</strong>: &#xD574;&#xB2F9; &#xC2A4;&#xCF00;&#xC904;&#xB7EC;&#xAC00; &#xB3CC;&#xB54C; &#xD544;&#xC694;&#xD55C; &#xD14C;&#xC774;&#xBE14; &#xAE30;&#xC874; &#xD14C;&#xC774;&#xBE14; 6&#xAC1C; + &#xC2E0;&#xADDC; &#xD14C;&#xC774;&#xBE14; 3&#xAC1C; = <strong>&#xCD1D; 9&#xAC1C; &#xD14C;&#xC774;&#xBE14;</strong> &#xC0AC;&#xC6A9;</p>
<hr>
<h2 id="2-%ED%99%95%EC%9E%A5-%EA%B0%80%EB%8A%A5%ED%95%9C-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%9F%AC-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98">2. &#xD655;&#xC7A5; &#xAC00;&#xB2A5;&#xD55C; &#xC2A4;&#xCF00;&#xC904;&#xB7EC; &#xC544;&#xD0A4;&#xD14D;&#xCC98;</h2>
<h3 id="21-%EC%99%9C-%ED%95%98%EB%82%98%EC%9D%98-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%9F%AC%EC%97%90%EC%84%9C-%EB%AA%A8%EB%93%A0-%EC%95%8C%EB%A6%BC%EC%9D%84-%EC%B2%98%EB%A6%AC%ED%95%98%EB%82%98">2.1 &#xC65C; &#xD558;&#xB098;&#xC758; &#xC2A4;&#xCF00;&#xC904;&#xB7EC;&#xC5D0;&#xC11C; &#xBAA8;&#xB4E0; &#xC54C;&#xB9BC;&#xC744; &#xCC98;&#xB9AC;&#xD558;&#xB098;?</h3>
<p>&#xCD08;&#xAE30;&#xC5D0;&#xB294; &quot;&#xC54C;&#xB9BC; &#xD0C0;&#xC785;&#xB9C8;&#xB2E4; &#xBCC4;&#xB3C4; &#xC2A4;&#xCF00;&#xC904;&#xB7EC;&#xB97C; &#xB9CC;&#xB4E4;&#xBA74; &#xB418;&#xC9C0; &#xC54A;&#xB098;?&quot;&#xB77C;&#xACE0; &#xC0DD;&#xAC01;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-java">// &#x274C; &#xC54C;&#xB9BC; &#xD0C0;&#xC785;&#xB9C8;&#xB2E4; &#xC2A4;&#xCF00;&#xC904;&#xB7EC; &#xC0DD;&#xC131;?
@Scheduled(cron = &quot;0 * * * * *&quot;)
public void checkConsecutiveOffAlerts() { ... }

@Scheduled(cron = &quot;0 * * * * *&quot;)
public void checkSpmAbnormalAlerts() { ... }

@Scheduled(cron = &quot;0 * * * * *&quot;)
public void checkVibrationHighAlerts() { ... }
</code></pre>
<p>&#xD558;&#xC9C0;&#xB9CC; &#xC774; &#xBC29;&#xC2DD;&#xC740; &#xB9AC;&#xC18C;&#xC2A4; &#xB0AD;&#xBE44;(&#xAC01; &#xC2A4;&#xCF00;&#xC904;&#xB7EC;&#xAC00; &#xB3C5;&#xB9BD;&#xC801;&#xC73C;&#xB85C; DB &#xC870;&#xD68C;), &#xD655;&#xC7A5;&#xC131; &#xC81C;&#xD55C;(&#xC0C8; &#xD0C0;&#xC785; &#xCD94;&#xAC00; &#xC2DC; &#xBC30;&#xD3EC; &#xD544;&#xC694;), &#xC720;&#xC9C0;&#xBCF4;&#xC218; &#xC5B4;&#xB824;&#xC6C0;(&#xACF5;&#xD1B5; &#xB85C;&#xC9C1; &#xC911;&#xBCF5;) &#xB4F1;&#xC758; &#xBB38;&#xC81C;&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h3 id="22-%EB%8B%A8%EC%9D%BC-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%9F%AC-%EC%95%8C%EB%A6%BC-%ED%83%80%EC%9E%85-%EB%B0%98%EB%B3%B5-%EA%B5%AC%EC%A1%B0">2.2 &#xB2E8;&#xC77C; &#xC2A4;&#xCF00;&#xC904;&#xB7EC; + &#xC54C;&#xB9BC; &#xD0C0;&#xC785; &#xBC18;&#xBCF5; &#xAD6C;&#xC870;</h3>
<p>&#xB300;&#xC2E0; <strong>&#xD558;&#xB098;&#xC758; &#xC2A4;&#xCF00;&#xC904;&#xB7EC;</strong>&#xC5D0;&#xC11C; <strong>&#xD65C;&#xC131;&#xD654;&#xB41C; &#xC54C;&#xB9BC; &#xADDC;&#xCE59;&#xC744; &#xBC18;&#xBCF5; &#xCC98;&#xB9AC;</strong>&#xD558;&#xB294; &#xAD6C;&#xC870;&#xB97C; &#xC120;&#xD0DD;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-java">@Scheduled(cron = &quot;0 * * * * *&quot;)
@SchedulerLock(name = &quot;alertScheduler&quot;, lockAtMostFor = &quot;50s&quot;, lockAtLeastFor = &quot;10s&quot;)
@Transactional
public void checkAlerts() {
    // 1. &#xD65C;&#xC131;&#xD654;&#xB41C; &#xC54C;&#xB9BC; &#xADDC;&#xCE59; &#xC870;&#xD68C; (&#xBAA8;&#xB4E0; &#xD0C0;&#xC785;)
    List&lt;AlertRuleDto&gt; activeRules = alertRuleRepository.findEnabledRulesAsDto();

    // 2. &#xAC01; &#xADDC;&#xCE59;&#xBCC4;&#xB85C; &#xCC98;&#xB9AC;
    for (AlertRuleDto rule : activeRules) {
        checkRuleForCompany(rule);  // &#xD68C;&#xC0AC;&#xBCC4; &#xC54C;&#xB9BC; &#xCCB4;&#xD06C;
    }
}
</code></pre>
<p>&#xD558;&#xB098;&#xC758; &#xC2E4;&#xD589; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xB97C; &#xACF5;&#xC720;&#xD574; &#xB9AC;&#xC18C;&#xC2A4; &#xD6A8;&#xC728;&#xC801;&#xC774;&#xACE0;, DB&#xC5D0; rule_type&#xB9CC; &#xCD94;&#xAC00;&#xD558;&#xBA74; &#xC0C8;&#xB85C;&#xC6B4; &#xC54C;&#xB9BC; &#xD0C0;&#xC785;&#xC744; &#xC9C0;&#xC6D0;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<hr>
<h2 id="3-%EC%9A%B4%EC%98%81%EC%9D%84-%EA%B3%A0%EB%A0%A4%ED%95%9C-%EB%B0%A9%EC%96%B4%EC%A0%81-%EC%84%A4%EA%B3%84%EC%99%80-%ED%85%8C%EC%8A%A4%ED%8A%B8">3. &#xC6B4;&#xC601;&#xC744; &#xACE0;&#xB824;&#xD55C; &#xBC29;&#xC5B4;&#xC801; &#xC124;&#xACC4;&#xC640; &#xD14C;&#xC2A4;&#xD2B8;</h2>
<h3 id="31-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C%EC%9D%98-%ED%85%8C%EC%8A%A4%ED%8A%B8">3.1 &#xAC1C;&#xBC1C; &#xD658;&#xACBD;&#xC5D0;&#xC11C;&#xC758; &#xD14C;&#xC2A4;&#xD2B8;</h3>
<p>&#xC6B4;&#xC601; &#xADDC;&#xBAA8;&#xB294; &#xD68C;&#xC0AC; N&#xAC1C;, &#xACF5;&#xC7A5; M&#xAC1C;, &#xC124;&#xBE44; &#xCD1D; OO&#xB300; &#xC218;&#xC900;. &#xC7A5;&#xC560;&#xAC00; &#xB0AC;&#xC744; &#xB54C;&#xB97C; &#xAC00;&#xC815;&#xD55C; <strong>&#xB124;&#xAC70;&#xD2F0;&#xBE0C; &#xD14C;&#xC2A4;&#xD2B8;</strong>&#xB97C; &#xBE61;&#xC138;&#xAC8C; &#xC9C4;&#xD589;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h3 id="32-%EB%B9%84%EC%9A%A9%EA%B3%BC-%EC%95%88%EC%A0%95%EC%84%B1%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B3%A0%EB%AF%BC">3.2 &#xBE44;&#xC6A9;&#xACFC; &#xC548;&#xC815;&#xC131;&#xC5D0; &#xB300;&#xD55C; &#xACE0;&#xBBFC;</h3>
<p>&#xC2E4;&#xC81C;&#xB85C;&#xB294; SMS&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC9C4; &#xC54A;&#xC9C0;&#xB9CC;, <strong>&#xB9CC;&#xC57D; SMS &#xBB38;&#xC790; &#xAE30;&#xB2A5;&#xC774; &#xBD99;&#xB294;&#xB2E4;&#xBA74;?</strong> &#xC774;&#xB7F0; &#xC2DC;&#xB098;&#xB9AC;&#xC624;&#xAE4C;&#xC9C0; &#xACE0;&#xB824;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xAC74;&#xB2F9; &#xBE44;&#xC6A9;&#xC774; &#xBC1C;&#xC0DD;&#xD558;&#xB294; &#xAE30;&#xB2A5;&#xC5D0;&#xC11C; &#xC7AC;&#xC804;&#xC1A1; &#xB85C;&#xC9C1;&#xC774;&#xB098; &#xD574;&#xC81C; &#xC870;&#xAC74;&#xC5D0; &#xBC84;&#xADF8;&#xAC00; &#xC788;&#xC73C;&#xBA74; &#xAC19;&#xC740; &#xC54C;&#xB9BC;&#xC774; &#xBC18;&#xBCF5; &#xBC1C;&#xC1A1;&#xB429;&#xB2C8;&#xB2E4;. &#xC124;&#xBE44; &#xBA87; &#xB300; &#xD7; &#xAD00;&#xB9AC;&#xC790; &#xC5EC;&#xB7EC; &#xBA85;. &#xB9E4; &#xBD84;&#xB9C8;&#xB2E4; &#xC798;&#xBABB; &#xB098;&#xAC00;&#xBA74; &#xBE44;&#xC6A9;&#xC774; &#xAE30;&#xD558;&#xAE09;&#xC218;&#xC801;&#xC73C;&#xB85C; &#xC99D;&#xAC00;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xADF8;&#xB9CC;&#xD07C; <strong>&#xC548;&#xC815;&#xC801;&#xC73C;&#xB85C; &#xACE0;&#xBBFC;</strong>&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<ul>
<li>&#xC7AC;&#xC804;&#xC1A1; &#xC8FC;&#xAE30; &#xC5C4;&#xACA9;&#xD55C; &#xCCB4;&#xD06C;</li>
<li>&#xD558;&#xB8E8; &#xCD5C;&#xB300; &#xBC1C;&#xC1A1; &#xC81C;&#xD55C; (per &#xC124;&#xBE44;)</li>
<li>&#xC911;&#xBCF5; &#xC804;&#xC1A1; &#xBC29;&#xC9C0; &#xB85C;&#xC9C1;</li>
<li>&#xC54C;&#xB9BC; &#xBC1C;&#xC1A1; &#xC804; &#xCD5C;&#xC885; &#xAC80;&#xC99D;</li>
</ul>
<hr>
<h2 id="4-%ED%99%95%EC%9E%A5%EC%84%B1%EC%9D%84-%EA%B3%A0%EB%A0%A4%ED%95%9C-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98">4. &#xD655;&#xC7A5;&#xC131;&#xC744; &#xACE0;&#xB824;&#xD55C; &#xC544;&#xD0A4;&#xD14D;&#xCC98;</h2>
<h3 id="41-%EC%95%8C%EB%A6%BC-%ED%83%80%EC%9E%85%EB%B3%84-%EA%B2%80%EC%A6%9D-%EB%A1%9C%EC%A7%81-%EB%B6%84%EB%A6%AC">4.1 &#xC54C;&#xB9BC; &#xD0C0;&#xC785;&#xBCC4; &#xAC80;&#xC99D; &#xB85C;&#xC9C1; &#xBD84;&#xB9AC;</h3>
<p>&#xD604;&#xC7AC;&#xB294; &#xC5F0;&#xC18D; OFF&#xB9CC; &#xAD6C;&#xD604;&#xB418;&#xC5B4; &#xC788;&#xC9C0;&#xB9CC;, &#xD5A5;&#xD6C4; &#xD655;&#xC7A5;&#xC744; &#xC704;&#xD574; <strong>&#xAC80;&#xC99D; &#xB85C;&#xC9C1;&#xC744; &#xBD84;&#xB9AC;</strong>&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-java">@Component
public class AlertRuleChecker {

    // &#xC5F0;&#xC18D; OFF &#xAC80;&#xC99D;
    public boolean checkConsecutiveOff(
        List&lt;MonitoringAlertDto&gt; data,
        int requiredCount
    ) {
        // 1. &#xAC1C;&#xC218; &#xCCB4;&#xD06C;
        // 2. &#xBAA8;&#xB450; OFF &#xC0C1;&#xD0DC; &#xD655;&#xC778;
        // 3. &#xC2DC;&#xAC04; &#xAC04;&#xACA9; &#xAC80;&#xC99D; (3&#xBD84; &#xC774;&#xB0B4;)
    }

    // &#xD5A5;&#xD6C4; &#xCD94;&#xAC00; &#xAC00;&#xB2A5;
    public boolean checkSpmAbnormal(
        List&lt;MonitoringAlertDto&gt; data,
        int threshold
    ) {
        // SPM &#xC774;&#xC0C1; &#xAC80;&#xC99D; &#xB85C;&#xC9C1;
    }

    public boolean checkVibrationHigh(
        List&lt;MonitoringAlertDto&gt; data,
        float threshold
    ) {
        // &#xC9C4;&#xB3D9; &#xC784;&#xACC4;&#xCE58; &#xCD08;&#xACFC; &#xAC80;&#xC99D; &#xB85C;&#xC9C1;
    }
}
</code></pre>
<p><strong>Strategy Pattern &#xC801;&#xC6A9; &#xACE0;&#xB824;:</strong></p>
<pre><code class="language-java">public interface AlertCheckStrategy {
    boolean check(List&lt;MonitoringAlertDto&gt; data, AlertRuleDto rule);
}

@Component
public class ConsecutiveOffStrategy implements AlertCheckStrategy {
    @Override
    public boolean check(List&lt;MonitoringAlertDto&gt; data, AlertRuleDto rule) {
        // &#xC5F0;&#xC18D; OFF &#xAC80;&#xC99D;
    }
}

</code></pre>
<hr>
<h2 id="5-%EB%A7%88%EC%B9%98%EB%A9%B0">5. &#xB9C8;&#xCE58;&#xBA70;</h2>
<p>&#xD56D;&#xC0C1; &#xC694;&#xAD6C;&#xC0AC;&#xD56D;&#xC740; &#xC26C;&#xC6CC; &#xBCF4;&#xC785;&#xB2C8;&#xB2E4;.</p>
<p><strong>&quot;&#xC124;&#xBE44; &#xC774;&#xC0C1; OFF &#xC2DC; &#xC54C;&#xB78C; &#xBCF4;&#xB0B4;&#xB294; &#xAE30;&#xB2A5; &#xD544;&#xC694;&#xD569;&#xB2C8;&#xB2E4;.&quot;</strong></p>
<p>&#xB2E8;&#xC21C;&#xD574; &#xBCF4;&#xC774;&#xC9C0;&#xB9CC;, &#xC2E4;&#xC81C;&#xB85C;&#xB294;:</p>
<ul>
<li><strong>&#xBA40;&#xD2F0;&#xD14C;&#xB10C;&#xC2DC;</strong> &#xD658;&#xACBD;&#xC5D0;&#xC11C; &#xD68C;&#xC0AC;&#xBCC4;&#xB85C; &#xB2E4;&#xB978; &#xADDC;&#xCE59; &#xC801;&#xC6A9;</li>
<li><strong>&#xD655;&#xC7A5;&#xC131;</strong> &#xACE0;&#xB824; (&#xC5F0;&#xC18D; OFF&#xBFD0; &#xC544;&#xB2C8;&#xB77C; SPM, &#xC9C4;&#xB3D9;, &#xC804;&#xB958; &#xB4F1; &#xB2E4;&#xC591;&#xD55C; &#xC54C;&#xB9BC; &#xD0C0;&#xC785;)</li>
<li><strong>&#xC131;&#xB2A5;</strong> &#xCD5C;&#xC801;&#xD654; (&#xC218;&#xCC9C; &#xB300; &#xC124;&#xBE44;&#xB97C; 1&#xBD84;&#xB9C8;&#xB2E4; &#xC2E4;&#xC2DC;&#xAC04; &#xCCB4;&#xD06C;)</li>
<li><strong>&#xBE44;&#xC6A9;</strong> &#xAD00;&#xB9AC; (&#xB9CC;&#xC57D;&#xC744; &#xB300;&#xBE44;&#xD55C; &#xBC29;&#xC5B4;&#xC801; &#xC124;&#xACC4;)</li>
<li><strong>&#xC548;&#xC815;&#xC131;</strong> &#xACE0;&#xB824; (&#xC54C;&#xB9BC; &#xD558;&#xB098;&#xB3C4; &#xC2E0;&#xC911;&#xD558;&#xAC8C;)</li>
</ul>
<p>&#xAE4C;&#xB193;&#xACE0; &#xBCF4;&#xB2C8; <strong>&#xD558;&#xB098;&#xC758; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xAE09;</strong>&#xC774;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC5B4;&#xB5A4; &#xC11C;&#xBE44;&#xC2A4;&#xC5D0;&#xC11C; &#xC5B4;&#xB5A4; &#xB808;&#xBCA8;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB290;&#xB0D0;&#xC5D0; &#xB530;&#xB77C; &#xB09C;&#xC774;&#xB3C4;&#xB294; &#xCC9C;&#xCC28;&#xB9CC;&#xBCC4;&#xC785;&#xB2C8;&#xB2E4;. &#xB2E8;&#xC21C; &#xAE30;&#xB2A5; &#xAD6C;&#xD604;&#xC744; &#xB118;&#xC5B4; <strong>&#xD655;&#xC7A5; &#xAC00;&#xB2A5;&#xD55C; &#xC2DC;&#xC2A4;&#xD15C; &#xC124;&#xACC4;</strong>&#xC640; <strong>&#xC6B4;&#xC601;&#xC744; &#xACE0;&#xB824;&#xD55C; &#xBC29;&#xC5B4;&#xC801; &#xCF54;&#xB529;</strong>&#xAE4C;&#xC9C0; &#xACE0;&#xBBFC;&#xD55C; &#xAC12;&#xC9C4; &#xACBD;&#xD5D8;&#xC774;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xAC10;&#xC0AC;&#xD569;&#xB2C8;&#xB2E4;.</p>
<hr>
]]></content:encoded></item><item><title><![CDATA[[시리즈 1편] 그림으로 풀어낸 SaaS 알림 시스템]]></title><description><![CDATA[<h2 id="%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0">&#xB4E4;&#xC5B4;&#xAC00;&#xBA70;</h2>
<p>&#xC81C;&#xC870;&#xC5C5; IoT &#xD50C;&#xB7AB;&#xD3FC;&#xC5D0;&#xC11C; N&#xB300; &#xC774;&#xC0C1;&#xC758; &#xC124;&#xBE44;&#xB97C; &#xC2E4;&#xC2DC;&#xAC04;&#xC73C;&#xB85C; &#xBAA8;&#xB2C8;&#xD130;&#xB9C1;&#xD558;&#xACE0;, &#xC124;&#xBE44;&#xAC00; &#xC5F0;&#xC18D;&#xC73C;&#xB85C; &#xAEBC;&#xC84C;&#xC744; &#xB54C; &#xB2F4;&#xB2F9;&#xC790;&#xC5D0;&#xAC8C; &#xC989;&#xC2DC;</p>]]></description><link>https://tech.e3view.com/sirijeu-1pyeon-geurimeuro-puleonaen-saas-alrim-siseutem/</link><guid isPermaLink="false">691b065df4b84ffe43837074</guid><category><![CDATA[3view]]></category><category><![CDATA[쓰리뷰]]></category><category><![CDATA[machine365]]></category><category><![CDATA[saas]]></category><category><![CDATA[mes]]></category><category><![CDATA[iot]]></category><dc:creator><![CDATA[Jeonggil]]></dc:creator><pubDate>Mon, 17 Nov 2025 11:28:00 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2025/11/blog_image-3.png" medium="image"/><content:encoded><![CDATA[<h2 id="%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0">&#xB4E4;&#xC5B4;&#xAC00;&#xBA70;</h2>
<img src="https://tech.e3view.com/content/images/2025/11/blog_image-3.png" alt="[&#xC2DC;&#xB9AC;&#xC988; 1&#xD3B8;] &#xADF8;&#xB9BC;&#xC73C;&#xB85C; &#xD480;&#xC5B4;&#xB0B8; SaaS &#xC54C;&#xB9BC; &#xC2DC;&#xC2A4;&#xD15C;"><p>&#xC81C;&#xC870;&#xC5C5; IoT &#xD50C;&#xB7AB;&#xD3FC;&#xC5D0;&#xC11C; N&#xB300; &#xC774;&#xC0C1;&#xC758; &#xC124;&#xBE44;&#xB97C; &#xC2E4;&#xC2DC;&#xAC04;&#xC73C;&#xB85C; &#xBAA8;&#xB2C8;&#xD130;&#xB9C1;&#xD558;&#xACE0;, &#xC124;&#xBE44;&#xAC00; &#xC5F0;&#xC18D;&#xC73C;&#xB85C; &#xAEBC;&#xC84C;&#xC744; &#xB54C; &#xB2F4;&#xB2F9;&#xC790;&#xC5D0;&#xAC8C; &#xC989;&#xC2DC; &#xC54C;&#xB9BC;&#xC744; &#xBCF4;&#xB0B4;&#xB294; &#xAE30;&#xB2A5;&#xC744; &#xAC1C;&#xBC1C;&#xD558;&#xAC8C; &#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xB370;&#xC774;&#xD130;&#xB294; &#xC2E4;&#xC2DC;&#xAC04;&#xC73C;&#xB85C; &#xC313;&#xC774;&#xC9C0;&#xB9CC;, &#xC124;&#xBE44;&#xC774;&#xC0C1;&#xC744; &#xCCB4;&#xD06C;&#xD558;&#xB294; &#xC2A4;&#xCF00;&#xC904;&#xB7EC; &#xC8FC;&#xAE30;&#xB294; 1&#xBD84;&#xC73C;&#xB85C; &#xC124;&#xC815;&#xD558;&#xC600;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<hr>
<h2 id="%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98">&#xC2DC;&#xC2A4;&#xD15C; &#xC544;&#xD0A4;&#xD14D;&#xCC98;</h2>
<p>&#xAE30;&#xC874; &#xC778;&#xD504;&#xB77C;&#xC640; Push &#xAE30;&#xB2A5;&#xC740; &#xC774;&#xBBF8; &#xAD6C;&#xCD95;&#xB418;&#xC5B4; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC800;&#xB294; &#xC911;&#xAC04;&#xC5D0; &#xB4E4;&#xC5B4;&#xAC00;&#xB294; <strong>Alert Scheduler</strong>&#xB9CC; &#xAD6C;&#xD604;&#xD558;&#xBA74; &#xB418;&#xB294; &#xC0C1;&#xD669;&#xC774;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-json">&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  &#xC124;&#xBE44; IoT &#xC13C;&#xC11C; (&#xC2E4;&#xC2DC;&#xAC04;)                                  &#x2502;
&#x2502;  - N&#xAC1C; &#xD68C;&#xC0AC;, M&#xAC1C; &#xACF5;&#xC7A5;, &#xC218;&#xBC31; &#xB300; &#xC124;&#xBE44;                      &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                        &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  IoT Hub                                                 &#x2502;
&#x2502;  - &#xC2E4;&#xC2DC;&#xAC04; &#xB370;&#xC774;&#xD130; &#xC218;&#xC9D1;                                    &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                        &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  Dataframe (Stream Processing)                           &#x2502;
&#x2502;  - &#xC2A4;&#xD2B8;&#xB9BC; &#xB370;&#xC774;&#xD130; &#xCC98;&#xB9AC;                                    &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                        &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  MSSQL Monitoring &#xD14C;&#xC774;&#xBE14;                                 &#x2502;
&#x2502;  - &#xC2E4;&#xC2DC;&#xAC04; &#xC801;&#xC7AC; (&#xBD84;&#xB2F9; &#xC218;&#xCC9C; &#xAC74;)                            &#x2502;
&#x2502;  - id_machine, onoff_monitored, monitored_at_datetime    &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                        &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  &#x2699;&#xFE0F; Alert Scheduler (&#xAD6C;&#xD604; &#xBD80;&#xBD84;)                         &#x2502;
&#x2502;  - @Scheduled(cron = &quot;0 * * * * *&quot;) - &#xB9E4; &#xBD84; 0&#xCD08; &#xC2E4;&#xD589;    &#x2502;
&#x2502;  - ShedLock: &#xB2E4;&#xC911; &#xC778;&#xC2A4;&#xD134;&#xC2A4; &#xC911;&#xBCF5; &#xC2E4;&#xD589; &#xBC29;&#xC9C0;                &#x2502;
&#x2502;  - &#xC5F0;&#xC18D; OFF &#xAC80;&#xC99D; + 3-Way &#xBD84;&#xAE30; &#xCC98;&#xB9AC;                       &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                        &#x2193;
        &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2534;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
        &#x2193;                               &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;      &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  Notification DB    &#x2502;      &#x2502;  Mobile App Push     &#x2502;
&#x2502;  (&#xC6F9; &#xC54C;&#xB9BC;)          &#x2502;      &#x2502;  (Expo)              &#x2502;
&#x2502;  - &#xAE30;&#xC874; &#xC778;&#xD504;&#xB77C; &#xD65C;&#xC6A9; &#x2502;      &#x2502;  - &#xAE30;&#xC874; &#xC778;&#xD504;&#xB77C; &#xD65C;&#xC6A9;  &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;      &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
</code></pre>
<p><strong>&#xB3C4;&#xBA54;&#xC778; &#xAD6C;&#xC870;</strong>: Company &#x2192; Factory &#x2192; Machine (3-Tier &#xBA40;&#xD2F0;&#xD14C;&#xB10C;&#xC2DC;)</p>
<hr>
<h2 id="%ED%95%B5%EC%8B%AC-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%A1%9C%EC%A7%81-%EC%88%9C%EC%84%9C%EB%8F%84">&#xD575;&#xC2EC; &#xC11C;&#xBE44;&#xC2A4; &#xB85C;&#xC9C1; &#xC21C;&#xC11C;&#xB3C4;</h2>
<pre><code class="language-json">&#xB9E4; 1&#xBD84;&#xB9C8;&#xB2E4;
  &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; 1. &#xD65C;&#xC131;&#xD654;&#xB41C; Alert Rule &#xC870;&#xD68C;         &#x2502;
&#x2502;    (&#xD68C;&#xC0AC;&#xBCC4; &#xC54C;&#xB9BC; &#xADDC;&#xCE59;)               &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
  &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; 2. &#xAC01; Company&#xBCC4; &#xCC98;&#xB9AC;                &#x2502;
&#x2502;    &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510; &#x2502;
&#x2502;    &#x2502; &#x2460; &#xC124;&#xBE44; ID &#xBAA9;&#xB85D; &#xC870;&#xD68C;         &#x2502; &#x2502;
&#x2502;    &#x2502; &#x2461; &#xBAA8;&#xB2C8;&#xD130;&#xB9C1; &#xB370;&#xC774;&#xD130; &#xBC30;&#xCE58; &#xC870;&#xD68C; &#x2502; &#x2502;
&#x2502;    &#x2502; &#x2462; &#xC54C;&#xB9BC; &#xC0C1;&#xD0DC; &#xBC30;&#xCE58; &#xC870;&#xD68C;       &#x2502; &#x2502;
&#x2502;    &#x2502; &#x2463; &#xBA54;&#xBAA8;&#xB9AC; &#xADF8;&#xB8F9;&#xD551;             &#x2502; &#x2502;
&#x2502;    &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518; &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
  &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; 3. &#xAC01; &#xC124;&#xBE44;&#xBCC4; &#xCC98;&#xB9AC;                   &#x2502;
&#x2502;    &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510; &#x2502;
&#x2502;    &#x2502; &#xC5F0;&#xC18D; OFF &#xAC80;&#xC99D;               &#x2502; &#x2502;
&#x2502;    &#x2502;   - &#xB370;&#xC774;&#xD130; &#xAC1C;&#xC218; &#xCCB4;&#xD06C;        &#x2502; &#x2502;
&#x2502;    &#x2502;   - &#xBAA8;&#xB450; OFF &#xC0C1;&#xD0DC;?          &#x2502; &#x2502;
&#x2502;    &#x2502;   - &#xC2DC;&#xAC04; &#xAC04;&#xACA9; 3&#xBD84; &#xC774;&#xB0B4;?     &#x2502; &#x2502;
&#x2502;    &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518; &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
  &#x2193;
&#xC870;&#xAC74; &#xCDA9;&#xC871; &#xC2DC;
  &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; 4. 3-Way &#xBD84;&#xAE30;                       &#x2502;
&#x2502;    - &#xC7AC;&#xC804;&#xC1A1; &#xC8FC;&#xAE30; &#xB3C4;&#xB798;? &#x2192; &#xC7AC;&#xBC1C;&#xC1A1;    &#x2502;
&#x2502;    - &#xC2E0;&#xADDC; &#xC54C;&#xB9BC;? &#x2192; &#xBC1C;&#xC1A1;              &#x2502;
&#x2502;    - &#xC7AC;&#xC804;&#xC1A1; &#xB300;&#xAE30;? &#x2192; &#xC2A4;&#xD0B5;            &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
  &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; 5. &#xC54C;&#xB9BC; &#xBC1C;&#xC1A1;                        &#x2502;
&#x2502;    - DB &#xC800;&#xC7A5; (&#xC6F9;)                   &#x2502;
&#x2502;    - Expo Push (&#xBAA8;&#xBC14;&#xC77C;)             &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
  &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; 6. Bulk &#xC54C;&#xB9BC; &#xD574;&#xC81C;                   &#x2502;
&#x2502;    (&#xC870;&#xAC74; &#xD574;&#xC18C;&#xB41C; &#xC124;&#xBE44;)               &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
</code></pre>
<hr>
<h2 id="%ED%95%B5%EC%8B%AC-%EA%B0%9C%EC%84%A0-n1-%E2%86%92-%EB%B0%B0%EC%B9%98-%EC%BF%BC%EB%A6%AC">&#xD575;&#xC2EC; &#xAC1C;&#xC120;: N+1 &#x2192; &#xBC30;&#xCE58; &#xCFFC;&#xB9AC;</h2>
<h3 id="before-n1-%EC%A7%80%EC%98%A5">Before: N+1 &#xC9C0;&#xC625;</h3>
<pre><code class="language-java">for (AlertRule rule : activeRules) {
    for (Machine machine : getMachines(rule.getCompanyId())) {
        ...
    }
}
</code></pre>
<p>&#xD68C;&#xC0AC; &#xD7; &#xC124;&#xBE44; &#xD7; &#xCFFC;&#xB9AC; = <strong>&#xC218;&#xCC9C; &#xBC88;&#xC758; DB &#xD638;&#xCD9C;</strong> &#x2192; &#xC2A4;&#xCF00;&#xC904;&#xB7EC; &#xC2E4;&#xD589; &#xC2DC;&#xAC04; &#xC624;&#xBC84;</p>
<hr>
<h3 id="after-%EB%B0%B0%EC%B9%98-%EC%BF%BC%EB%A6%AC-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B7%B8%EB%A3%B9%ED%95%91">After: &#xBC30;&#xCE58; &#xCFFC;&#xB9AC; + &#xBA54;&#xBAA8;&#xB9AC; &#xADF8;&#xB8F9;&#xD551;</h3>
<pre><code class="language-java">private void checkRuleForCompany(AlertRuleDto rule) {
    // 1. Company&#xC5D0; &#xC18D;&#xD55C; &#xC124;&#xBE44; ID &#xC870;&#xD68C;
    List&lt;String&gt; machineIds = machineRepository
        .findMachineIdsByCompanyId(rule.getIdCompany(), &quot;Y&quot;);

    if (machineIds.isEmpty()) return;

    // 2. &#xBAA8;&#xB2C8;&#xD130;&#xB9C1; &#xB370;&#xC774;&#xD130; &#xC870;&#xD68C; &#xBC0F; &#xADF8;&#xB8F9;&#xD551;
    Map&lt;String, List&lt;MonitoringAlertDto&gt;&gt; dataByMachine =
        fetchMonitoringDataByMachine(machineIds, rule.getCount());

    // 3. &#xC54C;&#xB9BC; &#xC0C1;&#xD0DC; &#xC870;&#xD68C; (2&#xD68C;)
    List&lt;String&gt; machineIdsWithAlerts = alertMachineRepository
        .findMachineIdsWithUnresolvedAlerts(machineIds, rule.getRuleType());

    LocalDateTime resendThreshold = LocalDateTime.now()
        .minusMinutes(rule.getResendIntervalMinutes());
    Map&lt;String, AlertMachineDto&gt; resendAlertMap =
        fetchAlertsNeedingResend(machineIds, rule.getRuleType(), resendThreshold);

    // 4. &#xAC01; &#xC124;&#xBE44;&#xBCC4; &#xC54C;&#xB9BC; &#xC870;&#xAC74; &#xCCB4;&#xD06C; &#xBC0F; &#xCC98;&#xB9AC;
    List&lt;String&gt; machineIdsToResolve = processAlertsForMachines(
        machineIds, rule, dataByMachine, machineIdsWithAlerts, resendAlertMap);

    // 5. &#xC54C;&#xB9BC; &#xC77C;&#xAD04; &#xD574;&#xC81C;
    bulkResolveAlerts(machineIdsToResolve, rule.getRuleType());
}
</code></pre>
<p><strong>&#xD575;&#xC2EC; &#xBA54;&#xC11C;&#xB4DC; &#xBD84;&#xB9AC;</strong> (&#xB2E8;&#xC77C; &#xCC45;&#xC784; &#xC6D0;&#xCE59;):</p>
<pre><code class="language-java">// &#xBAA8;&#xB2C8;&#xD130;&#xB9C1; &#xB370;&#xC774;&#xD130; &#xC870;&#xD68C; + &#xADF8;&#xB8F9;&#xD551;
private Map&lt;String, List&lt;MonitoringAlertDto&gt;&gt; fetchMonitoringDataByMachine(
    List&lt;String&gt; machineIds, int count) {
        ...
}

// &#xC7AC;&#xC804;&#xC1A1; &#xD544;&#xC694;&#xD55C; &#xC54C;&#xB9BC; &#xC870;&#xD68C;
private Map&lt;String, AlertMachineDto&gt; fetchAlertsNeedingResend(
    List&lt;String&gt; machineIds, String alertType, LocalDateTime threshold) {
        ...
}

// &#xAC01; &#xC124;&#xBE44; &#xCC98;&#xB9AC;
private List&lt;String&gt; processAlertsForMachines(...) {
    List&lt;String&gt; machineIdsToResolve = new ArrayList&lt;&gt;();
        ...
}
</code></pre>
<hr>
<h2 id="%EC%97%B0%EC%86%8D-off-%EA%B2%80%EC%A6%9D-%EC%A7%84%EC%A7%9C-%EC%97%B0%EC%86%8D%EC%9D%B8%EA%B0%80">&#xC5F0;&#xC18D; OFF &#xAC80;&#xC99D;: &quot;&#xC9C4;&#xC9DC; &#xC5F0;&#xC18D;&#xC778;&#xAC00;?&quot;</h2>
<h3 id="3%EB%8B%A8%EA%B3%84-%ED%95%84%ED%84%B0%EB%A7%81">3&#xB2E8;&#xACC4; &#xD544;&#xD130;&#xB9C1;</h3>
<pre><code class="language-java">public boolean checkConsecutiveOff(List&lt;MonitoringAlertDto&gt; data, int count) {
    // &#x2460; &#xAC1C;&#xC218; &#xCCB4;&#xD06C;
    if (data.size() &lt; count) return false;

    // &#x2461; &#xBAA8;&#xB450; OFF?
    boolean allOff = data.stream()
        .allMatch(d -&gt; &quot;N&quot;.equals(d.getOnoffMonitored()) ||
                       &quot;0&quot;.equals(d.getOnoffMonitored()));
    if (!allOff) return false;

    // &#x2462; &#xC2DC;&#xAC04; &#xAC04;&#xACA9; 3&#xBD84; &#xC774;&#xB0B4;? (&#xC5F0;&#xC18D;&#xC131; &#xAC80;&#xC99D;)
    for (int i = 0; i &lt; data.size() - 1; i++) {
        long minutes = Duration.between(
            data.get(i+1).getMonitoredAt(),
            data.get(i).getMonitoredAt()
        ).toMinutes();

        if (minutes &gt; 3) return false;  // &#xAC04;&#xACA9; &#xCD08;&#xACFC; = &#xC5F0;&#xC18D; &#xC544;&#xB2D8;
    }
    return true;
}
</code></pre>
<p><strong>&#xC2DC;&#xAC01;&#xD654;</strong>:</p>
<pre><code class="language-json">&#x2705; &#xC5F0;&#xC18D; OFF (&#xC54C;&#xB9BC; &#xBC1C;&#xC1A1;)          &#x274C; &#xAC04;&#xACA9; &#xCD08;&#xACFC; (&#xC54C;&#xB9BC; &#xBBF8;&#xBC1C;&#xC1A1;)
&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;          &#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;
10:03  N (OFF)                  10:10  N (OFF)
      &#x2195; 1&#xBD84;                            &#x2195; 5&#xBD84; &#x2717;
10:02  N (OFF)                  10:05  N (OFF)
      &#x2195; 1&#xBD84;                            &#x2195; 5&#xBD84; &#x2717;
10:01  N (OFF)                  10:00  N (OFF)
</code></pre>
<p><strong>&#xC65C; 3&#xBD84;?</strong> 1&#xBD84;, 2&#xBD84;&#xC740; &#xC560;&#xB9E4;&#xD574;&#xC11C; &#xC77C;&#xB2E8; 3&#xBD84;&#xC73C;&#xB85C; &#xC124;&#xC815;&#xD588;&#xACE0;, &#xC5B8;&#xC81C;&#xB4E0; &#xBC14;&#xAFC0; &#xC218; &#xC788;&#xC74C;.</p>
<hr>
<h2 id="%EC%9E%AC%EC%A0%84%EC%86%A1-%EB%A1%9C%EC%A7%81-%EC%95%8C%EB%A6%BC-%EB%B0%9C%EC%86%A1">&#xC7AC;&#xC804;&#xC1A1; &#xB85C;&#xC9C1; &amp; &#xC54C;&#xB9BC; &#xBC1C;&#xC1A1;</h2>
<h3 id="%EC%B2%98%EB%A6%AC-%ED%9D%90%EB%A6%84">&#xCC98;&#xB9AC; &#xD750;&#xB984;</h3>
<pre><code class="language-json">&#xC5F0;&#xC18D; OFF &#xAC10;&#xC9C0;
  &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; 3-Way &#xBD84;&#xAE30;                           &#x2502;
&#x2502;                                      &#x2502;
&#x2502; resendAlert &#xC874;&#xC7AC;?                    &#x2502;
&#x2502;   &#x251C;&#x2500; Yes &#x2192; &#xC7AC;&#xC804;&#xC1A1; (&#xAE30;&#xC874; &#xD574;&#xC81C;+&#xC2E0;&#xADDC;)    &#x2502;
&#x2502;   &#x2514;&#x2500; No                              &#x2502;
&#x2502;        &#x2514;&#x2500; hasExistingAlert?          &#x2502;
&#x2502;             &#x251C;&#x2500; No &#x2192; &#xC2E0;&#xADDC; &#xC54C;&#xB9BC;         &#x2502;
&#x2502;             &#x2514;&#x2500; Yes &#x2192; &#xC2A4;&#xD0B5; (&#xC7AC;&#xC804;&#xC1A1; &#xB300;&#xAE30;)&#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
  &#x2193;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; PushNotificationService              &#x2502;
&#x2502; (&#xAE30;&#xC874; &#xC778;&#xD504;&#xB77C; &#xC7AC;&#xC0AC;&#xC6A9;)                 &#x2502;
&#x2502;                                      &#x2502;
&#x2502; &#x2022; Notification DB &#xC800;&#xC7A5; (&#xC6F9;)         &#x2502;
&#x2502; &#x2022; Expo Push &#xBC1C;&#xC1A1; (&#xBAA8;&#xBC14;&#xC77C;)           &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
</code></pre>
<p><strong>&#xD0C0;&#xC784;&#xB77C;&#xC778;</strong>:</p>
<pre><code class="language-json">Day 1 10:00  &#xC2E0;&#xADDC; &#xC54C;&#xB9BC; &#xBC1C;&#xC1A1; &#x1F514;
Day 1~3      &#xC2A4;&#xD0B5; (&#xC7AC;&#xC804;&#xC1A1; &#xB300;&#xAE30;)
Day 4 10:00  &#xC7AC;&#xC54C;&#xB9BC; &#xBC1C;&#xC1A1; &#x1F514; (3&#xC77C; &#xACBD;&#xACFC;)
Day 5 14:00  &#xC124;&#xBE44; ON &#x2192; &#xC790;&#xB3D9; &#xD574;&#xC81C; &#x2705;
</code></pre>
<hr>
<h2 id="%EC%B5%9C%EC%A2%85-%EC%84%B1%EA%B3%BC">&#xCD5C;&#xC885; &#xC131;&#xACFC;</h2>
<pre><code class="language-json">&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;
&#xD56D;&#xBAA9;                Before    After
&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;
DB &#xCFFC;&#xB9AC;              &#xC218;&#xCC9C;      &#xC218; &#xD68C;
&#xC2E4;&#xD589; &#xC2DC;&#xAC04;            45&#xCD08;      2&#xCD08;
1&#xBD84; &#xC8FC;&#xAE30; &#xC720;&#xC9C0;        &#x274C;        &#x2705;
&#xC54C;&#xB9BC; &#xC9C0;&#xC5F0;            &#xC218; &#xBD84;     &#xC2E4;&#xC2DC;&#xAC04;
&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;
</code></pre>
<hr>
<h2 id="%ED%95%B5%EC%8B%AC-%EA%B5%90%ED%9B%88">&#xD575;&#xC2EC; &#xAD50;&#xD6C8;</h2>
<h3 id="1-%EB%B3%B5%EC%9E%A1%ED%95%9C-%EB%A1%9C%EC%A7%81%EC%9D%80-%EB%8B%A8%EC%9D%BC-%EC%B1%85%EC%9E%84%EC%9C%BC%EB%A1%9C-%EB%B6%84%EB%A6%AC">1. &#xBCF5;&#xC7A1;&#xD55C; &#xB85C;&#xC9C1;&#xC740; &#xB2E8;&#xC77C; &#xCC45;&#xC784;&#xC73C;&#xB85C; &#xBD84;&#xB9AC;</h3>
<p>&#xC0DD;&#xAC01;&#xBCF4;&#xB2E4; &#xB85C;&#xC9C1;&#xC774; &#xBCF5;&#xC7A1;&#xD574;&#xC11C; <code>checkRuleForCompany()</code> &#xD558;&#xB098;&#xC5D0; &#xB2E4; &#xB123;&#xC73C;&#xBA74; &#xC218;&#xBC31;&#xC904; &#xBA54;&#xC11C;&#xB4DC;&#xAC00; &#xB428;.</p>
<p><strong>&#xB2E8;&#xC77C; &#xCC45;&#xC784; &#xC6D0;&#xCE59;</strong>&#xC73C;&#xB85C; &#xBA54;&#xC11C;&#xB4DC; &#xBD84;&#xB9AC;:</p>
<ul>
<li><code>fetchMonitoringDataByMachine()</code>: &#xB370;&#xC774;&#xD130; &#xC870;&#xD68C; + &#xADF8;&#xB8F9;&#xD551;</li>
<li><code>fetchAlertsNeedingResend()</code>: &#xC7AC;&#xC804;&#xC1A1; &#xB300;&#xC0C1; &#xC870;&#xD68C;</li>
<li><code>processAlertsForMachines()</code>: &#xAC01; &#xC124;&#xBE44; &#xCC98;&#xB9AC;</li>
<li><code>bulkResolveAlerts()</code>: &#xC77C;&#xAD04; &#xD574;&#xC81C;</li>
</ul>
<p>&#xAC01; &#xBA54;&#xC11C;&#xB4DC;&#xAC00; &#xD558;&#xB098;&#xC758; &#xCC45;&#xC784;&#xB9CC; &#x2192; &#xD14C;&#xC2A4;&#xD2B8;, &#xC720;&#xC9C0;&#xBCF4;&#xC218; &#xC26C;&#xC6CC;&#xC9D0;.</p>
<h3 id="2-%EB%8B%A8%EC%88%9C%ED%95%B4-%EB%B3%B4%EC%9D%B4%EB%8A%94-%EA%B8%B0%EB%8A%A5%EB%8F%84-saas%EC%97%90%EC%84%9C%EB%8A%94-%EB%B3%B5%EC%9E%A1%EB%8F%84-%EC%A6%9D%EA%B0%80">2. &#xB2E8;&#xC21C;&#xD574; &#xBCF4;&#xC774;&#xB294; &#xAE30;&#xB2A5;&#xB3C4; SaaS&#xC5D0;&#xC11C;&#xB294; &#xBCF5;&#xC7A1;&#xB3C4; &#xC99D;&#xAC00;</h3>
<p>&#xCC98;&#xC74C;&#xC5D4; &quot;&#xC124;&#xBE44; &#xBA87;&#xBC88; &#xAEBC;&#xC9C0;&#xBA74; &#xC54C;&#xB9BC; &#xBCF4;&#xB0B4;&#xAE30;&quot;&#xB77C;&#xB294; &#xB2E8;&#xC21C;&#xD55C; &#xAE30;&#xB2A5;&#xC73C;&#xB85C; &#xC0DD;&#xAC01;&#xD588;&#xC9C0;&#xB9CC;, SaaS &#xD658;&#xACBD;&#xC5D0;&#xC11C;&#xB294;:</p>
<ul>
<li>&#xBA40;&#xD2F0;&#xD14C;&#xB10C;&#xC2DC; (&#xD68C;&#xC0AC;&#xBCC4; &#xB370;&#xC774;&#xD130; &#xACA9;&#xB9AC;)</li>
<li>&#xC2E4;&#xC2DC;&#xAC04;&#xC131; &#xC694;&#xAD6C;&#xC0AC;&#xD56D; (1&#xBD84; &#xC8FC;&#xAE30;)</li>
<li>&#xC7AC;&#xC804;&#xC1A1; &#xB85C;&#xC9C1; (3-Way &#xBD84;&#xAE30;)</li>
<li>False Positive &#xBC29;&#xC9C0; (&#xC5F0;&#xC18D;&#xC131; &#xAC80;&#xC99D;)</li>
</ul>
<p>&#xB4F1;&#xC73C;&#xB85C; &#xBCF5;&#xC7A1;&#xB3C4;&#xAC00; &#xAE09;&#xC99D;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. <strong>&#xC21C;&#xC11C;&#xB3C4;&#xC640; &#xC544;&#xD0A4;&#xD14D;&#xCC98; &#xB2E4;&#xC774;&#xC5B4;&#xADF8;&#xB7A8;&#xC744; &#xADF8;&#xB824;&#xAC00;&#xBA70; &#xC124;&#xACC4;</strong>&#xD558;&#xB2C8; &#xB193;&#xCE60; &#xC218; &#xC788;&#xB294; &#xC5E3;&#xC9C0; &#xCF00;&#xC774;&#xC2A4;&#xB97C; &#xC0AC;&#xC804;&#xC5D0; &#xBC1C;&#xACAC;&#xD560; &#xC218; &#xC788;&#xC5C8;&#xACE0;, &#xCEE4;&#xBBA4;&#xB2C8;&#xCF00;&#xC774;&#xC158;&#xB3C4; &#xD6E8;&#xC52C; &#xC218;&#xC6D4;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<hr>
<h2 id="%EB%A7%88%EC%B9%98%EB%A9%B0">&#xB9C8;&#xCE58;&#xBA70;</h2>
<p>&#xB2E8;&#xC21C;&#xD55C; &#xC54C;&#xB9BC; &#xC2DC;&#xC2A4;&#xD15C;&#xB3C4; <strong>&#xC2E4;&#xC2DC;&#xAC04;&#xC131;, &#xC815;&#xD655;&#xC131;, &#xC131;&#xB2A5;</strong>&#xC744; &#xBAA8;&#xB450; &#xCDA9;&#xC871;&#xD558;&#xB824;&#xBA74; &#xBCF5;&#xC7A1;&#xB3C4;&#xAC00; &#xAE09;&#xC99D;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xD2B9;&#xD788; &#xC81C;&#xC870;&#xC5C5; IoT &#xD658;&#xACBD;&#xC5D0;&#xC11C;&#xB294; 1&#xBD84;&#xC758; &#xC9C0;&#xC5F0;&#xB3C4; &#xD070; &#xC190;&#xC2E4;&#xB85C; &#xC774;&#xC5B4;&#xC9C0;&#xACE0;, False Positive&#xB294; &#xC2E0;&#xB8B0;&#xB3C4; &#xD558;&#xB77D;, N+1&#xC740; &#xC2DC;&#xC2A4;&#xD15C; &#xB9C8;&#xBE44;&#xB97C; &#xC57C;&#xAE30;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xC774; &#xAE00;&#xC774; &#xBE44;&#xC2B7;&#xD55C; &#xBB38;&#xC81C;&#xB97C; &#xACAA;&#xB294; &#xBD84;&#xB4E4;&#xAED8; &#xB3C4;&#xC6C0;&#xC774; &#xB418;&#xAE38; &#xBC14;&#xB78D;&#xB2C8;&#xB2E4;.</p>
<p>&#xAC10;&#xC0AC;&#xD569;&#xB2C8;&#xB2E4;.</p>
<hr>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/image-13.png" class="kg-image" alt="[&#xC2DC;&#xB9AC;&#xC988; 1&#xD3B8;] &#xADF8;&#xB9BC;&#xC73C;&#xB85C; &#xD480;&#xC5B4;&#xB0B8; SaaS &#xC54C;&#xB9BC; &#xC2DC;&#xC2A4;&#xD15C;" loading="lazy" width="1241" height="351" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/image-13.png 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/image-13.png 1000w, https://tech.e3view.com/content/images/2025/11/image-13.png 1241w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[2025, ISACA Korea, Conference]]></title><description><![CDATA[<div class="kg-card kg-file-card"><a class="kg-file-card-container" href="https://tech.e3view.com/content/files/2025/11/ISACA_2025_----------------_---------.pdf" title="Download" download><div class="kg-file-card-contents"><div class="kg-file-card-title">ISACA_2025_&#x1100;&#x1169;&#x11BC;&#x1103;&#x1169;&#x11BC;&#x1112;&#x1161;&#x11A8;&#x1109;&#x116E;&#x11AF;&#x1103;&#x1162;&#x1112;&#x116C;_&#x1107;&#x1161;&#x11AF;&#x1111;&#x116D;&#x110C;&#x1161;&#x1105;&#x116D;</div><div class="kg-file-card-caption"></div><div class="kg-file-card-metadata"><div class="kg-file-card-filename">ISACA_2025_&#x1100;&#x1169;&#x11BC;&#x1103;&#x1169;&#x11BC;&#x1112;&#x1161;&#x11A8;&#x1109;&#x116E;&#x11AF;&#x1103;&#x1162;&#x1112;&#x116C;_&#x1107;&#x1161;&#x11AF;&#x1111;&#x116D;</div></div></div></a></div>]]></description><link>https://tech.e3view.com/2025-isaca-korea-conference/</link><guid isPermaLink="false">69151ec2f4b84ffe4383702b</guid><category><![CDATA[isaca]]></category><category><![CDATA[2025]]></category><category><![CDATA[conference]]></category><dc:creator><![CDATA[Hyonsok]]></dc:creator><pubDate>Thu, 13 Nov 2025 00:01:43 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2025/11/Screenshot-2025-11-13-at-08.56.37.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card kg-file-card"><a class="kg-file-card-container" href="https://tech.e3view.com/content/files/2025/11/ISACA_2025_----------------_---------.pdf" title="Download" download><div class="kg-file-card-contents"><div class="kg-file-card-title">ISACA_2025_&#x1100;&#x1169;&#x11BC;&#x1103;&#x1169;&#x11BC;&#x1112;&#x1161;&#x11A8;&#x1109;&#x116E;&#x11AF;&#x1103;&#x1162;&#x1112;&#x116C;_&#x1107;&#x1161;&#x11AF;&#x1111;&#x116D;&#x110C;&#x1161;&#x1105;&#x116D;</div><div class="kg-file-card-caption"></div><div class="kg-file-card-metadata"><div class="kg-file-card-filename">ISACA_2025_&#x1100;&#x1169;&#x11BC;&#x1103;&#x1169;&#x11BC;&#x1112;&#x1161;&#x11A8;&#x1109;&#x116E;&#x11AF;&#x1103;&#x1162;&#x1112;&#x116C;_&#x1107;&#x1161;&#x11AF;&#x1111;&#x116D;&#x110C;&#x1161;&#x1105;&#x116D;.pdf</div><div class="kg-file-card-filesize">244 MB</div></div></div><div class="kg-file-card-icon"><svg viewbox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>download-circle</title><polyline class="a" points="8.25 14.25 12 18 15.75 14.25"/><line class="a" x1="12" y1="6.75" x2="12" y2="18"/><circle class="a" cx="12" cy="12" r="11.25"/></svg></div></a></div><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/Screenshot-2025-11-13-at-08.58.42.png" class="kg-image" alt="2025, ISACA Korea, Conference" loading="lazy" width="1202" height="1634" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/Screenshot-2025-11-13-at-08.58.42.png 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/Screenshot-2025-11-13-at-08.58.42.png 1000w, https://tech.e3view.com/content/images/2025/11/Screenshot-2025-11-13-at-08.58.42.png 1202w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2025/11/IMG_0684.JPG" width="2000" height="2667" loading="lazy" alt="2025, ISACA Korea, Conference" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/IMG_0684.JPG 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/IMG_0684.JPG 1000w, https://tech.e3view.com/content/images/size/w1600/2025/11/IMG_0684.JPG 1600w, https://tech.e3view.com/content/images/size/w2400/2025/11/IMG_0684.JPG 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2025/11/IMG_0683.JPG" width="2000" height="2667" loading="lazy" alt="2025, ISACA Korea, Conference" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/IMG_0683.JPG 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/IMG_0683.JPG 1000w, https://tech.e3view.com/content/images/size/w1600/2025/11/IMG_0683.JPG 1600w, https://tech.e3view.com/content/images/size/w2400/2025/11/IMG_0683.JPG 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2025/11/IMG_0682.JPG" width="2000" height="2667" loading="lazy" alt="2025, ISACA Korea, Conference" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/IMG_0682.JPG 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/IMG_0682.JPG 1000w, https://tech.e3view.com/content/images/size/w1600/2025/11/IMG_0682.JPG 1600w, https://tech.e3view.com/content/images/size/w2400/2025/11/IMG_0682.JPG 2400w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2025/11/IMG_0681.JPG" width="2000" height="2667" loading="lazy" alt="2025, ISACA Korea, Conference" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/IMG_0681.JPG 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/IMG_0681.JPG 1000w, https://tech.e3view.com/content/images/size/w1600/2025/11/IMG_0681.JPG 1600w, https://tech.e3view.com/content/images/size/w2400/2025/11/IMG_0681.JPG 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2025/11/IMG_0680.JPG" width="2000" height="2667" loading="lazy" alt="2025, ISACA Korea, Conference" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/IMG_0680.JPG 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/IMG_0680.JPG 1000w, https://tech.e3view.com/content/images/size/w1600/2025/11/IMG_0680.JPG 1600w, https://tech.e3view.com/content/images/size/w2400/2025/11/IMG_0680.JPG 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2025/11/IMG_0679.JPG" width="2000" height="2667" loading="lazy" alt="2025, ISACA Korea, Conference" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/IMG_0679.JPG 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/IMG_0679.JPG 1000w, https://tech.e3view.com/content/images/size/w1600/2025/11/IMG_0679.JPG 1600w, https://tech.e3view.com/content/images/size/w2400/2025/11/IMG_0679.JPG 2400w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2025/11/IMG_0678.JPG" width="2000" height="2667" loading="lazy" alt="2025, ISACA Korea, Conference" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/IMG_0678.JPG 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/IMG_0678.JPG 1000w, https://tech.e3view.com/content/images/size/w1600/2025/11/IMG_0678.JPG 1600w, https://tech.e3view.com/content/images/size/w2400/2025/11/IMG_0678.JPG 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2025/11/IMG_0677.JPG" width="2000" height="2667" loading="lazy" alt="2025, ISACA Korea, Conference" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/IMG_0677.JPG 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/IMG_0677.JPG 1000w, https://tech.e3view.com/content/images/size/w1600/2025/11/IMG_0677.JPG 1600w, https://tech.e3view.com/content/images/size/w2400/2025/11/IMG_0677.JPG 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2025/11/IMG_0676.JPG" width="2000" height="2667" loading="lazy" alt="2025, ISACA Korea, Conference" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/IMG_0676.JPG 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/IMG_0676.JPG 1000w, https://tech.e3view.com/content/images/size/w1600/2025/11/IMG_0676.JPG 1600w, https://tech.e3view.com/content/images/size/w2400/2025/11/IMG_0676.JPG 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2025/11/IMG_0675.JPG" width="2000" height="2667" loading="lazy" alt="2025, ISACA Korea, Conference" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/IMG_0675.JPG 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/IMG_0675.JPG 1000w, https://tech.e3view.com/content/images/size/w1600/2025/11/IMG_0675.JPG 1600w, https://tech.e3view.com/content/images/size/w2400/2025/11/IMG_0675.JPG 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://tech.e3view.com/content/images/2025/11/IMG_0674.JPG" width="2000" height="2667" loading="lazy" alt="2025, ISACA Korea, Conference" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/IMG_0674.JPG 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/IMG_0674.JPG 1000w, https://tech.e3view.com/content/images/size/w1600/2025/11/IMG_0674.JPG 1600w, https://tech.e3view.com/content/images/size/w2400/2025/11/IMG_0674.JPG 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h1 id="%EC%9D%B4%ED%95%9C%EC%88%98-infobank-partner">&#xC774;&#xD55C;&#xC218;, InfoBank Partner</h1><ul><li>&#xC2A4;&#xD0C0;&#xD2B8;&#xC5C5; <ul><li>&#xC790;&#xC720;&#xB85C;&#xC6C0;, &#xD589;&#xBCF5;, &#xB9CC;&#xC871;&#xD558;&#xB294; &#xC0B6;</li><li>TIPS &#xC815;&#xBD80; &#xC9C0;&#xC6D0;</li><li>&#xC9D1;&#xC911;</li><li>Always &#xC218;&#xC775; &#xAC1C;&#xC120;</li><li>Like Sports (&#xBC30;&#xB824;, &#xB9E4;&#xB108;, &#xC5F4;&#xC815;&#xACFC; &#xB178;&#xB825;, &#xC2B9;&#xBCF5;&#xACFC; &#xC874;&#xC911;)</li></ul></li></ul><h1 id="%EA%B3%B5%EC%84%B1%EB%B0%B0-megazone-vice-p">&#xACF5;&#xC131;&#xBC30;, Megazone Vice P</h1><ul><li>Ai Native<ul><li>&#xC2E4;&#xD589;&#xC18D;&#xB3C4;</li><li>&#xBE44;&#xC6A9; &#xD1B5;&#xC81C;</li></ul></li><li>MIT &#xCD5C;&#xADFC; &#xD1B5;&#xACC4;<ul><li>95% Projects failed</li></ul></li><li>AI<ul><li>C Level&#xC758; &#xD3B8;&#xD5A5;&#xB41C; &#xC9C0;&#xC2DD; &#xACBD;&#xACC4;</li><li>Culture Problem</li><li>&#xBE44;&#xC9C0;&#xB2C8;&#xC2A4; &#xC694;&#xAD6C;&#xC0AC;&#xD56D;&#xC744; &#xD655;&#xC2E4;&#xD788; &#xC544;&#xB294; &#xAC83;&#xC774; &#xC911;&#xC694;</li><li>&#xACE0;&#xAC1D; &#xC0AC;&#xB840;<ul><li>RAG based Chatbot</li><li>BI</li></ul></li></ul></li><li>Megazone, AI Ready<ul><li>Governance</li><li>&#xBCC0;&#xD654; &#xAD00;&#xB9AC; (Culture)</li><li>&#xC724;&#xB9AC;&#xACBD;&#xC601; &#xC778;&#xC99D;</li><li>&#xC815;&#xD615;&#xC801;&#xC778; &#xBC29;&#xBC95;&#xC774; &#xC544;&#xB2CC; &#xACE0;&#xAC1D;&#xC0AC; Fit&#xC5D0; &#xB9DE;&#xB294; &#xCF54;&#xCE6D; &#xD544;&#xC694; (Like Golf Teaching)</li></ul></li></ul><h1 id="%EC%A7%80%EC%8A%A8-%EA%B5%AD%EC%A0%95%EC%9B%90">&#xC9C0;&#xC2A8;, &#xAD6D;&#xC815;&#xC6D0;</h1><ul><li>&#xBB34;&#xC120; &#xBCF4;&#xC548;</li><li>&#xBCF4;&#xC548;&#xC740; &#xC0DD;&#xC874; (&#xAD6D;&#xC815;&#xC6D0;)</li><li>&#xCD5C;&#xADFC; &#xD1B5;&#xC2E0;&#xC0AC; &#xD574;&#xD0B9;<ul><li>&#xCD5C;&#xC2E0; &#xD574;&#xD0B9;&#xAE30;&#xC220; &#xC0AC;&#xC6A9;</li></ul></li><li>&#xBB34;&#xC120; &#xBC31;&#xB3C4;&#xC5B4; &#xD574;&#xD0B9;<ul><li>&#xC2E4;&#xC2DC;&#xAC04; &#xBAA8;&#xB2C8;&#xD130;&#xB9C1; &#xD544;&#xC694;</li><li>&#xC2A4;&#xD30C;&#xC774;&#xCE69; H/W (&#xCD08;&#xC18C;&#xD615; CPU, &#xBB34;&#xC120;&#xD1B5;&#xC2E0; &#xBAA8;&#xB4C8;)<ul><li>2 ~13Km &#xB5A8;&#xC5B4;&#xC9C4; &#xACF3;&#xC5D0;&#xC11C; &#xC9C1;&#xC811; &#xAD50;&#xC2E0; &#xAC00;&#xB2A5; by &#xD574;&#xCEE4;</li></ul></li></ul></li><li>Ai Poisoning</li><li>&#xBBF8;&#xB798;&#xB294; Physical AI</li><li>&#xACFC;&#xAC70; &#xC0AC;&#xB840;<ul><li>2014&#xB144;, USB &#xBC31;&#xB3C4;&#xC5B4; (Cotton Mouth, 2&#xC5B5; ~ 3&#xC5B5;$ &#xAC1C;&#xBC1C;&#xBE44;),<ul><li>&#xBBF8; NSA&#xC5D0;&#xC11C; &#xC6B0;&#xBC29;&#xAD6D;&#xC5D0; &#xC124;&#xCE58;, 13Km &#xB5A8;&#xC5B4;&#xC9C4; &#xAC70;&#xB9AC;&#xC5D0;&#xC11C; &#xC870;&#xC885; &#xAC00;&#xB2A5; (1:1 &#xAD50;&#xC2E0;)</li><li>USB&#xC5D0; &#xC2A4;&#xD30C;&#xC774;&#xCE69; &#xD3EC;&#xD568;</li><li>&#xCF00;&#xC774;&#xBE14;&#xC744; &#xC548;&#xD14C;&#xB098;&#xB85C; &#xC0AC;&#xC6A9;</li></ul></li><li>2024&#xB144;, &#xD2B9;&#xC804;&#xC0AC; &#xC721;&#xAD70; &#xB300;&#xC704; &#xAC04;&#xCCA9;&#xC0AC;&#xAC74;<ul><li>&#xACBD;&#xC81C;&#xC801; &#xC5B4;&#xB824;&#xC6C0; (&#xC628;&#xB77C;&#xC778; &#xB3C4;&#xBC15;)</li><li>&#xBD81;&#xD55C;&#xC774; &#xD3EC;&#xC12D;</li><li>&#xAD70; &#xB0B4;&#xBD80;&#xB9DD;(KJCCS)&#xC5D0; Poison Tab(USB) &#xC5F0;&#xACB0; &#xC694;&#xCCAD;</li></ul></li></ul></li><li>&#xBBF8;&#xD55C;&#xC77C; &#xB300;&#xC751; &#xC804;&#xB7B5;<ul><li>&#xBBF8;&#xAD6D;: &#xD558;&#xB4DC;&#xC6E8;&#xC5B4; &#xB9AC;&#xC2A4;&#xD06C; &#xC644;&#xC804; &#xC81C;&#xAC70; (&#xC790;&#xAD6D;&#xC0B0; &#xC7A5;&#xBE44;&#xB9CC; &#xC0AC;&#xC6A9;)</li><li>&#xC77C;&#xBCF8;: &#xAC80;&#xC99D; &#xC7A5;&#xBE44; &#xB3C4;&#xC785;</li><li>&#xD55C;&#xAD6D;: 24&#xC2DC;&#xAC04; &#xD56D;&#xC2DC; &#xBAA8;&#xB2C8;&#xD130;&#xB9C1;. &#xC774;&#xC0C1;&#xC8FC;&#xD30C;&#xC218; &#xD0D0;&#xC9C0;</li></ul></li><li>&#xBB34;&#xC120; &#xBC31;&#xB3C4;&#xC5B4;<ul><li>Wifi &#xC774;&#xC678; &#xC8FC;&#xD30C;&#xC218; &#xC0AC;&#xC6A9;</li><li>&#xC11C;&#xBC84;&#xC2E4;, &#xB370;&#xC774;&#xD130; &#xC13C;&#xD130;, &#xC0DD;&#xC0B0;&#xB77C;&#xC778; &#xB4F1; &#xC5B4;&#xB514;&#xC5D0;&#xC11C;&#xB098; &#xC811;&#xADFC; &#xAC00;&#xB2A5;</li></ul></li><li>&#xBBF8;&#xAD6D; 911 &#xC0AC;&#xACE0; &#xC6D0;&#xC778;<ul><li>&#xC0C1;&#xC0C1;&#xB825;&#xC758; &#xBD80;&#xC7AC; (&#xCDA9;&#xBD84;&#xD788; &#xAC00;&#xB2A5;&#xD55C; &#xC704;&#xD611;)</li></ul></li></ul><h1 id="%EC%84%9C%EC%9D%80%EA%B5%AD-%EC%8B%AC%EB%A6%AC%ED%95%99">&#xC11C;&#xC740;&#xAD6D;, &#xC2EC;&#xB9AC;&#xD559;</h1><ul><li>&#xC778;&#xAC04;&#xC740; Rational Animal?<ul><li>&#xC778;&#xAC04;&#xC740; &#xC790;&#xC2E0;&#xC758; &#xB0B4;&#xBA74;&#xC801; &#xACBD;&#xD5D8;&#xC5D0; &#xC555;&#xB3C4;&#xB41C;&#xB2E4;.</li><li>&#xC778;&#xAC04;&#xC740; &#xAC10;&#xC815;&#xC801;&#xC778; &#xAC83;&#xC5D0; &#xC5C4;&#xCCAD;&#xB09C; &#xC601;&#xD5A5;&#xC744; &#xBC1B;&#xB294;&#xB2E4;.<ul><li>&#xC608;) &#xAE68;&#xB057;&#xD558;&#xAC8C; &#xD0A4;&#xC6B4; &#xBC8C;&#xB808;&#xB97C; &#xBABB; &#xBA39;&#xB294; &#xC774;&#xC720; (&#xC5ED;&#xACA8;&#xC6C0;)</li></ul></li><li>&#xC65C; &#xAC10;&#xC815;&#xC740; &#xB3D9;&#xBB3C;&#xC5D0;&#xAC8C;&#xB9CC; &#xC788;&#xB098;?<ul><li>&#xC6C0;&#xC9C1;&#xC784;&#xC5D0; &#xB300;&#xD55C; &#xD310;&#xB2E8;&#xC744; &#xD558;&#xAE30; &#xC704;&#xD574; (&#xC0DD;&#xC874;&#xD558;&#xAE30; &#xC704;&#xD574;) - &#xC9C4;&#xD654; &#xC2EC;&#xB9AC;&#xD559;</li></ul></li></ul></li><li>&#xD589;&#xBCF5;&#xC758; &#xC870;&#xAC74; &#xC911; &#xC81C;&#xC77C; &#xC911;&#xC694;&#xD55C; &#xAC83;<ul><li>&#xD48D;&#xC131;&#xD55C; &#xC0AC;&#xD68C;&#xC801; &#xACBD;&#xD5D8;</li></ul></li><li>&#xC778;&#xAC04;&#xC758; &#xD638;&#xBD88;&#xD638;&#xB294; &#xB17C;&#xB9AC;&#xC801;&#xC774;&#xC9C0; &#xC54A;&#xB2E4;.<ul><li>Love will find the reason.</li><li>&#xC774;&#xC720;&#xB294; &#xB098;&#xC911;&#xC5D0; &#xB9CC;&#xB4E4;&#xC5B4;&#xC9C4;&#xB2E4;.</li></ul></li><li>AI&#xAC00; &#xC778;&#xAC04;&#xC758; &#xBBF8;&#xBB18;&#xD55C; &#xAC10;&#xC815;&#xC744; &#xC774;&#xD574;&#xD560; &#xC218; &#xC788;&#xC744;&#xAE4C;?</li><li>AI&#xC640;&#xC758; Interaction&#xC740; &#xC7A5;&#xAE30;&#xC801;&#xC73C;&#xB85C; &#xBE44;&#xC6A9;&#xC744; &#xCE58;&#xB8EC;&#xB2E4;. &#xC9C4;&#xC9DC; &#xACBD;&#xD5D8;&#xC774; &#xC544;&#xB2C8;&#xB2E4;.<ul><li>&#xBCF5;&#xC7A1;&#xD55C; &#xBB38;&#xC81C;&#xB97C; &#xB9CC;&#xB4E4; &#xC218; &#xC788;&#xB2E4;. &#xC608;&#xCE21; &#xBD88;&#xD5C8;<ul><li>&#xC608;) GPT&#xC640; &#xBC95;&#xC801;&#xBB38;&#xC81C; (&#xBBF8;&#xAD6D;, &#xC790;&#xC0B4;)</li></ul></li></ul></li><li>&#xC778;&#xAC04;&#xC740; &#xC0DD;&#xBA85; &#xC720;&#xC9C0;&#xB97C; &#xC704;&#xD574; &#xB9D0;&#xB3C4; &#xC548; &#xB420; &#xC815;&#xB3C4;&#xB85D; &#xAC10;&#xC815;&#xC801;&#xC778; &#xC0AC;&#xD68C;&#xC801; &#xC874;&#xC7AC;&#xC774;&#xB2E4;.&apos;&#xB77C;&#xB294; &#xB9D0;&#xC744; AI&#xC5D0;&#xAC8C; &#xD574; &#xC8FC;&#xACE0; &#xC2F6;&#xB2E4;.</li></ul><h1 id="toss-b">Toss B</h1><ul><li>&#xB0B4;&#xBD80;&#xC790; &#xBCF4;&#xC548;&#xC0AC;&#xACE0; &#xBB38;&#xC81C; &#xBC29;&#xC9C0;&#xD574;&#xC57C; (&#xD611;&#xB825;&#xC5C5;&#xCCB4;, &#xACC4;&#xC57D;&#xC9C1; etc)</li><li>Governance vs Management</li><li>&#xAC1C;&#xC778;&#xC815;&#xBCF4; &#xC548;&#xC815;&#xC131; &#xD655;&#xBCF4; (&#xACFC;&#xC9D5;&#xAE08;: &#xB9E4;&#xCD9C;&#xC758; 4%)</li><li>&#xAC00;&#xC2DC;&#xC131;<ul><li>&#xC704;&#xD5D8; &#xC815;&#xBCF4;&#xC790;&#xC0B0; &#xC2DD;&#xBCC4;<ul><li>&#xACFC;&#xAE30;&#xC815;&#xD1B5;&#xBD80;, CISO &#xB4F1;&#xB85D;<ul><li>&#xD604;&#xC7AC; &#xC57D; 3&#xB9CC;&#xAC1C; &#xD68C;&#xC0AC;</li></ul></li><li>&#xC0AC;&#xC6A9;&#xD558;&#xB294; Cloud, SaaS Solution, &#xC624;&#xD508;&#xC18C;&#xC2A4;&#xB3C4; &#xC2DD;&#xBCC4;&#xD574;&#xC57C;</li><li>&#xC790;&#xC0B0;&#xAD00;&#xB9AC; &#xC2DC;&#xC2A4;&#xD15C; &#xAD6C;&#xCD95; (&#xBB3C;&#xB9AC;&#xC801;, &#xAC00;&#xC0C1;)</li></ul></li></ul></li><li>Forbes Best Banks (ISO, ISMS etc)</li><li>374(31), 408<ul><li>8.3%</li><li>White Hacker, 2</li><li>Chapter, 145</li></ul></li><li>Chapter(Horizonal), Silo(Vertical)</li><li>&#xC815;&#xBCF4;&#xBCF4;&#xD638; &#xACF5;&#xC2DC;</li><li>&#xAC10;&#xC0AC;&#xC5C5;&#xBB34; &#xB9E4;&#xB274;&#xC5BC; - &#xAE08;&#xAC10;&#xC6D0; &#xC0AC;&#xC774;&#xD2B8; &#xCC38;&#xC870;</li><li>Chapter &#xD611;&#xC5C5;<ul><li>&#xACC4;&#xC5F4;&#xC0AC; Chapter Meeting &#xACF5;&#xC2DD;&#xD654; (&#xB300;&#xBA74;)</li><li>CISO, Hacker (Monthly, Weekly), Leader exists</li></ul></li></ul><h1 id="ai-to-ai-security-%EC%9D%B4%ED%83%9C%ED%9B%88-mgrv-ciso">AI to AI Security, &#xC774;&#xD0DC;&#xD6C8;, MGRV, CISO</h1><ul><li>2024<ul><li>Mckinsey 60&#xC5B5;$ (vs Open AI 58&#xC5B5;$, 2005&#xB144; 200&#xC5B5;$)<ul><li>Agents 12,000&#xAC1C;</li></ul></li><li>Philosophy<ul><li>AI &#xD754;&#xC801;&#xB3C4; &#xAE30;&#xB85D;&#xB418;&#xC5B4;&#xC57C;...</li><li>Trust Geometry</li></ul></li><li>&#xC774;&#xC81C; &#xC0AC;&#xC6A9;&#xC790;&#xAC00; &#xC544;&#xB2C8;&#xB77C; Agent&#xAC00; &#xD638;&#xCD9C;&#xD55C;&#xB2E4;.<ul><li>&#xAD8C;&#xD55C; &#xC0C1;&#xC18D;&#xC774; &#xB108;&#xBB34; &#xD06C;&#xB2E4;</li><li>&#xC758;&#xB3C4;(Intent)&#xAC00; &#xB0A8;&#xC9C0; &#xC54A;&#xB294;&#xB2E4;</li><li>&#xACF5;&#xBC31; (&#xCC45;&#xC784;, &#xAC00;&#xC2DC;&#xC131;)</li></ul></li><li>&#xB300;&#xCC98;&#xBC95;<ul><li>Agent &#xC0AC;&#xC774;&#xC5D0; &#xC587;&#xC740; Brocker &#xB450;&#xAE30; <ul><li>&#xB77C;&#xC6B0;&#xD305; &#xBC0F; &#xBC84;&#xC804; &#xC911;&#xC7AC; etc</li><li>Data Firewall</li></ul></li><li>&#xBC29;&#xC5B4; Layer<ul><li>&#xB204;&#xAC00;?</li><li>&#xC801;&#xBC95;?</li><li>&#xACFC;&#xB2E4; &#xB178;&#xCD9C; &#xB9C9;&#xAE30;<ul><li><strong><u>&#xBBFC;&#xAC10; &#xD1A0;&#xD070; &#xD0D0;&#xC9C0; (&#xB9C8;&#xC2A4;&#xD0B9;, &#xBE44;&#xC2DD;&#xBCC4;, &#xC0D8;&#xD50C;&#xB9C1;)</u></strong></li></ul></li></ul></li></ul></li></ul></li></ul><img src="https://tech.e3view.com/content/images/2025/11/Screenshot-2025-11-13-at-08.56.37.png" alt="2025, ISACA Korea, Conference"><p></p>]]></content:encoded></item><item><title><![CDATA[풀스택으로 구현하는 전력 사용량 비교 대시보드: BFF 패턴부터 자동 Fallback UI까지]]></title><description><![CDATA[<blockquote>
<p>&#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xC11C;&#xBE44;&#xC2A4;&#xB97C; &#xAD6C;&#xD604;&#xD558;&#xBA70; &#xBC30;&#xC6B4; BFF &#xD328;&#xD134;, &#xBE44;&#xB3D9;&#xAE30; &#xBCD1;&#xB82C; &#xCC98;&#xB9AC;, &#xADF8;&#xB9AC;&#xACE0; &#xC0AC;&#xC6A9;&#xC790; &#xACBD;&#xD5D8; &#xC124;&#xACC4; &#xC774;&#xC57C;&#xAE30;</p>
</blockquote>
<h2 id="%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0">&#xB4E4;&#xC5B4;&#xAC00;&#xBA70;</h2>
<p>&#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;</p>]]></description><link>https://tech.e3view.com/pulseutaegeuro-guhyeonhaneun-jeonryeog-sayongryang-bigyo-daesibodeu-bff-paeteonbuteo-jadong-fallback-uiggaji/</link><guid isPermaLink="false">69093ec1f4b84ffe43836fae</guid><category><![CDATA[3view]]></category><category><![CDATA[쓰리뷰]]></category><category><![CDATA[machine365]]></category><category><![CDATA[bff]]></category><category><![CDATA[fallback]]></category><dc:creator><![CDATA[Jeonggil]]></dc:creator><pubDate>Tue, 04 Nov 2025 03:11:13 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2025/11/blog_image-1.png" medium="image"/><content:encoded><![CDATA[<blockquote>
<img src="https://tech.e3view.com/content/images/2025/11/blog_image-1.png" alt="&#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB294; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;: BFF &#xD328;&#xD134;&#xBD80;&#xD130; &#xC790;&#xB3D9; Fallback UI&#xAE4C;&#xC9C0;"><p>&#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xC11C;&#xBE44;&#xC2A4;&#xB97C; &#xAD6C;&#xD604;&#xD558;&#xBA70; &#xBC30;&#xC6B4; BFF &#xD328;&#xD134;, &#xBE44;&#xB3D9;&#xAE30; &#xBCD1;&#xB82C; &#xCC98;&#xB9AC;, &#xADF8;&#xB9AC;&#xACE0; &#xC0AC;&#xC6A9;&#xC790; &#xACBD;&#xD5D8; &#xC124;&#xACC4; &#xC774;&#xC57C;&#xAE30;</p>
</blockquote>
<h2 id="%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0">&#xB4E4;&#xC5B4;&#xAC00;&#xBA70;</h2>
<p>&#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xBD84;&#xC11D; &#xAE30;&#xB2A5;&#xC744; &#xAC1C;&#xBC1C;&#xD558;&#xBA74;&#xC11C; &#xD765;&#xBBF8;&#xB85C;&#xC6B4; &#xACE0;&#xBBFC;&#xC5D0; &#xC9C1;&#xBA74;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8;&#xC5D0;&#xAC8C; 4&#xAC00;&#xC9C0; &#xC11C;&#xB85C; &#xB2E4;&#xB978; &#xB370;&#xC774;&#xD130;&#xB97C; &#xC81C;&#xACF5;&#xD574;&#xC57C; &#xD558;&#xB294;&#xB370;, &#xAC01;&#xAC01;&#xC744; &#xB3C5;&#xB9BD;&#xC801;&#xC778; API&#xB85C; &#xAC1C;&#xBC1C;&#xD560;&#xC9C0;, &#xC544;&#xB2C8;&#xBA74; &#xD558;&#xB098;&#xC758; API&#xB85C; &#xD1B5;&#xD569;&#xD574;&#xC11C; &#xC81C;&#xACF5;&#xD560;&#xC9C0; &#xACB0;&#xC815;&#xD574;&#xC57C; &#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h3 id="api-%EC%84%A4%EA%B3%84-%EB%B0%A9%ED%96%A5">API &#xC124;&#xACC4; &#xBC29;&#xD5A5;</h3>
<p>&#xACB0;&#xB860;&#xBD80;&#xD130; &#xB9D0;&#xD558;&#xC790;&#xBA74;, <strong>&#xB2E8;&#xC77C; API &#xC751;&#xB2F5;</strong>&#xC73C;&#xB85C; &#xC124;&#xACC4;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<blockquote>
<p>&#xC678;&#xBD80; API&#xB294; &apos;&#xC804;&#xB825;&#xB370;&#xC774;&#xD130; &#xAC1C;&#xBC29; &#xD3EC;&#xD138; &#xC2DC;&#xC2A4;&#xD15C;&apos; &#xD2B9;&#xC815; API &#xB97C; &#xC0AC;&#xC6A9;&#xD588;&#xACE0; &#xD3B8;&#xC758;&#xC0C1; C API(&#xC678;&#xBD80;)&#xB77C;&#xACE0; &#xBD80;&#xB974;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
</blockquote>
<pre><code class="language-json">GET /api/v1/ooo-power-usage/comparison?year=2025&amp;month=9&amp;factoryId=F001

// &#xC8FC;&#xC758;: 2025&#xB144; 11&#xC6D4; &#xAE30;&#xC900;, C API&#xB294; 9&#xC6D4;&#xAE4C;&#xC9C0;&#xC758; &#xB370;&#xC774;&#xD130;&#xB9CC; &#xC81C;&#xACF5;
// (&#xD604;&#xC7AC; &#xC6D4; &#xAE30;&#xC900; 2&#xAC1C;&#xC6D4; &#xC774;&#xC804; &#xB370;&#xC774;&#xD130;&#xB9CC; &#xC870;&#xD68C; &#xAC00;&#xB2A5;)

&#xC751;&#xB2F5;:
{
  &quot;regionManufacturingAvg&quot;: {...},  // &#xC9C0;&#xC5ED; &#xC81C;&#xC870;&#xC5C5; &#xD3C9;&#xADE0; (C API #1)
  &quot;totalManufacturingAvg&quot;: {...},   // &#xC804;&#xAD6D; &#xC81C;&#xC870;&#xC5C5; &#xD3C9;&#xADE0; (C API #2)
  &quot;machine365CustomerAvg&quot;: {...},   // &#xC6B0;&#xB9AC; &#xACE0;&#xAC1D;&#xC0AC; &#xD3C9;&#xADE0; (DB #1)
  &quot;currentCustomer&quot;: {...}          // &#xD604;&#xC7AC;&#xACE0;&#xAC1D; &#xB370;&#xC774;&#xD130; (DB #2)
}
</code></pre>
<p><strong>&#xCC38;&#xACE0;</strong>: 2025&#xB144; 11&#xC6D4; &#xAE30;&#xC900;, C API&#xB294; &#xD604;&#xC7AC; &#xC6D4;&#xB85C;&#xBD80;&#xD130; 2&#xAC1C;&#xC6D4; &#xC774;&#xC804; &#xB370;&#xC774;&#xD130;&#xAE4C;&#xC9C0;&#xB9CC; &#xC870;&#xD68C; &#xAC00;&#xB2A5;&#xD569;&#xB2C8;&#xB2E4;. (11&#xC6D4;&#xC774;&#xBA74; 9&#xC6D4;&#xAE4C;&#xC9C0;&#xB9CC; &#xC870;&#xD68C; &#xAC00;&#xB2A5;)</p>
<blockquote>
<p>BFF&#xB780; Backend For Frontend&#xC758; &#xC57D;&#xC790;&#xB85C;, &#xB9D0; &#xADF8;&#xB300;&#xB85C; &#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC;&#xB97C; &#xC704;&#xD55C; &#xBC31;&#xC5D4;&#xB4DC;&#xB97C; &#xC758;&#xBBF8;&#xD569;&#xB2C8;&#xB2E4;. &#xC989;, &#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC;&#xB97C; &#xC694;&#xAD6C;&#xC0AC;&#xD56D;&#xC5D0; &#xB9DE;&#xAC8C; &#xAD6C;&#xD604;&#xD558;&#xAE30; &#xC704;&#xD574; &#xB3C4;&#xC6C0;&#xC744; &#xC8FC;&#xB294; &#xBC31;&#xC5D4;&#xB4DC;&#xB77C;&#xACE0; &#xAC04;&#xB2E8;&#xD558;&#xAC8C; &#xC815;&#xC758;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
</blockquote>
<h3 id="%ED%95%B4%EA%B2%B0%ED%95%B4%EC%95%BC-%ED%95%A0-%EA%B3%BC%EC%A0%9C">&#xD574;&#xACB0;&#xD574;&#xC57C; &#xD560; &#xACFC;&#xC81C;</h3>
<p>&#xD558;&#xC9C0;&#xB9CC; &#xC774; &#xAC04;&#xB2E8;&#xD574; &#xBCF4;&#xC774;&#xB294; API &#xD558;&#xB098;&#xC5D0; &#xC608;&#xC0C1;&#xBCF4;&#xB2E4; &#xB9CE;&#xC740; &#xB09C;&#xAD00;&#xC774; &#xC228;&#xC5B4;&#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xBC31;&#xC5D4;&#xB4DC; &#xBB38;&#xC81C;:</p>
<ul>
<li><strong>2&#xAC1C;&#xC758; C API &#xD638;&#xCD9C;</strong> (C API)</li>
<li><strong>2&#xAC1C;&#xC758; DB &#xC870;&#xD68C;</strong> (&#xB0B4;&#xBD80; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4;)</li>
<li>C API&#xB294; <strong>&#xC751;&#xB2F5; &#xC2DC;&#xAC04;&#xC774; &#xBD88;&#xC548;&#xC815;</strong> (50ms ~ 5&#xCD08;)</li>
<li><strong>&#xC804;&#xCCB4; &#xC751;&#xB2F5; &#xC2DC;&#xAC04; 3&#xCD08; &#xC774;&#xB0B4;</strong></li>
<li>C API&#xB294; year-month &#xC870;&#xD68C;&#xC2DC; <strong>700KB &#xB300;&#xC6A9;&#xB7C9; JSON</strong> &#xC751;&#xB2F5;</li>
</ul>
<p>&#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC; &#xBB38;&#xC81C;:</p>
<ul>
<li>C API&#xB294; <strong>2&#xAC1C;&#xC6D4; &#xC774;&#xC804; &#xB370;&#xC774;&#xD130;&#xB9CC; &#xC81C;&#xACF5;</strong> (11&#xC6D4;&#xC774;&#xBA74; 9&#xC6D4;&#xAE4C;&#xC9C0;)</li>
<li>9&#xC6D4; &#xB370;&#xC774;&#xD130; &#xC5C6;&#xC73C;&#xBA74; <strong>&#xC790;&#xB3D9;&#xC73C;&#xB85C; 8&#xC6D4; &#xC7AC;&#xC2DC;&#xB3C4;</strong> &#xD544;&#xC694;</li>
<li><strong>Toast &#xD45C;&#xC2DC; &#xD0C0;&#xC774;&#xBC0D; &#xC81C;&#xC5B4;</strong> (&#xBB34;&#xBD84;&#xBCC4;&#xD55C; &#xC5D0;&#xB7EC; &#xBA54;&#xC2DC;&#xC9C0; &#xBC29;&#xC9C0;)</li>
</ul>
<p>&#xC774; &#xAE00;&#xC5D0;&#xC11C;&#xB294; <strong>&#xBC31;&#xC5D4;&#xB4DC;&#xC758; CompletableFuture &#xBCD1;&#xB82C; &#xCC98;&#xB9AC;</strong>, <strong>700KB JSON &#xCD5C;&#xC801;&#xD654;</strong>, <strong>Timeout + Fallback &#xC804;&#xB7B5;</strong>&#xACFC; <strong>&#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC;&#xC758; &#xC790;&#xB3D9; &#xC7AC;&#xC2DC;&#xB3C4; UI</strong>, <strong>Toast Message &#xC81C;&#xC5B4;</strong>&#xB97C; &#xD1B5;&#xD574; &#xC5B4;&#xB5BB;&#xAC8C; &#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xD574;&#xACB0;&#xD588;&#xB294;&#xC9C0; &#xACF5;&#xC720;&#xD569;&#xB2C8;&#xB2E4;.</p>
<hr>
<h2 id="%EC%B4%88%EA%B8%B0-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EC%84%A4%EA%B3%84-%EA%B3%A0%EB%AF%BC">&#xCD08;&#xAE30; &#xC544;&#xD0A4;&#xD14D;&#xCC98; &#xC124;&#xACC4; &#xACE0;&#xBBFC;</h2>
<h3 id="%EB%AC%B8%EC%A0%9C-1-c-api%EB%8A%94-2%EA%B0%9C%EC%9B%94-%EC%9D%B4%EC%A0%84-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A7%8C-%EC%A1%B0%ED%9A%8C-%EA%B0%80%EB%8A%A5">&#xBB38;&#xC81C; 1: C API&#xB294; 2&#xAC1C;&#xC6D4; &#xC774;&#xC804; &#xB370;&#xC774;&#xD130;&#xB9CC; &#xC870;&#xD68C; &#xAC00;&#xB2A5;</h3>
<p>C API&#xB97C; &#xBD84;&#xC11D;&#xD558;&#xBA74;&#xC11C; &#xC911;&#xC694;&#xD55C; &#xC81C;&#xC57D;&#xC0AC;&#xD56D;&#xC744; &#xBC1C;&#xACAC;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<blockquote>
<p><strong>&quot;API &#xD638;&#xCD9C;&#xB85C; &#xC870;&#xD68C; &#xAC00;&#xB2A5;&#xD55C; &#xB370;&#xC774;&#xD130;&#xB294; 2&#xAC1C;&#xC6D4; &#xC774;&#xC804; &#xB370;&#xC774;&#xD130;&#xB9CC; &#xC81C;&#xACF5;&#xB428;&quot;</strong></p>
<p>&#xC608;: &#xD604;&#xC7AC;&#xAC00; 2025&#xB144; 11&#xC6D4;&#xC774;&#xB77C;&#xBA74;, <strong>9&#xC6D4;&#xAE4C;&#xC9C0;&#xC758; &#xB370;&#xC774;&#xD130;&#xB9CC; &#xC870;&#xD68C; &#xAC00;&#xB2A5;</strong> (10&#xC6D4;, 11&#xC6D4; &#xB370;&#xC774;&#xD130;&#xB294; &#xC5C6;&#xC74C;)</p>
</blockquote>
<p>&#xC774;&#xB294; <strong>&#xCD5C;&#xC2E0; &#xB370;&#xC774;&#xD130; &#xBD84;&#xC11D;&#xC774; &#xBD88;&#xAC00;&#xB2A5;</strong>&#xD558;&#xACE0;, <strong>&#xC2E4;&#xC2DC;&#xAC04; &#xBE44;&#xAD50;&#xAC00; &#xC5B4;&#xB835;&#xB2E4;</strong>&#xB294; &#xC758;&#xBBF8;&#xC600;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h3 id="%EC%A0%84%EB%9E%B5-%EA%B2%80%ED%86%A0">&#xC804;&#xB7B5; &#xAC80;&#xD1A0;</h3>
<h4 id="%EC%A0%84%EB%9E%B5-a-db%EC%97%90-%EB%AF%B8%EB%A6%AC-%EC%A0%81%EC%9E%AC-%EB%B0%B0%EC%B9%98-%EC%88%98%EC%A7%91-%E2%9D%8C">&#xC804;&#xB7B5; A: DB&#xC5D0; &#xBBF8;&#xB9AC; &#xC801;&#xC7AC; (&#xBC30;&#xCE58; &#xC218;&#xC9D1;) &#x274C;</h4>
<p><strong>&#xC7A5;&#xC810;</strong>: &#xACFC;&#xAC70; &#xB370;&#xC774;&#xD130; &#xBD84;&#xC11D; &#xBC0F; &#xD65C;&#xC6A9; &#xAC00;&#xB2A5;<br>
<strong>&#xB2E8;&#xC810;</strong>:</p>
<ul>
<li>DB &#xC6A9;&#xB7C9; &#xC99D;&#xAC00;</li>
<li>&#xBC30;&#xCE58; Job &#xC7A5;&#xC560; &#xC2DC; &#xB370;&#xC774;&#xD130; &#xB204;&#xB77D; &#xC704;&#xD5D8;</li>
<li>&#xCD08;&#xAE30; &#xD788;&#xC2A4;&#xD1A0;&#xB9AC; &#xC218;&#xC9D1; &#xC791;&#xC5C5; &#xD544;&#xC694;</li>
<li><strong>&#xC6B4;&#xC601; &#xBCF5;&#xC7A1;&#xB3C4; &#xC99D;&#xAC00;</strong></li>
</ul>
<h4 id="%EC%A0%84%EB%9E%B5-b-%ED%8C%8C%EC%9D%BC-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90-%EC%A0%80%EC%9E%A5-%E2%9D%8C">&#xC804;&#xB7B5; B: &#xD30C;&#xC77C; &#xC2DC;&#xC2A4;&#xD15C;&#xC5D0; &#xC800;&#xC7A5; &#x274C;</h4>
<pre><code class="language-json">/data/C/
  &#x2514;&#x2500;&#x2500; 2024/
      &#x251C;&#x2500;&#x2500; 11.json (11&#xC6D4; &#xB370;&#xC774;&#xD130;)
      &#x2514;&#x2500;&#x2500; 12.json (12&#xC6D4; &#xB370;&#xC774;&#xD130;)
</code></pre>
<p><strong>&#xC7A5;&#xC810;</strong>: DB &#xBD80;&#xD558; &#xC5C6;&#xC74C;, &#xBC31;&#xC5C5; &#xAC04;&#xB2E8;<br>
<strong>&#xB2E8;&#xC810;</strong>:</p>
<ul>
<li>&#xAC80;&#xC0C9;/&#xC870;&#xD68C; &#xC131;&#xB2A5; &#xB0AE;&#xC74C;</li>
<li>&#xD30C;&#xC77C; &#xAD00;&#xB9AC; &#xBCF5;&#xC7A1;&#xB3C4; &#xC99D;&#xAC00;</li>
<li><strong>&#xD655;&#xC7A5;&#xC131; &#xC81C;&#xD55C;</strong></li>
</ul>
<h4 id="%EC%A0%84%EB%9E%B5-c-api-%EC%BA%90%EC%8B%B1%EB%A7%8C-%EC%82%AC%EC%9A%A9-%EC%B5%9C%EC%A2%85-%EC%84%A0%ED%83%9D-%E2%9C%85">&#xC804;&#xB7B5; C: API + &#xCE90;&#xC2F1;&#xB9CC; &#xC0AC;&#xC6A9; (&#xCD5C;&#xC885; &#xC120;&#xD0DD;) &#x2705;</h4>
<pre><code class="language-md">&#xD544;&#xC694;&#xD55C; &#xB370;&#xC774;&#xD130;&#xB9CC; API &#xD638;&#xCD9C;

- Spring Cache (&#xBA54;&#xBAA8;&#xB9AC;)
- Timeout + Fallback &#xC804;&#xB7B5;
</code></pre>
<p><strong>&#xC7A5;&#xC810;</strong>:</p>
<ul>
<li>&#xAD6C;&#xD604; &#xB2E8;&#xC21C; (&#xBC30;&#xCE58; Job &#xBD88;&#xD544;&#xC694;)</li>
<li>&#xC778;&#xD504;&#xB77C; &#xBE44;&#xC6A9; &#xC808;&#xAC10;<br>
<strong>&#xB2E8;&#xC810;</strong>:</li>
<li>API &#xC7A5;&#xC560; &#xC2DC; &#xC11C;&#xBE44;&#xC2A4; &#xC601;&#xD5A5;</li>
</ul>
<h3 id="%EC%B5%9C%EC%A2%85-%EA%B2%B0%EC%A0%95-api-%EC%BA%90%EC%8B%B1-%EC%A0%84%EB%9E%B5">&#xCD5C;&#xC885; &#xACB0;&#xC815;: API + &#xCE90;&#xC2F1; &#xC804;&#xB7B5;</h3>
<p><strong>&#xACB0;&#xC815; &#xC774;&#xC720;</strong>:</p>
<ol>
<li><strong>&#xC694;&#xAD6C;&#xC0AC;&#xD56D;</strong>: &#xD604;&#xC7AC; &#xC2DC;&#xC810;&#xC5D0;&#xC11C;&#xB294; &quot;&#xD2B9;&#xC815; &#xC5F0;&#xC6D4; &#xB370;&#xC774;&#xD130; &#xBE44;&#xAD50;&quot;&#xB9CC; &#xD544;&#xC694; (2&#xAC1C;&#xC6D4; &#xC774;&#xC804; &#xB370;&#xC774;&#xD130; &#xD65C;&#xC6A9;)</li>
<li><strong>&#xBCF5;&#xC7A1;&#xB3C4; &#xCD5C;&#xC18C;&#xD654;</strong>: &#xBC30;&#xCE58; Job, DB &#xD14C;&#xC774;&#xBE14; &#xCD94;&#xAC00; &#xB4F1; &#xC778;&#xD504;&#xB77C; &#xBD88;&#xD544;&#xC694;</li>
<li><strong>&#xCE90;&#xC2F1;&#xC73C;&#xB85C; &#xC131;&#xB2A5; &#xBCF4;&#xC644;</strong>: Spring Cache&#xB85C; API &#xD638;&#xCD9C; &#xD69F;&#xC218; 98% &#xAC10;&#xC18C;</li>
</ol>
<hr>
<h2 id="%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD-%EB%B6%84%EC%84%9D">&#xC694;&#xAD6C;&#xC0AC;&#xD56D; &#xBD84;&#xC11D;</h2>
<h3 id="%EB%B9%84%EC%A6%88%EB%8B%88%EC%8A%A4-%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD">&#xBE44;&#xC988;&#xB2C8;&#xC2A4; &#xC694;&#xAD6C;&#xC0AC;&#xD56D;</h3>
<pre><code class="language-md">&#xC0AC;&#xC6A9;&#xC790;&#xAC00; &#xC790;&#xC2E0;&#xC758; &#xACF5;&#xC7A5; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9;&#xC744; &#xB2E4;&#xB978; &#xB370;&#xC774;&#xD130;&#xC640; &#xBE44;&#xAD50;&#xD558;&#xACE0; &#xC2F6;&#xC5B4;&#xD568;:

1. &#xD604;&#xC7AC; &#xACF5;&#xC7A5; &#xC9C0;&#xC5ED; &#xC81C;&#xC870;&#xC5C5; &#xD3C9;&#xADE0;&#xACFC; &#xBE44;&#xAD50; (&#xC608;: &#xACBD;&#xAE30;&#xB3C4; &#xC81C;&#xC870;&#xC5C5; &#xD3C9;&#xADE0;)
2. &#xC804;&#xAD6D; &#xC81C;&#xC870;&#xC5C5; &#xD3C9;&#xADE0;&#xACFC; &#xBE44;&#xAD50;
3. M365 &#xC804;&#xCCB4; &#xACE0;&#xAC1D;&#xC0AC; &#xD3C9;&#xADE0;&#xACFC; &#xBE44;&#xAD50;
4. &#xD604;&#xC7AC; &#xACF5;&#xC7A5; &#xC2E4;&#xC81C; &#xB370;&#xC774;&#xD130;
</code></pre>
<hr>
<h2 id="%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98">&#xC2DC;&#xC2A4;&#xD15C; &#xC544;&#xD0A4;&#xD14D;&#xCC98;</h2>
<h3 id="%EC%A0%84%EC%B2%B4-%EA%B5%AC%EC%A1%B0-solid-%EC%9B%90%EC%B9%99-%EC%A0%81%EC%9A%A9">&#xC804;&#xCCB4; &#xAD6C;&#xC870; (SOLID &#xC6D0;&#xCE59; &#xC801;&#xC6A9;)</h3>
<pre><code class="language-json">&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;                  Client (Nextjs)                            &#x2502;
&#x2502;  GET /api/v1/ooo-power-usage/comparison                     &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                         &#x2502;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x25BC;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  PowerUsageComparisonController (SpringBoot)                &#x2502;
&#x2502;       @GetMapping(&quot;/comparison&quot;)                            &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
                         &#x2502;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x25BC;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;         PowerUsageComparisonService (&#xC624;&#xCF00;&#xC2A4;&#xD2B8;&#xB808;&#xC774;&#xD130;)         &#x2502;
&#x2502;  &#x2705; &#xB2E8;&#xC77C; &#xCC45;&#xC784;: &#xC5EC;&#xB7EC; &#xB370;&#xC774;&#xD130; &#xC18C;&#xC2A4; &#xC870;&#xD569; (&#xBE44;&#xC988;&#xB2C8;&#xC2A4; &#xB85C;&#xC9C1;)          &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
             &#x2502;                            &#x2502;
             &#x2502; &#xC758;&#xC874;&#xC131; &#xC8FC;&#xC785;                 &#x2502; &#xC758;&#xC874;&#xC131; &#xC8FC;&#xC785;
             &#x2502;                            &#x2502;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x25BC;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;     &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x25BC;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; CApiDataService       &#x2502;     &#x2502; CBillRepository          &#x2502;
&#x2502; (C API &#xC804;&#xB2F4;)          &#x2502;     &#x2502; (DB &#xC870;&#xD68C; &#xC804;&#xB2F4;)               &#x2502;
&#x2502; &#x2705; SRP &#xC900;&#xC218;           &#x2502;     &#x2502; &#x2705; SRP &#xC900;&#xC218;                  &#x2502;
&#x2502;                       &#x2502;     &#x2502;                              &#x2502;
&#x2502; - getRegionAvg()      &#x2502;     &#x2502; - getMachine365Avg()         &#x2502;
&#x2502; - getTotalAvg()       &#x2502;     &#x2502; - getCurrentCustomer()       &#x2502;
&#x2502; - JSON &#xD30C;&#xC2F1; (totData) &#x2502;     &#x2502;                              &#x2502;
&#x2502; - &#xCE90;&#xC2F1;                &#x2502;     &#x2502;                              &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;     &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
             &#x2502;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x25BC;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; CApiClient            &#x2502;
&#x2502; (HTTP &#xD1B5;&#xC2E0; &#xC804;&#xB2F4;)       &#x2502;
&#x2502; &#x2705; SRP &#xC900;&#xC218;           &#x2502;
&#x2502;                       &#x2502;
&#x2502; - RestTemplate        &#x2502;
&#x2502; - Timeout &#xC124;&#xC815;        &#x2502;
&#x2502; - &#xC5D0;&#xB7EC; &#xD578;&#xB4E4;&#xB9C1;          &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
             &#x2502;
             &#x2502; 700KB JSON
             &#x25BC;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502; C API Server (External)             &#x2502;
&#x2502; &#x26A0;&#xFE0F; 2&#xAC1C;&#xC6D4; &#xC774;&#xC804; &#xB370;&#xC774;&#xD130;&#xB9CC; &#xC81C;&#xACF5;          &#x2502;
&#x2502; &#x26A0;&#xFE0F; 11&#xC6D4; &#xAE30;&#xC900; &#x2192; 9&#xC6D4;&#xAE4C;&#xC9C0;&#xB9CC; &#xC870;&#xD68C; &#xAC00;&#xB2A5;   &#x2502;
&#x2502; &#x26A0;&#xFE0F; &#xC751;&#xB2F5; &#xC2DC;&#xAC04; &#xBD88;&#xC548;&#xC815; (50ms~5&#xCD08;)       &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
</code></pre>
<h3 id="%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%94%8C%EB%A1%9C%EC%9A%B0-%EB%B3%91%EB%A0%AC-%EC%B2%98%EB%A6%AC-vs-%EC%88%9C%EC%B0%A8-%EC%B2%98%EB%A6%AC">&#xB370;&#xC774;&#xD130; &#xD50C;&#xB85C;&#xC6B0;: &#xBCD1;&#xB82C; &#xCC98;&#xB9AC; vs &#xC21C;&#xCC28; &#xCC98;&#xB9AC;</h3>
<pre><code class="language-json">&#xC2DC;&#xAC04;&#xCD95; &#x2192;

&#xBC29;&#xBC95; 1: &#xC21C;&#xCC28; &#xCC98;&#xB9AC; (&#x274C; Bad)
&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;
&#x2502; API #1 (Region)  &#x2502; 800ms &#x2502;
                    &#x2502; API #2 (Total)   &#x2502; 900ms &#x2502;
                                        &#x2502; DB #1 &#x2502; 100ms &#x2502;
                                                &#x2502; DB #2 &#x2502; 50ms &#x2502;
&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;
Total: 800 + 900 + 100 + 50 = 1,850ms


&#xBC29;&#xBC95; 2: &#xBCD1;&#xB82C; &#xCC98;&#xB9AC; (&#x2705; Good)
&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;
&#x2502; API #1 (Region)  &#x2502; 800ms &#x2502;
&#x2502; API #2 (Total)   &#x2502; 900ms &#x2502; &#x2190; &#xBCD1;&#xB82C; &#xC2E4;&#xD589;
                            &#x2502; DB #1 &#x2502; 100ms &#x2502;
                                    &#x2502; DB #2 &#x2502; 50ms &#x2502;
&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;&#x2501;
Total: max(800, 900) + 100 + 50 = 1,050ms
&#xAC1C;&#xC120;&#xC728;: 43% &#xB2E8;&#xCD95; &#x1F680;
</code></pre>
<hr>
<h2 id="%ED%95%B5%EC%8B%AC-%EA%B5%AC%ED%98%84-%EA%B3%BC%EC%A0%95">&#xD575;&#xC2EC; &#xAD6C;&#xD604; &#xACFC;&#xC815;</h2>
<h3 id="1-700kb-%EB%8C%80%EC%9A%A9%EB%9F%89-json-%EC%9D%91%EB%8B%B5-%EC%B5%9C%EC%A0%81%ED%99%94">1. 700KB &#xB300;&#xC6A9;&#xB7C9; JSON &#xC751;&#xB2F5; &#xCD5C;&#xC801;&#xD654;</h3>
<h4 id="%EB%AC%B8%EC%A0%9C-%EC%83%81%ED%99%A9">&#xBB38;&#xC81C; &#xC0C1;&#xD669;</h4>
<p>C API&#xC5D0; &#xC5F0;/&#xC6D4;&#xC744; &#xB358;&#xC838;&#xC11C; &#xC804;&#xAD6D; &#xC81C;&#xC870;&#xC5C5; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9;&#xC744; &#xC870;&#xD68C;&#xD558;&#xBA74;, <strong>&#xB2E8;&#xC77C; API &#xD638;&#xCD9C;&#xB85C; 700KB&#xAC00; &#xB118;&#xB294; JSON</strong>&#xC774; &#xBC18;&#xD658;&#xB429;&#xB2C8;&#xB2E4;.</p>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/image-12.png" class="kg-image" alt="&#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB294; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;: BFF &#xD328;&#xD134;&#xBD80;&#xD130; &#xC790;&#xB3D9; Fallback UI&#xAE4C;&#xC9C0;" loading="lazy" width="1362" height="643" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/image-12.png 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/image-12.png 1000w, https://tech.e3view.com/content/images/2025/11/image-12.png 1362w" sizes="(min-width: 720px) 720px"></figure><p><strong>&#xBB38;&#xC81C;</strong>:</p>
<ul>
<li><strong>totData&#xB9CC; &#xD544;&#xC694;</strong>&#xD55C;&#xB370;, <strong>data &#xD544;&#xB4DC;(650KB) &#xC804;&#xCCB4;&#xB97C; &#xAC1D;&#xCCB4;&#xB85C; &#xB9CC;&#xB4E4;&#xBA74; &#xBA54;&#xBAA8;&#xB9AC; &#xB0AD;&#xBE44;</strong></li>
<li>&#xB3D9;&#xC2DC; 100&#xBA85; &#xC811;&#xC18D; &#xC2DC;: 700KB &#xD7; 100 = <strong>70MB</strong></li>
</ul>
<h4 id="%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-jsonparser-%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D-%ED%8C%8C%EC%8B%B1">&#xD574;&#xACB0; &#xBC29;&#xBC95;: JsonParser &#xC2A4;&#xD2B8;&#xB9AC;&#xBC0D; &#xD30C;&#xC2F1;</h4>
<p><strong>Jackson&#xC758; JsonParser&#xB97C; &#xD65C;&#xC6A9;&#xD558;&#xC5EC; totData&#xB9CC; &#xC120;&#xD0DD;&#xC801;&#xC73C;&#xB85C; &#xD30C;&#xC2F1;</strong>&#xD569;&#xB2C8;&#xB2E4;.</p>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/image.png" class="kg-image" alt="&#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB294; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;: BFF &#xD328;&#xD134;&#xBD80;&#xD130; &#xC790;&#xB3D9; Fallback UI&#xAE4C;&#xC9C0;" loading="lazy" width="1035" height="888" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/image.png 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/image.png 1000w, https://tech.e3view.com/content/images/2025/11/image.png 1035w" sizes="(min-width: 720px) 720px"></figure><h4 id="%EA%B2%B0%EA%B3%BC-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%82%AC%EC%9A%A9%EB%9F%89-93-%EA%B0%90%EC%86%8C">&#xACB0;&#xACFC;: &#xBA54;&#xBAA8;&#xB9AC; &#xC0AC;&#xC6A9;&#xB7C9; 93% &#xAC10;&#xC18C;</h4>
<table>
<thead>
<tr>
<th>&#xBC29;&#xC2DD;</th>
<th>&#xBA54;&#xBAA8;&#xB9AC; &#xC0AC;&#xC6A9;&#xB7C9;</th>
<th>&#xD30C;&#xC2F1; &#xC2DC;&#xAC04;</th>
</tr>
</thead>
<tbody>
<tr>
<td>&#xC804;&#xCCB4; &#xD30C;&#xC2F1; (Before)</td>
<td>700KB &#xD7; &#xB3D9;&#xC2DC; &#xC694;&#xCCAD;</td>
<td>250ms</td>
</tr>
<tr>
<td>&#xC120;&#xD0DD;&#xC801; &#xD30C;&#xC2F1; (After)</td>
<td>50KB &#xD7; &#xB3D9;&#xC2DC; &#xC694;&#xCCAD;</td>
<td>80ms</td>
</tr>
</tbody>
</table>
<p><strong>&#xC608;) &#xB3D9;&#xC2DC; 100&#xBA85; &#xC811;&#xC18D; &#xC2DC;</strong>:</p>
<ul>
<li>Before: 700KB &#xD7; 100 = <strong>70MB</strong></li>
<li>After: 50KB &#xD7; 100 = <strong>5MB</strong> (<strong>14&#xBC30; &#xAC1C;&#xC120;</strong>)</li>
</ul>
<hr>
<h3 id="2-completablefuture%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-%EB%B3%91%EB%A0%AC-%EC%B2%98%EB%A6%AC">2. CompletableFuture&#xB97C; &#xD65C;&#xC6A9;&#xD55C; &#xBCD1;&#xB82C; &#xCC98;&#xB9AC;</h3>
<h4 id="%EB%AC%B8%EC%A0%9C-%EC%83%81%ED%99%A9">&#xBB38;&#xC81C; &#xC0C1;&#xD669;</h4>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/image-2.png" class="kg-image" alt="&#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB294; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;: BFF &#xD328;&#xD134;&#xBD80;&#xD130; &#xC790;&#xB3D9; Fallback UI&#xAE4C;&#xC9C0;" loading="lazy" width="1050" height="401" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/image-2.png 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/image-2.png 1000w, https://tech.e3view.com/content/images/2025/11/image-2.png 1050w" sizes="(min-width: 720px) 720px"></figure><h4 id="%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-completablefuture-%EB%B3%91%EB%A0%AC-%EC%8B%A4%ED%96%89">&#xD574;&#xACB0; &#xBC29;&#xBC95;: CompletableFuture &#xBCD1;&#xB82C; &#xC2E4;&#xD589;</h4>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/image-3.png" class="kg-image" alt="&#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB294; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;: BFF &#xD328;&#xD134;&#xBD80;&#xD130; &#xC790;&#xB3D9; Fallback UI&#xAE4C;&#xC9C0;" loading="lazy" width="1077" height="1200" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/image-3.png 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/image-3.png 1000w, https://tech.e3view.com/content/images/2025/11/image-3.png 1077w" sizes="(min-width: 720px) 720px"></figure><p><strong>&#xD575;&#xC2EC; &#xD3EC;&#xC778;&#xD2B8;</strong>:</p>
<ul>
<li><code>CompletableFuture.supplyAsync()</code>: &#xBCC4;&#xB3C4; &#xC2A4;&#xB808;&#xB4DC;&#xC5D0;&#xC11C; &#xBE44;&#xB3D9;&#xAE30; &#xC2E4;&#xD589;</li>
<li><code>CompletableFuture.allOf().join()</code>: &#xBAA8;&#xB4E0; &#xC791;&#xC5C5; &#xC644;&#xB8CC; &#xB300;&#xAE30;</li>
<li><code>.join()</code>: &#xC644;&#xB8CC;&#xB41C; &#xACB0;&#xACFC; &#xAC00;&#xC838;&#xC624;&#xAE30; (&#xBE14;&#xB85C;&#xD0B9;)</li>
</ul>
<hr>
<h3 id="3-timeout-fallback-%EC%BA%90%EC%8B%9C-%EC%A0%84%EB%9E%B5">3. Timeout + Fallback &#xCE90;&#xC2DC; &#xC804;&#xB7B5;</h3>
<h4 id="%EB%AC%B8%EC%A0%9C-%EC%83%81%ED%99%A9">&#xBB38;&#xC81C; &#xC0C1;&#xD669;</h4>
<p>C API&#xB294; <strong>&#xC751;&#xB2F5; &#xC2DC;&#xAC04;&#xC774; &#xBD88;&#xC548;&#xC815;</strong>&#xD569;&#xB2C8;&#xB2E4;:</p>
<ul>
<li>&#xD3C9;&#xADE0;: 80ms</li>
<li>&#xCD5C;&#xB300;: 5&#xCD08; &#xC774;&#xC0C1;</li>
<li>&#xC77C;&#xC2DC;&#xC801; &#xC7A5;&#xC560; &#xBC1C;&#xC0DD; &#xAC00;&#xB2A5;</li>
</ul>
<p>&#xC0AC;&#xC6A9;&#xC790;&#xB294; 3&#xCD08; &#xC774;&#xC0C1; &#xAE30;&#xB2E4;&#xB9AC;&#xBA74; &#xC774;&#xD0C8;&#xD569;&#xB2C8;&#xB2E4;.</p>
<h4 id="%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-3%EB%8B%A8%EA%B3%84-fallback-%EC%A0%84%EB%9E%B5">&#xD574;&#xACB0; &#xBC29;&#xBC95;: 3&#xB2E8;&#xACC4; Fallback &#xC804;&#xB7B5;</h4>
<pre><code class="language-txt">&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  Level 1: API &#xD638;&#xCD9C; (3&#xCD08; &#xD0C0;&#xC784;&#xC544;&#xC6C3;)               &#x2502;
&#x2502;  &#xC815;&#xC0C1; &#xC751;&#xB2F5; &#xC2DC; &#x2192; &#xC989;&#xC2DC; &#xBC18;&#xD658;                       &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
         &#x2502; (Timeout or Error)
         &#x25BC;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  Level 2: Cache Fallback                       &#x2502;
&#x2502;  &#xC774;&#xC804;&#xC5D0; &#xC131;&#xACF5;&#xD55C; &#xC751;&#xB2F5;&#xC774; &#xCE90;&#xC2DC;&#xC5D0; &#xC788;&#xC73C;&#xBA74; &#xBC18;&#xD658;          &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
         &#x2502; (Cache Miss)
         &#x25BC;
&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
&#x2502;  Level 3: Empty Data                           &#x2502;
&#x2502;  &#xBE48; &#xB370;&#xC774;&#xD130; &#xBC18;&#xD658; (&#xB098;&#xBA38;&#xC9C0; &#xB370;&#xC774;&#xD130;&#xB294; &#xC815;&#xC0C1; &#xC81C;&#xACF5;)      &#x2502;
&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
</code></pre>
<h4 id="%EA%B5%AC%ED%98%84-%EC%A7%80%EC%97%AD%EB%B3%84-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A1%B0%ED%9A%8C">&#xAD6C;&#xD604;: &#xC9C0;&#xC5ED;&#xBCC4; &#xB370;&#xC774;&#xD130; &#xC870;&#xD68C;</h4>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/image-4.png" class="kg-image" alt="&#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB294; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;: BFF &#xD328;&#xD134;&#xBD80;&#xD130; &#xC790;&#xB3D9; Fallback UI&#xAE4C;&#xC9C0;" loading="lazy" width="1345" height="1660" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/image-4.png 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/image-4.png 1000w, https://tech.e3view.com/content/images/2025/11/image-4.png 1345w" sizes="(min-width: 720px) 720px"></figure><h4 id="%EC%BA%90%EC%8B%9C-%EC%A1%B0%ED%9A%8C-%ED%97%AC%ED%8D%BC-%EB%A9%94%EC%84%9C%EB%93%9C">&#xCE90;&#xC2DC; &#xC870;&#xD68C; &#xD5EC;&#xD37C; &#xBA54;&#xC11C;&#xB4DC;</h4>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/image-5.png" class="kg-image" alt="&#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB294; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;: BFF &#xD328;&#xD134;&#xBD80;&#xD130; &#xC790;&#xB3D9; Fallback UI&#xAE4C;&#xC9C0;" loading="lazy" width="1158" height="542" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/image-5.png 600w, https://tech.e3view.com/content/images/size/w1000/2025/11/image-5.png 1000w, https://tech.e3view.com/content/images/2025/11/image-5.png 1158w" sizes="(min-width: 720px) 720px"></figure><hr>
<h2 id="%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%9E%90%EB%8F%99-fallback-ui">&#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC;: &#xC0AC;&#xC6A9;&#xC790; &#xACBD;&#xD5D8;&#xC744; &#xC704;&#xD55C; &#xC790;&#xB3D9; Fallback UI</h2>
<p>&#xBC31;&#xC5D4;&#xB4DC;&#xC5D0;&#xC11C; BFF &#xD328;&#xD134;&#xC73C;&#xB85C; 4&#xAC1C; &#xB370;&#xC774;&#xD130; &#xC18C;&#xC2A4;&#xB97C; &#xD1B5;&#xD569;&#xD588;&#xC9C0;&#xB9CC;, &#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC;&#xC5D0;&#xC11C;&#xB3C4; &#xD574;&#xACB0;&#xD574;&#xC57C; &#xD560; &#xBB38;&#xC81C;&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xD575;&#xC2EC; &#xBB38;&#xC81C;</strong>: C API&#xB294; 2&#xAC1C;&#xC6D4; &#xC774;&#xC804; &#xB370;&#xC774;&#xD130;&#xB9CC; &#xC81C;&#xACF5;&#xD569;&#xB2C8;&#xB2E4;. 11&#xC6D4;&#xC5D0; &#xC811;&#xC18D;&#xD55C; &#xC0AC;&#xC6A9;&#xC790;&#xAC00; 9&#xC6D4; &#xB370;&#xC774;&#xD130;&#xB97C; &#xAE30;&#xB300;&#xD558;&#xC9C0;&#xB9CC;, 9&#xC6D4; &#xB370;&#xC774;&#xD130;&#xAC00; &#xC5C6;&#xC744; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.<br>
&#xADF8;&#xB7FC; &#xC870;&#xC6A9;&#xD788; 8&#xC6D4; &#xB370;&#xC774;&#xD130;&#xB77C;&#xB3C4; &#xBCF4;&#xC5EC;&#xC918;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;.</p>
<h3 id="1-%EC%9E%90%EB%8F%99-%EC%9E%AC%EC%8B%9C%EB%8F%84-%EB%A1%9C%EC%A7%81-9%EC%9B%94-%E2%86%92-8%EC%9B%94">1. &#xC790;&#xB3D9; &#xC7AC;&#xC2DC;&#xB3C4; &#xB85C;&#xC9C1;: 9&#xC6D4; &#x2192; 8&#xC6D4;</h3>
<h4 id="%EC%A1%B0%EC%9A%A9%ED%95%9C-fallback">&#xC870;&#xC6A9;&#xD55C; Fallback</h4>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/image-7.png" class="kg-image" alt="&#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB294; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;: BFF &#xD328;&#xD134;&#xBD80;&#xD130; &#xC790;&#xB3D9; Fallback UI&#xAE4C;&#xC9C0;" loading="lazy" width="971" height="1085" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/image-7.png 600w, https://tech.e3view.com/content/images/2025/11/image-7.png 971w" sizes="(min-width: 720px) 720px"></figure><h3 id="2-toast-%ED%91%9C%EC%8B%9C-%ED%83%80%EC%9D%B4%EB%B0%8D-%EC%A0%9C%EC%96%B4">2. Toast &#xD45C;&#xC2DC; &#xD0C0;&#xC774;&#xBC0D; &#xC81C;&#xC5B4;</h3>
<p><strong>&#xBCF5;&#xC7A1;&#xD55C; &#xCF00;&#xC774;&#xC2A4; &#xBD84;&#xAE30;</strong>:</p>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/image-8.png" class="kg-image" alt="&#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB294; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;: BFF &#xD328;&#xD134;&#xBD80;&#xD130; &#xC790;&#xB3D9; Fallback UI&#xAE4C;&#xC9C0;" loading="lazy" width="963" height="902" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/image-8.png 600w, https://tech.e3view.com/content/images/2025/11/image-8.png 963w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/image-9.png" class="kg-image" alt="&#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB294; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;: BFF &#xD328;&#xD134;&#xBD80;&#xD130; &#xC790;&#xB3D9; Fallback UI&#xAE4C;&#xC9C0;" loading="lazy" width="917" height="1367" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/image-9.png 600w, https://tech.e3view.com/content/images/2025/11/image-9.png 917w" sizes="(min-width: 720px) 720px"></figure><p><strong>&#xACB0;&#xACFC;</strong>:</p>
<ul>
<li>&#x2705; 9&#xC6D4; &#xC5C6;&#xC74C; &#x2192; &#xC870;&#xC6A9;&#xD788; 8&#xC6D4; &#xC7AC;&#xC2DC;&#xB3C4; (Toast &#xC5C6;&#xC74C;)</li>
<li>&#x2705; 8&#xC6D4;&#xB3C4; &#xC5C6;&#xC74C; &#x2192; Toast &#xD45C;&#xC2DC;</li>
<li>&#x2705; &#xC0AC;&#xC6A9;&#xC790;&#xB294; &#xD55C; &#xBC88;&#xB9CC; Toast &#xBD04; (&#xCE5C;&#xC808;!)</li>
</ul>
<h3 id="3-%EB%8F%99%EC%A0%81-%EC%9B%94-%EC%84%A0%ED%83%9D-%EC%A0%9C%EC%95%BD-ux%EA%B0%9C%EC%84%A0">3. &#xB3D9;&#xC801; &#xC6D4; &#xC120;&#xD0DD; &#xC81C;&#xC57D; (UX&#xAC1C;&#xC120;)</h3>
<p><strong>&#xBB38;&#xC81C;</strong>: C API&#xB294; 2&#xAC1C;&#xC6D4; &#xC774;&#xC804; &#xB370;&#xC774;&#xD130;&#xB9CC; &#xC81C;&#xACF5;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>11&#xC6D4; &#xC811;&#xC18D; &#xC2DC;:</p>
<ul>
<li>2025&#xB144; &#xC120;&#xD0DD; &#x2192; 1~9&#xC6D4;&#xB9CC; &#xC120;&#xD0DD; &#xAC00;&#xB2A5; &#x2705;</li>
<li>2024&#xB144; &#xC120;&#xD0DD; &#x2192; 1~12&#xC6D4; &#xC804;&#xCCB4; &#xC120;&#xD0DD; &#xAC00;&#xB2A5; &#x2705;</li>
<li>10&#xC6D4;, 11&#xC6D4; &#xC120;&#xD0DD; &#xBE44;&#xD65C;&#xC131;&#xD654; &#x2705;</li>
</ul>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/11/image-11.png" class="kg-image" alt="&#xD480;&#xC2A4;&#xD0DD;&#xC73C;&#xB85C; &#xAD6C;&#xD604;&#xD558;&#xB294; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xBE44;&#xAD50; &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;: BFF &#xD328;&#xD134;&#xBD80;&#xD130; &#xC790;&#xB3D9; Fallback UI&#xAE4C;&#xC9C0;" loading="lazy" width="926" height="542" srcset="https://tech.e3view.com/content/images/size/w600/2025/11/image-11.png 600w, https://tech.e3view.com/content/images/2025/11/image-11.png 926w" sizes="(min-width: 720px) 720px"></figure><p><strong>&#xACB0;&#xACFC;</strong>:</p>
<ul>
<li>&#x2705; &#xC0AC;&#xC6A9;&#xC790;&#xAC00; &#xBD88;&#xAC00;&#xB2A5;&#xD55C; &#xC6D4; &#xC120;&#xD0DD; &#xBABB;&#xD568; (UX &#xAC1C;&#xC120;)</li>
<li>&#x2705; &quot;&#xB370;&#xC774;&#xD130; &#xC5C6;&#xC74C;&quot; &#xC5D0;&#xB7EC; &#xBA54;&#xC2DC;&#xC9C0; &#xC0AC;&#xC804; &#xCC28;&#xB2E8;</li>
</ul>
<hr>
<h2 id="%EB%A7%88%EC%B9%98%EB%A9%B0">&#xB9C8;&#xCE58;&#xBA70;</h2>
<p>&#xAC1C;&#xBC1C;&#xC744; &#xC2DC;&#xC791;&#xD560; &#xB54C;, &#xAC04;&#xB2E8;&#xD574; &#xBCF4;&#xC774;&#xB294; &#xC694;&#xAD6C;&#xC0AC;&#xD56D;&#xC774; &#xC788;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;:<br>
<em><em><strong>&quot;4&#xAC00;&#xC9C0; &#xC804;&#xB825; &#xC0AC;&#xC6A9;&#xB7C9; &#xB370;&#xC774;&#xD130;&#xB97C; &#xBE44;&#xAD50;&#xD574;&#xC11C; &#xBCF4;&#xC5EC;&#xC8FC;&#xC138;&#xC694;.&quot;</strong></em></em></p>
<p>&#xD558;&#xC9C0;&#xB9CC; &#xB69C;&#xAED1;&#xC744; &#xC5F4;&#xC5B4;&#xBCF4;&#xB2C8;:</p>
<p><strong>&#xBC31;&#xC5D4;&#xB4DC; (BFF &#xD328;&#xD134;)</strong>:</p>
<ol>
<li><strong>&#xC544;&#xD0A4;&#xD14D;&#xCC98;</strong>: YAGNI &#xC6D0;&#xCE59;(&#xD544;&#xC694;&#xD55C; &#xC791;&#xC5C5;&#xB9CC;&#xD574;&#xB77C;)&#xC73C;&#xB85C; DB &#xC800;&#xC7A5; &#xB300;&#xC2E0; API + &#xCE90;&#xC2F1; &#xC120;&#xD0DD;</li>
<li><strong>&#xC131;&#xB2A5;</strong>: CompletableFuture &#xBCD1;&#xB82C; &#xCC98;&#xB9AC;&#xB85C; 50% &#xC751;&#xB2F5; &#xC2DC;&#xAC04; &#xB2E8;&#xCD95;</li>
<li><strong>&#xBA54;&#xBAA8;&#xB9AC;</strong>: JsonParser &#xC2A4;&#xD2B8;&#xB9AC;&#xBC0D;&#xC73C;&#xB85C; 93% &#xBA54;&#xBAA8;&#xB9AC; &#xC808;&#xC57D;</li>
<li><strong>&#xC548;&#xC815;&#xC131;</strong>: Timeout + Fallback &#xCE90;&#xC2DC;&#xB85C; 99% &#xAC00;&#xC6A9;&#xC131; &#xB2EC;&#xC131;</li>
<li><strong>&#xBE44;&#xC6A9;</strong>: &#xCE90;&#xC2F1;&#xC73C;&#xB85C; C API &#xD638;&#xCD9C; 90% &#xAC10;&#xC18C;</li>
</ol>
<p><strong>&#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC; (UX &#xC124;&#xACC4;)</strong>:</p>
<ol start="6">
<li><strong>&#xC790;&#xB3D9; &#xC7AC;&#xC2DC;&#xB3C4;</strong>: 9&#xC6D4;&#x2192;8&#xC6D4; &#xC870;&#xC6A9;&#xD55C; Fallback&#xC73C;&#xB85C; &#xC5D0;&#xB7EC; &#xBA54;&#xC2DC;&#xC9C0; 90% &#xAC10;&#xC18C;</li>
<li><strong>Toast &#xC81C;&#xC5B4;</strong>: &#xCF00;&#xC774;&#xC2A4;&#xBCC4; &#xBD84;&#xAE30;&#xB85C; &#xC0AC;&#xC6A9;&#xC790; &#xD63C;&#xB780; &#xBC29;&#xC9C0;</li>
<li><strong>&#xB3D9;&#xC801; &#xC81C;&#xC57D;</strong>: &#xBD88;&#xAC00;&#xB2A5;&#xD55C; &#xC6D4; &#xC120;&#xD0DD; &#xCC28;&#xB2E8;</li>
</ol>
<p>&#xC774; &#xBAA8;&#xB4E0; &#xC81C;&#xC57D;&#xC744; &#xD480;&#xC5B4;&#xAC00;&#xB294; &#xACFC;&#xC815;&#xC5D0;&#xC11C;, &#xB2E8;&#xC21C;&#xD788; API&#xB97C; &#xB9CC;&#xB4E0; &#xAC8C; &#xC544;&#xB2C8;&#xB77C; <strong>&#xC644;&#xC804;&#xD55C; &#xACBD;&#xD5D8;</strong>&#xC744; &#xC124;&#xACC4;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC774; &#xAE00;&#xC774; &#xAE30;&#xC220; &#xC2A4;&#xD0DD;&#xC758; &#xACBD;&#xACC4;&#xB97C; &#xB118;&#xC5B4; &#xB354; &#xB098;&#xC740; &#xACBD;&#xD5D8;&#xC744; &#xB9CC;&#xB4DC;&#xB294; &#xB370; &#xC601;&#xAC10;&#xC774; &#xB418;&#xAE30;&#xB97C; &#xBC14;&#xB77C;&#xBA70; &#xB9C8;&#xBB34;&#xB9AC;&#xD558;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<hr>
]]></content:encoded></item><item><title><![CDATA[Claude Code와 Obsidian MCP 연동 가이드]]></title><description><![CDATA[<h2 id="%EC%86%8C%EA%B0%9C">&#xC18C;&#xAC1C;</h2>
<p>Claude Code&#xB294; Anthropic&#xC758; &#xACF5;&#xC2DD; CLI &#xB3C4;&#xAD6C;&#xB85C;, MCP(Model Context Protocol)&#xB97C; &#xD1B5;&#xD574; &#xB2E4;&#xC591;&#xD55C; &#xC678;&#xBD80; &#xB3C4;&#xAD6C;&#xC640; &#xC5F0;&#xB3D9;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC774; &#xAC00;&#xC774;&#xB4DC;&#xC5D0;&#xC11C;&#xB294; Claude Code&#xC640; Obsidian&#xC744; &#xC5F0;&#xB3D9;</p>]]></description><link>https://tech.e3view.com/claude-codewa-obsidian-mcp-yeondong-gaideu/</link><guid isPermaLink="false">68f61ccff4b84ffe43836f7e</guid><category><![CDATA[3view]]></category><category><![CDATA[쓰리뷰]]></category><category><![CDATA[mcp]]></category><category><![CDATA[claude]]></category><dc:creator><![CDATA[3view]]></dc:creator><pubDate>Mon, 20 Oct 2025 11:29:21 GMT</pubDate><media:content url="https://tech.e3view.com/content/images/2025/10/------2025-10-20-203224-1.png" medium="image"/><content:encoded><![CDATA[<h2 id="%EC%86%8C%EA%B0%9C">&#xC18C;&#xAC1C;</h2>
<img src="https://tech.e3view.com/content/images/2025/10/------2025-10-20-203224-1.png" alt="Claude Code&#xC640; Obsidian MCP &#xC5F0;&#xB3D9; &#xAC00;&#xC774;&#xB4DC;"><p>Claude Code&#xB294; Anthropic&#xC758; &#xACF5;&#xC2DD; CLI &#xB3C4;&#xAD6C;&#xB85C;, MCP(Model Context Protocol)&#xB97C; &#xD1B5;&#xD574; &#xB2E4;&#xC591;&#xD55C; &#xC678;&#xBD80; &#xB3C4;&#xAD6C;&#xC640; &#xC5F0;&#xB3D9;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC774; &#xAC00;&#xC774;&#xB4DC;&#xC5D0;&#xC11C;&#xB294; Claude Code&#xC640; Obsidian&#xC744; &#xC5F0;&#xB3D9;&#xD558;&#xC5EC; AI &#xC5D0;&#xC774;&#xC804;&#xD2B8;&#xAC00; &#xC5EC;&#xB7EC;&#xBD84;&#xC758; &#xB178;&#xD2B8;&#xB97C; &#xC77D;&#xACE0; &#xD3B8;&#xC9D1;&#xD560; &#xC218; &#xC788;&#xB3C4;&#xB85D; &#xC124;&#xC815;&#xD558;&#xB294; &#xBC29;&#xBC95;&#xC744; &#xC18C;&#xAC1C;&#xD569;&#xB2C8;&#xB2E4;.</p>
<h2 id="mcpmodel-context-protocol%EB%9E%80">MCP(Model Context Protocol)&#xB780;?</h2>
<p>MCP&#xB294; AI &#xBAA8;&#xB378;&#xC774; &#xC678;&#xBD80; &#xB370;&#xC774;&#xD130; &#xC18C;&#xC2A4; &#xBC0F; &#xB3C4;&#xAD6C;&#xC640; &#xC0C1;&#xD638;&#xC791;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xAC8C; &#xD574;&#xC8FC;&#xB294; &#xD45C;&#xC900; &#xD504;&#xB85C;&#xD1A0;&#xCF5C;&#xC785;&#xB2C8;&#xB2E4;. Claude Code&#xB294; MCP&#xB97C; &#xD1B5;&#xD574; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC740; &#xC791;&#xC5C5;&#xC774; &#xAC00;&#xB2A5;&#xD569;&#xB2C8;&#xB2E4;:</p>
<ul>
<li>&#xD30C;&#xC77C; &#xC2DC;&#xC2A4;&#xD15C; &#xC811;&#xADFC;</li>
<li>&#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xC5F0;&#xB3D9;</li>
<li>API &#xD638;&#xCD9C;</li>
<li><strong>Obsidian vault &#xAD00;&#xB9AC;</strong></li>
</ul>
<h2 id="obsidian%EC%9D%B4%EB%9E%80">Obsidian&#xC774;&#xB780;?</h2>
<p>Obsidian&#xC740; &#xB9C8;&#xD06C;&#xB2E4;&#xC6B4; &#xAE30;&#xBC18;&#xC758; &#xAC15;&#xB825;&#xD55C; &#xC9C0;&#xC2DD; &#xAD00;&#xB9AC; &#xB3C4;&#xAD6C;&#xC785;&#xB2C8;&#xB2E4;. &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC740; &#xD2B9;&#xC9D5;&#xC774; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<h3 id="%ED%95%B5%EC%8B%AC-%ED%8A%B9%EC%A7%95">&#xD575;&#xC2EC; &#xD2B9;&#xC9D5;</h3>
<ol>
<li>
<p><strong>&#xB85C;&#xCEEC; &#xC6B0;&#xC120;(Local-first)</strong>: &#xBAA8;&#xB4E0; &#xB178;&#xD2B8;&#xAC00; &#xC5EC;&#xB7EC;&#xBD84;&#xC758; &#xCEF4;&#xD4E8;&#xD130;&#xC5D0; &#xC77C;&#xBC18; &#xB9C8;&#xD06C;&#xB2E4;&#xC6B4; &#xD30C;&#xC77C;&#xB85C; &#xC800;&#xC7A5;&#xB429;&#xB2C8;&#xB2E4;. &#xB370;&#xC774;&#xD130; &#xC18C;&#xC720;&#xAD8C;&#xC774; &#xC644;&#xC804;&#xD788; &#xC5EC;&#xB7EC;&#xBD84;&#xC5D0;&#xAC8C; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
</li>
<li>
<p><strong>&#xC591;&#xBC29;&#xD5A5; &#xB9C1;&#xD06C;(Bidirectional Links)</strong>: <code>[[&#xB178;&#xD2B8; &#xC81C;&#xBAA9;]]</code> &#xD615;&#xC2DD;&#xC73C;&#xB85C; &#xB178;&#xD2B8; &#xAC04; &#xC5F0;&#xACB0;&#xC744; &#xB9CC;&#xB4E4; &#xC218; &#xC788;&#xC73C;&#xBA70;, &#xC5ED;&#xB9C1;&#xD06C;&#xB3C4; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xCD94;&#xC801;&#xB429;&#xB2C8;&#xB2E4;.</p>
</li>
<li>
<p><strong>&#xADF8;&#xB798;&#xD504; &#xBDF0;(Graph View)</strong>: &#xB178;&#xD2B8; &#xAC04;&#xC758; &#xC5F0;&#xACB0; &#xAD00;&#xACC4;&#xB97C; &#xC2DC;&#xAC01;&#xC801;&#xC73C;&#xB85C; &#xD655;&#xC778;&#xD560; &#xC218; &#xC788;&#xC5B4;, &#xC544;&#xC774;&#xB514;&#xC5B4; &#xAC04; &#xAD00;&#xACC4;&#xB97C; &#xD55C;&#xB208;&#xC5D0; &#xD30C;&#xC545;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
</li>
<li>
<p><strong>&#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xC0DD;&#xD0DC;&#xACC4;</strong>: &#xAC15;&#xB825;&#xD55C; &#xCEE4;&#xBBA4;&#xB2C8;&#xD2F0; &#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xC2DC;&#xC2A4;&#xD15C;&#xC73C;&#xB85C; &#xAE30;&#xB2A5;&#xC744; &#xD655;&#xC7A5;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
</li>
<li>
<p><strong>&#xAC1C;&#xC778; &#xC9C0;&#xC2DD; &#xBCA0;&#xC774;&#xC2A4;</strong>: &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xBB38;&#xC11C;, &#xD559;&#xC2B5; &#xB178;&#xD2B8;, &#xC5C5;&#xBB34; &#xC77C;&#xC9C0;, &#xC544;&#xC774;&#xB514;&#xC5B4; &#xBA54;&#xBAA8; &#xB4F1;&#xC744; &#xCCB4;&#xACC4;&#xC801;&#xC73C;&#xB85C; &#xAD00;&#xB9AC;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
</li>
</ol>
<h3 id="%EC%8B%A4%EC%A0%9C-%ED%99%9C%EC%9A%A9-%EC%82%AC%EB%A1%80">&#xC2E4;&#xC81C; &#xD65C;&#xC6A9; &#xC0AC;&#xB840;</h3>
<p>Obsidian&#xC740; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC740; &#xC6A9;&#xB3C4;&#xB85C; &#xB110;&#xB9AC; &#xC0AC;&#xC6A9;&#xB429;&#xB2C8;&#xB2E4;:</p>
<ul>
<li><strong>&#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xAD00;&#xB9AC;</strong>: &#xC791;&#xC5C5; &#xC77C;&#xC9C0;, &#xB9C8;&#xC77C;&#xC2A4;&#xD1A4;, &#xC774;&#xC288; &#xD2B8;&#xB798;&#xD0B9;</li>
<li><strong>&#xAE30;&#xC220; &#xBB38;&#xC11C;&#xD654;</strong>: API &#xBB38;&#xC11C;, &#xC2DC;&#xC2A4;&#xD15C; &#xC544;&#xD0A4;&#xD14D;&#xCC98;, &#xCF54;&#xB4DC; &#xBD84;&#xC11D;</li>
<li><strong>&#xD559;&#xC2B5; &#xB178;&#xD2B8;</strong>: &#xAC15;&#xC758; &#xB0B4;&#xC6A9;, &#xCC45; &#xC694;&#xC57D;, &#xC5F0;&#xAD6C; &#xC790;&#xB8CC;</li>
<li><strong>&#xAC1C;&#xC778; &#xC704;&#xD0A4;</strong>: &#xB808;&#xC2DC;&#xD53C;, &#xC5EC;&#xD589; &#xACC4;&#xD68D;, &#xB3C5;&#xC11C; &#xBAA9;&#xB85D;</li>
<li><strong>Zettelkasten</strong>: &#xC601;&#xAD6C; &#xB178;&#xD2B8; &#xC791;&#xC131;&#xC744; &#xD1B5;&#xD55C; &#xC9C0;&#xC2DD; &#xCD95;&#xC801;</li>
</ul>
<h2 id="obsidian%EA%B3%BC-claude-code-%EC%97%B0%EB%8F%99%EC%9D%98-%EC%9E%A5%EC%A0%90">Obsidian&#xACFC; Claude Code &#xC5F0;&#xB3D9;&#xC758; &#xC7A5;&#xC810;</h2>
<h3 id="1-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%9D%B8%EC%8B%9D-%EA%B8%B0%EB%B0%98-ai-%EC%9D%91%EB%8B%B5">1. &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC778;&#xC2DD; &#xAE30;&#xBC18; AI &#xC751;&#xB2F5;</h3>
<p>Claude Code&#xAC00; &#xC5EC;&#xB7EC;&#xBD84;&#xC758; Obsidian vault&#xC5D0; &#xC811;&#xADFC;&#xD560; &#xC218; &#xC788;&#xC73C;&#xBA74;, <strong>&#xCD95;&#xC801;&#xB41C; &#xC9C0;&#xC2DD;&#xC744; &#xBC14;&#xD0D5;&#xC73C;&#xB85C; &#xB354; &#xC815;&#xD655;&#xD558;&#xACE0; &#xB9E5;&#xB77D;&#xC5D0; &#xB9DE;&#xB294; &#xB2F5;&#xBCC0;</strong>&#xC744; &#xC81C;&#xACF5;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xC791;&#xB3D9; &#xC6D0;&#xB9AC;</strong>:</p>
<pre><code>&#xC0AC;&#xC6A9;&#xC790;: &quot;&#xC9C0;&#xB09C;&#xC8FC; &#xC791;&#xC5C5; &#xB0B4;&#xC6A9;&#xC744; &#xBC14;&#xD0D5;&#xC73C;&#xB85C; &#xC774;&#xBC88; &#xC8FC; &#xACC4;&#xD68D;&#xC744; &#xC138;&#xC6CC;&#xC918;&quot;

Claude Code &#x2192; MCP &#x2192; Obsidian vault
         &#x2193;
&quot;Project &#xAD00;&#xB9AC;/2025-10-19 &#xC791;&#xC5C5; &#xC77C;&#xC9C0;.md&quot; &#xC77D;&#xAE30;
&quot;&#xB808;&#xAC70;&#xC2DC; &#xBD84;&#xC11D;/&#xC0DD;&#xC0B0;&#xAD00;&#xB9AC; &#xB808;&#xAC70;&#xC2DC; &#xD654;&#xBA74; &#xBD84;&#xC11D;.md&quot; &#xCC38;&#xC870;
         &#x2193;
&#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xB9E5;&#xB77D;&#xC744; &#xC774;&#xD574;&#xD55C; &#xC0C1;&#xD0DC;&#xC5D0;&#xC11C; &#xB2F5;&#xBCC0; &#xC0DD;&#xC131;
</code></pre>
<h3 id="2-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%A7%80%EC%8B%9D-%EB%B2%A0%EC%9D%B4%EC%8A%A4-%ED%99%9C%EC%9A%A9">2. &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC9C0;&#xC2DD; &#xBCA0;&#xC774;&#xC2A4; &#xD65C;&#xC6A9;</h3>
<p>&#xC5EC;&#xB7EC;&#xBD84;&#xC774; Obsidian&#xC5D0; &#xC815;&#xB9AC;&#xD574;&#xB454; &#xBAA8;&#xB4E0; &#xBB38;&#xC11C;&#xAC00; Claude&#xC758; &#xC791;&#xC5C5; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8;&#xAC00; &#xB429;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xC2E4;&#xC81C; &#xC608;&#xC2DC;</strong> (&#xD604;&#xC7AC; &#xC5F0;&#xACB0;&#xB41C; vault &#xAE30;&#xC900;):</p>
<pre><code>&#xC0AC;&#xC6A9;&#xC790;: &quot;&#xC0DD;&#xC0B0; &#xBAA8;&#xB4C8; &#xB9C8;&#xC774;&#xADF8;&#xB808;&#xC774;&#xC158;&#xD560; &#xB54C; &#xC8FC;&#xC758;&#xD560; &#xC810;&#xC774; &#xBB50;&#xC57C;?&quot;

Claude&#xAC00; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xCC38;&#xC870;:
- &quot;&#xC0DD;&#xC0B0; &#xBAA8;&#xB4C8; &#xB9C8;&#xC774;&#xADF8;&#xB808;&#xC774;&#xC158; &#xAC00;&#xC774;&#xB4DC;.md&quot;
- &quot;Project &#xAD00;&#xB9AC;/DevExpress &#xB9C8;&#xC774;&#xADF8;&#xB808;&#xC774;&#xC158; &#xD504;&#xB85C;&#xC81D;&#xD2B8;.md&quot;
- &quot;&#xB808;&#xAC70;&#xC2DC; &#xBD84;&#xC11D;/&#xD654;&#xBA74;/&#xC0DD;&#xC0B0;&#xAD00;&#xB9AC; &#xB808;&#xAC70;&#xC2DC; &#xD654;&#xBA74; &#xBD84;&#xC11D;.md&quot;
- &quot;Migration/&#xB9C8;&#xC774;&#xADF8;&#xB808;&#xC774;&#xC158; &#xC774;&#xC288; &#xD2B8;&#xB798;&#xD0B9;.md&quot;

&#x2192; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xBCC4; &#xD2B9;&#xC218; &#xC0C1;&#xD669;&#xC744; &#xBC18;&#xC601;&#xD55C; &#xB9DE;&#xCDA4; &#xB2F5;&#xBCC0; &#xC81C;&#xACF5;
</code></pre>
<h3 id="3-%EC%9D%BC%EA%B4%80%EB%90%9C-%EB%AC%B8%EC%84%9C-%EA%B4%80%EB%A6%AC">3. &#xC77C;&#xAD00;&#xB41C; &#xBB38;&#xC11C; &#xAD00;&#xB9AC;</h3>
<p>Claude&#xAC00; &#xC5EC;&#xB7EC;&#xBD84;&#xC758; &#xBB38;&#xC11C; &#xAD6C;&#xC870;&#xC640; &#xC791;&#xC131; &#xC2A4;&#xD0C0;&#xC77C;&#xC744; &#xD559;&#xC2B5;&#xD558;&#xC5EC; <strong>&#xC77C;&#xAD00;&#xB41C; &#xD615;&#xC2DD;&#xC73C;&#xB85C; &#xBB38;&#xC11C;&#xB97C; &#xC0DD;&#xC131;&#xD558;&#xACE0; &#xC218;&#xC815;</strong>&#xD569;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xC608;&#xC2DC;</strong>:</p>
<pre><code>&#xC0AC;&#xC6A9;&#xC790;: &quot;&#xC624;&#xB298; &#xC791;&#xC5C5; &#xC77C;&#xC9C0;&#xB97C; &#xC791;&#xC131;&#xD574;&#xC918;&quot;

Claude&#xAC00;:
1. &#xAE30;&#xC874; &#xC791;&#xC5C5; &#xC77C;&#xC9C0; &#xD15C;&#xD50C;&#xB9BF; &#xBD84;&#xC11D;
   (&quot;Project &#xAD00;&#xB9AC;/2025-10-19 &#xC791;&#xC5C5; &#xC77C;&#xC9C0;.md&quot; &#xCC38;&#xC870;)
2. &#xB3D9;&#xC77C;&#xD55C; &#xAD6C;&#xC870;&#xC640; &#xD615;&#xC2DD;&#xC73C;&#xB85C; &#xC0C8; &#xD30C;&#xC77C; &#xC0DD;&#xC131;
3. &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xBCC4; &#xC9C4;&#xD589; &#xC0C1;&#xD669; &#xC790;&#xB3D9; &#xBC18;&#xC601;
</code></pre>
<h3 id="4-%EC%A7%80%EC%8B%9D-%EA%B7%B8%EB%9E%98%ED%94%84-%EA%B5%AC%EC%B6%95-%EB%B0%8F-%EC%97%B0%EA%B2%B0">4. &#xC9C0;&#xC2DD; &#xADF8;&#xB798;&#xD504; &#xAD6C;&#xCD95; &#xBC0F; &#xC5F0;&#xACB0;</h3>
<p>Claude&#xAC00; &#xB178;&#xD2B8; &#xAC04;&#xC758; &#xAD00;&#xACC4;&#xB97C; &#xC774;&#xD574;&#xD558;&#xACE0; <strong>&#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xAD00;&#xB828; &#xBB38;&#xC11C;&#xB97C; &#xC5F0;&#xACB0;</strong>&#xD569;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xC791;&#xB3D9; &#xBC29;&#xC2DD;</strong>:</p>
<pre><code>&#xC0AC;&#xC6A9;&#xC790;: &quot;MES &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xC2A4;&#xD0A4;&#xB9C8;&#xC5D0; &#xB300;&#xD55C; &#xC778;&#xB371;&#xC2A4; &#xD398;&#xC774;&#xC9C0; &#xB9CC;&#xB4E4;&#xC5B4;&#xC918;&quot;

Claude&#xAC00;:
1. vault &#xC804;&#xCCB4; &#xAC80;&#xC0C9;&#xC73C;&#xB85C; &#xAD00;&#xB828; &#xD30C;&#xC77C; &#xBC1C;&#xACAC;
   - &quot;MES &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xC2A4;&#xD0A4;&#xB9C8;.md&quot;
   - &quot;MES &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; DDL.sql&quot;
   - &quot;Backend/&#xBC31;&#xC5D4;&#xB4DC; API &#xD14C;&#xC774;&#xBE14; &#xBC0F; Controller &#xB9E4;&#xD551;.md&quot;
2. &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xC591;&#xBC29;&#xD5A5; &#xB9C1;&#xD06C; &#xC0DD;&#xC131;
3. &#xCE74;&#xD14C;&#xACE0;&#xB9AC;&#xBCC4;&#xB85C; &#xC815;&#xB9AC;&#xB41C; &#xC778;&#xB371;&#xC2A4; &#xD398;&#xC774;&#xC9C0; &#xC0DD;&#xC131;
</code></pre>
<h3 id="5-%EB%B0%98%EB%B3%B5-%EC%9E%91%EC%97%85-%EC%9E%90%EB%8F%99%ED%99%94">5. &#xBC18;&#xBCF5; &#xC791;&#xC5C5; &#xC790;&#xB3D9;&#xD654;</h3>
<p>&#xC815;&#xD615;&#xD654;&#xB41C; &#xC791;&#xC5C5;&#xC744; Claude&#xC5D0;&#xAC8C; &#xB9E1;&#xACA8; &#xC2DC;&#xAC04;&#xC744; &#xC808;&#xC57D;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xD65C;&#xC6A9; &#xC608;&#xC2DC;</strong>:</p>
<ul>
<li><strong>&#xC77C;&#xC77C; &#xC2A4;&#xD0E0;&#xB4DC;&#xC5C5; &#xB9AC;&#xD3EC;&#xD2B8; &#xC0DD;&#xC131;</strong>: &#xC791;&#xC5C5; &#xC77C;&#xC9C0;&#xB97C; &#xBD84;&#xC11D;&#xD574; &#xC694;&#xC57D; &#xC0DD;&#xC131;</li>
<li><strong>&#xC8FC;&#xAC04;/&#xC6D4;&#xAC04; &#xB9AC;&#xBDF0;</strong>: &#xAE30;&#xAC04;&#xBCC4; &#xC791;&#xC5C5; &#xB0B4;&#xC6A9; &#xCDE8;&#xD569; &#xBC0F; &#xBD84;&#xC11D;</li>
<li><strong>&#xBB38;&#xC11C; &#xC5C5;&#xB370;&#xC774;&#xD2B8; &#xCD94;&#xC801;</strong>: &#xBCC0;&#xACBD;&#xB41C; API&#xB098; &#xC2A4;&#xD0A4;&#xB9C8; &#xAD00;&#xB828; &#xBB38;&#xC11C; &#xC790;&#xB3D9; &#xC5C5;&#xB370;&#xC774;&#xD2B8;</li>
<li><strong>&#xD0DC;&#xADF8; &#xC815;&#xB9AC;</strong>: &#xC77C;&#xAD00;&#xB41C; &#xD0DC;&#xADF8; &#xCCB4;&#xACC4;&#xB85C; &#xC790;&#xB3D9; &#xC815;&#xB9AC;</li>
</ul>
<h3 id="6-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%A0%84%EC%B2%B4-%EB%A7%A5%EB%9D%BD-%ED%8C%8C%EC%95%85">6. &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC804;&#xCCB4; &#xB9E5;&#xB77D; &#xD30C;&#xC545;</h3>
<p>&#xB300;&#xADDC;&#xBAA8; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC5D0;&#xC11C; &#xD2B9;&#xD788; &#xC720;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xC2DC;&#xB098;&#xB9AC;&#xC624;</strong>:</p>
<pre><code>&#xC0AC;&#xC6A9;&#xC790;: &quot;&#xC0DD;&#xC0B0; &#xBAA8;&#xB4C8;&#xC5D0;&#xC11C; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xBAA8;&#xB4E0; API &#xC5D4;&#xB4DC;&#xD3EC;&#xC778;&#xD2B8;&#xB97C; &#xC815;&#xB9AC;&#xD574;&#xC918;&quot;

Claude&#xAC00;:
1. &quot;Backend/&#xC0DD;&#xC0B0; &#xBAA8;&#xB4C8; &#xBC31;&#xC5D4;&#xB4DC; API &#xBD84;&#xC11D;.md&quot; &#xC77D;&#xAE30;
2. &quot;Project &#xAD00;&#xB9AC;/API &#xBCC0;&#xACBD; &#xC0AC;&#xD56D;.md&quot; &#xCC38;&#xC870;
3. &quot;&#xB808;&#xAC70;&#xC2DC; &#xBD84;&#xC11D;&quot; &#xD3F4;&#xB354; &#xC804;&#xCCB4; &#xC2A4;&#xCE94;
4. &#xBAA8;&#xB4E0; &#xC815;&#xBCF4;&#xB97C; &#xC885;&#xD569;&#xD558;&#xC5EC; &#xC644;&#xC804;&#xD55C; API &#xBAA9;&#xB85D; &#xC0DD;&#xC131;

&#x2192; &#xC5EC;&#xB7EC; &#xBB38;&#xC11C;&#xC5D0; &#xD769;&#xC5B4;&#xC9C4; &#xC815;&#xBCF4;&#xB97C; &#xD55C; &#xBC88;&#xC5D0; &#xD1B5;&#xD569;
</code></pre>
<h3 id="7-ragretrieval-augmented-generation-%EA%B5%AC%ED%98%84">7. RAG(Retrieval-Augmented Generation) &#xAD6C;&#xD604;</h3>
<p>Obsidian vault&#xB294; &#xC0AC;&#xC2E4;&#xC0C1; <strong>&#xAC1C;&#xC778;&#xD654;&#xB41C; RAG &#xC2DC;&#xC2A4;&#xD15C;</strong>&#xC774; &#xB429;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xC6D0;&#xB9AC;</strong>:</p>
<pre><code>&#xC77C;&#xBC18; Claude:
&#xC9C8;&#xBB38; &#x2192; AI &#xBAA8;&#xB378; &#x2192; &#xC77C;&#xBC18;&#xC801;&#xC778; &#xB2F5;&#xBCC0;

Claude + Obsidian MCP:
&#xC9C8;&#xBB38; &#x2192; vault&#xC5D0;&#xC11C; &#xAD00;&#xB828; &#xBB38;&#xC11C; &#xAC80;&#xC0C9; &#x2192; AI &#xBAA8;&#xB378; + &#xC2E4;&#xC81C; &#xBB38;&#xC11C; &#xB0B4;&#xC6A9; &#x2192; &#xC815;&#xD655;&#xD55C; &#xB9DE;&#xCDA4; &#xB2F5;&#xBCC0;
</code></pre>
<p><strong>&#xC7A5;&#xC810;</strong>:</p>
<ul>
<li>&#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xD2B9;&#xC815; &#xC6A9;&#xC5B4;&#xC640; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xBC18;&#xC601;</li>
<li>&#xC2E4;&#xC81C; &#xB370;&#xC774;&#xD130; &#xAE30;&#xBC18; &#xB2F5;&#xBCC0; (&#xD658;&#xAC01; &#xAC10;&#xC18C;)</li>
<li>&#xD68C;&#xC0AC;/&#xD300; &#xACE0;&#xC720;&#xC758; &#xC6CC;&#xD06C;&#xD50C;&#xB85C;&#xC6B0; &#xC774;&#xD574;</li>
</ul>
<h2 id="%ED%95%84%EC%9A%94-%EC%A1%B0%EA%B1%B4">&#xD544;&#xC694; &#xC870;&#xAC74;</h2>
<ul>
<li>Claude Code &#xC124;&#xCE58;</li>
<li>Obsidian &#xC124;&#xCE58;</li>
</ul>
<h2 id="obsidian-mcp-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-%EC%84%A4%EC%B9%98">Obsidian MCP &#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xC124;&#xCE58;</h2>
<p>&#xC774; &#xBC29;&#xC2DD;&#xC740; Obsidian &#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC744; &#xD1B5;&#xD574; MCP &#xC11C;&#xBC84;&#xB97C; &#xAD6C;&#xB3D9;&#xD558;&#xB294; &#xBC29;&#xC2DD;&#xC785;&#xB2C8;&#xB2E4;. &#xBCC4;&#xB3C4;&#xC758; Node.js &#xD658;&#xACBD;&#xC774;&#xB098; npm &#xC124;&#xCE58;&#xAC00; &#xD544;&#xC694; &#xC5C6;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h3 id="1-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C">1. &#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;</h3>
<p>GitHub releases &#xD398;&#xC774;&#xC9C0;&#xC5D0;&#xC11C; &#xCD5C;&#xC2E0; &#xBC84;&#xC804;&#xC758; &#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xD30C;&#xC77C;&#xC744; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p><strong>&#xD544;&#xC694;&#xD55C; &#xD30C;&#xC77C; 3&#xAC1C;:</strong></p>
<ul>
<li><code>main.js</code></li>
<li><code>manifest.json</code></li>
<li><code>styles.css</code></li>
</ul>
<p>&#xB2E4;&#xC6B4;&#xB85C;&#xB4DC; &#xBA85;&#xB839;&#xC5B4; (Windows PowerShell &#xB610;&#xB294; Git Bash):</p>
<pre><code class="language-bash"># &#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xB514;&#xB809;&#xD1A0;&#xB9AC; &#xC0DD;&#xC131;
mkdir -p &quot;C:\path\to\your\vault\.obsidian\plugins\obsidian-claude-code-mcp&quot;
cd &quot;C:\path\to\your\vault\.obsidian\plugins\obsidian-claude-code-mcp&quot;

# &#xD30C;&#xC77C; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;
curl -L -O https://github.com/iansinnott/obsidian-claude-code-mcp/releases/download/1.1.8/main.js
curl -L -O https://github.com/iansinnott/obsidian-claude-code-mcp/releases/download/1.1.8/manifest.json
curl -L -O https://github.com/iansinnott/obsidian-claude-code-mcp/releases/download/1.1.8/styles.css
</code></pre>
<p>macOS/Linux:</p>
<pre><code class="language-bash"># &#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xB514;&#xB809;&#xD1A0;&#xB9AC; &#xC0DD;&#xC131;
mkdir -p ~/Documents/ObsidianVault/.obsidian/plugins/obsidian-claude-code-mcp
cd ~/Documents/ObsidianVault/.obsidian/plugins/obsidian-claude-code-mcp

# &#xD30C;&#xC77C; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;
curl -L -O https://github.com/iansinnott/obsidian-claude-code-mcp/releases/download/1.1.8/main.js
curl -L -O https://github.com/iansinnott/obsidian-claude-code-mcp/releases/download/1.1.8/manifest.json
curl -L -O https://github.com/iansinnott/obsidian-claude-code-mcp/releases/download/1.1.8/styles.css
</code></pre>
<p><strong>&#xC911;&#xC694;</strong>: <code>C:\path\to\your\vault</code> &#xB610;&#xB294; <code>~/Documents/ObsidianVault</code>&#xB97C; &#xC2E4;&#xC81C; Obsidian vault &#xACBD;&#xB85C;&#xB85C; &#xBCC0;&#xACBD;&#xD558;&#xC138;&#xC694;.</p>
<h3 id="2-obsidian%EC%97%90%EC%84%9C-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-%ED%99%9C%EC%84%B1%ED%99%94">2. Obsidian&#xC5D0;&#xC11C; &#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xD65C;&#xC131;&#xD654;</h3>
<ol>
<li>Obsidian&#xC744; &#xC2E4;&#xD589;&#xD569;&#xB2C8;&#xB2E4;</li>
<li>&#xC124;&#xC815;(Settings) &#x2192; &#xCEE4;&#xBBA4;&#xB2C8;&#xD2F0; &#xD50C;&#xB7EC;&#xADF8;&#xC778;(Community plugins)&#xC73C;&#xB85C; &#xC774;&#xB3D9;</li>
<li>&quot;Claude Code MCP&quot; &#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC744; &#xCC3E;&#xC544; &#xD65C;&#xC131;&#xD654;&#xD569;&#xB2C8;&#xB2E4;</li>
<li>&#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xC124;&#xC815;&#xC5D0;&#xC11C; MCP &#xC11C;&#xBC84; &#xC124;&#xC815;&#xC744; &#xD655;&#xC778;&#xD569;&#xB2C8;&#xB2E4;</li>
</ol>
<h3 id="3-claude-code-cli%EB%A1%9C-mcp-%EC%97%B0%EA%B2%B0">3. Claude Code CLI&#xB85C; MCP &#xC5F0;&#xACB0;</h3>
<p>Obsidian &#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC774; &#xD65C;&#xC131;&#xD654;&#xB418;&#xBA74; &#xB85C;&#xCEEC; MCP &#xC11C;&#xBC84;&#xAC00; &#xD3EC;&#xD2B8; 22360&#xC5D0;&#xC11C; &#xC2E4;&#xD589;&#xB429;&#xB2C8;&#xB2E4;. Claude CLI &#xBA85;&#xB839;&#xC5B4;&#xB85C; &#xAC04;&#xB2E8;&#xD558;&#xAC8C; &#xC5F0;&#xACB0;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<pre><code class="language-bash">claude mcp add --transport sse obsidian http://localhost:22360/sse
</code></pre>
<p><strong>&#xBA85;&#xB839;&#xC5B4; &#xC124;&#xBA85;</strong>:</p>
<ul>
<li><code>claude mcp add</code>: MCP &#xC11C;&#xBC84;&#xB97C; &#xCD94;&#xAC00;&#xD558;&#xB294; &#xBA85;&#xB839;&#xC5B4;</li>
<li><code>--transport sse</code>: SSE(Server-Sent Events) &#xC804;&#xC1A1; &#xBC29;&#xC2DD; &#xC0AC;&#xC6A9;</li>
<li><code>obsidian</code>: MCP &#xC11C;&#xBC84;&#xC758; &#xC774;&#xB984; (&#xC6D0;&#xD558;&#xB294; &#xC774;&#xB984;&#xC73C;&#xB85C; &#xBCC0;&#xACBD; &#xAC00;&#xB2A5;)</li>
<li><code>http://localhost:22360/sse</code>: Obsidian &#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC774; &#xC2E4;&#xD589;&#xD558;&#xB294; MCP &#xC11C;&#xBC84; &#xC8FC;&#xC18C;</li>
</ul>
<p><strong>&#xC911;&#xC694;</strong>:</p>
<ul>
<li>Obsidian&#xC774; &#xC2E4;&#xD589;&#xB418;&#xACE0; &#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC774; &#xD65C;&#xC131;&#xD654;&#xB41C; &#xC0C1;&#xD0DC;&#xC5D0;&#xC11C; &#xC774; &#xBA85;&#xB839;&#xC5B4;&#xB97C; &#xC2E4;&#xD589;&#xD558;&#xC138;&#xC694;</li>
<li>&#xC5F0;&#xACB0;&#xC774; &#xC131;&#xACF5;&#xD558;&#xBA74; Claude Code&#xC5D0;&#xC11C; Obsidian vault&#xC5D0; &#xC811;&#xADFC;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;</li>
</ul>
<p></p><h3 id="31-vault%EC%9D%98-path%ED%99%95%EC%9D%B8-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95">3.1 Vault&#xC758; Path&#xD655;&#xC778; &#xD558;&#xB294; &#xBC29;&#xBC95;</h3>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/10/image-1.png" class="kg-image" alt="Claude Code&#xC640; Obsidian MCP &#xC5F0;&#xB3D9; &#xAC00;&#xC774;&#xB4DC;" loading="lazy" width="808" height="1086" srcset="https://tech.e3view.com/content/images/size/w600/2025/10/image-1.png 600w, https://tech.e3view.com/content/images/2025/10/image-1.png 808w" sizes="(min-width: 720px) 720px"></figure><p></p><h3 id="32-%EC%97%B0%EB%8F%99%EC%9D%B4-%EC%9E%98-%EB%90%98%EC%97%88%EB%8A%94%EC%A7%80-%ED%99%95%EC%9D%B8-%ED%95%98%EA%B8%B0">3.2 &#xC5F0;&#xB3D9;&#xC774; &#xC798; &#xB418;&#xC5C8;&#xB294;&#xC9C0; &#xD655;&#xC778; &#xD558;&#xAE30;</h3>
<figure class="kg-card kg-image-card"><img src="https://tech.e3view.com/content/images/2025/10/image-2.png" class="kg-image" alt="Claude Code&#xC640; Obsidian MCP &#xC5F0;&#xB3D9; &#xAC00;&#xC774;&#xB4DC;" loading="lazy" width="1122" height="168" srcset="https://tech.e3view.com/content/images/size/w600/2025/10/image-2.png 600w, https://tech.e3view.com/content/images/size/w1000/2025/10/image-2.png 1000w, https://tech.e3view.com/content/images/2025/10/image-2.png 1122w" sizes="(min-width: 720px) 720px"></figure><p></p><h2 id="%EC%82%AC%EC%9A%A9-%EA%B0%80%EB%8A%A5%ED%95%9C-%EA%B8%B0%EB%8A%A5">&#xC0AC;&#xC6A9; &#xAC00;&#xB2A5;&#xD55C; &#xAE30;&#xB2A5;</h2>
<p>Obsidian MCP &#xC5F0;&#xB3D9;&#xC744; &#xD1B5;&#xD574; Claude Code&#xC5D0;&#xC11C; &#xB2E4;&#xC74C; &#xC791;&#xC5C5;&#xC774; &#xAC00;&#xB2A5;&#xD569;&#xB2C8;&#xB2E4;:</p>
<h3 id="1-vault-%ED%8C%8C%EC%9D%BC-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C">1. Vault &#xD30C;&#xC77C; &#xBAA9;&#xB85D; &#xC870;&#xD68C;</h3>
<pre><code>vault&#xC758; &#xBAA8;&#xB4E0; &#xD30C;&#xC77C;&#xC744; &#xBCF4;&#xC5EC;&#xC918;
</code></pre>
<p>Claude&#xAC00; <code>mcp__obsidian__get_workspace_files</code> &#xB3C4;&#xAD6C;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; vault&#xC758; &#xBAA8;&#xB4E0; &#xD30C;&#xC77C;&#xC744; &#xB098;&#xC5F4;&#xD569;&#xB2C8;&#xB2E4;.</p>
<h3 id="2-%ED%8C%8C%EC%9D%BC-%EB%82%B4%EC%9A%A9-%EC%9D%BD%EA%B8%B0">2. &#xD30C;&#xC77C; &#xB0B4;&#xC6A9; &#xC77D;&#xAE30;</h3>
<pre><code>&quot;&#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xAD00;&#xB9AC;/&#xC791;&#xC5C5; &#xC77C;&#xC9C0;.md&quot; &#xD30C;&#xC77C;&#xC744; &#xC77D;&#xC5B4;&#xC918;
</code></pre>
<p>Claude&#xAC00; <code>mcp__obsidian__view</code> &#xB3C4;&#xAD6C;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xD2B9;&#xC815; &#xD30C;&#xC77C;&#xC758; &#xB0B4;&#xC6A9;&#xC744; &#xC77D;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h3 id="3-%ED%8C%8C%EC%9D%BC-%EB%82%B4%EC%9A%A9-%EC%88%98%EC%A0%95">3. &#xD30C;&#xC77C; &#xB0B4;&#xC6A9; &#xC218;&#xC815;</h3>
<pre><code>&quot;&#xC791;&#xC5C5; &#xC77C;&#xC9C0;.md&quot;&#xC758; TODO &#xC139;&#xC158;&#xC5D0; &#xC0C8;&#xB85C;&#xC6B4; &#xD0DC;&#xC2A4;&#xD06C;&#xB97C; &#xCD94;&#xAC00;&#xD574;&#xC918;
</code></pre>
<p>Claude&#xAC00; <code>mcp__obsidian__str_replace</code> &#xB610;&#xB294; <code>mcp__obsidian__insert</code> &#xB3C4;&#xAD6C;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xD30C;&#xC77C;&#xC744; &#xD3B8;&#xC9D1;&#xD569;&#xB2C8;&#xB2E4;.</p>
<h3 id="4-%EC%83%88-%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1">4. &#xC0C8; &#xD30C;&#xC77C; &#xC0DD;&#xC131;</h3>
<pre><code>&quot;Blog&quot; &#xD3F4;&#xB354;&#xC5D0; &#xC0C8;&#xB85C;&#xC6B4; &#xBE14;&#xB85C;&#xADF8; &#xAE00;&#xC744; &#xC791;&#xC131;&#xD574;&#xC918;
</code></pre>
<p>Claude&#xAC00; <code>mcp__obsidian__create</code> &#xB3C4;&#xAD6C;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xC0C8; &#xD30C;&#xC77C;&#xC744; &#xC0DD;&#xC131;&#xD569;&#xB2C8;&#xB2E4;.</p>
<h3 id="5-%ED%98%84%EC%9E%AC-%ED%99%9C%EC%84%B1-%ED%8C%8C%EC%9D%BC-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0">5. &#xD604;&#xC7AC; &#xD65C;&#xC131; &#xD30C;&#xC77C; &#xAC00;&#xC838;&#xC624;&#xAE30;</h3>
<pre><code>&#xC9C0;&#xAE08; &#xC5F4;&#xB824;&#xC788;&#xB294; &#xD30C;&#xC77C;&#xC744; &#xBD84;&#xC11D;&#xD574;&#xC918;
</code></pre>
<p>Claude&#xAC00; <code>mcp__obsidian__get_current_file</code> &#xB3C4;&#xAD6C;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; Obsidian&#xC5D0;&#xC11C; &#xD604;&#xC7AC; &#xC5F4;&#xB824;&#xC788;&#xB294; &#xD30C;&#xC77C;&#xC744; &#xAC00;&#xC838;&#xC635;&#xB2C8;&#xB2E4;.</p>
<p></p><h2 id="%EC%8B%A4%EC%A0%9C-%EC%82%AC%EC%9A%A9-%EC%98%88%EC%8B%9C">&#xC2E4;&#xC81C; &#xC0AC;&#xC6A9; &#xC608;&#xC2DC;</h2>
<h3 id="%EC%98%88%EC%8B%9C-1-%EC%9D%BC%EC%9D%BC-%EC%9E%91%EC%97%85-%EC%9D%BC%EC%A7%80-%EC%9E%90%EB%8F%99%ED%99%94">&#xC608;&#xC2DC; 1: &#xC77C;&#xC77C; &#xC791;&#xC5C5; &#xC77C;&#xC9C0; &#xC790;&#xB3D9;&#xD654;</h3>
<pre><code>&#xC624;&#xB298; &#xB0A0;&#xC9DC;&#xB85C; &#xC0C8;&#xB85C;&#xC6B4; &#xC791;&#xC5C5; &#xC77C;&#xC9C0;&#xB97C; &#xB9CC;&#xB4E4;&#xC5B4;&#xC918;. &#xD15C;&#xD50C;&#xB9BF;&#xC740; &#xAE30;&#xC874; &#xC791;&#xC5C5; &#xC77C;&#xC9C0;&#xB97C; &#xCC38;&#xACE0;&#xD574;.
</code></pre>
<p>Claude&#xAC00;:</p>
<ol>
<li>&#xAE30;&#xC874; &#xC791;&#xC5C5; &#xC77C;&#xC9C0; &#xD30C;&#xC77C;&#xC744; &#xC77D;&#xC5B4; &#xD15C;&#xD50C;&#xB9BF; &#xD655;&#xC778;</li>
<li>&#xC624;&#xB298; &#xB0A0;&#xC9DC;&#xB85C; &#xC0C8; &#xD30C;&#xC77C; &#xC0DD;&#xC131;</li>
<li>&#xD15C;&#xD50C;&#xB9BF; &#xC801;&#xC6A9;</li>
</ol>
<h3 id="%EC%98%88%EC%8B%9C-2-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC-%EB%B0%8F-%EB%A7%81%ED%81%AC-%EC%B6%94%EA%B0%80">&#xC608;&#xC2DC; 2: &#xB178;&#xD2B8; &#xC815;&#xB9AC; &#xBC0F; &#xB9C1;&#xD06C; &#xCD94;&#xAC00;</h3>
<pre><code>&quot;&#xD504;&#xB85C;&#xC81D;&#xD2B8; A&quot; &#xAD00;&#xB828; &#xD30C;&#xC77C;&#xB4E4;&#xC744; &#xCC3E;&#xC544;&#xC11C; &#xC778;&#xB371;&#xC2A4; &#xD398;&#xC774;&#xC9C0;&#xB97C; &#xB9CC;&#xB4E4;&#xC5B4;&#xC918;
</code></pre>
<p>Claude&#xAC00;:</p>
<ol>
<li>&#xD504;&#xB85C;&#xC81D;&#xD2B8; A &#xAD00;&#xB828; &#xD30C;&#xC77C; &#xAC80;&#xC0C9;</li>
<li>&#xC778;&#xB371;&#xC2A4; &#xD30C;&#xC77C; &#xC0DD;&#xC131;</li>
<li>&#xAC01; &#xD30C;&#xC77C;&#xB85C;&#xC758; &#xB9C1;&#xD06C; &#xCD94;&#xAC00;</li>
</ol>
<h3 id="%EC%98%88%EC%8B%9C-3-%EC%BD%98%ED%85%90%EC%B8%A0-%EB%B6%84%EC%84%9D-%EB%B0%8F-%EC%9A%94%EC%95%BD">&#xC608;&#xC2DC; 3: &#xCF58;&#xD150;&#xCE20; &#xBD84;&#xC11D; &#xBC0F; &#xC694;&#xC57D;</h3>
<pre><code>&#xC774;&#xBC88; &#xC8FC; &#xC791;&#xC5C5; &#xC77C;&#xC9C0;&#xB4E4;&#xC744; &#xBD84;&#xC11D;&#xD574;&#xC11C; &#xC8FC;&#xAC04; &#xB9AC;&#xD3EC;&#xD2B8;&#xB97C; &#xC791;&#xC131;&#xD574;&#xC918;
</code></pre>
<p>Claude&#xAC00;:</p>
<ol>
<li>&#xC774;&#xBC88; &#xC8FC; &#xC791;&#xC5C5; &#xC77C;&#xC9C0; &#xD30C;&#xC77C;&#xB4E4; &#xC870;&#xD68C;</li>
<li>&#xAC01; &#xD30C;&#xC77C; &#xB0B4;&#xC6A9; &#xC77D;&#xAE30;</li>
<li>&#xC694;&#xC57D; &#xBC0F; &#xC8FC;&#xAC04; &#xB9AC;&#xD3EC;&#xD2B8; &#xC0DD;&#xC131;</li>
</ol>
<p></p><h2 id="%EA%B3%A0%EA%B8%89-%ED%99%9C%EC%9A%A9-%ED%8C%81">&#xACE0;&#xAE09; &#xD65C;&#xC6A9; &#xD301;</h2>
<h3 id="1-obsidian-api-%EC%A7%81%EC%A0%91-%EC%82%AC%EC%9A%A9">1. Obsidian API &#xC9C1;&#xC811; &#xC0AC;&#xC6A9;</h3>
<p><code>mcp__obsidian__obsidian_api</code> &#xB3C4;&#xAD6C;&#xB97C; &#xD1B5;&#xD574; Obsidian&#xC758; TypeScript API&#xB97C; &#xC9C1;&#xC811; &#xD638;&#xCD9C;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<pre><code>Obsidian API&#xB97C; &#xC0AC;&#xC6A9;&#xD574;&#xC11C; &#xBAA8;&#xB4E0; &#xD0DC;&#xADF8;&#xB97C; &#xCC3E;&#xC544;&#xC918;
</code></pre>
<h3 id="2-%ED%8C%8C%EC%9D%BC-%ED%8C%A8%ED%84%B4-%ED%95%84%ED%84%B0%EB%A7%81">2. &#xD30C;&#xC77C; &#xD328;&#xD134; &#xD544;&#xD130;&#xB9C1;</h3>
<p>&#xD30C;&#xC77C; &#xBAA9;&#xB85D; &#xC870;&#xD68C; &#xC2DC; &#xD328;&#xD134;&#xC744; &#xC9C0;&#xC815;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<pre><code>&quot;*.md&quot; &#xD328;&#xD134;&#xC73C;&#xB85C; &#xB9C8;&#xD06C;&#xB2E4;&#xC6B4; &#xD30C;&#xC77C;&#xB9CC; &#xBCF4;&#xC5EC;&#xC918;
</code></pre>
<h3 id="3-%ED%8A%B9%EC%A0%95-%EB%9D%BC%EC%9D%B8-%EB%B2%94%EC%9C%84-%EC%9D%BD%EA%B8%B0">3. &#xD2B9;&#xC815; &#xB77C;&#xC778; &#xBC94;&#xC704; &#xC77D;&#xAE30;</h3>
<p>&#xD070; &#xD30C;&#xC77C;&#xC758; &#xACBD;&#xC6B0; &#xD2B9;&#xC815; &#xB77C;&#xC778;&#xB9CC; &#xC77D;&#xC744; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;:</p>
<pre><code>&quot;&#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xC2A4;&#xD0A4;&#xB9C8;.md&quot;&#xC758; 100&#xBC88;&#xC9F8; &#xC904;&#xBD80;&#xD130; 200&#xBC88;&#xC9F8; &#xC904;&#xAE4C;&#xC9C0; &#xC77D;&#xC5B4;&#xC918;
</code></pre>
<h2 id="%EB%B3%B4%EC%95%88-%EA%B3%A0%EB%A0%A4%EC%82%AC%ED%95%AD">&#xBCF4;&#xC548; &#xACE0;&#xB824;&#xC0AC;&#xD56D;</h2>
<ul>
<li>MCP &#xC11C;&#xBC84;&#xB294; vault&#xC5D0; &#xB300;&#xD55C; &#xC804;&#xCCB4; &#xC77D;&#xAE30;/&#xC4F0;&#xAE30; &#xAD8C;&#xD55C;&#xC744; &#xAC00;&#xC9D1;&#xB2C8;&#xB2E4;</li>
<li>&#xBBFC;&#xAC10;&#xD55C; &#xC815;&#xBCF4;&#xAC00; &#xD3EC;&#xD568;&#xB41C; vault&#xB294; &#xC8FC;&#xC758;&#xD574;&#xC11C; &#xC0AC;&#xC6A9;&#xD558;&#xC138;&#xC694;</li>
<li>&#xC124;&#xC815; &#xD30C;&#xC77C;&#xC5D0; &#xACBD;&#xB85C;&#xAC00; &#xC62C;&#xBC14;&#xB978;&#xC9C0; &#xD655;&#xC778;&#xD558;&#xC138;&#xC694;</li>
</ul>
<h2 id="%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0">&#xBB38;&#xC81C; &#xD574;&#xACB0;</h2>
<h3 id="mcp-%EC%84%9C%EB%B2%84%EA%B0%80-%EC%97%B0%EA%B2%B0%EB%90%98%EC%A7%80-%EC%95%8A%EC%9D%84-%EB%95%8C">MCP &#xC11C;&#xBC84;&#xAC00; &#xC5F0;&#xACB0;&#xB418;&#xC9C0; &#xC54A;&#xC744; &#xB54C;</h3>
<ol>
<li>
<p><strong>Obsidian &#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xD655;&#xC778;</strong>:</p>
<ul>
<li>Obsidian &#xC124;&#xC815; &#x2192; &#xCEE4;&#xBBA4;&#xB2C8;&#xD2F0; &#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC5D0;&#xC11C; &quot;Claude Code MCP&quot;&#xAC00; &#xD65C;&#xC131;&#xD654;&#xB418;&#xC5B4; &#xC788;&#xB294;&#xC9C0; &#xD655;&#xC778;</li>
<li>&#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC774; &#xBAA9;&#xB85D;&#xC5D0; &#xC5C6;&#xB2E4;&#xBA74; &#xD30C;&#xC77C;&#xC774; &#xC62C;&#xBC14;&#xB978; &#xC704;&#xCE58;&#xC5D0; &#xC788;&#xB294;&#xC9C0; &#xD655;&#xC778;:
<ul>
<li><code>.obsidian/plugins/obsidian-claude-code-mcp/</code> &#xD3F4;&#xB354; &#xD655;&#xC778;</li>
<li><code>main.js</code>, <code>manifest.json</code>, <code>styles.css</code> 3&#xAC1C; &#xD30C;&#xC77C;&#xC774; &#xBAA8;&#xB450; &#xC788;&#xB294;&#xC9C0; &#xD655;&#xC778;</li>
</ul>
</li>
</ul>
</li>
<li>
<p><strong>Obsidian &#xC7AC;&#xC2DC;&#xC791;</strong>:</p>
<ul>
<li>Obsidian&#xC744; &#xC644;&#xC804;&#xD788; &#xC885;&#xB8CC;&#xD558;&#xACE0; &#xB2E4;&#xC2DC; &#xC2DC;&#xC791;</li>
<li>&#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xB85C;&#xB4DC; &#xC911; &#xC624;&#xB958; &#xBA54;&#xC2DC;&#xC9C0;&#xAC00; &#xC788;&#xB294;&#xC9C0; &#xD655;&#xC778;</li>
</ul>
</li>
<li>
<p><strong>Claude Code &#xC7AC;&#xC2DC;&#xC791;</strong>:</p>
<ul>
<li><code>mcp_config.json</code> &#xC124;&#xC815; &#xD6C4; Claude Code&#xB97C; &#xC7AC;&#xC2DC;&#xC791;&#xD574;&#xC57C; &#xC801;&#xC6A9;&#xB429;&#xB2C8;&#xB2E4;</li>
</ul>
</li>
<li>
<p><strong>&#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xC124;&#xC815; &#xD655;&#xC778;</strong>:</p>
<ul>
<li>Obsidian&#xC5D0;&#xC11C; &#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xC124;&#xC815;&#xC744; &#xC5F4;&#xC5B4; MCP &#xC11C;&#xBC84; &#xC0C1;&#xD0DC; &#xD655;&#xC778;</li>
<li>&#xC124;&#xC815;&#xC5D0;&#xC11C; &#xC2E4;&#xC81C; config &#xB514;&#xB809;&#xD1A0;&#xB9AC; &#xACBD;&#xB85C;&#xB97C; &#xD655;&#xC778;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;</li>
</ul>
</li>
</ol>
<h3 id="%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%B0%BE%EC%9D%84-%EC%88%98-%EC%97%86%EC%9D%84-%EB%95%8C">&#xD30C;&#xC77C;&#xC744; &#xCC3E;&#xC744; &#xC218; &#xC5C6;&#xC744; &#xB54C;</h3>
<ul>
<li>&#xD30C;&#xC77C; &#xACBD;&#xB85C;&#xB294; vault root&#xB97C; &#xAE30;&#xC900;&#xC73C;&#xB85C; &#xC0C1;&#xB300; &#xACBD;&#xB85C;&#xB85C; &#xC9C0;&#xC815;</li>
<li>&#xC608;: <code>&quot;Blog/article.md&quot;</code> (&#xC55E;&#xC5D0; <code>/</code> &#xC5C6;&#xC74C;)</li>
<li>Obsidian&#xC774; &#xC2E4;&#xD589; &#xC911;&#xC774;&#xC5B4;&#xC57C; MCP &#xC11C;&#xBC84;&#xAC00; &#xC791;&#xB3D9;&#xD569;&#xB2C8;&#xB2E4;</li>
</ul>
<h3 id="%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8%EC%9D%B4-%EB%AA%A9%EB%A1%9D%EC%97%90-%EB%82%98%ED%83%80%EB%82%98%EC%A7%80-%EC%95%8A%EC%9D%84-%EB%95%8C">&#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC774; &#xBAA9;&#xB85D;&#xC5D0; &#xB098;&#xD0C0;&#xB098;&#xC9C0; &#xC54A;&#xC744; &#xB54C;</h3>
<ul>
<li>&#xCEE4;&#xBBA4;&#xB2C8;&#xD2F0; &#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC774; &#xD65C;&#xC131;&#xD654;&#xB418;&#xC5B4; &#xC788;&#xB294;&#xC9C0; &#xD655;&#xC778;:
<ul>
<li>&#xC124;&#xC815; &#x2192; &#xCEE4;&#xBBA4;&#xB2C8;&#xD2F0; &#xD50C;&#xB7EC;&#xADF8;&#xC778; &#x2192; &quot;&#xC81C;&#xD55C; &#xBAA8;&#xB4DC; &#xD574;&#xC81C;(Turn off restricted mode)&quot;</li>
</ul>
</li>
<li>&#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xD3F4;&#xB354; &#xC774;&#xB984;&#xC774; &#xC815;&#xD655;&#xD55C;&#xC9C0; &#xD655;&#xC778;: <code>obsidian-claude-code-mcp</code></li>
<li>Obsidian &#xAC1C;&#xBC1C;&#xC790; &#xCF58;&#xC194;(Ctrl+Shift+I)&#xC5D0;&#xC11C; &#xC5D0;&#xB7EC; &#xBA54;&#xC2DC;&#xC9C0; &#xD655;&#xC778;</li>
</ul>
<h3 id="%EA%B6%8C%ED%95%9C-%EC%98%A4%EB%A5%98">&#xAD8C;&#xD55C; &#xC624;&#xB958;</h3>
<ul>
<li>Obsidian&#xC774; vault &#xD3F4;&#xB354;&#xC5D0; &#xB300;&#xD55C; &#xC77D;&#xAE30;/&#xC4F0;&#xAE30; &#xAD8C;&#xD55C;&#xC774; &#xC788;&#xB294;&#xC9C0; &#xD655;&#xC778;</li>
<li><strong>&#xC911;&#xC694;</strong>: Obsidian&#xC774; &#xC2E4;&#xD589; &#xC911;&#xC774;&#xC5B4;&#xC57C; MCP &#xC11C;&#xBC84;&#xAC00; &#xC791;&#xB3D9;&#xD569;&#xB2C8;&#xB2E4;</li>
</ul>
<h2 id="%EA%B2%B0%EB%A1%A0">&#xACB0;&#xB860;</h2>
<p>Claude Code&#xC640; Obsidian&#xC758; MCP &#xC5F0;&#xB3D9;&#xC740; &#xB178;&#xD2B8; &#xAD00;&#xB9AC;&#xB97C; &#xC790;&#xB3D9;&#xD654;&#xD558;&#xACE0; AI&#xC758; &#xB3C4;&#xC6C0;&#xC744; &#xBC1B;&#xC544; &#xB354; &#xD6A8;&#xC728;&#xC801;&#xC73C;&#xB85C; &#xC9C0;&#xC2DD;&#xC744; &#xAD00;&#xB9AC;&#xD560; &#xC218; &#xC788;&#xAC8C; &#xD574;&#xC90D;&#xB2C8;&#xB2E4;. &#xC77C;&#xC77C; &#xC791;&#xC5C5; &#xC77C;&#xC9C0; &#xC791;&#xC131;, &#xB178;&#xD2B8; &#xC815;&#xB9AC;, &#xCF58;&#xD150;&#xCE20; &#xBD84;&#xC11D; &#xB4F1; &#xB2E4;&#xC591;&#xD55C; &#xC791;&#xC5C5;&#xC744; &#xC790;&#xB3D9;&#xD654;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC774; &#xAC15;&#xB825;&#xD55C; &#xB3C4;&#xAD6C;&#xB97C; &#xD65C;&#xC6A9;&#xD558;&#xC5EC; &#xC5EC;&#xB7EC;&#xBD84;&#xC758; &#xC9C0;&#xC2DD; &#xAD00;&#xB9AC; &#xC6CC;&#xD06C;&#xD50C;&#xB85C;&#xC6B0;&#xB97C; &#xD55C; &#xB2E8;&#xACC4; &#xC5C5;&#xADF8;&#xB808;&#xC774;&#xB4DC;&#xD574;&#xBCF4;&#xC138;&#xC694;!</p>
<h2 id="%EC%B0%B8%EA%B3%A0-%EC%9E%90%EB%A3%8C">&#xCC38;&#xACE0; &#xC790;&#xB8CC;</h2>
<ul>
<li><a href="https://docs.claude.com/claude-code?ref=tech.e3view.com">Claude Code &#xACF5;&#xC2DD; &#xBB38;&#xC11C;</a></li>
<li><a href="https://modelcontextprotocol.io/?ref=tech.e3view.com">MCP &#xD504;&#xB85C;&#xD1A0;&#xCF5C; &#xBB38;&#xC11C;</a></li>
<li><a href="https://docs.obsidian.md/Reference/TypeScript+API?ref=tech.e3view.com">Obsidian API &#xBB38;&#xC11C;</a></li>
<li><a href="https://github.com/iansinnott/obsidian-claude-code-mcp?ref=tech.e3view.com">Obsidian Claude Code MCP &#xD50C;&#xB7EC;&#xADF8;&#xC778;</a></li>
<li><a href="https://github.com/iansinnott/obsidian-claude-code-mcp/releases?ref=tech.e3view.com">&#xD50C;&#xB7EC;&#xADF8;&#xC778; &#xCD5C;&#xC2E0; &#xB9B4;&#xB9AC;&#xC988;</a></li>
</ul>
<hr>
]]></content:encoded></item></channel></rss>