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:
@@ -4,7 +4,7 @@
|
||||
"extraction_method": "ZernikeOPD_Annular",
|
||||
"inner_radius_mm": 135.75,
|
||||
"objectives_note": "Mass NOT in objective - WFE only",
|
||||
"total_trials": 169,
|
||||
"total_trials": 171,
|
||||
"feasible_trials": 167,
|
||||
"best_trial": {
|
||||
"number": 163,
|
||||
@@ -24,5 +24,5 @@
|
||||
},
|
||||
"iter_folder": "C:\\Users\\antoi\\Atomizer\\studies\\M1_Mirror\\m1_mirror_cost_reduction_lateral\\2_iterations\\iter164"
|
||||
},
|
||||
"timestamp": "2026-01-14T17:59:38.649254"
|
||||
"timestamp": "2026-01-20T16:12:29.817282"
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
"meta": {
|
||||
"version": "2.0",
|
||||
"created": "2026-01-17T15:35:12.024432Z",
|
||||
"modified": "2026-01-20T20:05:28.197219Z",
|
||||
"modified": "2026-01-22T13:48:14.104039Z",
|
||||
"created_by": "migration",
|
||||
"modified_by": "test",
|
||||
"modified_by": "canvas",
|
||||
"study_name": "m1_mirror_cost_reduction_lateral",
|
||||
"description": "Lateral support optimization with new U-joint expressions (lateral_inner_u, lateral_outer_u) for cost reduction model. Focus on WFE and MFG only - no mass objective.",
|
||||
"tags": [
|
||||
@@ -152,22 +152,6 @@
|
||||
"y": 580
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "variable_1768938898079",
|
||||
"expression_name": "expr_1768938898079",
|
||||
"type": "continuous",
|
||||
"bounds": {
|
||||
"min": 0,
|
||||
"max": 1
|
||||
},
|
||||
"baseline": 0.5,
|
||||
"enabled": true,
|
||||
"canvas_position": {
|
||||
"x": -185.06035488622524,
|
||||
"y": 91.62521000204346
|
||||
},
|
||||
"id": "dv_008"
|
||||
},
|
||||
{
|
||||
"name": "test_dv",
|
||||
"expression_name": "test_expr",
|
||||
@@ -304,6 +288,27 @@
|
||||
"y": 262.2501934501369
|
||||
},
|
||||
"id": "ext_004"
|
||||
},
|
||||
{
|
||||
"name": "extractor_1769089672375",
|
||||
"type": "custom_function",
|
||||
"builtin": false,
|
||||
"enabled": true,
|
||||
"function": {
|
||||
"name": "extract",
|
||||
"source_code": "def extract(op2_path: str, config: dict = None) -> dict:\n \"\"\"\n Custom extractor function.\n \n Args:\n op2_path: Path to the OP2 results file\n config: Optional configuration dict\n \n Returns:\n Dictionary with extracted values\n \"\"\"\n # TODO: Implement extraction logic\n return {'value': 0.0}\n"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "value",
|
||||
"metric": "custom"
|
||||
}
|
||||
],
|
||||
"canvas_position": {
|
||||
"x": 1114.5479601736847,
|
||||
"y": 880.0345512775555
|
||||
},
|
||||
"id": "ext_006"
|
||||
}
|
||||
],
|
||||
"objectives": [
|
||||
|
||||
Reference in New Issue
Block a user