bd0a0f7776
CI / build (push) Failing after 13m58s
- invest_trade.quantity BIGINT→DECIMAL(18,6): 평단·원가·평가/실현손익 계산을 BigDecimal로 전환 (금액은 원단위 정수 유지) - account_entry.installment_months 추가: 카드 지출 2~24개월 할부 기록(일시불 null), 응답에 포함 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
52 lines
1.7 KiB
Java
52 lines
1.7 KiB
Java
package com.sb.web.account.dto;
|
|
|
|
import jakarta.validation.constraints.Max;
|
|
import jakarta.validation.constraints.Min;
|
|
import jakarta.validation.constraints.NotBlank;
|
|
import jakarta.validation.constraints.NotNull;
|
|
import jakarta.validation.constraints.Pattern;
|
|
import jakarta.validation.constraints.PositiveOrZero;
|
|
import jakarta.validation.constraints.Size;
|
|
import lombok.Data;
|
|
|
|
import java.time.LocalDate;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 가계부 항목 생성/수정 요청.
|
|
*/
|
|
@Data
|
|
public class AccountEntryRequest {
|
|
|
|
@NotNull(message = "거래일을 입력하세요.")
|
|
private LocalDate entryDate;
|
|
|
|
@NotBlank(message = "구분을 선택하세요.")
|
|
@Pattern(regexp = "INCOME|EXPENSE|TRANSFER", message = "구분이 올바르지 않습니다.")
|
|
private String type;
|
|
|
|
@Size(max = 50, message = "분류는 50자 이내여야 합니다.")
|
|
private String category;
|
|
|
|
@NotNull(message = "금액을 입력하세요.")
|
|
@PositiveOrZero(message = "금액은 0 이상이어야 합니다.")
|
|
private Long amount;
|
|
|
|
@Size(max = 255, message = "메모는 255자 이내여야 합니다.")
|
|
private String memo;
|
|
|
|
/** 발생/출금 계좌 ID (본인 wallet, 선택. 이체 시 출금 계좌) */
|
|
private Long walletId;
|
|
|
|
/** 이체 입금 계좌 ID (TRANSFER 시 필수) */
|
|
private Long toWalletId;
|
|
|
|
/** 카드 할부 개월수 (2~24, 일시불은 null). EXPENSE + 카드 결제에만 의미 있음 */
|
|
@Min(value = 2, message = "할부는 2개월 이상이어야 합니다.")
|
|
@Max(value = 24, message = "할부는 최대 24개월까지 가능합니다.")
|
|
private Integer installmentMonths;
|
|
|
|
/** 선택한 태그 ID 목록 (태그 관리에 등록된 태그, 선택) */
|
|
private List<Long> tagIds;
|
|
}
|