Skip to content

方案设计:能源消耗数据采集

← 返回场景概览 | 上一阶段:需求探索 | 下一阶段:开发资产


方案概览

本方案设计了一套多源数据自动采集 + 人工补录 + 质量校验的能源数据采集系统,支持从ERP、MES、能源管理系统、电表系统等多个数据源自动采集能源消耗数据,同时支持人工录入和移动端抄表,并提供实时数据质量校验和异常预警功能。

核心价值

  • 数据采集时间从3-5天缩短到1小时以内
  • 数据缺失率从15%降低到5%以内
  • 支持日度、周度、月度等多种采集频率
  • 实时监控能耗,及时发现异常

1. 全流程业务设计

1.1 整体流程

1.2 核心环节

环节一:数据源配置

流程步骤:

  1. 选择数据源类型(ERP、MES、能源管理系统、电表系统、人工录入)
  2. 配置连接参数(数据库连接、API地址、文件路径等)
  3. 测试连接是否成功
  4. 配置数据映射规则(源字段 → 目标字段)
  5. 保存配置

关键规则:

  • 支持多种连接方式:数据库直连、API对接、文件导入、人工录入
  • 连接参数加密存储,保证安全性
  • 数据映射支持字段转换(如单位换算、格式转换)
  • 配置保存后可随时修改

环节二:采集规则设置

流程步骤:

  1. 选择能源类型(电、气、煤、油等)
  2. 设置采集频率(日度、周度、月度、实时)
  3. 设置采集时间(如每月1日凌晨2点)
  4. 设置数据范围(时间范围、部门范围等)
  5. 设置校验规则(合理范围、同比环比阈值等)
  6. 保存规则

关键规则:

  • 采集频率可按能源类型分别设置
  • 采集时间避开业务高峰期
  • 数据范围支持灵活配置(按部门、按设备、按时间等)
  • 校验规则可自定义

环节三:自动数据采集

流程步骤:

  1. 定时任务触发(按设定的采集时间)
  2. 连接数据源(数据库、API、文件系统)
  3. 执行查询或读取操作
  4. 提取数据(按数据映射规则)
  5. 数据标准化(单位换算、格式转换)
  6. 数据质量校验
  7. 保存到数据库
  8. 记录采集日志

关键规则:

  • 采集失败自动重试(最多3次)
  • 采集过程记录详细日志
  • 数据标准化规则统一
  • 采集完成后发送通知

环节四:人工数据录入

流程步骤:

  1. 打开数据录入界面
  2. 选择能源类型和时间
  3. 填写能源消耗数据
  4. 上传原始凭证(可选)
  5. 实时校验数据
  6. 提交保存

关键规则:

  • 支持单条录入和批量导入
  • 支持移动端录入(如抄表APP)
  • 实时校验,发现问题立即提示
  • 原始凭证与数据关联存储

环节五:数据质量校验

流程步骤:

  1. 检查数据完整性(是否有缺失值)
  2. 检查数据合理性(是否在合理范围内)
  3. 检查数据一致性(是否与历史数据差异过大)
  4. 检查数据重复性(是否重复录入)
  5. 生成校验报告
  6. 标记问题数据

关键规则:

  • 缺失值:必填字段不能为空
  • 合理性:数值在合理范围内(如用电量 > 0)
  • 一致性:同比环比变化不超过阈值(如同比增长不超过50%)
  • 重复性:同一时间、同一设备的数据不能重复

2. 业务规则设计

2.1 数据采集规则

规则一:采集频率规则

  • 描述:不同能源类型的采集频率不同
  • 判断条件
    • 电力:日度采集(每日凌晨2点)
    • 天然气:日度采集(每日凌晨2点)
    • 煤炭:月度采集(每月1日)
    • 柴油/汽油:月度采集(每月1日)
  • 处理动作:按设定频率自动触发采集任务

规则二:采集失败重试规则

  • 描述:采集失败后自动重试
  • 判断条件:采集失败(连接超时、数据格式错误等)
  • 处理动作
    • 第1次失败:5分钟后重试
    • 第2次失败:30分钟后重试
    • 第3次失败:发送告警通知,人工介入

规则三:数据标准化规则

  • 描述:将不同格式的数据转换为统一格式
  • 判断条件:数据格式不统一
  • 处理动作
    • 单位换算:吨 → 千克、GJ → MJ
    • 格式转换:日期格式统一为 YYYY-MM-DD
    • 数值精度:保留2位小数

2.2 数据质量校验规则

规则一:缺失值检查

  • 描述:检查必填字段是否为空
  • 判断条件:必填字段为空或null
  • 处理动作:标记为"缺失值",提示补录

规则二:合理范围检查

  • 描述:检查数值是否在合理范围内
  • 判断条件
    • 用电量 < 0 或 > 1000000(度)
    • 用气量 < 0 或 > 100000(立方米)
    • 用煤量 < 0 或 > 10000(吨)
  • 处理动作:标记为"异常值",提示核实

规则三:同比环比检查

  • 描述:检查数据是否与历史数据差异过大
  • 判断条件
    • 同比增长 > 50% 或 < -50%
    • 环比增长 > 30% 或 < -30%
  • 处理动作:标记为"异常波动",提示核实原因

规则四:重复值检查

  • 描述:检查是否重复录入
  • 判断条件:同一时间、同一设备、同一能源类型的数据已存在
  • 处理动作:标记为"重复数据",提示删除或修正

2.3 数据修正规则

规则一:修正权限规则

  • 描述:只有授权人员可以修正数据
  • 判断条件:用户角色为"碳核算专员"或"数据管理员"
  • 处理动作:允许修正;否则拒绝

规则二:修正记录规则

  • 描述:所有修正操作必须记录
  • 判断条件:数据被修正
  • 处理动作:记录修正前后的值、修正原因、修正人、修正时间

规则三:修正审批规则

  • 描述:重要数据修正需要审批
  • 判断条件:修正幅度 > 20%
  • 处理动作:提交审批流程,审批通过后生效

3. 数据模型设计

3.1 数据源配置(DataSourceConfig)

typescript
interface DataSourceConfig {
  id: string;                    // 数据源ID
  name: string;                  // 数据源名称
  type: DataSourceType;          // 数据源类型(ERP/MES/能源系统/电表/人工)
  connectionParams: {            // 连接参数
    host?: string;               // 数据库主机
    port?: number;               // 端口
    database?: string;           // 数据库名
    username?: string;           // 用户名
    password?: string;           // 密码(加密存储)
    apiUrl?: string;             // API地址
    apiKey?: string;             // API密钥
    filePath?: string;           // 文件路径
  };
  dataMapping: DataMapping[];    // 数据映射规则
  isEnabled: boolean;            // 是否启用
  createdAt: Date;
  updatedAt: Date;
}

enum DataSourceType {
  ERP = 'ERP',
  MES = 'MES',
  ENERGY_SYSTEM = 'ENERGY_SYSTEM',
  METER = 'METER',
  MANUAL = 'MANUAL'
}

interface DataMapping {
  sourceField: string;           // 源字段名
  targetField: string;           // 目标字段名
  transform?: string;            // 转换规则(如单位换算)
}

3.2 采集规则(CollectionRule)

typescript
interface CollectionRule {
  id: string;                    // 规则ID
  dataSourceId: string;          // 数据源ID
  energyType: EnergyType;        // 能源类型
  frequency: Frequency;          // 采集频率
  schedule: string;              // 采集时间(Cron表达式)
  dataRange: {                   // 数据范围
    startDate?: Date;
    endDate?: Date;
    departments?: string[];      // 部门列表
    devices?: string[];          // 设备列表
  };
  validationRules: ValidationRule[]; // 校验规则
  isEnabled: boolean;            // 是否启用
  createdAt: Date;
  updatedAt: Date;
}

enum EnergyType {
  ELECTRICITY = 'ELECTRICITY',   // 电力
  GAS = 'GAS',                   // 天然气
  COAL = 'COAL',                 // 煤炭
  DIESEL = 'DIESEL',             // 柴油
  GASOLINE = 'GASOLINE'          // 汽油
}

enum Frequency {
  REALTIME = 'REALTIME',         // 实时
  DAILY = 'DAILY',               // 日度
  WEEKLY = 'WEEKLY',             // 周度
  MONTHLY = 'MONTHLY'            // 月度
}

3.3 能源消耗数据(EnergyConsumption)

typescript
interface EnergyConsumption {
  id: string;                    // 数据ID
  dataSourceId: string;          // 数据源ID
  energyType: EnergyType;        // 能源类型
  department: string;            // 部门
  device?: string;               // 设备
  consumptionDate: Date;         // 消耗日期
  quantity: number;              // 消耗量
  unit: string;                  // 单位(度、立方米、吨等)
  cost?: number;                 // 费用
  currency?: string;             // 币种
  dataSource: string;            // 数据来源(自动采集/人工录入)
  collectionTime: Date;          // 采集时间
  status: DataStatus;            // 数据状态
  validationResult?: ValidationResult; // 校验结果
  attachments?: string[];        // 附件(原始凭证)
  createdBy: string;             // 创建人
  createdAt: Date;
  updatedAt: Date;
}

enum DataStatus {
  PENDING = 'PENDING',           // 待校验
  VALID = 'VALID',               // 已校验通过
  INVALID = 'INVALID',           // 校验不通过
  CORRECTED = 'CORRECTED'        // 已修正
}

interface ValidationResult {
  isValid: boolean;              // 是否通过校验
  errors: ValidationError[];     // 错误列表
}

interface ValidationError {
  type: string;                  // 错误类型(缺失值/异常值/重复值)
  field: string;                 // 字段名
  message: string;               // 错误信息
  severity: 'ERROR' | 'WARNING'; // 严重程度
}

3.4 数据修正记录(DataCorrection)

typescript
interface DataCorrection {
  id: string;                    // 修正记录ID
  dataId: string;                // 数据ID
  field: string;                 // 修正字段
  oldValue: any;                 // 修正前的值
  newValue: any;                 // 修正后的值
  reason: string;                // 修正原因
  correctedBy: string;           // 修正人
  correctedAt: Date;             // 修正时间
  approvedBy?: string;           // 审批人
  approvedAt?: Date;             // 审批时间
  status: CorrectionStatus;      // 修正状态
}

enum CorrectionStatus {
  PENDING = 'PENDING',           // 待审批
  APPROVED = 'APPROVED',         // 已审批
  REJECTED = 'REJECTED'          // 已拒绝
}

3.5 采集日志(CollectionLog)

typescript
interface CollectionLog {
  id: string;                    // 日志ID
  ruleId: string;                // 规则ID
  dataSourceId: string;          // 数据源ID
  startTime: Date;               // 开始时间
  endTime: Date;                 // 结束时间
  status: LogStatus;             // 状态
  recordCount: number;           // 采集记录数
  errorCount: number;            // 错误记录数
  errorMessage?: string;         // 错误信息
  retryCount: number;            // 重试次数
  createdAt: Date;
}

enum LogStatus {
  SUCCESS = 'SUCCESS',           // 成功
  FAILED = 'FAILED',             // 失败
  PARTIAL = 'PARTIAL'            // 部分成功
}

4. 权限设计

4.1 角色定义

角色权限
系统管理员配置数据源、设置采集规则、查看所有数据、修正数据、审批修正
碳核算专员查看所有数据、修正数据、导出数据、生成报告
数据管理员人工录入数据、修正数据、查看本部门数据
部门数据员人工录入本部门数据、查看本部门数据
查看者查看数据、导出数据

4.2 数据权限

  • 系统管理员:可查看和修正所有数据
  • 碳核算专员:可查看和修正所有数据
  • 数据管理员:可查看和修正本部门数据
  • 部门数据员:只能查看和录入本部门数据
  • 查看者:只能查看授权范围内的数据

4.3 操作权限

  • 数据源配置:仅系统管理员
  • 采集规则设置:系统管理员、碳核算专员
  • 人工录入:数据管理员、部门数据员
  • 数据修正:系统管理员、碳核算专员、数据管理员
  • 修正审批:系统管理员、碳核算专员
  • 数据导出:所有角色(按数据权限)

5. 技术架构

5.1 系统架构

5.2 核心功能模块

  1. 数据采集引擎

    • 支持多种数据源连接(数据库、API、文件)
    • 定时任务调度
    • 失败重试机制
    • 采集日志记录
  2. 数据标准化模块

    • 单位换算
    • 格式转换
    • 数据映射
  3. 数据质量校验模块

    • 缺失值检查
    • 合理范围检查
    • 同比环比检查
    • 重复值检查
  4. 数据修正模块

    • 在线修正
    • 批量修正
    • 修正记录
    • 修正审批
  5. 数据监控模块

    • 实时监控仪表盘
    • 异常预警
    • 采集状态监控
    • 数据质量报告

6. 关键业务规则总结

6.1 数据采集规则

  • 采集频率按能源类型分别设置(电力日度、煤炭月度)
  • 采集失败自动重试3次
  • 采集过程记录详细日志
  • 数据标准化规则统一

6.2 数据质量规则

  • 缺失值:必填字段不能为空
  • 合理范围:数值在合理范围内
  • 同比环比:变化不超过阈值
  • 重复值:同一时间同一设备不能重复

6.3 数据修正规则

  • 修正权限:仅授权人员可修正
  • 修正记录:所有修正操作必须记录
  • 修正审批:重要数据修正需要审批

6.4 数据安全规则

  • 连接参数加密存储
  • 数据权限按角色和部门控制
  • 操作日志完整记录
  • 敏感数据脱敏展示

7. 实施要点

7.1 数据源对接

  • 优先级:先对接数据量大、采集频率高的数据源(如电表系统)
  • 测试:充分测试连接稳定性和数据准确性
  • 备份:保留原始数据,便于问题排查

7.2 校验规则配置

  • 初期:校验规则宽松,避免误报
  • 优化:根据实际数据逐步优化校验规则
  • 自定义:支持企业自定义校验规则

7.3 用户培训

  • 系统管理员:数据源配置、采集规则设置
  • 数据管理员:人工录入、数据修正
  • 部门数据员:移动端抄表、数据录入

7.4 数据迁移

  • 历史数据:导入历史数据,便于同比环比分析
  • 数据清洗:清洗历史数据,保证质量
  • 数据验证:验证迁移数据的准确性

下一步:开发资产

在开发资产阶段,我们将:

  1. 创建 Skills(数据采集规则、数据质量校验规则)
  2. 创建 Prompts(数据源配置向导、校验规则配置向导)
  3. 创建代码模板(数据采集API、数据校验API、前端组件)

查看开发资产 →


创建时间:2026-05-01

基于 AI 辅助开发,快速、灵活、可靠