refactor(core): 重构核心分层结构并添加发布库聚合

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Scottxjw
2026-08-13 15:00:39 +08:00
parent 6e197a0cce
commit a3100c73c5
45 changed files with 501 additions and 77 deletions

View File

@@ -0,0 +1,33 @@
using System.CommandLine;
using Gpulse.WCT.DataAnalyzer.Core.Application;
namespace Gpulse.WCT.DataAnalyzer.Commands;
/// <summary>
/// 从本地解析库生成正式发布库。
/// </summary>
public class AggregateCommand : Command
{
public AggregateCommand(AggregationService aggregationService)
: base("aggregate", "Aggregate local log data into the release database")
{
var rebuildOption = new Option<bool>(
"--rebuild",
() => true,
"Rebuild the release table before inserting aggregated records");
AddOption(rebuildOption);
this.SetHandler(async rebuild =>
{
try
{
var report = await aggregationService.AggregateAsync(rebuild);
Console.WriteLine($"Aggregated {report.LocalRecordCount} local Ploss records into {report.ReleaseRecordCount} release records.");
}
catch (Exception ex)
{
Console.WriteLine($"Aggregation failed: {ex.Message}");
}
}, rebuildOption);
}
}

View File

@@ -1,5 +1,5 @@
using System.CommandLine;
using Gpulse.WCT.DataAnalyzer.Core.Services;
using Gpulse.WCT.DataAnalyzer.Core.Application;
namespace Gpulse.WCT.DataAnalyzer.Commands;

View File

@@ -1,5 +1,5 @@
using System.CommandLine;
using Gpulse.WCT.DataAnalyzer.Core.Services;
using Gpulse.WCT.DataAnalyzer.Core.Application;
namespace Gpulse.WCT.DataAnalyzer.Commands;
@@ -25,8 +25,8 @@ public class ExportCommand : Command
var typeOption = new Option<string>(
"--type",
() => "all",
"Data type to export: qfod, ploss, or all"
() => "charging-parameters",
"Data type: charging-parameters, qfod, ploss, or all"
);
AddOption(formatOption);
@@ -44,6 +44,12 @@ public class ExportCommand : Command
{
if (format == "csv")
{
if (type is "charging-parameters" or "charging" or "all")
{
var path = await exportService.ExportChargingParametersToCsvAsync(output);
Console.WriteLine($" ChargingParameterDatabase CSV exported: {path}");
}
if (type is "qfod" or "all")
{
var path = await exportService.ExportQfodToCsvAsync(output);

View File

@@ -1,5 +1,5 @@
using System.CommandLine;
using Gpulse.WCT.DataAnalyzer.Core.Services;
using Gpulse.WCT.DataAnalyzer.Core.Application;
namespace Gpulse.WCT.DataAnalyzer.Commands;

View File

@@ -1,5 +1,5 @@
using System.CommandLine;
using Gpulse.WCT.DataAnalyzer.Core.Services;
using Gpulse.WCT.DataAnalyzer.Core.Application;
namespace Gpulse.WCT.DataAnalyzer.Commands;