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

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

Быстрый старт

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

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

Требования

Установщики и проверка исходников разные

Опубликованная сборка настольного компьютера находится на страница загрузки. Это руководство устанавливает репозиторий и запускает desktop:dev. Читать Установить когда вместо этого вам нужны артефакты выпуска.

В рабочей области объявляется Bun 1.4.4 в качестве менеджера пакетов. Используйте файл блокировки репозитория для установки зависимостей. Для разработки собственных настольных систем также требуется набор инструментов Rust, зависимости сборки платформы Tauri и установленное системное веб-просмотр. Tauri CLI уже является зависимостью разработки настольных компьютеров.

  • macOS: Инструменты командной строки Xcode для связывания и упаковки Rust/native.
  • Окна: набор инструментов MSVC и необходимые условия среды выполнения/сборки WebView2.
  • Линукс: WebKitGTK 4.1, индикатор приложения, librsvg, OpenSSL и инструменты связывания. Рабочий процесс CI записывает пакеты, используемые в Ubuntu.
  • iOS-компаньон: macOS, Xcode, CocoaPods и собственная сборка Expo, содержащая локальный модуль закрепления.

Предварительная версия браузера требует наличия зависимостей Bun и рабочей области, но не компилирует оболочку Rust. Установщику выпуска дополнительно требуется конфигурация подписи; это отдельно от локальной разработки пользовательского интерфейса.

Установить зависимости

Из корня репозитория
bun install
bun run --filter @cadcamfun/desktop typecheck
bun test packages/core

Установите один раз в корень рабочей области, чтобы локально workspace:* зависимости разрешаются вместе. CI использует bun install --frozen-lockfile чтобы отклонить дрейф файла блокировки. Используйте сценарии пакета для выбора настроенного компилятора репозитория, а не предполагайте, что каждый пакет использует один и тот же исполняемый файл TypeScript.

Целевые команды, приведенные выше, обеспечивают быструю проверку источника. Полные проверки рабочего пространства bun run typecheck и bun run test; они охватывают больше модулей и могут занять больше времени. Отдельный пакет прохождения не доказывает, что все интеграции среды выполнения настроены.

Настройка базы данных

Реальный рабочий стол не требует отдельной команды миграции CLI. Его средство запуска предоставляет каталог данных приложения и осуществляет поэтапную миграцию в вспомогательную версию; открытие базы данных применяет ожидающие миграции. bun run desktop:dev размещает ресурс миграции в рамках подготовки дополнительного модуля.

Инструмент командной строки базы данных является отдельным. bun run db:migrate делегирует пакет базы данных и по умолчанию ./data/cadcamfun.db относительно каталога процесса этого пакета, обычно packages/db/data/cadcamfun.db при вызове через корневой скрипт. Установите абсолютный DATABASE_URL когда вам нужно настроить таргетинг на конкретную базу данных.

Только при изменении схемы базы данных
bun run db:generate
bun run db:migrate

Поколение читает packages/db/src/schema.ts и пишет миграции под packages/db/drizzle. Применение миграции обновляет выбранную базу данных CLI, а не каждую базу данных приложения. Собственные данные рабочего стола хранятся в каталоге данных приложения Tauri; сайдкар, запускаемая вручную, использует CADCAMFUN_DATA_DIR.

Выбирайте базу данных осознанно

Успешная миграция CLI не меняет базу данных, которую открывает рабочий стол. Найдите каталог дополнительных данных, прежде чем исследовать недостающие проекты или выполнять операцию с данными вручную.

Откройте рабочий стол

Из корня репозитория
bun run desktop:dev

При этом компилируется настоящая сайдкар Bun и выполняется миграция, а затем запускается Tauri. Таури запускает Vite в http://localhost:1420 и открывает веб-просмотр. Оболочка Rust ожидает готовности рукопожатия сайдкара; веб-просмотр проверяет работоспособность перед отображением маршрутизируемых экранов.

Держите стартовый терминал открытым. Оболочка владеет жизненным циклом сайдкара и предоставляет ей токен запуска и пути. Если запуск не удался, проверьте причину загрузки и журналы приложений. Веб-представление повторяет попытку обнаружения конечной точки в течение 150 секунд; оболочка допускает один автоматический перезапуск сайдкара.

Предварительный просмотр пользовательского интерфейса только в браузере
bun run --filter @cadcamfun/desktop dev

Открыть http://localhost:1420. Без VITE_SIDECAR_URL, здесь используется поддельный API в памяти. Он поддерживает подмножество запросов и не предоставляет постоянные проекты, сеансы поставщиков или собственные диалоги. Подключитесь к действующей боковой панели, задав URL-адрес боковой панели Vite и переменные процесса токена.

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

bun run desktop:dev первые запуски build:sidecar, который компилирует вспомогательную программу и осуществляет миграцию (этапы конвейера compile и resources). Затем начинается tauri dev в настольном пакете.

Проверка первого сеанса

  1. Подождите, пока приложение покинет экран загрузки, и убедитесь, что оно подключено к нужному API.
  2. Создайте или откройте проект и введите CAD или CAM.
  3. Сохраните работу и снова откройте ее через пользовательский интерфейс проекта/ресурса, чтобы проверить сохранение.
  4. При использовании помощника настройте поддерживаемого поставщика моделей в настройках рабочего стола, прежде чем начинать разговор.
  5. При использовании компаньона iOS включите его шлюз и создайте сопряжение устройств на рабочем столе.

Проверка видимого пути не подтверждает безопасность обработки. Прежде чем передавать выходные данные ЧПУ на станок, проверьте запасы, инструменты, пределы станка, результаты пост-вывода и результаты проверки фактической операции.

Запустите сайт документации
bun run --cwd packages/web start
bun run --cwd packages/web check
bun run --cwd packages/web build

Интернет start команда запускает Astro. Используйте его напечатанный локальный адрес. Интернет dev скрипт дополнительно запускает Studio API, который может открыть выбранную локальную базу данных; используйте его при работе в Studio, а не только в статической документации.

Следующие команды

ЦельКоманда
Скомпилируйте только Sidecar и выполните поэтапную миграцию.bun run build:sidecar
Создайте интерфейс без установщиковbun run build:desktop
Просмотрите собственный план сборкиbun scripts/build.ts --dry-run
Регенерация клиентов APIbun run generate
Проверка сгенерированных клиентовbun run generate:check
Запустите сопутствующие транспортные тестыbun run --cwd apps/mobile test

Проверьте реальный API без модели

Запустите вспомогательную версию вручную, описанную в локальном руководстве по разработке, или используйте конечную точку/токен процесса разработки, которым вы управляете. Следующий рецепт создает один одноразовый проект и выводит его список. Ему нужен завиток; при дополнительном извлечении идентификатора используется Bun. Замените примерный порт и токен на порт и токен вашей изолированной сайдкара.

Второй терминал: здоровье, создание, список, чтение
CADCAM_URL=http://127.0.0.1:43111
CADCAM_TOKEN=local-development-token

curl --fail-with-body "$CADCAM_URL/api/health"

curl --fail-with-body -X POST "$CADCAM_URL/api/projects"   -H "Authorization: Bearer $CADCAM_TOKEN"   -H 'Content-Type: application/json'   -d '{"name":"Documentation smoke","description":"Disposable local check","isPublic":false}'   -o /tmp/cadcamfun-project-smoke.json

curl --fail-with-body "$CADCAM_URL/api/projects"   -H "Authorization: Bearer $CADCAM_TOKEN"

CADCAM_PROJECT_ID=$(bun --no-env-file -e   'const row = await Bun.file("/tmp/cadcamfun-project-smoke.json").json(); console.write(row.id)')
curl --fail-with-body "$CADCAM_URL/api/projects/$CADCAM_PROJECT_ID"   -H "Authorization: Bearer $CADCAM_TOKEN"

Health возвращает объект статуса/временной метки. Создание проекта возвращает HTTP 201 и строку проекта с его идентификатором. Листинг возвращает массив проектов с отношениями между владельцем и организацией и их количеством; чтение по идентификатору возвращает один такой связанный проект. В примере не вызывается модель и не генерируется машинный вывод.

Аккуратно закройте вспомогательную версию вручную, перезапустите ее с тем же каталогом данных, обновите временный URL-адрес и снова перечислите проекты, чтобы проверить постоянство. Новый запуск может выбрать другой порт. Если этот проект отсутствует, сначала сравните каталог данных, конечную точку клиента и контекст авторизации.

Очистка необязательна и разрушительна для этого одноразового проекта: отправить DELETE /api/projects/<id> только после подтверждения возвращенного идентификатора. Создание/список/чтение сохраняемого приложения для упражнений без необходимости очистки для успеха.

Интерпретация ошибок при первом запуске

ОтказВероятная границаСледующее действие
Установка зависимостей не может разрешить локальный пакетУстановка рабочего пространстваЗапускаем из корня репозитория с заявленной версией Bun и файлом блокировки.
Собственная ссылка или ошибка WebKitПредпосылки ТельцаУстановите библиотеки инструментов/платформы, используемые соответствующей целью CI.
Нет готового мероприятияКонфигурация Sidecar, миграция или запускПроверьте stderr и событие структурированной ошибки. Держите стандартный ввод открытым.
Здоровье работает, вызов проекта возвращает 401АвторизацияЗдоровье является общественным; защищенным вызовам API по-прежнему требуется текущий токен процесса.
Создать возвраты 400Запрос проверки/проверка бизнесаОтправьте JSON с непустым именем и проверьте возвращенное сообщение.
Создать возвраты 403 с данными организацииЧленство в организацииИспользуйте доступную организацию или опустите поле организации для локальной проверки.
Родной компаньон говорит, что закрепление недоступноОтсутствует локальный модуль ExpoИспользуйте специальную сборку iOS, а не Expo Go.

Первая проверка должна быть небольшой: работоспособность, один проект, один сохраненный рисунок/программа, затем дополнительные интеграции. При успешном запуске базового приложения Stripe, поставщики искусственного интеллекта, удаленный репозиторий GitHub или мобильная маршрутизация не настраиваются автоматически.

Подробности требований

ИнструментВерсияТребуется для
Bun1.4.4 (файл репозитория packageManager)Всё: установка, тесты, сайдкар, скрипты
Набор инструментов Rust + необходимые условия Tauriстабильный; библиотеки веб-просмотра платформы в LinuxОболочка рабочего стола (desktop:dev, строит)
SQLite CLIлюбойНеобязательно: проверка базы данных только для чтения.
Xcode—Только для iOS-компаньона

Ваш первый час, шаг за шагом

От клона к работающему рабочему столу
git clone https://github.com/nikomatt69/cadcamfun.git
cd cadcamfun
bun install --frozen-lockfile
bun run typecheck                 # all workspaces
bun run test                      # bun test packages apps scripts
bun run desktop:dev               # builds the sidecar + migrations, then tauri dev
  1. Когда окно откроется, статус сайдкара станет готовым в течение нескольких секунд; новый каталог данных переносится при первом запуске.
  2. Создайте проект, добавьте рисунок, нарисуйте прямоугольник и выдавите его.
  3. Откройте CAM, выберите тело и сгенерируйте. Перед экспортом NC проверьте уровень выпуска и претензии.
  4. Откройте панель истории и зафиксируйте: теперь у проекта есть первая версия.

Ключ модели не требуется

Все вышеперечисленное работает без провайдера ИИ. Добавьте ключ позже в настройках помощника.

Через 3Д

Краткое руководство по фигурам начинается Перетащите на орбиту · прокрутите, чтобы увеличить · перетащите вправо, чтобы панорамировать
Processes at run time. The Tauri shell spawns the sidecar and waits for its {”event”:”ready”,”port”:N} line on stdout (sidecar.rs); the webview then talks HTTP to 127.0.0.1 on that port with the bearer token. The sidecar owns the SQLite database, the embedded nikcli AI host (CADCAMFUN_AI_HOST=nikcli, the default) and plugins; the mobile app reaches it through companion pairing.