147 lines
8.8 KiB
Markdown
147 lines
8.8 KiB
Markdown
# Architecture: Gpulse.WCT.DataAnalyzer
|
||
|
||
> 无线充电参数采集系统。从 log 文件解析 Qfod/Ploss 数据 → 本地分析库 → 汇总生成正式充电参数数据库 → 导出 CSV。
|
||
|
||
---
|
||
|
||
## 数据流
|
||
|
||
```text
|
||
log 文件
|
||
→ parse
|
||
→ local.db(本地解析库)
|
||
→ aggregate
|
||
→ release.db(正式发布库)
|
||
→ export
|
||
→ WCT-ChargingParameterDatabase.csv
|
||
```
|
||
|
||
| 阶段 | 命令 | 存储 | 说明 |
|
||
|------|------|------|------|
|
||
| 解析 | `parse` | `local.db` | 本地日志解析库,保存原始 Qfod/Ploss 记录 |
|
||
| 汇总 | `aggregate` | `release.db` | 从 local.db 汇总生成正式充电参数记录 |
|
||
| 导出 | `export` | CSV | 读取 release.db,输出固定格式 CSV |
|
||
|
||
## 文档索引
|
||
|
||
| 文档 | 说明 |
|
||
|------|------|
|
||
| [技术选型](./技术选型.md) | 技术栈、决策记录 |
|
||
| [模块划分](./模块划分.md) | 分层架构、目录结构、模块职责 |
|
||
| [数据处理流程](./数据处理流程.md) | 解析→汇总→导出完整流程 |
|
||
| [CLI 命令设计](./CLI命令设计.md) | 命令行接口 |
|
||
| [配置管理](./配置管理.md) | 配置结构与双数据库配置 |
|
||
| [数据库支持](./database/概览.md) | 本地/发布双数据库架构 |
|
||
| [安全架构](./安全架构.md) | 路径校验、安全策略 |
|
||
| [解析器设计](./parser/概览.md) | Qfod/Ploss 解析器 |
|
||
|
||
## 架构分层
|
||
|
||
```text
|
||
┌──────────────────────────────────────────────────────────────────────┐
|
||
│ CLI Entry Point │
|
||
│ (Program.cs / System.CommandLine) │
|
||
├──────────────────────────────────────────────────────────────────────┤
|
||
│ Application Layer │
|
||
│ ┌───────────────┐ ┌──────────────┐ ┌────────────┐ ┌──────────────┐ │
|
||
│ │ LocalIngestion│ │ Publishing │ │ Exporting │ │Administration│ │
|
||
│ │ ParseService │ │AggregationSvc│ │ExportSvc │ │ CleanService │ │
|
||
│ │ ScenarioSvc │ │ThresholdCalc │ │ │ │ CleanService │ │
|
||
│ │ DimensionSvc │ │ │ │ │ │ │ │
|
||
│ └───────────────┘ └──────────────┘ └────────────┘ └──────────────┘ │
|
||
│ ┌──────────────────────────────────────────────────────────────────┐ │
|
||
│ │ Parsing │ │
|
||
│ │ QfodParser │ PlossParser │ FileNameParser │ │
|
||
│ └──────────────────────────────────────────────────────────────────┘ │
|
||
├──────────────────────────────────────────────────────────────────────┤
|
||
│ Domain Layer │
|
||
│ ┌─────────────────────────┐ ┌──────────────────────────────────────┐ │
|
||
│ │ Local/ (本地实体) │ │ Release/ (发布实体) │ │
|
||
│ │ TxPanel, TxHardware │ │ ChargingParameterRecord │ │
|
||
│ │ TxSoftware, RxType │ │ │ │
|
||
│ │ TestScenario │ │ │ │
|
||
│ │ QfodRecord, PlossRecord │ │ │ │
|
||
│ └─────────────────────────┘ └──────────────────────────────────────┘ │
|
||
├──────────────────────────────────────────────────────────────────────┤
|
||
│ Infrastructure Layer │
|
||
│ ┌───────────────┐ ┌──────────────┐ ┌────────────┐ ┌──────────────┐ │
|
||
│ │ LocalData │ │ ReleaseData │ │Configuration│ │ Security │ │
|
||
│ │ WctMinerDbCtx │ │ReleaseDbCtx │ │AppSettings │ │PathValidator │ │
|
||
│ │ DbCtxFactory │ │ReleaseDbCtxF │ │ │ │ │ │
|
||
│ │ SeedData │ │ │ │ │ │ │ │
|
||
│ └───────────────┘ └──────────────┘ └────────────┘ └──────────────┘ │
|
||
└──────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## 核心设计原则
|
||
|
||
| 原则 | 说明 |
|
||
|------|------|
|
||
| 技术栈 | .NET 8.0 + C# 12.0 + EF Core 8.0 |
|
||
| 数据库 | local.db / release.db 两个独立 SQLite 数据库 |
|
||
| 本地/发布隔离 | 无外键、无导航属性、无数据库级关联 |
|
||
| 解析模式 | 批处理,正则表达式 |
|
||
| CLI | System.CommandLine,命令模式 |
|
||
| 汇总规则 | 按业务键分组取平均值,缺失字段允许为空 |
|
||
|
||
## 目录结构
|
||
|
||
```text
|
||
src/
|
||
├── Gpulse.WCT.DataAnalyzer/ # CLI 入口
|
||
│ ├── Commands/ # 命令实现
|
||
│ │ ├── ParseCommand.cs
|
||
│ │ ├── AggregateCommand.cs
|
||
│ │ ├── ExportCommand.cs
|
||
│ │ └── CleanCommand.cs
|
||
│ ├── Program.cs
|
||
│ └── appsettings.json
|
||
│
|
||
└── Gpulse.WCT.DataAnalyzer.Core/ # 核心库
|
||
├── Application/ # 应用层
|
||
│ ├── Parsing/ # 解析器
|
||
│ │ ├── IParser.cs
|
||
│ │ ├── QfodParser.cs
|
||
│ │ ├── PlossParser.cs
|
||
│ │ └── FileNameParser.cs
|
||
│ ├── LocalIngestion/ # 本地日志解析
|
||
│ │ ├── ParseService.cs
|
||
│ │ ├── ScenarioService.cs
|
||
│ │ └── DimensionService.cs
|
||
│ ├── Publishing/ # 发布汇总
|
||
│ │ ├── AggregationService.cs
|
||
│ │ └── ThresholdCalculator.cs
|
||
│ ├── Exporting/ # 导出
|
||
│ │ └── ExportService.cs
|
||
│ └── Administration/ # 管理
|
||
│ └── CleanService.cs
|
||
├── Domain/ # 领域实体
|
||
│ └── Models/
|
||
│ ├── TxPanel.cs # 本地-维度
|
||
│ ├── TxHardware.cs
|
||
│ ├── TxSoftware.cs
|
||
│ ├── RxType.cs
|
||
│ ├── TestScenario.cs
|
||
│ ├── QfodRecord.cs
|
||
│ ├── PlossRecord.cs
|
||
│ └── ChargingParameterRecord.cs # 发布-实体
|
||
└── Infrastructure/ # 基础设施
|
||
├── LocalData/ # 本地数据库
|
||
│ ├── WctMinerDbContext.cs
|
||
│ ├── DbContextFactory.cs
|
||
│ ├── IDbContextFactory.cs
|
||
│ ├── SeedData.cs
|
||
│ └── Configurations/
|
||
├── ReleaseData/ # 发布数据库
|
||
│ ├── ReleaseDbContext.cs
|
||
│ ├── ReleaseDbContextFactory.cs
|
||
│ ├── IReleaseDbContextFactory.cs
|
||
│ └── Configurations/
|
||
├── Configuration/ # 配置
|
||
│ └── AppSettings.cs
|
||
├── Security/ # 安全
|
||
│ ├── PathValidator.cs
|
||
│ └── SecurityConstants.cs
|
||
└── Extensions/ # DI 扩展
|
||
└── ServiceCollectionExtensions.cs
|
||
``` |