# ๐Ÿ“ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ API ๋ช…์„ธ์„œ (v13.5) ๋ณธ ๋ฌธ์„œ๋Š” `๋‡Œ์‚ฌ๋ฃŒ` ํ”„๋กœ์ ํŠธ์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ตฌ์กฐ(Schema)์™€ ๋ชจ๋“  ์™ธ๋ถ€ ํ†ต์‹  ์ธํ„ฐํŽ˜์ด์Šค(API)๋ฅผ ์ƒ์„ธํžˆ ๊ธฐ์ˆ ํ•ฉ๋‹ˆ๋‹ค. ## ๐Ÿ—„๏ธ 1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ (DB Schema) ### 1.1 `memos` ํ…Œ์ด๋ธ” ๋ฉ”๋ชจ์˜ ํ•ต์‹ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. | ์ปฌ๋Ÿผ๋ช… | ํƒ€์ž… | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… | | :--- | :--- | :--- | :--- | | `id` | INTEGER | PRIMARY KEY | ์ž๋™ ์ฆ๊ฐ€ ๊ณ ์œ  ์•„์ด๋”” | | `title` | TEXT | - | ๋ฉ”๋ชจ ์ œ๋ชฉ | | `content` | TEXT | - | ๋ฉ”๋ชจ ๋ณธ๋ฌธ (์•”ํ˜ธํ™” ์‹œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ…์ŠคํŠธ) | | `is_encrypted` | BOOLEAN | 0 | ์•”ํ˜ธํ™” ์—ฌ๋ถ€ | ### 1.2 `memo_links` ํ…Œ์ด๋ธ” (v7.0 ์ถ”๊ฐ€) ๋ฉ”๋ชจ ๊ฐ„์˜ `[[#ID]]` ๋งํฌ ๋ฐ ์‹œ๊ฐํ™” ์ธ๋ ฅ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. | ์ปฌ๋Ÿผ๋ช… | ํƒ€์ž… | ์„ค๋ช… | | :--- | :--- | :--- | | `source_id` | INTEGER | ๋งํฌ๋ฅผ ๊ฑด ๋ฉ”๋ชจ ID | | `target_id` | INTEGER | ๋งํฌ ๋Œ€์ƒ ๋ฉ”๋ชจ ID | --- ## ๐ŸŒ 2. API ์—”๋“œํฌ์ธํŠธ ์ „์ˆ˜ ๋ช…์„ธ ### 2.1 Memos & Analysis | Method | URL | Description | | :--- | :--- | :--- | | `GET` | `/api/memos` | ์ „์ฒด ๋ฉ”๋ชจ ๋ชฉ๋ก, ํƒœ๊ทธ, ์ฒจ๋ถ€ํŒŒ์ผ, **๋ฐฑ๋งํฌ** ์ •๋ณด ํ†ตํ•ฉ ์กฐํšŒ | | `POST` | `/api/memos//decrypt` | ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฒ€์ฆ ๋ฐ ๋ณธ๋ฌธ ์ผ์‹œ ๋ณตํ˜ธํ™” | | `GET` | `/api/stats/heatmap` | ์ตœ๊ทผ N์ผ๊ฐ„์˜ ์ผ์ž๋ณ„ ๋ฉ”๋ชจ ์ž‘์„ฑ ์ˆ˜(ํ†ต๊ณ„) ์กฐํšŒ (`days` ํŒŒ๋ผ๋ฏธํ„ฐ ์ง€์›) | ### 2.2 Assets (์ œํ•œ์  ์ ‘๊ทผ) | Method | URL | Security Policy | Description | | :--- | :--- | :--- | :--- | | `GET` | `/api/download/` | **์„ธ์…˜ ํ•„์ˆ˜(๋กœ๊ทธ์ธ ์ƒํ˜ธ์ž‘์šฉ)** | ์ด๋ฏธ์ง€/ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ. ์ด๋ฏธ์ง€์ธ ๊ฒฝ์šฐ `inline` ์ฒ˜๋ฆฌ ๋ฐ ์•”ํ˜ธํ™” ๋ฉ”๋ชจ ๊ด€๋ จ ํŒŒ์ผ์€ ๋กœ๊ทธ์ธ ๋ฏธ๋‹ฌ ์‹œ 403 ์ฐจ๋‹จ. | | `POST` | `/api/upload` | `login_required` | ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ์„œ๋ฒ„ ์ธก ๋งˆ์Šคํ„ฐ ํ‚ค ์•”ํ˜ธํ™” ์ €์žฅ. | ### 2.3 Settings & Ops (v11.0 ์ถ”๊ฐ€) | Method | URL | Description | | :--- | :--- | :--- | | `GET` | `/api/settings` | ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ํ…Œ๋งˆ ๋ฐ ์ „์—ญ ์„ค์ • ์กฐํšŒ | | `POST` | `/api/settings` | UI ํ…Œ๋งˆ ์„ค์ •์„ ์„œ๋ฒ„์— ์˜๊ตฌ ๊ธฐ๋ก |