refactor(P1): complete pipeline cleanup — M1 dead code + M3 blender split

M1 dead code removal:
- admin.py: remove VALID_STL_QUALITIES + stl_quality (7 locations)
- frontend: remove stl_quality from 6 files (api/orders.ts, api/worker.ts,
  WorkerActivity.tsx, RenderInfoModal.tsx, helpTexts.ts, mocks/handlers.ts)
- blender_render.py: delete _mark_sharp_and_seams() — dead, never called (62 lines)
- step_processor.py: delete _render_via_service() + 2 elif renderer=="threejs" branches
- renderproblems_tmp/: remove 3 orphaned debug images

M3 blender_render.py decomposition (858 → 248 lines):
- _blender_gpu.py: activate_gpu(), configure_engine()
- _blender_import.py: import_glb(), apply_rotation()
- _blender_materials.py: FAILED_MATERIAL_NAME, assign_failed_material(),
  build_mat_map_lower(), apply_material_library()
- _blender_camera.py: setup_auto_camera(), setup_auto_lights()
- _blender_scene.py: ensure_collection(), apply_smooth_batch(),
  apply_sharp_edges_from_occ(), setup_shadow_catcher()
- Entry-point: sys.path.insert for submodule discovery; arg-parse + Mode A/B orchestration only

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 22:19:59 +01:00
parent 4f0fe2c8c7
commit 393e4b92a7
19 changed files with 876 additions and 1036 deletions
-1
View File
@@ -7,7 +7,6 @@ export const handlers = [
blender_cycles_samples: 256,
blender_eevee_samples: 64,
thumbnail_format: 'jpg',
stl_quality: 'low',
blender_smooth_angle: 30,
cycles_device: 'auto',
blender_max_concurrent_renders: 3,
-1
View File
@@ -9,7 +9,6 @@ export interface RenderLog {
engine?: string
engine_used?: string
samples?: number
stl_quality?: string
smooth_angle?: number
total_duration_s?: number
stl_duration_s?: number
-1
View File
@@ -7,7 +7,6 @@ export interface RenderLog {
engine_used?: string
samples?: number
cycles_device?: string
stl_quality?: string
smooth_angle?: number
width?: number
height?: number
@@ -141,7 +141,6 @@ export default function RenderInfoModal({
)}
{rl.format && <Row label="Format" value={rl.format.toUpperCase()} />}
{rl.parts_count != null && <Row label="Parts" value={rl.parts_count} />}
{rl.stl_quality && <Row label="STL Quality" value={rl.stl_quality} />}
{rl.smooth_angle != null && <Row label="Smooth Angle" value={`${rl.smooth_angle}°`} />}
</div>
</div>
-5
View File
@@ -35,11 +35,6 @@ export const HELP_TEXTS: Record<string, HelpText> = {
body: 'Which renderer to use for STEP file thumbnails. Blender produces photorealistic results; Three.js is faster but lower quality.',
recommendation: 'Use Blender for production, Three.js for fast previews',
},
'setting.stl_quality': {
title: 'STL Export Quality',
body: 'Controls tessellation precision when converting STEP to STL for older render paths. High quality = finer mesh, larger file, slower conversion.',
recommendation: 'Low is sufficient for most thumbnails',
},
'action.regenerate_thumbnails': {
title: 'Regenerate All Thumbnails',
body: 'Re-renders thumbnails for all STEP files using current renderer settings. Queues every file on the thumbnail_rendering worker.',
-1
View File
@@ -524,7 +524,6 @@ function RenderDetails({ entry }: { entry: CadActivityEntry }) {
<KV label="Engine" value={log.engine_used ?? log.engine ?? '—'} highlight={log.engine_used !== log.engine} />
<KV label="Samples" value={log.samples?.toString() ?? '—'} />
<KV label="Device" value={log.cycles_device ?? '—'} />
<KV label="STL quality" value={log.stl_quality ?? '—'} />
<KV label="Smooth angle" value={log.smooth_angle != null ? `${log.smooth_angle}°` : '—'} />
<KV label="Resolution" value={log.width && log.height ? `${log.width}×${log.height}` : '—'} />
</>}