Перейти к содержанию
CADCAMFUN
Документы

Документация

Содействие коду

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

Автоматически переведено с английского. Смотреть оригинал на английском

Найдите реализацию

Начните с поведения, которое вы меняете. Для действия на рабочем столе следуйте 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/sidecarHTTP-адаптеры, состав сервисов, репозитории, шлюзы и интеграция приложений.
apps/desktop, apps/mobileПользовательский интерфейс рабочего стола/собственная оболочка и сопряженный клиент iOS.
packages/httpapi-codegen, packages/webГенерация клиента API и сайт документации/Студии.

Используйте общедоступную точку входа модуля, если она доступна. Не допускайте доступа SQLite к базовой геометрии и клиентам. Экраны функций не должны обходить авторизацию вспомогательного устройства или встраивать учетные данные сервера. Сквозные изменения должны явно обновлять каждую затронутую границу.

Намеренно меняйте общие контракты

  1. Определите схемы запроса, ответа и типизированных ошибок в пакете контракта.
  2. Реализуйте обработчик и его поведение службы/репозитория, включая проверки владения.
  3. Восстановите клиенты и проверьте, что сгенерированные выходные данные являются текущими.
  4. Обновите рабочий стол, сопутствующий продукт, плагин или внешних клиентов-потребителей, которые используют измененную поверхность.
  5. Задокументируйте поддерживаемые входные и выходные данные, поведение при сбоях и эксплуатационные ограничения.
После изменения контрактов API
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 необязательно, а обработчики требуют его для создания и обновления. Проверьте оба уровня, прежде чем обещать, что запрос с допустимой схемой будет успешным.

  1. Определите предполагаемые случаи ввода: отсутствующее имя, недопустимый тип, пустой текст, доступная организация и недоступная организация.
  2. Решите, какое условие является ошибкой декодирования, а какое — бизнес-проверкой. Сохраните документированную форму состояния/ошибки конечной точки.
  3. Добавьте утверждения на соответствующей границе обработчика/службы и убедитесь, что неавторизованные вызывающие абоненты или вызывающие лица, не являющиеся членами, не могут обойти правило.
  4. Если общедоступная схема изменилась, заново создайте как семейства клиентов, так и потребителей проверки типов.
  5. Используйте настольную форму и документируйте любые измененные требования к запросу.

В настоящее время функция 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, оглавление, идентификаторы разделов и компоненты общего кода/выноски/связанных ссылок. Сохраните эти соглашения на странице и существующий визуальный дизайн, одновременно улучшая контент.

  1. Прочтите реализацию, манифест и конфигурацию для каждого документируемого вами поведения.
  2. Используйте поддерживаемую команду или форму запроса и укажите необходимый рабочий каталог, учетные данные, путь к данным и собственные предварительные требования.
  3. Опишите результат и его причины отказа. Обозначайте примеры как примеры; вызывать захваченный ответ только тогда, когда он действительно был захвачен.
  4. Обновите метаданные навигации и поиска при добавлении или переименовании маршрута и исправьте каждую локальную ссылку на старое местоположение.
  5. Запустите проверку индекса и сборку 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 выполняет одни и те же команды при каждом нажатии, поэтому зеленый локальный запуск является лучшим предиктором зеленого запроса на извлечение.

Через 3Д

Какие изменения могут коснуться Перетащите на орбиту · прокрутите, чтобы увеличить · перетащите вправо, чтобы панорамировать
Все пакеты рабочей области 13 из файлов package.json; каждая строка представляет собой зависимость workspace:* (всего 17). Строки — это глубина зависимости: пакеты без зависимостей от рабочей области спереди, вспомогательная программа, которая зависит от 8 из них, сзади. Оранжевые квадратики — это приложения.