Files
XC_VM/docs/ru/guides/dev-workflow.md
T
Divarion-D 76844fef11 docs: restructure, fix PSR-4 drift, and unify en/ru
Overhaul the Docsify documentation (English + Russian) so it matches the current
codebase and follows one consistent pattern.

Content accuracy (post-migration):
- Rewrite development/autoloader.md to PSR-4 / Composer (the old XC_Autoloader
  scanner, igbinary tmp/cache/autoload_map and registerDirectories are gone).
- PascalCase every source path (src/core -> src/Core, domain/Stream, cli/Commands,
  public/Controllers, Infrastructure/Redis, ...) across all docs.
- Replace the removed autoload.php references with vendor/autoload.php
  (build_system, bootstrap-contexts, error-handling, modules).
- ssl-generation: note that the installer now auto-generates a unique self-signed
  certificate before Nginx starts.

Common pattern (Clean & uniform):
- Strip emoji from headings; remove the in-page Navigation blocks (the Docsify
  sidebar already provides navigation).
- One H1 + intro per doc; uniform "Related files" / "Связанные файлы" section,
  added to the code-centric docs that lacked it.

Structure:
- Remove the empty stray docs/api/; move updates_checklist.md into builds/;
  link the previously-orphaned ucs-integration.md.
- Regroup the sidebars (split the oversized guides group into Developer Guides /
  Security & Access / Integrations; fold builds into Build & Release).

Augment:
- dev-workflow: Local Setup (make dev-tools) + Quality Checks (phpstan, cs, gates).
- build_system: Composer Dependencies section (committed prod-only vendor,
  committed lock, dev tools via composer install, no build-time vendor step).

en/ru parity:
- Apply the same structure, fixes and pattern to docs/ru/ (translated), including
  a new Russian ucs-integration.md. The en and ru file sets are now identical.
2026-06-26 15:56:15 +03:00

6.2 KiB
Raw Blame History

Рабочий процесс разработки

Как настроить проект локально, запускать проверки качества и деплоить код на сервер разработки.


Локальная настройка

Закоммиченный src/vendor/ — только продакшен, поэтому dev-инструментов (PHPStan, PHP-CS-Fixer) в дереве нет. Установите их один раз из закоммиченного lock:

make dev-tools          # = cd src && composer install

Это добавит require-dev-пакеты в src/vendor/. Никогда не коммитьте их — закоммиченный vendor должен оставаться прод-only (composer install --no-dev). .gitignore не даёт dev-пакетам попасть в git add, а CI-гейт (check-vendor-prod-only) валит сборку, если такой пакет всё же закоммичен.

Проверки качества

Запускайте перед push — CI выполняет тот же набор:

Команда Что проверяет
make phpstan Статический анализ против закоммиченного baseline (падает только на НОВЫХ проблемах)
make cs Стиль кода — гигиена импортов/namespace (PHP-CS-Fixer, dry-run)
make cs-fix Применить исправления стиля
make gates Регресс-гейты PSR-4 (ниже)
php tools/.bin/phpunit.phar -c tests/phpunit.xml.dist Юнит-тесты

make phpstan и make cs требуют dev-инструментов — сначала make dev-tools.

make gates объединяет три проверки:

  • check-procedural-use — процедурные / view-файлы импортируют каждый мигрированный класс, который используют (импорты PHP позиционны, поэтому use должен идти до использования);
  • verify-lb-archive — LB-сборка исключает привилегированный код (admin/reseller-контроллеры, домен user/device, install/root-команды);
  • check-vendor-prod-only — ни один require-dev-пакет не закоммичен в src/vendor/.

Деплой кода на VDS через SFTP

Для ежедневной разработки рекомендуем расширение SFTP для VS Code — редактируете локально, файлы автоматически загружаются при сохранении.

Настройка

Создайте .vscode/sftp.json:

[
    {
        "name": "My Dev VDS",
        "host": "IP_ВАШЕГО_VDS",
        "protocol": "sftp",
        "port": 22,
        "username": "root",
        "remotePath": "/home/xc_vm",
        "useTempFile": false,
        "uploadOnSave": true,
        "openSsh": false,
        "watcher": {
            "files": "**/*",
            "autoUpload": false,
            "autoDelete": true
        },
        "ignore": [
            ".vscode",
            ".git",
            ".gitattributes",
            ".gitignore",
            "update",
            "*pycache/",
            "*.gitkeep",
            "bin/",
            "config/",
            "tmp/"
        ],
        "context": "./src/",
        "profiles": {}
    },
    {
        "name": "My Dev VDS Tests",
        "host": "IP_ВАШЕГО_VDS",
        "protocol": "sftp",
        "port": 22,
        "username": "root",
        "remotePath": "/home/xc_vm/tests",
        "useTempFile": false,
        "uploadOnSave": true,
        "openSsh": false,
        "watcher": {
            "files": "**/*",
            "autoUpload": false,
            "autoDelete": true
        },
        "ignore": [
            ".vscode",
            ".git",
            ".gitattributes",
            ".gitignore",
            "tmp/",
            ".cache/"
        ],
        "context": "./tests/",
        "profiles": {}
    }
]

Ключевые настройки

  • context: "./src/" — маппит локальную src/ на удалённую /home/xc_vm/
  • context: "./tests/" — маппит локальную tests/ на удалённую /home/xc_vm/tests/
  • uploadOnSave: true — каждый Ctrl+S мгновенно загружает файл на VDS
  • ignore — защищает серверо-специфичные файлы (bin/, config/, tmp/)

Безопасность: Используйте SSH-ключи вместо пароля. Директория .vscode/ находится в .gitignore, поэтому креды не попадут в git.

Как синхронить папку tests

  1. Добавьте второй SFTP entry с context: "./tests/" и remotePath: "/home/xc_vm/tests".
  2. Сохраняйте файлы внутри tests/ локально.
  3. Расширение будет загружать их отдельно от src/ прямо в /home/xc_vm/tests.
  4. Это нужно, потому что тесты не лежат внутри src/ и не попадут на сервер через основной entry.

Рабочий процесс

  1. Открываете проект в VS Code
  2. Редактируете любой файл в src/
  3. Если пишете тест, редактируете файл в tests/
  4. Сохраняете — соответствующий entry автоматически загружает файл на VDS
  5. Запускаете нужный тест на VDS
  6. Коммитите в git как обычно

Связанные файлы

Файл Роль
.vscode/sftp.json Конфиг синхронизации local → VDS (в gitignore)
Makefile make dev-tools, make phpstan, make cs, make gates
src/composer.json Зависимости + PSR-4-автозагрузка