Saltar al contenido
CADCAMFUN
Documentos

Documentación

Desarrollo local

Elija explícitamente el proceso API, el directorio de datos y el modo de cliente.

Traducido automáticamente del inglés. Ver el original en inglés

Procesos de desarrollo

Una sesión de desarrollo de escritorio completa ejecuta un shell Rust, un sidecar Bun y Vite. El caparazón proporciona características nativas y supervisa el sidecar; Vite proporciona recursos de vista web y recarga en caliente. bun run desktop:dev prepara los recursos binarios y de migración antes de iniciar esos procesos.

Para un trabajo de pantalla más rápido, ejecute el escritorio dev guión solo. App.tsx selecciona la API de vista previa en memoria solo fuera de Tauri y solo cuando VITE_SIDECAR_URL está ausente. Se espera que los errores de vista previa de colecciones de API no compatibles devuelvan 501. Utilice un complemento en vivo para persistencia, autorización, transmisión de IA y servicios de servidor.

Sidecar manual, en una terminal interactiva en la raíz del repositorio
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

El token anterior es un ejemplo de un proceso de desarrollo local aislado. Elige tu propio valor. Mantener stdin abierto: cerrarlo detiene el sidecar. El servidor imprime un JSON ready evento con su efímero puerto después /api/health responde; los registros van a stderr.

Segundo terminal: navegador conectado a ese sidecar
VITE_SIDECAR_URL=http://127.0.0.1:43111 VITE_SIDECAR_TOKEN=local-development-token bun run --filter @cadcamfun/desktop dev

Reemplace el puerto 43111 con el puerto de evento listo y use el token proporcionado a ese sidecar antes de ejecutar. Vite usa el puerto 1420 con una selección de puerto estricta, que coincide con la URL de desarrollo de Tauri. El sidecar permite orígenes CORS del navegador en HTTP localhost/loopback y los orígenes Tauri admitidos; todavía requiere la autorización adecuada para rutas protegidas.

Directorios de datos y migraciones.

El sidecar se abre <CADCAMFUN_DATA_DIR>/cadcamfun.db. Tauri elige su propio directorio de datos de la aplicación y se lo pasa al niño. Un proceso manual utiliza el directorio que usted proporciona. Estas bases de datos son independientes incluso cuando su nombre de archivo sea idéntico.

El script de migración CLI dice DATABASE_URL y otros usos ./data/cadcamfun.db en relación con su directorio de trabajo. Raíz db:migrate corre dentro packages/db. Elija una URL de archivo absoluta para operaciones CLI deliberadas; no infiera el destino a partir de un nombre de archivo relativo que se muestra en un registro.

Migrar una base de datos desechable seleccionada explícitamente
DATABASE_URL=file:/tmp/cadcamfun-cli/cadcamfun.db bun run db:migrate

Los cambios de esquema se originan en packages/db/src/schema.ts. Correr bun run db:generate, revise la migración generada y aplíquela primero a una base de datos aislada. El sidecar utiliza CADCAMFUN_MIGRATIONS_DIR cuando se proporcione; Las compilaciones empaquetadas presentan el directorio generado como un recurso.

La capa de base de datos habilita WAL y claves externas. Cuando un archivo existente necesita una migración, la ruta de actualización crea una copia de seguridad junto a él en backups/ y conserva las últimas cinco copias de seguridad automáticas coincidentes. La primera creación, un esquema sin cambios y las bases de datos en memoria no crean una copia de seguridad de actualización. Conserve los datos de forma independiente antes de las operaciones de recuperación manual.

Controles específicos

Desde la raíz del repositorio
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

Seleccione los controles por el límite cambiado. Los cambios de geometría pura necesitan afirmaciones de geometría; Los cambios en el contrato de API necesitan comprobaciones del cliente generado y controladores afectados; los cambios de persistencia necesitan pruebas de migración y repositorio; Los cambios en la interacción de la interfaz de usuario necesitan el componente y el flujo de tiempo de ejecución relevantes. la raiz test guión incluye packages, apps, y scripts.

Las comprobaciones de shell nativas se ejecutan desde apps/desktop/src-tauri con cargo clippy --all-targets -- -D warnings y cargo test. Prepare primero el sidecar objetivo y las migraciones, ya que el contexto de compilación de Tauri incluye esos recursos. Las pruebas de integración del sistema operativo pueden requerir un escritorio y un llavero nativos.

Configuración de tiempo de ejecución

apps/sidecar/src/config.ts posee la capa de configuración del sidecar. Los insumos requeridos son CADCAMFUN_TOKEN y CADCAMFUN_DATA_DIR. CADCAMFUN_MIGRATIONS_DIR selecciona los recursos de migración. El host de IA predeterminado es nikcli; CADCAMFUN_AI_HOST=direct selecciona llamadas directas y CADCAMFUN_AI_OFFLINE admite funcionamiento fuera de línea/de prueba.

La configuración opcional incluye la URL de la aplicación y los enlaces de autenticación de desarrollo, las credenciales de Stripe y los identificadores de precios, la configuración de administrador/cron y OTEL_EXPORTER_OTLP_ENDPOINT. La facturación no está disponible sin la configuración del proveedor correspondiente; La exportación de telemetría está desactivada sin su punto final de recopilador. Suministre solo los insumos necesarios para su flujo.

Las variables del punto final del navegador son la configuración de Vite, no la configuración de sidecar. Un emparejamiento complementario contiene un token y una dirección HTTPS diferentes. Un token de puente de acción independiente tiene su propio alcance y vida útil. No sustituya estas credenciales entre sí.

Utilice la configuración de proceso explícita o la configuración de la aplicación. El comando sidecar de muestra deshabilita la carga de archivos de entorno de Bun. Nunca imprima fichas reales, claves de modelo, enlaces de emparejamiento o material de firma en registros o ejemplos de documentación.

Efecto y propiedad de los recursos

El repositorio fija el efecto a 4.0.0-rc.112. Uso de servicios Context.Service, las implementaciones se proporcionan a través de capas y las operaciones devuelven efectos escritos. Utilice el instalado effect/ai-docs/src documentación al cambiar esta API, incluidos sus módulos HTTP inestables.

Decodifica la entrada externa en los límites. Asigne excepciones externas a errores escritos, conserve etiquetas de error estables y permita que una capa con alcance sea dueña de los identificadores de la base de datos, los trabajadores, los flujos y los recursos del servidor. El flujo de apagado del sidecar maneja un evento de apagado principal, un cierre estándar y una interrupción del tiempo de ejecución; Los registros y la salida estándar del protocolo tienen destinos diferentes.

Los cálculos básicos de CAD/CAM siguen siendo funciones simples en rutas computacionales activas. La validación de ajuste en el límite no requiere colocar cada operación de geometría dentro de un Efecto. Utilice las convenciones de unidades de geometría principales y realice conversiones de visualización/exportación en el borde apropiado. Los ángulos de dibujo utilizan radianes; algunos parámetros de funciones y valores del eje giratorio CAM utilizan explícitamente grados.

Solución de problemas de inicio

  • Puerto de Vite ocupado: libere el puerto 1420 o detenga el servidor de desarrollo existente; El modo de puerto estricto no elige silenciosamente otro puerto.
  • El arranque sigue reintentando: inspeccione la salida de error/preparado del sidecar y la ruta de migración. La aplicación vuelve a resolver el punto final mientras se mantiene su presupuesto de conexión.
  • El servidor sale inmediatamente: verifique la configuración requerida y si el proceso de inicio cerró la entrada estándar.
  • Proyectos que faltan: confirme el directorio de datos, el punto final de la API y si la aplicación está utilizando el cliente falso.
  • 401 respuestas: verifique que el cliente esté utilizando el token del proceso actual en lugar de un lanzamiento anterior.
  • 501 en la vista previa del navegador: use un sidecar real para esa colección de API.
  • La compilación del contexto nativo falla: prepare los recursos binarios y de migración del sidecar para el objetivo correcto.

Documentación y desarrollo complementario.

bun run --cwd packages/web start ejecuta Astro solo. bun run --cwd packages/web dev inicia Astro más la API de Studio local. La verificación de la documentación valida el índice de ruta; la compilación valida la compilación y el renderizado previo de Astro.

Para iOS, bun run --cwd apps/mobile start inicia Metro para un cliente de desarrollo personalizado. bun run --cwd apps/mobile ios construye/ejecuta la aplicación nativa; build exporta JavaScript únicamente. La fijación nativa requiere el módulo Swift local y no se puede ejecutar en Expo Go.

bun scripts/build.ts --help enumera las opciones del canal de lanzamiento. --only=resources reprogramar las migraciones sin reconstruir, y --dry-run imprime el plano sin escribir nada.

Referencia de configuración de procesos

VariableDefault/requirementUsar
CADCAMFUN_TOKENRequeridoToken de portador proporcionado por el shell o el iniciador de desarrollo.
CADCAMFUN_DATA_DIRRequeridoBase de datos Sidecar y estado del servicio de la aplicación.
CADCAMFUN_MIGRATIONS_DIROpcionalCarpeta de migraciones generadas. La capa de base de datos omite las migraciones cuando no se proporciona ninguna carpeta.
CADCAMFUN_AI_HOSTnikclinikcli host integrado o direct Llamadas de IA.
CADCAMFUN_AI_OFFLINEFALSOOperación de IA fuera de línea/de prueba; no es un modelo sustituto local.
CADCAMFUN_AI_MINIMAX_BASE_URLDesarmadoAnulación opcional del punto final MiniMax del host integrado.
CADCAMFUN_APP_URLDesarmadoOrigen de la aplicación utilizada en los enlaces de autenticación.
CADCAMFUN_DEBUG_LINKSFALSOLas respuestas de autenticación de desarrollo pueden exponer enlaces mágicos o de reinicio.
OTEL_EXPORTER_OTLP_ENDPOINTDesarmadoHabilita la exportación de telemetría cuando está configurada.
VITE_SIDECAR_URL, VITE_SIDECAR_TOKENDesarmadoConexión de vista web del navegador; Ambos son necesarios para un sidecar real.
DATABASE_URLValor predeterminado específico de CLIDestino de la herramienta de generación/migración de bases de datos, independiente de la configuración del sidecar.

Las entradas booleanas se decodifican según la configuración del efecto, no por la veracidad de las cadenas arbitrarias. Utilice valores verdadero/falso explícitos. Los literales de host de IA desconocidos no se pueden decodificar. Configuración de suministro antes de crear el proceso; cambiar una variable de terminal principal no actualiza un sidecar que ya se está ejecutando.

Utilice Studio en una base de datos explícita

La API de Studio local escucha en el puerto de bucle invertido 4396. Su precedencia de ruta es CADCAMFUN_DB, entonces DATABASE_URL con un file: prefijo eliminado, luego raíz del repositorio data/cadcamfun.db. Esto difiere de la ruta del directorio de trabajo CLI predeterminada del paquete de base de datos. Abre solo una base de datos existente y no crea ni migra ninguna automáticamente.

Utilice el mismo archivo desechable para migraciones y 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

El primer comando inicializa el archivo. El segundo inicia Studio plus Astro en ese camino. Un esquema migrado nuevo no contiene una sesión de usuario/contraseña simplemente porque existe; El inicio de sesión en Studio requiere una cuenta adecuada. Sus solicitudes autenticadas utilizan la cookie de sesión de Studio y devuelven 401 sin una sesión válida.

Cuando falta el archivo, la API de Studio devuelve 503 con la ruta seleccionada. Cuando Astro se ejecuta sin el proceso complementario de Studio, el proxy /studio/api las solicitudes no pueden llegar al puerto 4396. Las propias páginas de documentación se pueden desarrollar con packages/web start sin iniciar Studio.

Anclas de implementación: packages/web/script/dev.ts, script/studio-server.ts, astro.config.mjs, packages/db/src/migrate.ts, y apps/sidecar/src/config.ts.

Un ciclo de desarrollo repetible

  1. Elija un directorio de datos complementario desechable y una carpeta de migración explícita.
  2. Inicie el sidecar en una terminal interactiva y registre el puerto desde su evento listo.
  3. Inicie Vite en otra terminal con la URL/token coincidente, o abra la aplicación nativa con su sidecar supervisado.
  4. Reproduzca una acción e inspeccione su respuesta y su estado persistente.
  5. Para cambios de backend, reinicie el sidecar, actualice el punto final del navegador si su puerto cambió y repita la acción.
  6. Detenga el proceso con su interrupción normal o ruta de cierre principal para que finalicen los recursos.

El sidecar drena los alcances HTTP brevemente, controla WAL y cierra SQLite en el cierre de alcance normal. Matar un proceso sin esa ruta puede interrumpir el trabajo en vuelo. Una edición del código fuente no reemplaza el binario compilado ya supervisado por Tauri; reconstruir el sidecar al probar el comportamiento compilado.

Para la validación en tiempo de ejecución compilado, scripts/smoke-sidecar.ts puede ejecutar un binario seleccionado con un directorio de inicio/datos aislado y AI fuera de línea. Mide la preparación/salud/comportamiento de acción y ejerce un trabajo central. Sin --binary primero compila un ejecutable temporal, por lo que debe planificar el costo de construcción; su resultado está separado de las pruebas a nivel de fuente.

¿Qué proceso se ejecuta dónde?

DominioComienzaDirectorio de datosBase de datos
bun run desktop:devSidecar compilado + ventana de desarrollo de TauriDirectorio de datos de la aplicación elegido por Tauri<dataDir>/cadcamfun.db
Sidecar manual (bun apps/sidecar/src/main.ts)Solo sidecar, en un puerto loopback efímeroCADCAMFUN_DATA_DIR<dataDir>/cadcamfun.db
bun run db:migrateGuión de migración—DATABASE_URL o packages/db/data/cadcamfun.db
bun run --filter @cadcamfun/web studioestudio local—CADCAMFUN_DB, DATABASE_URL o data/cadcamfun.db
bun run --filter @cadcamfun/web devSitio de documentos——

Cuatro valores predeterminados de bases de datos diferentes

Estos puntos de entrada no comparten una ruta predeterminada. Establezca la ruta explícitamente cuando necesite dos herramientas para mirar el mismo archivo.

Bucle interno por tipo de cambio

tu cambiasteCorrer
código kernel en packages/corebun test packages/core
un contrato en packages/apibun run generate, bun run generate:check, las pruebas del sidecar, luego los documentos generate:api-reference
Un manejador o servicio de sidecarbun test apps/sidecar
El esquemabun run db:generate, confirme la nueva carpeta de migración, bun scripts/build.ts --only=resources
Rust en src-tauricargo clippy y cargo test en apps/desktop/src-tauri
Páginas de documentosbun run typecheck y bun run build en packages/web

En 3D

Qué se ejecuta cuando desarrollas localmente Arrastrar para orbitar · desplazarse para hacer zoom · arrastrar con el botón derecho para desplazarse
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.