feat: Add Studio UI, intake system, and extractor improvements
Dashboard: - Add Studio page with drag-drop model upload and Claude chat - Add intake system for study creation workflow - Improve session manager and context builder - Add intake API routes and frontend components Optimization Engine: - Add CLI module for command-line operations - Add intake module for study preprocessing - Add validation module with gate checks - Improve Zernike extractor documentation - Update spec models with better validation - Enhance solve_simulation robustness Documentation: - Add ATOMIZER_STUDIO.md planning doc - Add ATOMIZER_UX_SYSTEM.md for UX patterns - Update extractor library docs - Add study-readme-generator skill Tools: - Add test scripts for extraction validation - Add Zernike recentering test Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -85,7 +85,7 @@
|
||||
"created_by": {
|
||||
"type": "string",
|
||||
"description": "Who/what created the spec",
|
||||
"enum": ["canvas", "claude", "api", "migration", "manual"]
|
||||
"enum": ["canvas", "claude", "api", "migration", "manual", "dashboard_intake"]
|
||||
},
|
||||
"modified_by": {
|
||||
"type": "string",
|
||||
@@ -114,6 +114,17 @@
|
||||
"engineering_context": {
|
||||
"type": "string",
|
||||
"description": "Real-world engineering scenario"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "Study lifecycle status",
|
||||
"enum": ["draft", "introspected", "configured", "validated", "ready", "running", "completed", "failed"],
|
||||
"default": "draft"
|
||||
},
|
||||
"topic": {
|
||||
"type": "string",
|
||||
"description": "Topic folder for grouping related studies",
|
||||
"pattern": "^[A-Za-z0-9_]+$"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -215,6 +226,124 @@
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"introspection": {
|
||||
"$ref": "#/definitions/introspection_data",
|
||||
"description": "Model introspection results from intake workflow"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"introspection_data": {
|
||||
"type": "object",
|
||||
"description": "Model introspection results stored in the spec",
|
||||
"properties": {
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When introspection was run"
|
||||
},
|
||||
"solver_type": {
|
||||
"type": "string",
|
||||
"description": "Detected solver type"
|
||||
},
|
||||
"mass_kg": {
|
||||
"type": "number",
|
||||
"description": "Mass from expressions or mass properties"
|
||||
},
|
||||
"volume_mm3": {
|
||||
"type": "number",
|
||||
"description": "Volume from mass properties"
|
||||
},
|
||||
"expressions": {
|
||||
"type": "array",
|
||||
"description": "Discovered NX expressions",
|
||||
"items": {
|
||||
"$ref": "#/definitions/expression_info"
|
||||
}
|
||||
},
|
||||
"baseline": {
|
||||
"$ref": "#/definitions/baseline_data",
|
||||
"description": "Baseline FEA solve results"
|
||||
},
|
||||
"warnings": {
|
||||
"type": "array",
|
||||
"description": "Warnings from introspection",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"expression_info": {
|
||||
"type": "object",
|
||||
"description": "Information about an NX expression from introspection",
|
||||
"required": ["name"],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Expression name in NX"
|
||||
},
|
||||
"value": {
|
||||
"type": "number",
|
||||
"description": "Current value"
|
||||
},
|
||||
"units": {
|
||||
"type": "string",
|
||||
"description": "Physical units"
|
||||
},
|
||||
"formula": {
|
||||
"type": "string",
|
||||
"description": "Expression formula if any"
|
||||
},
|
||||
"is_candidate": {
|
||||
"type": "boolean",
|
||||
"description": "Whether this is a design variable candidate",
|
||||
"default": false
|
||||
},
|
||||
"confidence": {
|
||||
"type": "number",
|
||||
"description": "Confidence that this is a design variable (0.0 to 1.0)",
|
||||
"minimum": 0,
|
||||
"maximum": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"baseline_data": {
|
||||
"type": "object",
|
||||
"description": "Results from baseline FEA solve",
|
||||
"properties": {
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When baseline was run"
|
||||
},
|
||||
"solve_time_seconds": {
|
||||
"type": "number",
|
||||
"description": "How long the solve took"
|
||||
},
|
||||
"mass_kg": {
|
||||
"type": "number",
|
||||
"description": "Computed mass from BDF/FEM"
|
||||
},
|
||||
"max_displacement_mm": {
|
||||
"type": "number",
|
||||
"description": "Max displacement result"
|
||||
},
|
||||
"max_stress_mpa": {
|
||||
"type": "number",
|
||||
"description": "Max von Mises stress"
|
||||
},
|
||||
"success": {
|
||||
"type": "boolean",
|
||||
"description": "Whether baseline solve succeeded",
|
||||
"default": true
|
||||
},
|
||||
"error": {
|
||||
"type": "string",
|
||||
"description": "Error message if failed"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user