๐ [GP ์๋ด์ฌ P1] MA Dashboard ๊ฒฐํฉ ์ค๊ณ์ v1.0
ํต์ฌ ์์ฝ
# ๐ [GP ์๋ด์ฌ P1] MA Dashboard ๊ฒฐํฉ ์ค๊ณ์ v1.0
> ์์ฑ: 2026-04-25 | ๋ด๋น: ์ ์น์ฑ(๊ตฌํ), ์ด์ฒ ์น(์ค๊ณ)
> ๋ถ๋ชจ ๋ฌธ์: 1dd8eaa3 (BizPO ร BizData MCP ์ฐ๋ ๋ฐฉ์ v1.0)
> ๊ด๋ จ: b62bb46b (PKG-MA), 1d5fa484 (CXM ์บ ํ์ธ ์์ง ๋ ํผ๋ฐ์ค)
> Asana: https://app.asana.com/1/259440093468323/project/1200220022474171/task/1214054113222918
---
1. ๊ฐ์ โ P1์ ์์น
GP ์๋ด์ฌ๋ฅผ ์กฐํ/์๋ต์์ ์ ๋ฌด์๋ํ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ์ํค๋ 3๋จ๊ณ ๋ก๋๋งต ์ค ์ฒซ ๋จ๊ณ.
| Phase | ๋ฒ์ | ์ํ | ์ธํ๋ผ ๋ณ๊ฒฝ |
|---|---|---|---|
| P1 (๋ณธ ๋ฌธ์, 2์ฃผ) | Read ํ์ฅ: MA Dashboard + CRM ์กฐํ | ๐ข ๋ฎ์ | ์์ (Resolver ํ์ฅ๋ง) |
| P2 (3์ฃผ, ๋ณ๋ ์ค๊ณ) | Action MCP ์ ์ค + ๋ฆฌํฌํธ ์๋ ๋ฐ์ก | ๐ก ์ค๊ฐ | Action MCP ์ ๊ท |
| P3 (4์ฃผ+, ๋ณ๋ G0) | ์บ ํ์ธ ํธ๋ฆฌ๊ฑฐยท์ธ๊ทธ๋จผํธ ์์ฑ | ๐ด ๋์ | GP MA Action API ์ ๊ท |
P1 ๋ฒ์ ํ์ (G1 ์ปจํ):
- ๋์: ๋ด๋ถ ์ง์/PM ํ์ (์ธ๋ถ ๊ณ ๊ฐ ๋ ธ์ถ ์์)
- ํ์: ์กฐํยท์์ฝ๋ง (๋ฐ์กยทํธ๋ฆฌ๊ฑฐยทDML ์ผ์ฒด ์์)
- ์ธํ๋ผ: ๊ธฐ์กด BizData MCP์ read ๋๊ตฌ 4๊ฐ๋ฅผ ์ถ๊ฐ ํธ์ถ
---
2. ์ถ๊ฐ Intent ๋ถ๊ธฐ (3๊ฐ)
๊ธฐ์กด 5๊ฐ โ 8๊ฐ๋ก ํ์ฅ. v1.0์ ๋ถ๊ธฐ ํ ์ด๋ธ ํจํด ๊ทธ๋๋ก.
| intent_type | ํธ์ถ MCP | Tool | ํ์ ์ฌ๋กฏ |
|---|---|---|---|
| (๊ธฐ์กด) SOLUTION_INQUIRY | BizPO | search_solutions | - |
| (๊ธฐ์กด) SOLUTION_COMPARE | BizPO | compare_solutions | compareTargets[] |
| (๊ธฐ์กด) DATA_INQUIRY | BizData | data_get_unified_kpi | clientCode, dateFrom, dateTo |
| (๊ธฐ์กด) GEO_INQUIRY | BizData | data_get_geo_som | siteDomain |
| ๐ MA_DASHBOARD | BizData | data_get_ma_dashboard | - (์ ์ฒด) |
| ๐ DASHBOARD_GENERAL | BizData | data_get_dashboard | clientCode, dateFrom, dateTo |
| ๐ CRM_INQUIRY | BizData | data_get_crm_sales / data_get_crm_products | days |
| (๊ธฐ์กด) GENERAL | RAG | - | - |
---
3. ์ถ๊ฐ ์ฌ๋กฏ (2๊ฐ)
{
"days": "์ต๊ทผ N์ผ (default 30, CRM ์กฐํ์ฉ)",
"dashboardType": "ma | general | crm_sales | crm_products"
}
๊ธฐ์กด v1.0 ์ฌ๋กฏ(clientCode, siteDomain, compareTargets)์ ๊ทธ๋๋ก ์ฌ์ฉ.
---
4. ์์ ํ์ผ (v1.0 ํจํด ๋์ผ โ 3๊ณณ)
4.1 McpContextResolver.java (๊ธฐ์กด ํ์ผ ํ์ฅ)
v1.0์ switch์ case 3๊ฐ๋ง ์ถ๊ฐ:
case "MA_DASHBOARD":
return callBizData("data_get_ma_dashboard", Map.of());
case "DASHBOARD_GENERAL":
return callBizData("data_get_dashboard", Map.of(
"client_code", slots.get("clientCode"),
"date_from", slots.get("dateFrom"),
"date_to", slots.get("dateTo")
));
case "CRM_INQUIRY":
String tool = "crm_products".equals(slots.get("dashboardType"))
? "data_get_crm_products" : "data_get_crm_sales";
return callBizData(tool, Map.of("days", slots.getOrDefault("days", 30)));
4.2 ConversationServiceImpl.java
v1.0์์ ์ถ๊ฐํ 1์ค ๊ทธ๋๋ก. ๋ณ๊ฒฝ ์์.
4.3 COUNSEL/INTENT ํ๋กฌํํธ
intent_type ๋ถ๋ฅ ๋ชฉ๋ก์ 3๊ฐ ์ถ๊ฐ:
SOLUTION_INQUIRY / SOLUTION_COMPARE / DATA_INQUIRY / GEO_INQUIRY
/ MA_DASHBOARD / DASHBOARD_GENERAL / CRM_INQUIRY / GENERAL
4.4 COUNSEL/ANSWER ํ๋กฌํํธ
v1.0์ {{mcpContext}} ๋ณ์ ๊ทธ๋๋ก ์ฌ์ฉ. ๋ณ๊ฒฝ ์์.
---
5. ํธ์ถ ํ์ด๋ก๋ ์์
POST https://ihzttwgqahhzlrqozleh.supabase.co/functions/v1/bizspring-data-mcp
Content-Type: application/json
{"method": "data_get_ma_dashboard", "params": {}}
์๋ต: ์บ ํ์ธ ํํฉ / ์ถ์ฒ ์์ง / ์ฑ๋ ๋ถํฌ (JSON, ~5KB).
---
6. ํ ์คํธ ์ผ์ด์ค (5๊ฑด)
| # | ์ฌ์ฉ์ ๋ฐํ | ์์ intent_type | ๊ฒ์ฆ ํฌ์ธํธ |
|---|---|---|---|
| 1 | "์ค๋ํธ๋ก MA ์บ ํ์ธ ํํฉ ์๋ ค์ค" | MA_DASHBOARD | ์ ์ฒด dashboard ๋ฐํ |
| 2 | "์บ๋ฌ์จ์ด ์ง๋ 7์ผ ROAS๋?" | DASHBOARD_GENERAL | clientCode ์ฌ๋กฏ ์ถ์ถ |
| 3 | "Cafe24 ์ธ๊ธฐ์ํ Top 10" | CRM_INQUIRY (products) | dashboardType=crm_products |
| 4 | "์ต๊ทผ 30์ผ ๋งค์ถ ๋ณด์ฌ์ค" | CRM_INQUIRY (sales) | days=30 default |
| 5 | "ํ์ฌ ์๋ฃจ์ ๋ญ ์์ด?" | SOLUTION_INQUIRY (๊ธฐ์กด) | ๊ธฐ์กด ๋ถ๊ธฐ ๋ฌด์ํฅ ํ๊ท |
MCP ์คํจ ์: McpContextResolver๊ฐ ๋น ๋ฌธ์์ด ๋ฐํ โ 2์ฐจ LLM์ RAG๋ง์ผ๋ก ๋ต๋ณ (v1.0 fallback ๋์ผ).
---
7. ์ผ์ (2์ฃผ, 10์์ ์ผ)
| Week | Day | ์์ | ๋ด๋น |
|---|---|---|---|
| 1 | D1-2 | INTENT ํ๋กฌํํธ ๋ถ๋ฅ ์ถ๊ฐ + ๋จ์ ํ ์คํธ | ์ ์น์ฑ |
| 1 | D3-4 | Resolver case 3๊ฐ ์ถ๊ฐ + HTTP POST ๋จ์ ํ ์คํธ | ์ ์น์ฑ |
| 1 | D5 | ์ฌ๋กฏ ์ถ์ถ ๊ฒ์ฆ (days, dashboardType) | ์ ์น์ฑ |
| 2 | D6-7 | ํตํฉ ํ ์คํธ (5์ผ์ด์ค) + ํ๊ท (๊ธฐ์กด 5 intent) | ์ ์น์ฑ |
| 2 | D8 | ๋ด๋ถ PM ์ฌ์ฉ์ ๋ฒ ํ (ํ์์ /๊ตฌ์ํ/์ด์ฒ ์น) | ์ ์น์ฑ |
| 2 | D9 | G2 ๊ฒ์ฆ ๋ฆฌํฌํธ ์์ฑ + KHub ๋ฑ๋ก | ์ด์ฒ ์น |
| 2 | D10 | G3 (์ฐฐ์ค) โ P1 ํด๋ก์ฆ + P2 G0 ์ง์ | ์ฐฐ์ค |
---
8. ๋ฆฌ์คํฌ & ๋์
| ๋ฆฌ์คํฌ | ์ํฅ | ๋์ |
|---|---|---|
| INTENT LLM์ด ์ ๊ท 3๊ฐ intent ์ค๋ถ๋ฅ | ๐ก | ํ๋กฌํํธ์ ๋ฐํ ์์ 3๊ฑด/intent ๋ช ์ |
clientCode ์ฌ๋กฏ ์ถ์ถ ์คํจ โ ๋ค๋ฅธ ๊ณ ๊ฐ ๋ฐ์ดํฐ ๋
ธ์ถ | ๐ด | clientCode ๋ฏธ์ถ์ถ ์ ๋ช ์์ ์ฌ์ง๋ฌธ ๊ฐ์ , default ๊ธ์ง |
| BizData MCP ์๋ต 5KB ์ด๊ณผ โ ์ปจํ ์คํธ ํญ๋ฐ | ๐ก | Resolver์์ ํต์ฌ ํ๋๋ง ์ถ์ถ ํ ์ฃผ์ |
| ๊ธฐ์กด 5 intent ํ๊ท ๋ฒ๊ทธ | ๐ก | D6-7 ํ๊ท ํ ์คํธ ํ์ |
---
9. G2 ๊ฒ์ฆ ๊ธฐ์ค
- [ ] ์ ๊ท 3 intent ๋ถ๋ฅ ์ ํ๋ โฅ 90% (ํ ์คํธ ์ผ์ด์ค 50๊ฑด ๊ธฐ์ค)
- [ ] ๊ธฐ์กด 5 intent ํ๊ท 0๊ฑด
- [ ] clientCode ๋ฏธ์ถ์ถ ์ ์ฌ์ง๋ฌธ ๋์ ํ์ธ
- [ ] MCP ํธ์ถ ์คํจ โ RAG fallback ์ ์
- [ ] ํ๊ท ์๋ต ์๊ฐ v1.0 ๋๋น +500ms ์ด๋ด
---
10. P1 โ P2 ์ ํ ํธ๋ฆฌ๊ฑฐ
P1 G3 ํต๊ณผ ํ P2(Action MCP ์ ์ค) G0 ์ง์ . P2๋ ๋ค์ 3๊ฐ์ง ์ ๊ฒฐ ๊ณผ์ ํด๊ฒฐ ํ ์์:
- ๊ถํ ๋งคํธ๋ฆญ์ค ์ ์ (client_code ๊ฒฉ๋ฆฌ, ์ธ์ ์ค์ฝํ)
- Idempotency Key + Dry-run ๋ชจ๋ ๋ช ์ธ
- AP-25 ์ปจํ ๊ฒ์ดํธ UX ์ค๊ณ (์๋ด์ฌ UI์์ ์ด๋ป๊ฒ ์ปจํ ๋ฐ์์ง)
---
๋ณ๊ฒฝ ์ด๋ ฅ
| ๋ฒ์ | ๋ ์ง | ๋ณ๊ฒฝ |
|---|---|---|
| v1.0 | 2026-04-25 | ์ต์ด ์์ฑ. P1 ๋ฒ์ ํ์ (Read ํ์ฅ, ๋ด๋ถ ํ์ , ๋ฐ์ก ์์) |