feat(smart-3d): replica card de engenharia e adiciona ferramenta girar 90 com trava

This commit is contained in:
2026-10-15 16:29:17 -03:00
parent 16414ca4ba
commit ac8bacc9e1
2 changed files with 354 additions and 98 deletions
@@ -20,6 +20,7 @@ export const SmartViewer3DFlow: React.FC<SmartViewer3DFlowProps> = ({
const [modelData, setModelData] = useState<LoadedModel3DResult | null>(null);
const [phasesList, setPhasesList] = useState<string[]>([]);
const [productionMap, setProductionMap] = useState<Map<string, ProductionPieceStatus>>(new Map());
const [initialRotation, setInitialRotation] = useState<{ x: number; y: number; z: number } | null>(null);
// Loading States
const [isLoading, setIsLoading] = useState<boolean>(true);
@@ -35,10 +36,10 @@ export const SmartViewer3DFlow: React.FC<SmartViewer3DFlowProps> = ({
setLoadingPercent(15);
try {
// 1.1. Buscar registro da OF para obter URL do IFC
// 1.1. Buscar registro da OF para obter URL do IFC e rotação memorizada
const { data: ofData, error: ofError } = await supabase
.from('ordens_fabricacao' as any)
.select('id, num_of, descritivo, ifc_url, ifc_filename')
.select('id, num_of, descritivo, ifc_url, ifc_filename, model_3d_rotation')
.eq('num_of', obra.of_number)
.maybeSingle();
@@ -52,6 +53,9 @@ export const SmartViewer3DFlow: React.FC<SmartViewer3DFlowProps> = ({
const ifcUrl = (ofData as any).ifc_url;
const ifcFilename = (ofData as any).ifc_filename;
if ((ofData as any).model_3d_rotation) {
setInitialRotation((ofData as any).model_3d_rotation);
}
// 1.2. Buscar Peças e Apontamentos em paralelo
setLoadingStep('Carregando dados das peças e apontamentos...');
@@ -87,6 +91,8 @@ export const SmartViewer3DFlow: React.FC<SmartViewer3DFlowProps> = ({
marca: marcaStr,
fase,
etapa_fase: fase,
descricao: p.descricao || '',
perfilPrincipal: p.perfil_principal || p.descricao || '',
totalQtd: Number(p.quantidade || 1),
pointedQtd: 0,
currentProcessName: 'Pendente',
@@ -277,6 +283,7 @@ export const SmartViewer3DFlow: React.FC<SmartViewer3DFlowProps> = ({
selectedOF={obra.of_number}
cliente={obra.cliente}
phasesList={phasesList}
initialRotation={initialRotation}
onVoltar={onVoltarHub}
/>
</div>