Hartmut
c17b7d2e8f
feat: execute workflow bridge nodes in graph runtime
2026-04-07 10:42:59 +02:00
Hartmut
6ad34ceed2
feat: add workflow run dispatch foundation
2026-04-07 10:11:46 +02:00
Hartmut
ab1b220e79
test: close workflow phase 3 executor coverage
2026-04-07 10:00:38 +02:00
Hartmut
98b3eadcb2
feat: extract workflow notifications phase 3
2026-04-07 09:57:39 +02:00
Hartmut
160c198bb3
feat: extract workflow output save phase 3
2026-04-07 09:50:58 +02:00
Hartmut
9c93ecef49
feat: extract workflow bbox services phase 3
2026-04-07 09:42:06 +02:00
Hartmut
8f8d2e68b7
feat: extract workflow material services phase 3
2026-04-07 09:22:24 +02:00
Hartmut
e3cda1c9f7
feat: extract workflow runtime phase 3 foundation
2026-04-07 09:09:40 +02:00
Hartmut
56ee5fc5bf
feat: add workflow node registry phase 2
2026-04-07 08:59:27 +02:00
Hartmut
63e35ce807
feat: stabilize workflow phase 1 foundation
2026-04-07 08:48:48 +02:00
Hartmut
ec667dd56a
refactor: remove dead export_gltf.py, cleanup rendering tasks, improve tessellation UI
...
- Remove export_gltf.py (Blender-based GLB export replaced by OCC direct)
- Remove unused export_gltf_for_order_line_task
- Add Ultra tessellation preset to Admin settings
- Improve tessellation preset descriptions and styling
- Minor cleanup across media, rendering, and workflow modules
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 10:37:35 +01:00
Hartmut
1321ef2bd4
refactor: rename thumbnail_rendering queue to asset_pipeline
...
The queue handles far more than thumbnails: OCC tessellation, USD master
generation, GLB production, order line renders, and workflow renders.
asset_pipeline better reflects its role as the render-worker's primary queue.
Updated all references in: task decorators, celery_app.py, beat_tasks.py,
docker-compose.yml worker command, worker.py MONITORED_QUEUES, admin.py,
CLAUDE.md, LEARNINGS.md, Dockerfile, helpTexts.ts, test files,
and all .claude/commands/*.md skill files.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-12 22:28:38 +01:00
Hartmut
a70cb55d01
feat(N): workflow pipeline, 3D viewer, worker management, QC tests
...
- workflow_builder.py: fix broken stubs, add render_order_line_still_task
(resolves step_path from DB instead of passing order_line_id as step_path)
- domains/rendering/tasks.py: add render_order_line_still_task,
export_gltf_for_order_line_task, export_blend_for_order_line_task,
generate_gltf_geometry_task (trimesh STL→GLB, no Blender needed)
- tasks/step_tasks.py: add generate_gltf_geometry_task for CadFile GLB export
- cad router: POST /{id}/generate-gltf-geometry endpoint (admin/PM)
- worker router: GET /celery-workers + POST /scale (docker compose subprocess)
- Dockerfile: pip install -e "[dev]" to enable pytest
- docker-compose.yml: docker socket + compose file mount on backend
- ThreeDViewer.tsx: mode toggle (geometry/production), wireframe, env presets,
download buttons (GLB + .blend)
- CadPreview.tsx: load gltf_geometry/gltf_production/blend_production assets
from MediaAsset table and pass URLs to ThreeDViewer
- ProductDetail.tsx: "View 3D" button → /cad/:id, "Generate GLB" button
- media router/service: cad_file_id filter on GET /api/media
- WorkerManagement.tsx: new page with worker status, queue depth, scale controls
- App.tsx + Layout.tsx: /workers route + sidebar link (admin/PM)
- tests: test_rendering_service.py, test_orders_service.py (backend)
- tests: WorkerActivity.test.tsx, WorkerManagement.test.tsx (frontend)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-06 22:56:53 +01:00
Hartmut
bfc0050580
feat(L+M): configurable dashboard widget system + test framework
...
Phase L: Dashboard widget system
- Migration 046: dashboard_configs table (user/tenant/role fallback cascade)
- DashboardConfig model + dashboard_service with get/upsert per-user and tenant-default
- API router: GET/PUT /api/dashboard/config, GET/PUT /api/dashboard/tenant-default
- Frontend: 5 widget components (ProductionStats, QueueStatus, RecentRenders, CostOverview, WorkerStatus)
- DashboardGrid with API-backed config, DashboardCustomizeModal (checkbox selection, save/cancel)
- Dashboard.tsx: widget grid + analytics section (privileged users)
- Admin.tsx: restructured with new section order and Maintenance 2-col grid
Phase M: Test framework
- Backend: pytest-asyncio + pytest-cov + factory-boy in pyproject.toml
- conftest.py: excel_dir fixtures + async DB fixtures + mock storage/celery stubs
- Domain tests: billing_service, cache_service, notifications_service, imports_sanity
- Integration: test_api_health.py smoke test (requires running backend)
- Frontend: vitest + @testing-library/react + msw added to package.json
- vite.config.ts: test block (jsdom + globals + setupFiles)
- tsconfig.json: exclude src/__tests__ from main tsc (test runner handles its own types)
- MSW handlers for /api/auth/me, Billing.test.tsx, formatters.test.ts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-06 21:50:07 +01:00