Документация
Содействие коду
Отслеживайте действия пользователя в реальных модулях, обновляйте его контракт и проверяйте полученное поведение.
Автоматически переведено с английского. Смотреть оригинал на английском
Найдите реализацию
Начните с поведения, которое вы меняете. Для действия на рабочем столе следуйте apps/desktop/src/app/routes.tsx к адаптеру страницы и функциональному экрану. Найдите запрос в его клиенте или помощнике функции, схему конечной точки в packages/api, обработчик в apps/sidecar/src/httpи сервис или репозиторий под ним.
Для изменения геометрии или вывода ЧПУ начните с packages/core и смежные тесты. В случае возникновения проблем с сохранением проверьте запрос к репозиторию и packages/db/src/schema.ts. Чтобы узнать о собственном жизненном цикле, диалоговом окне файла, связке ключей или поведении средства обновления, проверьте apps/desktop/src-tauri/src. Это сохраняет изменение близким к его фактической ответственности.
Обязанности на рабочем месте
| Модуль | Ответственность |
|---|---|
packages/core | Чистые модели и алгоритмы CAD/CAM, публикации, анализ и проверка программ. |
packages/api | Общие схемы, контракты конечных точек и созданные клиенты. |
packages/db | Жизненный цикл соединения SQLite, схема Drizzle, миграции и резервные копии обновлений. |
packages/ai | Интеграция моделей, встроенный хост, каталог действий, сеансы и инструменты искусственного интеллекта. |
packages/plugin-sdk, packages/nikcli-plugin | Контракт плагина приложения и автономный клиент nikcli action-bridge. |
packages/vcs, packages/workflow | История проекта и определения/выполнение рабочих процессов. |
apps/sidecar | HTTP-адаптеры, состав сервисов, репозитории, шлюзы и интеграция приложений. |
apps/desktop, apps/mobile | Пользовательский интерфейс рабочего стола/собственная оболочка и сопряженный клиент iOS. |
packages/httpapi-codegen, packages/web | Генерация клиента API и сайт документации/Студии. |
Используйте общедоступную точку входа модуля, если она доступна. Не допускайте доступа SQLite к базовой геометрии и клиентам. Экраны функций не должны обходить авторизацию вспомогательного устройства или встраивать учетные данные сервера. Сквозные изменения должны явно обновлять каждую затронутую границу.
Намеренно меняйте общие контракты
- Определите схемы запроса, ответа и типизированных ошибок в пакете контракта.
- Реализуйте обработчик и его поведение службы/репозитория, включая проверки владения.
- Восстановите клиенты и проверьте, что сгенерированные выходные данные являются текущими.
- Обновите рабочий стол, сопутствующий продукт, плагин или внешних клиентов-потребителей, которые используют измененную поверхность.
- Задокументируйте поддерживаемые входные и выходные данные, поведение при сбоях и эксплуатационные ограничения.
bun run generate
bun run generate:check
bun run --filter @cadcamfun/api typecheck
bun run --filter @cadcamfun/sidecar typecheck Сгенерированные клиенты являются выходами генератора контрактов. Исправьте контракт или генератор, если их форма неправильная; рукописная поправка к сгенерированному выводу будет потеряна при регенерации. Сохраните существующую семантику клиента или определите влияние на совместимость преднамеренного изменения API.
Соглашения о реализации
Пишите код, комментарии и документацию на английском языке. Сохраняйте экспортированные интерфейсы TypeScript явными и используйте unknown плюс проверка схемы для ненадежных значений. Использование относительного импорта TypeScript .ts расширения. Для расстояний CAD используются миллиметры, а для углов рисования — радианы; учитывайте явно градусные функции и поворотные входы CAM. Отформатируйте номера NC на границе поста.
Код эффекта использует API-интерфейсы службы/слоя/ошибки закрепленной версии. Службы имеют внешние зависимости; уровни с ограниченной областью действия — собственные ресурсы. Избегайте добавления скрытого чтения конфигурации процесса внутри модуля домена. Обеспечьте чистоту геометрических вычислений и изолируйте операции файловой системы, сети и базы данных за их адаптерами.
Для изменения схемы измените schema.ts, создайте миграцию и выполните как новое создание, так и обновление существующей базы данных. При изменении пользовательского интерфейса сделайте адаптеры маршрутов небольшими и поместите логику взаимодействия в соответствующую функцию. Для нативной работы сохраняйте геометрию и логику репозитория в боковой части/ядре, а не перемещайте их в Rust.
Проверка перед просмотром
- Запустите проверку типа затронутого пакета и значимые тесты на предмет измененного поведения.
- Для исправления ошибки продемонстрируйте условие сбоя и его исправленный результат.
- Для общих контрактов проверьте созданных клиентов и затронутых потребителей.
- Для обеспечения устойчивости проверяйте поведение миграции и целостность данных, используя изолированные базы данных.
- Для собственных или визуализированных взаимодействий в дополнение к логическим тестам проверяйте реальную целевую среду выполнения.
- Обновите документацию пользователя/разработчика и объясните оставшиеся эксплуатационные ограничения.
Корневые проверки bun run typecheck и bun run test. В CI также есть задания, специфичные для Rust и компаньонов. Сообщайте о том, что было запущено, а также о любых сбоях или недоступном покрытии времени выполнения; отличать настроенный рабочий процесс от успешного запуска.
Обеспечьте возможность просмотра изменений
Следите за тем, чтобы сгенерированные артефакты, обновления зависимостей, изменения поведения и изменения документации были связаны с одной и той же конкретной целью. Избегайте переформатирования несвязанных модулей. Сохраняйте существующую работу пользователей и используйте одноразовые каталоги данных для экспериментов.
Не включайте токены запуска, ссылки для сопряжения устройств, ключи модели, содержимое базы данных или учетные данные для подписи в патчи или снимки экрана. В примерах следует использовать заполнители. Локальное приспособление или имитируемый поставщик может проверить детерминированный поток; документ, в котором остается необходимость реального поставщика или встроенной интеграции.
Полезные проверки
bun run --filter @cadcamfun/core typecheck
bun test packages/core
bun test apps/sidecar/test
bun test apps/desktop/src
bun run --cwd apps/mobile typecheck
bun run --cwd apps/mobile test
bun run --cwd packages/web check
bun run --cwd packages/web build Использование нативной упаковки scripts/build.ts; использовать --help или --dry-run для проверки его этапов. Модульные тесты отделены от этапа проверки типов конвейера сборки. Обратитесь к руководству по выпуску для получения информации о подписании, целевой архитектуре и проверке средства обновления.
Пример: изменение проверки проекта
Предположим, изменилось правило создания/обновления проекта. Схема запроса такая packages/api/src/projects.ts, hTTP-адаптер apps/sidecar/src/http/projects.ts, а постоянство реализуется с помощью ProjectRepo. В настоящее время схема составляет name необязательно, а обработчики требуют его для создания и обновления. Проверьте оба уровня, прежде чем обещать, что запрос с допустимой схемой будет успешным.
- Определите предполагаемые случаи ввода: отсутствующее имя, недопустимый тип, пустой текст, доступная организация и недоступная организация.
- Решите, какое условие является ошибкой декодирования, а какое — бизнес-проверкой. Сохраните документированную форму состояния/ошибки конечной точки.
- Добавьте утверждения на соответствующей границе обработчика/службы и убедитесь, что неавторизованные вызывающие абоненты или вызывающие лица, не являющиеся членами, не могут обойти правило.
- Если общедоступная схема изменилась, заново создайте как семейства клиентов, так и потребителей проверки типов.
- Используйте настольную форму и документируйте любые измененные требования к запросу.
В настоящее время функция Creation возвращает пустую строку проекта с HTTP 201. Получение списка/получение строк, обогащенных отношениями. Не навязывайте этому семейству общий план успеха, не обновив его контракт и потребителей. Другие семейства конечных точек намеренно используют разные конверты.
Точка входа в генератор packages/api/scripts/generate-clients.ts. Его результаты живут под src/client/generated и src/sdk/generated. Изменения поверхности контракта относятся к исходному контракту; генерируемый результат должен быть воспроизводимым.
Выберите регрессию на нужной глубине
Регрессия геометрии должна утверждать геометрию, а не только повторять изменяемые вычисления. Существующие тесты на столкновение дают полезные закономерности: стационарное перекрытие — это столкновение в нулевой момент времени; промежуточная ротационная развертка может столкнуться, даже если конечная точка свободна; недостаточная граница не решена; и сертифицированный допуск сравнивается с плотным независимым эталоном.
bun test packages/core/src/cam/kernel/collision.test.ts
bun run --filter @cadcamfun/core typecheck
bun test packages/core Выберите аналогичную границу для другой работы. Миграция базы данных требует новых/обновлений и поведения при сбоях резервного копирования. Анализатор потока требует разделения кадров и отмены. Для изменения пользовательского интерфейса необходимо выбрать место назначения, выполнить сбой запроса, повторить попытку и повторно открыть сохраненное состояние. Нативная команда требует проверки и поведения жизненного цикла в дополнение к проверке типа интерфейса.
Сохраняйте чеки, пропорциональные сдаче. Редактирование контента требует проверки навигации/шаблона; они не требуют изобретения новых тестов предметной области. Проходящий узкий тест поддерживает только заявленное поведение, поэтому включите проверки пакета или интеграции, необходимые для измененной общедоступной поверхности.
Разместить документацию
Сайт находится в packages/web. Использование страниц документации DocsLayout, оглавление, идентификаторы разделов и компоненты общего кода/выноски/связанных ссылок. Сохраните эти соглашения на странице и существующий визуальный дизайн, одновременно улучшая контент.
- Прочтите реализацию, манифест и конфигурацию для каждого документируемого вами поведения.
- Используйте поддерживаемую команду или форму запроса и укажите необходимый рабочий каталог, учетные данные, путь к данным и собственные предварительные требования.
- Опишите результат и его причины отказа. Обозначайте примеры как примеры; вызывать захваченный ответ только тогда, когда он действительно был захвачен.
- Обновите метаданные навигации и поиска при добавлении или переименовании маршрута и исправьте каждую локальную ссылку на старое местоположение.
- Запустите проверку индекса и сборку Astro, затем проверьте визуализированную страницу и ее привязки.
bun run --cwd packages/web check
bun run --cwd packages/web typecheck
bun run --cwd packages/web build В заявлениях о настроенном CI должно быть указано, что делает рабочий процесс. Для заявлений об успешной публикации или принятии во время выполнения в качестве доказательства требуется конкретный запуск/артефакт. В документации следует различать реализованное поведение, значения по умолчанию и ограничения, не превращая внутренние заметки по планированию в инструкции по продукту.
Контрольный список запроса на включение
bun run typecheckпроходит в корне.bun run testпроходит; у нового поведения есть тест рядом с кодом.- Изменения контракта регенерируются:
bun run generate:checkиbun run --filter @cadcamfun/web checkчистые. - Изменения схемы включают созданную папку миграции и никогда не являются изменениями примененной миграции.
- Изменения Rust проходят
cargo clippyиcargo test(CI управляет обоими). - Видимое пользователю поведение отражено на странице документации, где оно описывается.
CI выполняет одни и те же команды при каждом нажатии, поэтому зеленый локальный запуск является лучшим предиктором зеленого запроса на извлечение.