graph TD
A[Backlog] -->|Груминг и Анализ| B(Ready for Dev)
B -->|Разработчик берет в работу| C(In Progress)
C -->|Создан Pull Request| D(Code Review)
D -->|Замечания ревьюера| C
D -->|Аппрув от 2+ коллег| E(Ready for QA)
E -->|Тестирование функционала| F(In QA)
F -->|Найден баг| C
F -->|Успешные тесты| G(Ready for Release)
G -->|Деплой на Прод| H[Done / Released]
style A fill:#f9f,stroke:#333,stroke-width:2px
style B fill:#bbf,stroke:#333,stroke-width:2px
style C fill:#f96,stroke:#333,stroke-width:2px
style D fill:#ff3,stroke:#333,stroke-width:2px
style H fill:#9f9,stroke:#333,stroke-width:2px
Регламент работы с техническими задачами
Стандарты декомпозиции, оформления, оценки и документирования тасков
1. Классификация и типы задач
Для прозрачного планирования и автоматизации метрик (например, Velocity1) каждая задача в трекере должна иметь строго определенный тип. Основные категории:
- Frontend (Фронтенд): Задачи на разработку пользовательского интерфейса (веб или мобильные приложения). Включают верстку, реализацию клиентской логики, интеграцию со сторонними API и управление локальным стейтом.
- Backend (Бэкенд): Проектирование и разработка серверной логики, бизнес-моделей, создание REST/SOAP/gRPC/GraphQL эндпоинтов, оптимизация производительности и интеграция с внешними микросервисами.
- Migrations (Миграции баз данных): Выделенный тип задач для изменения структуры БД (DDL/DML скрипты). Требует обязательного ревью со стороны DBA (Database Administrator) и написания скриптов отката (rollback).
- Refactoring (Рефакторинг): Изменение внутренней структуры кода для улучшения читаемости и поддерживаемости без изменения внешнего поведения системы.
- Bug / Hotfix (Ошибки): Исправление дефектов, обнаруженных в процессе тестирования (Bug) или на продуктовой среде (Hotfix).
- DevOps / Infrastructure: Настройка CI/CD пайплайнов, обновление конфигураций инфраструктуры (Kubernetes2, Terraform3) или мониторинга.
2. Жизненный цикл задачи (Workflow)
Ниже представлена схема движения задачи от этапа планирования до успешного релиза на прод-среде. Разработчик обязан вовремя переводить статусы в таск-трекере.
3. Иерархия управления: Эпики, Фичи и Задачи
Для долгосрочного и краткосрочного планирования в компании используется четырехуровневая структура требований:
\[\text{Инициатива} \longrightarrow \text{Эпик (Бизнес / Архитектура)} \longrightarrow \text{Фича} \longrightarrow \text{Техническая задача}\]
- Инициатива (Strategic Initiative): Глобальная цель компании на уровне бизнеса (например, «Перевести 80% холодильников на автоматический учет»).
- Эпик (Epic): Крупный контейнер работ, рассчитанный на один или несколько кварталов.
- Фича (Feature): Конкретная осязаемая функция продукта, решающая задачу пользователя. То, что попадает в описание релиза (например, «Поиск товара на складе по сигналу смарт-метки»).
- Техническая задача (Task / Sub-task): Атомарное действие разработчика в коде (например, «Разработать UI-экран сканирования на Flutter»).
4. Классификация Эпиков: Бизнес vs Архитектура
Чтобы избежать путаницы при наполнении бэклога, все Эпики в таск-трекере строго разделяются на два типа по их первоисточнику и конечной цели.
4.1. Бизнес-эпики (Business Epics)
Создаются продуктовой командой (Product Owner / Product Manager) на основе рыночных потребностей и пользовательских болей.
- Цель: Принести прямую, измеримую ценность пользователю или бизнесу (деньги, метрики, удержание).
- Язык описания: Формулируются на языке пользователя, без упоминания конкретных баз данных, библиотек или языков программирования.
- Пример:
[BPDS-CORE] Интеграция Продуктовой Системы и Смарт-Меток. Цель бизнеса — снизить пересортицу товаров в холодильнике. Для разработчиков этот эпик станет техническим ориентиром, но его верхнеуровневый смысл — сугубо бизнесовый.
4.2. Архитектурные / Технические эпики (Enabler / Architectural Epics)
Создаются технической командой (CTO / System Architect / Tech Lead) на основе технологических потребностей платформы.
- Цель: Обеспечить фундамент (платформу) для будущих бизнес-фич, устранить технический долг, повысить безопасность или масштабируемость системы. Технический эпик никогда не делается «ради искусства», он всегда подпирает бизнес-инициативы.
- Язык описания: Формулируются на инженерном языке с указанием архитектурных паттернов, фреймворков и инфраструктурных решений.
- Пример:
[ARCH] Переход на микросервисную шину данных RabbitMQили[PERF] Оптимизация индексов и партиционирование таблиц логирования. Бизнес не увидит эти изменения напрямую в интерфейсе, но они необходимы, чтобы приложение не падало при одновременной работе тысяч кладовщиков со смарт-метками.
5. Правила оформления и декомпозиции задач
Эффективность разработки напрямую зависит от атомарности конечных задач (Tasks). Мы придерживаемся следующих правил:
Принцип «Один метод — одна задача»
Запрещено создавать «комбайны» — задачи, описывающие создание целого модуля. Если разработка функции требует изменения бэкенда и фронтенда, она декомпозируется минимум на два отдельных таска.
Каждая задача должна быть независимой, проверяемой и изолированной. Если код метода можно покрыть одним набором юнит-тестов, это идеальный размер для одной задачи.
6. Разбор ключевых атрибутов задачи
Для демонстрации стандартов разберем структуру типовой задачи на примере:
Общая информация
- Эпик:
[BPDS-CORE] Интеграция Периодической Системы и Смарт-Меток- Что это: Верхнеуровневый проект (в данном случае — Бизнес-эпик), объединяющий все связанные задачи. Позволяет отслеживать общий прогресс крупной фичи.
- Домен:
FLUTTER_UI(Клиентский интерфейс мобильного приложения)- Что это: Технологический стек или архитектурный слой, к которому относится код. Помогает распределять задачи по профильным командам.
- ID Задачи:
FLUTTER-204- Что это: Уникальный идентификатор в таск-трекере (Jira/YouTrack) для связи коммитов, веток в Git (
feature/FLUTTER-204) и логов.
- Что это: Уникальный идентификатор в таск-трекере (Jira/YouTrack) для связи коммитов, веток в Git (
- Исполнитель: Назначается
- Что это: Текущий ответственный за выполнение задачи. Статус «Назначается» означает, что таск находится в бэклоге спринта и ждет разбора разработчиком.
- Текущий Статус: Ready for Dev
- Что это: Этап жизненного цикла задачи. Данный статус указывает, что аналитика завершена, архитектура утверждена и код можно брать в работу.
- Влияние на релиз: 🟡 Среднее (Зависит от готовности бэкенд-эндпоинта в задаче
INVENTORY-412)- Что это: Оценка критичности задачи для выпуска версии и описание блокирующих зависимостей (блокеров). Показывает, что UI нельзя протестировать без готового API.
7. Правила именования Git-веток на основе ID задачи
Для автоматической связи системы контроля версий с таск-трекером вводится строгий регламент именования Git-ветвей. Название ветки должно начинаться с типа задачи, за которым следует ID из трекера.
Шаблон именования:
[тип-ветки]/[ID-задачи]-[краткое-описание-на-английском]
Допустимые типы веток:
feature/— для новых фич и задач (например:feature/flutter-204-scancode-ui).bugfix/— для исправления стандартных багов (например:bugfix/flutter-210-fix-button-overflow).hotfix/— для срочных правок на продакшене.refactor/— для задач по рефакторингу кода.
8. Методология оценки задач в Story Points
Мы оцениваем задачи не в часах, а в абстрактных единицах — Story Points (SP), которые отражают совокупность сложности, объема работы и рисков (неопределенности).
Шкала оценки (Модифицированные числа Фибоначчи):
- 1 SP: Минорное изменение. Правка текста, изменение цвета кнопки, добавление лога. Риски нулевые.
- 2 SP: Простая изолированная задача. Создание простого UI-компонента без бизнес-логики, написание базового Unit-теста.
- 3 SP: Стандартная задача среднего уровня. Создание метода контроллера, интеграция одного эндпоинта, создание формы валидации.
- 5 SP: Сложная задача с зависимостями. Требует изменения нескольких модулей, алгоритмической проработки или интеграции с внешним сервисом.
- 8 SP: Очень крупная или неопределенная задача. Внимание: Задача от 8 SP и выше обязана быть декомпозирована на предспринтовом планировании (Grooming).
9. Регламент проведения миграций баз данных
Любое изменение схемы данных сопряжено с риском нарушения доступности сервиса (Downtime). Процесс миграции строго регламентирован:
- Обратная совместимость (Backward Compatibility): Запрещено удалять или переименовывать колонки, которые все еще используются текущей версией бэкенда. Применяется стратегия Expand and Contract.
- Наличие Rollback-скрипта: Каждая миграция (
Up) обязана содержать зеркальный скрипт отката (Down). - Изоляция транзакций: DDL-операции должны выполняться в транзакциях там, где это поддерживает СУБД.
- Ревью со стороны DBA/Tech Lead: Задачи с типом
Migrationsпроходят отдельное код-ревью.
10. Стандарты описания внутренних блоков задачи
Каждое техническое описание внутри таска должно содержать три обязательных раздела.
Раздел 1. Техническое задание для Разработчика (Scope of Work)
Scope of Work (SoW) — это детальное описание архитектурного решения, алгоритмов и изменений, которые необходимо внести в кодовую базу. * Что включает в себя: Ссылки на макеты в Figma, схемы данных, форматы запросов/ответов, бизнес-логику и краевые случаи (edge cases).
Раздел 2. Спецификация для QA Automation (Чек-лист автоматизации интерфейса)
QA Automation Spec — инструкции для инженеров автоматизации тестирования, определяющие, какие элементы интерфейса и сценарии должны быть покрыты автотестами (UI/E2E).
- Цель: Обеспечить тестируемость интерфейса еще на этапе написания кода (Testability).
- Что включает в себя:
- Разметка элементов: Обязательное внедрение уникальных локаторов для ключевых UI-компонентов. Для Web-платформ использовать атрибут
data-testid, для Flutter — параметрыKey, для Android/iOS —accessibilityIdentifier. - Критические сценарии (E2E): Список цепочек действий, которые автоматизаторы должны покрыть тестами в первую очередь (например, «Успешная авторизация \(\rightarrow\) Переход в инвентаризацию \(\rightarrow\) Сканирование метки \(\rightarrow\) Проверка изменения статуса на сервере»).
- Интеграционные проверки интерфейса: Проверка корректности обработки UI-слоем ошибок сети (отображение Error-state плашек при HTTP 500) и долгих ответов (отображение скелетонов/лоадеров).
- Разметка элементов: Обязательное внедрение уникальных локаторов для ключевых UI-компонентов. Для Web-платформ использовать атрибут
Раздел 3. Критерии приемки задачи (Definition of Done)
Definition of Done (DoD) — универсальный чек-лист, определяющий стандарты качества компании. Задача не может быть переведена в статус «Готово», если не выполнен хотя бы один пункт из данного списка.
- Цель: Гарантировать стабильность, безопасность и чистоту кода перед релизом.
- Типовой чек-лист DoD:
11. Шаблон оформления Pull Request (PR)
При открытии PR в GitHub/GitLab разработчик обязан полностью заполнить описание по следующему маркдаун-шаблону (данный текст должен быть зашит в файл .github/pull_request_template.md или .gitlab/merge_request_templates/Default.md):
## 📝 Описание изменений
<!-- Кратко опишите, что было сделано и какая техническая проблема решена -->
- Реализован UI-экран ввода смарт-меток на Flutter согласно макетам из таска FLUTTER-204.
- Интегрирован метод валидации префиксов периодической системы на стороне клиента.
- Настроена обработка ошибок при отсутствии Bluetooth-соединения со считывателем.
## 🔗 Связанная задача
- **Task ID:** #FLUTTER-204
## 🛠️ Как тестировать?
<!-- Пошаговая инструкция для проверяющего разработчика или инженера тестирования -->
1. Переключиться на ветку `feature/flutter-204-scancode-ui`.
2. Запустить локальное окружение, перейти в раздел "Инвентаризация".
3. Нажать кнопку "Сканировать" и ввести тестовый ID `BPDS-TEST-99`.
4. Убедиться, что плашка статуса окрашивается в зеленый цвет.
## 🧪 Чек-лист проверки перед ревью
- [ ] Код компилируется локально без ошибок и ворнингов.
- [ ] Написаны новые юнит-тесты, все старые тесты проходят успешно в CI.
- [ ] Добавлены уникальные `key` идентификаторы для кнопок сканирования (требование QA Automation).
- [ ] Проверил верстку UI на экранах с разным разрешением (отсутствует деформация элементов).В системе управления разработкой BPDS задача может находиться строго в одном из следующих типизированных и визуально размеченных статусов:
- Backlog Backlog — Задача заведена, но еще не приоритезирована и не оценена.
- Refinement Refinement (Уточнение) — Аналитики и техлид прописывают архитектурный контекст, Use Cases и связи. Задача заблокирована для взятия в спринт.
- Ready for Dev Ready for Development — Спецификация готова, критерии DoD зафиксированы. Задача открыта для разработчика.
- In Progress In Progress — Разработчик открыл Git-ветку и пишет код.
- Code Review Code Review / MR — Код отправлен в GitLab. Ожидается аппрув от техлида и пиров.
- QA Testing QA Testing — Воркер развернут на стейдже, инженеры автоматизации гонят тесты по чеклисту.
- Ready for Prod Ready for Production — Все тесты пройдены, код вмёржен в
main. Ожидается релизный тег.