Агент предлагает добавить фильтр по метке: вывести переключатель и скрывать неподходящие строки. Для небольшого локального списка это может быть допустимо. Для серверной страницы, где показаны только первые двадцать записей, такой план изменит смысл результата: подходящие задачи на следующих страницах не попадут в выдачу.
Возьмём учебный список задач проекта с серверной пагинацией, сортировкой и проверкой доступа. Нужно добавить выбор одной метки. Здесь план полезен не своей длиной: он позволяет обсудить порядок выборки до того, как появится готовый интерфейс.
Попросите показать решения, а не повторить задачу
«Добавить фильтр, обновить шаблон, написать тесты» — перечень намерений. По нему нельзя понять, где применяется условие, что происходит с номером страницы и как сохраняется ограничение проекта.
Полезный план отвечает на конкретные вопросы. Фильтрация выполняется до пагинации или после неё? Что увидит пользователь, если выберет метку на пятой странице? Сохраняется ли сортировка? Как обрабатывается неизвестная метка? Может ли метка из чужого проекта изменить область поиска?
До изменения кода предложи план фильтра по одной метке.
Сначала найди текущий запрос, проверку доступа, пагинацию и шаблон.
В плане покажи:
— где применяется фильтр относительно пагинации;
— какие условия существующего запроса сохраняются;
— поведение при смене фильтра и неизвестной метке;
— какие решения требуют моего выбора;
— проверки, которые отличат правильный результат от фильтра
только по уже загруженной странице.
Не создавай новые слои только ради соответствия шаблону плана.
Согласуйте поведение на границах
Для упражнения выберем: фильтр применяется к доступным пользователю задачам до пагинации; смена метки возвращает первую страницу; выбранная сортировка сохраняется. Неизвестная или недоступная метка обрабатывается одинаково, чтобы интерфейс не выдавал её принадлежность чужому проекту. Конкретный ответ — ошибка или пустой результат — согласуется с принятым контрактом приложения.
Эти решения принадлежат задаче, а не являются универсальной настройкой любого фильтра. В другом продукте можно сохранять текущую страницу, но тогда надо определить поведение, если такого номера больше нет.
План должен показать сохранение существующей границы доступа. Если агент предлагает начать запрос заново от всех задач ради удобного join, попросите объяснить, как туда попадут ограничения пользователя и проекта. Имена правильных методов ещё не гарантируют, что они будут вызваны в нужной ветке.
Разделите изменение по проверяемым результатам
Здесь разумно сначала изменить запрос и проверить выборку, затем подключить параметр интерфейса и пройти переходы страниц. Но это предложение о порядке, а не обязательство делать отдельную паузу после каждого файла. Если оба шага понятны и разрешены, агент может выполнить их за один проход.
Отдельная точка решения нужна при новой неопределённости: существующая модель меток не ограничена проектом; сортировка допускает дубли строк после соединения; фильтр требует изменить публичный контракт. Небольшую правку согласованного шаблона не нужно превращать в повторное согласование архитектуры.
Оценка объёма помогает заметить лишний механизм, но число строк не измеряет риск. Одна строка, снимающая условие доступа, опаснее сотни строк разметки. Вместо универсального потолка diff договоритесь о законченных изменениях и обозначении любого выхода за выбранную границу.
Проверки плана должны ловить его возможную ошибку
Создайте набор, где подходящие задачи находятся за пределами первой страницы исходной выдачи. Тогда клиентское скрытие уже загруженных строк даст другой результат, чем серверная фильтрация. Для проверки счётчика страниц нужны и подходящие, и неподходящие записи.
Ещё один сценарий: пользователь находится на поздней странице и меняет фильтр на редкую метку. Если запрос сохраняет прежний номер, он может показать пустоту при наличии результатов. Наконец, отдельно проверьте, что выбор метки не открывает задачи другого проекта.
Проверить после реализации:
1. Подходящая задача с поздней исходной страницы появляется в фильтре.
2. Количество страниц считается по отфильтрованной выборке.
3. Смена фильтра сбрасывает page, но сохраняет согласованную сортировку.
4. Чужие задачи не появляются при любом значении параметра.
5. Снятие фильтра возвращает обычную доступную выборку.
Сверьте итог с решениями плана
После реализации не принимайте результат только по совпадению списка файлов. Прочитайте сам запрос, посмотрите параметры ссылок пагинации и сравните выполненные проверки с намеченными сценариями. Если часть проверки недоступна в окружении агента, она остаётся невыполненной до ручного прохода или другого подтверждения.
План может измениться после чтения кода. Это нормально, если изменение объяснено: какое предположение не подтвердилось, что предлагается теперь, какие последствия у выбора. В конце сохраните принятые решения, а не всю переписку. При следующем изменении списка важнее знать, почему фильтр применяется до пагинации, чем помнить количество этапов первого плана.