Task #31
[๐ด HIGH] telegram_bot.py์ ์๋ฌ/๊ฒฝ๊ณ ๋ก๊ทธ DB ๊ธฐ๋ก ๋ฐ ์กฐํ ๊ธฐ๋ฅ์ ์์ ํ ๊ตฌํํ๊ณ , ํ์ฌ syntax ์๋ฌ๋ฅผ ์์ ํ ๋ค commit & ๋ด ์ฌ์์๊น์ง ์๋ฃํ๋ผ.
์์ ๋ช ๋ น์ด
[๐ด HIGH] telegram_bot.py์ ์๋ฌ/๊ฒฝ๊ณ ๋ก๊ทธ DB ๊ธฐ๋ก ๋ฐ ์กฐํ ๊ธฐ๋ฅ์ ์์ ํ ๊ตฌํํ๊ณ , ํ์ฌ syntax ์๋ฌ๋ฅผ ์์ ํ ๋ค commit & ๋ด ์ฌ์์๊น์ง ์๋ฃํ๋ผ.
## ํ์ฌ ์ํฉ
- ์๋ฌ ๋ก๊ทธ DB ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค๊ฐ syntax ์๋ฌ ๋ฐ์ (725๋ผ์ธ ๊ทผ์ฒ, f-string ์ ๋์
๋๋ฆฌ ๋จ๋ฐ์ดํ ์ถฉ๋)
- ๋ด์ด ํ์ฌ syntax ์๋ฌ๋ก ์คํ ์ ๋ ์ ์์
## ๊ตฌํ ์๊ตฌ์ฌํญ
### 1. DB ํ
์ด๋ธ (`_ensure_table` ํจ์ ๊ทผ์ฒ์ ์ถ๊ฐ)
```sql
CREATE TABLE IF NOT EXISTS telegram_error_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
level TEXT NOT NULL, -- 'ERROR' or 'WARNING'
source TEXT NOT NULL, -- ์: 'chat_with_tools', 'task_worker', 'api_call'
message TEXT NOT NULL,
detail TEXT, -- ์คํํธ๋ ์ด์ค ๋ฑ ์ถ๊ฐ ์ ๋ณด
user_id INTEGER, -- ๊ด๋ จ user_id (์์ ๊ฒฝ์ฐ)
task_id INTEGER, -- ๊ด๋ จ task_id (์์ ๊ฒฝ์ฐ)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
```
### 2. `_log_error(level, source, message, detail=None, user_id=None, task_id=None)` ํจ์
- level: "ERROR" ๋๋ "WARNING"
- DB์ INSERT
- ๋์์ Python logging์ผ๋ก๋ ์ถ๋ ฅ
### 3. ๊ธฐ์กด ์ฝ๋์ `_log_error()` ํธ์ถ ์ถ๊ฐ ์์น
- `_chat_with_tools()` ๋ด API 400/429 ์๋ฌ except ๋ธ๋ก
- `_task_worker()` ๋ด ํ์คํฌ ์คํจ except ๋ธ๋ก
- post-loop์์ unresolved server_tool_use ๊ฐ์ง ์ WARNING
- ๋๊ตฌ ํ๋ ์ด๊ณผ ์ WARNING
### 4. `/errors` ์ปค๋งจ๋ ํธ๋ค๋ฌ
- ์ต๊ทผ 20๊ฐ ์๋ฌ/๊ฒฝ๊ณ ์กฐํ
- ํฌ๋งท: ๋ ๋ฒจ ์์ด์ฝ(๐ด ERROR, ๐ก WARNING) + ์๊ฐ + source + message ์ 120์
- task_id ์์ผ๋ฉด ํ์
- ๊ด๋ฆฌ์(ADMIN_ID)๋ง ์ฌ์ฉ ๊ฐ๋ฅ
### 5. `/start` ์ปค๋งจ๋ ๋ชฉ๋ก์ `/errors` ์ถ๊ฐ
## ์์ ์์
1. ๋จผ์ `read_file("telegram_bot.py", 715, 740)` ์ผ๋ก ํ์ฌ ๊นจ์ง ์ฝ๋ ํ์ธ
2. syntax ์๋ฌ ์์
3. ์ ๊ธฐ๋ฅ ์ ์ฒด ๊ตฌํ (์๋ ๋ถ๋ถ๋ง ์ถ๊ฐ, ์ด๋ฏธ ๊ตฌํ๋ ๋ถ๋ถ์ ์ค๋ณต ์ถ๊ฐ ๊ธ์ง)
4. `execute_python`์ผ๋ก syntax ๊ฒ์ฆ: `python3 -m py_compile telegram_bot.py`
5. git add, commit -m "feat: error/warning log DB + /errors command", push
6. `sudo systemctl restart leninbot-telegram`
7. `sudo systemctl status leninbot-telegram` ์ผ๋ก ์ ์ ๊ฐ๋ ํ์ธ