Files
specs/openspec/changes/archive/2026-10-14-stock-screener/tasks.md
T
ksv741 6efb989ed9
Conventional commits / commits (pull_request) Successful in 13s
Specs security / security (pull_request) Successful in 8s
Specs verify / verify (pull_request) Successful in 12s
spec: archive three completed changes (main#33, frontend#63, screener)
2026-10-14 21:40:26 +03:00

9.0 KiB
Raw Blame History

Tasks

1. Каталог и отбор

  • 1.1 [backend] Получать полный список акций T-Invest для каждого нового запуска скринера, сохраняя действующие границы доступа и обработки недоступности источника.

    • Covers: stock-screener — Скринер ищет среди доступных к покупке акций; stock-screener — Отсутствие совпадений отличается от недоступности поиска.
    • Source: system-analysis/analysis.md — Contracts, Error and Recovery Semantics; design.md — Decisions/backend.
    • Verification: управляемый ответ Shares с подходящей акцией за пределами первых 30 текстовых совпадений и отказом источника; backend developer tests и repo-local verify.
    • Depends on: none
  • 1.2 [backend] Применять обязательные признаки доступности и все необязательные условия к полному списку, выбирать только соответствующего условиям представителя каждого выпуска и упорядочивать результаты до разделения на страницы.

    • Covers: stock-screener — Скринер ищет среди доступных к покупке акций; stock-screener — Условия скринера применяются совместно; stock-screener — Результат представляет отдельные выпуски.
    • Source: specs/stock-screener/spec.md — соответствующие Requirements; system-analysis/analysis.md — Data and State Semantics; design.md — Decisions/backend.
    • Verification: backend developer tests проверяют пересечение условий, неизвестное значение, включительную границу лота, одинаковый и разный ISIN, отсутствие ISIN и ссылку на точный выбранный UID.
    • Depends on: 1.1

2. Зафиксированные страницы и публичный контракт

  • 2.1 [backend] Предоставить новый поиск и чтение страниц одного ограниченного по времени результата с привязкой к пользователю и поколению подключения, отличая пустой успешный поиск от ошибки и не пересчитывая старые страницы.

    • Covers: stock-screener — Страницы относятся к одному результату поиска; stock-screener — Отсутствие совпадений отличается от недоступности поиска; stock-screener — Результат представляет отдельные выпуски.
    • Source: system-analysis/contracts/stock-screener.openapi.yaml; system-analysis/analysis.md — Error and Recovery Semantics, Security and NFR at System Boundaries; design.md — Decisions/backend, Data / Storage Changes.
    • Verification: backend HTTP и access checks: до 30 элементов, одинаковые asOf и порядок на следующих страницах, новый POST создаёт новый результат, чужой/истёкший searchId и смена подключения не выдают данные.
    • Depends on: 1.2
  • 2.2 [backend] Опубликовать сгенерированный OpenAPI для операций скринера и подтвердить его семантическую совместимость с утверждённым target contract, сохранив старый текстовый поиск.

    • Covers: stock-screener — Условия скринера применяются совместно; stock-screener — Страницы относятся к одному результату поиска; stock-screener — Отсутствие совпадений отличается от недоступности поиска.
    • Source: system-analysis/contracts/stock-screener.openapi.yaml; design.md — Contract Implementation, Migration / Rollout / Rollback.
    • Verification: npm run openapi:generate, npm run test:openapi-contract, сравнение двух маршрутов, запросов, ответов и ошибок с target contract; backend repo-local verify и regression старого GET.
    • Depends on: 2.1

3. Пользовательский поиск

  • 3.1 [frontend] Подключить экран акций к опубликованному контракту: сохранять черновые условия отдельно от применённых, отправлять новый поиск только по кнопке и получать страницы по searchId без подмены результата поздним ответом.

    • Covers: stock-screener — Условия скринера применяются совместно; stock-screener — Страницы относятся к одному результату поиска.
    • Source: design.md — Decisions/frontend, Contract Implementation; system-analysis/contracts/stock-screener.openapi.yaml.
    • Verification: frontend developer checks для повторного нажатия «Найти», чернового изменения полей, смены страницы и позднего ответа; генерация типов от предоставленного backend OpenAPI и frontend repo-local verify.
    • Depends on: 2.2
  • 3.2 [frontend] Показать фильтры, каталожные карточки выбранных выпусков, время списка, страницы, подтверждённую пустоту и восстановление после недоступности поиска без обещания немедленной покупки.

    • Covers: stock-screener — Скринер ищет среди доступных к покупке акций; stock-screener — Результат представляет отдельные выпуски; stock-screener — Страницы относятся к одному результату поиска; stock-screener — Отсутствие совпадений отличается от недоступности поиска.
    • Source: design.md — UI/UX Package, Decisions/frontend; qa-analysis.md — Manual / Exploratory Scope.
    • Verification: на широкой и узкой ширине, в том числе с клавиатуры, проверить запуск пустой формой, применение всех фильтров, точную UID-ссылку, состояния loading/empty/error и переход «Далее»; frontend repo-local verify.
    • Depends on: 3.1

4. Итоговая документация

  • 4.1 [docs] Обновить существующее описание акций, интеграции T-Invest и HTTP API до реализованного поведения скринера, не копируя целевой OpenAPI и change-диаграмму в AS-IS.

    • Covers: stock-screener — Скринер ищет среди доступных к покупке акций; stock-screener — Страницы относятся к одному результату поиска; stock-screener — Отсутствие совпадений отличается от недоступности поиска.
    • Source: docs-impact.md — entries docs/domains/instruments/stocks.md, docs/integrations/tbank.md, docs/architecture/http-api.md.
    • Verification: сверить опубликованные страницы с реализованной формой, ответами и backend-generated OpenAPI; docs repo-local Markdown/link checks и git diff --check.
    • Depends on: 2.2, 3.2
  • 4.2 [docs] Обновить обзор продукта, существующий навигационный пункт акций и глоссарий с точным определением скринера без технических деталей хранения результата.

    • Covers: stock-screener — Скринер ищет среди доступных к покупке акций.
    • Source: docs-impact.md — entries docs/overview.md, docs/README.md, docs/glossary.md; Glossary / Navigation Impact.
    • Verification: проверить ссылки, согласованность термина с разделом акций, docs repo-local Markdown/link checks и git diff --check.
    • Depends on: 3.2