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

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

Устранение неполадок рабочего стола

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

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

Определите среду выполнения, прежде чем изменять ее.

Сеанс рабочего стола имеет отдельные границы сбоев: Vite предоставляет ресурсы внешнего интерфейса во время разработки; процесс Tauri Rust имеет встроенную интеграцию; вспомогательный модуль Bun обслуживает запросы приложений и обеспечивает постоянство; веб-просмотр SolidJS подключается к этому API. Пустое окно, тайм-аут загрузки, ответ 401 и пустой список проектов могут иметь разные причины.

Режим запускаБэкэндЧто он может установить
Настольный пакет dev без дополнительного URL-адресаЛожный клиент в памятиПоддерживается поведение экрана на основе приборов, а не постоянное хранилище приложений.
Vite с URL и токеномВыбранная бегущая сайдкарЗапросы от браузера к серверу и сохранение в каталоге этого сервера.
Корень desktop:devСкомпилированная контролируемая сайдкарСобственная оболочка, веб-просмотр, объединенные сервер/ресурсы и поток приложений.
Приложение tauri:dev без существующего двоичного файлаСгенерированная заглушка сайдкараИзолированное поведение оболочки; заглушка не является полным API приложения.

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

Понимание времени запуска

Оболочка Rust генерирует токен запуска, разрешает данные приложения и каталоги миграции, а также создает целевой сайдкар. Ребенок связывает 127.0.0.1 на эфемерном порту. Он ждет, пока его публичность /api/health отвечает, а затем записывает событие готовности JSON с этим портом. Веб-просмотр вызывает get_sidecar_endpoint и создает управляемую среду выполнения API.

БюджетТекущее значениеЗначение
Готовое рукопожатие Shell60 секунд за запускМаксимальное ожидание события готовности ребенка к использованию.
Автоматический перезапуск супервизораОдинНеудавшийся дочерний элемент не перезапускается бесконечно.
Ожидание собственной конечной точки125 секундыДва готовых бюджета плюс резерв.
Попытка подключения через веб-просмотр30 секундыТайм-аут работоспособности/соединения для попытки.
Цикл повтора веб-просмотра150 сек., 750 мс паузыПовторно разрешает конечные точки, прежде чем предлагать ошибку по истечении времени ожидания.

Retry перезапускает попытки подключения к веб-просмотру; он не пополняет исчерпанный бюджет надзора Rust. Устраните причину запуска и перезапустите приложение, когда супервизор достигнет состояния сбоя терминала. Порт, созданный до дочернего перезапуска, может быть устаревшим.

Проверьте порты и состояние отдельно

Вите использует localhost:1420 со строгим выбором порта, соответствующим настроенному URL-адресу разработки Tauri. Он терпит неудачу вместо того, чтобы молча перейти на другой порт. Порт сайдкара не имеет отношения к игре и меняется между запусками. Сопутствующий порт HTTPS является третьим прослушивателем (по умолчанию 8443), а Studio использует обратную связь 4396.

Исследовать изолированную сайдкар разработки; заменить пример порта/токена
CADCAM_URL=http://127.0.0.1:43111
CADCAM_TOKEN=local-development-token

curl --max-time 5 --fail-with-body "$CADCAM_URL/api/health"
curl --max-time 5 --fail-with-body "$CADCAM_URL/health"   -H "Authorization: Bearer $CADCAM_TOKEN"
curl --max-time 5 --fail-with-body "$CADCAM_URL/version"   -H "Authorization: Bearer $CADCAM_TOKEN"

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

Если порт 1420 занят, намеренно определите и остановите существующий сервер разработки. Если запомненный порт API отказывается подключаться, прочитайте текущее событие готовности или повторно разрешите конечную точку Tauri, а не угадывайте соседние порты.

Воспроизведение с изолированной сайдкаром

Исходный процесс полезен для отделения проблем встроенного пакета от поведения сервера. Запустите это из корня репозитория в интерактивном терминале; он создает новый каталог данных и явно использует созданную папку миграции.

Держите этот терминал и стандартный ввод открытыми
CADCAM_DIAGNOSTIC_DIR=$(mktemp -d /tmp/cadcamfun-desktop-guide.XXXXXX)
CADCAMFUN_TOKEN=local-development-token CADCAMFUN_DATA_DIR="$CADCAM_DIAGNOSTIC_DIR/data" CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle" CADCAMFUN_AI_OFFLINE=true bun --no-env-file apps/sidecar/src/main.ts

Скопируйте объявленный порт в переменные зонда во втором терминале. Автономный режим AI позволяет избежать зависимости от настроенной удаленной модели для базовой диагностики запуска; он не использует альтернативную локальную модель. Сервер наблюдает EOF стандартного ввода, явное событие завершения работы и обычные прерывания во время выполнения.

Исходный процесс использует текущие файлы. Собственный процесс использует скомпилированный исполняемый файл, уже созданный в разделе src-tauri/binaries. Если только скомпилированный запуск завершился неудачно, перестройте через bun run build:sidecar и проверить ресурсы объединения/миграции. Редактирование TypeScript не заменяет уже запущенный исполняемый файл.

Определите фактический путь к базе данных

Process/toolВыбор пути
Сайдкар, выпущенная TauriTauri app_data_dir(), затем cadcamfun.db.
Ручная сайдкарCADCAMFUN_DATA_DIR/cadcamfun.db.
Миграционный интерфейс командной строкиDATABASE_URL, в противном случае ./data/cadcamfun.db относительно каталога его процесса.
Корень db:migrate оберткаЗапускается в пакете базы данных, обычно выдавая packages/db/data/cadcamfun.db по умолчанию.
API локальной студииCADCAMFUN_DB, затем DATABASE_URL, затем корень репозитория data/cadcamfun.db.

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

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

Чтение вывода протокола и журналов

В исходном дополнительном терминале стандартный вывод зарезервирован для событий протокола готовности/ошибки, а журналы приложений JSON передаются в поток stderr. В собственном приложении плагин ведения журнала Rust фиксирует события на стороне оболочки, включая контролируемый дочерний вывод. Оболочка редактирует строки, которые могут содержать учетные данные для запуска.

Родной get_logs_dir команда разрешает каталог журнала приложений операционной системы. Это более надежно, чем предположение об одном универсальном пути между системами. Диагностика разработчика внутри веб-представления может вызвать ее через существующий командный интерфейс Tauri; Открытие собственного пути ограничивается разрешенными папками и отказывается от типов исполняемых файлов.

Многоразовый компонент загрузочного экрана поддерживает дополнительный обратный вызов журнала просмотра, но текущий App.tsx не передает этот обратный вызов. Не думайте, что кнопка «Просмотр журналов» будет видна во время сбоя запуска. Держите терминал запуска разработки доступным или используйте собственный каталог журналов через соответствующую диагностическую поверхность.

Для отчета укажите режим запуска, несекретные данные/пути миграции, прошедшее время ожидания, текущую версию API, точный тег/сообщение об ошибке и последние соответствующие события запуска. Отредактируйте токены запуска/сеанса/устройства, ссылки на сопряжение, ключи моделей и материалы для подписи.

Отличать аутентификацию от пустых данных

Режим реального клиента браузера требует обоих VITE_SIDECAR_URL и VITE_SIDECAR_TOKEN. URL-адрес без токена не активирует поддельный резервный вариант; разрешение конечной точки не удается. Переменные должны быть указаны до запуска Vite. Обновление родительской оболочки не приводит к перенастройке уже работающего сервера.

Браузер подключен к изолированному исходному процессу
VITE_SIDECAR_URL=http://127.0.0.1:43111 VITE_SIDECAR_TOKEN=local-development-token bun run --filter @cadcamfun/desktop dev

Защищенные вызовы могут использовать контекст сеанса учетной записи в дополнение к токену приложения. Сопутствующие и автономные токены моста имеют более узкую область применения и не заменяют токен запуска. 401 требует диагностики учетных данных; 403 требует диагностики работы/доступа; об отсутствующем или недоступном проекте можно сообщить как 404.

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

Действительный токен запуска состоит из 64 шестнадцатеричных символов (32 случайных байтов) и изменяется при каждом запуске. Токен другой формы оболочкой рабочего стола не был выдан.

Распознайте предварительный просмотр и собственные ограничения

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

Для собственных диалогов, операций с цепочкой ключей, панели задач, средства обновления и материалов macOS требуется хост Tauri и соответствующие возможности. Зарегистрированная команда по-прежнему может быть недоступна для веб-просмотра в соответствии с его конфигурацией возможностей. При открытии файла оболочка регистрирует поддерживаемые ассоциации и пересылает пути; это само по себе не доказывает, что конкретный редактор импортировал содержимое.

Сбои графики — еще одна граница. Ненулевой размер контейнера, видимые объекты/слои, разблокированный выбор и поддерживаемый WebGL являются необходимыми условиями для соответствующих взаимодействий в области просмотра. Отрисованная сетка является свидетельством рендеринга, а не успешного сохранения или проверки CAM. Используйте диагностика видового экрана для рабочей мощности, тайм-аута и поведения четырех представлений.

Восстановить настройки и проблемы с отображением

Общая запись предпочтений веб-просмотра: cadcamfun.settings. По умолчанию включаются миллиметры, системная тема, три десятичных знака, предпочтения GRBL, включенная привязка, допуск 0.01 мм и включенное стекло. Сохраненные поля проверяются независимо; недопустимые значения возвращаются, не вызывая сбоя оболочки. Полное/заблокированное локальное хранилище может помешать сохранению.

Изменение единиц отображения не приводит к изменению масштаба сохраненной геометрии САПР. Допуск документа распространяется через общий помощник настроек САПР/генератора/проверки. Некоторые значения объектов/поворотов явно используют градусы; углы рисования используют радианы. Проверьте контракт поля, прежде чем диагностировать числовое несоответствие как поврежденную геометрию.

Поведение Glass зависит от поддержки Tauri/macOS. В реализации используется Liquid Glass, где это поддерживается, яркость на старых macOS через плагин и непрозрачный резервный вариант, когда он недоступен или отключен. Изменения темы/материала не меняют геометрию, право собственности на проект или данные обработки.

Предпочитайте соответствующие настройки или функцию управления очисткой всего хранилища веб-просмотра. Это хранилище также может содержать передачи сеанса/редактора. Визуальный сброс настроек не является процедурой восстановления базы данных.

Отделение восстановления пользовательского интерфейса от доказательств обработки

Загруженный проект, успешное сохранение HTTP, анимированная траектория инструмента и сгенерированная ЧПУ — это разные наблюдения. Прежде чем полагаться на сохраненный результат обработки, проверьте точное ЧПУ, исходный чертеж/заготовку, сборки инструментов, корпус станка, выбранный пост, а также версию/проблемы проверки для этого результата.

Код моментального снимка CAM сохраняет данные ядра только тогда, когда текущий текст NC и его хэш совпадают. Портативная программа записывает, проверяет согласованность документа и может повторно оценивать захваченные запросы ядра. Редактирование ЧПУ или смена запаса может сделать предыдущие доказательства недействительными. Повторное открытие простого ЧПУ может проанализировать программу без восстановления того же производственного доказательства.

После сбоя или прерванного сохранения сначала проверьте сохраненную строку и ее версии. Модальное окно сохранения CAM записывает предыдущую программу перед обновлением, тогда как ручное сохранение подробной информации о траектории записывает обновленную версию. История проекта снова отдельная. Использовать сравнение истории чтобы выбрать путь восстановления.

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

Осуществляйте сортировку по одному сбою за раз

  1. Запишите режим запуска, версии процессов, порты и фактический каталог данных.
  2. Проверьте здоровье, затем защищённое чтение. Отделить подключение от авторизации.
  3. Прежде чем сбрасывать или удалять что-либо, проверьте структурированные ошибки запуска/миграции.
  4. Воспроизводите изолированный исходный процесс при подозрении на скомпилированную/родную проблему.
  5. Устраните выявленную причину, перезапустите соответствующий процесс и обновите устаревшие переменные конечной точки.
  6. Снова откройте сохраненный документ/программу и проверьте сохраненное состояние, версии, экспорт и текущую проверку.

Якоря реализации app/App.tsx, app/sidecar.ts, src-tauri/src/{sidecar,commands,lib}.rs, сайдкар main.ts/config.ts/shutdown.tsи жизненный цикл базы данных. Местное развитие предоставляет детали конфигурации; компаньон в паре обрабатывает отдельную границу сети.

Контрольный список запуска

  1. Присутствует ли двоичный файл сайдкара для этой платформы (src-tauri/binaries/sidecar-<target triple>)? desktop:dev строит его; tauri:dev можно использовать заглушку.
  2. Являются ли миграции поэтапными? src-tauri/resources/migrations? bun run build:sidecar или bun scripts/build.ts --only=resources переустанавливает их.
  3. Распечатал ли сайдкар ready в течение 60 секунд? Ищите error строка на стандартном выводе и журналы JSON на stderr в каталоге журналов (get_logs_dir).
  4. Он перезапустился? Разрешен только один автоматический перезапуск; второй сбой оставляет статус на failed.
  5. Делает GET /api/health ответить на указанный порт? Если это так, но защищенные маршруты возвращают 401, токен принадлежит другому запуску.
  6. Доступен ли для записи каталог данных и не открыт ли файл базы данных другим процессом с несовместимыми миграциями?
ТаймерЦенитьВладелец
Готовое рукопожатие60 с за попыткуРуководитель Rust
Автоматический перезапуск1Руководитель Rust
Ожидание конечной точки125 с (два рукопожатия + 5 с)get_sidecar_endpoint
Бюджет восстановления Webview150 с, 30 с за попытку, 750 с между попыткамиВеб-просмотр
Льгота на отключение2 с после строки завершения, затем процесс пожинается (до 5 с)Руководитель Rust

Чтение журналов

Журналы Sidecar — это строки JSON на stderr, хранящиеся отдельно от подтверждения связи stdout. Строки, которые могут содержать учетные данные, заменяются на [redacted: line may contain credentials] до того, как они будут записаны, поэтому ожидается отредактированная строка в журнале, а не повреждение. Если само рукопожатие содержало такую строку, сообщаемая ошибка запуска является маркером редактирования; прочитайте окружающие строки stderr для контекста.

Каталог журналов зависит от платформы. Получите это от get_logs_dir вместо того, чтобы угадывать путь, откройте его с помощью open_path, который принимает каталог журнала приложения.

Сообщения об ошибках и что они означают

СообщениеОткуда это взялосьЧто делать
Очередь 3D-сетки заполнена. Уменьшите сложность сцены.Очередь создания сетки видового экрана (128 заданий)Скрыть или упростить тела; очередь очистилась
3Время создания D-сетки истекло. Уменьшите сложность сцены.Одно задание по созданию сетки превысило 15 с.Упростите твердое тело; рабочий был перезапущен
Ни один поставщик AI не настроен. Добавьте ключ API в настройках AI.Ассистентский поток, code: "config"Добавьте ключ провайдера; все остальное не так
Устаревший журнал миграции не соответствует локальным миграциямОбновление базы данных при запускеСохраните каталог данных; установите соответствующую версию
Запрос на включение не открытОбъединение или закрытие объединенного/закрытого PRОбновить список PR
Неизвестная версия <ред.>Восстановление истории или журнал с плохой ревизиейВыберите ревизию из журнала
Plugin <id> may not use "<capability>": it was not granted at install timeКонтекст плагинаПереустановите и предоставьте возможность или измените плагин.
Поворотные оси станка не могут достичь этой рабочей плоскости в пределах своих возможностей.Индексированная обработкаИспользуйте другую настройку для этого лица

Через 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.