feat(inventory): 재고 현황 요약/상세 플로우를 릴리스

- lib/features/inventory/summary 계층과 warehouse select 위젯을 추가해 목록/상세, 자동 새로고침, 필터, 상세 시트를 구현

- PermissionBootstrapper, scope 파서, 라우트 가드로 inventory.view 기반 권한 부여와 메뉴 노출을 통합(lib/core, lib/main.dart 등)

- Inventory Summary API/QA/Audit 문서와 PR 템플릿, CHANGELOG를 신규 스펙과 검증 커맨드로 업데이트

- DTO 직렬화 의존성을 추가하고 Golden·Widget·단위 테스트를 작성했으며 flutter analyze / flutter test --coverage를 통과
This commit is contained in:
JiWoong Sul
2025-11-09 01:13:02 +09:00
parent 486ab8706f
commit 47cc62a33d
72 changed files with 5453 additions and 1021 deletions

View File

@@ -1,6 +1,8 @@
import 'package:flutter/widgets.dart';
import 'package:lucide_icons_flutter/lucide_icons.dart' as lucide;
import '../permissions/permission_resources.dart';
/// 사이드바/내비게이션용 페이지 정보.
class AppPageDescriptor {
const AppPageDescriptor({
@@ -8,12 +10,14 @@ class AppPageDescriptor {
required this.label,
required this.icon,
required this.summary,
this.extraRequiredResources = const [],
});
final String path;
final String label;
final IconData icon;
final String summary;
final List<String> extraRequiredResources;
}
/// 메뉴 섹션을 나타내는 데이터 클래스.
@@ -30,6 +34,9 @@ const loginRoutePath = '/login';
/// 대시보드 라우트 경로.
const dashboardRoutePath = '/dashboard';
/// 재고 현황 라우트 경로.
const inventorySummaryRoutePath = '/inventory/summary';
/// 네비게이션 구성을 정의한 섹션 목록.
const appSections = <AppSectionDescriptor>[
AppSectionDescriptor(
@@ -43,6 +50,18 @@ const appSections = <AppSectionDescriptor>[
),
],
),
AppSectionDescriptor(
label: '재고',
pages: [
AppPageDescriptor(
path: inventorySummaryRoutePath,
label: '재고 현황',
icon: lucide.LucideIcons.chartNoAxesColumnIncreasing,
summary: '제품별 총 재고, 창고 잔량, 최근 이벤트를 한 화면에서 확인합니다.',
extraRequiredResources: [PermissionResources.inventoryScope],
),
],
),
AppSectionDescriptor(
label: '입·출고',
pages: [