Add test coverage checklist, report template, and stack matrix for ecommerce project
- Created a test coverage checklist to ensure comprehensive testing of backend and frontend components. - Added a test report template to standardize reporting on test execution results and gaps. - Introduced a test stack matrix to guide the selection of testing tools and frameworks for backend and frontend. - Established a skill for repairing failing tests, including a failure triage checklist and a test repair template. - Documented recommended MCP stack for ecommerce development with FastAPI and React/Next.js. - Developed a detailed README outlining the project structure, agent capabilities, and recommended workflows. - Compiled a comprehensive workflow guide detailing step-by-step commands for project setup, testing, and SEO implementation.
This commit is contained in:
@@ -0,0 +1,364 @@
|
||||
# shop-fullstack
|
||||
|
||||
Набор кастомизаций для GitHub Copilot в VS Code под ecommerce-проекты: FastAPI backend, React или Next.js frontend, storefront, admin panel, back office, PostgreSQL, mobile-first UX и двухшаговая подготовка через .ai/STORE-BRIEF.md перед генерацией кода.
|
||||
|
||||
## Что создано
|
||||
|
||||
В текущем репозитории:
|
||||
- Агент: .github/agents/shop-fullstack-fastapi-react.agent.md
|
||||
- Инструкции: .github/instructions/
|
||||
- Промпты: .github/prompts/
|
||||
- Skills: .github/skills/ecommerce-store-foundation, .github/skills/ecommerce-store-evolution, .github/skills/ecommerce-brief-preparation, .github/skills/ecommerce-build-from-brief, .github/skills/ecommerce-seo-strategy, .github/skills/ecommerce-seo-implementation, .github/skills/ecommerce-seo-review, .github/skills/ecommerce-code-review, .github/skills/ecommerce-test-implementation и .github/skills/ecommerce-test-repair
|
||||
|
||||
## Что умеет агент
|
||||
|
||||
- Создавать ecommerce-сайт с нуля.
|
||||
- Дорабатывать существующий storefront, backend и admin panel.
|
||||
- Работать в monorepo и split repo режиме.
|
||||
- По умолчанию использовать FastAPI, PostgreSQL, React и Next.js.
|
||||
- Сначала собирать нормализованный brief в .ai/STORE-BRIEF.md.
|
||||
- После brief создавать или обновлять AGENTS.md.
|
||||
- Для Python ориентироваться на конфигурацию pyproject и quality-toolchain проекта: mypy или ty, ruff, deptry.
|
||||
- Для React держать код читаемым, предсказуемым и удобным для ручной доработки.
|
||||
- Писать и прогонять автотесты для backend и frontend, а при падениях запускать отдельный fix-loop до зеленого статуса или явных blockers.
|
||||
- Учитывать mobile-first адаптацию, анимации, категории, фильтры, сортировку, корзину, авторизацию, личный кабинет и back office.
|
||||
- Подготавливать prompts для генерации изображений, если готовых ассетов нет.
|
||||
|
||||
## Рекомендуемый workflow
|
||||
|
||||
Основной сценарий теперь такой:
|
||||
|
||||
1. Сначала запустить подготовку brief.
|
||||
2. Агент задает только важные вопросы.
|
||||
3. Агент создает файл .ai/STORE-BRIEF.md.
|
||||
4. После согласования brief запускается сборка сайта по .ai/STORE-BRIEF.md.
|
||||
5. Перед кодом агент создает AGENTS.md, затем реализует backend, storefront и admin panel.
|
||||
|
||||
## Как использовать агента
|
||||
|
||||
### Вариант 1. Через выбор агента
|
||||
|
||||
1. Открой чат Copilot в VS Code.
|
||||
2. Выбери агент shop-fullstack-fastapi-react.
|
||||
3. Передай задачу в свободной форме и попроси сначала подготовить .ai/STORE-BRIEF.md.
|
||||
|
||||
Пример:
|
||||
|
||||
```text
|
||||
Подготовь .ai/STORE-BRIEF.md для интернет-магазина косметики в monorepo. Backend на FastAPI и PostgreSQL, frontend на Next.js. Нужны storefront, admin panel, личный кабинет, фильтры, сортировка, корзина, анимации и адаптация под мобильные устройства. После brief я отдельно запущу сборку.
|
||||
```
|
||||
|
||||
### Вариант 2. Через prompt-файлы
|
||||
|
||||
Доступны готовые сценарии:
|
||||
- /Ecommerce Prepare Brief
|
||||
- /Ecommerce Build From Brief
|
||||
- /Ecommerce SEO Strategy
|
||||
- /Ecommerce SEO Implementation
|
||||
- /Ecommerce SEO Review
|
||||
- /Ecommerce Code Review
|
||||
- /Ecommerce Test Implementation
|
||||
- /Ecommerce Test Repair
|
||||
- /Ecommerce From Zero
|
||||
- /Ecommerce Extend Existing
|
||||
- /Ecommerce Visual Pack
|
||||
|
||||
Когда использовать основные новые сценарии:
|
||||
- Ecommerce Prepare Brief: задает важные вопросы и создает .ai/STORE-BRIEF.md.
|
||||
- Ecommerce Build From Brief: читает .ai/STORE-BRIEF.md, создает AGENTS.md и строит проект.
|
||||
- Ecommerce SEO Strategy: создает .ai/SEO-PLAN.md или проводит SEO-аудит и формирует реализационный план.
|
||||
- Ecommerce SEO Implementation: внедряет .ai/SEO-PLAN.md прямо в код проекта.
|
||||
- Ecommerce SEO Review: проводит повторный SEO-аудит проекта и пишет .ai/SEO-REVIEW.md с приоритетами и планом исправлений.
|
||||
- Ecommerce Code Review: делает жесткий code review всего проекта с учетом pyproject, package.json, версий языка и доступных современных возможностей.
|
||||
- Ecommerce Test Implementation: пишет автотесты для backend и frontend, затем запускает их и пишет .ai/TEST-REPORT.md.
|
||||
- Ecommerce Test Repair: разбирает падения тестов, чинит код или тесты, гоняет suite повторно и пишет .ai/TEST-REPAIR.md.
|
||||
|
||||
Когда использовать:
|
||||
- Ecommerce From Zero: запуск нового магазина с нуля.
|
||||
- Ecommerce Extend Existing: развитие уже существующего проекта.
|
||||
- Ecommerce Visual Pack: подготовка визуального направления и prompts для генерации изображений.
|
||||
|
||||
### Вариант 3. Через skills
|
||||
|
||||
Skills подключаются автоматически по описанию задачи или через slash-команду, если VS Code их показывает.
|
||||
|
||||
- ecommerce-brief-preparation: превращает сырую идею в .ai/STORE-BRIEF.md.
|
||||
- ecommerce-build-from-brief: строит проект по .ai/STORE-BRIEF.md.
|
||||
- ecommerce-seo-strategy: готовит сильную SEO-стратегию, технический SEO-план, схему страниц, schema markup и измерение результата.
|
||||
- ecommerce-seo-implementation: вносит SEO-изменения прямо в кодовую базу по .ai/SEO-PLAN.md.
|
||||
- ecommerce-seo-review: проверяет фактическую SEO-реализацию и пишет .ai/SEO-REVIEW.md с findings и remediation plan.
|
||||
- ecommerce-code-review: делает жесткий обзор качества Python, React, архитектуры, производительности и dependency hygiene с отчетом в .ai/CODE-REVIEW.md.
|
||||
- ecommerce-test-implementation: добавляет backend и frontend автотесты, запускает их и фиксирует результат в .ai/TEST-REPORT.md.
|
||||
- ecommerce-test-repair: чинит падения тестов и повторно прогоняет suite с отчетом в .ai/TEST-REPAIR.md.
|
||||
- ecommerce-store-foundation: старт нового магазина.
|
||||
- ecommerce-store-evolution: развитие существующего магазина.
|
||||
|
||||
## Как агент принимает решения
|
||||
|
||||
Если вводных не хватает, агент должен уточнить:
|
||||
- monorepo или split repos
|
||||
- нужен ли личный кабинет
|
||||
- нужна ли гостевая корзина
|
||||
- где хранить корзину: localStorage, cookie, серверное состояние
|
||||
- нужен ли checkout или достаточно заявки
|
||||
- какие модули обязательны в admin panel
|
||||
- какой визуальный стиль нужен
|
||||
|
||||
Если стиль не задан, агент сначала предлагает несколько направлений. Если нет готовых изображений, агент готовит промпты для внешней генерации.
|
||||
|
||||
## Логика .ai/STORE-BRIEF.md и AGENTS.md
|
||||
|
||||
- .ai/STORE-BRIEF.md создается раньше кода и раньше AGENTS.md.
|
||||
- .ai/STORE-BRIEF.md фиксирует нормализованные требования, ответы на вопросы, допущения, scope storefront, scope admin panel, интеграции, визуал и этапы сборки.
|
||||
- На основе .ai/STORE-BRIEF.md агент создает AGENTS.md.
|
||||
|
||||
- В monorepo агент должен создать один корневой AGENTS.md для frontend и backend.
|
||||
- В split repo агент должен создать отдельный AGENTS.md в frontend repo и backend repo.
|
||||
- В AGENTS.md агент фиксирует архитектуру, структуру репозитория, рабочие правила, контракты, роли, требования к storefront и admin panel, а также правила работы с ассетами.
|
||||
|
||||
## Бэкапы перед серьезными изменениями
|
||||
|
||||
- Перед любым серьезным изменением backend или frontend агент должен создать snapshot в .backup/.
|
||||
- В имени snapshot должна быть дата со временем до секунд, например .backup/20260520-143708-storefront/.
|
||||
- Папка .backup считается append-only: внутри нее можно только создавать новые snapshot, изменять или удалять старые запрещено.
|
||||
- Если сохранять еще нечего, потому что backend или frontend пока не существуют, пустой backup создавать не нужно.
|
||||
|
||||
## Архитектура кода
|
||||
|
||||
- Backend и frontend должны строиться как крупный проект, а не как плоский набор файлов.
|
||||
- На backend код должен быть разложен по своим зонам ответственности: api или routers, models, schemas, services, repositories, db, config или core, integrations, tests.
|
||||
- На frontend код должен быть разложен по своим зонам ответственности: app или routes, pages, features, entities, components, api или services, hooks, config, lib, styles, tests.
|
||||
- Бизнес-логика не должна оседать в route handlers, page-файлах или UI-компонентах, если ей место в service или domain-слое.
|
||||
|
||||
Рекомендуемая структура FastAPI:
|
||||
|
||||
```text
|
||||
backend/
|
||||
app/
|
||||
api/
|
||||
v1/
|
||||
routes/
|
||||
dependencies/
|
||||
core/
|
||||
db/
|
||||
models/
|
||||
schemas/
|
||||
repositories/
|
||||
services/
|
||||
integrations/
|
||||
utils/
|
||||
main.py
|
||||
tests/
|
||||
unit/
|
||||
integration/
|
||||
api/
|
||||
```
|
||||
|
||||
Рекомендуемая структура Next.js или React:
|
||||
|
||||
```text
|
||||
frontend/
|
||||
src/
|
||||
app/
|
||||
pages/
|
||||
widgets/
|
||||
features/
|
||||
entities/
|
||||
shared/
|
||||
ui/
|
||||
api/
|
||||
lib/
|
||||
hooks/
|
||||
config/
|
||||
styles/
|
||||
tests/
|
||||
unit/
|
||||
integration/
|
||||
public/
|
||||
```
|
||||
|
||||
Рекомендуемая структура admin panel или back office:
|
||||
|
||||
```text
|
||||
frontend/
|
||||
src/
|
||||
app/
|
||||
admin/
|
||||
widgets/
|
||||
dashboard/
|
||||
data-table/
|
||||
filters/
|
||||
forms/
|
||||
features/
|
||||
catalog-management/
|
||||
order-management/
|
||||
customer-management/
|
||||
role-management/
|
||||
promotion-management/
|
||||
content-management/
|
||||
media-management/
|
||||
settings-management/
|
||||
entities/
|
||||
shared/
|
||||
ui/
|
||||
api/
|
||||
lib/
|
||||
hooks/
|
||||
config/
|
||||
styles/
|
||||
tests/
|
||||
unit/
|
||||
integration/
|
||||
admin-e2e/
|
||||
```
|
||||
|
||||
Рекомендуемая структура monorepo:
|
||||
|
||||
```text
|
||||
project-root/
|
||||
.ai/
|
||||
.backup/
|
||||
AGENTS.md
|
||||
backend/
|
||||
frontend/
|
||||
shared/
|
||||
types/
|
||||
contracts/
|
||||
constants/
|
||||
infra/
|
||||
docker/
|
||||
scripts/
|
||||
ci/
|
||||
```
|
||||
|
||||
Рекомендуемая структура split repo:
|
||||
|
||||
```text
|
||||
frontend-repo/
|
||||
.ai/
|
||||
.backup/
|
||||
AGENTS.md
|
||||
src/
|
||||
public/
|
||||
|
||||
backend-repo/
|
||||
.ai/
|
||||
.backup/
|
||||
AGENTS.md
|
||||
app/
|
||||
tests/
|
||||
alembic/
|
||||
```
|
||||
|
||||
Что хранить в слоях:
|
||||
|
||||
- api или routes: HTTP endpoint-ы, wiring зависимостей, transport-level логика, маппинг ответа.
|
||||
- models: ORM-модели и persistence-структуры.
|
||||
- schemas: request/response контракты и DTO.
|
||||
- repositories: прямой доступ к данным, query-логика, чтение и запись.
|
||||
- services: бизнес-правила, orchestration, сценарии, транзакции.
|
||||
- db: session, engine, base metadata, migrations, подключение к базе.
|
||||
- core или config: settings, security, logging, bootstrap и глобальные конфиги.
|
||||
- integrations: платежки, CRM, ERP, email, storage, search и другие внешние системы.
|
||||
- app или pages: route entry points, layouts и page-level composition.
|
||||
- widgets: крупные UI-блоки, собранные из features и shared ui.
|
||||
- features: конкретные сценарии вроде auth, cart, checkout, filters, admin actions.
|
||||
- entities: доменные frontend-модули вроде product, category, cart, order, user.
|
||||
- shared ui: переиспользуемые UI-компоненты и design-system primitives.
|
||||
- shared api: typed clients, fetchers, query adapters, transport helpers.
|
||||
- hooks: переиспользуемое stateful-поведение на клиенте.
|
||||
- shared styles: tokens, themes, global styles, mixins, animation primitives.
|
||||
- tests: unit, integration, api и ui или e2e тесты по слоям.
|
||||
|
||||
Правила импортов и границ слоев:
|
||||
|
||||
- На backend импорты должны быть абсолютными от корня `app`, например `from app.utils.slug import build_slug`, а не `from ..utils import ...`.
|
||||
- На backend не нужно писать `__all__ = ...`; лучше использовать явные прямые импорты.
|
||||
- Направление зависимостей на backend должно быть односторонним: api или routes -> services -> repositories -> models или db.
|
||||
- models не должны импортировать api, routes или services.
|
||||
- repositories работают с данными и запросами, но не должны тянуть HTTP-логику или presentation concerns.
|
||||
- services содержат бизнес-логику и orchestration, а route handlers должны оставаться тонкими.
|
||||
- На frontend лучше использовать alias от корня `src`, например `@/shared/ui/button`, а не глубокие относительные цепочки вроде `../../../../shared/ui/button`.
|
||||
- Направление зависимостей на frontend должно быть таким: app или pages -> widgets -> features -> entities -> shared.
|
||||
- shared не должен зависеть от entities, features, widgets, pages или app.
|
||||
- Barrel exports лучше не использовать там, где они скрывают ownership, размазывают ответственность или создают циклические зависимости.
|
||||
- Тесты могут импортировать production-код, но production-код не должен импортировать тестовые модули.
|
||||
|
||||
## Рекомендуемый шаблон запроса для первого этапа
|
||||
|
||||
```text
|
||||
Нужно подготовить .ai/STORE-BRIEF.md для ecommerce-проекта.
|
||||
Формат: monorepo или split repo.
|
||||
Ниша: ...
|
||||
Аудитория: ...
|
||||
Дизайн: ...
|
||||
Нужны страницы: ...
|
||||
Нужен личный кабинет: да или нет.
|
||||
Нужна админка: да.
|
||||
Нужна гостевая корзина: да или нет.
|
||||
Интеграции: ...
|
||||
Особые требования: ...
|
||||
Сначала задай только важные вопросы и создай .ai/STORE-BRIEF.md.
|
||||
```
|
||||
|
||||
## Рекомендуемый шаблон запроса для второго этапа
|
||||
|
||||
```text
|
||||
Используй .ai/STORE-BRIEF.md как источник правды.
|
||||
Сначала создай или обнови AGENTS.md.
|
||||
После этого полностью собери проект: backend, storefront, admin panel, UX-состояния, анимации и недостающие asset prompts.
|
||||
```
|
||||
|
||||
## Что можно расширить дальше
|
||||
|
||||
- Добавить отдельные prompts под monorepo и split repo.
|
||||
- Добавить skill под интеграции платежей, CRM и ERP.
|
||||
- Добавить шаблоны seed-данных, demo-каталога и дизайн-системы.
|
||||
|
||||
## Quality rules
|
||||
|
||||
- Для Python агент сначала смотрит на `pyproject.toml` и только потом принимает решение по quality gates.
|
||||
- Если проект настроен на `mypy`, код должен соответствовать его конфигурации и по умолчанию тяготеть к strict discipline.
|
||||
- Если проект настроен на `ty`, агент должен ориентироваться на `ty`, а не механически советовать `mypy`.
|
||||
- Если настроены `ruff` и `deptry`, агент должен учитывать их как реальные ограничения проекта.
|
||||
- Для React и Next.js код должен оставаться читаемым и легко изменяемым программистом без лишней магии и чрезмерной абстракции.
|
||||
|
||||
## Code review workflow
|
||||
|
||||
Если нужен жесткий review всего проекта:
|
||||
|
||||
1. Запусти /Ecommerce Code Review.
|
||||
2. Агент сначала прочитает конфигурацию проекта: `pyproject.toml`, `package.json`, `tsconfig.json` и related configs.
|
||||
3. Затем он проверит Python-часть по реальным правилам проекта, включая `mypy` или `ty`, а также `ruff` и `deptry` при наличии.
|
||||
4. React-часть будет проверена на читаемость, поддержку, корректность паттернов и уместное использование современных возможностей версии.
|
||||
5. В результате агент создаст .ai/CODE-REVIEW.md с жесткими findings, приоритетами и планом исправлений.
|
||||
|
||||
## Test workflow
|
||||
|
||||
Если нужно покрыть проект автотестами и прогнать их:
|
||||
|
||||
1. Запусти /Ecommerce Test Implementation.
|
||||
2. Агент сначала определит текущий backend и frontend test stack.
|
||||
3. Затем он добавит или обновит автотесты для backend и frontend и прогонит relevant suites.
|
||||
4. Результат он запишет в .ai/TEST-REPORT.md.
|
||||
5. Если есть падения, запусти /Ecommerce Test Repair.
|
||||
6. Этот шаг разберет реальные ошибки, починит код или тесты, снова прогонит тесты и создаст .ai/TEST-REPAIR.md.
|
||||
|
||||
Правильный принцип: тесты не должны зеленеть за счет ослабления полезных проверок.
|
||||
|
||||
## SEO workflow
|
||||
|
||||
Если нужно отдельно проработать органический рост:
|
||||
|
||||
1. Запусти /Ecommerce SEO Strategy.
|
||||
2. Агент прочитает .ai/STORE-BRIEF.md, если он есть.
|
||||
3. Для широкого SEO-задачи агент создаст .ai/SEO-PLAN.md.
|
||||
4. В план войдут технический SEO, архитектура страниц, keyword-intent mapping, metadata, schema markup, internal linking, Core Web Vitals и measurement.
|
||||
5. После этого запусти /Ecommerce SEO Implementation, чтобы агент внедрил .ai/SEO-PLAN.md в код проекта.
|
||||
6. После внедрения запусти /Ecommerce SEO Review, чтобы агент создал .ai/SEO-REVIEW.md и зафиксировал найденные пробелы, риски и приоритет исправлений.
|
||||
|
||||
Важно: skill оптимизирует сайт под максимально сильную органическую базу, но не обещает гарантированное первое место в поиске, так как это зависит не только от кода и структуры сайта.
|
||||
|
||||
## Пошаговая инструкция
|
||||
|
||||
Пошаговый порядок команд и рекомендованный workflow описаны в [WORKFLOW-GUIDE.md](WORKFLOW-GUIDE.md).
|
||||
Reference in New Issue
Block a user