# CN_Tool

CN_Tool 是一个基于 Spring Boot 的多模块后端聚合工程，当前仓库内保留的核心能力包括：

- 用户认证、用户/角色/菜单资源管理
- 系统字典、日志、系统配置、注册资源管理
- WebSocket / Netty 通信基础设施
- 激活码与许可证能力
- 波形文本解析与查看数据组装能力

## 当前真实模块

根聚合模块下当前包含以下子模块：

- `entrance`
- `system`
- `systemmonitor`
- `system-ops`
- `user`
- `detection`
- `tools`

其中 `systemmonitor` 当前包含：

- `disk-monitor`

其中 `system-ops` 当前包含：

- `dbms`
- `deploy`

其中 `tools` 当前包含：

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

## 启动入口

当前主启动入口位于：

- `entrance/src/main/java/com/njcn/gather/EntranceApplication.java`

`entrance` 模块聚合了 `system`、`disk-monitor`、`dbms`、`deploy`、`user`、`detection`、`activate-tool`、`add-data`、`add-ledger`、`wave-tool`、`device-types`、`mms-mapping`、`parse-pqdif`，是当前运行时主入口。

## 技术基线

- Java：源码目标版本为 `1.8`
- Spring Boot：`2.3.12.RELEASE`
- 构建方式：Maven 多模块工程
- ORM：MyBatis-Plus
- 数据库：MySQL

## 运行与构建前提

当前项目存在以下前提条件：

- 需要可用的 JDK 8 环境
- 需要 Maven 环境
- 当前仓库未发现 `mvnw`
- 依赖私有 `com.njcn` 组件
- 根 `pom.xml` 中存在内网 Nexus 发布仓库配置
- 运行前通常需要可访问的 MySQL 数据库和基础表数据

说明：

当前这份仓库并不保证在任意外部环境下可直接编译运行。
如果要做真实构建和启动，需要先满足内部依赖和环境条件。

## 文档入口

P0 已补齐基线文档，建议按以下顺序阅读：

1. [docs/01-项目总览.md](./docs/01-项目总览.md)
2. [docs/02-配置清单.md](./docs/02-配置清单.md)
3. [docs/03-构建与运行前提.md](./docs/03-构建与运行前提.md)
4. [docs/04-过时文档说明.md](./docs/04-过时文档说明.md)

## 模块说明

- `user`
  - 负责认证、用户、角色、菜单资源相关能力
- `system`
  - 负责字典、日志、系统配置、注册资源相关能力
- `systemmonitor/disk-monitor`
  - 负责磁盘监控相关能力的独立扩展实现
- `system-ops/dbms`
  - 负责系统运维下数据库监控基础入口
- `system-ops/deploy`
  - 负责系统运维下系统部署基础入口
- `detection`
  - 当前以通信基础设施为主，包含 WebSocket / Netty 相关组件
- `tools/activate-tool`
  - 负责激活码生成、激活码验证、许可证读取等能力
- `tools/add-data`
  - 当前提供电能质量 13 张表批量补数、任务状态查询和模板规则查询能力
- `tools/add-ledger`
  - 当前为数据台账工具预留空模块
- `tools/device-types`
  - 负责设备类型维护、ICD 校验结果保存和 PQDIF 校验预留入口
- `tools/mms-mapping`
  - 负责 ICD 文件解析与 MMS 映射数据生成能力
- `tools/parse-pqdif`
  - 当前为 PQDIF 文件解析能力预留空方法骨架
- `tools/wave-tool`
  - 负责波形文本解析与查看数据组装能力

## 文档使用规则

当前仓库中部分历史说明仍然存在。
如文档之间出现冲突，建议按以下优先级理解：

1. `docs/` 下的基线文档
2. 根 `README.md`
3. 各模块下的 `Readme.md`
4. 最终以源码和配置为准
