@enerlence/suntropy-cli 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -140,14 +140,17 @@ suntropy inventory panels delete <id>
140
140
  # kits, charger-kits, heatpump-kits, manufacturers
141
141
  ```
142
142
 
143
- **Kit assembly:**
143
+ **Kit assembly (create kit components first, then assemble):**
144
144
 
145
145
  ```bash
146
- suntropy inventory kits panels create --data '{"name":"Panel Kit","peakPower":450}'
147
- suntropy inventory kits inverters create --data '{"name":"Inversor Kit","nominalPower":5000}'
146
+ # 1. Create kit-specific panel and inverter
147
+ suntropy inventory kits panels create --data '{"name":"Panel Kit 450W","peakPower":450}'
148
+ suntropy inventory kits inverters create --data '{"name":"Inversor Kit 5kW","nominalPower":5000}'
149
+
150
+ # 2. Assemble kit referencing component IDs
148
151
  suntropy inventory kits assemble \
149
152
  --name "Kit Solar 5kW" \
150
- --panel <panelId> --inverter <inverterId> \
153
+ --panel <kitPanelId> --inverter <kitInverterId> \
151
154
  --panels-count 12 --peak-power 5.4 --price 3500
152
155
  ```
153
156
 
@@ -632,35 +632,8 @@ function registerKitsCommands(inventory) {
632
632
  batchDeletePath: "delete-batch-solar-kits",
633
633
  getViaFilter: true
634
634
  });
635
- const kitsCreate = kits.commands.find((c) => c.name() === "create");
636
- if (kitsCreate) {
637
- kitsCreate.description(
638
- `Create a solar kit via raw JSON. Prefer "assemble" for guided creation.
639
-
640
- Required fields:
641
- identifier (string) \u2014 Kit name (NOT "name")
642
- price (number) \u2014 Kit price in EUR
643
- panelNumber (number) \u2014 Number of panels
644
- inverterNumber (number) \u2014 Number of inverters
645
- phaseNumber (string) \u2014 "single_phase" or "three_phase"
646
-
647
- Component relations (use kit-specific IDs, NOT inventory IDs):
648
- kitSolarPanel: {"idKitSolarPanel": <id>} \u2014 from "kits panels list/create"
649
- kitInverter: {"idKitInverter": <id>} \u2014 from "kits inverters list/create"
650
- battery: {"batteryId": <id>} \u2014 from "inventory batteries list"
651
-
652
- Optional fields:
653
- peakPower, coplanar, defaultTaxesPercentage, active, batteriesNumber,
654
- useTotalKitCostAsPrice, manufacturingWarranty, materialsWarranty,
655
- imageUrl, referenceId, buyUrl
656
-
657
- Custom assets array:
658
- solarKitCustomAssets: [{"customAsset": {"idCustomAsset": <id>}, "units": <n>}]
659
-
660
- Example:
661
- suntropy inventory kits create --data '{"identifier":"Kit 5kW","kitSolarPanel":{"idKitSolarPanel":123},"kitInverter":{"idKitInverter":456},"panelNumber":12,"inverterNumber":1,"peakPower":5.4,"price":6500,"phaseNumber":"single_phase"}'`
662
- );
663
- }
635
+ const kitsCreateIdx = kits.commands.findIndex((c) => c.name() === "create");
636
+ if (kitsCreateIdx !== -1) kits.commands.splice(kitsCreateIdx, 1);
664
637
  kits.command("archive <kitId>").description("Archive a solar kit (soft-disable)").action(async (kitId) => {
665
638
  try {
666
639
  const global = getGlobalOpts3(kits);
@@ -2013,7 +1986,7 @@ Example: suntropy studies set data --file study.json --data '{"referenceId":"REF
2013
1986
  outputError(new Error("No energy prices. Use: studies set prices"));
2014
1987
  return;
2015
1988
  }
2016
- const { PowerCurve } = await import("energy-types/lib/energy/classes/powerCurve.class");
1989
+ const { PowerCurve } = await import("energy-types/lib/energy/classes/powerCurve.class.js");
2017
1990
  const consCurve = new PowerCurve(consumption.days, false, consumption.identifier || "consumption", false);
2018
1991
  let totalProdCurve = null;
2019
1992
  for (const surf of surfaces) {
@@ -2455,7 +2428,7 @@ function registerStudiesCommands(program2) {
2455
2428
  outputError(new Error(`Curve "${curveName}" not found or empty in this study.`));
2456
2429
  return;
2457
2430
  }
2458
- const { PowerCurve } = await import("energy-types/lib/energy/classes/powerCurve.class");
2431
+ const { PowerCurve } = await import("energy-types/lib/energy/classes/powerCurve.class.js");
2459
2432
  const cd = curveData;
2460
2433
  const pc = new PowerCurve(cd.days || cd, cd.ignore0 ?? false, cd.identifier || curveName, cd.parseDate ?? false);
2461
2434
  const showRaw = opts.raw;
@@ -2549,7 +2522,7 @@ async function readCurveInput(inputPath) {
2549
2522
  return JSON.parse(raw);
2550
2523
  }
2551
2524
  async function buildCurve(data, identifier = "curve") {
2552
- const { PowerCurve } = await import("energy-types/lib/energy/classes/powerCurve.class");
2525
+ const { PowerCurve } = await import("energy-types/lib/energy/classes/powerCurve.class.js");
2553
2526
  if (Array.isArray(data)) {
2554
2527
  return new PowerCurve(data, false, identifier, false);
2555
2528
  }