주석화 진행상황 정리하고 핵심 모듈에 한글 주석 추가
This commit is contained in:
@@ -5,6 +5,7 @@ import 'package:superport_v2/features/approvals/domain/entities/approval.dart';
|
||||
|
||||
import '../../domain/entities/approval_step_record.dart';
|
||||
|
||||
/// 결재 단계 기록 API 응답을 표현하는 DTO.
|
||||
class ApprovalStepRecordDto {
|
||||
ApprovalStepRecordDto({
|
||||
required this.approvalId,
|
||||
@@ -20,6 +21,7 @@ class ApprovalStepRecordDto {
|
||||
final String? templateName;
|
||||
final ApprovalStep step;
|
||||
|
||||
/// JSON에서 필요한 필드를 추출해 DTO를 생성한다.
|
||||
factory ApprovalStepRecordDto.fromJson(Map<String, dynamic> json) {
|
||||
final approvalData = json['approval'] as Map<String, dynamic>?;
|
||||
final approvalId =
|
||||
@@ -49,6 +51,7 @@ class ApprovalStepRecordDto {
|
||||
);
|
||||
}
|
||||
|
||||
/// DTO를 [ApprovalStepRecord] 엔티티로 변환한다.
|
||||
ApprovalStepRecord toEntity() {
|
||||
return ApprovalStepRecord(
|
||||
approvalId: approvalId,
|
||||
@@ -59,6 +62,7 @@ class ApprovalStepRecordDto {
|
||||
);
|
||||
}
|
||||
|
||||
/// 페이징 응답을 [PaginatedResult] 형태로 반환한다.
|
||||
static PaginatedResult<ApprovalStepRecord> parsePaginated(
|
||||
Map<String, dynamic>? json,
|
||||
) {
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:superport_v2/features/approvals/step/domain/repositories/approva
|
||||
import '../dtos/approval_step_record_dto.dart';
|
||||
import '../../domain/entities/approval_step_input.dart';
|
||||
|
||||
/// 결재 단계 API를 호출하는 원격 저장소 구현체.
|
||||
class ApprovalStepRepositoryRemote implements ApprovalStepRepository {
|
||||
ApprovalStepRepositoryRemote({required ApiClient apiClient})
|
||||
: _api = apiClient;
|
||||
@@ -15,6 +16,7 @@ class ApprovalStepRepositoryRemote implements ApprovalStepRepository {
|
||||
|
||||
static const _basePath = '/approval-steps';
|
||||
|
||||
/// 결재 단계 목록을 조회한다.
|
||||
@override
|
||||
Future<PaginatedResult<ApprovalStepRecord>> list({
|
||||
int page = 1,
|
||||
@@ -40,6 +42,7 @@ class ApprovalStepRepositoryRemote implements ApprovalStepRepository {
|
||||
return ApprovalStepRecordDto.parsePaginated(response.data);
|
||||
}
|
||||
|
||||
/// 단일 결재 단계 상세를 조회한다.
|
||||
@override
|
||||
Future<ApprovalStepRecord> fetchDetail(int id) async {
|
||||
final response = await _api.get<Map<String, dynamic>>(
|
||||
@@ -50,6 +53,7 @@ class ApprovalStepRepositoryRemote implements ApprovalStepRepository {
|
||||
return ApprovalStepRecordDto.fromJson(data).toEntity();
|
||||
}
|
||||
|
||||
/// 결재 단계를 생성한다.
|
||||
@override
|
||||
Future<ApprovalStepRecord> create(ApprovalStepInput input) async {
|
||||
final response = await _api.post<Map<String, dynamic>>(
|
||||
@@ -64,6 +68,7 @@ class ApprovalStepRepositoryRemote implements ApprovalStepRepository {
|
||||
return ApprovalStepRecordDto.fromJson(data).toEntity();
|
||||
}
|
||||
|
||||
/// 결재 단계를 수정한다.
|
||||
@override
|
||||
Future<ApprovalStepRecord> update(int id, ApprovalStepInput input) async {
|
||||
final response = await _api.patch<Map<String, dynamic>>(
|
||||
|
||||
@@ -3,7 +3,9 @@ import 'package:superport_v2/core/common/models/paginated_result.dart';
|
||||
import '../entities/approval_step_input.dart';
|
||||
import '../entities/approval_step_record.dart';
|
||||
|
||||
/// 결재 단계 목록/상세를 다루는 도메인 저장소 인터페이스.
|
||||
abstract class ApprovalStepRepository {
|
||||
/// 결재 단계 목록을 조회한다.
|
||||
Future<PaginatedResult<ApprovalStepRecord>> list({
|
||||
int page = 1,
|
||||
int pageSize = 20,
|
||||
@@ -13,6 +15,7 @@ abstract class ApprovalStepRepository {
|
||||
int? approvalId,
|
||||
});
|
||||
|
||||
/// 결재 단계 상세를 조회한다.
|
||||
Future<ApprovalStepRecord> fetchDetail(int id);
|
||||
|
||||
/// 결재 단계를 생성한다.
|
||||
|
||||
@@ -14,6 +14,7 @@ import '../../domain/entities/approval_step_input.dart';
|
||||
import '../../domain/entities/approval_step_record.dart';
|
||||
import '../../domain/repositories/approval_step_repository.dart';
|
||||
|
||||
/// 결재 단계 관리 진입 페이지. 기능 플래그에 따라 실제 화면 또는 준비중 화면을 노출한다.
|
||||
class ApprovalStepPage extends StatelessWidget {
|
||||
const ApprovalStepPage({super.key});
|
||||
|
||||
@@ -50,6 +51,7 @@ class ApprovalStepPage extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
/// 결재 단계 기능이 활성화된 경우 사용하는 실제 화면 위젯.
|
||||
class _ApprovalStepEnabledPage extends StatefulWidget {
|
||||
const _ApprovalStepEnabledPage();
|
||||
|
||||
@@ -58,6 +60,7 @@ class _ApprovalStepEnabledPage extends StatefulWidget {
|
||||
_ApprovalStepEnabledPageState();
|
||||
}
|
||||
|
||||
/// 결재 단계 목록과 필터 상태를 관리하는 상태 클래스.
|
||||
class _ApprovalStepEnabledPageState extends State<_ApprovalStepEnabledPage> {
|
||||
late final ApprovalStepController _controller;
|
||||
final TextEditingController _searchController = TextEditingController();
|
||||
|
||||
Reference in New Issue
Block a user