환경 초기화 및 벤더 리포지토리 스켈레톤 도입

This commit is contained in:
JiWoong Sul
2025-09-22 17:38:51 +09:00
commit 5c9de2594a
171 changed files with 13304 additions and 0 deletions

View File

@@ -0,0 +1,171 @@
import 'package:flutter/widgets.dart';
import 'package:lucide_icons_flutter/lucide_icons.dart';
class AppPageDescriptor {
const AppPageDescriptor({
required this.path,
required this.label,
required this.icon,
required this.summary,
});
final String path;
final String label;
final IconData icon;
final String summary;
}
class AppSectionDescriptor {
const AppSectionDescriptor({required this.label, required this.pages});
final String label;
final List<AppPageDescriptor> pages;
}
const loginRoutePath = '/login';
const dashboardRoutePath = '/dashboard';
const appSections = <AppSectionDescriptor>[
AppSectionDescriptor(
label: '대시보드',
pages: [
AppPageDescriptor(
path: dashboardRoutePath,
label: '대시보드',
icon: LucideIcons.layoutDashboard,
summary: '오늘 입고/출고, 결재 대기, 최근 트랜잭션을 한 화면에서 확인합니다.',
),
],
),
AppSectionDescriptor(
label: '입·출고',
pages: [
AppPageDescriptor(
path: '/inventory/inbound',
label: '입고',
icon: LucideIcons.packagePlus,
summary: '입고 처리 기본정보와 라인 품목을 등록하고 검토합니다.',
),
AppPageDescriptor(
path: '/inventory/outbound',
label: '출고',
icon: LucideIcons.packageMinus,
summary: '출고 품목, 고객사 연결, 상태 변경을 관리합니다.',
),
AppPageDescriptor(
path: '/inventory/rental',
label: '대여',
icon: LucideIcons.handshake,
summary: '대여/반납 구분과 반납예정일을 포함한 대여 흐름입니다.',
),
],
),
AppSectionDescriptor(
label: '마스터',
pages: [
AppPageDescriptor(
path: '/masters/vendors',
label: '제조사 관리',
icon: LucideIcons.factory,
summary: '벤더코드, 명칭, 사용여부 등을 유지합니다.',
),
AppPageDescriptor(
path: '/masters/products',
label: '장비 모델 관리',
icon: LucideIcons.box,
summary: '제품코드, 제조사, 단위 정보를 관리합니다.',
),
AppPageDescriptor(
path: '/masters/warehouses',
label: '입고지 관리',
icon: LucideIcons.warehouse,
summary: '창고 주소와 사용여부를 설정합니다.',
),
AppPageDescriptor(
path: '/masters/customers',
label: '회사 관리',
icon: LucideIcons.building,
summary: '고객사 연락처와 주소 정보를 관리합니다.',
),
AppPageDescriptor(
path: '/masters/users',
label: '사용자 관리',
icon: LucideIcons.users,
summary: '사번, 그룹, 사용여부를 관리합니다.',
),
AppPageDescriptor(
path: '/masters/groups',
label: '그룹 관리',
icon: LucideIcons.layers,
summary: '권한 그룹과 설명, 기본여부를 정의합니다.',
),
AppPageDescriptor(
path: '/masters/menus',
label: '메뉴 관리',
icon: LucideIcons.listTree,
summary: '메뉴 계층과 경로, 노출 순서를 구성합니다.',
),
AppPageDescriptor(
path: '/masters/group-permissions',
label: '그룹 메뉴 권한',
icon: LucideIcons.shieldCheck,
summary: '그룹별 메뉴 CRUD 권한을 설정합니다.',
),
],
),
AppSectionDescriptor(
label: '결재',
pages: [
AppPageDescriptor(
path: '/approvals/requests',
label: '결재 관리',
icon: LucideIcons.fileCheck,
summary: '결재 번호, 상태, 상신자를 관리합니다.',
),
AppPageDescriptor(
path: '/approvals/steps',
label: '결재 단계',
icon: LucideIcons.workflow,
summary: '단계 순서와 승인자 할당을 설정합니다.',
),
AppPageDescriptor(
path: '/approvals/history',
label: '결재 이력',
icon: LucideIcons.history,
summary: '결재 단계별 변경 이력을 조회합니다.',
),
AppPageDescriptor(
path: '/approvals/templates',
label: '결재 템플릿',
icon: LucideIcons.fileSpreadsheet,
summary: '반복되는 결재 흐름을 템플릿으로 관리합니다.',
),
],
),
AppSectionDescriptor(
label: '도구',
pages: [
AppPageDescriptor(
path: '/utilities/postal-search',
label: '우편번호 검색',
icon: LucideIcons.search,
summary: '모달 기반 우편번호 검색 도구입니다.',
),
],
),
AppSectionDescriptor(
label: '보고',
pages: [
AppPageDescriptor(
path: '/reports',
label: '보고서',
icon: LucideIcons.fileDown,
summary: '조건 필터와 PDF/XLSX 다운로드 기능입니다.',
),
],
),
];
List<AppPageDescriptor> get allAppPages => [
for (final section in appSections) ...section.pages,
];