| name | account-status |
| description | Generate a account status report by taking an account name, analyze spend trends and AWS account mappings, create an HTML report, render chart image for email compatibility, ask recipient email after report completion, and send immediately without reconfirmation. All analysis and email narrative must be in Korean. |
Account Status (Single Account)
์ด ์คํฌ์ ๊ณ์ ๋ช
ํ๋๋ฅผ ์
๋ ฅ๋ฐ์ ํด๋น ๊ณ์ ์ ์ง์ถ/๋งค์ถ ์ํ๋ฅผ ๋ถ์ํ๊ณ , HTML ๋ฆฌํฌํธ๋ฅผ ์์ฑํ ๋ค ์ฐจํธ๋ฅผ ์ด๋ฏธ์ง(JPEG ๊ถ์ฅ)๋ก ๋ณํํ์ฌ ์ด๋ฉ์ผ ๋ณธ๋ฌธ์ ํฌํจํด ๋ฐ์กํฉ๋๋ค.
Language (ํ์)
- ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ๋ถ์ ๋ฌธ์ฅ, ์์ฝ, ๊ถ์ฅ ์กฐ์น, ์ด๋ฉ์ผ ๋ณธ๋ฌธ์ ํ๊ตญ์ด๋ก ์์ฑํฉ๋๋ค.
- API ํ๋๋ช
/์ฝ๋ ์๋ณ์๋ ์๋ฌธ ๊ทธ๋๋ก ์ฌ์ฉํด๋ ๋์ง๋ง, ํด์ค์ ํ๊ตญ์ด๋ก ์ ์งํฉ๋๋ค.
Purpose
- SFDC์ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ ๋ถ์์ ์ํํฉ๋๋ค.
- ์
๋ ฅ๊ฐ์ account name์ด๋ฉฐ, ์ด๋ฆ์ผ๋ก ๊ณ์ ์ ์ฐพ์ ํ 1๊ฐ ๊ณ์ ์ ๋์์ผ๋ก ๋ฆฌํฌํธ๋ฅผ ๋ง๋ญ๋๋ค.
- ์ด๋ฉ์ผ ํด๋ผ์ด์ธํธ JS ๋ฏธ์คํ ์ ์ฝ ๋๋ฌธ์ Chart.js ๊ฒฐ๊ณผ๋ฅผ ์ด๋ฏธ์ง๋ก ๋ณํํด ํฌํจํฉ๋๋ค.
When to Use This Skill
- ํน์ ํ ๊ฐ ๊ณ์ ์ ์ต์ ์ํ๋ฅผ ๋น ๋ฅด๊ฒ ๋ณด๊ณ ํ๊ณ ์ถ์ ๋
- ๊ณ์ ๋ณ ๋งค์ถ/์ง์ถ ๋ณํ, AWS ๊ณ์ ๋งคํ ์์ ๊ธฐ์ฌ๋๋ฅผ ์ด๋ฉ์ผ๋ก ๊ณต์ ํด์ผ ํ ๋
- ๊ธฐ์กด 2๊ฐ ๊ณ์ ๋์ ๋ฆฌํฌํธ๊ฐ ๋๋ฌด ์ปค์ ๋ฉ์ผ ๋ฐฉ์ก์ด ์ด๋ ค์ด ๊ฒฝ์ฐ
Workflow
Step 1) Resolve target account from account name
์ฌ์ฉ์์๊ฒ ๊ณ์ ๋ช
์ ๋ฐ์ต๋๋ค. ์ด๋ฆ์ผ๋ก ๊ณ์ ์ ์กฐํํด ์ ํํ 1๊ฐ ๋์ ๊ณ์ ์ ํ์ ํฉ๋๋ค.
- ์๋ ๋ ๊ณ์ ์ ์๋ ค์ง SFDC Account ID๋ก ์ฐ์ ๋งคํํ ์ ์์ต๋๋ค:
LG Chemical โ 0015000000fSYKUAA4
LG Energy Solution (LG Ensol) โ 0014z00001bw6vaAAA
- ์
๋ ฅ ๊ณ์ ๋ช
์ด ์ ๋ณ์นญ๊ณผ ์ผ์น/์ ์ฌํ๋ฉด ์กฐํ ์ ์ ํด๋น ID๋ฅผ ์ฐ์ ์ฌ์ฉํด๋ ๋ฉ๋๋ค.
- ๋๋ช
์ด์ธ์ด ์ฌ๋ฌ ๊ฐ๋ฉด ์ฌ์ฉ์์๊ฒ ํ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์ ํ์ ๋ฐ์ต๋๋ค.
- ๊ณ์ ์ด ์์ผ๋ฉด ์คํจ ์ฌ์ ๋ฅผ ์๋ฆฌ๊ณ ์ข
๋ฃํฉ๋๋ค.
์กฐํ ๊ฒฐ๊ณผ์์ ์ต์ํ ์๋ ๊ฐ์ ํ๋ณดํฉ๋๋ค:
accountId (SFDC account id)
accountName
ํ์ ํ ์กฐํ ์์:
get_account_spend_summary(sfdcAccountId: "<resolved_account_id>")
get_account_spend_history(accountId: "<resolved_account_id>", includeMonthlyBreakdown: true)
Step 2) Fetch financial and mapping data
ํ์ ๋ ๋จ์ผ ๊ณ์ ์ ๋ํด ์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํฉ๋๋ค.
- spend summary
- spend history (์๋ณ ํฌํจ)
- AWS account mappings (
chargeR12 ๊ธฐ์ค ์ ๋ ฌ, ์ถฉ๋ถํ limit)
- ์๋น์ค๋ณ ์ง์ถ ๋ฐ์ดํฐ(์๋น์ค๋ช
+ R12 ๊ธ์ก์ด ํฌํจ๋ breakdown; ๊ฐ๋ฅ ์
chargeR12 ๊ธฐ์ค ์ ๋ ฌ)
๊ฐ๋ฅํ๋ฉด ๋ณ๋ ฌ ํธ์ถํฉ๋๋ค.
AWS account ๋งคํ ๋ถ์์ MoM(์ ์ ๋๋น) ์ค์ฌ์ผ๋ก ์ ๊ณตํฉ๋๋ค.
aws_sentral์์ ์ ๊ณต๋๋ momPercentCharge๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฆ๊ฐ ์ถ์ด๋ฅผ ํด์ํฉ๋๋ค.
- AWS account ๋จ์ YoY๋ ๊ณ์ฐ/์ ๋ขฐ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์ ๊ณตํ์ง ์์ผ๋ฏ๋ก ๋ถ์ ํญ๋ชฉ์์ ์ ์ธํฉ๋๋ค.
Step 3) Compute metrics
์๋ ์งํ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- Rolling 12๊ฐ์ ์ฑ์ฅ๋ฅ
- ์ ๋
๋์(YoY) ์ฑ์ฅ๋ฅ
- ์ต๊ทผ 3๊ฐ์ ์ถ์ด(MoM)
- AWS ์์ 10 ๊ณ์ ์
chargeR12 ํฉ๊ณ ๋ฐ ๋น์ค
- AWS ๊ณ์ ๋ณ ์ ์ฒด ๋น์ค(ํ์):
(awsAccount.chargeR12 / aggregateTotals.mons12.chargeAmount) * 100
- ์๋น์ค๋ณ R12 ์์ 10 ํฉ๊ณ ๋ฐ ๋น์ค
- ์๋น์ค๋ณ ์ ์ฒด ๋น์ค(ํ์):
(service.chargeR12 / aggregateTotals.mons12.chargeAmount) * 100
AWS ๊ณ์ ๋ถ์์์๋ ๊ฐ ํ์ ์ต์ํ ๋ค์์ ํฌํจํฉ๋๋ค:
accountRevenue.id
accountRevenue.name
accountRevenue.chargeR12
accountRevenue.momPercentCharge
- ๊ณ์ ์ฉ๋(ํ์;
accountRevenue.name/email/role ํจํด ๊ธฐ๋ฐ ์ถ์ ๊ฐ๋ฅ)
accountRevenue.supportLevel
accountRevenue.role
ํ/์์ฝ/๊ถ์ฅ ์กฐ์น์์ AWS ๊ณ์ ์ ์ธ๊ธํ ๋๋ MoM์ ํญ์ ์ ์ํฉ๋๋ค.
์๋น์ค๋ฅผ ์ธ๊ธํ ๋๋ **R12 ๊ธ์ก + ์ ์ฒด ๋น์ค(%)**์ ํญ์ ํจ๊ป ์ ์ํฉ๋๋ค.
Step 4) Build single-account HTML report
๋ฆฌํฌํธ ํ์ผ ์์:
application/artifacts/<sanitized_account_name>_revenue.html
ํ์ ์น์
:
- ์์ฝ ์นด๋ (12๊ฐ์ ์ด์ก, ์ํ๊ท , ์ต๊ณ ์, MTD)
- ์นด๋ ๋ฐ๋ก ์๋์ "๊ณ์ ์์ฝ ํ ์ค"์ ์ถ๊ฐํ๊ณ , ํต์ฌ ์ฌํญ์ ํ๊ตญ์ด ๋ฌธ์ฅ์ผ๋ก ์ค๋ช
- ์ฑ์ฅ ๋ถ์ ๋ฐ์ค (Rolling 12M / YoY / MoM)
- ์ต๊ทผ 3๊ฐ์ ํ
- ์๋ณ ๋งค์ถ ์ถ์ด ์ฐจํธ ์น์
<section id="account-monthly-trend-12m"> ์ ์ง
<script> ๋ด const months12, const chargeData, const revenueData ์ ์ง
- ์๋น์ค/ํฌ๋ ๋ง ๋ณํ ํด์ค
- ์๋น์ค๋ณ R12 ํํฉ (์์ 10๊ฐ)
- ์ปฌ๋ผ: ์์ | ์๋น์ค๋ช
| R12 Charge | ์ ์ฒด ๋น์ค(%)
- ์๋น์ค๋ช
๋๋ฝ ์
Unknown์ผ๋ก ํ๊ธฐ
- AWS ๊ณ์ ๋งคํ ์์ 10 ๋ถ์
- ์ปฌ๋ผ: ์์ | ๊ณ์ ๋ช
| AWS ID | ์ฉ๋ | R12 Charge | ์ ์ฒด ๋น์ค(%) | MoM | Support | Role
- ์ฉ๋๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ช
์ํ๊ณ , ๋ถ๋ช
ํํ๋ฉด
๊ธฐํ/๋ฏธ๋ถ๋ฅ๋ก ํ๊ธฐ
- ์ฃผ๋ชฉ ๊ณ์ ํ๋๊ทธ(๊ธ์ฆ/๊ธ๊ฐ, Basic + ๊ณ ๋น์ฉ, genai ํจํด ๋ฑ)
- ๊ถ์ฅ ์กฐ์น
Step 5) Convert chart HTML data to image (email-safe)
์ด๋ฉ์ผ์์ JS๊ฐ ๋์ํ์ง ์์ผ๋ฏ๋ก, ์๋ ์คํฌ๋ฆฝํธ๋ก ์ฐจํธ ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค:
- ์คํฌ๋ฆฝํธ:
application/skills/account-status/scripts/html_to_chart_image.mjs
- ์ถ๋ ฅ ๊ถ์ฅ:
.jpg (์ฉ๋ ์์)
์์:
node application/skills/account-status/scripts/html_to_chart_image.mjs \
application/artifacts/<sanitized_account_name>_revenue.html \
application/artifacts/<sanitized_account_name>_chart.jpg
์์กด์ฑ(chart.js, skia-canvas, sharp)์ ๋ฃจํธ ๋๋ ํด๋น ์คํฌ ํด๋์์ npm install๋ก ์ค๋นํฉ๋๋ค.
MCP tool ํ๋ผ๋ฏธํฐ ํฌ๊ธฐ ์ ํ์ ํผํ๊ธฐ ์ํด ์ฐจํธ ์ด๋ฏธ์ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉ๋ ์ค์ (๊ฐ๋กํญ ์ถ์ + JPEG ํ์ง ํํฅ)์ผ๋ก ์์ฑํฉ๋๋ค.
ํ์ํ๋ฉด ์๋ ํ๊ฒฝ๋ณ์๋ก ์ถ๊ฐ ์ถ์๋ฅผ ์ ์ฉํฉ๋๋ค:
CHART_IMAGE_MAX_WIDTH=760 CHART_IMAGE_JPEG_QUALITY=65 \
node application/skills/account-status/scripts/html_to_chart_image.mjs \
application/artifacts/<sanitized_account_name>_revenue.html \
application/artifacts/<sanitized_account_name>_chart.jpg
Step 6) Prepare email body (Korean)
์ด๋ฉ์ผ ๋ณธ๋ฌธ(HTML) ๊ตฌ์กฐ:
- ๊ณ์ ์์ฝ
- ๊ณ์ ์ํ์ ํต์ฌ์ ํ๊ตญ์ด 1๋ฌธ์ฅ์ผ๋ก ๋จผ์ ์ ์
- ํต์ฌ ์ฑ์ฅ ์งํ
- ์ฐจํธ ์ด๋ฏธ์ง(
<img ...>)
- ์๋น์ค๋ณ R12 ํํฉ(์์ 10)
- AWS ๊ณ์ ๋งคํ ์์ฝ(์์ 10)
- ๋ฆฌ์คํฌ/๊ธฐํ ๋ฐ ๊ถ์ฅ ์ก์
์ฐจํธ ์ฝ์
๋ฐฉ์:
- 1์์: data URL (
data:image/jpeg;base64,...)
- ๋์: ๊ณต๊ฐ
https:// ์ด๋ฏธ์ง URL
- ์ฒจ๋ถ๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ ์ฌ์ฉ์ ํ๊ฒฝ์ ๋ง์ถฐ ์๋ ์ฒจ๋ถ ์๋ด
- ๋ณธ๋ฌธ ํฌ๊ธฐ๊ฐ ์ปค๋ ์ฐจํธ ์ด๋ฏธ์ง๋ ์ ๋ ์ ์ธํ์ง ์์(๊ฐ๊ฒฐ ๋ฒ์ ์ผ๋ก ์์ ์ถ์ฝ ๊ธ์ง)
- ์ฉ๋์ด ํฐ ๊ฒฝ์ฐ์๋ ๋จผ์ ์ด๋ฏธ์ง ์ต์ ํ(์: JPEG ํ์ง/๊ฐ๋กํญ ์กฐ์ ) ํ, ์ฐจํธ ์ด๋ฏธ์ง๋ฅผ ํฌํจํ ์ํ๋ก ๋ฐ์ก
- ๋ณธ๋ฌธ ์ ์ก ์ ์ฐจํธ ์ด๋ฏธ์ง ํ์ผ ํฌ๊ธฐ๋ฅผ ํ์ธํ๊ณ , ํฌ๋ฉด
CHART_IMAGE_MAX_WIDTH/CHART_IMAGE_JPEG_QUALITY๋ฅผ ๋ฎ์ถฐ ์ฌ์์ฑํ ๋ค ํฌํจํฉ๋๋ค.
Step 7) Ask recipient email and send immediately
๋ณด๊ณ ์(HTML + ์ฐจํธ ์ด๋ฏธ์ง)๊ฐ ์์ฑ๋๋ฉด ์์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฌป์ต๋๋ค.
์ด ๋จ๊ณ์์๋ ์ฃผ์๋ง ํ์ธํ๋ฉฐ, ์ถ๊ฐ ๋ฐ์ก ํ์ธ์ ๋ฐ์ง ์์ต๋๋ค.
Step 8) Send email
Step 7์์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๋ฐ์ผ๋ฉด ์ฆ์ ๋ฐ์กํฉ๋๋ค(์ฌํ์ธ ์์).
- ๋ฐ์ก ์ ์ฐจํธ ์ด๋ฏธ์ง๊ฐ ํฌํจ๋์ง ์์๋ค๋ฉด ๋ฐ์ก์ ์ค๋จํ๊ณ , ์ด๋ฏธ์ง ํฌํจ ํํ๋ก ๋ณธ๋ฌธ์ ์ฌ๊ตฌ์ฑํ ๋ค ๋ฐ์กํฉ๋๋ค.
๋ฐ์ก ์๋จ ์ ํ (์ค์)
ํฐ HTML ๋ณธ๋ฌธ(์: data URL base64 ์ด๋ฏธ์ง ํฌํจ, 20KB+)์ email_send์ body ํ๋ผ๋ฏธํฐ๋ก ์ง์ ๋ณด๋ด์ง ๋ง ๊ฒ.
- MCP ํด ํ๋ผ๋ฏธํฐ ๊ฒฝ๋ก๋ก ํฐ ๋ฌธ์์ด์ ์ ๋ฌํ๋ฉด ๋ณธ๋ฌธ์ด ํ๋ ์ด์คํ๋/์๋ฆฐ ๋ฌธ์์ด๋ก ์ ์ก๋์ด ๋น ๋ฉ์ผ์ด ๋๊ฐ๋ ํ์์ด ์์.
- ์ฐจํธ ์ด๋ฏธ์ง๋ฅผ ํฌํจํ ๋ณธ๋ฌธ์ ๋ฐ๋์ ํ์ผ๋ก ๋จผ์ ์ ์ฅํ ๋ค
email_draft โ bodyFilePath ๋ก ์ฝ์ด ๋ฐ์กํ๋ค.
๊ถ์ฅ ์ ์ฐจ:
- ๋ณธ๋ฌธ HTML์ ๋ก์ปฌ ํ์ผ๋ก ์ ์ฅ (์:
$TMPDIR/<account>_email_body.html).
- base64๋
base64 -i <chart.jpg> | tr -d '\n' > $TMPDIR/<acct>_chart_b64.txt ๋ก ์์ฑ ํ heredoc์ ์ฃผ์
.
- ์ฃผ์: ์์
๋๋ ํ ๋ฆฌ๊ฐ ์๋๋ฐ์ค์ผ ๋
/tmp/... ์ง์ ์ฐ๊ธฐ๋ ์คํจํ๋ฏ๋ก $TMPDIR ์ฌ์ฉ.
email_draft (operation=create) ํธ์ถ ์ bodyFilePath์ ์ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด ๋๋ํํธ ์์ฑ.
- ๋ฐํ๋
draftId/draftChangeKey๋ก email_draft (operation=update, send: true) ํธ์ถํ์ฌ ์ฆ์ ๋ฐ์ก.
email_draft(operation: "create", to: ["<recipient>"], subject: "...",
bodyFilePath: "$TMPDIR/<acct>_email_body.html")
email_draft(operation: "update", draftId: "<id>", draftChangeKey: "<key>", send: true)
์งง์ ๋ณธ๋ฌธ(์ฐจํธ ์ด๋ฏธ์ง ์์ด ์์ฝ๋ง)์ผ ๋๋ง email_send์ body ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํ๋ค.
์ฐจํธ ์ด๋ฏธ์ง ํฌ๊ธฐ ๊ฐ์ด๋ (๊ฒฝํ์น)
- ๊ฒฝํ์
CHART_IMAGE_MAX_WIDTH=600, CHART_IMAGE_JPEG_QUALITY=55๋ฉด JPEG ์ฝ 18KB, base64 ์ธ์ฝ๋ฉ ํ ์ฝ 24KB๋ก Outlook ๋ณธ๋ฌธ์ ๋ฌด๋ฆฌ ์์ด ์ฝ์
๋จ.
760 / 65 ์กฐํฉ์ ์ฝ 22KB / 30KB๋ก ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ๋น.
- ๋ณธ๋ฌธ ์กฐ๋ฆฝ ์
wc -c ๋ฑ์ผ๋ก base64 ๊ธธ์ด๋ฅผ ํ์ธํด ๋๋ฌด ํฌ๋ฉด ์ฌ์์ฑ.
๋ฐ์ก ์คํจ/๋น ๋ณธ๋ฌธ ํ์ธ ์ ๋ณต๊ตฌ
- ๋ฉ์ผ์ด ํ๋ ์ด์คํ๋ ๋ฌธ์์ด(์:
__BODY_FROM_FILE__)๋ก ๋๊ฐ๋ค๋ฉด ์ญ์ ์๋ํ์ง ๋ง๊ณ ์ฌ๋ฐ์กํ๋ค(์๋ณธ ๋ฉ์ผ์ ์ฌ์ฉ์๊ฐ ์์ ์ ์ธก์์ ์ฒ๋ฆฌ).
- ์ฌ๋ฐ์ก ์ ๋ฐ๋์ ์์
email_draft + bodyFilePath ์ ์ฐจ๋ฅผ ์ฌ์ฉํ๋ค.
์คํฌ๋ฆฝํธ ์ฃผ์์ฌํญ (chart ์์ฑ)
scripts/html_to_chart_image.mjs ์ ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ๋ฐฑ์ฌ๋์ ์ด์ค์ผ์ดํ ๊ธ์ง (\...`๊ฐ ์๋๋ผ ๋ฐฑํฑ ๊ทธ๋๋ก). ์ด์ค์ผ์ดํ๋ ์ํ๋ฉด Node๊ฐ SyntaxError: Invalid or unexpected token`์ผ๋ก ์คํจํจ.
์์ ์ ๋ชฉ:
<account name> ์ํ ๋ถ์ ๋ฆฌํฌํธ - YYYY-MM-DD
Output Contract
์์
์๋ฃ ์ ์ฌ์ฉ์์๊ฒ ์๋๋ฅผ ์ ๊ณต:
- ๋ถ์ ์์ฝ(ํ๊ตญ์ด)
- ์์ฑ๋ HTML ๊ฒฝ๋ก
- ์์ฑ๋ ์ฐจํธ ์ด๋ฏธ์ง ๊ฒฝ๋ก(JPEG ๊ถ์ฅ)
- ๋ฉ์ผ ๋ฐ์ก ์ฌ๋ถ(์ด๋ฉ์ผ ์ฃผ์ ํ์ธ ํ ์ฆ์ ๋ฐ์ก / ๋ฐ์ก ์๋ฃ)
Guardrails
- ๊ณ์ ์ด ํ์ ๋์ง ์์ผ๋ฉด ๋ถ์/๋ฐ์ก์ ์งํํ์ง ์์ต๋๋ค.
- AWS ๊ณ์ ๋งคํ ํ/ํด์ค์์ ๋น์ค(%) ์๋ต ๊ธ์ง.
- AWS ๊ณ์ ๋งคํ ์์ 10 ํ์์ ์ฉ๋ ์ปฌ๋ผ ์๋ต ๊ธ์ง.
- ์๋น์ค๋ณ R12 ์์ 10 ํ์์ R12 ๊ธ์ก/๋น์ค(%) ์๋ต ๊ธ์ง.
- ๊ณ์ ์์ฝ์๋ ํต์ฌ ์ฌํญ์ ์ค๋ช
ํ๋ ํ๊ตญ์ด 1๋ฌธ์ฅ ์์ฝ์ ๋ฐ๋์ ํฌํจํฉ๋๋ค.
- ์ด๋ฉ์ผ ๋ณธ๋ฌธ์์ ์ฐจํธ ์ด๋ฏธ์ง๋ฅผ ์์๋ก ์ ๊ฑฐํ ๊ฐ๊ฒฐ ๋ฒ์ ๋ฐ์ก ๊ธ์ง(์: "๋ณธ๋ฌธ์ด ์ปค์ ์ฐจํธ ์ ์ธ" ๋ฉ์์ง ๊ธ์ง).
- ๋ฉ์ผ ํฌ๊ธฐ ์ด์๊ฐ ์์ด๋ ์ฐจํธ ์ด๋ฏธ์ง ํฌํจ ๋ฐ์ก์ ํ์์ด๋ฉฐ, ํ์ ์ ์ด๋ฏธ์ง ์ต์ ํ ํ ๋ฐ์กํฉ๋๋ค.
- ๊ณผ๋ํ ์ถ์ ๊ธ์ง: ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด
N/A์ ํจ๊ป ๋ช
์ํฉ๋๋ค.
- ๋ณด๊ณ ์ ์๋ฃ ํ์๋ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๋ฐ์ ์ฆ์ ๋ฐ์กํ๋ฉฐ, ๋ณ๋ ์ฌํ์ธ์ ํ์ง ์์ต๋๋ค.
- base64 ์ด๋ฏธ์ง๊ฐ ์ฝ์
๋ ํฐ HTML ๋ณธ๋ฌธ์
email_send์ body ํ๋ผ๋ฏธํฐ๋ก ์ง์ ์ ๋ฌํ์ง ์๊ณ , ํ์ผ๋ก ์ ์ฅ ํ email_draft์ bodyFilePath๋ก ๋ฐ์กํฉ๋๋ค(MCP ํ๋ผ๋ฏธํฐ ํฌ๊ธฐ/์ธ์ฉ ์ด์ ํํผ).
- ์์ ํ์ผ์ ๋ฐ๋์
$TMPDIR ์๋์ ์์ฑํฉ๋๋ค. ์๋๋ฐ์ค ํ๊ฒฝ์์ /tmp ์ง์ ์ฐ๊ธฐ๋ ์คํจํ ์ ์์ต๋๋ค.