feat(Analyzer): refactor analyzer and implement auto mode

This commit is contained in:
2026-08-09 21:01:38 +02:00
parent 5475c3ac51
commit b57cc9894c
31 changed files with 3425 additions and 0 deletions
@@ -0,0 +1,60 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using FinlyticCore.Models.Analyzer;
namespace FinlyticAnalyzer.Entities;
/// <summary>
/// Persisted raw news, market context, AI prompt payload & response in PostgreSQL.
/// </summary>
[Table("analyses")]
public class AnalysisEntity
{
[Key]
public Guid Id { get; set; } = Guid.NewGuid();
[Required]
[MaxLength(100)]
public string AnalysisId { get; set; } = string.Empty;
[Required]
[MaxLength(100)]
public string EventId { get; set; } = string.Empty;
[Required]
[MaxLength(50)]
public string Sector { get; set; } = string.Empty;
[Required]
[MaxLength(30)]
public string Symbol { get; set; } = string.Empty;
[Required]
[MaxLength(30)]
public string Isin { get; set; } = string.Empty;
public VixMarketRegime VixRegime { get; set; }
public decimal VixValue { get; set; }
public double ImpactScore { get; set; }
public double WinRate { get; set; }
[Column(TypeName = "jsonb")]
public string RawDataJson { get; set; } = "{}";
[Column(TypeName = "jsonb")]
public string AiOutputJson { get; set; } = "{}";
[Column(TypeName = "jsonb")]
public string N8nResponseJson { get; set; } = "{}";
public double N8nEvalScore { get; set; }
[MaxLength(30)]
public string N8nDecision { get; set; } = string.Empty;
public bool IsTradeProposed { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}