Fix TOU rate-window mismatch and enforce fallback-split validation
Rate windows were matched by substring (label.includes(key)), so overlapping labels like "Day"/"Weekday" could silently cross-match to the wrong rate. Switched to an exact match. The "split must total 100%" check was advisory-only in the UI and never validated server-side, letting a tariff save with a split that doesn't sum to 100% and permanently mis-cost that meter's usage. Enforced on both the API (POST/PATCH /api/tariffs) and the Save button. Also aligned the app's portal category to 'Hotel' (already correct in auth/src/db.js) here and in stack-init/install-stack.sh, which had both drifted to 'Operations'. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
7ab048931f
commit
f1ce0f06d8
4 changed files with 38 additions and 3 deletions
|
|
@ -10,7 +10,7 @@ const pool = new Pool({ connectionString: process.env.DATABASE_URL })
|
|||
|
||||
await pool.query(`
|
||||
INSERT INTO apps (slug, name, description, base_path, icon, theme_color, category, internal_host, internal_port)
|
||||
VALUES ('utilities', 'Utilities', 'Meter readings, tariffs and energy cost tracking', '/utilities', 'Zap', '#1e6091', 'Operations', '10.10.10.127', 3080)
|
||||
VALUES ('utilities', 'Utilities', 'Meter readings, tariffs and energy cost tracking', '/utilities', 'Zap', '#1e6091', 'Hotel', '10.10.10.127', 3080)
|
||||
ON CONFLICT (slug) DO UPDATE SET
|
||||
name = EXCLUDED.name,
|
||||
description = EXCLUDED.description,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue