feat(analyzer): update MQTT handler, active trade monitoring, and dynamic settings

This commit is contained in:
2026-08-14 23:55:52 +02:00
parent 4d5ab09bbd
commit c496651dd1
8 changed files with 778 additions and 45 deletions
@@ -0,0 +1,351 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace FinlyticAnalyzer.Migrations
{
/// <inheritdoc />
public partial class CheckPendingAnalyzer : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropPrimaryKey(
name: "PK_TradeProposals",
table: "TradeProposals");
migrationBuilder.RenameTable(
name: "TradeProposals",
newName: "trade_proposals");
migrationBuilder.RenameIndex(
name: "IX_TradeProposals_Isin",
table: "trade_proposals",
newName: "IX_trade_proposals_Isin");
migrationBuilder.RenameIndex(
name: "IX_TradeProposals_ExpiresAt",
table: "trade_proposals",
newName: "IX_trade_proposals_ExpiresAt");
migrationBuilder.AlterColumn<string>(
name: "ProposedAction",
table: "trade_proposals",
type: "character varying(20)",
maxLength: 20,
nullable: false,
oldClrType: typeof(string),
oldType: "text");
migrationBuilder.AlterColumn<string>(
name: "Name",
table: "trade_proposals",
type: "character varying(150)",
maxLength: 150,
nullable: false,
oldClrType: typeof(string),
oldType: "text");
migrationBuilder.AlterColumn<string>(
name: "Isin",
table: "trade_proposals",
type: "character varying(30)",
maxLength: 30,
nullable: false,
oldClrType: typeof(string),
oldType: "text");
migrationBuilder.AddColumn<string>(
name: "AnalysisId",
table: "trade_proposals",
type: "character varying(100)",
maxLength: 100,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<decimal>(
name: "EntryPrice",
table: "trade_proposals",
type: "numeric(18,4)",
nullable: false,
defaultValue: 0m);
migrationBuilder.AddColumn<decimal>(
name: "EntryZoneMax",
table: "trade_proposals",
type: "numeric(18,4)",
nullable: true);
migrationBuilder.AddColumn<decimal>(
name: "EntryZoneMin",
table: "trade_proposals",
type: "numeric(18,4)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "EventId",
table: "trade_proposals",
type: "character varying(100)",
maxLength: 100,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "FundamentalRationale",
table: "trade_proposals",
type: "text",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "InstrumentType",
table: "trade_proposals",
type: "character varying(30)",
maxLength: 30,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<decimal>(
name: "MaxLeverage",
table: "trade_proposals",
type: "numeric(18,4)",
nullable: true);
migrationBuilder.AddColumn<decimal>(
name: "RiskRewardRatio",
table: "trade_proposals",
type: "numeric(18,4)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RiskTolerance",
table: "trade_proposals",
type: "character varying(30)",
maxLength: 30,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "RiskWarning",
table: "trade_proposals",
type: "text",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "Sector",
table: "trade_proposals",
type: "character varying(50)",
maxLength: 50,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<decimal>(
name: "StopLoss",
table: "trade_proposals",
type: "numeric(18,4)",
nullable: false,
defaultValue: 0m);
migrationBuilder.AddColumn<string>(
name: "Symbol",
table: "trade_proposals",
type: "character varying(30)",
maxLength: 30,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<decimal>(
name: "TakeProfit",
table: "trade_proposals",
type: "numeric(18,4)",
nullable: false,
defaultValue: 0m);
migrationBuilder.AddColumn<string>(
name: "TakeProfitTargets",
table: "trade_proposals",
type: "text",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "TechnicalRationale",
table: "trade_proposals",
type: "text",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "Timeframe",
table: "trade_proposals",
type: "character varying(20)",
maxLength: 20,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<int>(
name: "VixRegime",
table: "trade_proposals",
type: "integer",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<decimal>(
name: "VixValue",
table: "trade_proposals",
type: "numeric(18,4)",
nullable: false,
defaultValue: 0m);
migrationBuilder.AddColumn<double>(
name: "WinRate",
table: "trade_proposals",
type: "double precision",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddPrimaryKey(
name: "PK_trade_proposals",
table: "trade_proposals",
column: "Id");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropPrimaryKey(
name: "PK_trade_proposals",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "AnalysisId",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "EntryPrice",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "EntryZoneMax",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "EntryZoneMin",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "EventId",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "FundamentalRationale",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "InstrumentType",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "MaxLeverage",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "RiskRewardRatio",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "RiskTolerance",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "RiskWarning",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "Sector",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "StopLoss",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "Symbol",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "TakeProfit",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "TakeProfitTargets",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "TechnicalRationale",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "Timeframe",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "VixRegime",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "VixValue",
table: "trade_proposals");
migrationBuilder.DropColumn(
name: "WinRate",
table: "trade_proposals");
migrationBuilder.RenameTable(
name: "trade_proposals",
newName: "TradeProposals");
migrationBuilder.RenameIndex(
name: "IX_trade_proposals_Isin",
table: "TradeProposals",
newName: "IX_TradeProposals_Isin");
migrationBuilder.RenameIndex(
name: "IX_trade_proposals_ExpiresAt",
table: "TradeProposals",
newName: "IX_TradeProposals_ExpiresAt");
migrationBuilder.AlterColumn<string>(
name: "ProposedAction",
table: "TradeProposals",
type: "text",
nullable: false,
oldClrType: typeof(string),
oldType: "character varying(20)",
oldMaxLength: 20);
migrationBuilder.AlterColumn<string>(
name: "Name",
table: "TradeProposals",
type: "text",
nullable: false,
oldClrType: typeof(string),
oldType: "character varying(150)",
oldMaxLength: 150);
migrationBuilder.AlterColumn<string>(
name: "Isin",
table: "TradeProposals",
type: "text",
nullable: false,
oldClrType: typeof(string),
oldType: "character varying(30)",
oldMaxLength: 30);
migrationBuilder.AddPrimaryKey(
name: "PK_TradeProposals",
table: "TradeProposals",
column: "Id");
}
}
}