Vai al contenuto
CADCAMFUN
Documentazione

Documentazione

Sviluppo locale

Scegli esplicitamente il processo API, la directory dei dati e la modalità client.

Tradotto automaticamente dall'inglese. Vedi l'originale in inglese

Processi di sviluppo

Una sessione completa di sviluppo desktop esegue una shell Rust, un sidecar Bun e Vite. La shell fornisce funzionalità native e supervisiona il sidecar; Vite fornisce risorse per la visualizzazione Web e ricarica a caldo. bun run desktop:dev prepara le risorse binarie e di migrazione prima di avviare tali processi.

Per un lavoro sullo schermo più veloce, esegui il desktop dev sola sceneggiatura. App.tsx seleziona l'API di anteprima in memoria solo all'esterno di Tauri e solo quando VITE_SIDECAR_URL è assente. Si prevede che gli errori di anteprima per le raccolte API non supportate restituiscano 501. Utilizza un sidecar live per persistenza, autorizzazione, streaming AI e servizi server.

Sidecar manuale, in un terminale interattivo nella root del repository
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

Il token sopra è un esempio di un processo di sviluppo locale isolato. Scegli il tuo valore. Mantieni stdin aperto: chiudendolo si ferma il sidecar. Il server stampa un JSON ready evento con il suo porto effimero dopo /api/health risponde; i log vanno a stderr.

Secondo terminale: browser collegato a quel sidecar
VITE_SIDECAR_URL=http://127.0.0.1:43111 VITE_SIDECAR_TOKEN=local-development-token bun run --filter @cadcamfun/desktop dev

Sostituisci la porta 43111 con la porta ready-event e utilizza il token fornito a quel sidecar prima dell'esecuzione. Vite utilizza la porta 1420 con una selezione rigorosa della porta, corrispondente all'URL di sviluppo Tauri. Il sidecar consente le origini CORS del browser su HTTP localhost/loopback e le origini Tauri supportate; necessita comunque di apposita autorizzazione per i percorsi protetti.

Directory di dati e migrazioni

Il sidecar si apre <CADCAMFUN_DATA_DIR>/cadcamfun.db. Tauri sceglie la propria directory dei dati dell'applicazione e la passa al bambino. Un processo manuale utilizza la directory fornita. Questi database sono indipendenti anche quando il nome del file è identico.

Lo script di migrazione della CLI legge DATABASE_URL e usi diversi ./data/cadcamfun.db rispetto alla sua directory di lavoro. Radice db:migrate corre dentro packages/db. Scegli un URL di file assoluto per operazioni CLI deliberate; non dedurre la destinazione da un nome file relativo mostrato in un registro.

Migrare un database usa e getta selezionato esplicitamente
DATABASE_URL=file:/tmp/cadcamfun-cli/cadcamfun.db bun run db:migrate

Le modifiche allo schema hanno origine in packages/db/src/schema.ts. Correre bun run db:generate, esaminare la migrazione generata e applicarla prima a un database isolato. Il sidecar utilizza CADCAMFUN_MIGRATIONS_DIR quando fornito; le build in pacchetto mettono in scena la directory generata come risorsa.

Il livello del database abilita WAL e chiavi esterne. Quando un file esistente necessita di una migrazione, il percorso di aggiornamento crea un backup accanto ad esso in backups/ e conserva gli ultimi cinque backup automatici corrispondenti. La prima creazione, uno schema invariato e i database in memoria non creano un backup di aggiornamento. Conserva i dati in modo indipendente prima delle operazioni di ripristino manuale.

Controlli mirati

Dalla radice del repository
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

Seleziona i controlli in base al confine modificato. I cambiamenti puramente geometrici necessitano di asserzioni geometriche; Le modifiche al contratto API richiedono controlli dei client generati e dei gestori interessati; le modifiche alla persistenza necessitano di test di repository e migrazione; Le modifiche all'interazione dell'interfaccia utente richiedono il componente pertinente e il flusso di runtime. La radice test lo script include packages, apps, e scripts.

I controlli della shell nativa vengono eseguiti da apps/desktop/src-tauri con cargo clippy --all-targets -- -D warnings e cargo test. Metti prima in scena il sidecar di destinazione e le migrazioni, poiché il contesto di creazione di Tauri include tali risorse. I test di integrazione del sistema operativo possono richiedere un desktop e un portachiavi nativi.

Configurazione in fase di esecuzione

apps/sidecar/src/config.ts possiede il livello di configurazione del sidecar. Gli input richiesti sono CADCAMFUN_TOKEN e CADCAMFUN_DATA_DIR. CADCAMFUN_MIGRATIONS_DIR seleziona le risorse di migrazione. L'host AI predefinito è nikcli; CADCAMFUN_AI_HOST=direct seleziona le chiamate dirette e CADCAMFUN_AI_OFFLINE supporta il funzionamento offline/di prova.

La configurazione opzionale include l'URL dell'applicazione e i collegamenti di autenticazione di sviluppo, credenziali Stripe e identificatori di prezzo, impostazioni amministratore/cron e OTEL_EXPORTER_OTLP_ENDPOINT. La fatturazione non è disponibile senza la configurazione del fornitore pertinente; l'esportazione della telemetria è disattivata senza l'endpoint del raccoglitore. Fornisci solo gli input necessari per il tuo flusso.

Le variabili dell'endpoint del browser sono la configurazione di Vite, non la configurazione del sidecar. Un abbinamento associato contiene un token e un indirizzo HTTPS diversi. Un token action-bridge autonomo ha il proprio ambito e la propria durata. Non sostituire queste credenziali l'una con l'altra.

Utilizzare la configurazione esplicita del processo o le impostazioni dell'applicazione. Il comando sidecar di esempio disabilita il caricamento dei file di ambiente di Bun. Non stampare mai token effettivi, chiavi modello, collegamenti di abbinamento o materiale per la firma in registri o esempi di documentazione.

Effetti e proprietà delle risorse

Il repository aggiunge Effect a 4.0.0-rc.112. Utilizzo dei servizi Context.Service, le implementazioni vengono fornite tramite livelli e le operazioni restituiscono effetti digitati. Utilizzare l'installato effect/ai-docs/src documentazione quando si modifica questa API, inclusi i suoi moduli HTTP instabili.

Decodifica l'input esterno ai confini. Mappare le eccezioni esterne in errori tipizzati, preservare tag di errore stabili e lasciare che un livello con ambito sia proprietario del database, dei lavoratori, dei flussi e delle risorse del server. Il flusso di spegnimento del sidecar gestisce un evento di spegnimento principale, la chiusura dello stdin e l'interruzione del runtime; i log e lo stdout del protocollo hanno destinazioni diverse.

I calcoli CAD/CAM fondamentali rimangono funzioni semplici nei percorsi computazionali caldi. La convalida del wrapper al confine non richiede l'inserimento di tutte le operazioni geometriche all'interno di un effetto. Utilizza le convenzioni delle unità geometriche fondamentali ed esegui conversioni di visualizzazione/esportazione sul bordo appropriato. Gli angoli di disegno utilizzano i radianti; alcuni parametri delle caratteristiche e valori dell'asse rotante CAM utilizzano esplicitamente i gradi.

Risoluzione dei problemi di avvio

  • Porto Vite occupato: porta libera 1420 o arrestare il server di sviluppo esistente; la modalità porta rigorosa non sceglie silenziosamente un'altra porta.
  • L'avvio continua a riprovare: ispezionare l'output di disponibilità/errore del sidecar e il percorso di migrazione. L'app risolve nuovamente l'endpoint mantenendo il budget di connessione.
  • Il server esce immediatamente: controlla la configurazione richiesta e se il processo di avvio ha chiuso stdin.
  • Progetti mancanti: confermare la directory dei dati, l'endpoint API e se l'app utilizza il client falso.
  • 401 risposte: verificare che il client stia utilizzando il token del processo corrente anziché di un avvio precedente.
  • 501 nell'anteprima del browser: usa un vero sidecar per quella raccolta API.
  • La creazione del contesto nativo non riesce: organizzare il binario sidecar e le risorse di migrazione per la destinazione corretta.

Documentazione e sviluppo complementare

bun run --cwd packages/web start gestisce Astro da solo. bun run --cwd packages/web dev avvia Astro più l'API Studio locale. Il controllo della documentazione valida l'indice del percorso; la build convalida la compilazione e il prerendering di Astro.

Per iOS, bun run --cwd apps/mobile start avvia Metro per un client di sviluppo personalizzato. bun run --cwd apps/mobile ios crea/esegue l'app nativa; build esporta solo JavaScript. Il blocco nativo richiede il modulo Swift locale e non può essere eseguito in Expo Go.

bun scripts/build.ts --help elenca le opzioni della pipeline di rilascio. --only=resources rimonta le migrazioni senza ricompilarle e --dry-run stampa la planimetria senza scrivere nulla.

Riferimento alla configurazione del processo

VariabileDefault/requirementUtilizzo
CADCAMFUN_TOKENNecessarioToken portatore fornito dalla shell o dal launcher di sviluppo.
CADCAMFUN_DATA_DIRNecessarioDatabase sidecar e stato del servizio dell'applicazione.
CADCAMFUN_MIGRATIONS_DIROpzionaleCartella delle migrazioni generate. Il livello del database salta le migrazioni quando non viene fornita alcuna cartella.
CADCAMFUN_AI_HOSTnikclinikcli host incorporato o direct L'intelligenza artificiale chiama.
CADCAMFUN_AI_OFFLINEFalsoOperazione AI offline/di prova; non un modello sostitutivo locale.
CADCAMFUN_AI_MINIMAX_BASE_URLDisimpostatoOverride opzionale dell'endpoint MiniMax dell'host incorporato.
CADCAMFUN_APP_URLDisimpostatoOrigine dell'applicazione utilizzata nei collegamenti di autenticazione.
CADCAMFUN_DEBUG_LINKSFalsoLe risposte di autenticazione dello sviluppo possono esporre collegamenti ripristinati/magici.
OTEL_EXPORTER_OTLP_ENDPOINTDisimpostatoAbilita l'esportazione della telemetria quando configurato.
VITE_SIDECAR_URL, VITE_SIDECAR_TOKENDisimpostatoConnessione alla visualizzazione web del browser; entrambi sono necessari per un vero sidecar.
DATABASE_URLImpostazione predefinita specifica della CLIDestinazione dello strumento di migrazione/generazione del database, indipendente dalla configurazione del sidecar.

Gli input booleani vengono decodificati dalla configurazione dell'effetto, non dalla veridicità arbitraria della stringa. Utilizzare valori vero/falso espliciti. I valori letterali host AI sconosciuti non riescono a decodificare. Fornire la configurazione prima di creare il processo; la modifica di una variabile del terminale genitore non aggiorna un sidecar già in esecuzione.

Utilizza Studio rispetto a un database esplicito

L'API di Studio locale è in ascolto sulla porta di loopback 4396. La precedenza del suo percorso è CADCAMFUN_DB, poi DATABASE_URL con a file: prefisso rimosso, quindi repository-root data/cadcamfun.db. Questo è diverso dal percorso della directory di lavoro CLI predefinito del pacchetto database. Apre solo un database esistente e non ne crea/migra uno automaticamente.

Utilizza lo stesso file usa e getta per le migrazioni e Studio
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

Il primo comando inizializza il file. Il secondo avvia Studio più Astro contro quel percorso. Uno schema appena migrato non contiene una sessione utente/password semplicemente perché esiste; L'accesso a Studio richiede un account adatto. Le sue richieste autenticate utilizzano il cookie di sessione di Studio e restituiscono 401 senza una sessione valida.

Quando il file manca, l'API di Studio restituisce 503 con il percorso selezionato. Quando Astro viene eseguito senza il processo Studio associato, proxy /studio/api le richieste non possono raggiungere la porta 4396. È possibile sviluppare le pagine di documentazione stesse packages/web start senza avviare Studio.

Ancore di implementazione: packages/web/script/dev.ts, script/studio-server.ts, astro.config.mjs, packages/db/src/migrate.ts, e apps/sidecar/src/config.ts.

Un ciclo di sviluppo ripetibile

  1. Scegli una directory di dati sidecar usa e getta e una cartella di migrazione esplicita.
  2. Avvia il sidecar in un terminale interattivo e registra il port dal suo evento pronto.
  3. Avvia Vite in un altro terminale con l'URL/token corrispondente oppure apri l'app nativa con il suo sidecar supervisionato.
  4. Riprodurre un'azione e controllarne la risposta e lo stato persistente.
  5. Per le modifiche al backend, riavvia il sidecar, aggiorna l'endpoint del browser se la sua porta è cambiata e ripeti l'azione.
  6. Interrompere il processo con il suo normale percorso di interruzione o arresto principale in modo che le risorse vengano finalizzate.

Il sidecar scarica brevemente gli ambiti HTTP, effettua il checkpoint su WAL e chiude SQLite al normale arresto con ambito. Uccidere un processo senza quel percorso può interrompere il lavoro in volo. Una modifica del sorgente non sostituisce il binario compilato già supervisionato da Tauri; ricostruire il sidecar durante il test del comportamento compilato.

Per la convalida del runtime compilato, scripts/smoke-sidecar.ts può eseguire un binario selezionato con una directory home/dati isolata e un'intelligenza artificiale offline. Misura il comportamento di prontezza/salute/azione ed esercita un lavoro del kernel. Senza --binary prima compila un eseguibile temporaneo, quindi pianifica il costo di costruzione; il suo risultato è separato dai test a livello di sorgente.

Quale processo viene eseguito dove

ComandoIniziaDirectory dei datiBanca dati
bun run desktop:devSidecar compilato + finestra di sviluppo TauriDirectory dei dati dell'applicazione scelta da Tauri<dataDir>/cadcamfun.db
Sidecar manuale (bun apps/sidecar/src/main.ts)Solo sidecar, su una porta di loopback effimeraCADCAMFUN_DATA_DIR<dataDir>/cadcamfun.db
bun run db:migrateScritto di migrazione—DATABASE_URL o packages/db/data/cadcamfun.db
bun run --filter @cadcamfun/web studioStudio locale—CADCAMFUN_DB, DATABASE_URL o data/cadcamfun.db
bun run --filter @cadcamfun/web devSito di documenti——

Quattro diverse impostazioni predefinite del database

Questi punti di ingresso non condividono un percorso predefinito. Imposta il percorso in modo esplicito quando hai bisogno di due strumenti per esaminare lo stesso file.

Ciclo interno per tipo di modifica

Sei cambiatoCorrere
Codice kernel inserito packages/corebun test packages/core
Un contratto dentro packages/apibun run generate, bun run generate:check, i test del sidecar, quindi i documenti generate:api-reference
Un gestore o un servizio di sidecarbun test apps/sidecar
Lo schemabun run db:generate, conferma la nuova cartella di migrazione, bun scripts/build.ts --only=resources
Arrugginire src-tauricargo clippy e cargo test in apps/desktop/src-tauri
Pagine di documentibun run typecheck e bun run build in packages/web

Nel 3D

Cosa funziona quando sviluppi localmente Trascina per orbitare · scorri per ingrandire · trascina con il tasto destro per eseguire la panoramica
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.