결재 API 계약 보완 및 테스트 정리

This commit is contained in:
JiWoong Sul
2025-10-16 18:53:22 +09:00
parent 9e2244f260
commit efed3c1a6f
44 changed files with 1969 additions and 293 deletions

View File

@@ -198,14 +198,53 @@ extension ApprovalStepActionTypeX on ApprovalStepActionType {
}
/// 결재 생성 입력 모델
class ApprovalInput {
ApprovalInput({required this.transactionId, this.note});
/// 결재 신규 생성 입력 모델
///
/// - 트랜잭션, 결재번호, 상태, 상신자 정보를 백엔드 계약에 맞춰 전달한다.
class ApprovalCreateInput {
ApprovalCreateInput({
required this.transactionId,
required this.approvalNo,
required this.approvalStatusId,
required this.requestedById,
this.note,
});
final int transactionId;
final String approvalNo;
final int approvalStatusId;
final int requestedById;
final String? note;
Map<String, dynamic> toPayload() {
return {'transaction_id': transactionId, 'note': note};
final trimmedNote = note?.trim();
return {
'transaction_id': transactionId,
'approval_no': approvalNo,
'approval_status_id': approvalStatusId,
'requested_by_id': requestedById,
if (trimmedNote != null && trimmedNote.isNotEmpty) 'note': trimmedNote,
};
}
}
/// 결재 기본 정보 수정 입력 모델
///
/// - 상태/비고 변경 시 결재 식별자를 포함해 패치를 수행한다.
class ApprovalUpdateInput {
ApprovalUpdateInput({required this.id, this.approvalStatusId, this.note});
final int id;
final int? approvalStatusId;
final String? note;
Map<String, dynamic> toPayload() {
final trimmedNote = note?.trim();
return {
'id': id,
if (approvalStatusId != null) 'approval_status_id': approvalStatusId,
if (trimmedNote != null && trimmedNote.isNotEmpty) 'note': trimmedNote,
};
}
}