iobroker.utility-monitor 1.5.0 → 1.6.1
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 +86 -8
- package/io-package.json +31 -53
- package/lib/billingManager.js +333 -49
- package/lib/calculator.js +27 -13
- package/lib/multiMeterManager.js +192 -2
- package/lib/state/history.js +95 -0
- package/lib/state/meter.js +605 -0
- package/lib/state/roles.js +16 -0
- package/lib/state/totals.js +136 -0
- package/lib/state/utility.js +650 -0
- package/lib/stateManager.js +8 -2046
- package/lib/utils/helpers.js +56 -0
- package/lib/utils/stateCache.js +147 -0
- package/main.js +2 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -108,6 +108,36 @@ wasser.main.consumption.daily
|
|
|
108
108
|
- **Klarheit**: Keine Special-Case Logik mehr im Code
|
|
109
109
|
- **Multi-Meter**: Bessere Unterstützung für mehrere Zähler pro Typ
|
|
110
110
|
- **CSV Import**: Einfaches Nachpflegen von historischen Daten via Drag-and-Drop im Admin-Interface
|
|
111
|
+
- **Strukturierte Statistiken (v1.6.0)**: Klare Trennung von Verbrauch, Kosten und Zeitstempeln
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## ⚠️ Breaking Changes in Version 1.6.0
|
|
116
|
+
|
|
117
|
+
**WICHTIG:** Version 1.6.0 strukturiert das Statistik-Objekt um!
|
|
118
|
+
|
|
119
|
+
### Was hat sich geändert?
|
|
120
|
+
|
|
121
|
+
**Vorher (bis 1.5.1):**
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
gas.main.statistics.lastDay
|
|
125
|
+
gas.main.statistics.lastMonth
|
|
126
|
+
gas.main.statistics.lastDayStart
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Jetzt (ab 1.6.0):**
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
gas.main.statistics.consumption.lastDay ← Verbrauchswerte
|
|
133
|
+
gas.main.statistics.cost.lastDay ← Kostenwerte (NEU!)
|
|
134
|
+
gas.main.statistics.timestamps.lastDayStart ← Zeitstempel der Resets
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 🔧 Migration erforderlich
|
|
138
|
+
|
|
139
|
+
1. **Skripte/VIS anpassen**: Falls du direkt auf Statistik-Datenpunkte zugreifst, musst du die Pfade anpassen.
|
|
140
|
+
2. **Kostenstatistiken**: Du profitierst nun von historischen Kostenübersichten (Tag/Woche/Monat).
|
|
111
141
|
|
|
112
142
|
---
|
|
113
143
|
|
|
@@ -212,17 +242,38 @@ Balance: +62,64 € → Nachzahlung
|
|
|
212
242
|
|
|
213
243
|
### 📈 **statistics** (Statistiken)
|
|
214
244
|
|
|
245
|
+
Seit Version 1.6.1 sind Statistiken in drei Unterkanäle unterteilt:
|
|
246
|
+
|
|
247
|
+
#### 📊 **consumption** (Verbrauchshistorie)
|
|
248
|
+
|
|
215
249
|
| Datenpunkt | Beschreibung |
|
|
216
250
|
| ---------------- | ------------------------------------ |
|
|
217
|
-
| `
|
|
218
|
-
| `averageMonthly` | Durchschnittlicher Monatsverbrauch |
|
|
219
|
-
| `lastDay` | Verbrauch **gesten** (Vortag) |
|
|
251
|
+
| `lastDay` | Verbrauch **gestern** (Vortag) |
|
|
220
252
|
| `lastWeek` | Verbrauch **letzte Woche** |
|
|
221
253
|
| `lastMonth` | Verbrauch **letzter Monat** |
|
|
222
|
-
| `
|
|
223
|
-
| `
|
|
224
|
-
| `
|
|
225
|
-
|
|
254
|
+
| `lastYear` | Verbrauch **letztes Jahr** (Vorjahr) |
|
|
255
|
+
| `averageDaily` | Durchschnittlicher Tagesverbrauch |
|
|
256
|
+
| `averageMonthly` | Durchschnittlicher Monatsverbrauch |
|
|
257
|
+
|
|
258
|
+
#### 💰 **cost** (Kostenhistorie - NEU in 1.6.0)
|
|
259
|
+
|
|
260
|
+
| Datenpunkt | Beschreibung |
|
|
261
|
+
| ---------------- | --------------------------------- |
|
|
262
|
+
| `lastDay` | Kosten **gestern** (Vortag) |
|
|
263
|
+
| `lastWeek` | Kosten **letzte Woche** |
|
|
264
|
+
| `lastMonth` | Kosten **letzter Monat** |
|
|
265
|
+
| `lastYear` | Kosten **letztes Jahr** (Vorjahr) |
|
|
266
|
+
| `averageDaily` | Durchschnittliche Tageskosten |
|
|
267
|
+
| `averageMonthly` | Durchschnittliche Monatskosten |
|
|
268
|
+
|
|
269
|
+
#### 📅 **timestamps** (Reset-Zeitstempel)
|
|
270
|
+
|
|
271
|
+
| Datenpunkt | Beschreibung |
|
|
272
|
+
| ---------------- | ---------------------------------------- |
|
|
273
|
+
| `lastDayStart` | Letzter Tages-Reset (23:59 Uhr) |
|
|
274
|
+
| `lastWeekStart` | Letzter Wochen-Reset (Sonntag 23:59) |
|
|
275
|
+
| `lastMonthStart` | Letzter Monats-Reset (letzter Tag 23:59) |
|
|
276
|
+
| `lastYearStart` | Vertragsbeginn / Jahresstart |
|
|
226
277
|
|
|
227
278
|
---
|
|
228
279
|
|
|
@@ -308,7 +359,34 @@ Der Adapter setzt Zähler automatisch zurück:
|
|
|
308
359
|
|
|
309
360
|
## Changelog
|
|
310
361
|
|
|
311
|
-
### 1.
|
|
362
|
+
### 1.6.1 (2026-01-28)
|
|
363
|
+
|
|
364
|
+
- **NEU:** 📊 **Erweiterte Jahresstatistiken** - Einführung von `lastYear` Datenpunkten in den Statistiken:
|
|
365
|
+
- `statistics.consumption.lastYear`: Gesamtverbrauch des Vorjahres
|
|
366
|
+
- `statistics.cost.lastYear`: Gesamtkosten des Vorjahres
|
|
367
|
+
- Unterstützung für HT/NT und Gas-Volumen in der Vorjahresansicht
|
|
368
|
+
- **NEU:** 🔄 **Automatisches Sichern** - Vorjahreswerte werden beim jährlichen Reset automatisch in die Statistik archiviert
|
|
369
|
+
- **FIX:** 🛠️ **Syntax & Einheiten** - Korrektur von Einheiten-Inkonsistenzen (speziell Wasser/m³) und Linter-Fehlern
|
|
370
|
+
- **DOCS:** 🌐 **Übersetzungen** - News-Einträge in alle unterstützten Sprachen übersetzt
|
|
371
|
+
|
|
372
|
+
### 1.6.0 (2026-01-28)
|
|
373
|
+
|
|
374
|
+
- **NEU:** 📊 **Strukturierte Statistiken** - Einführung von Unterkanälen für bessere Übersicht:
|
|
375
|
+
- `statistics.consumption`: Alle historischen Verbrauchswerte
|
|
376
|
+
- `statistics.cost`: Alle historischen Kostenwerte (Tag/Woche/Monat)
|
|
377
|
+
- `statistics.timestamps`: Alle Reset-Zeitstempel an einem Ort
|
|
378
|
+
- **NEU:** 💰 **Kostenstatistiken** - Verfolge deine Kosten nun auch für gestern, letzte Woche und letzten Monat
|
|
379
|
+
- **REFACTORING:** 🏗️ **Modulare State-Verwaltung**:
|
|
380
|
+
- `stateManager.js` wurde in spezialisierte Module aufgeteilt (`lib/state/`)
|
|
381
|
+
- Verbesserte Wartbarkeit und Testbarkeit
|
|
382
|
+
- **CLEANUP:** 🧹 **Bereinigung** - Automatische Entfernung veralteter Statistik-Datenpunkte beim ersten Start
|
|
383
|
+
|
|
384
|
+
### 1.5.1 (2026-01-26)
|
|
385
|
+
|
|
386
|
+
- **FIX:** 🕛 **Reset-Timing** - Automatische Resets werden nun um 23:59 Uhr ausgeführt (statt 00:00 Uhr)
|
|
387
|
+
- **FIX:** Utopische Werte in Monthly/MonthlyVolume (DP Monthly)
|
|
388
|
+
|
|
389
|
+
### 1.5.0 (2026-01-25)
|
|
312
390
|
|
|
313
391
|
- **NEU:** 📥 **CSV Import** - Importiere historische Zählerstände einfach per Drag-and-Drop:
|
|
314
392
|
- Neuer "Import"-Tab in der Konfiguration
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,38 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "utility-monitor",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.6.1",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.6.1": {
|
|
7
|
+
"en": "New statistics data points: lastDay, lastWeek, lastMonth, and lastYear for costs and consumption.",
|
|
8
|
+
"de": "Neue Statistik-Datenpunkte: lastDay, lastWeek, lastMonth, lastYear für Kosten und Verbrauch.",
|
|
9
|
+
"ru": "Новые точки статистических данных: lastDay, lastWeek, lastMonth и lastYear для затрат и потребления.",
|
|
10
|
+
"pt": "Novos pontos de dados estatísticos: lastDay, lastWeek, lastMonth e lastYear para custos e consumo.",
|
|
11
|
+
"nl": "Nieuwe statistiekgegevenspunten: lastDay, lastWeek, lastMonth en lastYear voor kosten en verbruik.",
|
|
12
|
+
"fr": "Nouveaux points de données statistiques : lastDay, lastWeek, lastMonth et lastYear pour les coûts et la consommation.",
|
|
13
|
+
"it": "Nuovi punti dati statistici: lastDay, lastWeek, lastMonth e lastYear per costi e consumi.",
|
|
14
|
+
"es": "Nuevos puntos de datos estadísticos: lastDay, lastWeek, lastMonth y lastYear para costes y consumo.",
|
|
15
|
+
"pl": "Nowe punkty danych statystycznych: lastDay, lastWeek, lastMonth i lastYear dla kosztów i zużycia.",
|
|
16
|
+
"uk": "Нові статистичні дані: lastDay, lastWeek, lastMonth і lastYear для витрат і споживання.",
|
|
17
|
+
"zh-cn": "新的统计数据点:成本和消耗的 lastDay、lastWeek、lastMonth 和 lastYear。"
|
|
18
|
+
},
|
|
19
|
+
"1.6.0": {
|
|
20
|
+
"en": "New: Structured statistics with consumption and cost sub-channels. New: Weekly and monthly cost tracking. Refactoring: Split stateManager.js into modular files. Cleanup: Removed redundant old statistics states.",
|
|
21
|
+
"de": "Neu: Strukturierte Statistiken mit Unterkanälen für Verbrauch und Kosten. Neu: Wöchentliche und monatliche Kostenverfolgung. Refactoring: stateManager.js in modulare Dateien aufgeteilt. Bereinigung: Veraltete Statistik-Datenpunkte entfernt."
|
|
22
|
+
},
|
|
23
|
+
"1.5.1": {
|
|
24
|
+
"en": "Fix: Reset timing and monthly calculation logic. Fix: JSDoc type definitions.",
|
|
25
|
+
"de": "Fix: Reset-Timing und monatliche Berechnungslogik. Fix: JSDoc Typ-Definitionen.",
|
|
26
|
+
"ru": "Исправление: время сброса и логика ежемесячного расчета. Исправление: определения типов JSDoc.",
|
|
27
|
+
"pt": "Correção: tempo de redefinição e lógica de cálculo mensal. Correção: definições de tipo JSDoc.",
|
|
28
|
+
"nl": "Fix: Reset timing en maandelijkse berekeningslogica. Fix: JSDoc type definities.",
|
|
29
|
+
"fr": "Correctif : synchronisation de la réinitialisation et logique de calcul mensuel. Correctif : définitions de type JSDoc.",
|
|
30
|
+
"it": "Correzione: tempi di ripristino e logica di calcolo mensile. Correzione: definizioni dei tipi JSDoc.",
|
|
31
|
+
"es": "Solución: sincronización de reinicio y lógica de cálculo mensual. Solución: definiciones de tipos de JSDoc.",
|
|
32
|
+
"pl": "Naprawa: czas resetowania i logika obliczeń miesięcznych. Naprawa: definicje typów JSDoc.",
|
|
33
|
+
"uk": "Виправлення: час скидання та логіка щомісячного розрахунку. Виправлення: визначення типів JSDoc.",
|
|
34
|
+
"zh-cn": "修复:重置时间和每月计算逻辑。修复:JSDoc 类型定义。"
|
|
35
|
+
},
|
|
6
36
|
"1.5.0": {
|
|
7
37
|
"en": "New: CSV Import feature with drag and drop support. New: Weekly tracking points. Fix: Resets now performed at 23:59. Refactoring: Modular backend architecture.",
|
|
8
38
|
"de": "Neu: CSV-Import mit Drag-and-Drop. Neu: Wöchentliche Datenpunkte. Fix: Resets werden jetzt um 23:59 Uhr ausgeführt. Refactoring: Modulare Backend-Architektur.",
|
|
@@ -15,58 +45,6 @@
|
|
|
15
45
|
"pl": "Nowość: funkcja importu CSV z obsługą przeciągnij i upuść. Nowość: tygodniowe punkty śledzenia. Naprawa: resety wykonywane teraz o 23:59. Refaktoryzacja: modułowa architektura backendu.",
|
|
16
46
|
"uk": "Нове: функція імпорту CSV з підтримкою перетягування. Нове: щотижневі точки відстеження. Виправлення: скидання тепер виконується о 23:59. Рефакторинг: модульна архітектура бекенда.",
|
|
17
47
|
"zh-cn": "新增:支持拖放的 CSV 导入功能。新增:每周跟踪点。修复:现在在 23:59 执行重置。重构:模块化后端架构。"
|
|
18
|
-
},
|
|
19
|
-
"1.4.7": {
|
|
20
|
-
"en": "Fix: Removed redundant initialization code causing state object warnings. Fix: Race conditions in multi-meter initialization. New: Support for German umlauts (ä,ö,ü,ß) in meter names.",
|
|
21
|
-
"de": "Fix: Redundanten Initialisierungscode entfernt, der State-Object-Warnungen verursachte. Fix: Race Conditions bei Multi-Meter-Initialisierung. Neu: Unterstützung für deutsche Umlaute (ä,ö,ü,ß) in Zählernamen.",
|
|
22
|
-
"ru": "Исправление: удален избыточный код инициализации, вызывавший предупреждения об объектах состояния. Исправление: состояния гонки при инициализации нескольких счетчиков. Новое: поддержка немецких умляутов (ä, ö, ü, ß) в названиях счетчиков.",
|
|
23
|
-
"pt": "Correção: código de inicialização redundante removido que causava avisos de objetos de estado. Correção: Condições de corrida na inicialização do multi-medidor. Novo: Suporte para tremas alemães (ä, ö, ü, ß) em nomes de medidores.",
|
|
24
|
-
"nl": "Fix: Overbodige initialisatiecode verwijderd die waarschuwingen voor staatsobjecten veroorzaakte. Fix: Race-omstandigheden bij initialisatie van meerdere meters. Nieuw: Ondersteuning voor Duitse umlauten (ä, ö, ü, ß) in meternamen.",
|
|
25
|
-
"fr": "Correction : suppression du code d'initialisation redondant provoquant des avertissements d'objet d'état. Correction : conditions de concurrence lors de l'initialisation de plusieurs compteurs. Nouveau : prise en charge des trémas allemands (ä, ö, ü, ß) dans les noms des compteurs.",
|
|
26
|
-
"it": "Correzione: rimosso il codice di inizializzazione ridondante che causava avvisi sugli oggetti di stato. Correzione: race condition nell'inizializzazione di più contatori. Nuovo: supporto per le dieresi tedesche (ä, ö, ü, ß) nei nomi dei contatori.",
|
|
27
|
-
"es": "Solución: se eliminó el código de inicialización redundante que causaba advertencias de objetos de estado. Solución: condiciones de carrera en la inicialización de múltiples medidores. Nuevo: soporte para diéresis alemanas (ä, ö, ü, ß) en nombres de medidores.",
|
|
28
|
-
"pl": "Naprawa: usunięto nadmiarowy kod inicjalizacji powodujący ostrzeżenia o obiektach stanu. Naprawa: wyścigi podczas inicjalizacji wielu liczników. Nowość: obsługa niemieckich umlautów (ä, ö, ü, ß) w nazwach liczników.",
|
|
29
|
-
"uk": "Виправлення: видалено надлишковий код ініціалізації, що викликав попередження про об'єкти стану. Виправлення: стан гонки при ініціалізації декількох лічильників. Нове: підтримка німецьких умляутів (ä, ö, ü, ß) у назвах лічильників.",
|
|
30
|
-
"zh-cn": "修复:删除了导致状态对象警告的冗余初始化代码。修复:多表初始化中的竞态条件。新增:支持仪表名称中的德语变音符号 (ä, ö, ü, ß)。"
|
|
31
|
-
},
|
|
32
|
-
"1.4.6": {
|
|
33
|
-
"en": "Breaking Change: Main meter now requires a name (default: 'main'). State paths changed from 'gas.*' to 'gas.METER_NAME.*'. All meters now use consistent naming structure.",
|
|
34
|
-
"de": "Breaking Change: Hauptzähler benötigt jetzt einen Namen (Standard: 'main'). State-Pfade geändert von 'gas.*' zu 'gas.METER_NAME.*'. Alle Zähler nutzen jetzt konsistente Namensstruktur.",
|
|
35
|
-
"ru": "Критическое изменение: для главного счетчика теперь требуется имя (по умолчанию — «main»). Пути состояний изменены с 'gas.*' на 'gas.METER_NAME.*'. Все счетчики теперь используют согласованную структуру именования.",
|
|
36
|
-
"pt": "Mudança estrutural: o medidor principal agora requer um nome (padrão: 'main'). Os caminhos de estado mudaram de 'gas.*' para 'gas.METER_NAME.*'. Todos os medidores agora usam uma estrutura de nomenclatura consistente.",
|
|
37
|
-
"nl": "Breaking Change: Hoofdmeter vereist nu een naam (standaard: 'main'). Staatspaden gewijzigd van 'gas.*' naar 'gas.METER_NAME.*'. Alle meters gebruiken nu een consistente naamstructuur.",
|
|
38
|
-
"fr": "Changement radical : le compteur principal nécessite désormais un nom (par défaut : 'main'). Les chemins d'état sont passés de 'gas.*' à 'gas.METER_NAME.*'. Tous los compteurs utilisent désormais une structure de dénomination cohérente.",
|
|
39
|
-
"it": "Cambiamento radicale: il contatore principale ora richiede un nome (predefinito: 'main'). I percorsi di stato sono cambiati da 'gas.*' a 'gas.METER_NAME.*'. Tutti i contatori ora utilizzano una struttura di denominazione coerente.",
|
|
40
|
-
"es": "Cambio importante: el medidor principal ahora requiere un nombre (predeterminado: 'main'). Las rutas de estado cambiaron de 'gas.*' na 'gas.METER_NAME.*'. Todos los medidores ahora utilizan una estructura de nombres consistente.",
|
|
41
|
-
"pl": "Przełomowa zmiana: licznik główny wymaga teraz nazwy (domyślnie „main”). Ścieżki stanów zmieniły się z „gas.*” na „gas.METER_NAME.*”. Wszystkie liczniki używają teraz spójnej struktury nazewnictwa.",
|
|
42
|
-
"uk": "Критична зміна: для головного лічильника тепер потрібна назва (за замовчуванням — «main»). Шляхи статусів змінено з 'gas.*' на 'gas.METER_NAME.*'. Тепер усі лічильники використовують єдину структуру назв.",
|
|
43
|
-
"zh-cn": "重大更改:主表现在需要一个名称(默认值:'main')。状态路径从 'gas.*' 更改为 'gas.METER_NAME.*'。所有计量表现在都使用一致的命名结构。"
|
|
44
|
-
},
|
|
45
|
-
"1.4.5": {
|
|
46
|
-
"en": "Fix: Critical multi-meter cost calculation bugs (main meter sync, basicCharge/paidTotal accumulation, annualFee as fixed yearly value). Fix: Balance formula corrected. Fix: Removed duplicate initialization causing sync issues.",
|
|
47
|
-
"de": "Fix: Kritische Multi-Meter Kostenberechnungsfehler (Hauptzähler-Sync, basicCharge/paidTotal Akkumulation, Jahresgebühr als fester Jahreswert). Fix: Balance-Formel korrigiert. Fix: Doppelte Initialisierung entfernt.",
|
|
48
|
-
"ru": "Исправление: Критические ошибки расчета затрат multi-meter (синхронизация главного счетчика, накопление basicCharge/paidTotal, annualFee как фиксированное годовое значение). Исправление: Формула баланса исправлена. Исправление: Удалена дублирующая инициализация.",
|
|
49
|
-
"pt": "Correção: Bugs críticos de cálculo de custos multi-medidor (sincronização medidor principal, acumulação basicCharge/paidTotal, annualFee como valor anual fixo). Correção: Fórmula de saldo corrigida. Correção: Inicialização duplicada removida.",
|
|
50
|
-
"nl": "Fix: Kritieke multi-meter kostenberekeningsfouten (hoofdmeter sync, basicCharge/paidTotal accumulatie, annualFee als vaste jaarwaarde). Fix: Balans formule gecorrigeerd. Fix: Dubbele initialisatie verwijderd.",
|
|
51
|
-
"fr": "Correction: Bugs critiques calcul coûts multi-compteurs (sync compteur principal, accumulation basicCharge/paidTotal, annualFee comme valeur annuelle fixe). Correction: Formule de solde corrigée. Correction: Initialisation en double supprimée.",
|
|
52
|
-
"it": "Correzione: Bug critici calcolo costi multi-contatore (sync contatore principale, accumulazione basicCharge/paidTotal, annualFee come valore annuale fisso). Correzione: Formula bilancio corretta. Correzione: Inizializzazione duplicata rimossa.",
|
|
53
|
-
"es": "Corrección: Bugs críticos cálculo costos multi-medidor (sincronización medidor principal, acumulación basicCharge/paidTotal, annualFee como valor anual fijo). Corrección: Fórmula balance corregida. Corrección: Inicialización duplicada eliminada.",
|
|
54
|
-
"pl": "Naprawa: Krytyczne błędy obliczania kosztów multi-meter (synchronizacja głównego licznika, akumulacja basicCharge/paidTotal, annualFee jako stała wartość roczna). Naprawa: Formuła salda poprawiona. Naprawa: Usunięto podwójną inicjalizację.",
|
|
55
|
-
"uk": "Виправлення: Критичні помилки розрахунку витрат multi-meter (синхронізація головного лічильника, накопичення basicCharge/paidTotal, annualFee як фіксоване річне значення). Виправлення: Формула балансу виправлена. Виправлення: Видалено подвійну ініціалізацію.",
|
|
56
|
-
"zh-cn": "修复:关键多表成本计算错误(主表同步、basicCharge/paidTotal累积、annualFee作为固定年值)。修复:余额公式已更正。修复:删除重复初始化。"
|
|
57
|
-
},
|
|
58
|
-
"1.4.2": {
|
|
59
|
-
"en": "Fix: Critical multi-meter balance bug (hardcoded 12 months). Fix: TypeScript errors resolved. New: Enhanced input validation. New: Extended constants. New: Error handling wrapper.",
|
|
60
|
-
"de": "Fix: Kritischer Multi-Meter Balance-Bug (hardcodierte 12 Monate). Fix: TypeScript-Fehler behoben. Neu: Erweiterte Eingabevalidierung. Neu: Erweiterte Konstanten. Neu: Fehlerbehandlungs-Wrapper.",
|
|
61
|
-
"ru": "Исправление: Критическая ошибка баланса multi-meter (жестко заданные 12 месяцев). Исправление: Устранены ошибки TypeScript. Новое: Расширенная проверка входных данных. Новое: Расширенные константы. Новое: Обработка ошибок.",
|
|
62
|
-
"pt": "Correção: Bug crítico de saldo multi-medidor (12 meses fixos). Correção: Erros TypeScript resolvidos. Novo: Validação de entrada aprimorada. Novo: Constantes estendidas. Novo: Wrapper de tratamento de erros.",
|
|
63
|
-
"nl": "Fix: Kritieke multi-meter balans bug (hardcoded 12 maanden). Fix: TypeScript-fouten opgelost. Nieuw: Verbeterde invoervalidatie. Nieuw: Uitgebreide constanten. Nieuw: Foutafhandeling wrapper.",
|
|
64
|
-
"fr": "Correction: Bug critique de solde multi-compteurs (12 mois codés en dur). Correction: Erreurs TypeScript résolues. Nouveau: Validation d'entrée améliorée. Nouveau: Constantes étendues. Nouveau: Wrapper de gestion des erreurs.",
|
|
65
|
-
"it": "Correzione: Bug critico bilancio multi-contatore (12 mesi hardcoded). Correzione: Errori TypeScript risolti. Nuovo: Validazione input migliorata. Nuovo: Costanti estese. Nuovo: Wrapper gestione errori.",
|
|
66
|
-
"es": "Corrección: Bug crítico de saldo multi-medidor (12 meses fijos). Corrección: Errores TypeScript resueltos. Nuevo: Validación de entrada mejorada. Nuevo: Constantes extendidas. Nuevo: Wrapper manejo errores.",
|
|
67
|
-
"pl": "Naprawa: Krytyczny błąd salda multi-meter (zakodowane 12 miesięcy). Naprawa: Naprawione błędy TypeScript. Nowe: Ulepszona walidacja danych. Nowe: Rozszerzone stałe. Nowe: Wrapper obsługi błędów.",
|
|
68
|
-
"uk": "Виправлення: Критична помилка балансу multi-meter (жорстко задані 12 місяців). Виправлення: Усунено помилки TypeScript. Нове: Покращена перевірка даних. Нове: Розширені константи. Нове: Обробник помилок.",
|
|
69
|
-
"zh-cn": "修复:关键多表余额错误(硬编码12个月)。修复:解决TypeScript错误。新增:增强输入验证。新增:扩展常量。新增:错误处理包装器。"
|
|
70
48
|
}
|
|
71
49
|
},
|
|
72
50
|
"titleLang": {
|