| name | vitamin-analyzer |
| description | Help users audit their supplement stack and answer the quiet question behind every vitamin bottle โ "Am I actually covering what I need? Am I doubling up? Is anything over the upper limit?" Guides the user on a journey to optimize their vitamin portfolio with evidence-based analysis. Activates when the user shares a supplement name, ingredient list, or Supplement Facts label photo, optionally with personal context (age, biological sex, symptoms, pregnancy, prescription drugs). Returns a Korean (default) or English markdown report covering RDA gaps, UL overages, duplicate ingredients, drug/supplement interactions, and domestic + overseas (iHerb) alternative product suggestions โ every medical claim backed by Tier 1โ2 citations from the U.S. National Institutes of Health Office of Dietary Supplements (NIH ODS), PubMed (National Library of Medicine), Cochrane Library systematic reviews, Examine.com, and the Korean Ministry of Food and Drug Safety (์์ฝ์ฒ) public Open APIs for both domestic health functional foods (C003/I2710) and OTC / prescription drugs (product approval, patient-friendly summaries, pill identification) when KFDA_HTFS_KEY / KFDA_FOODSAFETY_KEY env vars are set. Automatically routes between health-food and drug APIs so OTC multivitamins (e.g. ๋น๋งฅ์ค, ์๋ก๋๋ฏผ, ์ผํธ๋ฃธ) are correctly identified when not registered as health functional foods. Supports multiple user-named profiles (self, family, friends) and three intent modes (quick_check / quick_replace / full_analysis) to match answer depth to question depth. Persists product DB, stack JSON, and reports under ./user-data/. Declines analyses for under-12 and pets; never issues prescription-drug dosing advice. |
| license | MIT |
| version | 1.3.0 |
Vitamin Analyzer โ ๋ณด์ถฉ์ ๋ถ์ Skill
"์ง๊ธ ๋จน๋ ๋นํ๋ฏผ, ์ ๋ง ๋ํํ
๋ง๋ ๊ฑธ๊น?"
๋ถ์กฑํ ๊ฑด ์๋์ง, ๋ญ ์ค๋ณต์ผ๋ก ๋จน๊ณ ์์ง๋ ์์์ง, ์ํ์ ์ ๋๊ธด ์ฑ๋ถ์ ์๋์ง โ ๋ด ๋นํ๋ฏผ ํฌํธํด๋ฆฌ์ค๋ฅผ ๊ทผ๊ฑฐ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ฒํ๊ณ ์ต์ ์ ์กฐํฉ์ ์ฐพ์๊ฐ๋ ํ์ ์ฌ์ ์ ๋๋ Claude Skill. ํ๋กํ(์ ํ)๊ณผ ๋ณต์ฉ ์ ํ(ํ
์คํธ/๋ผ๋ฒจ ์ฌ์ง/์ ํ๋ช
)์ ๋ฐ์ UL ์ด๊ณผยทRDA ๋ฏธ๋ฌยท์ค๋ณตยท์ํธ์์ฉ์ ํ๊ฐํ๊ณ , ๊ตญ๋ดยทํด์ธ์์ ๊ตฌํ ์ ์๋ ๋์ฒด ์ ํ์ ๊ฐ๊ฒฉยท๊ทผ๊ฑฐ์ ํจ๊ป ์ ์ํฉ๋๋ค. ์์ฝ์ฒ ๊ฑด๊ฐ๊ธฐ๋ฅ์ํ Open API(์ ํ) ์ฐ๋ ์ ๊ตญ๋ด ์ ํ์ ์ ํ๋ช
๋ง์ผ๋ก ์ ๋ถ ๊ณต์ DB์์ ์ ํํ ์๋ณํฉ๋๋ค.
1. When to use this skill
๋ณธ ์คํฌ์ ๋ค์ ์ค ํ๋ ์ด์์ ์
๋ ฅ์ด ๊ฐ์ง๋ ๋ ํ์ฑํ๋ฉ๋๋ค:
- ๋ณด์ถฉ์ ์ ํ๋ช
(ํ/์) โ ์: "์ผํธ๋ฃธ ์ค๋ฒ ์ฌ์ฑ์ฉ", "NutriCalm LiverRelax"
- ์ฑ๋ถ ๋ฆฌ์คํธ ํ
์คํธ โ ์: "๋นํ๋ฏผ D 1000IU, ์นผ์ 500mg, ๋ง๊ทธ๋ค์ 200mg"
- ์ฑ๋ถํ ์ฌ์ง (Supplement Facts ํจ๋) โ ์ด๋ฏธ์ง ์
๋ก๋
- ๋ณต์ ์ ํ ์กฐํฉ โ 2๊ฐ ์ด์ ์ ํ์ ํ ๋ฒ์ ๋ถ์ (์คํ ์ต์ ํ)
- ์ ํ์ ํ๋กํ โ ์ฑ๋ณ/๋์ด/์ฆ์/์์ ยท์์ /๋ณต์ฉ ์ฝ๋ฌผ
ํ์ฑํํ์ง ์๋ ๊ฒฝ์ฐ:
- ์์ ์(<12์ธ) ๋๋ ๋ฐ๋ ค๋๋ฌผ ๋์ โ ยง6 ๊ฑฐ๋ถ ํ๋กํ ์ฝ
- ์ฒ๋ฐฉ์ฝ ๋ณต์ฉ๋ ์กฐ์ ์์ฒญ โ "์์ฌยท์ฝ์ฌ ์๋ด ๊ถ๊ณ "๋ก ์๋ต
- ์ํ ์์ ๋ถ์ (๋ณด์ถฉ์ ์ธ) โ ๋ณธ ์คํฌ ๋ฒ์ ๋ฐ
2. ์ฌ์ฉ ํ๋กํ ์์ง (PRD โ ์ ํ ์
๋ ฅ)
์คํฌ ์์ ์ ์ฌ์ฉ์์๊ฒ ์ ํ์ ์ผ๋ก ํ๋กํ์ ์ง๋ฌธํฉ๋๋ค. ๋ชจ๋ ํ๋๋ ์๋ฌด๊ฐ ์๋๋๋ค.
2-1. ์ง๋ฌธ ํ
ํ๋ฆฟ (ํ๊ตญ์ด)
๋ณด์ถฉ์ ๋ถ์์ ์์ํ๊ฒ ์ต๋๋ค. ๋ ์ ํํ ๋ถ์์ ์ํด ํ๋กํ์ ์
๋ ฅํด ์ฃผ์ธ์. (๋ชจ๋ ์ ํ์
๋๋ค โ ๊ฑด๋๋ฐ์ด๋ ๋ฉ๋๋ค)
1. **์ฑ๋ณ**: ์ฌ์ฑ / ๋จ์ฑ / ๊ธฐํยท๋ฏธ์
๋ ฅ
2. **๋์ด** (๋๋ ์ ์ฒด๋์ด): ์) 35
3. **ํ์ฌ ์ฆ์/๋ชฉํ**: ์) ํผ๋ก, ์๋ฉด์ ์ง, ๋ฉด์ญ, ๊ด์ , ํน๋ณ ์์
4. **์์ ยท์์ ์ฌ๋ถ**: ํด๋น / ํด๋น ์์
5. **๋ณต์ฉ ์ค์ธ ์ฒ๋ฐฉ์ฝ**: ์) ๋ ๋ณดํฐ๋ก์ , ์ํ๋ฆฐ, ์์
6. **๊ธฐ์ ์งํ** (์ ํ): ์) ๊ฐ์์ , ๊ณ ํ์, ์์
์
๋ ฅํ์ง ์์ ํญ๋ชฉ์ "์ผ๋ฐ ์ฑ์ธ" ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์งํํฉ๋๋ค.
์ด์ด์ ๋ถ์ํ ์ ํ์ ์๋ ค์ฃผ์ธ์:
- ์ ํ๋ช
(์: "์ผํธ๋ฃธ ์ค๋ฒ")
- ์ฑ๋ถํ ์ฌ์ง ์
๋ก๋
- ์ฑ๋ถ ๋ฆฌ์คํธ ์ง์ ์
๋ ฅ (์: "๋นํ๋ฏผ D 1000IU, ...")
- **์ฌ๋ฌ ์ ํ์ ํ๋ฒ์ ๋ถ์ํ๋ ค๋ฉด ๋ชจ๋ ๋์ดํ๊ฑฐ๋ ์ฌ์ง์ ์ฌ๋ฌ ์ฅ ์ฌ๋ ค์ฃผ์ธ์**
2-1-A. ์ ํ ์์ ์ฑ ์ฌํ์ธ ๋ฃจํ
์ฌ์ฉ์๊ฐ ์ ํ ๋ชฉ๋ก์ ์ ์ํ ์งํ, ์๋ ํ์ธ ์ง๋ฌธ์ ๋ฐ๋์ ์คํ (์๋ต ๊ธ์ง):
ํ์ธ: ํ์ฌ ๋งค์ผ ๋์๋ ๋ณด์ถฉ์ ๋ ์๋ N๊ฐ๊ฐ **์ ๋ถ**์ธ๊ฐ์?
- [์ ํ1]
- [์ ํ2]
- [์ ํ3]
ํน์ ์๋ ์ค ๋น ์ง ๊ฒ ์๋ค๋ฉด ์ง๊ธ ์ถ๊ฐํด ์ฃผ์ธ์:
- ์ค๋ฉ๊ฐ3ยทํผ์ฌ์ค์ผ
- ๋นํ๋ฏผD (๋จ๋
์ ํ, ์ข
ํฉ๋นํ๋ฏผ์ ํฌํจ๋ ๊ฒ ์ธ)
- ํ๋ก๋ฐ์ด์คํฑ์คยท์ ์ฐ๊ท
- ๋ง๊ทธ๋ค์ยท์นผ์ยท์ฒ ๋ถ (๋จ๋
)
- ๋ฃจํ
์ธยท์์คํ์ํด ๋ฑ ๋ ๋ณด์กฐ์
- ์ฝ๋ผ๊ฒยทํ์๋ฃจ๋ก ์ฐ
- ์ธ์ด๋ธยท์ ค๋ฆฌ ํํ ๋ณด์ถฉ์ (์๊ธฐ ์ฌ์)
- ์ฃผ 1-2ํ๋ง ๋ณต์ฉํ๋ ์ ํ
"์ด๊ฒ ์ ๋ถ" ๋๋ ์ถ๊ฐ ์ ํ์ ์๋ ค์ฃผ์๋ฉด ๋ถ์ ์งํํฉ๋๋ค.
๊ท์น:
- ์ด ๋ฃจํ๋ฅผ ๊ฑฐ์น์ง ์๊ณ Phase 2๋ก ์ง์
ํ์ง ๋ง ๊ฒ
- ์ฌ์ฉ์๊ฐ "์ ๋ถ"๋ผ๊ณ ํ์ธํ ํ์๋ง ๋ถ์ ์์
- ๋ถ์ ์ค๊ฐ์ ์ฌ์ฉ์๊ฐ "์, ์ด๊ฒ๋ ๋จน์ด" ํ๊ณ ์ถ๊ฐํ๋ฉด Phase 1๋ก ๋ณต๊ทํ์ฌ ์ฒ์๋ถํฐ ์ฌ์ฐ์ถ
- ์ฌ์ : ์ดํ ํ
์คํธ์์ ์ฌ์ฉ์๊ฐ ์ฒ ๋ถ์ "๋จน๋๋ค"๊ณ ํ์ผ๋ ์ค์ ๋ก๋ ์ ๋จน์๊ณ , ์ค๋ฉ๊ฐ3๋ ์ค๊ฐ์ ์ถ๊ฐ๋๋ ๋ฑ ๋ชฉ๋ก ๋ถ์ ํ์ด ๋น๋ฒ
2-2. ์ง๋ฌธ ํ
ํ๋ฆฟ (--en ์์ด ์ต์
)
Starting the supplement analysis. For more accurate results, please share your profile (all fields are optional โ you can skip).
1. **Gender**: female / male / other / skip
2. **Age** (or biological age): e.g., 35
3. **Current symptoms/goals**: e.g., fatigue, sleep, immunity, joint, none
4. **Pregnancy/breastfeeding**: yes / no
5. **Prescription medications**: e.g., levothyroxine, warfarin, none
6. **Underlying conditions** (optional): e.g., thyroid, hypertension, none
Unspecified fields default to "general adult".
Then, provide the supplement(s) to analyze:
- Product name
- Upload a photo of the Supplement Facts panel
- Type the ingredient list directly
- **For multi-product stack analysis, list all or upload multiple photos**
2-3. ํ๋กํ ์ฒ๋ฆฌ ๊ท์น
- ์์ ์(<12์ธ) ๋๋ ๋ฐ๋ ค๋๋ฌผ ๊ฐ์ง ์ โ ์ฆ์ ยง6 ๊ฑฐ๋ถ ํ๋กํ ์ฝ
- ์์ ยท์์ ์๋ต "ํด๋น" โ ๋ฆฌํฌํธ ์ต์๋จ์
references/disclaimer.md ยง3-1 ๋ฐฐ๋ ๊ฐ์ ์ฝ์
- ์ฒ๋ฐฉ์ฝ ๋น์ด์์ง ์์ โ ยง3-3 ๋ฐฐ๋ ์ฝ์
, ๊ฐ ๋ณด์ถฉ์ -์ฝ๋ฌผ ์์ ๋ํด
references/interaction-patterns.md ๋งค์นญ
- ๋ชจ๋ ํ๋ ๋ฏธ์
๋ ฅ โ
profile_assumption: "์ผ๋ฐ ์ฑ์ธ (19-50์ธ, ์ฌ์ฑ ๊ธฐ์ค)" ํ๋๊ทธ
3. ํ์ดํ๋ผ์ธ (Phase 0-A ~ 6)
Phase 0-A: API ์ฐ๊ฒฐ ์ฒดํฌ (๋งค ์ธ์
์ต์ด 1ํ โ ๊ฐ์ฅ ๋จผ์ ์คํ)
โโ KFDA ํ๊ฒฝ๋ณ์ ์กด์ฌ โ ์ฆ์ Phase 0 ์ง์
โโ user-data/kfda-skip.json (foreign_only) ์กด์ฌ โ ์ฆ์ Phase 0 ์ง์
โโ ๋ ๋ค ์์ โ API ์๋ด ํ๋ฉด ์ถ๋ ฅ โ ์ฌ์ฉ์ ์ ํ (A/B/C)
A. ์ง๊ธ ์ฐ๋ โ ๋ฐ๊ธ ๊ฐ์ด๋ ๋จ๊ณ๋ณ ์ถ๋ ฅ โ ํค ์
๋ ฅ ๋๊ธฐ โ ~/.env ์ค์ ์๋ด โ Phase 0
B. ์ด๋ฒ๋ง ๊ฑด๋๋ฐ๊ธฐ โ ์ ์ฅ ์์ (๋ค์ ์ธ์
์ฌ์๋ด) โ Phase 0 (KFDA ๋ฏธ์ฐ๋ ๋ฐฐ๋ ํฌํจ)
C. ์๊ตฌ ๊ฑด๋๋ฐ๊ธฐ โ user-data/kfda-skip.json ์์ฑ โ Phase 0 (๋ฐฐ๋ ์์)
Phase 0: ํ๋กํ ๊ฒฐ์
โโ prompts/detect-profile.md โ profile_id ํ์
โโ user-data/profiles/{id}.json ๋ก๋ or ์ ๊ท ์์ฑ
Phase 0.5: ์ธํ
ํธ ๋ผ์ฐํ
โโ prompts/detect-intent.md โ mode ๋ถ๋ฅ
โโ quick_check โ Phase 1ยท3๋ง ์ถ์ฝ ์คํ โ 1~2 ๋ฌธ๋จ ๋ต๋ณ
โโ quick_replace โ Phase 1ยท5๋ง ์ถ์ฝ ์คํ โ ๋์ฒดํ๋ณด ํ
โโ full_analysis โ Phase 1~6 ์ ์ฒด ์คํ (์๋)
โ
Phase 1: ์
๋ ฅ ์์ + ์ด๋ฏธ์ง ํ๋
+ ์ ํ DB ์กฐํ
โโ ๋ผ๋ฒจ ์ฌ์ง (์ต์ฐ์ )
โโ user-data/products/ DB ์ฌ์ฌ์ฉ (365์ผ ์ด๋ด)
โโ ํ
์คํธ ์
๋ ฅ โ ์ง์ ํ์ฑ
โโ ์ด๋ฏธ์ง โ prompts/parse-image.md โ JSON
โโ ์ ํ๋ช
๋ง โ Fallback Chain (ยง4-1-3)
โ
Phase 2: ์ ๊ทํ
โโ prompts/analyze-ingredient.md ยง2 โ canonical_name ๋งคํ
โโ prompts/analyze-ingredient.md ยง3 โ ๋จ์ ํ์คํ (IUโmcg ๋ฑ)
โ
Phase 3: ์คํ ํฉ์ฐ + RDA/UL + ์ค๋ณต + deficiency_gap[]
โโ prompts/analyze-ingredient.md ยง4 / ยง5 / ยง6 / ยง4.5 (๋ถ์กฑ)
โ
Phase 4: ์ํธ์์ฉ + ๊ทผ๊ฑฐ URL ์กฐํ
โโ prompts/analyze-ingredient.md ยง7 / ยง8
โ
Phase 5: ๋์ฒด์ ํ ์กฐํ (๊ตญ๋ด 5 + ํด์ธ 3, ํก์์จ ๋ฐ์)
โโ references/search-templates.md ยง10-2 + bioavailability-table.md
โโ ์ฟ ํก/๋ค์ด๋ฒ = ๊ฐ๊ฒฉ๋ง / iHerb = ๊ฐ๊ฒฉ+๋ฆฌ๋ทฐ
โ
Phase 6: ๋ฆฌํฌํธ ์์ฑ + ์๋ ์ ์ฅ (ํ๋กํ๋ณ ๋๋ ํ ๋ฆฌ)
โโ prompts/report-template.md + references/disclaimer.md ยง1/ยง2
โโ user-data/stacks/{profile_id}_latest.json (์๋ณธ ๋ฐฑ์
)
โโ user-data/reports/{profile_id}/YYYY-MM-DD_HHMM_analysis.md
โโ user-data/reports/{profile_id}/latest.md (symlink)
๋ชจ๋๋ณ ์คํ ๋ฒ์:
| ๋ชจ๋ | Phase 0-A | Phase 0 | 0.5 | 1 | 2 | 3 | 4 | 5 | 6 | ๋ฆฌํฌํธ ์ ์ฅ |
|---|
| quick_check | โ
ํ์ | โ
| โ
| ์ถ์ฝ | โ
| ์ ํ ํญ๋ชฉ๋ง | ์ ํ ํญ๋ชฉ๋ง | โ | ์ถ์ฝ | โ |
| quick_replace | โ
ํ์ | โ
| โ
| 1์ ํ๋ง | โ
| ํด๋น ์ฑ๋ถ๋ง | โ | โ
| ์ถ์ฝ | ์ ํ |
| full_analysis | โ
ํ์ | โ
| โ
| ์ ์ฒด | โ
| ์ ์ฒด | โ
| โ
| ์ ์ฒด | โ
|
4. Phase๋ณ ์์ธ
Phase 0-A โ API ์ฐ๊ฒฐ ์ฒดํฌ (๋งค ์ธ์
์ต์ด 1ํ)
๋ชจ๋ ๋ชจ๋์์ ๊ฐ์ฅ ๋จผ์ ์คํ. Phase 0๋ณด๋ค ์ ํ.
ํ๋จ ์์
1. KFDA_HTFS_KEY + KFDA_FOODSAFETY_KEY ํ๊ฒฝ๋ณ์ ์กด์ฌ?
โ YES: ์ฆ์ Phase 0 ์ง์
(์ด Phase ์ข
๋ฃ)
2. user-data/kfda-skip.json ์กด์ฌ + reason == "foreign_only"?
โ YES: ์ฆ์ Phase 0 ์ง์
(์ด Phase ์ข
๋ฃ)
3. ๋ ๋ค ์๋๋ฉด: ์๋ ์๋ด ํ๋ฉด ์ถ๋ ฅ โ ์ ํ ๋๊ธฐ
์๋ด ํ๋ฉด (์ถ๋ ฅ ํ
ํ๋ฆฟ)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๏ธ ์์ฝ์ฒ API ๋ฏธ์ฐ๋ โ ํ๊ตญ ์ ํ ์ ํ๋ ์ ํ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
์ด ์คํฌ์ ์์ฝ์ฒ Open API ์ฐ๋์ ๊ธฐ๋ณธ์ผ๋ก ์ค๊ณ๋์ต๋๋ค.
API ์์ด๋ ๋์ํ์ง๋ง, ํ๊ตญ ์ ํ(๋น๋งฅ์คยท์๋ก๋๋ฏผยท์ผํธ๋ฃธ ๋ฑ)์
์ฑ๋ถยทํจ๋ ์ ํ๋๊ฐ ํฌ๊ฒ ๋ฎ์์ง๋๋ค.
ํญ๋ชฉ | API ์์ | API ์์
โโโโโโโโโโโโโโโโโ|โโโโโโโโโโโโโโโโโโ|โโโโโโโโโโโโโโโโโ
ํ๊ตญ ์ ํ ์ฑ๋ถ | โ
โ
โโโ (์น ๊ฒ์) | โ
โ
โ
โ
โ
(์์ฝ์ฒ ๊ณต์ DB)
์ฑ๋ถ ํจ๋ ์ ํ๋ | ๋ฎ์ | ๋์
์์ฝํ/๊ฑด๊ธฐ์ ๊ตฌ๋ถ | ์ด๋ ค์ | ์๋ ๊ตฌ๋ถ
์ ํํด ์ฃผ์ธ์:
A. ์ง๊ธ ์ฐ๋ํ๊ธฐ (API ํค ๋ฐ๊ธ, ์ฝ 5๋ถ โ ์น์ธ๊น์ง ์ต๋ 2์๊ฐ)
B. ์ด๋ฒ๋ง ๊ฑด๋๋ฐ๊ธฐ (๋ค์ ์ธ์
์ ๋ค์ ์๋ด)
C. ๊ณ์ ๊ฑด๋๋ฐ๊ธฐ (์ธ๊ตญ ๋ณด์ถฉ์ ๋ง ๋ถ์)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
์ ํ๋ณ ์ฒ๋ฆฌ
A โ ์ง๊ธ ์ฐ๋:
์๋ ๊ฐ์ด๋๋ฅผ ์์๋๋ก ์ถ๋ ฅํ๊ณ , ํค ์
๋ ฅ์ ๊ธฐ๋ค๋ฆฐ ํ Phase 0 ์ง์
.
[์์ฝ์ฒ API ์ฐ๋ ๊ฐ์ด๋]
Step 1. ๊ฑด๊ฐ๊ธฐ๋ฅ์ํ API ํค ๋ฐ๊ธ (KFDA_FOODSAFETY_KEY)
1) https://openapi.foodsafetykorea.go.kr ํ์๊ฐ์
2) C003 / I0030 / I2710 ๊ฐ๊ฐ ํ์ฉ์ ์ฒญ
3) ๋ฐ๊ธ๋ ํค ๋ณต์ฌ
Step 2. ์์ฝํ API ํค ๋ฐ๊ธ (KFDA_HTFS_KEY)
1) https://data.go.kr ํ์๊ฐ์
2) "์ํ์์ฝํ์์ ์ฒ_์์ฝํ๊ฐ์์ ๋ณด" ๊ฒ์ โ ํ์ฉ์ ์ฒญ
3) Encoding ํญ์ URL-encoded ํค ๋ณต์ฌ (%2Fยท%2B ํฌํจ)
โ ๏ธ ์น์ธ๊น์ง ์ต๋ 2์๊ฐ ์์. ์น์ธ ํ ์๋ ์
๋ ฅ.
Step 3. ํ๊ฒฝ๋ณ์ ๋ฑ๋ก (~/.env ๋๋ claude_desktop_config.json)
KFDA_FOODSAFETY_KEY=๋ฐ๊ธ๋ฐ์_ํค
KFDA_HTFS_KEY=๋ฐ๊ธ๋ฐ์_ํค
ํค๋ฅผ ๋ฐ์ผ์
จ์ผ๋ฉด "๋ฑ๋ก ์๋ฃ"๋ผ๊ณ ์
๋ ฅํด ์ฃผ์ธ์.
(์ง๊ธ ๋น์ฅ ๋ฐ๊ธ์ด ์ด๋ ค์ฐ๋ฉด 'B'๋ฅผ ์
๋ ฅํ๋ฉด ์ด๋ฒ๋ง ๊ฑด๋๋๋๋ค)
์ฌ์ฉ์๊ฐ "๋ฑ๋ก ์๋ฃ" ์
๋ ฅ ์ โ Phase 0 ์ง์
(ํ๊ฒฝ๋ณ์๋ ์ฌ์์ ํ ์ ์ฉ๋จ์ ์๋ด).
B โ ์ด๋ฒ๋ง ๊ฑด๋๋ฐ๊ธฐ:
user-data/kfda-skip.json ์ ์ฅํ์ง ์์ (๋ค์ ์ธ์
์ฌ์๋ด ๋ณด์ฅ)
- Phase 0 ์ง์
. ๋ฆฌํฌํธ ์๋จ์ KFDA ๋ฏธ์ฐ๋ ๋ฐฐ๋ 1ํ ์ฝ์
.
C โ ์๊ตฌ ๊ฑด๋๋ฐ๊ธฐ (์ธ๊ตญ ์ ํ ์ ์ฉ):
๊ท์น
- ์ด Phase๋ ์ธ์
๋ด 1ํ๋ง ์คํ (๊ฐ์ ์ธ์
์์ ๋ ๋ฒ์งธ ์ฟผ๋ฆฌ๋ถํฐ๋ ์คํต)
- ์ฌ์ฉ์๊ฐ ๋จผ์ ๋ณด์ถฉ์ ์ ๋ณด๋ฅผ ์
๋ ฅํด๋ ์ด Phase๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ ๋ค ๋ถ์ ์์
- "๋์ค์", "๋ฌด์", "๊ด์ฐฎ์" ๊ฐ์ ์ฐํ ํํ โ B ์ ํ์ผ๋ก ์ฒ๋ฆฌ (์ ์ฅ ์์)
Phase 0 โ ํ๋กํ ๊ฒฐ์
๋ชจ๋ ์ฌ์ฉ์ ๋ฐํ์ ๋ํด ๊ฐ์ฅ ๋จผ์ ์คํ. ๋ถ์ ๋์ ํ๋กํ์ ํ์ .
user-data/profiles/_index.json ์ฝ๊ธฐ (์์ผ๋ฉด ๋น ์ธ๋ฑ์ค ์์ฑ)
prompts/detect-profile.md ํ๋กฌํํธ๋ก ๋ฐํ ๋ถ๋ฅ โ decision ์์
decision ๋ณ ์ฒ๋ฆฌ:
| decision | ์ฒ๋ฆฌ |
|---|
match | profiles/{id}.json + stacks/{id}_latest.json ๋ก๋, "์ง๋๋ฒ OO ๋์๋ '{display_name}' ๋ง์ผ์ ๊ฐ์?" 1ํ ํ์ธ (์ธ์
๋ด 2๋ถ ์ด๋ด ์ฌ์ฐธ์กฐ๋ ์๋ต) |
default | default_profile_id ์ฌ์ฉ. ์ฒซ ๋ฐฉ๋ฌธ์ด๋ฉด display_name์ ์ฌ์ฉ์์๊ฒ ์ง๋ฌธ ํ ์ ๊ท ์์ฑ |
needs_new_profile | ํ๋กํ๋ช
์ง๋ฌธ โ slug ๋ณํ โ _index.json ์ถ๊ฐ + {id}.json ์ ๊ท (demographics๋ Phase 1์์) |
ambiguous | ํ๋ณด ๋ชฉ๋ก ์ ์, ์ฌ์ฉ์ ์ ํ ํ ์ฌ์ง์
|
reject_scope | ์์ ์ยท๋ฐ๋ ค๋๋ฌผ ๊ฑฐ๋ถ ๋ฌธ๊ตฌ ์ถ๋ ฅ ํ ์ข
๋ฃ (ยง6 ๊ฑฐ๋ถ ํ๋กํ ์ฝ๊ณผ ๋์ผ) |
ํ๋ผ์ด๋ฒ์ ์์น: profile JSON์ ๋ก์ปฌ์๋ง ์ ์ฅ. WebSearch ์ฟผ๋ฆฌ์๋ ๋น์๋ณ ์ ๋ณด๋ง ์ฌ์ฉ (์: ์ฐ๋ น๋ยท์ฑ๋ณยท์ผ๋ฐ ์ฆ์ ํค์๋).
์คํค๋ง: references/user-data-schema.md ์ฐธ์กฐ.
Phase 0.5 โ ์ธํ
ํธ ๋ผ์ฐํ
Phase 0 ์งํ ์คํ. ์ฌ์ฉ์ ๋ฐํ์ ๊น์ด์ ๋ง๋ ๋ชจ๋๋ฅผ ์ ํ.
prompts/detect-intent.md ํ๋กฌํํธ ์คํ โ mode, target, suggestion_message ์์
- ๋ชจ๋๋ณ ๋ถ๊ธฐ:
| mode | ๋ค์ ๋จ๊ณ |
|---|
quick_check | Phase 1ยท3 ์ถ์ฝ ์ง์
. target.ingredient_ids๋ง RDA/UL ์กฐํ. ๋ต๋ณ ๋ง๋ฏธ์ suggestion_message 1๋ฌธ์ฅ |
quick_replace | Phase 1ยท5 ์ถ์ฝ ์ง์
. target.product_keys[0]์ ํต์ฌ ์ฑ๋ถ ์ค์ฌ ๋์ฒดํ๋ณด 5+3. suggestion_message๋ก ํ ๋ถ์ ์ ์ |
full_analysis | ๊ธฐ์กด Phase 1~6 ์ ์ฒด ์คํ. suggestion_message = null |
ํต์ฌ ์์น (CLAUDE.md ยง2-1 + L10 ๊ตํ):
- ํ ๋ถ์์ ๊ฐ์ ์ ๋ํ์ง ์์. ์ ์๋ง.
- ๋ชจํธํ ๋ ๋ผ์ดํธ ๋ชจ๋ ํธํฅ (
quick_check ์ฐ์ )
- ํ ๋ถ์ ์งํ 10๋ถ ์ด๋ด ๊ฐ์ ํ๋กํ ์ง๋ฌธ์
escalation_allowed: false โ ์ ์ ์๋ต
Phase 1 โ ์
๋ ฅ ์์
4-1-1. ํ
์คํธ ์
๋ ฅ
์ฌ์ฉ์๊ฐ ์ฑ๋ถ ๋ฆฌ์คํธ๋ฅผ ํ
์คํธ๋ก ์
๋ ฅํ๋ฉด ๊ทธ๋๋ก ingredients[] ๋ฐฐ์ด๋ก ๋ณํ:
"๋นํ๋ฏผ D 1000IU, ์นผ์ 500mg, ๋ง๊ทธ๋ค์ 200mg"
โ [{ raw_name: "๋นํ๋ฏผ D", amount: 1000, unit: "IU" }, ...]
4-1-2. ์ด๋ฏธ์ง ์
๋ ฅ
prompts/parse-image.md ํ๋กฌํํธ๋ก Claude native vision ํธ์ถ
- JSON ์ถ๋ ฅ ์์ โ
overall_confidence ํ์ธ
medium/low ๋๋ partial โ ยง4-1-2-a ์ฌํ์ธ ํ๋ก์ฐ
4-1-2-a. ์ฌํ์ธ ํ๋ก์ฐ
requires_user_confirmation: true ์:
์ฑ๋ถํ ์ด๋ฏธ์ง ์ผ๋ถ๋ฅผ ๋ช
ํํ๊ฒ ํ๋
ํ์ง ๋ชปํ์ต๋๋ค.
๋ถ๋ช
ํํ ํญ๋ชฉ: [unclear_fields ๋ฆฌ์คํธ]
์ ์ฒด ์ ๋ขฐ๋: [overall_confidence]
๋ค์ ์ค ์ ํํด ์ฃผ์ธ์:
1. ๋ ์ ๋ช
ํ ์ฌ์ง์ ๋ค์ ์
๋ก๋ (์ ๋ฉด, ๋ฐ์ ์กฐ๋ช
๊ถ์ฅ)
2. ์ฑ๋ถ์ ์ง์ ํ
์คํธ๋ก ์
๋ ฅ
3. ํ์ฌ ํ๋
๋ ๋ถ๋ถ๋ง์ผ๋ก ๋ถ์ ์งํ (์ผ๋ถ ์ฑ๋ถ ๋๋ฝ ๊ฐ๋ฅ, ๊ถ์ฅ X)
4-1-3. ์ ํ๋ช
๋ง ์
๋ ฅ โ Fallback Chain v3.1 (KFDA ๊ฑด๊ธฐ์ + ์์ฝํ ํตํฉ + ํจ๋ ์คํฌ๋ํ)
ํต์ฌ ์์น (2026-04-18 v3.1 โ nedrug ์์ธ ์คํฌ๋ํ ํตํฉ):
- ํ๊ตญ ์ ํ โ ์์ฝ์ฒ Open API๊ฐ 1์ฐจ ๊ทผ๊ฑฐ (๊ฑด๊ธฐ์ C003 โ ์์ฝํ ํ๊ฐ์ ๋ณด ์์ฐจ ์กฐํ)
- ๊ฑด๊ธฐ์ 0๊ฑด โ "๋ชจ๋ฅธ๋ค". ์๋์ผ๋ก ์์ฝํ API ํด๋ฐฑ (OTC ์ข
ํฉ๋นํ๋ฏผ์ด ๊ฑด๊ธฐ์์ด ์๋ ์์ฝํ์ธ ๊ฒฝ์ฐ ๋ง์ โ ๋น๋งฅ์คยท์๋ก๋๋ฏผยท์ผํธ๋ฃธ ๋ฑ)
- ์์ฝํ์ Open API๋ง์ผ๋ก ํจ๋ ํ๋ณด ๋ถ๊ฐ (ํ๊ฐ์ ๋ณด API๋ ์ฑ๋ถ๋ช
๋ง ์ ๊ณต). ITEM_SEQ ํ๋ณด ํ nedrug ์์ธ ํ์ด์ง "์๋ฃ์ฝํ ๋ฐ ๋ถ๋" ํ
์ด๋ธ์ ํ์ ํ์ฑ โ ์ง์ง ํจ๋(mg/IU/ยตg)ยท๊ท๊ฒฉ(KP/USP/EP/๋ณ๊ท)ยทํ์ฐ๊ฐ(์ผ๋ก์ X mg) ํ๋ณด
- ๋ผ๋ฒจ ์ฌ์ง ์
๋ก๋ ์ โ OCR + ์ ์ ํ API ๊ต์ฐจ๊ฒ์ฆ (๋ผ๋ฒจ ๊ฐ์ด ground truth)
- ํด์ธ ์ ํ์ ์์ฝ์ฒ ๋ฏธ๋ฑ๋ก โ Perplexity/๊ณต์๋ชฐ/iHerb ์ฒด์ธ์ผ๋ก ํด๋ฐฑ
- ์ ์ฒด ๊ท์น:
references/kfda-htfs-api.md (๊ฑด๊ธฐ์), references/kfda-drug-api.md (์์ฝํ API + ยง9 nedrug ์คํฌ๋ํ)
Step A: ์ฌ์ฉ์ ๋ผ๋ฒจ ์ฌ์ง ์์ฒญ (ํญ์ 1์์ ์ง๋ฌธ)
- "๋ผ๋ฒจ ์ฌ์ง ์์ผ๋ฉด ํจ์ฌ ์ ํํด์. ์์ผ์๋ฉด ์ฌ๋ ค์ฃผ์ธ์."
- ์ฌ์ง ์ ๊ณต ์ โ prompts/parse-image.md๋ก JSON ์ถ์ถ + ๋ผ๋ฒจ์ "์์ฝํ/๊ฑด๊ฐ๊ธฐ๋ฅ์ํ" ํ๊ธฐ ๊ฐ์ง โ Step B-KFDA๋ก ๊ต์ฐจ๊ฒ์ฆ โ Step X
- ์์ผ๋ฉด Step B๋ก
Step B: user-data/ DB ์ฌ์ฌ์ฉ
- ๊ฑด๊ธฐ์: user-data/products/{key}.json
- ์์ฝํ: user-data/drugs/{item_seq}.json
- verified_at 365์ผ ์ด๋ด + confidence โฅ medium์ด๋ฉด ์ฌ์ฌ์ฉ
- DB hit ์ โ Step X๋ก (๋คํธ์ํฌ ํธ์ถ 0๊ฑด)
Step C: โ
์์ฝ์ฒ C003 API (๊ฑด๊ฐ๊ธฐ๋ฅ์ํ 1์ฐจ ๊ทผ๊ฑฐ)
- ์กฐ๊ฑด: env KFDA_FOODSAFETY_KEY ์ค์ ๋จ
- ์๋ํฌ์ธํธ:
GET http://openapi.foodsafetykorea.go.kr/api/{KEY}/C003/json/1/10/PRDLST_NM={์ ํ๋ช
}
- ๊ฒฐ๊ณผ ์ฒ๋ฆฌ (kfda-htfs-api.md ยง4-4):
* 1๊ฑด โ ํ์ โ prompts/parse-kfda-response.md โ Step X
* 2~5๊ฑด โ ๋ฆฌ์คํธ ์ ์ + ์ฌ์ฉ์ ์ ํ
* 6๊ฑด+ โ ์ขํ๊ธฐ ์ง๋ฌธ (์ ์กฐ์ฌ โ ์ ํ โ ํจ๋ โ ๊ตฌ๋งค์๊ธฐ ์)
* 0๊ฑด โ โ
Step C2๋ก (๊ฑด๊ธฐ์ ๋ฏธ๋ฑ๋ก = ์์ฝํ ๊ฐ๋ฅ์ฑ)
Step C2-a: โ
์์ฝ์ฒ ์์ฝํ Open API (์ผ๋ฐ์์ฝํ/์ ๋ฌธ์์ฝํ ํด๋ฐฑ) [v3 ์ ๊ท, v3.1 ์ฌ๊ตฌ์ฑ]
- ์กฐ๊ฑด: env KFDA_HTFS_KEY ์ค์ ๋จ (๋๋ KFDA_DRUG_KEY)
- ์๋ํฌ์ธํธ ์์ฐจ:
1. DrugPrdtPrmsnInfoService07/getDrugPrdtPrmsnInq07?item_name={์ ํ๋ช
} (ํ๊ฐ์ ๋ณด โ ์ฑ๋ถ๋ช
ยท๋ถ๋ฅยท์ ์กฐ์ฌยทITEM_SEQ)
2. ๋งค์นญ ์ ITEM_SEQ ํ๋ณด โ DrbEasyDrugInfoService/getDrbEasyDrugList?itemName={์ ํ๋ช
}&itemSeq={seq} (ํ์์ฉ ์์ฝ: ํจ๋ฅยท์ฉ๋ฒยท์ฃผ์์ฌํญ)
3. (์ ํ) ๋ผ๋ฒจ ์ฌ์ง์ ๊ฐ์ธ ์์ผ๋ฉด โ MdcinGrnIdntfcInfoService03/getMdcinGrnIdntfcInfoList03?print_front={๊ฐ์ธ} (๋ฑ์์๋ณ)
- ๊ฒฐ๊ณผ ์ฒ๋ฆฌ (kfda-drug-api.md ยง4-4):
* 1๊ฑด โ ITEM_SEQ ํ๋ณด โ **๋ฐ๋์ Step C2-b ์งํ** (ํจ๋ ํ๋ณด ํ์)
* 2~5๊ฑด โ ๋ฆฌ์คํธ ์ ์
* 6๊ฑด+ โ entp_name(์ ์กฐ์ฌ)๋ก ์ขํ๊ธฐ
* 0๊ฑด โ Step D๋ก
- โ
๋ถ๋ฅ๋ณ ๋ถ๊ธฐ (SPCLTY_PBLC ๊ฐ):
* "์ผ๋ฐ์์ฝํ" โ ์ฑ๋ถยทํจ๋ฅยท์ํธ์์ฉ ๋ฆฌํฌํธ. "์์ฌ/์ฝ์ฌ ์๋ด" ๋์คํด๋ ์ด๋จธ ํ์
* "์ ๋ฌธ์์ฝํ" โ ์๋ณยท์ํธ์์ฉ๊น์ง๋ง. ๋ณต์ฉ๋/๋์ฒด ์น์
์๋ ์๋ต + ์๋จ ๋ฐฐ๋ ์๋ฌด (kfda-drug-api.md ยง8)
* "์ ์" ์ธ(์ทจ์/๋ณ๊ฒฝ) โ ๋ถ์ ์ค๋จ + "์ต์ ์ ๋ณด ํ์ธ ํ์" ์๋ฌ
Step C2-b: โ
nedrug ์์ธ ํ์ด์ง "์๋ฃ์ฝํ ๋ฐ ๋ถ๋" ํ์ฑ [v3.1 ์ ๊ท โ ํจ๋ ํ๋ณด ํ์ ๊ฒฝ๋ก]
- ์กฐ๊ฑด: Step C2-a์์ ITEM_SEQ ํ๋ณด๋จ
- ์๋ํฌ์ธํธ: GET https://nedrug.mfds.go.kr/pbp/CCBBB01/getItemDetail?itemSeq={ITEM_SEQ}
- ํ์ ํค๋:
User-Agent: Mozilla/5.0 (์ผ๋ฐ ๋ธ๋ผ์ฐ์ UA)
Referer: https://nedrug.mfds.go.kr/
- ํ์ฑ ๋์: HTML ๋ด "์๋ฃ์ฝํ ๋ฐ ๋ถ๋" ํ
์ด๋ธ (<thead>์ฑ๋ถ๋ช
| ๋ถ๋ | ๋จ์ | ๊ท๊ฒฉ | ์ฑ๋ถ์ ๋ณด</thead> ๋ธ๋ก) โ prompts/parse-drug-response.md ยง5
- ๊ฐ ํ ์ถ์ถ: ์๋ฒ / ์ฑ๋ถ๋ช
(ํ๊ธ) / ๋ถ๋(์ซ์) / ๋จ์(๋ฐ๋ฆฌ๊ทธ๋จยท๋ง์ดํฌ๋ก๊ทธ๋จยท์์ด.์ ๋ฑ) / ๊ท๊ฒฉ(KPยทUSPยทEPยท๋ณ๊ท) / ์ฑ๋ถ์ ๋ณด(ํ์ฐ: "X(์ผ)๋ก์ Y ๋จ์")
- ํ์ฐ ์ฒ๋ฆฌ: "์์ฐ(์ผ)๋ก์ 24.1 ๋ฐ๋ฆฌ๊ทธ๋จ" โ elemental_amount_mg = 24.1. UL/RDA ํ๊ฐ๋ elemental ๊ธฐ์ค์ด ์์ผ๋ฉด ์ฐ์
- ๊ฒฐ๊ณผ ์ฒ๋ฆฌ:
* ์ฑ๊ณต(โฅ1ํ ํ์ฑ) โ ํตํฉ JSON์ ingredients[] ์คํจ๋ ์ฃผ์
โ Step X (confidence: high)
* ์คํจ(ํ
์ด๋ธ ๋น์ด์๊ฑฐ๋ 5xx) โ ์ต๋ 2ํ ์ฌ์๋(10์ด ๊ฐ๊ฒฉ) โ ๊ทธ๋๋ ์คํจ๋ฉด Step D(Perplexity)๋ก ํด๋ฐฑ + ๋ฆฌํฌํธ ์๋จ "nedrug ํจ๋ ๋ฏธํ๋ณด โ ๊ณต์ ๋ผ๋ฒจ ๋๋ PDF ์ฒจ๋ถ๋ฌธ์ ์ฐธ์กฐ ๊ถ๊ณ " ๋ฐฐ๋
- ์ฝ๊ด: ๊ณต๊ณต ์๋น์ค(์์ฝ์ฒ)์ด๋ ๊ณผ๋ํ ๋ฐ๋ณต ํธ์ถ ๊ธ์ง. ์บ์(Step B) ์ฐ์ . ๋์ผ ITEM_SEQ ์ฌ์กฐํ ๊ธ์ง
Step B-KFDA: ๋ผ๋ฒจ ์ฌ์ง ๊ต์ฐจ๊ฒ์ฆ (Step A์์ ์ฌ์ง ๋ฐ์์ ๋๋ง)
- ๋ผ๋ฒจ์ "๊ฑด๊ฐ๊ธฐ๋ฅ์ํ" ๋งํฌ โ C003 ์กฐํ
- ๋ผ๋ฒจ์ "์์ฝํ" ๋งํฌ โ DrugPrdtPrmsnInfoService07 ์กฐํ
- ๊ฒฐ๊ณผ ๋น๊ต ๊ท์น (kfda-htfs-api.md ยง8):
* ํจ๋ ๋์ผ โ confidence: "high" ํ์
* 10% ์ด์ ์ฐจ์ด โ ๋ผ๋ฒจ ๊ฐ ์ฑํ + "๋ฑ๋ก ์คํ๊ณผ ์ฐจ์ด โ ๋ฆฌ๋ด์ผ/๋ฐฐ์น ๊ฐ๋ฅ์ฑ" ๋ณ๊ธฐ
* API์๋ง ์๋ ์ฑ๋ถ โ ๋ผ๋ฒจ ๊ธฐ์ค + ๋ณ๊ธฐ
* API์ ์๋ ์ฑ๋ถ โ ๋ผ๋ฒจ ๊ธฐ์ค + "DB ๋ฏธ๋ฑ๋ก" ๋ณ๊ธฐ
Step D: Perplexity MCP ์กฐํ
- perplexity_research("{๋ธ๋๋} {์ ํ๋ช
} ์ ์ฑ๋ถ ํจ๋ mg ยตg")
- ํด์ธ ์ ํยท์์ฝ์ฒ ๋ฏธ๋ฑ๋ก ๊ตญ๋ด ์ ํ ๋์
- ์ถ์ฒ URL ๋ช
์ ์์ผ๋ฉด confidence: "low"
Step E: ๊ณต์ ๋ธ๋๋๋ชฐ / ์ ์กฐ์ฌ ํํ์ด์ง
- WebSearch: "{๋ธ๋๋} {์ ํ๋ช
} ์ฑ๋ถ" site:๊ณต์๋๋ฉ์ธ
- ์ฑ๊ณต ์กฐ๊ฑด: ์ฑ๋ถ๋ช
+ํจ๋+๋จ์๊ฐ **ํ
์คํธ๋ก ๋
ธ์ถ** (์ด๋ฏธ์ง/"์ํ์์ธ ์ฐธ์กฐ"๋ ์คํจ โ L4)
Step F: iHerb / Amazon ํด์ธ ๋์ผ ์ ํ
- WebSearch: "{์ ํ๋ช
์๋ฌธ} Supplement Facts"
- ํด์ธ ์ง๊ตฌ ์ ํยท๊ธ๋ก๋ฒ ๋ธ๋๋ ๋์
Step G: ์ฌ์ฉ์ ์ฌ์ง๋ฌธ (์ตํ)
- "๊ณต๊ฐ๋ ์ฑ๋ถ ์ ๋ณด๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค."
- ์ต์
: (1) ๋ผ๋ฒจ ์ฌ์ง ์ง์ ์
๋ก๋ (2) ์ฑ๋ถ ์ง์ ํ
์คํธ ์
๋ ฅ (3) ์ ์ธ
Step X (๊ณตํต): ์ฑ๊ณต ์ ์ ์ ํ ์์น์ ์ ์ฅ
- ๊ฑด๊ธฐ์: user-data/products/{key}.json (kfda_report_no ๋ณด์กด)
- ์์ฝํ: user-data/drugs/{item_seq}.json (classification ํ๋ ํ์)
- source.type: label_photo / db_reuse / kfda_htfs / kfda_drug / perplexity / official_site / iherb
- verified_at = ์ค๋ ๋ ์ง
์ฐ์ ์์ ์์ฝ:
| ์
๋ ฅ ์ ํ | 1์์ | 2์์ | 3์์ | ๊ต์ฐจ๊ฒ์ฆ |
|---|
| ๋ผ๋ฒจ ์ฌ์ง (๊ฑด๊ธฐ์ ๋งํฌ) | Step A | โ | โ | Step B-KFDA โ C003 |
| ๋ผ๋ฒจ ์ฌ์ง (์์ฝํ ๋งํฌ) | Step A | โ | โ | Step B-KFDA โ ํ๊ฐ์ ๋ณด |
| ํ๊ตญ ์ ํ๋ช
(๊ฑด๊ธฐ์) | Step C (C003) | Step D | โ | โ |
| ํ๊ตญ ์ ํ๋ช
(์์ฝํ) | Step C2-a (Open API) | Step C2-b (nedrug ํจ๋) | Step D | โ |
| ํด์ธ ์ ํ๋ช
| Step D | Step E/F | โ | โ |
| ์ ํ๋ช
+๋ผ๋ฒจ | Step A + ์๋๋ผ์ฐํ
| โ | โ | Step B-KFDA |
๊ธ์ง ๋๋ฉ์ธ / ์ฃผ์์ฌํญ:
- โ ๏ธ ๋ค์ด๋ฒ brand.naver.com ์ฐจ๋จ์จ 100% (L3) โ Step E์์ ๊ฐ์ง ์ 1ํ๋ง ์๋ ํ ์ฆ์ ๋ค์
- ๊ณต์๋ชฐ "์ํ์์ธํ์ด์ง ์ฐธ์กฐ" ํ
์คํธ๋ง ์์ผ๋ฉด ์คํจ ํ์ (L4)
- ์ถ์ธก/ํ๊ฐ ๊ธ์ง: ๋ชป ์ฐพ์ผ๋ฉด ์ง์ด๋ด์ง ๋ง ๊ฒ.
{unit} ๋ฏธ์์ด๋ฉด null + confidence: "low"
- KFDA ํค ๋ฏธ์ค์ ์: Step C/C2 ๊ฑด๋๋ฐ๊ณ Step D๋ก. Phase 0-A์์ B ์ ํํ ๊ฒฝ์ฐ์๋ง ๋ฆฌํฌํธ ์๋จ์ "KFDA ๋ฏธ์ฐ๋ โ ๋ถ์ ์์ ์ [A]๋ก ์ฐ๋ํ์๋ฉด ์ ํ๋๊ฐ ํฌ๊ฒ ํฅ์๋ฉ๋๋ค" ๋ฐฐ๋ 1ํ ์ฝ์
(C ์ ํ ์ ๋ฐฐ๋ ์์)
- ์์ฝํโ๊ฑด๊ธฐ์ ํผ๋ ๊ธ์ง: Step C์์ 0๊ฑด์ด์ด๋ Step C2-a๋ฅผ ๋ฐ๋์ ์๋ํด์ผ OTC ์ข
ํฉ๋นํ๋ฏผ(๋น๋งฅ์คยท์๋ก๋๋ฏผ ๋ฑ)์ ๋์น์ง ์์
- Step C2-a ์ฑ๊ณต โ Step C2-b ํ์: Open API๋ง์ผ๋ก ๋๋ด๋ฉด ํจ๋์ด ์ ๋ถ "๋น๊ณต๊ฐ"๋ก ๋จ์ UL/RDA ์ ๋ ํ๊ฐ ๋ถ๊ฐ. Step C2-b ์๋ต ๊ธ์ง (ํ์ฑ ์คํจ ์์๋ง Step D๋ก ํด๋ฐฑ ํ์ฉ)
์ถ๊ฐ ๊ท์น:
- Step A~G ๊ฐ ๋จ๊ณ ์ค์ ์๋ํ์์ ๋ด๋ถ ๋ก๊ทธ๋ก ์ถ์ โ ์ฌ์ฉ์์๊ฒ "Step C์์ 0๊ฑด โ Step C2-a์์ ์ผ๋ฐ์์ฝํ 1๊ฑด ํ์ โ Step C2-b์์ 21์ฑ๋ถ ํจ๋ ํ๋ณด" ๋ฑ ํฌ๋ช
ํ๊ฒ ๋ณด๊ณ
- ๋์ผ ์ธ์
๋ด ๋์ผ ์ ํ ์ฌ์กฐํ ๊ธ์ง (Step B DB hit๋ก ํด๊ฒฐ)
- KFDA ์๋ต ์๋ฌธ์ ๋ก์ปฌ ์บ์์๋ง. ์ธ๋ถ ์ ์ก ๊ธ์ง (kfda-htfs-api.md ยง10 / kfda-drug-api.md ยง10)
- ์์ฝํ ๋ฐ์ดํฐ๋
references/kfda-drug-api.md ยง0 ๋ฒ์ ๊ฒฝ๊ณ ์๊ฒฉ ์ค์ โ ๋ณต์ฉ๋ ์ฆ๊ฐ/๋์ฒด ์ ์ ๊ธ์ง
4-1-4. ๋ณต์ ์ ํ ์
๋ ฅ
- 2๊ฐ ์ด์์ ์ด๋ฏธ์ง/ํ
์คํธ ์
๋ ฅ์
products[] ๋ฐฐ์ด๋ก ๊ด๋ฆฌ
- ๊ฐ ์ ํ์
product_index ๋ถ์ฌ (1๋ถํฐ)
Phase 2 โ ์ ๊ทํ
prompts/analyze-ingredient.md ยง2 (์ ๊ทํ) + ยง3 (๋จ์ ํ์คํ) ์คํ.
์ฐธ์กฐ ํ์ผ:
references/ingredient-aliases.md โ 100์ข
canonical/alias ํ
์ด๋ธ
references/ingredient-aliases.md ยง0 โ ๋จ์ ๋ณํ์ 9์ข
์ถ๋ ฅ: { canonical_name, standardized_amount, standardized_unit, notes }
๋ฏธ๋งค์นญ ์ฑ๋ถ: unrecognized_ingredients[] ๋ฐฐ์ด์ ๊ธฐ๋ก (๋ฆฌํฌํธ์ ๋ช
์).
Phase 3 โ ์คํ ํฉ์ฐ + RDA/UL + ์ค๋ณต ๊ฒ์ถ
prompts/analyze-ingredient.md ยง4~ยง6 ์คํ.
์ฐธ์กฐ ํ์ผ:
references/rda-table.md โ NIH + KDRI RDA/AI/UL ํ
์ด๋ธ
references/rda-table.md ยง31 โ ํ๋๊ทธ ๊ท์น (๐ด/๐ /๐ก/โ
/โน๏ธ)
references/rda-table.md ยง32 โ UL ์น๋ช
8ํญ๋ชฉ ์ฒดํฌ๋ฆฌ์คํธ
ํ๋กํ์ด ์์ผ๋ฉด "์ผ๋ฐ ์ฑ์ธ (19-50์ธ, ์ฌ์ฑ ๊ธฐ์ค)" ๊ธฐ๋ณธ๊ฐ. ํ๋กํ์ ๋ฐ๋ผ:
- ์ฑ๋ณ ๋ฏธ์
๋ ฅ โ ์ฌ์ฑ ๊ธฐ์ค (UL ๊ธฐ์ค ๋ณด์์ )
- ๋์ด ๋ฏธ์
๋ ฅ โ 19-50์ธ ํ๊ท
- ์์ ยท์์ โ ํด๋น ์ด ์กฐํ
Phase 4 โ ์ํธ์์ฉ + ๊ทผ๊ฑฐ URL ์กฐํ
prompts/analyze-ingredient.md ยง7 (interaction) + ยง8 (evidence).
์ฐธ์กฐ ํ์ผ:
references/interaction-patterns.md โ 20๊ฐ ์ํธ์์ฉ ํจํด
references/search-templates.md โ Tier 1~2 WebSearch ์ฟผ๋ฆฌ ํ
ํ๋ฆฟ
์ ๋ ๊ท์น:
- ๋ชจ๋ ์ํ์ ์ฃผ์ฅ ๋ค
[์ถ์ฒ: Tier N / URL] ํ์
- URL fabricate ๊ธ์ง โ WebSearch ๊ฒฐ๊ณผ์ ์๋ URL๋ง ์ธ์ฉ
- ์ธ์
๋ด ์ค๋ณต WebSearch ๊ธ์ง (์ฑ๋ถ๋ณ ์บ์ฑ)
- ์ฒ๋ฐฉ์ฝ ์ํธ์์ฉ์ "์๋ด ๊ถ๊ณ "๋ง, ์ฉ๋ ์กฐ์ ๊ถ๊ณ ๊ธ์ง
Phase 5 โ ๋์ฒด์ ํ ์กฐํ (๊ตญ๋ด 5 + ํด์ธ 3)
references/search-templates.md ยง10-2 (๋์ฒด์ ํ ํ์ดํ๋ผ์ธ).
| ์ฑ๋ | ์ฉ๋ | ์ ์ฝ |
|---|
| ์ฟ ํก | ๊ตญ๋ด ๊ฐ๊ฒฉ | ๊ฐ๊ฒฉ๋ง, ๋ฆฌ๋ทฐ ์ธ์ฉ ์ ๋ ๊ธ์ง |
| ๋ค์ด๋ฒ์ผํ | ๊ตญ๋ด ๊ฐ๊ฒฉ | ๊ฐ๊ฒฉ๋ง, ๋ฆฌ๋ทฐ ์ธ์ฉ ์ ๋ ๊ธ์ง |
| iHerb | ํด์ธ ๊ฐ๊ฒฉ + ๋ฆฌ๋ทฐ | ๋ฆฌ๋ทฐ ์์ฝ ํ์ฉ (๋ณ์ +๊ฐ์+์์ฝ) |
- ๊ตญ๋ด 5๊ฐ: ์ฟ ํกยท๋ค์ด๋ฒ ํผํฉ
- ํด์ธ 3๊ฐ: iHerb ์ ์ฉ
- ๊ฐ๊ฒฉ ์กฐํ ์คํจํ ์ฑ๋ ์๋ฅผ ๋ฆฌํฌํธ์ ๋ช
์ ("N๊ฐ ์กฐํ ์คํจ")
- ํด์ธ๊ฐ๋ ์ํ ํ์ฐ ๋ณ๊ธฐ
- ๊ฐ๊ฒฉ ์กฐํ ์ผ์ ๋ฐ๋์ ๋ช
์
Phase 6 โ ๋ฆฌํฌํธ ์์ฑ + ์๋ ์ ์ฅ (ํ๋กํ๋ณ ๋๋ ํ ๋ฆฌ + ์๋ณธ ๋ฐฑ์
)
prompts/report-template.md ํธ์ถ.
analyze-ingredient.md์ ์ถ๋ ฅ JSON์ ํ
ํ๋ฆฟ์ ์ ์ฉ
- ์กฐ๊ฑด๋ถ ๋ฐฐ๋ ์ฝ์
(
warnings_triggered ํ๊ฐ):
infant_or_pet: true โ ยง5 ๊ฑฐ๋ถ ๋ฆฌํฌํธ๋ง ์ถ๋ ฅ, ์ดํ ์น์
์คํต
pregnancy: true โ ยง3-1 ๋ฐฐ๋
prescription_drug_present: true โ ยง3-3 ๋ฐฐ๋
ul_exceeded.length > 0 โ ยง3-4 ๋ฐฐ๋
{{DISCLAIMER}}๋ references/disclaimer.md ยง1(ํ) / ยง2(์) ์๋ ์ฝ์
โ ์์ ยท์ถ์ฝ ๊ธ์ง
{{PROFILE_NAME}} ๋ง์ปค ์นํ โ "{display_name}" ํ์
{{UL_EXCEEDED_SECTION}} โ UL ์ด๊ณผ/๊ทผ์ ์์ธ (ref/deficiency-excess-effects.md ์นดํ๋ก๊ทธ ์ฐ๊ฒฐ)
{{DEFICIENCY_SECTION}} โ RDA ๋ฏธ๋ฌ ์์ธ (๋ถ์กฑ ๊ฑด๊ฐ ์ํฅ + ์๋จ ๋ณด์)
- ์๋ณธ ์ฑ๋ถ JSON ๋ฐฑ์
:
- ํ์ฑ๋ ๋ชจ๋ ์์์ mg/ยตg ์์น๋ฅผ
user-data/stacks/{profile_id}_latest.json์ ์ ์ฅ
/compact ํ ์ฌ๋ถ์ ์ ์ถ์ ์น๋ก ๋์ฒด๋์ง ์๋๋ก ๋ณดํธ
- ์คํจ ์ ๋ฆฌํฌํธ ์ต์๋จ์
{{SAVE_FAILURE_BANNER}} ์นํ (๋ฆฌํฌํธ ๋ณธ๋ฌธ์ ์ ์ ๋
ธ์ถ)
- ์๋ .md ํ์ผ ์ ์ฅ (ํ๋กํ๋ณ ๊ฒฝ๋ก):
- ์ ์ฅ ๊ฒฝ๋ก:
./user-data/reports/{profile_id}/YYYY-MM-DD_HHMM_analysis.md
- ํ์ผ๋ช
์ค๋ณต ์
_2, _3 ์ํฝ์ค
- Write ๋๊ตฌ๋ก ์ ์ฅ โ
{{FILE_SAVED_PATH}} ๋ง์ปค์ ๊ฒฝ๋ก ์นํ
latest.md ์ฌ๋ณผ๋ฆญ ๋งํฌ ๊ฐฑ์ :
./user-data/reports/{profile_id}/latest.md โ ๋ฐฉ๊ธ ์ ์ฅํ ํ์ผ๋ก ln -sfn
- ์คํจ ์ plain ํ์ผ ๋ณต์ฌ๋ก fallback
- ์ฌ์ฉ์์๊ฒ ๋ฆฌํฌํธ ์ ๋ฌธ ๋
ธ์ถ + ์ ์ฅ ๊ฒฝ๋ก ์๋ฆผ (
{{FILE_SAVED_PATH}})
๋ชจ๋๋ณ ์ถ์ฝ ๊ท์น:
quick_check โ Phase 6๋ ๋ํ ๋ด ์๋ต๋ง, ํ์ผ ์ ์ฅ ์์ (Step 7/8/9 ๋ชจ๋ ์คํต). {{SUGGESTION}} ๋ง์ปค๋ง ์ฌ์ฉ
quick_replace โ ๋์ฒดํ๋ณด ํ๋ง ์ ์ฅ ์ ํ ๊ฐ๋ฅ (์ฌ์ฉ์๊ฐ "์ ์ฅํด์ค" ํ ๋๋ง). Step 7(stack ๋ฐฑ์
)์ ๊ฑด๋๋
full_analysis โ ์ 10๋จ๊ณ ์ ์ฒด ์คํ
5. ์ถ๋ ฅ ์ธ์ด ์ต์
| ์
๋ ฅ | ๋์ |
|---|
| ๊ธฐ๋ณธ | ํ๊ตญ์ด ๋ฆฌํฌํธ + ยง1 ๋ฉด์ฑ
|
--en | ์์ด ๋ฆฌํฌํธ + ยง2 ๋ฉด์ฑ
|
--both | ํ๊ตญ์ด ๋ณธ๋ฌธ + ๋ง๋ฏธ ์์ด ์์ฝ + ยง1 + ยง2 ๋ชจ๋ |
6. ๊ฑฐ๋ถ ํ๋กํ ์ฝ (์์ ์ยท๋ฐ๋ ค๋๋ฌผ)
๊ฐ์ง ์ ํธ:
- ํ๋กํ์ "์์ด", "์๋
", "์ด๋ฆฐ์ด", "์ ์", "kid", "child", "infant", "baby"
- ํ๋กํ์ "๊ฐ์์ง", "๊ณ ์์ด", "๋ฐ๋ ค๋๋ฌผ", "dog", "cat", "pet"
- ๋์ด ์
๋ ฅ < 12์ธ
๊ฐ์ง ์ ์ฆ์ ๋ค์ ์ถ๋ ฅ (ํ๊ตญ์ด):
# ๋ถ์ ๊ฑฐ๋ถ
> โ **๋ถ์ ๊ฑฐ๋ถ**
> ๋ณธ ์คํฌ์ **๋ง 12์ธ ์ด์ ์ฑ์ธ**์ ๋์์ผ๋ก ํฉ๋๋ค. ์์ ์ยท์๋ยท๋ฐ๋ ค๋๋ฌผ ๋ณด์ถฉ์ ๋ ์ ๋ฌธ์ยท์์์ฌ์ ์ฒ๋ฐฉ์ด ํ์ํ๋ฉฐ, ๋ณธ ๋๊ตฌ๋ก ๋ถ์ํ์ง ์์ต๋๋ค.
์
๋ ฅํ์ ๋์์ ๋ณธ ์คํฌ์ ๋ถ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.
- ๋ถ์ ๋์: **๋ง 12์ธ ์ด์ ์ฑ์ธ**
- ์์ ์ยท์๋: ์์์ฒญ์๋
๊ณผ ์ ๋ฌธ์ ์๋ด ํ์
- ๋ฐ๋ ค๋๋ฌผ: ์์์ฌ ์ฒ๋ฐฉ ํ์
[references/disclaimer.md ยง1 ๋ฉด์ฑ
์กฐํญ ์๋ ์ฝ์
]
์ดํ ๋ชจ๋ ๋ถ์ ์ ์ฐจ ์ ๋ฉด ์ค๋จ.
7. ๋ฐ์ดํฐ ์์ค ์ ์ฑ
(3-Tier)
| Tier | ์์ค | ์ฉ๋ | ์ ์ฝ |
|---|
| 1 | PubMed | ์์ ๊ทผ๊ฑฐ | ๋ฆฌ๋ทฐ/๋ฉํ๋ถ์ ์ฐ์ |
| 1 | NIH ODS | RDA/UL/ํฉํธ์ํธ | ๋ชจ๋ ์์์ ๊ถ๊ณ |
| 1 | Cochrane | ์ฒด๊ณ์ ๊ณ ์ฐฐ | ํ์ง ํํฐ๋ง |
| 2 | Examine.com | ๊ทผ๊ฑฐ ๋ฑ๊ธ A~D | ์ผ๋ฐ ์๋น์ ์์ฝ ํ์ฉ |
| 2 | ์์ฝ์ฒ C003/I2710 Open API | ๊ตญ๋ด ๊ฑด๊ฐ๊ธฐ๋ฅ์ํ 1์ฐจ ์๋ณ + ์๋ฃ ์ญ์ทจ ๊ธฐ์ค | KFDA_FOODSAFETY_KEY env (์ ํ). ์์ธ: references/kfda-htfs-api.md |
| 2 | ์์ฝ์ฒ ์์ฝํ Open API 3์ข
| ๊ตญ๋ด ์ผ๋ฐ/์ ๋ฌธ์์ฝํ ์๋ณยท์ฑ๋ถยทํจ๋ฅยท์ํธ์์ฉ | KFDA_HTFS_KEY ์ฌ์ฌ์ฉ. ์์ธ: references/kfda-drug-api.md |
| 2 | ์์ฝ์ฒ ๊ฑด๊ธฐ์ ์๋ฃDB (์น) | ๊ตญ๋ด ์ธ์ ์๋ฃ ๊ณต๊ฐ ํ์ด์ง | API ๋ฏธ์ฐ๋ ์ ํด๋ฐฑ |
| 2 | Drugs.com | ์ฝ๋ฌผ ์ํธ์์ฉ | ์ฒ๋ฐฉ์ฝ ์กฐํ |
| 3 | iHerb | ํด์ธ๊ฐ + ๋ฆฌ๋ทฐ | ๋ฆฌ๋ทฐ ์์ฝ๋ง |
| 3 | ์ฟ ํก | ๊ตญ๋ด๊ฐ | ๋ฆฌ๋ทฐ ์ธ์ฉ ๊ธ์ง |
| 3 | ๋ค์ด๋ฒ์ผํ | ๊ตญ๋ด๊ฐ | ๋ฆฌ๋ทฐ ์ธ์ฉ ๊ธ์ง |
Tier 1 ์ฐ์ โ Tier 2 fallback. ๋ชจ๋ ์คํจํ๋ฉด "๊ทผ๊ฑฐ ๋ถ์กฑ" ํ์.
8. ์ ๋ ๊ท์น (์ Phase ๊ณตํต)
- ๋ชจ๋ ์ํ ์ฃผ์ฅ ๋ค
[์ถ์ฒ: Tier N / URL] ํ์ โ ์ถ์ฒ ์๋ ์ผ๋ฐํ ๊ธ์ง
- URL fabricate ๊ธ์ง โ WebSearch ๊ฒฐ๊ณผ์ ์๋ URL ์์ฑ ๊ธ์ง
- "์ผ๋ฐ์ ์ผ๋ก", "์๋ ค์ง ๋ฐ", "๋ง์ ์ฐ๊ตฌ์์" ๋ฑ ์ฝํ ์ผ๋ฐํ ํํ ๊ธ์ง
- ๋ฉด์ฑ
์กฐํญ(
{{DISCLAIMER}}) ์๋ ์ฝ์
, ์์ ยท์ถ์ฝ ๊ธ์ง
- ์ฒ๋ฐฉ์ฝ ๋ณต์ฉ๋ ์กฐ์ ยท์ค๋จ ๊ถ๊ณ ๊ธ์ง โ "์์ฌยท์ฝ์ฌ ์๋ด ๊ถ๊ณ "๊น์ง
- UL ์ด๊ณผ ์ ๐ด ํ๋๊ทธ + ์๋จ ยง3-4 ๋ฐฐ๋ ํ์
- ์์ ยท์์ ยท์์ ์ยท๋ฐ๋ ค๋๋ฌผ โ ์ต์์ ๊ฒฝ๊ณ ๋๋ ๊ฑฐ๋ถ
- ์ฟ ํก/๋ค์ด๋ฒ ๋ฆฌ๋ทฐ ์ธ์ฉ ์ ๋ ๊ธ์ง (iHerb ๋ฆฌ๋ทฐ ์์ฝ๋ง ํ์ฉ)
- ์ธ์
๋ด ๋์ผ ์ฑ๋ถ ์ค๋ณต WebSearch ๊ธ์ง โ ์บ์ฑ ํ์
- ์ธ๋ถ HTTP ์์ฒด ๊ตฌํ ๊ธ์ง โ Claude ํ๊ฒฝ์ WebSearch/WebFetch๋ง ํธ์ถ
9. ์ฌ์ฉ ์์
9-1. ํ
์คํธ ์
๋ ฅ (๋จ์ผ ์ ํ)
User: "์ค๋ฆฌ๋ง๋ฆฐ 130mg, L-ํ
์๋ 200mg, B1 15mg ๋จน๊ณ ์์ด. 32์ธ ์ฌ์ฑ, ์ฆ์์ ํผ๋ก."
Claude:
[Phase 1] ํ
์คํธ ํ์ฑ โ 3์ฑ๋ถ
[Phase 2] ์ ๊ทํ โ silymarin, l_theanine, thiamine
[Phase 3] RDA% / UL% โ ํฐ์๋ฏผ 1250% (์์ฉ์ฑ, UL ์์)
[Phase 4] ์ํธ์์ฉ โ ์ค๋ฆฌ๋ง๋ฆฐ โ CYP3A4/2C9 ์ฝ๋ฌผ [์ถ์ฒ: Tier 2 / drugs.com URL]
[Phase 5] ๋์ฒด์ ํ ์กฐํ (๊ตญ๋ด 5 + ํด์ธ 3)
[Phase 6] ๋ฆฌํฌํธ + ๋ฉด์ฑ
์ถ๋ ฅ
9-2. ์ด๋ฏธ์ง ์
๋ ฅ (๋จ์ผ ์ ํ)
User: [์ฑ๋ถํ ์ฌ์ง ์
๋ก๋] "์์ 16์ฃผ์ฐจ"
Claude:
[Phase 1] parse-image.md โ confidence: high, 25์ฑ๋ถ ์ถ์ถ
[ํ๋กํ] ์์ ๊ฐ์ง โ ์ต์๋จ ยง3-1 ๋ฐฐ๋ ๊ฐ์
[Phase 2~6] ์งํ, ๋นํ๋ฏผ A retinol UL 3000mcg RAE ๊ธฐ์ค ์ฒดํฌ
[๋ฆฌํฌํธ] ์์ ๊ฒฝ๊ณ ๋ฐฐ๋ + ๋ถ์ ๊ฒฐ๊ณผ
9-3. ๋ณต์ ์ ํ ์
๋ ฅ (์คํ ๋ถ์)
User: [์ด๋ฏธ์ง 3์ฅ] "์ฌ์ฑ์ข
ํฉ๋นํ๋ฏผ + ์ค๋ฉ๊ฐ3 + ๋นํ๋ฏผD ๊ฐ์ด ๋จน๊ณ ์์ด"
Claude:
[Phase 1] 3์ ํ ๊ฐ๊ฐ ํ์ฑ
[Phase 2] ์ ๊ทํ (์ค๋ณต canonical ๊ฐ์ง ์ค๋น)
[Phase 3] ์คํ ํฉ์ฐ โ ๋นํ๋ฏผ D ํฉ์ฐ 150mcg (UL 100mcg 1.5๋ฐฐ ์ด๊ณผ ๐ด)
์ค๋ณต ๊ฒ์ถ โ ๋นํ๋ฏผ D 2๊ฐ ์ ํ ์ค๋ณต
[Phase 4] ์ํธ์์ฉ ์ค์บ
[Phase 5] ๋นํ๋ฏผ D ๋จ๋
์ ํ ๋์ฒด์ ์กฐํ
[Phase 6] ๋ฆฌํฌํธ + ์คํ ์ต์ ํ ์ถ์ฒ
๐ ๊ฐ๋: ๋นํ๋ฏผ D (SunD3 ์ค๋จ ๋๋ ๊ฒฉ์ผ)
โ ์ถ๊ฐ ๊ณ ๋ ค: ๋ง๊ทธ๋ค์ (RDA ๊ธฐ์ค ๋ถ์กฑ)
9-4. ์ ํ๋ช
๋ง ์
๋ ฅ
User: "์ผํธ๋ฃธ ์ค๋ฒ ์ฌ์ฑ์ฉ ๋ถ์ํด์ค"
Claude:
[Phase 1] WebSearch โ ๊ณต์ ์ ํ ํ์ด์ง ๋๋ iHerb ์์ธ โ WebFetch
[์ฑ๋ถํ ์ถ์ถ ์คํจ ์] ์ฌ์ฉ์์๊ฒ ์ฑ๋ถ ์ง์ ์
๋ ฅ ์์ฒญ
[์ฑ๊ณต] Phase 2~6 ์งํ
9-5. ์์ด ์ถ๋ ฅ (--en)
User: "--en, Vitamin D 5000IU daily"
Claude:
[์ Phase ์์ด๋ก ์ฒ๋ฆฌ]
[๋ฆฌํฌํธ] English report + references/disclaimer.md ยง2
9-6. ์์ ์ ์
๋ ฅ (๊ฑฐ๋ถ)
User: "์ฐ๋ฆฌ ์์ด(5์ด) ๋นํ๋ฏผ ๋ถ์ํด์ค"
Claude:
[ํ๋กํ] ๋์ด 5์ธ ๊ฐ์ง โ ยง6 ๊ฑฐ๋ถ ํ๋กํ ์ฝ
[์ถ๋ ฅ] "๋ถ์ ๊ฑฐ๋ถ" ๋ฆฌํฌํธ + ยง3-2 ๋ฐฐ๋ + ยง1 ๋ฉด์ฑ
[์ดํ ๋ชจ๋ ๋ถ์ ์ค๋จ]
10. ์ ํ์ฌํญ
๋ฒ์ ๋ฐ
- ์์ ์(<12์ธ) ๋ณด์ถฉ์
- ๋ฐ๋ ค๋๋ฌผ ๋ณด์ถฉ์
- ์ฒ๋ฐฉ์์ฝํ ๋ณต์ฉ๋ ์กฐ์ /์ค๋จ
- ์ง๋ณ ์ง๋จ/์น๋ฃ
- ๊ฐ์ธ ๊ฑด๊ฐ ๋ฐ์ดํฐ ์ ์ฅ (๋ณธ ์คํฌ์ ๋ฌด์ํ โ ๋ํ ์ธ์
๋ด์์๋ง ๋์)
- ์๋ ๊ฒฐ์ ยท๊ตฌ๋งค
- ์ฟ ํกยท๋ค์ด๋ฒ ๋ฆฌ๋ทฐ ๋ถ์ (์ฝ๊ด ๋ฆฌ์คํฌ)
์๋ ค์ง ์ ์ฝ
- RDA/UL ์ซ์:
references/rda-table.md๋ NIH ODS + KDRI 2020 ๊ธฐ๋ฐ์ด๋, ์ต์ ๊ฐ์ ์ฌํญ ๋ฐ์ ์ง์ฐ ๊ฐ๋ฅ. ๋ฆด๋ฆฌ์ฆ ์์ ์ดํ 1๋
์ด์ ๊ฒฝ๊ณผ ์ ์ฌ๊ฒ์ฆ ๊ถ์ฅ
- ๊ฐ๊ฒฉ ์กฐํ: ์ผํ๋ชฐ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ผ๋ก ์คํจ ๊ฐ๋ฅ. ์คํจ ์ฑ๋์ ๋ฆฌํฌํธ์ ๋ช
์
- ์ด๋ฏธ์ง ํ๋
: ๊ฐ๋ยท์กฐ๋ช
ยท์ด์ ์ ๋ฐ๋ผ ์ ํ๋ ๋ณ๋.
confidence: medium/low ์ ์ฌํ์ธ ํ๋ก์ฐ
- ์ํธ์์ฉ: 20๊ฐ ์ฃผ์ ํจํด ์ปค๋ฒ. ๋๋ฌผ๊ฑฐ๋ ์ ๊ท ์ํธ์์ฉ์ ๋๋ฝ ๊ฐ๋ฅ โ ์ฒ๋ฐฉ์ฝ ๋ณต์ฉ ์ ์์ฌ ์๋ด ํ์
- ์์ ์ ํ: ๋ชจ๋ ์์๋ ๊ฐ์ ๋ธ๋๋๋ช
(NutriCalm Labs, DailyCore Nutrition ๋ฑ). ์ค์ ์ ํ ์ถ์ฒยท๋ณด์ฆ ์๋
11. ์ฐธ์กฐ ํ์ผ ์์ฝ
| ํ์ผ | ์ฉ๋ | Phase |
|---|
references/ingredient-aliases.md | 100์ข
canonical/alias + ๋จ์ ๋ณํ์ | 2 |
references/rda-table.md | NIH + KDRI RDA/UL ํ
์ด๋ธ | 3 |
references/interaction-patterns.md | 20๊ฐ ์ํธ์์ฉ ํจํด | 4 |
references/search-templates.md | Tier 1~3 ์ฟผ๋ฆฌ + 3ํ์ดํ๋ผ์ธ | 1, 4, 5 |
references/disclaimer.md | ํ/์ ๋ฉด์ฑ
+ 4์ข
์กฐ๊ฑด๋ถ ๋ฐฐ๋ | 6 |
prompts/parse-image.md | ์ด๋ฏธ์ง ํ๋
JSON ์คํค๋ง | 1 |
prompts/analyze-ingredient.md | ์ ๊ทํโํฉ์ฐโํ๋๊ทธโ๊ทผ๊ฑฐ 7๋จ๊ณ | 2, 3, 4 |
prompts/report-template.md | ๋งํฌ๋ค์ด ๋ฆฌํฌํธ ํ
ํ๋ฆฟ | 6 |
references/deficiency-excess-effects.md | 28์์์ ๋ถ์กฑยท์ด๊ณผ ๊ฑด๊ฐ ์ํฅ ์นดํ๋ก๊ทธ | 3, 4, 6 |
prompts/detect-profile.md | ๊ด๊ณ ํค์๋ โ profile_id ๋ผ์ฐํ
| 0 |
prompts/detect-intent.md | 3๋ชจ๋ ์ธํ
ํธ ๋ถ๋ฅ | 0.5 |
references/user-data-schema.md | user-data/ JSON ์คํค๋ง 5์ข
+ ๋ช
๋ช
๊ท์น | 0, 1, 6 |
references/bioavailability-table.md | ๋์ผ ์ฑ๋ถ ๋ค๋ฅธ ํํ ํก์์จ ๋น๊ต | 5 |
references/kfda-htfs-api.md | ์์ฝ์ฒ 4์ข
๊ฑด๊ธฐ์ Open API ์๋ํฌ์ธํธยทํ๋ยท5๊ฑด ์๊ณยท๊ต์ฐจ๊ฒ์ฆ ๊ท์น | 1 |
references/kfda-drug-api.md | ์์ฝ์ฒ 3์ข
์์ฝํ Open API (๋ฑ์์๋ณยทํ๊ฐ์ ๋ณดยทe์ฝ์์) + ๋ถ๋ฅ๋ณ ์ฒ๋ฆฌ ๋ถ๊ธฐ | 1 |
references/korean-intake-limits.md | I2710 ํ๋ ์ด์
(28์์์ + ๊ธฐ๋ฅ์ฑ 12์ข
ํ๊ตญ ๊ณต์ ์ญ์ทจ ๊ธฐ์ค) | 3 |
prompts/parse-kfda-response.md | C003 ์๋ต โ ๊ตฌ์กฐํ JSON ์ถ์ถ (STDR_STND/RAWMTRL_NM/NTK_MTHD) | 1 |
prompts/parse-drug-response.md | ์์ฝํ 3์ข
API ๋ณํฉ โ ์ฑ๋ถ ์ ๊ทํ + ๊ต์ฐจ๊ฒ์ฆ ํํธ ์์ฑ | 1 |
12. ๋ฒ์
์์ธ ๋ณ๊ฒฝ ์ด๋ ฅ์ CHANGELOG.md ์ฐธ์กฐ.
13. ๋ผ์ด์ ์ค & ์ฑ
์
MIT License. ๋ณธ ์คํฌ์ ์ถ๋ ฅ์ ์ํ์ ์กฐ์ธ์ด ์๋๋๋ค โ references/disclaimer.md ์ฐธ์กฐ. ์ฌ์ฉ์๋ ๋ชจ๋ ๋ณด์ถฉ์ ๋ณต์ฉ ๊ฒฐ์ ์ ์์ฌยท์ฝ์ฌ์ ์๋ดํด์ผ ํ๋ฉฐ, ๋ณธ ์คํฌ์ ์ ํ์ฑ์ ๋ํ ๋ฒ์ ์ฑ
์์ ์ง์ง ์์ต๋๋ค.