Files
pchelpmaster/docs
kamaskandClaude Opus 5.5 74d3c660f9 test(auth): add failing tests for auth service and pb_auth cookie
Tests first for task 2.2; the implementation comes separately.

- AuthService contract (auth/testing/auth-service.contract.ts), run on
  the in-memory fake (unit) and on PocketBaseAuthService against a test
  PocketBase (integration)
- integration: register persists the user, login maps id/email/name,
  restore with a valid, broken or missing token, signals follow the auth
  store, two users in separate injectors, NetworkError and kept session
  when PocketBase is unreachable
- unit (jsdom): pb_auth cookie is written on sign-in and removed on
  sign-out with Path=/ and SameSite=Lax, loaded into the auth store
  before restore() at startup, untouched on the server platform
- contract stubs that throw "Not implemented": User, AuthService,
  PocketBaseAuthService, provideAuth, InMemoryAuthService (signInAs,
  failNextWith)
- docs/testing.md: note on the AuthService contract

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:41:32 +03:00
..

Документация разработчика

Здесь собрано всё, что нужно, чтобы разобраться в коде Pchelpcrm и начать его менять: решения, модель данных и руководство по каждой части приложения. Руководство растёт вместе с кодом: каждая новая фича добавляет или обновляет свою страницу.

Основы

Документ О чём
architecture.md общая схема, слои внутри фичи, DI, SSR и изоляция данных, nginx, UI-принципы
data-model.md коллекции PocketBase, поля, правила доступа, публичный маршрут
testing.md уровни тестов, тестовый PocketBase, контрактные тесты

Руководство (guide/)

Страницы появляются вместе с соответствующим кодом.

Страница О чём
guide/project-structure.md карта репозитория: src/app, pocketbase/, tests/, scripts/; где что искать
guide/adding-a-feature.md пошаговый пример добавления новой сущности от миграции до экрана (на примере меток)
guide/shared.md общая инфраструктура: клиент PocketBase, доменные ошибки, общие UI-компоненты
guide/auth.md вход, регистрация, сессия, cookie, guard'ы, работа с текущим пользователем
guide/tags.md метки: репозиторий, диалог управления, компонент выбора
guide/clients.md клиенты: телефоны, поиск, форма, точки расширения карточки
guide/orders.md заявки: статусы, фильтры, форма, вложения
guide/share.md публичная ссылка и публичная страница
guide/ssr.md как устроен серверный рендер: cookie, TransferState, что можно и нельзя на сервере
guide/ui.md дизайн-токены, темы, общие компоненты, правила доступности

Как писать страницу руководства

Страница описывает часть приложения так, чтобы новый разработчик мог ей пользоваться, не читая весь код.

# <Фича>

Одно-два предложения: что делает фича и для чего.

## Где лежит
Дерево папок фичи с пояснением каждой важной папки и файла.

## Публичный API
Что экспортирует `index.ts`: абстрактные классы, типы, компоненты (селектор, входы, выходы), функции `provideXxx()`, токены расширения. По каждому — одна строка назначения.

## Как пользоваться
Короткие примеры кода для типовых задач: получить данные, встроить компонент, обработать ошибку.

## Как расширить или заменить
Как подменить реализацию через DI, как подключиться к точке расширения, что поменять при добавлении поля.

## Тесты
Где лежат тесты фичи, какой контракт у репозитория, какие фейки доступны.

## Подводные камни
Неочевидное: ограничения SSR, правила доступа, особенности PocketBase.

Правила:

  • Пиши о том, что есть в коде сейчас, а не о планах. Если код меняется — страница меняется в том же коммите.
  • Примеры кода должны быть рабочими и короткими; полный код — ссылкой на файл.
  • Не дублируй architecture.md и data-model.md: ссылайся на нужный раздел.