refactor: save current workspace state including FinlyticAnalyzer fixes, FinlyticApp trade route alignment, and DTO audit documentation
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace FinlyticCore.Dtos;
|
||||
|
||||
/// <summary>
|
||||
/// Response DTO for corporate calendar events (AOT-compliant).
|
||||
/// </summary>
|
||||
public record CalendarEventResponseDto(
|
||||
[property: JsonPropertyName("id")] string Id,
|
||||
[property: JsonPropertyName("symbol")] string Symbol,
|
||||
[property: JsonPropertyName("companyName")] string CompanyName,
|
||||
[property: JsonPropertyName("eventType")] string EventType,
|
||||
[property: JsonPropertyName("eventDate")] DateTime EventDate,
|
||||
[property: JsonPropertyName("date")] string Date,
|
||||
[property: JsonPropertyName("isin")] string Isin,
|
||||
[property: JsonPropertyName("ticker")] string Ticker,
|
||||
[property: JsonPropertyName("description")] string Description,
|
||||
[property: JsonPropertyName("details")] string Details,
|
||||
[property: JsonPropertyName("image")] string Image
|
||||
);
|
||||
@@ -13,39 +13,40 @@ public record LimitRequest(
|
||||
/// Generic request payload for paginated queries with optional ISIN filter.
|
||||
/// </summary>
|
||||
public record PaginatedRequest(
|
||||
[property: JsonPropertyName("limit")] int Limit,
|
||||
[property: JsonPropertyName("offset")] int Offset,
|
||||
[property: JsonPropertyName("isin")] string? Isin = null
|
||||
[property: JsonPropertyName("limit")] int Limit,
|
||||
[property: JsonPropertyName("offset")] int Offset,
|
||||
[property: JsonPropertyName("isin")] string? Isin = null
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Request payload for daily-news queries with optional filters.
|
||||
/// </summary>
|
||||
public record DailyNewsRequest(
|
||||
[property: JsonPropertyName("limit")] int Limit,
|
||||
[property: JsonPropertyName("offset")] int Offset,
|
||||
[property: JsonPropertyName("isin")] string? Isin = null,
|
||||
[property: JsonPropertyName("date")] string? Date = null,
|
||||
[property: JsonPropertyName("status")] string? Status = null,
|
||||
[property: JsonPropertyName("query")] string? Query = null,
|
||||
[property: JsonPropertyName("hasSentiment")] bool? HasSentiment = null
|
||||
[property: JsonPropertyName("limit")] int Limit,
|
||||
[property: JsonPropertyName("offset")] int Offset,
|
||||
[property: JsonPropertyName("isin")] string? Isin = null,
|
||||
[property: JsonPropertyName("date")] DateTime? Date = null,
|
||||
[property: JsonPropertyName("status")] string? Status = null,
|
||||
[property: JsonPropertyName("query")] string? Query = null,
|
||||
[property: JsonPropertyName("hasSentiment")]
|
||||
bool? HasSentiment = null
|
||||
);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Request payload for fetching fundamentals or technical-analysis data by ISIN.
|
||||
/// </summary>
|
||||
public record IsinRequest(
|
||||
[property: JsonPropertyName("isin")] string Isin,
|
||||
[property: JsonPropertyName("ticker")] string? Ticker = "",
|
||||
[property: JsonPropertyName("forceRefresh")] bool ForceRefresh = false
|
||||
[property: JsonPropertyName("isin")] string Isin,
|
||||
[property: JsonPropertyName("ticker")] string? Ticker = "",
|
||||
[property: JsonPropertyName("forceRefresh")]
|
||||
bool ForceRefresh = false
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Request payload for fetching trades filtered by ISIN and/or status.
|
||||
/// </summary>
|
||||
public record GetTradesRequest(
|
||||
[property: JsonPropertyName("isin")] string? Isin = null,
|
||||
[property: JsonPropertyName("isin")] string? Isin = null,
|
||||
[property: JsonPropertyName("status")] string? Status = null,
|
||||
[property: JsonPropertyName("userId")] string? UserId = null
|
||||
);
|
||||
@@ -54,17 +55,20 @@ public record GetTradesRequest(
|
||||
/// Request payload for fetching sentiment by article ID.
|
||||
/// </summary>
|
||||
public record ArticleRequest(
|
||||
[property: JsonPropertyName("articleId")] string ArticleId,
|
||||
[property: JsonPropertyName("id")] string? Id = null
|
||||
[property: JsonPropertyName("articleId")]
|
||||
string ArticleId,
|
||||
[property: JsonPropertyName("id")] string? Id = null
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Request payload for triggering a manual sentiment analysis for an article or ISIN.
|
||||
/// </summary>
|
||||
public record AnalyzeSentimentRequest(
|
||||
[property: JsonPropertyName("articleId")] string? ArticleId = null,
|
||||
[property: JsonPropertyName("isin")] string? Isin = null,
|
||||
[property: JsonPropertyName("forceReload")] bool ForceReload = false
|
||||
[property: JsonPropertyName("articleId")]
|
||||
string? ArticleId = null,
|
||||
[property: JsonPropertyName("isin")] string? Isin = null,
|
||||
[property: JsonPropertyName("forceReload")]
|
||||
bool ForceReload = false
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
@@ -72,6 +76,14 @@ public record AnalyzeSentimentRequest(
|
||||
/// </summary>
|
||||
public record EmptyRequest;
|
||||
|
||||
/// <summary>
|
||||
/// Request payload for paginated/monthly calendar queries.
|
||||
/// </summary>
|
||||
public record GetEventsByMonthRequest(
|
||||
[property: JsonPropertyName("year")] int Year,
|
||||
[property: JsonPropertyName("month")] int Month
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Request payload for triggering a manual AI analysis.
|
||||
/// </summary>
|
||||
@@ -79,28 +91,40 @@ public record ManualAnalysisRpcRequest(
|
||||
[property: JsonPropertyName("isin")] string Isin,
|
||||
[property: JsonPropertyName("symbol")] string Symbol,
|
||||
[property: JsonPropertyName("sector")] string Sector,
|
||||
[property: JsonPropertyName("headline")] string Headline,
|
||||
[property: JsonPropertyName("currentPrice")] decimal CurrentPrice,
|
||||
[property: JsonPropertyName("riskScore")] int RiskScore,
|
||||
[property: JsonPropertyName("minTimeframeValue")] int MinTimeframeValue,
|
||||
[property: JsonPropertyName("maxTimeframeValue")] int MaxTimeframeValue,
|
||||
[property: JsonPropertyName("timeframeUnit")] string TimeframeUnit,
|
||||
[property: JsonPropertyName("instrumentType")] string InstrumentType,
|
||||
[property: JsonPropertyName("userNotes")] string UserNotes,
|
||||
[property: JsonPropertyName("headline")]
|
||||
string Headline,
|
||||
[property: JsonPropertyName("currentPrice")]
|
||||
decimal CurrentPrice,
|
||||
[property: JsonPropertyName("riskScore")]
|
||||
int RiskScore,
|
||||
[property: JsonPropertyName("minTimeframeValue")]
|
||||
int MinTimeframeValue,
|
||||
[property: JsonPropertyName("maxTimeframeValue")]
|
||||
int MaxTimeframeValue,
|
||||
[property: JsonPropertyName("timeframeUnit")]
|
||||
string TimeframeUnit,
|
||||
[property: JsonPropertyName("instrumentType")]
|
||||
string InstrumentType,
|
||||
[property: JsonPropertyName("userNotes")]
|
||||
string UserNotes,
|
||||
[property: JsonPropertyName("taData")] FinlyticCore.Dtos.TechnicalAnalysis.TechnicalAnalysisDto? TaData,
|
||||
[property: JsonPropertyName("fundamentalsData")] FinlyticCore.Dtos.Fundamentals.AssetFundamentalsDto? FundamentalsData,
|
||||
[property: JsonPropertyName("sentimentData")] FinlyticCore.Dtos.Sentiment.IsinSentimentSummaryDto? SentimentData
|
||||
[property: JsonPropertyName("fundamentalsData")]
|
||||
FinlyticCore.Dtos.Fundamentals.AssetFundamentalsDto? FundamentalsData,
|
||||
[property: JsonPropertyName("sentimentData")]
|
||||
FinlyticCore.Dtos.Sentiment.IsinSentimentSummaryDto? SentimentData
|
||||
);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Response payload returned by microservice health pings over MQTT.
|
||||
/// </summary>
|
||||
public record ServiceHealthResponse(
|
||||
[property: JsonPropertyName("serviceName")] string ServiceName,
|
||||
[property: JsonPropertyName("serviceName")]
|
||||
string ServiceName,
|
||||
[property: JsonPropertyName("status")] string Status,
|
||||
[property: JsonPropertyName("timestamp")] DateTime Timestamp,
|
||||
[property: JsonPropertyName("dbStatus")] string DbStatus
|
||||
[property: JsonPropertyName("timestamp")]
|
||||
DateTime Timestamp,
|
||||
[property: JsonPropertyName("dbStatus")]
|
||||
string DbStatus
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
@@ -109,7 +133,8 @@ public record ServiceHealthResponse(
|
||||
public record FetchLogoResponse(
|
||||
[property: JsonPropertyName("isin")] string? Isin,
|
||||
[property: JsonPropertyName("path")] string? Path,
|
||||
[property: JsonPropertyName("success")] bool Success
|
||||
[property: JsonPropertyName("success")]
|
||||
bool Success
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
@@ -117,9 +142,12 @@ public record FetchLogoResponse(
|
||||
/// Replaces the anonymous type to be compatible with AOT/source-gen JSON serialization.
|
||||
/// </summary>
|
||||
public record ServiceConfigUpdatePayload(
|
||||
[property: JsonPropertyName("serviceName")] string ServiceName,
|
||||
[property: JsonPropertyName("timestamp")] DateTime Timestamp,
|
||||
[property: JsonPropertyName("settings")] Dictionary<string, string> Settings
|
||||
[property: JsonPropertyName("serviceName")]
|
||||
string ServiceName,
|
||||
[property: JsonPropertyName("timestamp")]
|
||||
DateTime Timestamp,
|
||||
[property: JsonPropertyName("settings")]
|
||||
Dictionary<string, string> Settings
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
@@ -127,4 +155,4 @@ public record ServiceConfigUpdatePayload(
|
||||
/// </summary>
|
||||
public record TickMessageDto(
|
||||
[property: JsonPropertyName("price")] decimal Price
|
||||
);
|
||||
);
|
||||
Reference in New Issue
Block a user