Контекст
В сущности Team заложена поддержка тегов: поле tags в Zod-схемах создания/обновления команды, отдельная схема SyncTagsBody и HTTP-метод TeamHttp.syncTags (PUT /teams/{slug}/tags). На UI функционал не реализован — остались заглушки (//todo tags, tags: [''] при создании команды). Это создаёт рассинхрон с API-контрактами, лишние типы и риск отправки некорректных данных на бэкенд.
Задача — полностью убрать tags из фронтенд-слоя команд и согласовать изменения с бэкендом (если эндпоинт/поле ещё существуют).
Важно: не трогать несвязанные вхождения tags (Storybook tags: ['autodocs'], Docker/metadata tags в CI, Grafana dashboard tags).
Технические требования
- Локация логики:
src/entities/team/model/schemas.ts
src/entities/team/model/types.ts
src/entities/team/api/http.ts
src/features/teams/create/model/useCreateTeamForm.ts
src/features/teams/create/model/schemas.ts (наследует STeam.CreateTeamBody — проверить, что схема остаётся валидной)
src/pages/team/model/settings.ts (наследует STeam.UpdateTeamBody)
src/pages/team/ui/settings/SettingsPage.tsx
- Инструменты: TypeScript, Zod v4 (
zod/v4), React Hook Form, TanStack Query, внутренний HTTP-клиент api() с contract validation.
- Логика работы:
- Удалить поле
tags из CreateTeamBody в schemas.ts (включая superRefine на дубликаты тегов).
- Удалить экспорт
SyncTagsBody и связанную валидацию (min/max 15, проверка дубликатов).
- Удалить тип
SyncTagsBody из types.ts.
- Удалить метод
TeamHttp.syncTags(slug, data) и вызов PUT /teams/${slug}/tags из http.ts.
- В
useCreateTeamForm.ts убрать tags: [''] из тела TTeam.CreateTeamBody при createTeam.mutate.
- В
SettingsPage.tsx удалить комментарии //todo tags в defaultValues и reset.
- Прогнать поиск по репозиторию:
tags, SyncTags, syncTags, /teams/.*/tags — убедиться, что в домене team не осталось ссылок.
Цель и критерии приемки (Definition of Done)
Важные указания
- Производительность: влияние нейтральное; уменьшается объём валидации Zod и размер тел запросов.
- Ошибки: после удаления не должно оставаться обращений к
TTeam.SyncTagsBody / STeam.SyncTagsBody / TeamHttp.syncTags — иначе ошибки компиляции; при несогласованном бэкенде возможны 400/422 на устаревшие поля.
- Безопасность: исключить случайную отправку пустых/фиктивных тегов (
tags: ['']) при создании команды; не затрагивать RBAC и роли участников (TeamRole, MemberStatus).
Контекст
В сущности Team заложена поддержка тегов: поле
tagsв Zod-схемах создания/обновления команды, отдельная схемаSyncTagsBodyи HTTP-методTeamHttp.syncTags(PUT /teams/{slug}/tags). На UI функционал не реализован — остались заглушки (//todo tags,tags: ['']при создании команды). Это создаёт рассинхрон с API-контрактами, лишние типы и риск отправки некорректных данных на бэкенд.Задача — полностью убрать
tagsиз фронтенд-слоя команд и согласовать изменения с бэкендом (если эндпоинт/поле ещё существуют).Важно: не трогать несвязанные вхождения
tags(Storybooktags: ['autodocs'], Docker/metadatatagsв CI, Grafana dashboard tags).Технические требования
src/entities/team/model/schemas.tssrc/entities/team/model/types.tssrc/entities/team/api/http.tssrc/features/teams/create/model/useCreateTeamForm.tssrc/features/teams/create/model/schemas.ts(наследуетSTeam.CreateTeamBody— проверить, что схема остаётся валидной)src/pages/team/model/settings.ts(наследуетSTeam.UpdateTeamBody)src/pages/team/ui/settings/SettingsPage.tsxzod/v4), React Hook Form, TanStack Query, внутренний HTTP-клиентapi()с contract validation.tagsизCreateTeamBodyвschemas.ts(включаяsuperRefineна дубликаты тегов).SyncTagsBodyи связанную валидацию (min/max 15, проверка дубликатов).SyncTagsBodyизtypes.ts.TeamHttp.syncTags(slug, data)и вызовPUT /teams/${slug}/tagsизhttp.ts.useCreateTeamForm.tsубратьtags: ['']из телаTTeam.CreateTeamBodyприcreateTeam.mutate.SettingsPage.tsxудалить комментарии//todo tagsвdefaultValuesиreset.tags,SyncTags,syncTags,/teams/.*/tags— убедиться, что в доменеteamне осталось ссылок.Цель и критерии приемки (Definition of Done)
src/entities/teamудаленыtagsвCreateTeamBody, схемаSyncTagsBody, типSyncTagsBody, методsyncTagsвTeamHttp.useCreateTeamForm) отправляет толькоname,description, опциональноslug; настройки команды (TeamSettingsFormSchema,SaveBar) работают без поляtags; TypeScript-сборка и линтер проходят без ошибок./team/settings) нет.PUT /teams/{slug}/tags;Важные указания
TTeam.SyncTagsBody/STeam.SyncTagsBody/TeamHttp.syncTags— иначе ошибки компиляции; при несогласованном бэкенде возможны400/422на устаревшие поля.tags: ['']) при создании команды; не затрагивать RBAC и роли участников (TeamRole,MemberStatus).