# Tools 模块说明

## 当前状态

`tools` 当前是工具能力聚合模块，但在本仓库内已经完成一次收口。

当前真实保留的子模块有：

- `activate-tool`
- `add-data`
- `add-ledger`
- `device-types`
- `mms-mapping`
- `parse-pqdif`
- `wave-tool`

因此，`tools` 现阶段仍然是聚合模块，但当前已实际承载激活工具、电能质量数据补录工具、数据台账工具空模块、ICD/MMS 映射工具、PQDIF 解析预留工具和波形查看工具六个子模块。

## 当前结构

```text
tools/
├── activate-tool/
├── add-data/
├── add-ledger/
├── device-types/
├── mms-mapping/
├── parse-pqdif/
└── wave-tool/
```

其中 `tools/device-types` 当前 Maven `artifactId` 为 `device-types`，`tools/mms-mapping` 当前 Maven `artifactId` 为 `mms-mapping`。

## add-data 的职责

`add-data` 当前已提供电能质量数据批量补录能力，包含：

- 任务预估接口
- 任务创建接口
- 任务状态查询接口
- 模板规则查询接口
- 异步执行、批量写入和内存态任务状态管理

模块内部已按职责拆分 `controller`、`service`、`service/impl`、`component`、`pojo`、`config` 和 `util`，并通过 `JdbcTemplate + INSERT IGNORE` 执行批量补数。

## add-ledger 的职责

`add-ledger` 当前仅完成 Maven 空模块接入，后续用于承载数据台账相关能力。

当前未提供业务接口、Java 分层骨架、配置项或持久化逻辑。目录中的 `ledger.sql` 仅作为原始脚本保留，暂未接入运行时资源解析。

## activate-tool 的职责

`activate-tool` 当前提供的能力主要围绕设备授权与许可证：

- 生成设备申请码
- 生成激活码
- 校验激活码
- 读取本地许可证信息

从接口层看，当前主要围绕 `/activate/*` 路径提供能力。

## wave-tool 的职责

`wave-tool` 当前提供的能力主要围绕波形解析、查看数据组装与图片生成：

- 解析单列/双列文本波形
- 解析 COMTRADE `cfg/dat` 波形文件
- 计算 RMS 与特征值
- 组装前端查看明细
- 生成瞬时、RMS、治理场景波形图片

从接口层看，当前主要围绕 `/wave/*` 路径提供能力。

## mms-mapping 的职责

`mms-mapping` 当前提供的能力主要围绕 ICD 文件解析与 MMS 映射数据生成：

- 解析 ICD / SCL 文件结构
- 校验索引选择与绑定关系
- 生成映射任务结果与文档数据

从接口层看，当前主要围绕 `/api/mms-mapping` 路径提供能力。

## device-types 的职责

`device-types` 当前提供设备类型维护与校验入口：
- 查询设备类型列表
- 新增、编辑、删除设备类型
- 保存设备类型 ICD 唯一性校验结果
- 预留设备类型 PQDIF 校验入口

从接口层看，当前主要围绕 `/api/device-types` 路径提供能力。

## parse-pqdif 的职责

`parse-pqdif` 当前仅作为 PQDIF 文件解析工具的预留骨架，参照 `mms-mapping` 的 Controller、Service、ServiceImpl 和 VO 分层组织。

- 预留 PQDIF 文件上传解析入口
- 预留解析服务接口与实现
- 当前不包含真实 PQDIF 解析、持久化或数据转换逻辑

从接口层看，当前预留路径为 `/api/parse-pqdif/parse`。

## mms-mapping 配置

`mms-mapping` 当前支持以下配置项：

- `icd.mapping.default-template-path`：默认模板资源路径，默认值为 `template/DefaultCfg.txt`
- `icd.mapping.default-author`：请求未传作者时使用的默认作者，默认值为 `system`
- `icd.mapping.default-output-dir`：请求开启落盘但未指定目录时使用的默认输出目录，默认值为空字符串（即当前工作目录）

## 模块定位

当前 `activate-tool` 更适合作为平台级基础能力模块，而不是业务检测模块的一部分。

它的职责边界建议理解为：

- 负责授权相关的编码、解码和许可证文件处理
- 不负责检测业务本身
- 不负责系统级注册资源管理的全部逻辑

## 依赖关系

`tools/activate-tool`、`tools/add-data`、`tools/add-ledger`、`tools/device-types`、`tools/mms-mapping`、`tools/parse-pqdif` 与 `tools/wave-tool` 当前主要依赖：

- `com.njcn:njcn-common`
- `com.njcn:spingboot2.3.12`

并由 `entrance` 模块直接聚合使用。

## 文档说明

在本次 `P0` 收口前，`tools/README.md` 曾描述多个不存在于当前仓库中的工具子模块。
该描述已不再作为当前项目结构依据。

如果后续重新引入新的工具子模块，应：

- 同步更新 `tools/pom.xml`
- 同步更新本说明文档
- 在 `docs` 下补充模块边界与职责说明
