ci(design-system): enforce foundation quality gates

This commit is contained in:
Sergey Krylov 2026-06-21 15:40:21 +03:00
parent e6cf852741
commit 339845dd57
4 changed files with 52 additions and 13 deletions

View File

@ -40,3 +40,29 @@ jobs:
- name: Build frontend - name: Build frontend
run: npm run build:frontend run: npm run build:frontend
- name: Setup Playwright browsers
run: npx playwright install --with-deps chromium
- name: Test design system
run: npm run test:design-system
- name: Build design system
run: npm run build:design-system
- name: Build Storybook
run: npm run build:storybook
- name: Test Storybook (browser)
run: npm run test:storybook
- name: Build docs
run: npm run build:docs
- name: Upload Storybook build (if failed)
if: failure()
uses: actions/upload-artifact@v4
with:
name: storybook-static
path: packages/design-system/storybook-static
retention-days: 3

View File

@ -24,6 +24,7 @@ npm workspaces монорепозиторий:
| `apps/backend` | NestJS API (единственная точка доступа к MOEX ISS) | | `apps/backend` | NestJS API (единственная точка доступа к MOEX ISS) |
| `apps/frontend` | React SPA на Vite | | `apps/frontend` | React SPA на Vite |
| `apps/docs` | Сайт документации Docusaurus | | `apps/docs` | Сайт документации Docusaurus |
| `packages/design-system` | Дизайн-система (Storybook, MUI-адаптер, UI-компоненты) |
--- ---
@ -31,6 +32,7 @@ npm workspaces монорепозиторий:
- **Бэкенд:** NestJS, TypeScript, OpenAPI (Swagger) - **Бэкенд:** NestJS, TypeScript, OpenAPI (Swagger)
- **Фронтенд:** React, TypeScript, Vite, TanStack Query, lightweight-charts - **Фронтенд:** React, TypeScript, Vite, TanStack Query, lightweight-charts
- **Дизайн-система:** MUI v7, Storybook 10, lightweight-charts
- **Документация:** Docusaurus - **Документация:** Docusaurus
- **Инфраструктура:** Docker, docker-compose - **Инфраструктура:** Docker, docker-compose
@ -90,6 +92,8 @@ apps/
backend/ — NestJS API, единая точка доступа к MOEX ISS backend/ — NestJS API, единая точка доступа к MOEX ISS
frontend/ — React SPA на Vite frontend/ — React SPA на Vite
docs/ — сайт документации Docusaurus docs/ — сайт документации Docusaurus
packages/
design-system/ — дизайн-система (MUI-адаптер, UI-компоненты, Storybook)
docs/ docs/
features/ — спецификации и планы реализации (SDD) features/ — спецификации и планы реализации (SDD)
epics/ — продуктовые эпики epics/ — продуктовые эпики
@ -105,16 +109,24 @@ docs/
| ---------------------------------- | --------------------------------------------------------------------------- | | ---------------------------------- | --------------------------------------------------------------------------- |
| `npm run dev:backend` | Запуск NestJS в режиме watch на :3000 | | `npm run dev:backend` | Запуск NestJS в режиме watch на :3000 |
| `npm run dev:frontend` | Vite dev-сервер на :5173, проксирует `/api` → :3000 | | `npm run dev:frontend` | Vite dev-сервер на :5173, проксирует `/api` → :3000 |
| `npm run dev:docs` | Docusaurus dev-сервер | | `npm run dev:docs` | Docusaurus dev-сервер (опубликованная документация) |
| `npm run build:backend` | `nest build` | | `npm run build:backend` | `nest build` |
| `npm run build:frontend` | `tsc -b && vite build` (в две фазы) | | `npm run build:frontend` | `tsc -b && vite build` (в две фазы) |
| `npm run build:docs` | `docusaurus build` | | `npm run build:docs` | `docusaurus build` |
| `npm run build:design-system` | Сборка дизайн-системы (`tsc`) |
| `npm run build:storybook` | Статическая сборка Storybook |
| `npm run test:backend` | `vitest run` (SWC, не ts-jest) | | `npm run test:backend` | `vitest run` (SWC, не ts-jest) |
| `npm run test:frontend` | Frontend Vitest suite | | `npm run test:frontend` | Frontend Vitest suite |
| `npm run lint` | ESLint для backend и frontend | | `npm run test:design-system` | Unit-тесты дизайн-системы (Vitest) |
| `npm run test:storybook` | Браузерные тесты Storybook (Vitest browser mode + Playwright) |
| `npm run storybook` | Storybook dev-сервер на :6006 (инженерный workbench, не docs) |
| `npm run lint` | ESLint для backend, frontend и design-system |
| `npm run lint:design-system` | ESLint для дизайн-системы |
| `npm run format` | Prettier для всех `*.{ts,tsx}` | | `npm run format` | Prettier для всех `*.{ts,tsx}` |
| `npm run codegen -w apps/frontend` | `openapi-typescript` из запущенного локального Swagger → `src/api/types.ts` | | `npm run codegen -w apps/frontend` | `openapi-typescript` из запущенного локального Swagger → `src/api/types.ts` |
Docusaurus (`apps/docs`) — опубликованная документация для пользователей. Storybook (`packages/design-system`) — инженерный workbench для разработки компонентов.
Интеграционные тесты с MOEX: `npm run test:integration -w apps/backend`. Интеграционные тесты с MOEX: `npm run test:integration -w apps/backend`.
Один backend-тест: `npm exec -w apps/backend -- vitest run src/path/to/test.spec.ts` Один backend-тест: `npm exec -w apps/backend -- vitest run src/path/to/test.spec.ts`

View File

@ -56,13 +56,13 @@
- [ ] Подключить workspace package и Inter во frontend shell; удалить локальную MUI theme. - [ ] Подключить workspace package и Inter во frontend shell; удалить локальную MUI theme.
- [ ] Enforce ESLint allowlist для `Box`, `Stack`, `Grid`. - [ ] Enforce ESLint allowlist для `Box`, `Stack`, `Grid`.
- [ ] Подтвердить, что product pages и legacy CSS не мигрированы. - [ ] Подтвердить, что product pages и legacy CSS не мигрированы.
- [ ] Создать Docusaurus-раздел с foundations, catalog, rules и accessibility. - [x] Создать Docusaurus-раздел с foundations, catalog, rules и accessibility.
- [ ] Создать ADR-016 и changelog `0.1.0`. - [x] Создать ADR-016 и changelog `0.1.0`.
- [ ] Обновить sidebar, styling docs и README; собрать docs. - [x] Обновить sidebar, styling docs и README; собрать docs.
## 7. CI и завершение ## 7. CI и завершение
- [ ] Добавить design-system, Storybook, Playwright, visual и docs gates в CI. - [x] Добавить design-system, Storybook, Playwright, visual и docs gates в CI.
- [ ] Запустить полный DoD из Task 12 `plan.md`. - [x] Запустить полный DoD из Task 12 `plan.md`.
- [ ] Запросить code review и устранить подтверждённые scope issues. - [ ] Запросить code review и устранить подтверждённые scope issues.
- [ ] Повторить полный DoD, отметить все tasks и сделать финальный commit. - [ ] Повторить полный DoD, отметить все tasks и сделать финальный commit.

View File

@ -31,6 +31,7 @@
"apps/backend/src/**/*.ts": ["eslint --max-warnings=0"], "apps/backend/src/**/*.ts": ["eslint --max-warnings=0"],
"apps/backend/test/**/*.ts": ["eslint --max-warnings=0"], "apps/backend/test/**/*.ts": ["eslint --max-warnings=0"],
"apps/frontend/src/**/*.{ts,tsx}": ["eslint --max-warnings=0"], "apps/frontend/src/**/*.{ts,tsx}": ["eslint --max-warnings=0"],
"packages/design-system/src/**/*.{ts,tsx}": ["eslint --max-warnings=0"],
"**/*.{ts,tsx}": ["prettier --check"] "**/*.{ts,tsx}": ["prettier --check"]
}, },
"devDependencies": { "devDependencies": {