diff options
| author | Somhairle H. Marisol <[email protected]> | 2026-09-21 09:27:28 +0800 |
|---|---|---|
| committer | Somhairle H. Marisol <[email protected]> | 2026-09-21 09:27:28 +0800 |
| commit | 07d6690b9b9de7db7debe25e8e3def5c0d68bb26 (patch) | |
| tree | dad82e0b692bc34ea1764652c63cb36bc67bcec8 /src/SomhairlesDream.Modeling/Definitions.fs | |
| parent | bba99bea934fe397b6aed59d3f33a5315799fa28 (diff) | |
| download | somhairles-dream-fsharp-07d6690b9b9de7db7debe25e8e3def5c0d68bb26.tar.gz | |
feat(probe): YJ-01 real-probe 7-stage dataset + probe design branch in pipeline/CLI
Diffstat (limited to 'src/SomhairlesDream.Modeling/Definitions.fs')
| -rw-r--r-- | src/SomhairlesDream.Modeling/Definitions.fs | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/SomhairlesDream.Modeling/Definitions.fs b/src/SomhairlesDream.Modeling/Definitions.fs index 64e6bc6..9a9256e 100644 --- a/src/SomhairlesDream.Modeling/Definitions.fs +++ b/src/SomhairlesDream.Modeling/Definitions.fs @@ -29,3 +29,68 @@ module Design = Changes = [| { ObjectId = "heritage.cabin"; Kind = "add"; Summary = "Add cabin volume" } { ObjectId = "heritage.crossbeam"; Kind = "add"; Summary = "Add cabin crossbeam" } |] } |] + + // YJ-01 Voyager-class current-tech probe (source: interstellar-dual-track/current-tech-probe + // scripts/build_probe.py, line ranges cited per step). Object ids map the legacy + // UPPER_SNAKE names onto lowercase dotted ids via documented rule + // (probe.bus.bay.panel.00 <- BUS_BAY_PANEL_00, probe.rtg.01.fin.00 <- RTG_01_FIN_0). + // Display plinth, information card and MODEL_LABEL are intentionally excluded. + let probeSteps : DesignStep array = + let bus = + [| "probe.bus.electronics.decagon"; "probe.bus.ring.front"; "probe.bus.ring.rear" + "probe.bus.bay.panel.00"; "probe.bus.bay.panel.01"; "probe.bus.bay.panel.02" + "probe.bus.bay.panel.03"; "probe.bus.bay.panel.04"; "probe.bus.bay.panel.05" + "probe.bus.bay.panel.06"; "probe.bus.bay.panel.07"; "probe.bus.bay.panel.08" + "probe.bus.bay.panel.09" + "probe.bus.mli.top"; "probe.bus.mli.bottom" + "probe.bus.radiator.port"; "probe.bus.radiator.starboard" + "probe.aacs" + "probe.thruster.01"; "probe.thruster.02"; "probe.thruster.03"; "probe.thruster.04" |] + let booms = + [| "probe.rtg.boom" + "probe.mag.boom"; "probe.mag.head"; "probe.mag.sensor.a"; "probe.mag.sensor.b" + "probe.pws.antenna.left"; "probe.pws.antenna.right" + "probe.pws.tip.left"; "probe.pws.tip.right" |] + let rtgs = + [| "probe.rtg.01"; "probe.rtg.01.fin.00"; "probe.rtg.01.fin.01"; "probe.rtg.01.fin.02" + "probe.rtg.02"; "probe.rtg.02.fin.00"; "probe.rtg.02.fin.01"; "probe.rtg.02.fin.02" + "probe.rtg.03"; "probe.rtg.03.fin.00"; "probe.rtg.03.fin.01"; "probe.rtg.03.fin.02" |] + let hga = + [| "probe.hga.reflector"; "probe.hga.feed" + "probe.hga.strut.00"; "probe.hga.strut.01"; "probe.hga.strut.02"; "probe.hga.strut.03" |] + let instruments = + [| "probe.scan.pivot"; "probe.scan.platform" + "probe.crs"; "probe.plasma"; "probe.optical"; "probe.optical.aperture" |] + let mast = [| "probe.science.boom" |] + let prior (prefix: string array) (current: string array) = + Array.append prefix current + + let busChanges = bus |> Array.map (fun id -> { ObjectId = id; Kind = "add"; Summary = "Add ten-sided bus with bay panels, MLI and radiators" }) + let boomChanges = booms |> Array.map (fun id -> { ObjectId = id; Kind = "add"; Summary = "Add fields-and-particles and RTG support booms" }) + let rtgChanges = rtgs |> Array.map (fun id -> { ObjectId = id; Kind = "add"; Summary = "Add three RTGs with heat-rejection fins" }) + let hgaChanges = hga |> Array.map (fun id -> { ObjectId = id; Kind = "add"; Summary = "Add high-gain antenna, feed and struts" }) + let instrumentChanges = instruments |> Array.map (fun id -> { ObjectId = id; Kind = "add"; Summary = "Add articulated scan platform with science instruments" }) + let mastChanges = mast |> Array.map (fun id -> { ObjectId = id; Kind = "add"; Summary = "Add deployable science mast" }) + let liveryChanges = + [| { ObjectId = "probe.hga.reflector"; Kind = "update"; Summary = "Livery pass: reflector white finish" } + { ObjectId = "probe.bus.mli.top"; Kind = "update"; Summary = "Livery pass: MLI gold foil finish" } + { ObjectId = "probe.bus.bay.panel.01"; Kind = "update"; Summary = "Livery pass: restrained red accents on bay panels" } + { ObjectId = "probe.pws.tip.left"; Kind = "update"; Summary = "Livery pass: red antenna tip markers" } + { ObjectId = "probe.bus.electronics.decagon"; Kind = "update"; Summary = "Livery pass: body blue basecoat" } + { ObjectId = "probe.rtg.01"; Kind = "update"; Summary = "Livery pass: graphite RTG housings" } |] + + [| { StepId = "probe-01-bus"; Index = 0; ObjectIds = bus; Changes = busChanges } + { StepId = "probe-02-boom"; Index = 1; ObjectIds = prior bus booms; Changes = boomChanges } + { StepId = "probe-03-rtg"; Index = 2; ObjectIds = prior (prior bus booms) rtgs; Changes = rtgChanges } + { StepId = "probe-04-hga"; Index = 3; ObjectIds = prior (prior (prior bus booms) rtgs) hga; Changes = hgaChanges } + { StepId = "probe-05-instruments"; Index = 4 + ObjectIds = prior (prior (prior (prior bus booms) rtgs) hga) instruments; Changes = instrumentChanges } + { StepId = "probe-06-mast"; Index = 5 + ObjectIds = prior (prior (prior (prior (prior bus booms) rtgs) hga) instruments) mast + Changes = mastChanges } + { StepId = "probe-07-livery"; Index = 6 + ObjectIds = prior (prior (prior (prior (prior (prior bus booms) rtgs) hga) instruments) mast) [||] + Changes = liveryChanges } |] + + let forProject (projectId: string) : DesignStep array = + if projectId.StartsWith("probe-") then probeSteps else steps |
