feat: 결재·마스터 실연동 업데이트

This commit is contained in:
JiWoong Sul
2025-10-14 18:10:24 +09:00
parent 1325109fba
commit 8067416c09
66 changed files with 2129 additions and 222 deletions

View File

@@ -1,6 +1,7 @@
import 'package:dio/dio.dart';
import 'package:superport_v2/core/network/api_client.dart';
import 'package:superport_v2/core/network/api_routes.dart';
import '../../domain/entities/postal_code.dart';
import '../../domain/repositories/postal_search_repository.dart';
@@ -13,12 +14,13 @@ class PostalSearchRepositoryRemote implements PostalSearchRepository {
final ApiClient _api;
static const _path = '/zipcodes';
static const _path = '${ApiRoutes.apiV1}/zipcodes';
@override
Future<List<PostalCode>> search({
required String keyword,
int limit = 20,
int page = 1,
}) async {
final trimmed = keyword.trim();
if (trimmed.isEmpty) {
@@ -27,12 +29,7 @@ class PostalSearchRepositoryRemote implements PostalSearchRepository {
final response = await _api.get<dynamic>(
_path,
query: {
'zipcode': trimmed,
'road_name': trimmed,
'q': trimmed,
'page_size': limit,
},
query: {'q': trimmed, 'page': page, 'page_size': limit},
options: Options(responseType: ResponseType.json),
);

View File

@@ -5,6 +5,11 @@ abstract class PostalSearchRepository {
/// 키워드를 기반으로 우편번호 목록을 검색한다.
///
/// [keyword]는 우편번호/도로명/건물번호 중 하나의 문자열을 전달한다.
/// [limit]을 지정하면 최대 반환 건수를 제한한다.
Future<List<PostalCode>> search({required String keyword, int limit = 20});
/// [limit]은 페이지 크기(`page_size`)에 대응한다.
/// [page]를 지정하면 서버 페이지네이션을 제어한다.
Future<List<PostalCode>> search({
required String keyword,
int limit = 20,
int page = 1,
});
}

View File

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'package:shadcn_ui/shadcn_ui.dart';
import 'package:superport_v2/core/network/failure.dart';
import 'package:superport_v2/widgets/components/superport_table.dart';
import '../../domain/entities/postal_code.dart';
@@ -102,7 +103,8 @@ class _PostalSearchDialogState extends State<_PostalSearchDialog> {
if (!mounted) return;
setState(() {
_results = const [];
_errorMessage = error.toString();
final failure = Failure.from(error);
_errorMessage = failure.describe();
});
} finally {
if (mounted) {