@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 +7 -4
- package/dist/bin/suntropy.js +5 -32
- package/dist/bin/suntropy.js.map +1 -1
- package/package.json +1 -1
- package/skills/inventory-create-kit.md +3 -21
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
|
-
|
|
147
|
-
suntropy inventory kits
|
|
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 <
|
|
153
|
+
--panel <kitPanelId> --inverter <kitInverterId> \
|
|
151
154
|
--panels-count 12 --peak-power 5.4 --price 3500
|
|
152
155
|
```
|
|
153
156
|
|
package/dist/bin/suntropy.js
CHANGED
|
@@ -632,35 +632,8 @@ function registerKitsCommands(inventory) {
|
|
|
632
632
|
batchDeletePath: "delete-batch-solar-kits",
|
|
633
633
|
getViaFilter: true
|
|
634
634
|
});
|
|
635
|
-
const
|
|
636
|
-
if (
|
|
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
|
}
|