Skip to content

feature(scan-draft): улучшить подтверждение OCR и обогащение карточки книги - #5

Open
gman-dev-nov wants to merge 3 commits into
feature/lookup-yandex-isbn-hintfrom
feature/scan-draft-confirm-and-enrich
Open

feature(scan-draft): улучшить подтверждение OCR и обогащение карточки книги#5
gman-dev-nov wants to merge 3 commits into
feature/lookup-yandex-isbn-hintfrom
feature/scan-draft-confirm-and-enrich

Conversation

@gman-dev-nov

Copy link
Copy Markdown
Owner

Что изменилось

Сценарий добавления книги после OCR стал более управляемым и разделен на явные шаги.

Изменения включают:

  1. отдельный flow подтверждения OCR-черновика;
  2. возможность сразу добавить книгу по уже подтвержденным данным;
  3. отдельную кнопку запуска внешнего поиска метаданных;
  4. lookup из preview книги перед сохранением;
  5. сохранение ручных правок пользователя поверх данных, пришедших от провайдера.

Зачем это нужно

Раньше после OCR пользователь быстрее попадал в смешанный сценарий, где подтверждение, внешний lookup и добавление книги были связаны слишком тесно. Это создавало несколько проблем:

  • лишние внешние запросы, даже когда OCR уже дал достаточно данных;
  • менее очевидное поведение кнопок;
  • риск потерять ручные исправления после повторного lookup;
  • менее прозрачный сценарий работы с титульным листом и OCR-поправками.

Новый flow делает добавление книги предсказуемым:

  • сначала пользователь проверяет базовые поля;
  • потом либо сразу сохраняет книгу,
  • либо осознанно просит обогатить карточку внешними метаданными.

Что получает пользователь

  • более понятный экран проверки OCR-данных;
  • быстрый сценарий «все верно, просто добавь»;
  • отдельный сценарий «найди и дополни информацию»;
  • ручные исправления ISBN, автора и названия не теряются после lookup;
  • меньше неожиданностей перед финальным сохранением книги.

Технически

  • обновлены inline-клавиатуры scan draft и pending preview;
  • разделены действия confirm и lookup;
  • добавлен повторный lookup из preview;
  • данные провайдера теперь merge-ятся с уже подтвержденными вручную полями;
  • добавлены и обновлены e2e-тесты на новые пользовательские сценарии;
  • в 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

Добавил полноценный экран проверки OCR-черновика после сканирования обложки и титульного листа. Пользователь может уточнить ISBN, автора и название до сохранения, а бот показывает промежуточную карточку книги вместо немедленного перехода к сохранению или поиску.

Это уменьшает число ошибок после OCR, делает сценарий добавления книги управляемым и готовит данные к дальнейшему обогащению метаданными только после того, как пользователь подтвердил базовые поля.
…авок

Разделил подтверждение OCR-черновика на два осознанных действия: мгновенное добавление книги по подтвержденным данным и отдельный поиск внешних метаданных. Это ускоряет быстрый сценарий добавления и убирает лишние внешние запросы, когда OCR уже дал достаточно точный результат.

Также добавил повторный lookup из preview перед сохранением книги. Данные провайдера теперь только дополняют карточку и не перетирают вручную подтвержденные ISBN, автора и название, поэтому пользователь не теряет свои исправления после OCR.
Добавил в MEMORY.md рабочие договоренности по разнесению больших наборов изменений на тематические ветки, атомарности коммитов и формату commit message. Это нужно, чтобы новые правила не остались только в обсуждении и использовались как постоянная часть проектной памяти.

Отдельно зафиксировал ожидание к body коммита и PR: человеческое объяснение того, что изменилось, какую проблему это решает и зачем выбран именно такой способ реализации.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +559 to +560
user_data[PENDING_SCAN_DRAFT_KEY] = draft
user_data.pop(SCAN_DRAFT_EDITING_KEY, None)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant