wip: reviewer fixes in progress — pause point
This commit is contained in:
parent
24c61468d7
commit
c95360ce1f
2 changed files with 74 additions and 0 deletions
73
.continue-here.md
Normal file
73
.continue-here.md
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
# Continue Here — Telegram Forum Redesign
|
||||||
|
**Paused:** 2026-04-02
|
||||||
|
**Branch:** `feat/telegram-forum`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Где мы
|
||||||
|
|
||||||
|
Реализован forum-first Telegram адаптер. Прошли ревью (`@reviewer`). Фиксим замечания ревьюера.
|
||||||
|
|
||||||
|
**Из замечаний сделан только fix #1** — `message.py` placeholder теперь обновляется при `TelegramBadRequest` (не `thread not found`). Остальное НЕ сделано.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Незакрытые замечания ревьюера
|
||||||
|
|
||||||
|
### КРИТИЧНО
|
||||||
|
- [x] **#1 message.py** — placeholder обновляется при telegram ошибке ✅ (сделано, не закоммичено)
|
||||||
|
- [ ] **#2 commands.py** — `/archive`, `/rename`, `/new` не имеют `try/except` на Bot API вызовы. SQLite exceptions всплывают как необработанные → бот молчит
|
||||||
|
|
||||||
|
### ВАЖНО
|
||||||
|
- [ ] **#3 start.py** — `_check_and_prune_stale_topics` не изолирован: любая non-TelegramBadRequest исключение ронит весь `/start`. Нужен `try/except Exception` вокруг всего вызова
|
||||||
|
- [ ] **#4 commands.py /new** — не перехватывает лимит Telegram 1000 топиков (`TelegramBadRequest` с "topics limit")
|
||||||
|
- [ ] **#5 topic_events.py** — ревьюер упомянул уведомление при закрытии, но в спеке этого нет — **пропустить**
|
||||||
|
- [ ] **#6 bot.py** — нет таймаута на platform calls. Добавить `asyncio.wait_for(..., timeout=30)` вокруг `stream_message` в `message.py`
|
||||||
|
|
||||||
|
### РЕКОМЕНДАЦИИ
|
||||||
|
- [ ] **#7 db.py** — добавить `CREATE INDEX IF NOT EXISTS idx_chats_user_id ON chats(user_id)` в `init_db()`
|
||||||
|
- [ ] **#8 settings.py** — проверить что не обращается к старому `chat_id` вместо `thread_id`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Незакрытые тесты
|
||||||
|
|
||||||
|
- [ ] `test_message.py` — нет теста: `stream_message()` бросает исключение → placeholder показывает ошибку
|
||||||
|
- [ ] `test_commands.py` — нет теста: `/new` при `TelegramBadRequest` (лимит топиков)
|
||||||
|
- [ ] `test_commands.py` — нет теста: `/archive` в General топике (`thread_id=None`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Незакоммиченные изменения
|
||||||
|
|
||||||
|
- `adapter/telegram/handlers/message.py` — fix #1 (нужно закоммитить вместе с остальными фиксами)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Что делать дальше
|
||||||
|
|
||||||
|
1. Применить все фиксы из списка выше
|
||||||
|
2. Добавить недостающие тесты
|
||||||
|
3. `pytest tests/ -v` — все зелёные
|
||||||
|
4. `git commit -m "fix(tg): reviewer fixes — error handling, timeouts, db index"`
|
||||||
|
5. Merge `feat/telegram-forum` → `main`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Контекст
|
||||||
|
|
||||||
|
- **Спека:** `docs/superpowers/specs/2026-04-01-telegram-forum-redesign.md`
|
||||||
|
- **План:** `docs/superpowers/plans/2026-04-01-telegram-forum-redesign.md`
|
||||||
|
- **Ревью:** было сделано через `@reviewer` агент, результат выше
|
||||||
|
- **workflow:** хотфиксы делает Claude Code напрямую (< 20 строк). Новые фичи — через `codex:rescue`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Важные решения сессии
|
||||||
|
|
||||||
|
- Forum-first: `(user_id, thread_id)` PK, без супергруппы
|
||||||
|
- Закрытие топика через UI → автоархив
|
||||||
|
- Переименование через UI → sync в БД
|
||||||
|
- FSM только для settings (soul editing), не для маршрутизации
|
||||||
|
- Стриминг через `sdk.stream_message()` → прогрессивный `edit_text`
|
||||||
|
- workspace маппинг — ответственность платформы, адаптер передаёт `thread_id` как `context_id`
|
||||||
|
|
@ -68,6 +68,7 @@ async def handle_topic_message(message: Message, dispatcher: EventDispatcher) ->
|
||||||
logger.warning("topic_deleted_during_message", thread_id=thread_id)
|
logger.warning("topic_deleted_during_message", thread_id=thread_id)
|
||||||
else:
|
else:
|
||||||
logger.error("telegram_error", error=str(e))
|
logger.error("telegram_error", error=str(e))
|
||||||
|
await _safe_edit(placeholder, "Ошибка отправки, попробуй ещё раз")
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception("platform_error", user_id=user_id, thread_id=thread_id)
|
logger.exception("platform_error", user_id=user_id, thread_id=thread_id)
|
||||||
await _safe_edit(placeholder, "Сервис временно недоступен, попробуй позже")
|
await _safe_edit(placeholder, "Сервис временно недоступен, попробуй позже")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue