feature(scan-draft): улучшить подтверждение OCR и обогащение карточки книги - #5
Conversation
Добавил полноценный экран проверки OCR-черновика после сканирования обложки и титульного листа. Пользователь может уточнить ISBN, автора и название до сохранения, а бот показывает промежуточную карточку книги вместо немедленного перехода к сохранению или поиску. Это уменьшает число ошибок после OCR, делает сценарий добавления книги управляемым и готовит данные к дальнейшему обогащению метаданными только после того, как пользователь подтвердил базовые поля.
…авок Разделил подтверждение OCR-черновика на два осознанных действия: мгновенное добавление книги по подтвержденным данным и отдельный поиск внешних метаданных. Это ускоряет быстрый сценарий добавления и убирает лишние внешние запросы, когда OCR уже дал достаточно точный результат. Также добавил повторный lookup из preview перед сохранением книги. Данные провайдера теперь только дополняют карточку и не перетирают вручную подтвержденные ISBN, автора и название, поэтому пользователь не теряет свои исправления после OCR.
Добавил в MEMORY.md рабочие договоренности по разнесению больших наборов изменений на тематические ветки, атомарности коммитов и формату commit message. Это нужно, чтобы новые правила не остались только в обсуждении и использовались как постоянная часть проектной памяти. Отдельно зафиксировал ожидание к body коммита и PR: человеческое объяснение того, что изменилось, какую проблему это решает и зачем выбран именно такой способ реализации.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2deeda86e7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ) | ||
| return | ||
|
|
||
| await _add_book_and_show_result(query, book_data) |
There was a problem hiding this comment.
Block confirm when scan draft has no extracted fields
In handle_scan_draft_callback, the confirm branch proceeds to _add_book_and_show_result without validating that isbn, author, or title is present. After an unreadable photo (where all fields stay empty), tapping “✅ Всё верно” will insert a blank book row because add_book accepts empty strings, which pollutes the catalog and degrades duplicate detection/search quality. Add a guard before saving that requires at least one non-empty identifying field.
Useful? React with 👍 / 👎.
| user_data[PENDING_SCAN_DRAFT_KEY] = draft | ||
| user_data.pop(SCAN_DRAFT_EDITING_KEY, None) |
There was a problem hiding this comment.
Reset pending preview edit mode on new photo
When a user is editing a pending preview field and sends a new photo, handle_photo only clears SCAN_DRAFT_EDITING_KEY but leaves PENDING_BOOK_EDITING_KEY intact. Because _handle_non_editing_text later prioritizes pending preview edits, subsequent text can be incorrectly consumed as edits to the stale preview instead of belonging to the new scan flow/search, causing confusing behavior and accidental mutation of old pending data. Clear pending preview edit state when starting a new photo draft.
Useful? React with 👍 / 👎.
Что изменилось
Сценарий добавления книги после OCR стал более управляемым и разделен на явные шаги.
Изменения включают:
Зачем это нужно
Раньше после OCR пользователь быстрее попадал в смешанный сценарий, где подтверждение, внешний lookup и добавление книги были связаны слишком тесно. Это создавало несколько проблем:
Новый flow делает добавление книги предсказуемым:
Что получает пользователь
Технически
confirmиlookup;MEMORY.mdзафиксированы правила разнесения веток и формата commit message.Состав коммитов
feature(scan-draft): добавить flow подтверждения OCR-черновикаfeature(add-book): добавить lookup из preview с сохранением ручных правокrefactor(memory): зафиксировать правила веток и коммитовПроверка
venv/bin/python -m pytest tests/test_home_library_providers.py tests/test_home_library_e2e.py -q