Pular para o conteúdo
CADCAMFUN
Docs

Documentação

Desenvolvimento local

Escolha explicitamente o processo da API, o diretório de dados e o modo cliente.

Traduzido automaticamente do inglês. Ver o original em inglês

Processos de desenvolvimento

Uma sessão completa de desenvolvimento de desktop executa um shell Rust, um sidecar Bun e Vite. O shell fornece recursos nativos e supervisiona o sidecar; Vite fornece ativos de visualização da web e recarga dinâmica. bun run desktop:dev prepara os recursos binários e de migração antes de iniciar esses processos.

Para um trabalho de tela mais rápido, execute a área de trabalho dev roteiro sozinho. App.tsx seleciona a API de visualização na memória somente fora do Tauri e somente quando VITE_SIDECAR_URL está ausente. Espera-se que as falhas de visualização de coleções de API não suportadas retornem 501. Use um sidecar ao vivo para persistência, autorização, streaming de IA e serviços de servidor.

Sidecar manual, em um terminal interativo na raiz do repositório
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

O token acima é um exemplo de um processo de desenvolvimento local isolado. Escolha seu próprio valor. Mantenha o stdin aberto: fechá-lo para o sidecar. O servidor imprime um JSON ready evento com sua porta efêmera após /api/health responde; os logs vão para stderr.

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

Substitua a porta 43111 pela porta do evento pronto e use o token fornecido a esse sidecar antes de executar. Vite usa a porta 1420 com seleção estrita de porta, correspondendo ao URL de desenvolvimento Tauri. O sidecar permite origens CORS do navegador em HTTP localhost/loopback e as origens Tauri suportadas; ainda requer a autorização adequada para rotas protegidas.

Diretórios de dados e migrações

O sidecar abre <CADCAMFUN_DATA_DIR>/cadcamfun.db. Tauri escolhe seu próprio diretório de dados do aplicativo e o passa para o filho. Um processo manual usa o diretório que você fornece. Esses bancos de dados são independentes mesmo quando seus nomes de arquivo são idênticos.

O script de migração CLI lê DATABASE_URL e de outra forma usa ./data/cadcamfun.db em relação ao seu diretório de trabalho. Raiz db:migrate corre para dentro packages/db. Escolha um URL de arquivo absoluto para operações CLI deliberadas; não infira o destino a partir de um nome de arquivo relativo mostrado em um log.

Migrar um banco de dados descartável explicitamente selecionado
DATABASE_URL=file:/tmp/cadcamfun-cli/cadcamfun.db bun run db:migrate

As alterações de esquema se originam em packages/db/src/schema.ts. Correr bun run db:generate, revise a migração gerada e aplique-a primeiro a um banco de dados isolado. O sidecar usa CADCAMFUN_MIGRATIONS_DIR quando fornecido; compilações empacotadas preparam o diretório gerado como um recurso.

A camada de banco de dados habilita WAL e chaves estrangeiras. Quando um arquivo existente precisa de migração, o caminho de atualização cria um backup ao lado dele em backups/ e mantém os últimos cinco backups automáticos correspondentes. A primeira criação, um esquema inalterado e bancos de dados na memória não criam um backup de atualização. Preserve os dados de forma independente antes de operações manuais de recuperação.

Verificações direcionadas

Da raiz do repositório
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

Selecione verificações pelo limite alterado. Mudanças de geometria pura precisam de asserções de geometria; As alterações no contrato de API precisam de verificações de clientes gerados e manipuladores afetados; mudanças de persistência precisam de testes de repositório e migração; As alterações na interação da IU precisam do componente relevante e do fluxo de tempo de execução. A raiz test roteiro inclui packages, apps, e scripts.

Verificações de shell nativas são executadas em apps/desktop/src-tauri com cargo clippy --all-targets -- -D warnings e cargo test. Prepare primeiro o sidecar e as migrações de destino, já que o contexto de construção do Tauri inclui esses recursos. Os testes de integração do sistema operacional podem exigir um desktop e chaveiro nativos.

Configuração de tempo de execução

apps/sidecar/src/config.ts possui a camada de configuração sidecar. As entradas necessárias são CADCAMFUN_TOKEN e CADCAMFUN_DATA_DIR. CADCAMFUN_MIGRATIONS_DIR seleciona recursos de migração. O host de IA padrão é nikcli; CADCAMFUN_AI_HOST=direct seleciona chamadas diretas e CADCAMFUN_AI_OFFLINE suporta operação offline/teste.

A configuração opcional inclui o URL do aplicativo e links de autenticação de desenvolvimento, credenciais Stripe e identificadores de preço, configurações de administrador/cron e OTEL_EXPORTER_OTLP_ENDPOINT. A faturação não está disponível sem a configuração do fornecedor relevante; a exportação de telemetria está desativada sem o terminal do coletor. Forneça apenas os insumos necessários para o seu fluxo.

As variáveis de endpoint do navegador são configuração do Vite, não configuração secundária. Um emparelhamento complementar contém um token e um endereço HTTPS diferentes. Um token de ponte de ação independente tem seu próprio escopo e vida útil. Não substitua essas credenciais umas pelas outras.

Use configuração de processo explícita ou configurações de aplicativo. O comando sidecar de amostra desativa o carregamento do arquivo de ambiente do Bun. Nunca imprima tokens reais, chaves de modelo, links de emparelhamento ou material de assinatura em registros ou exemplos de documentação.

Efeito e propriedade de recursos

O repositório fixa Efeito em 4.0.0-rc.112. Uso de serviços Context.Service, as implementações são fornecidas por meio de camadas e as operações retornam efeitos digitados. Utilize o instalado effect/ai-docs/src documentação ao alterar esta API, incluindo seus módulos HTTP instáveis.

Decodifique a entrada externa nos limites. Mapeie exceções estrangeiras em erros digitados, preserve tags de erro estáveis e deixe que uma camada com escopo possua identificadores de banco de dados, trabalhadores, fluxos e recursos de servidor. O fluxo de desligamento do sidecar lida com um evento de desligamento pai, fechamento stdin e interrupção de tempo de execução; logs e protocolo stdout têm destinos diferentes.

Os principais cálculos CAD/CAM permanecem funções simples em hot paths computacionais. A validação de encapsulamento no limite não requer colocar todas as operações geométricas dentro de um Efeito. Use as convenções da unidade geométrica principal e execute conversões de exibição/exportação na aresta apropriada. Os ângulos de desenho usam radianos; alguns parâmetros de recurso e valores de eixo rotativo CAM usam graus explicitamente.

Solução de problemas de inicialização

  • Porto Vite ocupado: liberar porta 1420 ou parar o servidor de desenvolvimento existente; o modo de porta estrito não escolhe outra porta silenciosamente.
  • A inicialização continua tentando novamente: inspecione a saída do sidecar pronto/erro e o caminho de migração. O aplicativo resolve novamente o endpoint enquanto seu orçamento de conexão permanece.
  • O servidor sai imediatamente: verifique a configuração necessária e se o processo de inicialização fechou stdin.
  • Faltam projetos: confirme o diretório de dados, o endpoint da API e se o aplicativo está usando o cliente falso.
  • 401 respostas: verifique se o cliente está usando o token do processo atual em vez de uma inicialização anterior.
  • 501 na visualização do navegador: use um sidecar real para essa coleção de API.
  • A construção do contexto nativo falha: preparar os recursos binários e de migração do sidecar para o destino correto.

Documentação e desenvolvimento complementar

bun run --cwd packages/web start dirige o Astro sozinho. bun run --cwd packages/web dev inicia o Astro mais a API local do Studio. A verificação da documentação valida o índice de rota; a construção valida a compilação e pré-renderização do Astro.

Para iOS, bun run --cwd apps/mobile start inicia o Metro para um cliente de desenvolvimento personalizado. bun run --cwd apps/mobile ios cria/executa o aplicativo nativo; build exporta apenas JavaScript. A fixação nativa requer o módulo Swift local e não pode ser executada no Expo Go.

bun scripts/build.ts --help lista as opções do pipeline de lançamento. --only=resources reorganiza as migrações sem reconstruí-las e --dry-run imprime o plano sem escrever nada.

Referência de configuração de processo

VariávelDefault/requirementUsar
CADCAMFUN_TOKENObrigatórioToken de portador fornecido pelo shell ou inicializador de desenvolvimento.
CADCAMFUN_DATA_DIRObrigatórioBanco de dados sidecar e estado do serviço do aplicativo.
CADCAMFUN_MIGRATIONS_DIROpcionalPasta de migrações geradas. A camada de banco de dados ignora as migrações quando nenhuma pasta é fornecida.
CADCAMFUN_AI_HOSTnikclinikcli host incorporado ou direct Chamadas de IA.
CADCAMFUN_AI_OFFLINEFalsoOperação offline/teste de IA; não é um modelo substituto local.
CADCAMFUN_AI_MINIMAX_BASE_URLDesativarSubstituição opcional do endpoint MiniMax de host incorporado.
CADCAMFUN_APP_URLDesativarOrigem do aplicativo usada em links de autenticação.
CADCAMFUN_DEBUG_LINKSFalsoAs respostas de autenticação de desenvolvimento podem expor links de redefinição/mágicos.
OTEL_EXPORTER_OTLP_ENDPOINTDesativarAtiva a exportação de telemetria quando configurada.
VITE_SIDECAR_URL, VITE_SIDECAR_TOKENDesativarConexão de visualização web do navegador; ambos são necessários para um sidecar real.
DATABASE_URLPadrão específico da CLIAlvo da ferramenta de migração/geração de banco de dados, independente da configuração do sidecar.

As entradas booleanas são decodificadas pela configuração do efeito, e não pela veracidade arbitrária da string. Use valores verdadeiros/falso explícitos. Literais de host de IA desconhecidos falham na decodificação. Configuração do fornecimento antes da criação do processo; alterar uma variável de terminal pai não atualiza um sidecar já em execução.

Use o Studio em um banco de dados explícito

A API local do Studio escuta na porta de loopback 4396. Sua precedência de caminho é CADCAMFUN_DB, então DATABASE_URL com um file: prefixo removido, então raiz do repositório data/cadcamfun.db. Isso difere do caminho do diretório de trabalho CLI padrão do pacote de banco de dados. Ele abre apenas um banco de dados existente e não cria/migra um banco de dados automaticamente.

Use o mesmo arquivo descartável para migrações 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

O primeiro comando inicializa o arquivo. O segundo inicia o Studio mais o Astro nesse caminho. Um novo esquema migrado não contém uma sessão de usuário/senha apenas porque existe; O login no Studio requer uma conta adequada. Suas solicitações autenticadas usam o cookie de sessão do Studio e retornam 401 sem uma sessão válida.

Quando o arquivo estiver ausente, a API Studio retornará 503 com o caminho selecionado. Quando o Astro é executado sem o processo complementar do Studio, o proxy /studio/api as solicitações não podem alcançar a porta 4396. As próprias páginas de documentação podem ser desenvolvidas com packages/web start sem iniciar o Studio.

Âncoras de implementação: packages/web/script/dev.ts, script/studio-server.ts, astro.config.mjs, packages/db/src/migrate.ts, e apps/sidecar/src/config.ts.

Um ciclo de desenvolvimento repetível

  1. Escolha um diretório de dados secundário descartável e uma pasta de migração explícita.
  2. Inicie o sidecar em um terminal interativo e registre a porta a partir de seu evento pronto.
  3. Inicie o Vite em outro terminal com o URL/token correspondente ou abra o aplicativo nativo com seu sidecar supervisionado.
  4. Reproduza uma ação e inspecione sua resposta e estado persistente.
  5. Para alterações de back-end, reinicie o sidecar, atualize o endpoint do navegador se sua porta for alterada e repita a ação.
  6. Pare o processo com sua interrupção normal ou caminho de desligamento pai para que os recursos sejam finalizados.

O sidecar drena brevemente os escopos HTTP, verifica o WAL e fecha o SQLite no desligamento normal do escopo. Eliminar um processo sem esse caminho pode interromper o trabalho em andamento. Uma edição do código-fonte não substitui o binário compilado já supervisionado pelo Tauri; reconstrua o sidecar ao testar o comportamento compilado.

Para validação de tempo de execução compilado, scripts/smoke-sidecar.ts pode executar um binário selecionado com um diretório inicial/dados isolado e IA offline. Ele mede o comportamento de prontidão/saúde/ação e exerce um trabalho de kernel. Sem --binary primeiro ele compila um executável temporário, então planeje o custo de construção; seu resultado é separado dos testes no nível de origem.

Qual processo é executado onde

ComandoComeçaDiretório de dadosBanco de dados
bun run desktop:devSidecar compilado + janela de desenvolvimento TauriDiretório de dados do aplicativo escolhido por Tauri<dataDir>/cadcamfun.db
Sidecar manual (bun apps/sidecar/src/main.ts)Apenas Sidecar, em uma porta de loopback efêmeraCADCAMFUN_DATA_DIR<dataDir>/cadcamfun.db
bun run db:migrateRoteiro de migração—DATABASE_URL ou packages/db/data/cadcamfun.db
bun run --filter @cadcamfun/web studioEstúdio local—CADCAMFUN_DB, DATABASE_URL ou data/cadcamfun.db
bun run --filter @cadcamfun/web devSite de documentos——

Quatro padrões de banco de dados diferentes

Esses pontos de entrada não compartilham um caminho padrão. Defina o caminho explicitamente quando precisar de duas ferramentas para examinar o mesmo arquivo.

Loop interno por tipo de mudança

Você mudouCorrer
Código do kernel em packages/corebun test packages/core
Um contrato em packages/apibun run generate, bun run generate:check, os testes secundários e depois os documentos generate:api-reference
Um manipulador ou serviço sidecarbun test apps/sidecar
O esquemabun run db:generate, confirme a nova pasta de migração, bun scripts/build.ts --only=resources
Rust em src-tauricargo clippy e cargo test em apps/desktop/src-tauri
Páginas de documentosbun run typecheck e bun run build em packages/web

Em 3D

O que funciona quando você desenvolve localmente Arraste para orbitar · role para ampliar · arraste com o botão direito para deslocar
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.