[CL-CI] fix(app): React Doctor — убрать 6 bug-errors (closes #452) #453

Closed
andrei wants to merge 1 commit from fix/claude-cl-react-doctor-452 into master
Owner

Закрывает #452.

Что сделано

Убрал 6 bug-errors React Doctor (валили full-scan --fail-on error на push to master):

  • VideoTour.tsxState synced to a prop inside an effect: заменил useEffect-синк currentUrl/isLoaded на React "adjust state during render" паттерн (prevVideoUrl guard). Поведение идентично, эффект убран.
  • AdminErc3643Page.tsx (×3) — Destructure TanStack Query result: деструктурировал statsQuery/identitiesQuery/rulesQuery → data/isLoading/isError/refetch (канонический фикс правила) + обновил все usages.
  • useSocial.ts, useAiChat.ts (×2) — react-doctor-disable-next-line с обоснованием: кастомные хуки намеренно re-expose весь query-объект как public API (...query / возврат целиком), деструктуризация неприменима — задокументированный false-positive.

Зачем

React Doctor / App был красный на master (e7b600e3, status=2). На push gate гоняет full-scan с --fail-on error → любой bug-error валит master.

План тестирования

  • npx react-doctor@latest --lint --offline -y --fail-on error . → 0 errors (было 6; 485 warnings остаются, не блокируют).
  • npx tsc --noEmit → чисто.
  • npx eslint по 4 файлам → 0.
  • npx vitest run (app) → 1591/1591 passed.
  • pre-push: full tsc + vite build зелёные.

Где могу ошибаться

  • VideoTour: "set state during render" — официальный React-паттерн, guard по prevVideoUrl исключает цикл; визуально проверить смену видео в плейлисте.
  • 2 inline-disable — если в будущем хуки перестанут re-expose query целиком, снять подавление.
Закрывает #452. ## Что сделано Убрал 6 bug-errors React Doctor (валили full-scan `--fail-on error` на push to master): - `VideoTour.tsx` — `State synced to a prop inside an effect`: заменил `useEffect`-синк currentUrl/isLoaded на React "adjust state during render" паттерн (`prevVideoUrl` guard). Поведение идентично, эффект убран. - `AdminErc3643Page.tsx` (×3) — `Destructure TanStack Query result`: деструктурировал statsQuery/identitiesQuery/rulesQuery → data/isLoading/isError/refetch (канонический фикс правила) + обновил все usages. - `useSocial.ts`, `useAiChat.ts` (×2) — `react-doctor-disable-next-line` с обоснованием: кастомные хуки намеренно re-expose весь query-объект как public API (`...query` / возврат целиком), деструктуризация неприменима — задокументированный false-positive. ## Зачем `React Doctor / App` был красный на master (e7b600e3, status=2). На push gate гоняет full-scan с `--fail-on error` → любой bug-error валит master. ## План тестирования - `npx react-doctor@latest --lint --offline -y --fail-on error .` → 0 errors (было 6; 485 warnings остаются, не блокируют). - `npx tsc --noEmit` → чисто. - `npx eslint` по 4 файлам → 0. - `npx vitest run` (app) → 1591/1591 passed. - pre-push: full tsc + vite build зелёные. ## Где могу ошибаться - VideoTour: "set state during render" — официальный React-паттерн, guard по prevVideoUrl исключает цикл; визуально проверить смену видео в плейлисте. - 2 inline-disable — если в будущем хуки перестанут re-expose query целиком, снять подавление.
[CL-CI] fix(app): React Doctor — убрать 6 bug-errors (чиним красный gate на master)
All checks were successful
CI / Contracts (pull_request) Successful in 2m13s
CI / API (pull_request) Successful in 7m27s
CI / App (pull_request) Successful in 6m51s
CI / Telegram Mini App (pull_request) Successful in 2m40s
CI / Secrets Scan (pull_request) Successful in 11s
CI / Python SDK (pull_request) Successful in 28s
CI / Prisma Migrate Gate (pull_request) Successful in 1m54s
React Doctor / React Doctor / App (pull_request) Successful in 3m22s
5b737bb410
React Doctor full-scan на push to master (--fail-on error) валился на 6 bug-errors:
- State synced to a prop inside an effect (VideoTour.tsx) → заменил useEffect-синк
  на React 'adjust state during render' паттерн (prevVideoUrl guard), поведение то же.
- Destructure TanStack Query result x5:
  - AdminErc3643Page.tsx (x3) → деструктурировал stats/identities/rules queries.
  - useSocial.ts / useAiChat.ts (x2) → inline react-doctor-disable с обоснованием
    (кастомные хуки намеренно re-expose весь query-объект как public API).

Full-scan теперь 0 errors. app tests 1591/1591, tsc+eslint чисто.
andrei closed this pull request 2026-06-07 21:26:31 +00:00
All checks were successful
CI / Contracts (pull_request) Successful in 2m13s
CI / API (pull_request) Successful in 7m27s
CI / App (pull_request) Successful in 6m51s
CI / Telegram Mini App (pull_request) Successful in 2m40s
CI / Secrets Scan (pull_request) Successful in 11s
CI / Python SDK (pull_request) Successful in 28s
CI / Prisma Migrate Gate (pull_request) Successful in 1m54s
React Doctor / React Doctor / App (pull_request) Successful in 3m22s

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/europatech!453
No description provided.