Zum Inhalt springen
CADCAMFUN
Doku

Dokumentation

Lokale Entwicklung

Wählen Sie den API-Prozess, das Datenverzeichnis und den Client-Modus explizit aus.

Automatisch aus dem Englischen übersetzt. Englisches Original ansehen

Entwicklungsprozesse

In einer vollständigen Desktop-Entwicklungssitzung werden eine Rust-Shell, ein Bun-Sidecar und Vite ausgeführt. Die Shell stellt native Funktionen bereit und überwacht den Sidecar; Vite bietet Webview-Assets und Hot-Reload. bun run desktop:dev bereitet die Binär- und Migrationsressourcen vor, bevor diese Prozesse gestartet werden.

Für eine schnellere Bildschirmarbeit führen Sie den Desktop aus dev skript allein. App.tsx wählt die In-Memory-Preview-API nur außerhalb von Tauri und nur dann aus VITE_SIDECAR_URL fehlt. Vorschaufehler für nicht unterstützte API-Sammlungen werden voraussichtlich 501 zurückgeben. Verwenden Sie einen Live-Sidecar für Persistenz, Autorisierung, Streaming-KI und Serverdienste.

Manueller Sidecar, in einem interaktiven Terminal im Repository-Stammverzeichnis
CADCAMFUN_TOKEN=local-development-token CADCAMFUN_DATA_DIR=/tmp/cadcamfun-development CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle" bun --no-env-file apps/sidecar/src/main.ts

Der obige Token ist ein Beispiel für einen isolierten lokalen Entwicklungsprozess. Wählen Sie Ihren eigenen Wert. Halten Sie den Standard geöffnet: Wenn Sie ihn schließen, stoppt der Sidecar. Der Server druckt einen JSON ready ereignis mit seinem kurzlebigen Hafen danach /api/health antwortet; Protokolle gehen zu stderr.

Zweites Terminal: Browser, der mit diesem Sidecar verbunden ist
VITE_SIDECAR_URL=http://127.0.0.1:43111 VITE_SIDECAR_TOKEN=local-development-token bun run --filter @cadcamfun/desktop dev

Ersetzen Sie Port 43111 durch den Ready-Event-Port und verwenden Sie vor der Ausführung das diesem Sidecar bereitgestellte Token. Vite verwendet Port 1420 mit strenger Portauswahl, passend zur Tauri-Entwicklungs-URL. Der Sidecar ermöglicht Browser-CORS-Ursprünge auf HTTP Localhost/Loopback und den unterstützten Tauri-Ursprüngen; Für geschützte Strecken ist weiterhin eine entsprechende Genehmigung erforderlich.

Datenverzeichnisse und Migrationen

Der Sidecar öffnet sich <CADCAMFUN_DATA_DIR>/cadcamfun.db. Tauri wählt sein eigenes Anwendungsdatenverzeichnis und übergibt es an das Kind. Ein manueller Prozess verwendet das von Ihnen bereitgestellte Verzeichnis. Diese Datenbanken sind unabhängig, auch wenn ihr Dateiname identisch ist.

Das CLI-Migrationsskript liest DATABASE_URL und anderweitig verwendet ./data/cadcamfun.db relativ zu seinem Arbeitsverzeichnis. Wurzel db:migrate läuft hinein packages/db. Wählen Sie eine absolute Datei-URL für gezielte CLI-Vorgänge. Leiten Sie das Ziel nicht aus einem relativen Dateinamen ab, der in einem Protokoll angezeigt wird.

Migrieren Sie eine explizit ausgewählte Einwegdatenbank
DATABASE_URL=file:/tmp/cadcamfun-cli/cadcamfun.db bun run db:migrate

Schemaänderungen haben ihren Ursprung in packages/db/src/schema.ts. Laufen bun run db:generate, überprüfen Sie die generierte Migration und wenden Sie sie zunächst auf eine isolierte Datenbank an. Der Sidecar nutzt CADCAMFUN_MIGRATIONS_DIR wenn bereitgestellt; Paketierte Builds stellen das generierte Verzeichnis als Ressource bereit.

Die Datenbankschicht ermöglicht WAL und Fremdschlüssel. Wenn eine vorhandene Datei migriert werden muss, erstellt der Upgrade-Pfad darunter ein Backup daneben backups/ und behält die letzten fünf passenden automatischen Backups bei. Bei der ersten Erstellung, einem unveränderten Schema und In-Memory-Datenbanken wird kein Upgrade-Backup erstellt. Bewahren Sie Daten unabhängig vor manuellen Wiederherstellungsvorgängen auf.

Gezielte Kontrollen

Aus dem Repository-Stammverzeichnis
bun run --filter @cadcamfun/core typecheck
bun test packages/core
bun run --filter @cadcamfun/desktop typecheck
bun test apps/desktop/src/viewport
bun run --cwd packages/web check
bun run --cwd packages/web build

Wählen Sie Prüfungen anhand der geänderten Grenze aus. Reine Geometrieänderungen erfordern Geometriezusicherungen; API-Vertragsänderungen erfordern Überprüfungen generierter Clients und betroffener Handler. Persistenzänderungen erfordern Repository- und Migrationstests; Änderungen an der Benutzeroberflächeninteraktion erfordern die entsprechende Komponente und den entsprechenden Laufzeitablauf. Die Wurzel test skript enthält packages, apps, und scripts.

Native Shell-Prüfungen werden ausgeführt von apps/desktop/src-tauri mit cargo clippy --all-targets -- -D warnings und cargo test. Stellen Sie zuerst den Ziel-Sidecar und die Migrationen bereit, da der Build-Kontext von Tauri diese Ressourcen enthält. Für Betriebssystemintegrationstests können ein nativer Desktop und ein Schlüsselbund erforderlich sein.

Laufzeitkonfiguration

apps/sidecar/src/config.ts besitzt die Sidecar-Konfigurationsebene. Erforderliche Eingaben sind CADCAMFUN_TOKEN und CADCAMFUN_DATA_DIR. CADCAMFUN_MIGRATIONS_DIR wählt Migrationsressourcen aus. Der Standard-KI-Host ist nikcli; CADCAMFUN_AI_HOST=direct wählt Direktanrufe aus und CADCAMFUN_AI_OFFLINE unterstützt Offline-/Testbetrieb.

Die optionale Konfiguration umfasst die Anwendungs-URL und Entwicklungs-Authentifizierungslinks, Stripe-Anmeldeinformationen und Preiskennungen, Administrator-/Cron-Einstellungen usw OTEL_EXPORTER_OTLP_ENDPOINT. Ohne entsprechende Anbieterkonfiguration ist die Abrechnung nicht möglich; Der Telemetrieexport ist ohne seinen Collector-Endpunkt deaktiviert. Stellen Sie nur die Eingaben bereit, die für Ihren Fluss erforderlich sind.

Browser-Endpunktvariablen sind Vite-Konfiguration, keine Sidecar-Konfiguration. Eine Companion-Paarung enthält ein anderes Token und eine andere HTTPS-Adresse. Ein eigenständiger Action-Bridge-Token hat seinen eigenen Umfang und seine eigene Lebensdauer. Ersetzen Sie diese Anmeldeinformationen nicht gegenseitig.

Verwenden Sie explizite Prozesskonfigurations- oder Anwendungseinstellungen. Der Beispiel-Sidecar-Befehl deaktiviert das Laden der Umgebungsdatei von Bun. Drucken Sie niemals tatsächliche Token, Modellschlüssel, Kopplungslinks oder Signaturmaterial in Protokollen oder Dokumentationsbeispielen aus.

Wirkung und Ressourcenbesitz

Das Repository heftet Effect an 4.0.0-rc.112. Nutzung von Diensten Context.Service, implementierungen werden über Ebenen bereitgestellt und Operationen geben typisierte Effekte zurück. Verwenden Sie das installierte effect/ai-docs/src dokumentation beim Ändern dieser API, einschließlich ihrer instabilen HTTP-Module.

Dekodieren Sie externe Eingaben an Grenzen. Ordnen Sie fremde Ausnahmen typisierten Fehlern zu, bewahren Sie stabile Fehlertags und überlassen Sie einer bereichsbezogenen Ebene den Besitz von Datenbankhandles, Workern, Streams und Serverressourcen. Der Shutdown-Flow des Sidecars verarbeitet ein übergeordnetes Shutdown-Ereignis, einen Standard-Schließvorgang und eine Laufzeitunterbrechung. Protokolle und Protokoll stdout haben unterschiedliche Ziele.

Kern-CAD/CAM-Berechnungen bleiben einfache Funktionen in rechenintensiven Pfaden. Das Umschließen der Validierung an der Grenze erfordert nicht, dass jede Geometrieoperation in einen Effekt eingefügt wird. Verwenden Sie die Kernkonventionen für Geometrieeinheiten und führen Sie Anzeige-/Exportkonvertierungen an der entsprechenden Kante durch. Beim Zeichnen von Winkeln wird das Bogenmaß verwendet. Einige Feature-Parameter und CAM-Rotationsachsenwerte verwenden explizit Grad.

Fehlerbehebung beim Start

  • Vite-Hafen belegt: geben Sie den Port 1420 frei oder stoppen Sie den vorhandenen Entwicklungsserver. Der strikte Portmodus wählt nicht stillschweigend einen anderen Port aus.
  • Boot versucht es immer wieder: überprüfen Sie die Sidecar-Bereitschafts-/Fehlerausgabe und den Migrationspfad. Die App löst den Endpunkt erneut auf, während das Verbindungsbudget bestehen bleibt.
  • Der Server wird sofort beendet: überprüfen Sie die erforderliche Konfiguration und ob der Startvorgang stdin geschlossen hat.
  • Fehlende Projekte: bestätigen Sie das Datenverzeichnis, den API-Endpunkt und ob die App den gefälschten Client verwendet.
  • 401 Antworten: stellen Sie sicher, dass der Client das Token des aktuellen Prozesses und nicht eines vorherigen Starts verwendet.
  • 501 in der Browservorschau: verwenden Sie einen echten Sidecar für diese API-Sammlung.
  • Die Erstellung des nativen Kontexts schlägt fehl: stellen Sie die Sidecar-Binär- und Migrationsressourcen für das richtige Ziel bereit.

Dokumentation und Begleitentwicklung

bun run --cwd packages/web start betreibt Astro alleine. bun run --cwd packages/web dev startet Astro und die lokale Studio-API. Die Dokumentationsprüfung validiert den Routenindex; Der Build validiert die Astro-Kompilierung und das Vorrendern.

Für iOS, bun run --cwd apps/mobile start startet Metro für einen benutzerdefinierten Entwicklungskunden. bun run --cwd apps/mobile ios erstellt/führt die native App aus; build exportiert nur JavaScript. Natives Pinning erfordert das lokale Swift-Modul und kann nicht in Expo Go ausgeführt werden.

bun scripts/build.ts --help listet die Optionen der Release-Pipeline auf. --only=resources führt Migrationen ohne Neuaufbau erneut durch und --dry-run druckt den Plan, ohne etwas zu schreiben.

Referenz zur Prozesskonfiguration

VariableDefault/requirementVerwenden
CADCAMFUN_TOKENErforderlichInhabertoken, das von der Shell oder dem Entwicklungsstartprogramm bereitgestellt wird.
CADCAMFUN_DATA_DIRErforderlichStatus der Sidecar-Datenbank und des Anwendungsdiensts.
CADCAMFUN_MIGRATIONS_DIROptionalOrdner der generierten Migrationen. Die Datenbankschicht überspringt Migrationen, wenn kein Ordner angegeben wird.
CADCAMFUN_AI_HOSTnikclinikcli eingebetteter Host oder direct KI-Anrufe.
CADCAMFUN_AI_OFFLINEFALSCHOffline-/Test-KI-Betrieb; kein lokales Ersatzmodell.
CADCAMFUN_AI_MINIMAX_BASE_URLUnscharfOptionale Überschreibung des eingebetteten MiniMax-Endpunkts.
CADCAMFUN_APP_URLUnscharfDer in Authentifizierungslinks verwendete Anwendungsursprung.
CADCAMFUN_DEBUG_LINKSFALSCHEntwicklungsauthentifizierungsantworten können Reset-/Magic-Links offenlegen.
OTEL_EXPORTER_OTLP_ENDPOINTUnscharfAktiviert den Telemetrieexport, wenn konfiguriert.
VITE_SIDECAR_URL, VITE_SIDECAR_TOKENUnscharfBrowser-Webview-Verbindung; beide werden für einen echten Sidecar benötigt.
DATABASE_URLCLI-spezifischer StandardZiel des Datenbankmigrations-/Generierungstools, unabhängig von der Sidecar-Konfiguration.

Boolesche Eingaben werden durch die Effektkonfiguration dekodiert, nicht durch willkürliche String-Wahrheit. Verwenden Sie explizite Wahr/Falsch-Werte. Unbekannte AI-Hostliterale können nicht dekodiert werden. Geben Sie die Konfiguration an, bevor Sie den Prozess erstellen. Durch das Ändern einer übergeordneten Terminalvariablen wird ein bereits ausgeführter Sidecar nicht aktualisiert.

Verwenden Sie Studio für eine explizite Datenbank

Die lokale Studio-API lauscht am Loopback-Port 4396. Seine Pfadpriorität ist CADCAMFUN_DB, dann DATABASE_URL mit einem file: präfix entfernt, dann Repository-Root data/cadcamfun.db. Dies unterscheidet sich vom Standard-CLI-Arbeitsverzeichnispfad des Datenbankpakets. Es öffnet nur eine vorhandene Datenbank und erstellt/migriert keine automatisch.

Verwenden Sie für Migrationen und Studio dieselbe Einwegdatei
DATABASE_URL=file:/tmp/cadcamfun-studio/cadcamfun.db   bun run db:migrate

CADCAMFUN_DB=/tmp/cadcamfun-studio/cadcamfun.db   bun run --cwd packages/web dev

Der erste Befehl initialisiert die Datei. Das zweite startet Studio plus Astro gegen diesen Weg. Ein frisch migriertes Schema enthält keine Benutzer-/Passwort-Sitzung, nur weil sie existiert; Für die Studio-Anmeldung ist ein geeignetes Konto erforderlich. Seine authentifizierten Anfragen verwenden das Studio-Sitzungscookie und geben 401 ohne gültige Sitzung zurück.

Wenn die Datei fehlt, gibt die Studio-API 503 mit dem ausgewählten Pfad zurück. Wenn Astro ohne den begleitenden Studio-Prozess ausgeführt wird, wird er als Proxy ausgeführt /studio/api anfragen können Port 4396 nicht erreichen. Dokumentationsseiten selbst können mit entwickelt werden packages/web start ohne Studio zu starten.

Umsetzungsanker: packages/web/script/dev.ts, script/studio-server.ts, astro.config.mjs, packages/db/src/migrate.ts, und apps/sidecar/src/config.ts.

Eine wiederholbare Entwicklungsschleife

  1. Wählen Sie ein verfügbares Sidecar-Datenverzeichnis und einen expliziten Migrationsordner.
  2. Starten Sie den Sidecar in einem interaktiven Terminal und zeichnen Sie den Port ab seinem Bereitschaftsereignis auf.
  3. Starten Sie Vite in einem anderen Terminal mit der passenden URL/dem passenden Token oder öffnen Sie die native App mit ihrem überwachten Sidecar.
  4. Reproduzieren Sie eine Aktion und prüfen Sie deren Reaktion und den beibehaltenen Zustand.
  5. Bei Backend-Änderungen starten Sie den Sidecar neu, aktualisieren den Browser-Endpunkt, wenn sich sein Port geändert hat, und wiederholen Sie die Aktion.
  6. Stoppen Sie den Prozess mit seinem normalen Interrupt- oder übergeordneten Shutdown-Pfad, damit die Ressourcen abgeschlossen werden.

Der Sidecar entleert HTTP-Bereiche kurzzeitig, setzt WAL-Prüfpunkte und schließt SQLite beim Herunterfahren mit normalem Bereich. Das Beenden eines Prozesses ohne diesen Pfad kann die Arbeit während des Vorgangs unterbrechen. Eine Quellbearbeitung ersetzt nicht die kompilierte Binärdatei, die bereits von Tauri überwacht wird; Erstellen Sie den Sidecar neu, wenn Sie das kompilierte Verhalten testen.

Für die Validierung zur kompilierten Laufzeit: scripts/smoke-sidecar.ts kann eine ausgewählte Binärdatei mit einem isolierten Home-/Datenverzeichnis und Offline-KI ausführen. Es misst Bereitschaft/Gesundheit/Aktionsverhalten und übt einen Kernel-Job aus. Ohne --binary es kompiliert zunächst eine temporäre ausführbare Datei. Planen Sie daher die Erstellungskosten ein. Das Ergebnis ist unabhängig von Tests auf Quellenebene.

Welcher Prozess läuft wo?

BefehlBeginntDatenverzeichnisDatenbank
bun run desktop:devKompiliertes Sidecar + Tauri-EntwicklungsfensterVon Tauri ausgewähltes Anwendungsdatenverzeichnis<dataDir>/cadcamfun.db
Manueller Sidecar (bun apps/sidecar/src/main.ts)Nur Sidecar, an einem kurzlebigen Loopback-PortCADCAMFUN_DATA_DIR<dataDir>/cadcamfun.db
bun run db:migrateMigrationsskript—DATABASE_URL oder packages/db/data/cadcamfun.db
bun run --filter @cadcamfun/web studioLokales Studio—CADCAMFUN_DB, DATABASE_URL oder data/cadcamfun.db
bun run --filter @cadcamfun/web devDocs-Site——

Vier verschiedene Datenbankstandards

Diese Einstiegspunkte haben keinen gemeinsamen Standardpfad. Legen Sie den Pfad explizit fest, wenn Sie zwei Tools benötigen, um dieselbe Datei anzuzeigen.

Innere Schleife nach Änderungstyp

Du hast dich verändertLaufen
Kernel-Code in packages/corebun test packages/core
Ein Vertrag in packages/apibun run generate, bun run generate:check, die Sidecar-Tests, dann die Dokumente generate:api-reference
Ein Sidecarabfertiger oder -dienstbun test apps/sidecar
Das Schemabun run db:generate, übernehmen Sie den neuen Migrationsordner, bun scripts/build.ts --only=resources
Rust drin src-tauricargo clippy und cargo test in apps/desktop/src-tauri
Dokumentenseitenbun run typecheck und bun run build in packages/web

In 3D

Was läuft, wenn Sie lokal entwickeln? Zum Orbit ziehen · zum Zoomen scrollen · zum Schwenken mit der rechten Maustaste ziehen
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.