Files
superport_v2/doc/DTO_TASKS.md

7.4 KiB

DTO 작업 현황

1. 백엔드 협업 로그인·리프레시·대시보드 정비

진행된 작업

  • 로그인·대시보드·보고서·결재 스키마 요구사항을 doc/backup/backend_change_requests.md:1-79에 재정리해 백엔드와 공유 가능한 단일 요청서로 정리했다.

남은 작업

  • 백엔드 담당자와 개발 일정·샌드박스 검증 순서를 확정하고 문서에 일정표/담당자를 추가해야 한다.
  • 로그인·대시보드 외 보고서/권한/단계 API의 문서화 내용이 구현으로 연결되는지 주간 점검 미팅을 마련한다.

2. API 계약 정비 (route_path, include_deleted, 표준 응답/에러 구조)

진행된 작업

  • 401 응답 메시지를 UI 안내 문구로 변환하도록 lib/core/network/api_error.dart:90-139을 보강했고, 대응 단위 테스트를 test/core/network/api_error_test.dart:84-138에 추가했다.
  • 그룹 권한 목록에 include_deleted 파라미터와 include=group,menu를 반영하고(lib/features/masters/group_permission/data/repositories/group_permission_repository_remote.dart:21-43), UI에서 menu.path를 노출하도록 테이블 컬럼을 확장했다(lib/features/masters/group_permission/presentation/pages/group_permission_page.dart:855-888).
  • 결재 단계 원격 저장소가 include=approval,approver,status를 강제하도록 수정해 v4 스키마와 맞췄다(lib/features/approvals/step/data/repositories/approval_step_repository_remote.dart:30-44).
  • KPI delta/증감 아이콘을 대시보드 카드에 노출해 백엔드의 delta 필드를 활용할 준비를 마쳤다(lib/features/dashboard/presentation/pages/dashboard_page.dart:258-326).

남은 작업

  • ApiClient 계층에서 { "data": ... } 언랩 처리를 공통화하거나, 미적용 저장소에서 동일 패턴을 반복하는 부분을 리팩터링해야 한다.
  • include_deleted·route_path가 필요한 다른 리포지토리(예: 메뉴/사용자/보고서)가 기존 파라미터를 사용 중인지 재점검 후 일괄 적용이 필요하다.
  • 백엔드에서 통일된 에러 코드/세부 구조를 확정하면 문서와 코드 주석을 업데이트한다.

3. 번호 자동 부여 대응

진행된 작업

  • 재고 트랜잭션/결재 생성 DTO에서 transaction_no·approval_no를 제거하고 요청 payload를 정리했다(lib/features/inventory/transactions/domain/entities/stock_transaction_input.dart:1-229, lib/features/approvals/domain/entities/approval.dart:200-224).
  • 입고/출고/대여/결재 생성 UI에서 번호 입력 필드를 텍스트 안내로 교체하고, 생성/수정 토스트에 서버가 할당한 번호를 표기하도록 수정했다(lib/features/inventory/inbound/presentation/pages/inbound_page.dart:1711-1725, lib/features/inventory/outbound/presentation/pages/outbound_page.dart:1911-1917, lib/features/inventory/rental/presentation/pages/rental_page.dart:1909-1917, lib/features/approvals/presentation/pages/approval_page.dart:485-684).
  • 저장소/위젯/통합 테스트를 새 규칙에 맞춰 정비했다(test/features/inventory/transactions/data/stock_transaction_repository_remote_test.dart:160-199, test/features/inventory/inbound_page_test.dart:110-207, test/features/inventory/outbound_page_test.dart:1-100, test/features/inventory/rental_page_test.dart:1-100, integration_test/stock_transaction_state_flow_test.dart:184-238).
  • 번호 정책과 작업 절차를 doc/frontend_auto_numbering_update.mddoc/stock_approval_system_api_v4.md에 반영했다.

남은 작업

  • 생성 직후 알림/딥링크/내부 공유 링크에 새 번호를 주입하는 흐름(예: Slack·메일 템플릿, 상세 페이지 자동 이동)을 확인하고 필요한 리팩터링을 진행한다.
  • QA 체크리스트(doc/frontend_auto_numbering_update.md:23-28)의 미완료 항목을 실제 시나리오 테스트로 채우고 결과를 문서화한다.

4. 인증·대시보드 연동

진행된 작업

  • 앱 시작 시 저장된 리프레시 토큰으로 세션을 갱신하고(lib/main.dart:15-20), 라우터에서 비로그인 사용자를 로그인 화면으로 리다이렉트하도록 가드 로직을 추가했다(lib/core/routing/app_router.dart:37-49).
  • 백엔드 401 메시지를 UI 알림과 동기화하기 위해 에러 매퍼와 테스트를 보강했다(동일 경로 참조).
  • 대시보드 카드가 delta 데이터와 아이콘을 표시할 수 있도록 뷰를 업데이트하고(lib/features/dashboard/presentation/pages/dashboard_page.dart:258-326), 저장소가 /dashboard/summary 응답의 data 래퍼를 처리하게 했다(lib/features/dashboard/data/repositories/dashboard_repository_remote.dart:17-31).

남은 작업

  • AuthService.refreshSession() 실패 시 초기 부트가 중단되지 않도록 예외 처리/로그아웃 플로우를 보완해야 한다.
  • 대시보드 요약·로그인 요청에 대한 실패 로그/토스트 정책을 정의하고 컨트롤러에 적용한다.
  • 백엔드에서 권한 목록/템플릿 포함 응답을 완료하면 PermissionSynchronizer와의 연동 테스트를 추가한다.

5. 결재·재고 화면 보강

진행된 작업

  • 창고 코드/우편번호/주소 등 중첩 객체를 상세 뷰에서 표시하도록 입고·출고·대여 레코드와 위젯을 확장했다(lib/features/inventory/inbound/presentation/models/inbound_record.dart:31-60, lib/features/inventory/outbound/presentation/models/outbound_record.dart:31-60, lib/features/inventory/rental/presentation/models/rental_record.dart:33-65 및 각 상세 위젯).
  • 결재 생성 다이얼로그와 재고 모달이 서버 응답을 기반으로 성공 메시지를 출력하고 최신 번호를 다시 표시하도록 수정했다(lib/features/approvals/presentation/pages/approval_page.dart:485-684, lib/features/inventory/inbound/presentation/pages/inbound_page.dart:1520-1566, lib/features/inventory/outbound/presentation/pages/outbound_page.dart:1706-1762, lib/features/inventory/rental/presentation/pages/rental_page.dart:1684-1742).

남은 작업

  • 결재 단계/상태 전환 후 ApprovalController와 재고 컨트롤러가 API에서 받은 최신 객체를 즉시 바인딩하는지 확인하고, 필요한 경우 fetch 로직을 후속 호출로 보강한다.
  • 재고 상세 다이얼로그(lib/features/inventory/transactions/presentation/widgets/transaction_detail_dialog.dart)에서 새 번호·창고 상세를 활용하는지 검증하고 누락된 필드를 추가한다.
  • 그룹 권한/재고 화면 필터에 include_deleted·route_path 확장 옵션을 노출할 UI 개선이 남아 있다.

6. 테스트·문서 검증

진행된 작업

  • 번호 자동 부여와 에러 매핑 관련 단위/위젯/통합 테스트를 업데이트했고, 신규 검증 시나리오를 문서로 가이드했다(상기 테스트 파일 및 doc/frontend_auto_numbering_update.md).
  • doc/stock_approval_system_spec_v4.md:389-507에 자동 번호 규칙을 명시해 백엔드와의 참조 문서를 최신화했다.

남은 작업

  • 보고서 Export, 대시보드 요약, 인증 토큰 시나리오에 대한 단위/위젯 테스트를 추가해 회귀 범위를 확대한다.
  • QA 시나리오(번호 증가·Export 성공·대시보드 데이터 확인)를 doc/IMPLEMENTATION_TASKS.md나 별도 체크리스트에 반영하고, 실행 결과를 주기적으로 기록해야 한다.