From daea4831997174f8c2e889478670768039d2cd96 Mon Sep 17 00:00:00 2001 From: XuJiacheng Date: Tue, 10 Feb 2026 09:03:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E3=80=81=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9E=B6?= =?UTF-8?q?=E6=9E=84=E5=92=8C=E6=96=87=E6=A1=A3=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将项目文档路径从 project1.md 改为 project_management/project.md - 启用酒店列表、房间列表和房型列表接口,并扩展启用的酒店ID范围 - 更新项目文档中的字段定义,将多个空调和能耗表字段改为数组类型以支持多设备 - 用新的 room_status_moment.sql 替换 init_db.sql,新增 bright_g 和 agreement_ver 字段,并为空调和能耗表字段使用数组类型,同时添加唯一索引支持 UPSERT --- project_management/project.md | 24 ++++++------- .../{init_db.sql => room_status_moment.sql} | 35 ++++++++++++------- temporary_project_management/.env | 15 +++----- .../src/scripts/main.js | 2 +- 4 files changed, 39 insertions(+), 37 deletions(-) rename project_management/{init_db.sql => room_status_moment.sql} (89%) diff --git a/project_management/project.md b/project_management/project.md index 7c28af0..766cb74 100644 --- a/project_management/project.md +++ b/project_management/project.md @@ -35,19 +35,19 @@ - 服务状态 service_mask int8 - 插卡状态 insert_card int2 (索引) - 空调地址 air_address text[] - - 空调状态 air_state int2 - - 空调模型 air_model int2 - - 空调风速 air_speed int2 - - 空调设置温度 air_set_temp int2 - - 房间当前温度 air_now_temp int2 - - 空调电磁阀状态 air_solenoid_valve int2 + - 空调状态 air_state int2[] + - 空调模型 air_model int2[] + - 空调风速 air_speed int2[] + - 空调设置温度 air_set_temp int2[] + - 房间当前温度 air_now_temp int2[] + - 空调电磁阀状态 air_solenoid_valve int2[] - 能耗表地址 elec_address text[] - - 能耗表电压 elec_voltage double precision - - 能耗表电流 elec_ampere double precision - - 能耗表功率 elec_power double precision - - 当前相位 elec_phase text - - 能耗表能耗 elec_energy double precision - - 能耗表累计能耗 elec_sum_energy double precision + - 能耗表电压 elec_voltage double precision[] + - 能耗表电流 elec_ampere double precision[] + - 能耗表功率 elec_power double precision[] + - 当前相位 elec_phase double precision[] + - 能耗表能耗 elec_energy double precision[] + - 能耗表累计能耗 elec_sum_energy double precision[] - 碳达人状态 carbon_state int2 (索引) - 回路状态 dev_loops jsonb - 碳达人节能累计 energy_carbon_sum double precision diff --git a/project_management/init_db.sql b/project_management/room_status_moment.sql similarity index 89% rename from project_management/init_db.sql rename to project_management/room_status_moment.sql index 5e1dd65..bfd80b3 100644 --- a/project_management/init_db.sql +++ b/project_management/room_status_moment.sql @@ -40,24 +40,26 @@ CREATE TABLE IF NOT EXISTS room_status.room_status_moment ( cardless_state INT2, service_mask INT8, insert_card INT2, - + bright_g INT2, + agreement_ver TEXT, + -- 空调相关 air_address TEXT[], - air_state INT2, - air_model INT2, - air_speed INT2, - air_set_temp INT2, - air_now_temp INT2, - air_solenoid_valve INT2, + air_state INT2[], + air_model INT2[], + air_speed INT2[], + air_set_temp INT2[], + air_now_temp INT2[], + air_solenoid_valve INT2[], -- 能耗相关 elec_address TEXT[], - elec_voltage DOUBLE PRECISION, - elec_ampere DOUBLE PRECISION, - elec_power DOUBLE PRECISION, - elec_phase TEXT, - elec_energy DOUBLE PRECISION, - elec_sum_energy DOUBLE PRECISION, + elec_voltage DOUBLE PRECISION[], + elec_ampere DOUBLE PRECISION[], + elec_power DOUBLE PRECISION[], + elec_phase DOUBLE PRECISION[], + elec_energy DOUBLE PRECISION[], + elec_sum_energy DOUBLE PRECISION[], -- 节能与外设 carbon_state INT2, @@ -83,6 +85,11 @@ CREATE INDEX IF NOT EXISTS idx_room_status_moment_cardless ON room_status.room_s CREATE INDEX IF NOT EXISTS idx_room_status_moment_insert_card ON room_status.room_status_moment (insert_card); CREATE INDEX IF NOT EXISTS idx_room_status_moment_carbon ON room_status.room_status_moment (carbon_state); +-- 3.1 唯一索引 (支持 UPSERT) +-- 必须在 (hotel_id, room_id, device_id) 上建立唯一约束,才能使用 ON CONFLICT +CREATE UNIQUE INDEX IF NOT EXISTS idx_room_status_unique_device +ON room_status.room_status_moment (hotel_id, room_id, device_id); + -- 4. 示例:创建第一个分区 (hotel_id = 1) -- 实际部署时,可根据 hotel_id 动态创建分区 CREATE TABLE IF NOT EXISTS room_status.room_status_moment_h1 @@ -125,6 +132,8 @@ COMMENT ON COLUMN room_status.room_status_moment.elec_phase IS '当前相位'; COMMENT ON COLUMN room_status.room_status_moment.elec_energy IS '能耗表能耗'; COMMENT ON COLUMN room_status.room_status_moment.elec_sum_energy IS '能耗表累计能耗'; COMMENT ON COLUMN room_status.room_status_moment.carbon_state IS '碳达人状态'; +COMMENT ON COLUMN room_status.room_status_moment.bright_g IS '光亮值'; +COMMENT ON COLUMN room_status.room_status_moment.agreement_ver IS '协议版本'; COMMENT ON COLUMN room_status.room_status_moment.dev_loops IS '回路状态'; COMMENT ON COLUMN room_status.room_status_moment.energy_carbon_sum IS '碳达人节能累计'; COMMENT ON COLUMN room_status.room_status_moment.energy_nocard_sum IS '无卡节能累计'; diff --git a/temporary_project_management/.env b/temporary_project_management/.env index b4c0d48..4ea969b 100644 --- a/temporary_project_management/.env +++ b/temporary_project_management/.env @@ -4,13 +4,6 @@ API_BASE_URL=http://www.boonlive-rcu.com:7000/api/values PORT=3000 -# 数据库配置 (废弃) - #(废弃)DB_HOST=10.8.8.109 - #(废弃)DB_PORT=5433 - #(废弃)DB_USER=log_admin - #(废弃)DB_PASSWORD=YourActualStrongPasswordForPostgres! - #(废弃)DB_NAME=log_platform - # 数据库配置 POSTGRES_HOST=10.8.8.109 POSTGRES_PORT=5433 @@ -20,10 +13,10 @@ POSTGRES_PASSWORD=YourActualStrongPasswordForPostgres! POSTGRES_MAX_CONNECTIONS=2 POSTGRES_IDLE_TIMEOUT_MS=30000 # 启用的酒店ID列表 -ENABLED_HOTEL_IDS=1085,2100-2316 +ENABLED_HOTEL_IDS=1001,1068,1085,1865,2000-2400 # 接口启用配置 (true/false) -ENABLE_API_HOTEL_LIST=false # 酒店列表 -ENABLE_API_HOST_LIST=false # 房间列表 -ENABLE_API_ROOM_TYPE_INFO=false # 房型列表 +ENABLE_API_HOTEL_LIST=true # 酒店列表 +ENABLE_API_HOST_LIST=true # 房间列表 +ENABLE_API_ROOM_TYPE_INFO=true # 房型列表 ENABLE_API_ROOM_TYPE_MODAL_INFO=false # 回路列表 diff --git a/temporary_project_management/src/scripts/main.js b/temporary_project_management/src/scripts/main.js index b288864..f5eef77 100644 --- a/temporary_project_management/src/scripts/main.js +++ b/temporary_project_management/src/scripts/main.js @@ -8,7 +8,7 @@ const fs = require('fs'); const path = require('path'); const { query, close } = require('../db/utils'); // Changed from db, all, close -const mdPath = path.resolve(__dirname, '../../../project1.md'); // Adjust relative path to e:\Project_Class\BLS\Web_BLS_SQL\project1.md +const mdPath = path.resolve(__dirname, '../../../project_management/project.md'); // Adjust relative path to e:\Project_Class\BLS\Web_BLS_SQL_Temp\project_management\project.md const endpoints = parseApiEndpoints(mdPath); const stats = {