适配ProductionTracker新四参数签名并写入分析日志到log_collect_raw

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
main
haoliang 1 month ago
parent b1f487c077
commit f7f3711008

@ -28,9 +28,11 @@ namespace CncCollector.Core
/// <param name="responseDurationMs">响应耗时(毫秒)</param>
/// <param name="isSuccess">是否采集成功</param>
/// <param name="errorMessage">错误信息(失败时)</param>
/// <param name="analysisSummary">产量分析日志摘要(成功时写入)</param>
public static long WriteBatch(string businessConnStr, string logConnStr,
List<CollectRecord> records, string rawJson, int collectAddressId,
DateTime requestTime, long? responseDurationMs, bool isSuccess, string errorMessage, int? statusCode = null)
DateTime requestTime, long? responseDurationMs, bool isSuccess, string errorMessage, int? statusCode = null,
string analysisSummary = null)
{
var now = DateTime.Now;
long lastRawLogId = 0;
@ -41,8 +43,8 @@ namespace CncCollector.Core
using (var conn = new MySqlConnection(logConnStr))
{
conn.Open();
conn.Execute(@"INSERT INTO log_collect_raw (collect_address_id, request_time, response_time, response_duration, is_success, status_code, raw_json, error_message, created_at)
VALUES (@CollectAddressId, @RequestTime, @ResponseTime, @ResponseDuration, @IsSuccess, @StatusCode, @RawJson, @ErrorMessage, @CreatedAt)",
conn.Execute(@"INSERT INTO log_collect_raw (collect_address_id, request_time, response_time, response_duration, is_success, status_code, raw_json, error_message, analysis_summary, created_at)
VALUES (@CollectAddressId, @RequestTime, @ResponseTime, @ResponseDuration, @IsSuccess, @StatusCode, @RawJson, @ErrorMessage, @AnalysisSummary, @CreatedAt)",
new
{
CollectAddressId = collectAddressId,
@ -53,6 +55,7 @@ namespace CncCollector.Core
StatusCode = statusCode ?? (isSuccess ? (int?)200 : null),
RawJson = rawJson ?? "",
ErrorMessage = errorMessage ?? (string)null,
AnalysisSummary = analysisSummary ?? (string)null,
CreatedAt = now
});
// 记录刚插入的 raw_log 的自增ID

@ -419,6 +419,14 @@ namespace CncCollector.Core
var records = new List<CollectRecord>();
// 分析日志收集
var analysisLogs = new List<string>();
analysisLogs.Add("========== CNC采集产量分析日志 ==========");
analysisLogs.Add("采集时间:" + collectTime.ToString("yyyy-MM-dd HH:mm:ss"));
analysisLogs.Add("采集地址:" + _address.Name);
analysisLogs.Add("本次共采集" + devices.Count + "台机床数据,分析结果如下:");
analysisLogs.Add("");
foreach (var deviceToken in devices)
{
var deviceObj = deviceToken as JObject;
@ -473,12 +481,23 @@ namespace CncCollector.Core
records.Add(record);
// 产量跟踪program_name为空时不触发分段逻辑
_tracker.Track(machine.Id, record.ProgramName, record.PartCount, collectTime);
var (logText, changed, todayTotal) = _tracker.Track(
machine.Id, record.ProgramName, record.TotalPartCount, collectTime);
analysisLogs.Add("---机床:" + machine.Name + "---");
analysisLogs.Add("采集到:程序名=" + (record.ProgramName ?? "(空)") + ",加工零件总数=" + (record.TotalPartCount?.ToString() ?? "(空)"));
analysisLogs.Add("处理结果:" + logText);
analysisLogs.Add("当日该机床累计产量:" + todayTotal.ToString("F0") + "个");
analysisLogs.Add("");
}
// 拼接分析日志
analysisLogs.Add("---本日产量汇总---");
analysisLogs.Add("==========================================");
var analysisText = string.Join("\n", analysisLogs);
// 4. 批量写入
long rawLogId = CollectRecordWriter.WriteBatch(_businessConnStr, _logConnStr, records, rawJson,
_address.Id, requestTime, durationMs, true, null, statusCode);
_address.Id, requestTime, durationMs, true, null, statusCode, analysisText);
// 采集分析:将分析任务委托给 AnalysisEngine
if (rawLogId > 0 && records != null && records.Count > 0 && _analysisEngine != null)

Loading…
Cancel
Save