모의투자 관리 기능 추가

This commit is contained in:
Macbook
2026-05-31 03:47:07 +09:00
parent 9d7dddfa57
commit 16d0e2c226
78 changed files with 4688 additions and 972 deletions
@@ -0,0 +1,22 @@
package com.goldenchart.dto;
import lombok.Data;
import java.util.List;
@Data
public class PaperAllocationBulkRequest {
private List<PaperAllocationItem> items;
@Data
public static class PaperAllocationItem {
private String symbol;
private String koreanName;
private Double maxInvestKrw;
private Double budgetPct;
private Long strategyId;
private Boolean isActive;
private Boolean pinned;
private Integer sortOrder;
}
}
@@ -0,0 +1,23 @@
package com.goldenchart.dto;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class PaperAllocationDto {
private Long id;
private String symbol;
private String koreanName;
private Double maxInvestKrw;
private Double budgetPct;
private Long strategyId;
private Boolean isActive;
private Boolean pinned;
private Integer sortOrder;
private Double investedKrw;
private Double availableBuyKrw;
private Double evalAmount;
private Double symbolReturnPct;
private Double weightPct;
}
@@ -0,0 +1,14 @@
package com.goldenchart.dto;
import lombok.Data;
@Data
public class PaperAllocationPatchRequest {
private Double maxInvestKrw;
private Double budgetPct;
private Long strategyId;
private Boolean isActive;
private Boolean pinned;
private Integer sortOrder;
private String koreanName;
}
@@ -0,0 +1,16 @@
package com.goldenchart.dto;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class PaperDailySnapshotDto {
private String snapshotDate;
private Double cashBalance;
private Double stockEvalAmount;
private Double totalAsset;
private Double dailyPnl;
private Double dailyReturnPct;
private Double cumulativeReturnPct;
}
@@ -0,0 +1,17 @@
package com.goldenchart.dto;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class PaperLedgerEntryDto {
private Long id;
private String entryType;
private Double amount;
private Double cashBefore;
private Double cashAfter;
private Long refTradeId;
private String symbol;
private String createdAt;
}
@@ -0,0 +1,24 @@
package com.goldenchart.dto;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class PaperOrderDto {
private Long id;
private String symbol;
private String side;
private String orderType;
private Double limitPrice;
private Double quantity;
private Double filledQuantity;
private String status;
private Double reservedCash;
private Double reservedQty;
private String orderKind;
private String source;
private Long strategyId;
private String createdAt;
private String updatedAt;
}
@@ -7,6 +7,8 @@ public class PaperOrderRequest {
private String market;
private String side; // BUY | SELL
private String orderKind; // limit | market
/** MARKET | LIMIT — 미지정 시 orderKind 기준 (limit→LIMIT, market→MARKET) */
private String orderType;
private Double price;
private Double quantity;
/** 수량 미입력 시 매수 예산 비율 (가용현금 %) — 기본값: 설정의 paperAutoTradeBudgetPct */
@@ -0,0 +1,16 @@
package com.goldenchart.dto;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class PaperPageDto<T> {
private List<T> content;
private int page;
private int size;
private long totalElements;
private int totalPages;
}
@@ -0,0 +1,11 @@
package com.goldenchart.dto;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class PaperPlaceOrderResult {
private PaperTradeDto trade;
private PaperOrderDto order;
}
@@ -21,5 +21,9 @@ public class PaperSummaryDto {
private Double minOrderKrw;
private Boolean autoTradeEnabled;
private Double autoTradeBudgetPct;
private Double reservedCash;
private Double orderableCash;
private Double initialCapitalSnapshot;
private List<PaperPositionDto> positions;
private List<PaperAllocationDto> allocations;
}
@@ -18,5 +18,7 @@ public class PaperTradeDto {
private Double feeAmount;
private Double netAmount;
private Double cashAfter;
private Double realizedPnlDelta;
private Double positionQtyAfter;
private String createdAt;
}