Skip to content
@AutoEver-4Ever

AutoEver-4Ever

ADD PROFILE IMAGE



1. Project Overview (프로젝트 개요)

  • 프로젝트 이름: EvERP
  • 프로젝트 설명: 전사적 자원관리(ERP)를 기반으로 마이크로 서비스 아키텍처(MSA)를 적용한 웹 및 모바일 통합 시스템 개발 프로젝트


2. Team Members (팀원 및 팀 소개)

김대환 김호집 권오윤 박지원 오창은 최동진
김대환 김호집 권오윤 박지원 오창은 최동진
BackEnd
iOS
Infra
BackEnd
FrontEnd
iOS
BackEnd
Android
FrontEnd BackEnd


3. Key Features (주요 기능)



4. Technology Stack (기술 스택)

영역 주요 사용 기술
FrontEnd Next.js React TypeScript Tailwind CSS MUI Emotion Zustand TanStack Query Axios Three.js
BackEnd Java Spring Boot Spring Batch JPA MyBatis Spring WebFlux Spring Security Kafka Redis PostgreSQL H2 Swagger OAuth2
Android Kotlin Android Jetpack Compose Material 3 Hilt Retrofit OkHttp Kotlinx Serialization Coroutines Room DataStore Firebase Coil Timber
iOS Swift SwiftUI Combine Async/Await URLSession MVVM
Infra & Collaboration Docker Jenkins Nginx AWS Notion Figma GitHub Husky Commitlint


6. Project Structure (프로젝트 구조)

6-1. FrontEnd (Next.js Web)

src
├── app
│   ├── (private)
│   │   ├── _PrivateGuard.tsx
│   │   ├── alarm
│   │   │   ├── AlarmList.tsx
│   │   │   └── page.tsx
│   │   ├── dashboard
│   │   │   ├── components
│   │   │   │   ├── ActionCard.tsx
│   │   │   │   ├── QuickActions.tsx
│   │   │   │   ├── ReportDownloadModal.tsx
│   │   │   │   └── WorkflowStatus.tsx
│   │   │   ├── dashboard.api.ts
│   │   │   ├── dashboard.service.ts
│   │   │   ├── dashboard.utils.ts
│   │   │   ├── page.tsx
│   │   │   └── types
│   │   │       ├── ActionCardType.ts
│   │   │       ├── DashboardStatsType.ts
│   │   │       ├── DashboardWorkflowType.ts
│   │   │       └── ReportDownloadModalType.ts
│   │   ├── finance
│   │   │   ├── components
│   │   │   │   ├── modals
│   │   │   │   │   └── InvoiceDetailModal.tsx
│   │   │   │   └── tabs
│   │   │   │       ├── FinanceTabs.tsx
│   │   │   │       └── InvoiceList.tsx
│   │   │   ├── constants.ts
│   │   │   ├── finance.api.ts
│   │   │   ├── finance.service.ts
│   │   │   ├── page.tsx
│   │   │   ├── types
│   │   │   │   ├── FinanceStatsType.ts
│   │   │   │   ├── InvoiceDetailModalType.ts
│   │   │   │   └── InvoiceListType.ts
│   │   │   └── utils.ts
│   │   ├── hrm
│   │   │   ├── api
│   │   │   │   ├── hrm.api.ts
│   │   │   │   └── hrm.endpoints.ts
│   │   │   ├── components
│   │   │   │   ├── modals
│   │   │   │   │   ├── AddEmployeeTrainingModal.tsx
│   │   │   │   │   ├── AddProgramModal.tsx
│   │   │   │   │   ├── AttendanceEditModal.tsx
│   │   │   │   │   ├── DepartmentDetailModal.tsx
│   │   │   │   │   ├── DepartmentEditModal.tsx
│   │   │   │   │   ├── EmployeeDetailModal.tsx
│   │   │   │   │   ├── EmployeeEditModal.tsx
│   │   │   │   │   ├── EmployeeRegisterModal.tsx
│   │   │   │   │   ├── PayrollDetailModal.tsx
│   │   │   │   │   ├── PositionDetailModal.tsx
│   │   │   │   │   ├── ProgramDetailModal.tsx
│   │   │   │   │   ├── ProgramEditModal.tsx
│   │   │   │   │   └── TrainingDetailModal.tsx
│   │   │   │   └── tabs
│   │   │   │       ├── mainTab
│   │   │   │       │   ├── AttendanceManagement.tsx
│   │   │   │       │   ├── EmployeeManagement.tsx
│   │   │   │       │   ├── PayrollManagement.tsx
│   │   │   │       │   └── TrainingManagement.tsx
│   │   │   │       └── subTab
│   │   │   │           ├── attendanceTab
│   │   │   │           │   ├── AttendanceTab.tsx
│   │   │   │           │   └── LeaveTab.tsx
│   │   │   │           ├── employeeTab
│   │   │   │           │   ├── DepartmentsTab.tsx
│   │   │   │           │   └── EmployeesTab.tsx
│   │   │   │           └── trainingTab
│   │   │   │               ├── AvailableProgramTab.tsx
│   │   │   │               └── EmployeeTrainingTab.tsx
│   │   │   ├── constants.ts
│   │   │   ├── page.tsx
│   │   │   ├── services
│   │   │   │   └── hrm.service.ts
│   │   │   └── types
│   │   │       ├── HrmAttendanceApiType.ts
│   │   │       ├── HrmDepartmentsApiType.ts
│   │   │       ├── HrmDropdownApiType.ts
│   │   │       ├── HrmEmployeesApiType.ts
│   │   │       ├── HrmLeaveApiType.ts
│   │   │       ├── HrmPayrollApiType.ts
│   │   │       ├── HrmPositionsApiType.ts
│   │   │       ├── HrmProgramApiType.ts
│   │   │       ├── HrmStatsApiType.ts
│   │   │       └── HrmTrainingApiType.ts
│   │   ├── inventory
│   │   │   ├── components
│   │   │   │   ├── LowStockAlert.tsx
│   │   │   │   ├── StockMovement.tsx
│   │   │   │   ├── modals
│   │   │   │   │   ├── AddInventoryModal.tsx
│   │   │   │   │   ├── InventoryDetailModal.tsx
│   │   │   │   │   ├── InventoryMoveModal.tsx
│   │   │   │   │   ├── InventoryPurchaseRequestModal.tsx
│   │   │   │   │   ├── InventorySafetyStockModal.tsx
│   │   │   │   │   └── ShippingDetailModal.tsx
│   │   │   │   └── tabs
│   │   │   │       ├── InventoryList.tsx
│   │   │   │       ├── ReceivingManagementList.tsx
│   │   │   │       └── ShippingManagementList.tsx
│   │   │   ├── inventory.api.ts
│   │   │   ├── inventory.constants.ts
│   │   │   ├── inventory.service.ts
│   │   │   ├── inventory.utils.ts
│   │   │   ├── page.tsx
│   │   │   └── types
│   │   │       ├── AddInventoryModalType.ts
│   │   │       ├── InventoryDetailModalType.ts
│   │   │       ├── InventoryListType.ts
│   │   │       ├── InventoryMoveModalType.ts
│   │   │       ├── InventorySafetyStockModalType.ts
│   │   │       ├── InventoryStatsType.ts
│   │   │       ├── ItemListType.ts
│   │   │       ├── ReceivingManagementListType.ts
│   │   │       ├── ShippingDetailModalType.ts
│   │   │       ├── ShippingManagementListType.ts
│   │   │       └── StockMovement.ts
│   │   ├── layout.tsx
│   │   ├── low-stock
│   │   │   ├── components
│   │   │   │   └── LowStockList.tsx
│   │   │   ├── lowStock.api.ts
│   │   │   ├── lowStock.service.ts
│   │   │   ├── page.tsx
│   │   │   └── types
│   │   │       ├── LowStockAlertType.ts
│   │   │       ├── LowStockListType.ts
│   │   │       └── LowStockStatsType.ts
│   │   ├── production
│   │   │   ├── api
│   │   │   │   ├── production.api.ts
│   │   │   │   └── production.endpoints.ts
│   │   │   ├── components
│   │   │   │   ├── modals
│   │   │   │   │   ├── BomDetailModal.tsx
│   │   │   │   │   ├── BomInputFormModal.tsx
│   │   │   │   │   ├── MpsPreviewModal.tsx
│   │   │   │   │   ├── MrpPurchaseRequestModal.tsx
│   │   │   │   │   ├── ProcessDetailModal.tsx
│   │   │   │   │   └── SimulationResultModal.tsx
│   │   │   │   └── tabs
│   │   │   │       ├── BomTab.tsx
│   │   │   │       ├── MesTab.tsx
│   │   │   │       ├── MpsTab.tsx
│   │   │   │       ├── MrpTab.tsx
│   │   │   │       ├── OrdersTab.tsx
│   │   │   │       ├── PlannedOrdersTab.tsx
│   │   │   │       └── QuotationTab.tsx
│   │   │   ├── constants.ts
│   │   │   ├── page.tsx
│   │   │   ├── services
│   │   │   │   └── production.service.ts
│   │   │   └── types
│   │   │       ├── BomDetailApiType.ts
│   │   │       ├── BomListApiType.ts
│   │   │       ├── BomType.ts
│   │   │       ├── DropdownApiType.ts
│   │   │       ├── MesDetailApiType.ts
│   │   │       ├── MesListApiType.ts
│   │   │       ├── MpsApiType.ts
│   │   │       ├── MrpOrdersApiType.ts
│   │   │       ├── MrpOrdersConvertApiType.ts
│   │   │       ├── MrpPlannedOrdersDetailApiType.ts
│   │   │       ├── MrpPlannedOrdersListApiType.ts
│   │   │       ├── ProductionStatsType.ts
│   │   │       ├── QuotationApiType.ts
│   │   │       ├── QuotationPreviewApiType.ts
│   │   │       └── QuotationSimulationApiType.ts
│   │   ├── purchase
│   │   │   ├── api
│   │   │   │   ├── purchase.api.ts
│   │   │   │   └── purchase.endpoints.ts
│   │   │   ├── components
│   │   │   │   ├── modals
│   │   │   │   │   ├── PurchaseOrderDetailModal.tsx
│   │   │   │   │   ├── PurchaseRequestDetailModal.tsx
│   │   │   │   │   ├── PurchaseRequestModal.tsx
│   │   │   │   │   ├── SupplierDetailModal.tsx
│   │   │   │   │   └── SupplierFormModal.tsx
│   │   │   │   ├── sections
│   │   │   │   │   ├── EditSupplierFormSection.tsx
│   │   │   │   │   ├── PurchaseOrderTableSection.tsx
│   │   │   │   │   └── PurchaseStatsSection.tsx
│   │   │   │   └── tabs
│   │   │   │       ├── PurchaseOrderListTab.tsx
│   │   │   │       ├── PurchaseRequestListTab.tsx
│   │   │   │       └── SupplierListTab.tsx
│   │   │   ├── constants.ts
│   │   │   ├── page.tsx
│   │   │   ├── services
│   │   │   │   └── purchase.service.ts
│   │   │   └── types
│   │   │       ├── PurchaseApiRequestType.ts
│   │   │       ├── PurchaseOrderType.ts
│   │   │       ├── PurchaseReqType.ts
│   │   │       ├── PurchaseRequestResultType.ts
│   │   │       ├── PurchaseStatsType.ts
│   │   │       ├── SupplierType.ts
│   │   │       └── TableHeader.ts
│   │   ├── sales
│   │   │   ├── components
│   │   │   │   ├── modals
│   │   │   │   │   ├── CustomerDetailModal.tsx
│   │   │   │   │   ├── CustomerEditModal.tsx
│   │   │   │   │   ├── NewCustomerModal.tsx
│   │   │   │   │   ├── NewOrderModal.tsx
│   │   │   │   │   ├── NewQuoteModal.tsx
│   │   │   │   │   ├── QuoteDetailModal.tsx
│   │   │   │   │   ├── QuoteReviewModal.tsx
│   │   │   │   │   └── SalesOrderDetailModal.tsx
│   │   │   │   └── tabs
│   │   │   │       ├── SalesChart.tsx
│   │   │   │       ├── SalesCustomerList.tsx
│   │   │   │       ├── SalesOrderList.tsx
│   │   │   │       ├── SalesQuoteList.tsx
│   │   │   │       └── SalesTabs.tsx
│   │   │   ├── constant.ts
│   │   │   ├── page.tsx
│   │   │   ├── sales.api.ts
│   │   │   ├── sales.service.ts
│   │   │   ├── types
│   │   │   │   ├── CustomerDetailModalProps.ts
│   │   │   │   ├── CustomerEditModalType.ts
│   │   │   │   ├── NewCustomerModalType.ts
│   │   │   │   ├── NewOrderModalType.ts
│   │   │   │   ├── NewQuoteModalType.ts
│   │   │   │   ├── QuoteDetailModalType.ts
│   │   │   │   ├── QuoteReviewModalType.ts
│   │   │   │   ├── SalesChartType.ts
│   │   │   │   ├── SalesCustomerDetailType.ts
│   │   │   │   ├── SalesCustomerListType.ts
│   │   │   │   ├── SalesOrderDetailType.ts
│   │   │   │   ├── SalesOrderListType.ts
│   │   │   │   ├── SalesQuoteListType.ts
│   │   │   │   └── SalesStatsType.ts
│   │   │   └── utils.ts
│   │   └── warehouse
│   │       ├── components
│   │       │   ├── WarehouseList.tsx
│   │       │   ├── modals
│   │       │   │   ├── AddWarehouseModal.tsx
│   │       │   │   ├── ManageWarehouseModal.tsx
│   │       │   │   └── WarehouseDetailModal.tsx
│   │       │   └── warehouseVisualizer
│   │       │       ├── WarehouseVisualizerType.ts
│   │       │       ├── clusters.ts
│   │       │       ├── components
│   │       │       │   ├── FreeCameraControls.tsx
│   │       │       │   ├── Warehouse3DModal.tsx
│   │       │       │   ├── WarehouseScene.tsx
│   │       │       │   └── WarehouseVisualizer.tsx
│   │       │       └── useWarehouseClusters.ts
│   │       ├── page.tsx
│   │       ├── types
│   │       │   ├── AddWarehouseModalType.ts
│   │       │   ├── ManageWarehouseModalType.ts
│   │       │   ├── WarehouseDetailModalType.ts
│   │       │   ├── WarehouseListType.ts
│   │       │   └── WarehouseStatsType.ts
│   │       ├── warehouse.api.ts
│   │       └── warehouse.service.ts
│   ├── (public)
│   │   ├── callback
│   │   │   ├── callback.api.ts
│   │   │   ├── page.tsx
│   │   │   └── userInfoType.ts
│   │   ├── layout.tsx
│   │   ├── profile
│   │   │   ├── ProfileType.ts
│   │   │   ├── components
│   │   │   │   ├── AttendanceRecord.tsx
│   │   │   │   ├── EmploymentInfo.tsx
│   │   │   │   ├── ProfileHeader.tsx
│   │   │   │   └── TrainingStatus.tsx
│   │   │   ├── page.tsx
│   │   │   └── profile.api.ts
│   │   └── unauthorized
│   │       └── page.tsx
│   ├── components
│   │   ├── common
│   │   │   ├── Button.tsx
│   │   │   ├── CalendarButton.tsx
│   │   │   ├── DateRangePicker.tsx
│   │   │   ├── Dropdown.tsx
│   │   │   ├── DropdownInputListModal.tsx
│   │   │   ├── DropdownInputModal.tsx
│   │   │   ├── ErrorMessage.tsx
│   │   │   ├── IconButton.tsx
│   │   │   ├── Input.tsx
│   │   │   ├── InputList.tsx
│   │   │   ├── LoadingMessage.tsx
│   │   │   ├── LoadingSpinner.tsx
│   │   │   ├── Modal.tsx
│   │   │   ├── ModalStatusBox.tsx
│   │   │   ├── PageTitle.tsx
│   │   │   ├── Pagination.tsx
│   │   │   ├── SearchBar.tsx
│   │   │   ├── SimplePagination.tsx
│   │   │   ├── SlidingNavBar.tsx
│   │   │   ├── StatSection.tsx
│   │   │   ├── StatusLabel.tsx
│   │   │   ├── SubNavigation.tsx
│   │   │   ├── TabNavigation.tsx
│   │   │   ├── TableStatusBox.tsx
│   │   │   └── modal
│   │   │       ├── ModalContainer.tsx
│   │   │       ├── ModalProvider.tsx
│   │   │       ├── types.ts
│   │   │       └── useModal.ts
│   │   ├── header
│   │   │   ├── Header.tsx
│   │   │   ├── Logo.tsx
│   │   │   ├── Navigation.tsx
│   │   │   ├── Notification
│   │   │   │   ├── NoificationDropdown.tsx
│   │   │   │   ├── NotificationHeader.tsx
│   │   │   │   ├── NotificationList.tsx
│   │   │   │   ├── NotificationPagination.tsx
│   │   │   │   └── useNotificationSSE.ts
│   │   │   ├── ProfileDropdown.tsx
│   │   │   ├── ProfileInfoModal.tsx
│   │   │   ├── header.api.ts
│   │   │   └── types
│   │   │       ├── CustomerOrSupplierInfoType.ts
│   │   │       ├── NotificatioApiType.ts
│   │   │       └── NotificationType.ts
│   │   └── statCard
│   │       ├── StatCardItem.tsx
│   │       └── StatCardList.tsx
│   ├── hooks
│   │   ├── useDebouncedKeyword.tsx
│   │   ├── useDropdown.tsx
│   │   └── useRole.ts
│   ├── layout.tsx
│   ├── not-found.tsx
│   ├── page.tsx
│   ├── postcss.config.mjs
│   ├── providers.tsx
│   ├── types
│   │   ├── CommonType.ts
│   │   ├── Date.ts
│   │   ├── KeywordType.ts
│   │   ├── NavigationType.ts
│   │   ├── Page.ts
│   │   ├── StatType.ts
│   │   ├── api.ts
│   │   ├── componentConstant.ts
│   │   └── role.constant.ts
│   └── utils
│       └── date.ts
├── lib
│   ├── CreateStatCard.ts
│   ├── api
│   │   ├── notification.api.ts
│   │   └── notification.endpoints.ts
│   ├── auth
│   │   ├── pkce.ts
│   │   ├── refresh.ts
│   │   ├── startAuthorization.ts
│   │   └── tokenStorage.ts
│   ├── axiosInstance.ts
│   ├── queryClient.ts
│   ├── role.ts
│   └── status.constants.ts
├── middleware.ts
├── store
│   └── authStore.ts
└── styles
    └── globals.css

6-2. BackEnd (Spring Boot Microservices)

6-2-1. _4ever-be-auth (OAuth2 Server)

src
├── main
│   ├── java
│   │   └── org
│   │       └── ever
│   │           ├── _4ever_be_auth
│   │           │   ├── Application.java
│   │           │   ├── auth
│   │           │   │   ├── account
│   │           │   │   │   ├── controller
│   │           │   │   │   │   ├── AccountController.java
│   │           │   │   │   │   └── LogoutController.java
│   │           │   │   │   ├── entity
│   │           │   │   │   │   └── PasswordResetToken.java
│   │           │   │   │   ├── filter
│   │           │   │   │   │   └── PasswordChangeEnforcementFilter.java
│   │           │   │   │   ├── handler
│   │           │   │   │   │   ├── LoginFailureHandler.java
│   │           │   │   │   │   └── LoginSuccessHandler.java
│   │           │   │   │   ├── repository
│   │           │   │   │   │   └── PasswordResetTokenRepository.java
│   │           │   │   │   └── service
│   │           │   │   │       ├── AccountService.java
│   │           │   │   │       ├── AccountServiceImpl.java
│   │           │   │   │       ├── EverUserDetailsService.java
│   │           │   │   │       └── PasswordResetMailFactory.java
│   │           │   │   ├── client
│   │           │   │   │   ├── dto
│   │           │   │   │   │   └── OAuthRequestParams.java
│   │           │   │   │   ├── exception
│   │           │   │   │   │   └── ClientValidationException.java
│   │           │   │   │   ├── filter
│   │           │   │   │   │   └── ClientValidationFilter.java
│   │           │   │   │   ├── service
│   │           │   │   │   │   └── ClientValidationService.java
│   │           │   │   │   └── serviceImpl
│   │           │   │   │       └── ClientValidationServiceImpl.java
│   │           │   │   └── oauth
│   │           │   │       ├── entity
│   │           │   │       │   ├── OAuth2AuthorizationConsentEntity.java
│   │           │   │       │   ├── OAuth2AuthorizationEntity.java
│   │           │   │       │   └── RegisteredClientEntity.java
│   │           │   │       ├── filter
│   │           │   │       │   └── TokenDebugLoggingFilter.java
│   │           │   │       ├── handler
│   │           │   │       │   ├── RefreshTokenCookieAuthenticationFailureHandler.java
│   │           │   │       │   └── RefreshTokenCookieAuthenticationSuccessHandler.java
│   │           │   │       ├── repository
│   │           │   │       │   ├── OAuth2AuthorizationConsentJpaRepository.java
│   │           │   │       │   ├── OAuth2AuthorizationJpaRepository.java
│   │           │   │       │   └── RegisteredClientJpaRepository.java
│   │           │   │       └── service
│   │           │   │           ├── JpaOAuth2AuthorizationConsentService.java
│   │           │   │           ├── JpaOAuth2AuthorizationService.java
│   │           │   │           ├── JpaRegisteredClientRepository.java
│   │           │   │           ├── LogoutService.java
│   │           │   │           ├── OAuth2AuthorizationConsentMapper.java
│   │           │   │           ├── OAuth2AuthorizationMapper.java
│   │           │   │           ├── RegisteredClientMapper.java
│   │           │   │           └── TokenDebugInspector.java
│   │           │   ├── common
│   │           │   │   ├── audit
│   │           │   │   │   ├── Auditable.java
│   │           │   │   │   ├── ChangeType.java
│   │           │   │   │   ├── EntityAuditListener.java
│   │           │   │   │   ├── EntityChange.java
│   │           │   │   │   ├── TransactionChanges.java
│   │           │   │   │   └── TransactionEntityChangeCollector.java
│   │           │   │   ├── dto
│   │           │   │   ├── entity
│   │           │   │   │   ├── SagaTransactionStatus.java
│   │           │   │   │   ├── TimeStamp.java
│   │           │   │   │   └── TransactionChangeLog.java
│   │           │   │   ├── exception
│   │           │   │   │   ├── BusinessException.java
│   │           │   │   │   ├── DatabaseException.java
│   │           │   │   │   ├── ErrorCode.java
│   │           │   │   │   ├── PaymentException.java
│   │           │   │   │   ├── handler
│   │           │   │   │   │   └── GlobalExceptionHandler.java
│   │           │   │   │   └── view
│   │           │   │   │       ├── ErrorMessageResolver.java
│   │           │   │   │       └── ErrorViewModel.java
│   │           │   │   ├── jpa_converter
│   │           │   │   │   ├── PlainMapToJsonConverter.java
│   │           │   │   │   ├── SecurityMapToJsonConverter.java
│   │           │   │   │   └── StringSetToJsonConverter.java
│   │           │   │   ├── repository
│   │           │   │   │   ├── SagaTransactionStatusRepository.java
│   │           │   │   │   └── TransactionChangeLogRepository.java
│   │           │   │   ├── response
│   │           │   │   │   └── ApiResponse.java
│   │           │   │   └── saga
│   │           │   │       ├── CompensationHandler.java
│   │           │   │       ├── SagaCompensationService.java
│   │           │   │       ├── SagaTransactionContext.java
│   │           │   │       ├── SagaTransactionManager.java
│   │           │   │       ├── SagaTransactionState.java
│   │           │   │       └── SagaTransactionStatusService.java
│   │           │   ├── config
│   │           │   │   ├── CorsConfig.java
│   │           │   │   ├── CsrfAdvice.java
│   │           │   │   ├── application
│   │           │   │   │   ├── AppConfig.java
│   │           │   │   │   └── SchedulingConfig.java
│   │           │   │   ├── database
│   │           │   │   │   └── DatabaseConfig.java
│   │           │   │   ├── jackson
│   │           │   │   │   └── SecurityJacksonConfig.java
│   │           │   │   ├── oauth
│   │           │   │   │   ├── AuthorizationServerConfig.java
│   │           │   │   │   ├── JwksConfig.java
│   │           │   │   │   ├── JwtTokenCustomizerConfig.java
│   │           │   │   │   └── TokenProperties.java
│   │           │   │   ├── security
│   │           │   │   │   ├── AdminInitializer.java
│   │           │   │   │   └── SecurityConfig.java
│   │           │   │   └── swagger
│   │           │   │       └── SwaggerConfig.java
│   │           │   ├── filter
│   │           │   │   └── LoggingFilter.java
│   │           │   ├── infrastructure
│   │           │   │   ├── kafka
│   │           │   │   │   ├── config
│   │           │   │   │   │   ├── KafkaConfig.java
│   │           │   │   │   │   ├── KafkaFilterConfig.java
│   │           │   │   │   │   └── KafkaTopicConfig.java
│   │           │   │   │   ├── consumer
│   │           │   │   │   │   ├── AuthUserEventListener.java
│   │           │   │   │   │   ├── CustomerUserEventListener.java
│   │           │   │   │   │   ├── SupplierUserEventListener.java
│   │           │   │   │   │   └── handler
│   │           │   │   │   │       ├── MultiTopicEventHandler.java
│   │           │   │   │   │       └── impl
│   │           │   │   │   │           └── MultiTopicEventHandlerImpl.java
│   │           │   │   │   ├── event
│   │           │   │   │   │   ├── AlarmEvent.java
│   │           │   │   │   │   ├── BaseEvent.java
│   │           │   │   │   │   ├── BusinessEvent.java
│   │           │   │   │   │   ├── PaymentEvent.java
│   │           │   │   │   │   ├── ScmEvent.java
│   │           │   │   │   │   └── UserEvent.java
│   │           │   │   │   ├── handler
│   │           │   │   │   │   ├── DeadLetterQueueHandler.java
│   │           │   │   │   │   ├── KafkaErrorHandler.java
│   │           │   │   │   │   └── impl
│   │           │   │   │   │       └── DeadLetterQueueHandlerImpl.java
│   │           │   │   │   └── producer
│   │           │   │   │       ├── KafkaProducerService.java
│   │           │   │   │       └── impl
│   │           │   │   │           └── KafkaProducerServiceImpl.java
│   │           │   │   └── redis
│   │           │   │       ├── config
│   │           │   │       │   └── RedisConfig.java
│   │           │   │       └── service
│   │           │   │           ├── RedisService.java
│   │           │   │           └── impl
│   │           │   │               └── RedisServiceImpl.java
│   │           │   └── user
│   │           │       ├── application
│   │           │       │   ├── controller
│   │           │       │   ├── port
│   │           │       │   │   └── in
│   │           │       │   │       ├── AuthUserSagaPort.java
│   │           │       │   │       ├── CustomerUserSagaPort.java
│   │           │       │   │       └── SupplierUserSagaPort.java
│   │           │       │   └── service
│   │           │       │       ├── AsyncResultManager.java
│   │           │       │       ├── AuthUserSagaService.java
│   │           │       │       ├── CustomerUserSagaService.java
│   │           │       │       ├── GenericAsyncResultManager.java
│   │           │       │       ├── SagaRollbackService.java
│   │           │       │       ├── SupplierUserSagaService.java
│   │           │       │       └── UserAccountCreationSupport.java
│   │           │       ├── dto
│   │           │       │   ├── CreateUserRequestDto.java
│   │           │       │   ├── request
│   │           │       │   └── response
│   │           │       │       └── EmployeeCreateResponseDto.java
│   │           │       ├── entity
│   │           │       │   └── User.java
│   │           │       ├── enums
│   │           │       │   ├── UserRole.java
│   │           │       │   ├── UserStatus.java
│   │           │       │   └── UserType.java
│   │           │       ├── repository
│   │           │       │   └── UserRepository.java
│   │           │       ├── service
│   │           │       │   ├── UserNotificationService.java
│   │           │       │   ├── UserNotificationServiceImpl.java
│   │           │       │   ├── UserService.java
│   │           │       │   └── UserServiceImpl.java
│   │           │       └── util
│   │           │           └── TemporaryPasswordGenerator.java
│   │           └── event
│   │               ├── CreateAuthUserEvent.java
│   │               ├── CreateAuthUserResultEvent.java
│   │               ├── CreateCustomerUserEvent.java
│   │               └── CreateSupplierUserEvent.java
│   └── resources
│       ├── application-local.yml
│       ├── application.yml
│       ├── static
│       │   ├── css
│       │   │   ├── error.css
│       │   │   └── login.css
│       │   ├── images
│       │   │   └── brand-logo.png
│       │   ├── js
│       │   │   ├── error-modal.js
│       │   │   ├── login.js
│       │   │   ├── password-change.js
│       │   │   └── password-reset.js
│       │   └── videos
│       │       ├── hy-autoever-intro1.mp4
│       │       ├── hy-autoever-intro2.mp4
│       │       └── hy-autoever-intro3.mp4
│       └── templates
│           ├── error
│           │   └── general.html
│           ├── login.html
│           ├── password-change.html
│           ├── password-reset-confirm.html
│           └── password-reset-request.html
└── test
    └── java
        └── org
            └── ever
                └── _4ever_be_auth
                    ├── ApplicationTests.java
                    └── user
                        └── service
                            └── UserServiceImplTest.java

6-2-2. _4ever_be_business

src
├── main
│   ├── java
│   │   └── org
│   │       └── ever
│   │           ├── _4ever_be_business
│   │           │   ├── Application.java
│   │           │   ├── common
│   │           │   │   ├── async
│   │           │   │   │   ├── AsyncResultManager.java
│   │           │   │   │   └── GenericAsyncResultManager.java
│   │           │   │   ├── audit
│   │           │   │   │   ├── Auditable.java
│   │           │   │   │   ├── ChangeType.java
│   │           │   │   │   ├── EntityAuditListener.java
│   │           │   │   │   ├── EntityChange.java
│   │           │   │   │   ├── TransactionChanges.java
│   │           │   │   │   └── TransactionEntityChangeCollector.java
│   │           │   │   ├── config
│   │           │   │   │   ├── QueryDslConfig.java
│   │           │   │   │   └── RestClientConfig.java
│   │           │   │   ├── dto
│   │           │   │   │   ├── internel
│   │           │   │   │   │   └── InternelServerResponse.java
│   │           │   │   │   └── response
│   │           │   │   │       └── ApiResponse.java
│   │           │   │   ├── entity
│   │           │   │   │   ├── TimeStamp.java
│   │           │   │   │   └── TransactionChangeLog.java
│   │           │   │   ├── exception
│   │           │   │   │   ├── BusinessException.java
│   │           │   │   │   ├── DatabaseException.java
│   │           │   │   │   ├── ErrorCode.java
│   │           │   │   │   ├── PaymentException.java
│   │           │   │   │   └── handler
│   │           │   │   │       └── GlobalExceptionHandler.java
│   │           │   │   ├── jpa
│   │           │   │   │   └── converter
│   │           │   │   │       └── DurationToSecondsConverter.java
│   │           │   │   ├── mock
│   │           │   │   │   └── MockDataProvider.java
│   │           │   │   ├── repository
│   │           │   │   │   └── TransactionChangeLogRepository.java
│   │           │   │   ├── saga
│   │           │   │   │   ├── CompensationHandler.java
│   │           │   │   │   ├── SagaCompensationService.java
│   │           │   │   │   ├── SagaTransactionContext.java
│   │           │   │   │   └── SagaTransactionManager.java
│   │           │   │   ├── service
│   │           │   │   │   └── LogCleanupService.java
│   │           │   │   └── util
│   │           │   │       ├── CodeGenerator.java
│   │           │   │       ├── DateRangeCalculator.java
│   │           │   │       └── UuidV7Generator.java
│   │           │   ├── company
│   │           │   │   ├── dao
│   │           │   │   │   ├── CustomerCompanyDAO.java
│   │           │   │   │   └── impl
│   │           │   │   │       └── CustomerCompanyDAOImpl.java
│   │           │   │   ├── dto
│   │           │   │   │   └── CustomerCreationResult.java
│   │           │   │   ├── entity
│   │           │   │   │   └── CustomerCompany.java
│   │           │   │   └── repository
│   │           │   │       ├── CustomerCompanyRepository.java
│   │           │   │       ├── CustomerCompanyRepositoryCustom.java
│   │           │   │       └── impl
│   │           │   │           └── CustomerCompanyRepositoryImpl.java
│   │           │   ├── config
│   │           │   │   ├── CustomerUserInitializer.java
│   │           │   │   ├── DataPreloader.java
│   │           │   │   ├── InternalUserInitializer.java
│   │           │   │   ├── PayrollInitializer.java
│   │           │   │   ├── SchedulerConfig.java
│   │           │   │   ├── application
│   │           │   │   │   ├── AppConfig.java
│   │           │   │   │   └── SchedulingConfig.java
│   │           │   │   ├── database
│   │           │   │   │   └── DatabaseConfig.java
│   │           │   │   └── swagger
│   │           │   │       └── SwaggerConfig.java
│   │           │   ├── dashboard
│   │           │   │   ├── controller
│   │           │   │   │   └── DashboardController.java
│   │           │   │   ├── dto
│   │           │   │   │   └── response
│   │           │   │   │       ├── DashboardPeriodStatisticsDto.java
│   │           │   │   │       ├── DashboardStatisticsResponseDto.java
│   │           │   │   │       └── DashboardValueDto.java
│   │           │   │   └── service
│   │           │   │       ├── DashboardService.java
│   │           │   │       └── impl
│   │           │   │           └── DashboardServiceImpl.java
│   │           │   ├── fcm
│   │           │   │   ├── controller
│   │           │   │   │   ├── FcmController.java
│   │           │   │   │   └── FcmDashboardController.java
│   │           │   │   ├── dao
│   │           │   │   │   ├── FcmStatisticsDAO.java
│   │           │   │   │   ├── PurchaseStatementDAO.java
│   │           │   │   │   ├── SalesStatementDAO.java
│   │           │   │   │   └── impl
│   │           │   │   │       ├── FcmStatisticsDAOImpl.java
│   │           │   │   │       ├── PurchaseStatementDAOImpl.java
│   │           │   │   │       └── SalesStatementDAOImpl.java
│   │           │   │   ├── dto
│   │           │   │   │   ├── internal
│   │           │   │   │   │   ├── PurchaseStatementInfoDto.java
│   │           │   │   │   │   └── PurchaseStatementListItemInfoDto.java
│   │           │   │   │   ├── request
│   │           │   │   │   │   ├── APInvoiceSearchConditionDto.java
│   │           │   │   │   │   ├── ARInvoiceSearchConditionDto.java
│   │           │   │   │   │   ├── SupplierPurchaseInvoiceRequestDto.java
│   │           │   │   │   │   ├── UpdateARInvoiceDto.java
│   │           │   │   │   │   ├── UpdateInvoiceIdsDto.java
│   │           │   │   │   │   └── UpdateVoucherStatusDto.java
│   │           │   │   │   └── response
│   │           │   │   │       ├── APInvoiceDetailDto.java
│   │           │   │   │       ├── APInvoiceItemDto.java
│   │           │   │   │       ├── APInvoiceListItemDto.java
│   │           │   │   │       ├── ARInvoiceDetailDto.java
│   │           │   │   │       ├── ARInvoiceItemDto.java
│   │           │   │   │       ├── ARInvoiceListItemDto.java
│   │           │   │   │       ├── FcmPeriodStatisticsDto.java
│   │           │   │   │       ├── FcmStatisticsDto.java
│   │           │   │   │       ├── FcmStatisticsValueDto.java
│   │           │   │   │       ├── PeriodTotalAmountDto.java
│   │           │   │   │       ├── PurchaseInvoiceListDto.java
│   │           │   │   │       ├── PurchaseStatementConnectionDto.java
│   │           │   │   │       ├── PurchaseStatementDetailDto.java
│   │           │   │   │       ├── PurchaseStatementItemDto.java
│   │           │   │   │       ├── PurchaseStatementReferenceDto.java
│   │           │   │   │       ├── ReferenceDto.java
│   │           │   │   │       ├── SalesStatementConnectionDto.java
│   │           │   │   │       ├── SalesStatementDetailDto.java
│   │           │   │   │       ├── SalesStatementItemDto.java
│   │           │   │   │       ├── SalesStatementListItemDto.java
│   │           │   │   │       ├── SupplierDto.java
│   │           │   │   │       ├── SupplierPurchaseInvoiceListItemDto.java
│   │           │   │   │       ├── SupplyDto.java
│   │           │   │   │       └── TotalAmountDto.java
│   │           │   │   ├── integration
│   │           │   │   │   ├── adapter
│   │           │   │   │   │   ├── MockProductOrderServiceAdapter.java
│   │           │   │   │   │   ├── MockProductServiceAdapter.java
│   │           │   │   │   │   ├── MockSupplierCompanyServiceAdapter.java
│   │           │   │   │   │   ├── ScmProductOrderServiceAdapter.java
│   │           │   │   │   │   ├── ScmProductsServiceAdapter.java
│   │           │   │   │   │   └── ScmSupplierCompanyServiceAdapter.java
│   │           │   │   │   ├── dto
│   │           │   │   │   │   ├── OrderItemsResponseDto.java
│   │           │   │   │   │   ├── ProductMultipleResponseDto.java
│   │           │   │   │   │   ├── ProductOrderInfoResponseDto.java
│   │           │   │   │   │   ├── ProductOrderInfosResponseDto.java
│   │           │   │   │   │   ├── SupplierCompaniesResponseDto.java
│   │           │   │   │   │   └── SupplierCompanyResponseDto.java
│   │           │   │   │   └── port
│   │           │   │   │       ├── ProductOrderServicePort.java
│   │           │   │   │       ├── ProductsServicePort.java
│   │           │   │   │       └── SupplierCompanyServicePort.java
│   │           │   │   ├── kafka
│   │           │   │   │   └── SupplierCompanyResolveResultListener.java
│   │           │   │   ├── scheduler
│   │           │   │   │   └── VoucherStatusScheduler.java
│   │           │   │   └── service
│   │           │   │       ├── APInvoiceService.java
│   │           │   │       ├── ARInvoiceService.java
│   │           │   │       ├── CustomerDashboardInvoiceService.java
│   │           │   │       ├── FcmStatisticsService.java
│   │           │   │       ├── PurchaseStatementService.java
│   │           │   │       ├── SalesStatementService.java
│   │           │   │       ├── SupplierCompanyResolver.java
│   │           │   │       ├── SupplierDashboardInvoiceService.java
│   │           │   │       ├── SupplierPurchaseInvoiceService.java
│   │           │   │       ├── VoucherStatusService.java
│   │           │   │       └── impl
│   │           │   │           ├── APInvoiceServiceImpl.java
│   │           │   │           ├── ARInvoiceServiceImpl.java
│   │           │   │           ├── CustomerDashboardInvoiceServiceImpl.java
│   │           │   │           ├── FcmStatisticsServiceImpl.java
│   │           │   │           ├── PurchaseStatementServiceImpl.java
│   │           │   │           ├── SalesStatementServiceImpl.java
│   │           │   │           ├── SupplierCompanyResolverImpl.java
│   │           │   │           ├── SupplierDashboardInvoiceServiceImpl.java
│   │           │   │           ├── SupplierPurchaseInvoiceServiceImpl.java
│   │           │   │           └── VoucherStatusServiceImpl.java
│   │           │   ├── filter
│   │           │   │   ├── AsyncRequestLoggingListener.java
│   │           │   │   └── LoggingFilter.java
│   │           │   ├── hr
│   │           │   │   ├── controller
│   │           │   │   │   └── HrmController.java
│   │           │   │   ├── dao
│   │           │   │   │   ├── DepartmentDAO.java
│   │           │   │   │   ├── EmployeeDAO.java
│   │           │   │   │   ├── PayrollDAO.java
│   │           │   │   │   ├── PositionDAO.java
│   │           │   │   │   ├── TrainingDAO.java
│   │           │   │   │   └── impl
│   │           │   │   │       ├── DepartmentDAOImpl.java
│   │           │   │   │       ├── EmployeeDAOImpl.java
│   │           │   │   │       ├── PayrollDAOImpl.java
│   │           │   │   │       ├── PositionDAOImpl.java
│   │           │   │   │       └── TrainingDAOImpl.java
│   │           │   │   ├── dto
│   │           │   │   │   ├── request
│   │           │   │   │   │   ├── CompletePayrollRequestDto.java
│   │           │   │   │   │   ├── CreateLeaveRequestDto.java
│   │           │   │   │   │   ├── CreateTrainingProgramDto.java
│   │           │   │   │   │   ├── EmployeeCreateRequestDto.java
│   │           │   │   │   │   ├── EmployeesMultipleRequestDto.java
│   │           │   │   │   │   ├── TrainingRequestDto.java
│   │           │   │   │   │   ├── UpdateDepartmentRequestDto.java
│   │           │   │   │   │   ├── UpdateEmployeeRequestDto.java
│   │           │   │   │   │   ├── UpdateProfileRequestDto.java
│   │           │   │   │   │   ├── UpdateTrainingProgramDto.java
│   │           │   │   │   │   └── UserInfoRequest.java
│   │           │   │   │   └── response
│   │           │   │   │       ├── CustomerInfoDto.java
│   │           │   │   │       ├── CustomerUserDetailDto.java
│   │           │   │   │       ├── DepartmentDetailDto.java
│   │           │   │   │       ├── DepartmentEmployeeDto.java
│   │           │   │   │       ├── DepartmentListItemDto.java
│   │           │   │   │       ├── DepartmentListResponseDto.java
│   │           │   │   │       ├── DepartmentMemberDto.java
│   │           │   │   │       ├── DepartmentSimpleDto.java
│   │           │   │   │       ├── DesignatedEmployee.java
│   │           │   │   │       ├── EmployeeAttendanceRecordDto.java
│   │           │   │   │       ├── EmployeeCreateResponseDto.java
│   │           │   │   │       ├── EmployeeDetailDto.java
│   │           │   │   │       ├── EmployeeListItemDto.java
│   │           │   │   │       ├── EmployeeListResponseDto.java
│   │           │   │   │       ├── EmployeeProfileDto.java
│   │           │   │   │       ├── EmployeeTrainingHistoryDto.java
│   │           │   │   │       ├── EmployeeTrainingItemDto.java
│   │           │   │   │       ├── EmployeeTrainingListItemDto.java
│   │           │   │   │       ├── EmployeeTrainingListResponseDto.java
│   │           │   │   │       ├── EmployeeTrainingSummaryDto.java
│   │           │   │   │       ├── EmployeeWithTrainingDto.java
│   │           │   │   │       ├── HRStatisticsResponseDto.java
│   │           │   │   │       ├── HrmEmployeeBasicInfoDto.java
│   │           │   │   │       ├── InventoryDepartmentEmployeeDto.java
│   │           │   │   │       ├── LeaveItemDto.java
│   │           │   │   │       ├── LeaveRequestEmployeeDto.java
│   │           │   │   │       ├── LeaveRequestListItemDto.java
│   │           │   │   │       ├── LeaveRequestListResponseDto.java
│   │           │   │   │       ├── PageInfoDto.java
│   │           │   │   │       ├── PageResponseDto.java
│   │           │   │   │       ├── PayItemDto.java
│   │           │   │   │       ├── PayrollListEmployeeDto.java
│   │           │   │   │       ├── PayrollListItemDto.java
│   │           │   │   │       ├── PayrollListPayDto.java
│   │           │   │   │       ├── PayrollListResponseDto.java
│   │           │   │   │       ├── PayrollStatusDto.java
│   │           │   │   │       ├── PaystubDetailDto.java
│   │           │   │   │       ├── PaystubEmployeeDto.java
│   │           │   │   │       ├── PaystubPayDto.java
│   │           │   │   │       ├── PeriodStatisticsDto.java
│   │           │   │   │       ├── PositionDetailDto.java
│   │           │   │   │       ├── PositionEmployeeDto.java
│   │           │   │   │       ├── PositionListItemDto.java
│   │           │   │   │       ├── PositionSimpleDto.java
│   │           │   │   │       ├── ProgramHistoryItemDto.java
│   │           │   │   │       ├── RemainingLeaveDaysDto.java
│   │           │   │   │       ├── StatisticValueDto.java
│   │           │   │   │       ├── TodayAttendanceDto.java
│   │           │   │   │       ├── TrainingCategoryDto.java
│   │           │   │   │       ├── TrainingCompletionStatusDto.java
│   │           │   │   │       ├── TrainingItemDto.java
│   │           │   │   │       ├── TrainingListItemDto.java
│   │           │   │   │       ├── TrainingListResponseDto.java
│   │           │   │   │       ├── TrainingProgramSimpleDto.java
│   │           │   │   │       ├── TrainingResponseDto.java
│   │           │   │   │       ├── TrainingStatusItemDto.java
│   │           │   │   │       ├── TrainingStatusResponseDto.java
│   │           │   │   │       ├── UserInfoResponse.java
│   │           │   │   │       └── UserNameResponse.java
│   │           │   │   ├── entity
│   │           │   │   │   ├── CustomerUser.java
│   │           │   │   │   ├── Deducation.java
│   │           │   │   │   ├── Department.java
│   │           │   │   │   ├── Employee.java
│   │           │   │   │   ├── EmployeeTraining.java
│   │           │   │   │   ├── InternelUser.java
│   │           │   │   │   ├── LeaveRequest.java
│   │           │   │   │   ├── Payroll.java
│   │           │   │   │   ├── PayrollDeducation.java
│   │           │   │   │   ├── Position.java
│   │           │   │   │   ├── Training.java
│   │           │   │   │   ├── Vacation.java
│   │           │   │   │   └── VacationRequestApproval.java
│   │           │   │   ├── enums
│   │           │   │   │   ├── Gender.java
│   │           │   │   │   ├── LeaveRequestStatus.java
│   │           │   │   │   ├── LeaveType.java
│   │           │   │   │   ├── PayrollStatus.java
│   │           │   │   │   ├── TrainingCategory.java
│   │           │   │   │   ├── TrainingCompletionStatus.java
│   │           │   │   │   ├── TrainingStatus.java
│   │           │   │   │   ├── UserStatus.java
│   │           │   │   │   ├── VacationStatus.java
│   │           │   │   │   └── VacationType.java
│   │           │   │   ├── integration
│   │           │   │   │   ├── adapter
│   │           │   │   │   │   └── KafkaUserServiceAdapter.java
│   │           │   │   │   └── port
│   │           │   │   │       └── UserServicePort.java
│   │           │   │   ├── repository
│   │           │   │   │   ├── CustomerUserRepository.java
│   │           │   │   │   ├── DeducationRepository.java
│   │           │   │   │   ├── DepartmentRepository.java
│   │           │   │   │   ├── EmployeeRepository.java
│   │           │   │   │   ├── EmployeeRepositoryCustom.java
│   │           │   │   │   ├── EmployeeTrainingRepository.java
│   │           │   │   │   ├── EmployeeTrainingRepositoryCustom.java
│   │           │   │   │   ├── EmployeeTrainingRepositoryImpl.java
│   │           │   │   │   ├── InternelUserRepository.java
│   │           │   │   │   ├── LeaveRequestRepository.java
│   │           │   │   │   ├── LeaveRequestRepositoryCustom.java
│   │           │   │   │   ├── PayrollDeducationRepository.java
│   │           │   │   │   ├── PayrollRepository.java
│   │           │   │   │   ├── PositionRepository.java
│   │           │   │   │   ├── PositionRepositoryCustom.java
│   │           │   │   │   ├── PositionRepositoryImpl.java
│   │           │   │   │   ├── TrainingRepository.java
│   │           │   │   │   ├── TrainingRepositoryCustom.java
│   │           │   │   │   ├── TrainingRepositoryImpl.java
│   │           │   │   │   └── impl
│   │           │   │   │       ├── EmployeeRepositoryImpl.java
│   │           │   │   │       └── LeaveRequestRepositoryImpl.java
│   │           │   │   ├── scheduler
│   │           │   │   │   └── PayrollScheduler.java
│   │           │   │   ├── service
│   │           │   │   │   ├── CustomerUserService.java
│   │           │   │   │   ├── DepartmentService.java
│   │           │   │   │   ├── EmployeeService.java
│   │           │   │   │   ├── LeaveRequestService.java
│   │           │   │   │   ├── PayrollService.java
│   │           │   │   │   ├── PositionService.java
│   │           │   │   │   ├── StatisticsService.java
│   │           │   │   │   ├── TamService.java
│   │           │   │   │   ├── TrainingService.java
│   │           │   │   │   └── impl
│   │           │   │   │       ├── CustomerUserServiceImpl.java
│   │           │   │   │       ├── DepartmentServiceImpl.java
│   │           │   │   │       ├── EmployeeServiceImpl.java
│   │           │   │   │       ├── LeaveRequestServiceImpl.java
│   │           │   │   │       ├── PayrollServiceImpl.java
│   │           │   │   │       ├── PositionServiceImpl.java
│   │           │   │   │       ├── StatisticsServiceImpl.java
│   │           │   │   │       ├── TamServiceImpl.java
│   │           │   │   │       └── TrainingServiceImpl.java
│   │           │   │   └── vo
│   │           │   │       ├── EmployeeListSearchConditionVo.java
│   │           │   │       ├── EmployeeTrainingHistoryVo.java
│   │           │   │       ├── EmployeeTrainingSearchConditionVo.java
│   │           │   │       ├── LeaveRequestSearchConditionVo.java
│   │           │   │       ├── PayrollSearchConditionVo.java
│   │           │   │       ├── TrainingDetailVo.java
│   │           │   │       ├── TrainingSearchConditionVo.java
│   │           │   │       └── TrainingStatusSearchConditionVo.java
│   │           │   ├── infrastructure
│   │           │   │   ├── kafka
│   │           │   │   │   ├── config
│   │           │   │   │   │   ├── KafkaConfig.java
│   │           │   │   │   │   ├── KafkaFilterConfig.java
│   │           │   │   │   │   └── KafkaTopicConfig.java
│   │           │   │   │   ├── consumer
│   │           │   │   │   │   ├── AlarmStatusEventListener.java
│   │           │   │   │   │   ├── CreateAuthUserResultListener.java
│   │           │   │   │   │   ├── CustomerEventListener.java
│   │           │   │   │   │   ├── MesCompleteListener.java
│   │           │   │   │   │   ├── MesStartListener.java
│   │           │   │   │   │   ├── MultiTopicEventListener.java
│   │           │   │   │   │   ├── PaymentEventListener.java
│   │           │   │   │   │   ├── PurchaseOrderApprovalListener.java
│   │           │   │   │   │   ├── QuotationUpdateListener.java
│   │           │   │   │   │   ├── SalesOrderStatusChangeListener.java
│   │           │   │   │   │   ├── UserCreationFailListener.java
│   │           │   │   │   │   └── handler
│   │           │   │   │   │       ├── MultiTopicEventHandler.java
│   │           │   │   │   │       ├── PaymentEventHandler.java
│   │           │   │   │   │       └── impl
│   │           │   │   │   │           ├── MultiTopicEventHandlerImpl.java
│   │           │   │   │   │           └── PaymentEventHandlerImpl.java
│   │           │   │   │   ├── handler
│   │           │   │   │   │   ├── DeadLetterQueueHandler.java
│   │           │   │   │   │   ├── KafkaErrorHandler.java
│   │           │   │   │   │   └── impl
│   │           │   │   │   │       └── DeadLetterQueueHandlerImpl.java
│   │           │   │   │   └── producer
│   │           │   │   │       ├── KafkaProducerService.java
│   │           │   │   │       └── impl
│   │           │   │   │           └── KafkaProducerServiceImpl.java
│   │           │   │   └── redis
│   │           │   │       ├── config
│   │           │   │       │   ├── RedisConfig.java
│   │           │   │       │   └── RedissonConfig.java
│   │           │   │       ├── dto
│   │           │   │       │   └── OrderDeliveryCompletionTask.java
│   │           │   │       └── service
│   │           │   │           ├── OrderDeliverySchedulerService.java
│   │           │   │           ├── RedisService.java
│   │           │   │           └── impl
│   │           │   │               ├── OrderDeliverySchedulerServiceImpl.java
│   │           │   │               └── RedisServiceImpl.java
│   │           │   ├── iv
│   │           │   │   ├── controller
│   │           │   │   │   └── IvController.java
│   │           │   │   ├── dto
│   │           │   │   │   ├── request
│   │           │   │   │   │   └── IvOrderRequestDto.java
│   │           │   │   │   └── response
│   │           │   │   │       └── IvOrderResponseDto.java
│   │           │   │   └── service
│   │           │   │       ├── IvOrderService.java
│   │           │   │       └── impl
│   │           │   │           └── IvOrderServiceImpl.java
│   │           │   ├── order
│   │           │   │   ├── dao
│   │           │   │   │   ├── OrderDAO.java
│   │           │   │   │   ├── QuotationDAO.java
│   │           │   │   │   └── impl
│   │           │   │   │       ├── OrderDAOImpl.java
│   │           │   │   │       └── QuotationDAOImpl.java
│   │           │   │   ├── entity
│   │           │   │   │   ├── Order.java
│   │           │   │   │   ├── OrderItem.java
│   │           │   │   │   ├── OrderShipment.java
│   │           │   │   │   ├── OrderStatus.java
│   │           │   │   │   ├── Quotation.java
│   │           │   │   │   ├── QuotationApproval.java
│   │           │   │   │   └── QuotationItem.java
│   │           │   │   ├── enums
│   │           │   │   │   ├── ApprovalStatus.java
│   │           │   │   │   ├── ShipmentStatus.java
│   │           │   │   │   └── Unit.java
│   │           │   │   └── repository
│   │           │   │       ├── OrderItemRepository.java
│   │           │   │       ├── OrderRepository.java
│   │           │   │       ├── OrderRepositoryCustom.java
│   │           │   │       ├── QuotationApprovalRepository.java
│   │           │   │       ├── QuotationItemRepository.java
│   │           │   │       ├── QuotationRepository.java
│   │           │   │       ├── QuotationRepositoryCustom.java
│   │           │   │       └── impl
│   │           │   │           ├── OrderRepositoryImpl.java
│   │           │   │           └── QuotationRepositoryImpl.java
│   │           │   ├── pp
│   │           │   │   ├── controller
│   │           │   │   │   └── PpController.java
│   │           │   │   ├── dto
│   │           │   │   │   ├── request
│   │           │   │   │   │   └── PpQuotationRequestDto.java
│   │           │   │   │   └── response
│   │           │   │   │       └── PpQuotationResponseDto.java
│   │           │   │   └── service
│   │           │   │       ├── PpQuotationService.java
│   │           │   │       └── impl
│   │           │   │           └── PpQuotationServiceImpl.java
│   │           │   ├── sd
│   │           │   │   ├── controller
│   │           │   │   │   └── SdController.java
│   │           │   │   ├── dao
│   │           │   │   │   ├── DashboardStatisticsDAO.java
│   │           │   │   │   ├── SalesAnalyticsDAO.java
│   │           │   │   │   ├── SalesStatisticsDAO.java
│   │           │   │   │   └── impl
│   │           │   │   │       ├── DashboardStatisticsDAOImpl.java
│   │           │   │   │       ├── SalesAnalyticsDAOImpl.java
│   │           │   │   │       └── SalesStatisticsDAOImpl.java
│   │           │   │   ├── dto
│   │           │   │   │   ├── request
│   │           │   │   │   │   ├── ApproveOrderRequestDto.java
│   │           │   │   │   │   ├── ConfirmQuotationRequestDto.java
│   │           │   │   │   │   ├── CreateCustomerRequestDto.java
│   │           │   │   │   │   ├── CreateQuotationRequestDto.java
│   │           │   │   │   │   ├── CustomerManagerRequestDto.java
│   │           │   │   │   │   ├── InventoryCheckItemDto.java
│   │           │   │   │   │   ├── InventoryCheckRequestDto.java
│   │           │   │   │   │   ├── QuotationItemRequestDto.java
│   │           │   │   │   │   ├── RejectQuotationRequestDto.java
│   │           │   │   │   │   ├── SupplierQuotationRequestDto.java
│   │           │   │   │   │   └── UpdateCustomerRequestDto.java
│   │           │   │   │   └── response
│   │           │   │   │       ├── CustomerContactDto.java
│   │           │   │   │       ├── CustomerDetailDto.java
│   │           │   │   │       ├── CustomerListItemDto.java
│   │           │   │   │       ├── CustomerListResponseDto.java
│   │           │   │   │       ├── CustomerManagerDto.java
│   │           │   │   │       ├── DashboardStatisticsDto.java
│   │           │   │   │       ├── DashboardWorkflowItemDto.java
│   │           │   │   │       ├── InventoryCheckResponseDto.java
│   │           │   │   │       ├── InventoryCheckResultItemDto.java
│   │           │   │   │       ├── OrderCustomerDto.java
│   │           │   │   │       ├── OrderDetailDto.java
│   │           │   │   │       ├── OrderItemDto.java
│   │           │   │   │       ├── PageInfo.java
│   │           │   │   │       ├── PeriodInfoDto.java
│   │           │   │   │       ├── PeriodQuotationCountDto.java
│   │           │   │   │       ├── PeriodStatisticsDto.java
│   │           │   │   │       ├── ProductShareDto.java
│   │           │   │   │       ├── QuotationCodeMapDto.java
│   │           │   │   │       ├── QuotationCountDto.java
│   │           │   │   │       ├── QuotationDetailDto.java
│   │           │   │   │       ├── QuotationItemDto.java
│   │           │   │   │       ├── QuotationListItemDto.java
│   │           │   │   │       ├── QuotationListResponseDto.java
│   │           │   │   │       ├── SalesAnalyticsDto.java
│   │           │   │   │       ├── SalesOrderDetailResponseDto.java
│   │           │   │   │       ├── SalesOrderListItemDto.java
│   │           │   │   │       ├── SalesOrderListResponseDto.java
│   │           │   │   │       ├── SalesStatisticsDto.java
│   │           │   │   │       ├── ScmQuotationItemDto.java
│   │           │   │   │       ├── ScmQuotationListItemDto.java
│   │           │   │   │       ├── StatisticsValueDto.java
│   │           │   │   │       ├── SupplierOrderWorkflowItemDto.java
│   │           │   │   │       ├── SupplierQuotationWorkflowItemDto.java
│   │           │   │   │       ├── TopCustomerDto.java
│   │           │   │   │       ├── TrendDto.java
│   │           │   │   │       └── TrendScaleDto.java
│   │           │   │   ├── integration
│   │           │   │   │   ├── adapter
│   │           │   │   │   │   ├── KafkaCustomerUserServiceAdapter.java
│   │           │   │   │   │   ├── MockInventoryServiceAdapter.java
│   │           │   │   │   │   ├── MockProductServiceAdapter.java
│   │           │   │   │   │   ├── MockSupplierQuotationServiceAdapter.java
│   │           │   │   │   │   ├── ScmInventoryServiceAdapter.java
│   │           │   │   │   │   └── ScmProductServiceAdapter.java
│   │           │   │   │   ├── dto
│   │           │   │   │   │   ├── ProductInfoRequestDto.java
│   │           │   │   │   │   └── ProductInfoResponseDto.java
│   │           │   │   │   └── port
│   │           │   │   │       ├── CustomerUserServicePort.java
│   │           │   │   │       ├── InventoryServicePort.java
│   │           │   │   │       ├── ProductServicePort.java
│   │           │   │   │       └── SupplierQuotationServicePort.java
│   │           │   │   ├── repository
│   │           │   │   │   ├── DashboardStatisticsRepository.java
│   │           │   │   │   ├── DashboardStatisticsRepositoryCustom.java
│   │           │   │   │   ├── SalesAnalyticsRepository.java
│   │           │   │   │   ├── SalesAnalyticsRepositoryCustom.java
│   │           │   │   │   ├── SalesStatisticsRepository.java
│   │           │   │   │   ├── SalesStatisticsRepositoryCustom.java
│   │           │   │   │   └── impl
│   │           │   │   │       ├── DashboardStatisticsRepositoryImpl.java
│   │           │   │   │       ├── SalesAnalyticsRepositoryImpl.java
│   │           │   │   │       └── SalesStatisticsRepositoryImpl.java
│   │           │   │   ├── service
│   │           │   │   │   ├── DashboardCustomerQuotationService.java
│   │           │   │   │   ├── DashboardOrderService.java
│   │           │   │   │   ├── DashboardStatisticsService.java
│   │           │   │   │   ├── DashboardSupplierQuotationService.java
│   │           │   │   │   ├── QuotationService.java
│   │           │   │   │   ├── SalesAnalyticsService.java
│   │           │   │   │   ├── SalesStatisticsService.java
│   │           │   │   │   ├── SdCustomerService.java
│   │           │   │   │   ├── SdOrderService.java
│   │           │   │   │   ├── SdSupplierOrderService.java
│   │           │   │   │   └── impl
│   │           │   │   │       ├── DashboardCustomerQuotationServiceImpl.java
│   │           │   │   │       ├── DashboardOrderServiceImpl.java
│   │           │   │   │       ├── DashboardStatisticsServiceImpl.java
│   │           │   │   │       ├── DashboardSupplierQuotationServiceImpl.java
│   │           │   │   │       ├── QuotationServiceImpl.java
│   │           │   │   │       ├── SalesAnalyticsServiceImpl.java
│   │           │   │   │       ├── SalesStatisticsServiceImpl.java
│   │           │   │   │       ├── SdCustomerServiceImpl.java
│   │           │   │   │       ├── SdOrderServiceImpl.java
│   │           │   │   │       └── SdSupplierOrderServiceImpl.java
│   │           │   │   └── vo
│   │           │   │       ├── CustomerDetailVo.java
│   │           │   │       ├── CustomerSearchConditionVo.java
│   │           │   │       ├── OrderSearchConditionVo.java
│   │           │   │       ├── QuotationDetailVo.java
│   │           │   │       ├── QuotationSearchConditionVo.java
│   │           │   │       ├── ScmQuotationSearchConditionVo.java
│   │           │   │       └── StatisticsSearchConditionVo.java
│   │           │   ├── tam
│   │           │   │   ├── dao
│   │           │   │   │   ├── AttendanceDAO.java
│   │           │   │   │   ├── LeaveRequestDAO.java
│   │           │   │   │   ├── TimeRecordDAO.java
│   │           │   │   │   └── impl
│   │           │   │   │       ├── AttendanceDAOImpl.java
│   │           │   │   │       ├── LeaveRequestDAOImpl.java
│   │           │   │   │       └── TimeRecordDAOImpl.java
│   │           │   │   ├── dto
│   │           │   │   │   ├── request
│   │           │   │   │   │   ├── CheckInRequestDto.java
│   │           │   │   │   │   ├── CheckOutRequestDto.java
│   │           │   │   │   │   └── UpdateTimeRecordDto.java
│   │           │   │   │   └── response
│   │           │   │   │       ├── AttendanceListItemDto.java
│   │           │   │   │       ├── AttendanceListResponseDto.java
│   │           │   │   │       ├── AttendanceRecordDto.java
│   │           │   │   │       ├── AttendanceStatusDto.java
│   │           │   │   │       ├── EmployeeBasicInfoDto.java
│   │           │   │   │       ├── EmployeeInfoDto.java
│   │           │   │   │       ├── LeaveRequestEmployeeDto.java
│   │           │   │   │       ├── LeaveRequestListItemDto.java
│   │           │   │   │       ├── TimeRecordDetailDto.java
│   │           │   │   │       ├── TimeRecordListItemDto.java
│   │           │   │   │       └── TimeRecordListResponseDto.java
│   │           │   │   ├── entity
│   │           │   │   │   ├── Attendance.java
│   │           │   │   │   └── VacationRequest.java
│   │           │   │   ├── enums
│   │           │   │   │   └── AttendanceStatus.java
│   │           │   │   ├── repository
│   │           │   │   │   ├── AttendanceRepository.java
│   │           │   │   │   ├── AttendanceRepositoryCustom.java
│   │           │   │   │   ├── VacationRequestRepository.java
│   │           │   │   │   ├── VacationRequestRepositoryCustom.java
│   │           │   │   │   └── impl
│   │           │   │   │       ├── AttendanceRepositoryImpl.java
│   │           │   │   │       └── VacationRequestRepositoryImpl.java
│   │           │   │   ├── service
│   │           │   │   │   ├── AttendanceService.java
│   │           │   │   │   ├── LeaveRequestService.java
│   │           │   │   │   ├── TimeRecordService.java
│   │           │   │   │   └── impl
│   │           │   │   │       ├── AttendanceServiceImpl.java
│   │           │   │   │       ├── LeaveRequestServiceImpl.java
│   │           │   │   │       └── TimeRecordServiceImpl.java
│   │           │   │   └── vo
│   │           │   │       ├── AttendanceListSearchConditionVo.java
│   │           │   │       ├── AttendanceSearchConditionVo.java
│   │           │   │       ├── LeaveRequestSearchConditionVo.java
│   │           │   │       └── TimeRecordDetailVo.java
│   │           │   └── voucher
│   │           │       ├── entity
│   │           │       │   ├── PurchaseVoucher.java
│   │           │       │   └── SalesVoucher.java
│   │           │       ├── enums
│   │           │       │   ├── PurchaseVoucherStatus.java
│   │           │       │   └── SalesVoucherStatus.java
│   │           │       └── repository
│   │           │           ├── PurchaseVoucherRepository.java
│   │           │           ├── PurchaseVoucherRepositoryCustom.java
│   │           │           ├── SalesVoucherRepository.java
│   │           │           ├── SalesVoucherRepositoryCustom.java
│   │           │           └── impl
│   │           │               ├── PurchaseVoucherRepositoryImpl.java
│   │           │               └── SalesVoucherRepositoryImpl.java
│   │           ├── config
│   │           │   └── HttpClientConfig.java
│   │           └── event
│   │               ├── AlarmEvent.java
│   │               ├── AlarmSentEvent.java
│   │               ├── BaseEvent.java
│   │               ├── BusinessEvent.java
│   │               ├── CreateAuthUserEvent.java
│   │               ├── CreateAuthUserResultEvent.java
│   │               ├── CreateCustomerUserEvent.java
│   │               ├── CreateUserEvent.java
│   │               ├── MesCompleteCompletionEvent.java
│   │               ├── MesCompleteEvent.java
│   │               ├── MesStartCompletionEvent.java
│   │               ├── MesStartEvent.java
│   │               ├── PaymentEvent.java
│   │               ├── ProcessCompletedEvent.java
│   │               ├── PurchaseOrderApprovalCompletionEvent.java
│   │               ├── PurchaseOrderApprovalEvent.java
│   │               ├── QuotationUpdateCompletionEvent.java
│   │               ├── QuotationUpdateEvent.java
│   │               ├── SalesOrderStatusChangeCompletionEvent.java
│   │               ├── SalesOrderStatusChangeEvent.java
│   │               ├── ScmEvent.java
│   │               ├── ServiceCompletionEvent.java
│   │               ├── StatusEvent.java
│   │               ├── SupplierCompanyResolveRequestEvent.java
│   │               ├── SupplierCompanyResolveResultEvent.java
│   │               ├── UserEvent.java
│   │               └── alarm
│   │                   ├── AlarmType.java
│   │                   ├── LinkType.java
│   │                   ├── SourceType.java
│   │                   └── TargetType.java
│   └── resources
│       └── application.yml
└── test
    └── java
        └── org
            └── ever
                ├── _4ever_be_business
                │   ├── ApplicationTests.java
                │   └── common
                │       └── util
                │           ├── CodeGeneratorDemo.java
                │           └── CodeGeneratorTest.java
                └── sd
                    └── TestApplication.java

6-2-3 _4ever_be_gateway

src
└── main
    ├── java
    │   └── org
    │       └── ever
    │           ├── _4ever_be_gw
    │           │   ├── Application.java
    │           │   ├── alarm
    │           │   │   ├── constants
    │           │   │   │   ├── NotificationLinkType.java
    │           │   │   │   ├── NotificationSeverity.java
    │           │   │   │   ├── NotificationSource.java
    │           │   │   │   └── NotificationStatus.java
    │           │   │   ├── controller
    │           │   │   │   ├── AlarmController.java
    │           │   │   │   └── FcmTokenController.java
    │           │   │   ├── dto
    │           │   │   │   ├── request
    │           │   │   │   │   ├── AlarmServerRequestDto.java
    │           │   │   │   │   ├── NotificationFcmTokenRequestDto.java
    │           │   │   │   │   └── NotificationMarkReadRequestDto.java
    │           │   │   │   └── response
    │           │   │   │       ├── AlarmServerResponseDto.java
    │           │   │   │       ├── NotificationCountResponseDto.java
    │           │   │   │       ├── NotificationListResponseDto.java
    │           │   │   │       └── NotificationReadResponseDto.java
    │           │   │   ├── service
    │           │   │   │   ├── AlarmHttpService.java
    │           │   │   │   ├── AlarmSendService.java
    │           │   │   │   └── impl
    │           │   │   │       ├── AlarmHttpServiceImpl.java
    │           │   │   │       └── AlarmSendServiceImpl.java
    │           │   │   └── util
    │           │   │       └── AlarmDtoConverter.java
    │           │   ├── business
    │           │   │   ├── constants
    │           │   │   │   └── QuotationStatus.java
    │           │   │   ├── controller
    │           │   │   │   ├── FcmController.java
    │           │   │   │   ├── HrmController.java
    │           │   │   │   ├── ProfileController.java
    │           │   │   │   └── SdController.java
    │           │   │   ├── dto
    │           │   │   │   ├── InvoiceIdsRequestDto.java
    │           │   │   │   ├── InvoiceUpdateRequestDto.java
    │           │   │   │   ├── LeaveRequestDto.java
    │           │   │   │   ├── PayrollCompleteRequestDto.java
    │           │   │   │   ├── ProgramAssignRequestDto.java
    │           │   │   │   ├── ProgramCreateRequestDto.java
    │           │   │   │   ├── ProgramModifyRequestDto.java
    │           │   │   │   ├── StatementUpdateRequestDto.java
    │           │   │   │   ├── TimeRecordUpdateRequestDto.java
    │           │   │   │   ├── TrainingRequestDto.java
    │           │   │   │   ├── analytics
    │           │   │   │   │   ├── PeriodDto.java
    │           │   │   │   │   ├── ProductShareDto.java
    │           │   │   │   │   ├── SalesAnalyticsResponseDto.java
    │           │   │   │   │   ├── ScaleDto.java
    │           │   │   │   │   ├── TopCustomerDto.java
    │           │   │   │   │   ├── TrendPointDto.java
    │           │   │   │   │   └── TrendScaleDto.java
    │           │   │   │   ├── common
    │           │   │   │   ├── customer
    │           │   │   │   │   ├── CustomerCreateRequestDto.java
    │           │   │   │   │   ├── CustomerCreateResponseDto.java
    │           │   │   │   │   ├── CustomerDeleteResponseDto.java
    │           │   │   │   │   ├── CustomerDetailDto.java
    │           │   │   │   │   ├── CustomerListItemDto.java
    │           │   │   │   │   ├── CustomerListResponseDto.java
    │           │   │   │   │   ├── CustomerManagerDto.java
    │           │   │   │   │   ├── CustomerUpdateRequestDto.java
    │           │   │   │   │   └── CustomerUpdateResponseDto.java
    │           │   │   │   ├── employee
    │           │   │   │   │   ├── EmployeeCreateRequestDto.java
    │           │   │   │   │   └── EmployeeUpdateRequestDto.java
    │           │   │   │   ├── fcm
    │           │   │   │   │   ├── request
    │           │   │   │   │   │   ├── UpdateARInvoiceDto.java
    │           │   │   │   │   │   └── UpdateVoucherStatusDto.java
    │           │   │   │   │   └── response
    │           │   │   │   │       ├── APInvoiceDetailDto.java
    │           │   │   │   │       ├── APInvoiceItemDto.java
    │           │   │   │   │       ├── ARInvoiceDetailDto.java
    │           │   │   │   │       ├── ARInvoiceItemDto.java
    │           │   │   │   │       ├── ARInvoiceListItemDto.java
    │           │   │   │   │       ├── ARInvoiceListResponseDto.java
    │           │   │   │   │       ├── FcmPeriodStatisticsDto.java
    │           │   │   │   │       ├── FcmStatisticsDto.java
    │           │   │   │   │       ├── FcmStatisticsValueDto.java
    │           │   │   │   │       ├── PurchaseStatementConnectionDto.java
    │           │   │   │   │       ├── PurchaseStatementDetailDto.java
    │           │   │   │   │       ├── PurchaseStatementItemDto.java
    │           │   │   │   │       ├── PurchaseStatementListItemDto.java
    │           │   │   │   │       ├── PurchaseStatementListResponseDto.java
    │           │   │   │   │       ├── PurchaseStatementReferenceDto.java
    │           │   │   │   │       ├── ReferenceDto.java
    │           │   │   │   │       ├── SalesStatementConnectionDto.java
    │           │   │   │   │       ├── SalesStatementDetailDto.java
    │           │   │   │   │       ├── SalesStatementItemDto.java
    │           │   │   │   │       ├── SalesStatementListItemDto.java
    │           │   │   │   │       └── SupplyDto.java
    │           │   │   │   ├── hrm
    │           │   │   │   │   ├── CreateAuthUserResultDto.java
    │           │   │   │   │   ├── UpdateDepartmentRequestDto.java
    │           │   │   │   │   └── UpdateProfileRequestDto.java
    │           │   │   │   ├── invoice
    │           │   │   │   │   ├── InvoiceDetailDto.java
    │           │   │   │   │   ├── PurchaseInvoiceItemDto.java
    │           │   │   │   │   └── SalesInvoiceItemDto.java
    │           │   │   │   ├── order
    │           │   │   │   │   ├── CustomerSummaryDto.java
    │           │   │   │   │   ├── ManagerDto.java
    │           │   │   │   │   ├── OrderItemDto.java
    │           │   │   │   │   ├── OrderSummaryDto.java
    │           │   │   │   │   ├── SalesOrderDetailDto.java
    │           │   │   │   │   ├── SalesOrderListItemDto.java
    │           │   │   │   │   └── SalesOrderListResponseDto.java
    │           │   │   │   ├── quotation
    │           │   │   │   │   ├── ApproveQuotationResponseDto.java
    │           │   │   │   │   ├── QuotationConfirmRequestDto.java
    │           │   │   │   │   ├── QuotationConfirmResponseDto.java
    │           │   │   │   │   ├── QuotationCreateResponseDto.java
    │           │   │   │   │   ├── QuotationDetailDto.java
    │           │   │   │   │   ├── QuotationItemDto.java
    │           │   │   │   │   ├── QuotationItemRequestDto.java
    │           │   │   │   │   ├── QuotationListItemDto.java
    │           │   │   │   │   ├── QuotationListResponseDto.java
    │           │   │   │   │   └── QuotationRequestDto.java
    │           │   │   │   ├── response
    │           │   │   │   │   ├── AttendanceListItemDto.java
    │           │   │   │   │   ├── AttendanceListResponseDto.java
    │           │   │   │   │   ├── AttendanceRecordDto.java
    │           │   │   │   │   ├── AttendanceStatusDto.java
    │           │   │   │   │   ├── CustomerUserDetailDto.java
    │           │   │   │   │   ├── DepartmentDetailDto.java
    │           │   │   │   │   ├── DepartmentEmployeeDto.java
    │           │   │   │   │   ├── DepartmentListItemDto.java
    │           │   │   │   │   ├── DepartmentListResponseDto.java
    │           │   │   │   │   ├── DepartmentMemberDto.java
    │           │   │   │   │   ├── DepartmentSimpleDto.java
    │           │   │   │   │   ├── DesignatedEmployee.java
    │           │   │   │   │   ├── EmployeeBasicInfoDto.java
    │           │   │   │   │   ├── EmployeeCreateResponseDto.java
    │           │   │   │   │   ├── EmployeeDetailDto.java
    │           │   │   │   │   ├── EmployeeInfoDto.java
    │           │   │   │   │   ├── EmployeeListItemDto.java
    │           │   │   │   │   ├── EmployeeListResponseDto.java
    │           │   │   │   │   ├── EmployeeTrainingHistoryDto.java
    │           │   │   │   │   ├── EmployeeTrainingItemDto.java
    │           │   │   │   │   ├── EmployeeTrainingListItemDto.java
    │           │   │   │   │   ├── EmployeeTrainingListResponseDto.java
    │           │   │   │   │   ├── EmployeeTrainingSummaryDto.java
    │           │   │   │   │   ├── EmployeeWithTrainingDto.java
    │           │   │   │   │   ├── HRStatisticsResponseDto.java
    │           │   │   │   │   ├── HrmEmployeeBasicInfoDto.java
    │           │   │   │   │   ├── LeaveRequestEmployeeDto.java
    │           │   │   │   │   ├── LeaveRequestListItemDto.java
    │           │   │   │   │   ├── LeaveRequestListResponseDto.java
    │           │   │   │   │   ├── PageInfo.java
    │           │   │   │   │   ├── PageInfoDto.java
    │           │   │   │   │   ├── PayItemDto.java
    │           │   │   │   │   ├── PayrollListEmployeeDto.java
    │           │   │   │   │   ├── PayrollListItemDto.java
    │           │   │   │   │   ├── PayrollListPayDto.java
    │           │   │   │   │   ├── PayrollListResponseDto.java
    │           │   │   │   │   ├── PayrollStatusDto.java
    │           │   │   │   │   ├── PaystubDetailDto.java
    │           │   │   │   │   ├── PaystubEmployeeDto.java
    │           │   │   │   │   ├── PaystubPayDto.java
    │           │   │   │   │   ├── PeriodStatisticsDto.java
    │           │   │   │   │   ├── PositionDetailDto.java
    │           │   │   │   │   ├── PositionEmployeeDto.java
    │           │   │   │   │   ├── PositionListItemDto.java
    │           │   │   │   │   ├── PositionSimpleDto.java
    │           │   │   │   │   ├── ProgramHistoryItemDto.java
    │           │   │   │   │   ├── RemainingLeaveDaysDto.java
    │           │   │   │   │   ├── StatisticValueDto.java
    │           │   │   │   │   ├── TimeRecordDetailDto.java
    │           │   │   │   │   ├── TimeRecordListItemDto.java
    │           │   │   │   │   ├── TimeRecordListResponseDto.java
    │           │   │   │   │   ├── TrainingCategoryDto.java
    │           │   │   │   │   ├── TrainingCompletionStatusDto.java
    │           │   │   │   │   ├── TrainingListItemDto.java
    │           │   │   │   │   ├── TrainingListResponseDto.java
    │           │   │   │   │   ├── TrainingProgramSimpleDto.java
    │           │   │   │   │   ├── TrainingResponseDto.java
    │           │   │   │   │   ├── TrainingStatusItemDto.java
    │           │   │   │   │   ├── TrainingStatusResponseDto.java
    │           │   │   │   │   ├── UserInfoResponse.java
    │           │   │   │   │   └── UserNameResponse.java
    │           │   │   │   └── sd
    │           │   │   │       ├── InventoryCheckItemDto.java
    │           │   │   │       ├── InventoryCheckItemRequestDto.java
    │           │   │   │       ├── InventoryCheckRequestDto.java
    │           │   │   │       ├── InventoryCheckResponseDto.java
    │           │   │   │       ├── ItemPriceDto.java
    │           │   │   │       ├── request
    │           │   │   │       │   ├── ApproveOrderRequestDto.java
    │           │   │   │       │   ├── ConfirmQuotationRequestDto.java
    │           │   │   │       │   ├── CreateCustomerRequestDto.java
    │           │   │   │       │   ├── CreateQuotationRequestDto.java
    │           │   │   │       │   ├── CustomerManagerRequestDto.java
    │           │   │   │       │   ├── InventoryCheckItemDto.java
    │           │   │   │       │   ├── InventoryCheckRequestDto.java
    │           │   │   │       │   ├── QuotationItemRequestDto.java
    │           │   │   │       │   ├── RejectQuotationRequestDto.java
    │           │   │   │       │   └── UpdateCustomerRequestDto.java
    │           │   │   │       └── response
    │           │   │   │           ├── CustomerContactDto.java
    │           │   │   │           ├── CustomerDetailDto.java
    │           │   │   │           ├── CustomerListItemDto.java
    │           │   │   │           ├── CustomerListResponseDto.java
    │           │   │   │           ├── CustomerManagerDto.java
    │           │   │   │           ├── DashboardStatisticsDto.java
    │           │   │   │           ├── InventoryCheckResponseDto.java
    │           │   │   │           ├── InventoryCheckResultItemDto.java
    │           │   │   │           ├── OrderCustomerDto.java
    │           │   │   │           ├── OrderDetailDto.java
    │           │   │   │           ├── OrderItemDto.java
    │           │   │   │           ├── PageInfo.java
    │           │   │   │           ├── PagedQuotationResponse.java
    │           │   │   │           ├── PeriodInfoDto.java
    │           │   │   │           ├── PeriodStatisticsDto.java
    │           │   │   │           ├── ProductShareDto.java
    │           │   │   │           ├── QuotationDetailDto.java
    │           │   │   │           ├── QuotationItemDto.java
    │           │   │   │           ├── QuotationListItemDto.java
    │           │   │   │           ├── QuotationListResponseDto.java
    │           │   │   │           ├── SalesAnalyticsDto.java
    │           │   │   │           ├── SalesOrderDetailResponseDto.java
    │           │   │   │           ├── SalesOrderListItemDto.java
    │           │   │   │           ├── SalesOrderListResponseDto.java
    │           │   │   │           ├── SalesStatisticsDto.java
    │           │   │   │           ├── StatisticsValueDto.java
    │           │   │   │           ├── TopCustomerDto.java
    │           │   │   │           ├── TrendDto.java
    │           │   │   │           └── TrendScaleDto.java
    │           │   │   ├── enums
    │           │   │   │   ├── AttendanceStatus.java
    │           │   │   │   ├── Gender.java
    │           │   │   │   ├── LeaveRequestStatus.java
    │           │   │   │   ├── LeaveType.java
    │           │   │   │   ├── PayrollStatus.java
    │           │   │   │   ├── TrainingCategory.java
    │           │   │   │   ├── TrainingCompletionStatus.java
    │           │   │   │   ├── TrainingStatus.java
    │           │   │   │   ├── UserStatus.java
    │           │   │   │   ├── VacationStatus.java
    │           │   │   │   └── VacationType.java
    │           │   │   ├── impl
    │           │   │   │   ├── BusinessServiceImpl.java
    │           │   │   │   ├── HrmServiceImpl.java
    │           │   │   │   └── SdServiceImpl.java
    │           │   │   └── service
    │           │   │       ├── FcmHttpService.java
    │           │   │       ├── HrmHttpService.java
    │           │   │       ├── HrmService.java
    │           │   │       ├── SdHttpService.java
    │           │   │       ├── SdService.java
    │           │   │       └── impl
    │           │   │           ├── FcmHttpServiceImpl.java
    │           │   │           ├── HrmHttpServiceImpl.java
    │           │   │           └── SdHttpServiceImpl.java
    │           │   ├── common
    │           │   │   ├── dto
    │           │   │   │   ├── ManagerDto.java
    │           │   │   │   ├── PageDto.java
    │           │   │   │   ├── RemoteApiResponse.java
    │           │   │   │   ├── pagable
    │           │   │   │   │   └── PageResponseDto.java
    │           │   │   │   ├── stats
    │           │   │   │   │   ├── StatsMetricsDto.java
    │           │   │   │   │   └── StatsResponseDto.java
    │           │   │   │   └── validation
    │           │   │   │       ├── AllowedValues.java
    │           │   │   │       ├── AllowedValuesValidator.java
    │           │   │   │       ├── UuidV7Validator.java
    │           │   │   │       └── ValidUuidV7.java
    │           │   │   ├── exception
    │           │   │   │   ├── BusinessException.java
    │           │   │   │   ├── DatabaseException.java
    │           │   │   │   ├── ErrorCode.java
    │           │   │   │   ├── RemoteApiException.java
    │           │   │   │   ├── ValidationException.java
    │           │   │   │   └── handler
    │           │   │   │       └── GlobalExceptionHandler.java
    │           │   │   ├── response
    │           │   │   │   └── ApiResponse.java
    │           │   │   └── util
    │           │   │       ├── PageResponseUtils.java
    │           │   │       └── UuidV7.java
    │           │   ├── config
    │           │   │   ├── application
    │           │   │   │   ├── AppConfig.java
    │           │   │   │   ├── SchedulingConfig.java
    │           │   │   │   ├── ServiceMapConfig.java
    │           │   │   │   └── ServiceProperties.java
    │           │   │   ├── security
    │           │   │   │   ├── SecurityConfig.java
    │           │   │   │   ├── converter
    │           │   │   │   │   └── EverJwtAuthenticationConverter.java
    │           │   │   │   └── principal
    │           │   │   │       ├── EverJwtAuthenticationToken.java
    │           │   │   │       └── EverUserPrincipal.java
    │           │   │   ├── swagger
    │           │   │   │   └── SwaggerConfig.java
    │           │   │   └── webclient
    │           │   │       ├── ApiClientKey.java
    │           │   │       ├── ApiProperties.java
    │           │   │       ├── WebClientConfig.java
    │           │   │       └── WebClientProvider.java
    │           │   ├── dashboard
    │           │   │   ├── dto
    │           │   │   │   └── response
    │           │   │   │       ├── DashboardPeriodStatisticsDto.java
    │           │   │   │       ├── DashboardStatisticsResponseDto.java
    │           │   │   │       └── DashboardValueDto.java
    │           │   │   └── service
    │           │   │       ├── DashboardHttpService.java
    │           │   │       ├── DashboardService.java
    │           │   │       └── impl
    │           │   │           ├── DashboardHttpServiceImpl.java
    │           │   │           └── DashboardServiceImpl.java
    │           │   ├── facade
    │           │   │   ├── DashboardController.java
    │           │   │   └── dto
    │           │   │       ├── DashboardWorkflowItemDto.java
    │           │   │       ├── DashboardWorkflowResponseDto.java
    │           │   │       └── DashboardWorkflowTabDto.java
    │           │   ├── filter
    │           │   │   ├── LoggingFilter.java
    │           │   │   └── SseHttpHeaderFilter.java
    │           │   ├── infrastructure
    │           │   │   ├── kafka
    │           │   │   │   ├── config
    │           │   │   │   │   ├── KafkaConfig.java
    │           │   │   │   │   ├── KafkaFilterConfig.java
    │           │   │   │   │   └── KafkaTopicConfig.java
    │           │   │   │   ├── consumer
    │           │   │   │   │   ├── AlarmTopicEventListener.java
    │           │   │   │   │   ├── MultiTopicEventListener.java
    │           │   │   │   │   └── handler
    │           │   │   │   │       ├── MultiTopicEventHandler.java
    │           │   │   │   │       └── impl
    │           │   │   │   │           └── MultiTopicEventHandlerImpl.java
    │           │   │   │   ├── handler
    │           │   │   │   │   ├── DeadLetterQueueHandler.java
    │           │   │   │   │   ├── KafkaErrorHandler.java
    │           │   │   │   │   └── impl
    │           │   │   │   │       └── DeadLetterQueueHandlerImpl.java
    │           │   │   │   └── producer
    │           │   │   │       ├── KafkaProducerService.java
    │           │   │   │       └── impl
    │           │   │   │           └── KafkaProducerServiceImpl.java
    │           │   │   └── redis
    │           │   │       ├── config
    │           │   │       │   └── RedisConfig.java
    │           │   │       └── service
    │           │   │           ├── RedisService.java
    │           │   │           └── impl
    │           │   │               └── RedisServiceImpl.java
    │           │   ├── mockdata
    │           │   │   └── scmpp
    │           │   │       ├── controller
    │           │   │       │   ├── ImController.java
    │           │   │       │   ├── MmController.java
    │           │   │       │   └── PpController.java
    │           │   │       ├── dto
    │           │   │       │   ├── DueDatePreviewDto.java
    │           │   │       │   ├── ItemDetailDto.java
    │           │   │       │   ├── PendingPurchaseOrderDto.java
    │           │   │       │   ├── PlannedOrderDetailDto.java
    │           │   │       │   ├── PlannedOrderListItemDto.java
    │           │   │       │   ├── ProductionOrderDto.java
    │           │   │       │   ├── ProductionSalesOrderDto.java
    │           │   │       │   ├── QuotationSimulationDto.java
    │           │   │       │   ├── ReadyToShipDetailDto.java
    │           │   │       │   ├── ReadyToShipOrderDto.java
    │           │   │       │   ├── ReadyToShipSalesOrderDto.java
    │           │   │       │   ├── ReceivedPurchaseOrderDto.java
    │           │   │       │   ├── SalesOrderStatusDto.java
    │           │   │       │   ├── bom
    │           │   │       │   │   ├── BomCreateRequestDto.java
    │           │   │       │   │   ├── BomDetailDto.java
    │           │   │       │   │   └── BomListItemDto.java
    │           │   │       │   ├── inventory
    │           │   │       │   │   ├── AddInventoryItemRequestDto.java
    │           │   │       │   │   ├── CreateStockTransferDto.java
    │           │   │       │   │   ├── CreateWarehouseDto.java
    │           │   │       │   │   ├── InventoryItemDto.java
    │           │   │       │   │   ├── ProductMultipleResponseDto.java
    │           │   │       │   │   ├── ShortageItemDetailDto.java
    │           │   │       │   │   ├── ShortageItemPreviewDto.java
    │           │   │       │   │   ├── StockTransferDetailDto.java
    │           │   │       │   │   └── StockTransferDto.java
    │           │   │       │   ├── mes
    │           │   │       │   │   ├── MesWorkOrderDetailDto.java
    │           │   │       │   │   ├── MesWorkOrderDto.java
    │           │   │       │   │   └── MesWorkOrderSummaryDto.java
    │           │   │       │   ├── mps
    │           │   │       │   │   └── MpsProductPlanDto.java
    │           │   │       │   ├── mrp
    │           │   │       │   │   ├── MrpOrderDto.java
    │           │   │       │   │   ├── MrpRequestBodyDto.java
    │           │   │       │   │   └── MrpRequestSummaryDto.java
    │           │   │       │   ├── po
    │           │   │       │   │   ├── MmPurchaseOrderRejectRequestDto.java
    │           │   │       │   │   ├── PoDetailDto.java
    │           │   │       │   │   └── PoItemDto.java
    │           │   │       │   ├── pr
    │           │   │       │   │   ├── MmPurchaseRequisitionCreateRequestDto.java
    │           │   │       │   │   ├── MmPurchaseRequisitionRejectRequestDto.java
    │           │   │       │   │   └── MmPurchaseRequisitionUpdateRequestDto.java
    │           │   │       │   └── warehouse
    │           │   │       │       ├── UpdateWarehouseRequestDto.java
    │           │   │       │       ├── WarehouseDetailDto.java
    │           │   │       │       ├── WarehouseDto.java
    │           │   │       │       └── WarehouseStatisticDto.java
    │           │   │       ├── impl
    │           │   │       │   └── MmServiceImpl.java
    │           │   │       └── service
    │           │   │           ├── MmService.java
    │           │   │           ├── MmStatisticsService.java
    │           │   │           └── MmStatisticsServiceImpl.java
    │           │   ├── scm
    │           │   │   ├── PeriodStatDto.java
    │           │   │   ├── im
    │           │   │   │   ├── controller
    │           │   │   │   │   ├── ImController.java
    │           │   │   │   │   └── OrderController.java
    │           │   │   │   ├── dto
    │           │   │   │   │   ├── AddInventoryItemRequest.java
    │           │   │   │   │   ├── SalesOrderStatusChangeRequestDto.java
    │           │   │   │   │   ├── StockTransferRequestDto.java
    │           │   │   │   │   ├── WarehouseCreateRequestDto.java
    │           │   │   │   │   └── WarehouseUpdateRequestDto.java
    │           │   │   │   └── service
    │           │   │   │       ├── ImHttpService.java
    │           │   │   │       └── impl
    │           │   │   │           └── ImHttpServiceImpl.java
    │           │   │   ├── mm
    │           │   │   │   ├── controller
    │           │   │   │   │   └── MmController.java
    │           │   │   │   ├── dto
    │           │   │   │   │   ├── ItemInfoRequest.java
    │           │   │   │   │   ├── MaterialItemsDto.java
    │           │   │   │   │   ├── MmSupplierDetailResponseDto.java
    │           │   │   │   │   ├── MmSupplierListResponseDto.java
    │           │   │   │   │   ├── MmSupplierUpdateRequestDto.java
    │           │   │   │   │   ├── PurchaseOrderRejectRequestDto.java
    │           │   │   │   │   ├── PurchaseRequisitionCreateRequestDto.java
    │           │   │   │   │   ├── PurchaseRequisitionRejectRequestDto.java
    │           │   │   │   │   ├── StockPurchaseRequestDto.java
    │           │   │   │   │   ├── SupplierCreateRequestDto.java
    │           │   │   │   │   ├── SupplierInfoDto.java
    │           │   │   │   │   └── SupplierUpdateRequestDto.java
    │           │   │   │   ├── impl
    │           │   │   │   │   └── MmServiceImpl.java
    │           │   │   │   └── service
    │           │   │   │       ├── MmHttpService.java
    │           │   │   │       ├── MmService.java
    │           │   │   │       └── impl
    │           │   │   │           └── MmHttpServiceImpl.java
    │           │   │   └── pp
    │           │   │       ├── PpHttpService.java
    │           │   │       ├── controller
    │           │   │       │   └── PpController.java
    │           │   │       ├── dto
    │           │   │       │   ├── BomCreateRequestDto.java
    │           │   │       │   ├── MrpRunConvertRequestDto.java
    │           │   │       │   ├── QuotationConfirmRequestDto.java
    │           │   │       │   └── QuotationSimulateRequestDto.java
    │           │   │       └── service
    │           │   │           └── impl
    │           │   │               └── PpHttpServiceImpl.java
    │           │   └── user
    │           │       ├── client
    │           │       │   └── UserProfileRemoteClient.java
    │           │       ├── controller
    │           │       │   └── UserInfoController.java
    │           │       ├── dto
    │           │       │   ├── CustomerUserProfileResponse.java
    │           │       │   ├── InternalUserProfileResponse.java
    │           │       │   ├── SupplierUserProfileResponse.java
    │           │       │   └── UserInfoResponse.java
    │           │       └── service
    │           │           └── UserInfoService.java
    │           └── event
    │               ├── AlarmEvent.java
    │               ├── AlarmSentEvent.java
    │               ├── BaseEvent.java
    │               ├── BusinessEvent.java
    │               ├── ScmEvent.java
    │               ├── StatusEvent.java
    │               ├── UserEvent.java
    │               └── alarm
    │                   ├── AlarmType.java
    │                   ├── LinkType.java
    │                   └── TargetType.java
    └── resources
        ├── application-prod.yml
        └── application.yml

6-2-4 _4ever_be_scm

src
├── main
│   ├── java
│   │   └── org
│   │       └── ever
│   │           ├── _4ever_be_scm
│   │           │   ├── Application.java
│   │           │   ├── common
│   │           │   │   ├── async
│   │           │   │   │   ├── AsyncResultManager.java
│   │           │   │   │   └── GenericAsyncResultManager.java
│   │           │   │   ├── audit
│   │           │   │   │   ├── Auditable.java
│   │           │   │   │   ├── ChangeType.java
│   │           │   │   │   ├── EntityAuditListener.java
│   │           │   │   │   ├── EntityChange.java
│   │           │   │   │   ├── TransactionChanges.java
│   │           │   │   │   └── TransactionEntityChangeCollector.java
│   │           │   │   ├── entity
│   │           │   │   │   ├── TimeStamp.java
│   │           │   │   │   └── TransactionChangeLog.java
│   │           │   │   ├── exception
│   │           │   │   │   ├── BusinessException.java
│   │           │   │   │   ├── DatabaseException.java
│   │           │   │   │   ├── ErrorCode.java
│   │           │   │   │   ├── ScmException.java
│   │           │   │   │   └── handler
│   │           │   │   │       └── GlobalExceptionHandler.java
│   │           │   │   ├── jpa
│   │           │   │   │   └── converter
│   │           │   │   │       └── DurationToSecondsConverter.java
│   │           │   │   ├── repository
│   │           │   │   │   └── TransactionChangeLogRepository.java
│   │           │   │   ├── response
│   │           │   │   │   └── ApiResponse.java
│   │           │   │   ├── saga
│   │           │   │   │   ├── CompensationHandler.java
│   │           │   │   │   ├── SagaCompensationService.java
│   │           │   │   │   ├── SagaTransactionContext.java
│   │           │   │   │   └── SagaTransactionManager.java
│   │           │   │   └── service
│   │           │   │       ├── DateRangeCalculator.java
│   │           │   │       └── LogCleanupService.java
│   │           │   ├── config
│   │           │   │   ├── ProductInitializer.java
│   │           │   │   ├── RestClientConfig.java
│   │           │   │   ├── SupplierUserInitializer.java
│   │           │   │   ├── application
│   │           │   │   │   ├── AppConfig.java
│   │           │   │   │   └── SchedulingConfig.java
│   │           │   │   ├── database
│   │           │   │   │   └── DatabaseConfig.java
│   │           │   │   └── swagger
│   │           │   │       └── SwaggerConfig.java
│   │           │   ├── filter
│   │           │   │   ├── AsyncRequestLoggingListener.java
│   │           │   │   └── LoggingFilter.java
│   │           │   ├── infrastructure
│   │           │   │   ├── kafka
│   │           │   │   │   ├── config
│   │           │   │   │   │   ├── KafkaConfig.java
│   │           │   │   │   │   ├── KafkaFilterConfig.java
│   │           │   │   │   │   └── KafkaTopicConfig.java
│   │           │   │   │   ├── consumer
│   │           │   │   │   │   ├── MesCompleteCompletionListener.java
│   │           │   │   │   │   ├── MesStartCompletionListener.java
│   │           │   │   │   │   ├── MultiTopicEventListener.java
│   │           │   │   │   │   ├── PurchaseOrderApprovalCompletionListener.java
│   │           │   │   │   │   ├── QuotationUpdateCompletionListener.java
│   │           │   │   │   │   ├── SalesOrderStatusChangeCompletionListener.java
│   │           │   │   │   │   ├── SupplierUserResultListener.java
│   │           │   │   │   │   └── handler
│   │           │   │   │   │       ├── MultiTopicEventHandler.java
│   │           │   │   │   │       └── impl
│   │           │   │   │   │           └── MultiTopicEventHandlerImpl.java
│   │           │   │   │   ├── event
│   │           │   │   │   │   ├── AlarmEvent.java
│   │           │   │   │   │   ├── BaseEvent.java
│   │           │   │   │   │   ├── BusinessEvent.java
│   │           │   │   │   │   ├── ScmEvent.java
│   │           │   │   │   │   └── UserEvent.java
│   │           │   │   │   ├── handler
│   │           │   │   │   │   ├── DeadLetterQueueHandler.java
│   │           │   │   │   │   ├── KafkaErrorHandler.java
│   │           │   │   │   │   └── impl
│   │           │   │   │   │       └── DeadLetterQueueHandlerImpl.java
│   │           │   │   │   └── producer
│   │           │   │   │       ├── KafkaProducerService.java
│   │           │   │   │       └── impl
│   │           │   │   │           └── KafkaProducerServiceImpl.java
│   │           │   │   └── redis
│   │           │   │       ├── config
│   │           │   │       │   ├── RedisConfig.java
│   │           │   │       │   └── RedissonConfig.java
│   │           │   │       ├── dto
│   │           │   │       │   └── DeliveryCompletionTask.java
│   │           │   │       └── service
│   │           │   │           ├── DeliverySchedulerService.java
│   │           │   │           ├── RedisService.java
│   │           │   │           └── impl
│   │           │   │               ├── DeliverySchedulerServiceImpl.java
│   │           │   │               └── RedisServiceImpl.java
│   │           │   └── scm
│   │           │       ├── external
│   │           │       │   ├── controller
│   │           │       │   │   └── ExternalApiController.java
│   │           │       │   ├── dto
│   │           │       │   │   ├── ProductMultipleRequestDto.java
│   │           │       │   │   ├── ProductMultipleResponseDto.java
│   │           │       │   │   ├── ProductOrderIdsRequestDto.java
│   │           │       │   │   ├── ProductOrderInfoDto.java
│   │           │       │   │   ├── ProductOrderItemResponseDto.java
│   │           │       │   │   ├── ProductOrderRequestDto.java
│   │           │       │   │   ├── StockCheckRequestDto.java
│   │           │       │   │   ├── StockCheckResponseDto.java
│   │           │       │   │   ├── SupplierCompanyIdDto.java
│   │           │       │   │   ├── SupplierCompanyMultipleRequestDto.java
│   │           │       │   │   ├── SupplierCompanyMultipleResponseDto.java
│   │           │       │   │   ├── SupplierCompanySingleRequestDto.java
│   │           │       │   │   ├── SupplierCompanySingleResponseDto.java
│   │           │       │   │   └── SupplierUserIdDto.java
│   │           │       │   └── service
│   │           │       │       ├── ExternalApiService.java
│   │           │       │       └── impl
│   │           │       │           └── ExternalApiServiceImpl.java
│   │           │       ├── iv
│   │           │       │   ├── controller
│   │           │       │   │   ├── InventoryController.java
│   │           │       │   │   ├── IvStaticController.java
│   │           │       │   │   ├── PurchaseOrdersController.java
│   │           │       │   │   ├── SalesOrderController.java
│   │           │       │   │   ├── StockTransferController.java
│   │           │       │   │   └── WarehouseController.java
│   │           │       │   ├── dto
│   │           │       │   │   ├── InventoryItemDetailDto.java
│   │           │       │   │   ├── InventoryItemDto.java
│   │           │       │   │   ├── PageResponseDto.java
│   │           │       │   │   ├── PagedResponseDto.java
│   │           │       │   │   ├── PurchaseOrderDto.java
│   │           │       │   │   ├── SalesOrderDetailDto.java
│   │           │       │   │   ├── SalesOrderDto.java
│   │           │       │   │   ├── SalesOrderStatusChangeRequestDto.java
│   │           │       │   │   ├── ShortageItemDto.java
│   │           │       │   │   ├── ShortageItemPreviewDto.java
│   │           │       │   │   ├── StockDeliveryRequestDto.java
│   │           │       │   │   ├── StockMovementDto.java
│   │           │       │   │   ├── StockTransferDto.java
│   │           │       │   │   ├── StockTransferRequestDto.java
│   │           │       │   │   ├── WarehouseCreateRequestDto.java
│   │           │       │   │   ├── WarehouseDetailDto.java
│   │           │       │   │   ├── WarehouseDropdownResponseDto.java
│   │           │       │   │   ├── WarehouseDto.java
│   │           │       │   │   ├── WarehouseUpdateRequestDto.java
│   │           │       │   │   ├── request
│   │           │       │   │   │   ├── AddInventoryItemRequest.java
│   │           │       │   │   │   └── ItemInfoRequest.java
│   │           │       │   │   └── response
│   │           │       │   │       ├── ImStatisticPeriodDto.java
│   │           │       │   │       ├── ImStatisticResponseDto.java
│   │           │       │   │       ├── ItemInfoResponseDto.java
│   │           │       │   │       ├── ItemToggleResponseDto.java
│   │           │       │   │       ├── ShortageStatisticPeriodDto.java
│   │           │       │   │       ├── ShortageStatisticResponseDto.java
│   │           │       │   │       ├── StatisticValueDto.java
│   │           │       │   │       ├── WarehouseStatisticPeriodDto.java
│   │           │       │   │       └── WarehouseStatisticResponseDto.java
│   │           │       │   ├── entity
│   │           │       │   │   ├── Product.java
│   │           │       │   │   ├── ProductStock.java
│   │           │       │   │   ├── ProductStockLog.java
│   │           │       │   │   ├── SupplierCompany.java
│   │           │       │   │   ├── SupplierUser.java
│   │           │       │   │   └── Warehouse.java
│   │           │       │   ├── integration
│   │           │       │   │   ├── adapter
│   │           │       │   │   │   └── SdOrderServiceAdapter.java
│   │           │       │   │   ├── dto
│   │           │       │   │   │   ├── SdApiResponse.java
│   │           │       │   │   │   ├── SdOrderDetailResponseDto.java
│   │           │       │   │   │   ├── SdOrderDto.java
│   │           │       │   │   │   └── SdOrderListResponseDto.java
│   │           │       │   │   └── port
│   │           │       │   │       └── SdOrderServicePort.java
│   │           │       │   ├── repository
│   │           │       │   │   ├── ProductRepository.java
│   │           │       │   │   ├── ProductStockLogRepository.java
│   │           │       │   │   ├── ProductStockRepository.java
│   │           │       │   │   ├── SupplierCompanyRepository.java
│   │           │       │   │   ├── SupplierUserRepository.java
│   │           │       │   │   └── WarehouseRepository.java
│   │           │       │   ├── service
│   │           │       │   │   ├── InventoryService.java
│   │           │       │   │   ├── IvStatisticService.java
│   │           │       │   │   ├── PurchaseOrdersService.java
│   │           │       │   │   ├── SalesOrderService.java
│   │           │       │   │   ├── StockReservationService.java
│   │           │       │   │   ├── StockTransferService.java
│   │           │       │   │   ├── WarehouseService.java
│   │           │       │   │   └── impl
│   │           │       │   │       ├── InventoryServiceImpl.java
│   │           │       │   │       ├── IvStatisticServiceImpl.java
│   │           │       │   │       ├── PurchaseOrdersServiceImpl.java
│   │           │       │   │       ├── SalesOrderServiceImpl.java
│   │           │       │   │       ├── StockReservationServiceImpl.java
│   │           │       │   │       ├── StockTransferServiceImpl.java
│   │           │       │   │       └── WarehouseServiceImpl.java
│   │           │       │   └── vo
│   │           │       │       ├── InventoryFilterVo.java
│   │           │       │       └── StockMovementVo.java
│   │           │       ├── mm
│   │           │       │   ├── controller
│   │           │       │   │   ├── MMStatisticsController.java
│   │           │       │   │   ├── PurchaseOrderController.java
│   │           │       │   │   ├── PurchaseRequisitionController.java
│   │           │       │   │   ├── StockPurchaseController.java
│   │           │       │   │   ├── SupplierController.java
│   │           │       │   │   └── SupplierUserController.java
│   │           │       │   ├── dto
│   │           │       │   │   ├── MMStatisticsResponseDto.java
│   │           │       │   │   ├── PurchaseOrderDetailResponseDto.java
│   │           │       │   │   ├── PurchaseOrderListResponseDto.java
│   │           │       │   │   ├── PurchaseOrderRejectRequestDto.java
│   │           │       │   │   ├── PurchaseRequisitionCreateRequestDto.java
│   │           │       │   │   ├── PurchaseRequisitionDetailResponseDto.java
│   │           │       │   │   ├── PurchaseRequisitionListResponseDto.java
│   │           │       │   │   ├── PurchaseRequisitionRejectRequestDto.java
│   │           │       │   │   ├── StockPurchaseRequestDto.java
│   │           │       │   │   ├── SupplierDetailResponseDto.java
│   │           │       │   │   ├── SupplierListResponseDto.java
│   │           │       │   │   ├── SupplierOrderStatisticsResponseDto.java
│   │           │       │   │   ├── SupplierProfileResponseDto.java
│   │           │       │   │   ├── ToggleCodeLabelDto.java
│   │           │       │   │   ├── UserNameResponseDto.java
│   │           │       │   │   └── supplier
│   │           │       │   │       ├── SupplierCreateRequestDto.java
│   │           │       │   │       └── SupplierUpdateRequestDto.java
│   │           │       │   ├── entity
│   │           │       │   │   ├── ProductOrder.java
│   │           │       │   │   ├── ProductOrderApproval.java
│   │           │       │   │   ├── ProductOrderItem.java
│   │           │       │   │   ├── ProductOrderShipment.java
│   │           │       │   │   ├── ProductRequest.java
│   │           │       │   │   ├── ProductRequestApproval.java
│   │           │       │   │   └── ProductRequestItem.java
│   │           │       │   ├── integration
│   │           │       │   │   ├── SupplierCompanyKafkaAdapter.java
│   │           │       │   │   ├── adapter
│   │           │       │   │   │   ├── InternalUserServiceAdapter.java
│   │           │       │   │   │   └── KafkaSupplierUserServiceAdapter.java
│   │           │       │   │   ├── dto
│   │           │       │   │   │   └── InternalUserResponseDto.java
│   │           │       │   │   └── port
│   │           │       │   │       ├── InternalUserServicePort.java
│   │           │       │   │       └── SupplierUserServicePort.java
│   │           │       │   ├── repository
│   │           │       │   │   ├── ProductOrderApprovalRepository.java
│   │           │       │   │   ├── ProductOrderItemRepository.java
│   │           │       │   │   ├── ProductOrderRepository.java
│   │           │       │   │   ├── ProductOrderShipmentRepository.java
│   │           │       │   │   ├── ProductRequestApprovalRepository.java
│   │           │       │   │   ├── ProductRequestItemRepository.java
│   │           │       │   │   └── ProductRequestRepository.java
│   │           │       │   ├── service
│   │           │       │   │   ├── MMStatisticsService.java
│   │           │       │   │   ├── PurchaseOrderService.java
│   │           │       │   │   ├── PurchaseRequisitionService.java
│   │           │       │   │   ├── StockPurchaseService.java
│   │           │       │   │   ├── SupplierService.java
│   │           │       │   │   ├── impl
│   │           │       │   │   │   ├── MMStatisticsServiceImpl.java
│   │           │       │   │   │   ├── PurchaseOrderServiceImpl.java
│   │           │       │   │   │   ├── PurchaseRequisitionServiceImpl.java
│   │           │       │   │   │   ├── StockPurchaseServiceImpl.java
│   │           │       │   │   │   └── SupplierServiceImpl.java
│   │           │       │   │   └── model
│   │           │       │   │       └── SupplierCreationResult.java
│   │           │       │   └── vo
│   │           │       │       ├── PurchaseOrderSearchVo.java
│   │           │       │       ├── PurchaseRequisitionCreateVo.java
│   │           │       │       ├── PurchaseRequisitionSearchVo.java
│   │           │       │       └── SupplierSearchVo.java
│   │           │       └── pp
│   │           │           ├── config
│   │           │           │   └── OperationInitializer.java
│   │           │           ├── controller
│   │           │           │   ├── BomController.java
│   │           │           │   ├── DashboardController.java
│   │           │           │   ├── MesController.java
│   │           │           │   ├── MrpController.java
│   │           │           │   ├── PpStatisticsController.java
│   │           │           │   ├── ProductionDashboardController.java
│   │           │           │   └── QuotationController.java
│   │           │           ├── dto
│   │           │           │   ├── BomCreateRequestDto.java
│   │           │           │   ├── BomDetailResponseDto.java
│   │           │           │   ├── BomListResponseDto.java
│   │           │           │   ├── MesDetailResponseDto.java
│   │           │           │   ├── MesQueryResponseDto.java
│   │           │           │   ├── MpsPreviewResponseDto.java
│   │           │           │   ├── MpsQueryResponseDto.java
│   │           │           │   ├── MrpQueryResponseDto.java
│   │           │           │   ├── MrpRunConvertRequestDto.java
│   │           │           │   ├── MrpRunQueryResponseDto.java
│   │           │           │   ├── PpStatisticPeriodDto.java
│   │           │           │   ├── PpStatisticsResponseDto.java
│   │           │           │   ├── ProductDetailResponseDto.java
│   │           │           │   ├── ProductMapResponseDto.java
│   │           │           │   ├── QuotationConfirmRequestDto.java
│   │           │           │   ├── QuotationGroupListResponseDto.java
│   │           │           │   ├── QuotationSimulateRequestDto.java
│   │           │           │   └── QuotationSimulateResponseDto.java
│   │           │           ├── entity
│   │           │           │   ├── Bom.java
│   │           │           │   ├── BomExplosion.java
│   │           │           │   ├── BomItem.java
│   │           │           │   ├── Mes.java
│   │           │           │   ├── MesOperationLog.java
│   │           │           │   ├── Mps.java
│   │           │           │   ├── MpsDetail.java
│   │           │           │   ├── Mrp.java
│   │           │           │   ├── MrpRun.java
│   │           │           │   ├── Operation.java
│   │           │           │   └── Routing.java
│   │           │           ├── integration
│   │           │           │   ├── adapter
│   │           │           │   │   └── BusinessQuotationServiceAdapter.java
│   │           │           │   ├── dto
│   │           │           │   │   ├── BusinessApiResponse.java
│   │           │           │   │   ├── BusinessQuotationDto.java
│   │           │           │   │   └── BusinessQuotationListResponseDto.java
│   │           │           │   └── port
│   │           │           │       └── BusinessQuotationServicePort.java
│   │           │           ├── repository
│   │           │           │   ├── BomExplosionRepository.java
│   │           │           │   ├── BomItemRepository.java
│   │           │           │   ├── BomRepository.java
│   │           │           │   ├── MesOperationLogRepository.java
│   │           │           │   ├── MesRepository.java
│   │           │           │   ├── MpsDetailRepository.java
│   │           │           │   ├── MpsRepository.java
│   │           │           │   ├── MrpRepository.java
│   │           │           │   ├── MrpRunRepository.java
│   │           │           │   ├── OperationRepository.java
│   │           │           │   └── RoutingRepository.java
│   │           │           ├── service
│   │           │           │   ├── BomService.java
│   │           │           │   ├── DashboardService.java
│   │           │           │   ├── MesService.java
│   │           │           │   ├── MrpService.java
│   │           │           │   ├── PpStatisticsService.java
│   │           │           │   ├── QuotationService.java
│   │           │           │   ├── dto
│   │           │           │   │   └── DashboardWorkflowItemDto.java
│   │           │           │   └── impl
│   │           │           │       ├── BomServiceImpl.java
│   │           │           │       ├── DashboardServiceImpl.java
│   │           │           │       ├── MesServiceImpl.java
│   │           │           │       ├── MrpServiceImpl.java
│   │           │           │       ├── PpStatisticsServiceImpl.java
│   │           │           │       └── QuotationServiceImpl.java
│   │           │           └── util
│   │           │               └── WeekCalculator.java
│   │           └── event
│   │               ├── CreateAuthUserResultEvent.java
│   │               ├── CreateSupplierUserEvent.java
│   │               ├── MesCompleteCompletionEvent.java
│   │               ├── MesCompleteEvent.java
│   │               ├── MesStartCompletionEvent.java
│   │               ├── MesStartEvent.java
│   │               ├── PurchaseOrderApprovalCompletionEvent.java
│   │               ├── PurchaseOrderApprovalEvent.java
│   │               ├── QuotationUpdateCompletionEvent.java
│   │               ├── QuotationUpdateEvent.java
│   │               ├── SalesOrderStatusChangeCompletionEvent.java
│   │               ├── SalesOrderStatusChangeEvent.java
│   │               ├── SupplierCompanyResolveRequestEvent.java
│   │               └── SupplierCompanyResolveResultEvent.java
│   └── resources
│       └── application.yml
└── test
    └── java
        └── org
            └── ever
                └── _4ever_be_scm
                    └── ApplicationTests.java

6-2-5 _4ever_be_alarm

src
├── main
│   ├── java
│   │   └── org
│   │       └── ever
│   │           ├── _4ever_be_alarm
│   │           │   ├── Application.java
│   │           │   ├── alarm
│   │           │   │   ├── controller
│   │           │   │   │   └── AlarmController.java
│   │           │   │   ├── dto
│   │           │   │   │   ├── request
│   │           │   │   │   │   └── AlarmRequestDto.java
│   │           │   │   │   └── response
│   │           │   │   │       └── AlarmResponseDto.java
│   │           │   │   ├── service
│   │           │   │   │   ├── AlarmService.java
│   │           │   │   │   └── impl
│   │           │   │   │       └── AlarmServiceImpl.java
│   │           │   │   └── vo
│   │           │   │       └── AlarmRequestVo.java
│   │           │   ├── common
│   │           │   │   ├── async
│   │           │   │   │   ├── AsyncResultManager.java
│   │           │   │   │   └── GenericAsyncResultManager.java
│   │           │   │   ├── audit
│   │           │   │   │   ├── Auditable.java
│   │           │   │   │   ├── ChangeType.java
│   │           │   │   │   ├── EntityAuditListener.java
│   │           │   │   │   ├── EntityChange.java
│   │           │   │   │   ├── TransactionChanges.java
│   │           │   │   │   └── TransactionEntityChangeCollector.java
│   │           │   │   ├── entity
│   │           │   │   │   ├── TimeStamp.java
│   │           │   │   │   └── TransactionChangeLog.java
│   │           │   │   ├── exception
│   │           │   │   │   ├── AlarmException.java
│   │           │   │   │   ├── BusinessException.java
│   │           │   │   │   ├── DatabaseException.java
│   │           │   │   │   ├── ErrorCode.java
│   │           │   │   │   └── handler
│   │           │   │   │       └── GlobalExceptionHandler.java
│   │           │   │   ├── repository
│   │           │   │   │   └── TransactionChangeLogRepository.java
│   │           │   │   ├── response
│   │           │   │   │   ├── ApiResponse.java
│   │           │   │   │   ├── PageDto.java
│   │           │   │   │   └── PageResponseDto.java
│   │           │   │   ├── saga
│   │           │   │   │   ├── CompensationHandler.java
│   │           │   │   │   ├── SagaCompensationService.java
│   │           │   │   │   ├── SagaTransactionContext.java
│   │           │   │   │   └── SagaTransactionManager.java
│   │           │   │   ├── service
│   │           │   │   │   └── LogCleanupService.java
│   │           │   │   ├── util
│   │           │   │   │   ├── PageResponseUtils.java
│   │           │   │   │   └── UuidGenerator.java
│   │           │   │   └── validation
│   │           │   │       ├── AllowedValues.java
│   │           │   │       ├── AllowedValuesValidator.java
│   │           │   │       ├── UuidV7Validator.java
│   │           │   │       └── ValidUuidV7.java
│   │           │   ├── config
│   │           │   │   ├── application
│   │           │   │   │   ├── AppConfig.java
│   │           │   │   │   ├── DataInitializer.java
│   │           │   │   │   └── SchedulingConfig.java
│   │           │   │   ├── database
│   │           │   │   │   └── DatabaseConfig.java
│   │           │   │   └── swagger
│   │           │   │       └── SwaggerConfig.java
│   │           │   ├── filter
│   │           │   │   └── LoggingFilter.java
│   │           │   ├── infrastructure
│   │           │   │   ├── firebase
│   │           │   │   │   └── FirebaseConfig.java
│   │           │   │   ├── kafka
│   │           │   │   │   ├── config
│   │           │   │   │   │   ├── KafkaConfig.java
│   │           │   │   │   │   ├── KafkaFilterConfig.java
│   │           │   │   │   │   └── KafkaTopicConfig.java
│   │           │   │   │   ├── consumer
│   │           │   │   │   │   ├── AlarmEventListener.java
│   │           │   │   │   │   ├── MultiTopicEventListener.java
│   │           │   │   │   │   └── handler
│   │           │   │   │   │       ├── AlarmEventHandler.java
│   │           │   │   │   │       ├── MultiTopicEventHandler.java
│   │           │   │   │   │       └── impl
│   │           │   │   │   │           ├── AlarmEventHandlerImpl.java
│   │           │   │   │   │           └── MultiTopicEventHandlerImpl.java
│   │           │   │   │   ├── handler
│   │           │   │   │   │   ├── DeadLetterQueueHandler.java
│   │           │   │   │   │   ├── KafkaErrorHandler.java
│   │           │   │   │   │   └── impl
│   │           │   │   │   │       └── DeadLetterQueueHandlerImpl.java
│   │           │   │   │   └── producer
│   │           │   │   │       ├── KafkaProducerService.java
│   │           │   │   │       └── impl
│   │           │   │   │           └── KafkaProducerServiceImpl.java
│   │           │   │   └── redis
│   │           │   │       ├── config
│   │           │   │       │   └── RedisConfig.java
│   │           │   │       └── service
│   │           │   │           ├── RedisService.java
│   │           │   │           └── impl
│   │           │   │               └── RedisServiceImpl.java
│   │           │   └── notification
│   │           │       ├── adapter
│   │           │       │   ├── firebase
│   │           │       │   │   ├── in
│   │           │       │   │   └── out
│   │           │       │   │       └── NotificationPushAdapter.java
│   │           │       │   ├── jpa
│   │           │       │   │   ├── NotificationJpaAdapter.java
│   │           │       │   │   ├── UserDeviceTokenJpaAdapter.java
│   │           │       │   │   ├── entity
│   │           │       │   │   │   ├── Channel.java
│   │           │       │   │   │   ├── Notification.java
│   │           │       │   │   │   ├── NotificationChannel.java
│   │           │       │   │   │   ├── NotificationErrorCode.java
│   │           │       │   │   │   ├── NotificationLog.java
│   │           │       │   │   │   ├── NotificationStatus.java
│   │           │       │   │   │   ├── NotificationTarget.java
│   │           │       │   │   │   ├── NotificationTemplate.java
│   │           │       │   │   │   ├── Source.java
│   │           │       │   │   │   └── UserDeviceToken.java
│   │           │       │   │   └── repository
│   │           │       │   │       ├── ChannelRepository.java
│   │           │       │   │       ├── NotificationChannelRepository.java
│   │           │       │   │       ├── NotificationErrorCodeRepository.java
│   │           │       │   │       ├── NotificationLogRepository.java
│   │           │       │   │       ├── NotificationRepository.java
│   │           │       │   │       ├── NotificationStatusRepository.java
│   │           │       │   │       ├── NotificationTargetRepository.java
│   │           │       │   │       ├── NotificationTemplateRepository.java
│   │           │       │   │       ├── SourceRepository.java
│   │           │       │   │       └── UserDeviceTokenRepository.java
│   │           │       │   ├── kafka
│   │           │       │   │   ├── in
│   │           │       │   │   │   └── NotificationKafkaListener.java
│   │           │       │   │   └── out
│   │           │       │   │       └── NotificationEventProducerAdapter.java
│   │           │       │   └── web
│   │           │       │       ├── dto
│   │           │       │       │   ├── request
│   │           │       │       │   │   ├── DeviceTokenDeleteRequestDto.java
│   │           │       │       │   │   ├── DeviceTokenRegisterRequestDto.java
│   │           │       │       │   │   ├── DeviceTokenUpdateRequestDto.java
│   │           │       │       │   │   ├── NotificationMarkReadAllAndOneRequestDto.java
│   │           │       │       │   │   └── NotificationMarkReadRequestDto.java
│   │           │       │       │   └── response
│   │           │       │       │       ├── DeviceTokenListResponseDto.java
│   │           │       │       │       ├── DeviceTokenResponseDto.java
│   │           │       │       │       ├── NotificationCountResponseDto.java
│   │           │       │       │       ├── NotificationListResponseDto.java
│   │           │       │       │       └── NotificationReadResponseDto.java
│   │           │       │       ├── in
│   │           │       │       │   ├── DeviceTokenController.java
│   │           │       │       │   └── NotificationController.java
│   │           │       │       └── out
│   │           │       ├── domain
│   │           │       │   ├── model
│   │           │       │   │   ├── Noti.java
│   │           │       │   │   ├── NotiTarget.java
│   │           │       │   │   ├── UserDeviceInfo.java
│   │           │       │   │   └── constants
│   │           │       │   │       ├── ChannelNameEnum.java
│   │           │       │   │       ├── DeviceTypeEnum.java
│   │           │       │   │       ├── NotificationStatusEnum.java
│   │           │       │   │       ├── ReferenceTypeEnum.java
│   │           │       │   │       └── SourceTypeEnum.java
│   │           │       │   ├── port
│   │           │       │   │   ├── config
│   │           │       │   │   │   └── NotificationDispatchConfig.java
│   │           │       │   │   ├── in
│   │           │       │   │   │   ├── NotificationQueryUseCase.java
│   │           │       │   │   │   ├── NotificationSendUseCase.java
│   │           │       │   │   │   └── UserDeviceTokenUseCase.java
│   │           │       │   │   └── out
│   │           │       │   │       ├── NotificationDispatchPort.java
│   │           │       │   │       ├── NotificationRepositoryPort.java
│   │           │       │   │       ├── UserDeviceTokenRepositoryPort.java
│   │           │       │   │       └── strategy
│   │           │       │   │           └── DispatchStrategy.java
│   │           │       │   └── service
│   │           │       │       ├── NotificationServiceImpl.java
│   │           │       │       └── UserDeviceTokenService.java
│   │           │       └── service
│   │           │           ├── SseEmitterService.java
│   │           │           └── impl
│   │           │               └── SseEmitterServiceImpl.java
│   │           └── event
│   │               ├── AlarmEvent.java
│   │               ├── AlarmSentEvent.java
│   │               ├── BaseEvent.java
│   │               ├── BusinessEvent.java
│   │               ├── ScmEvent.java
│   │               ├── StatusEvent.java
│   │               ├── UserEvent.java
│   │               └── alarm
│   │                   ├── AlarmType.java
│   │                   ├── LinkType.java
│   │                   ├── SourceType.java
│   │                   └── TargetType.java
│   └── resources
│       ├── application.yml
│       └── key
│           └── everp-5085c-firebase-adminsdk-fbsvc-09af249929.json
└── test
    └── java
        └── org
            └── ever
                └── _4ever_be_alarm
                    └── ApplicationTests.java

6-3. Android (Kotlin Multi-module App)

app
├── build.gradle.kts
├── proguard-rules.pro
└── src
    ├── androidTest
    │   └── java
    │       └── com
    │           └── autoever
    │               └── everp
    │                   └── ExampleInstrumentedTest.kt
    ├── main
    │   ├── AndroidManifest.xml
    │   ├── java
    │   │   └── com
    │   │       └── autoever
    │   │           └── everp
    │   │               ├── EverpApplication.kt
    │   │               ├── MainActivity.kt
    │   │               ├── auth
    │   │               │   ├── api
    │   │               │   │   ├── AuthApi.kt
    │   │               │   │   ├── HttpAuthApi.kt
    │   │               │   │   ├── HttpUserApi.kt
    │   │               │   │   └── UserApi.kt
    │   │               │   ├── config
    │   │               │   │   └── AuthConfig.kt
    │   │               │   ├── endpoint
    │   │               │   │   └── AuthEndpoint.kt
    │   │               │   ├── flow
    │   │               │   │   ├── AuthCct.kt
    │   │               │   │   └── AuthFlowMemory.kt
    │   │               │   ├── model
    │   │               │   │   ├── TokenResponse.kt
    │   │               │   │   └── UserInfo.kt
    │   │               │   ├── pkce
    │   │               │   │   ├── PKCEGenerator.kt
    │   │               │   │   └── StateGenerator.kt
    │   │               │   ├── repository
    │   │               │   │   ├── AuthRepository.kt
    │   │               │   │   ├── DefaultAuthRepository.kt
    │   │               │   │   ├── DefaultUserRepository.kt
    │   │               │   │   └── UserRepository.kt
    │   │               │   └── session
    │   │               │       ├── AuthState.kt
    │   │               │       ├── SessionManager.kt
    │   │               │       ├── TokenStore.kt
    │   │               │       └── TokenStoreImpl.kt
    │   │               ├── common
    │   │               │   ├── annotation
    │   │               │   │   ├── CoroutineScopeAnnotation.kt
    │   │               │   │   └── RetrofitAnnotation.kt
    │   │               │   ├── error
    │   │               │   │   └── AppExceptions.kt
    │   │               │   └── exception
    │   │               │       └── GlobalExceptionHandler.kt
    │   │               ├── data
    │   │               │   ├── datasource
    │   │               │   │   ├── local
    │   │               │   │   │   ├── AlarmLocalDataSource.kt
    │   │               │   │   │   ├── AuthLocalDataSource.kt
    │   │               │   │   │   ├── DashboardLocalDataSource.kt
    │   │               │   │   │   ├── DeviceLocalDataSource.kt
    │   │               │   │   │   ├── FcmLocalDataSource.kt
    │   │               │   │   │   ├── ImLocalDataSource.kt
    │   │               │   │   │   ├── MmLocalDataSource.kt
    │   │               │   │   │   ├── ProfileLocalDataSource.kt
    │   │               │   │   │   ├── SdLocalDataSource.kt
    │   │               │   │   │   ├── TokenLocalDataSource.kt
    │   │               │   │   │   ├── UserLocalDataSource.kt
    │   │               │   │   │   ├── datastore
    │   │               │   │   │   │   ├── AuthDataStoreLocalDataSourceImpl.kt
    │   │               │   │   │   │   └── TokenDataStoreLocalDataSourceImpl.kt
    │   │               │   │   │   ├── impl
    │   │               │   │   │   │   ├── AlarmLocalDataSourceImpl.kt
    │   │               │   │   │   │   ├── DashboardLocalDataSourceImpl.kt
    │   │               │   │   │   │   ├── FcmLocalDataSourceImpl.kt
    │   │               │   │   │   │   ├── ImLocalDataSourceImpl.kt
    │   │               │   │   │   │   ├── MmLocalDataSourceImpl.kt
    │   │               │   │   │   │   ├── ProfileLocalDataSourceImpl.kt
    │   │               │   │   │   │   ├── SdLocalDataSourceImpl.kt
    │   │               │   │   │   │   └── UserLocalDataSourceImpl.kt
    │   │               │   │   │   ├── pref
    │   │               │   │   │   │   └── TokenPrefLocalDataSourceImpl.kt
    │   │               │   │   │   └── room
    │   │               │   │   └── remote
    │   │               │   │       ├── AlarmRemoteDataSource.kt
    │   │               │   │       ├── AuthRemoteDataSource.kt
    │   │               │   │       ├── DashboardRemoteDataSource.kt
    │   │               │   │       ├── FcmRemoteDataSource.kt
    │   │               │   │       ├── ImRemoteDataSource.kt
    │   │               │   │       ├── MmRemoteDataSource.kt
    │   │               │   │       ├── ProfileRemoteDataSource.kt
    │   │               │   │       ├── SdRemoteDataSource.kt
    │   │               │   │       ├── UserRemoteDataSource.kt
    │   │               │   │       ├── dto
    │   │               │   │       │   └── common
    │   │               │   │       │       ├── ApiResponse.kt
    │   │               │   │       │       ├── PageResponse.kt
    │   │               │   │       │       └── ToggleResponseDto.kt
    │   │               │   │       ├── firebase
    │   │               │   │       │   ├── FirebaseAnalyticsDataSource.kt
    │   │               │   │       │   ├── FirebaseCrashlyticsDataSource.kt
    │   │               │   │       │   └── FirebaseDataSource.kt
    │   │               │   │       ├── http
    │   │               │   │       │   ├── impl
    │   │               │   │       │   │   ├── AlarmHttpRemoteDataSourceImpl.kt
    │   │               │   │       │   │   ├── AuthHttpRemoteDataSourceImpl.kt
    │   │               │   │       │   │   ├── DashboardHttpRemoteDataSourceImpl.kt
    │   │               │   │       │   │   ├── FcmHttpRemoteDataSourceImpl.kt
    │   │               │   │       │   │   ├── ImHttpRemoteDataSourceImpl.kt
    │   │               │   │       │   │   ├── MmHttpRemoteDataSourceImpl.kt
    │   │               │   │       │   │   ├── ProfileHttpRemoteDataSourceImpl.kt
    │   │               │   │       │   │   ├── SdHttpRemoteDataSourceImpl.kt
    │   │               │   │       │   │   └── UserHttpRemoteDataSourceImpl.kt
    │   │               │   │       │   └── service
    │   │               │   │       │       ├── AlarmApi.kt
    │   │               │   │       │       ├── AlarmTokenApi.kt
    │   │               │   │       │       ├── AuthApi.kt
    │   │               │   │       │       ├── DashboardApi.kt
    │   │               │   │       │       ├── FcmApi.kt
    │   │               │   │       │       ├── HrmApi.kt
    │   │               │   │       │       ├── ImApi.kt
    │   │               │   │       │       ├── MmApi.kt
    │   │               │   │       │       ├── ProfileApi.kt
    │   │               │   │       │       ├── SdApi.kt
    │   │               │   │       │       └── UserApi.kt
    │   │               │   │       ├── interceptor
    │   │               │   │       │   └── AuthInterceptor.kt
    │   │               │   │       └── mapper
    │   │               │   │           ├── DashboardMapper.kt
    │   │               │   │           ├── ImMapper.kt
    │   │               │   │           ├── InvoiceMapper.kt
    │   │               │   │           ├── NotificationMapper.kt
    │   │               │   │           ├── ProfileMapper.kt
    │   │               │   │           ├── PurchaseOrderMapper.kt
    │   │               │   │           ├── SdMapper.kt
    │   │               │   │           ├── SupplierMapper.kt
    │   │               │   │           └── UserMapper.kt
    │   │               │   └── repository
    │   │               │       ├── AlarmRepositoryImpl.kt
    │   │               │       ├── AuthRepositoryImpl.kt
    │   │               │       ├── DashboardRepositoryImpl.kt
    │   │               │       ├── DeviceInfoRepositoryImpl.kt
    │   │               │       ├── FcmRepositoryImpl.kt
    │   │               │       ├── ImRepositoryImpl.kt
    │   │               │       ├── MmRepositoryImpl.kt
    │   │               │       ├── ProfileRepositoryImpl.kt
    │   │               │       ├── PushNotificationRepositoryImpl.kt
    │   │               │       ├── SdRepositoryImpl.kt
    │   │               │       └── UserRepositoryImpl.kt
    │   │               ├── di
    │   │               │   ├── AppModule.kt
    │   │               │   ├── AuthDataModule.kt
    │   │               │   ├── DataSourceModule.kt
    │   │               │   ├── FirebaseModule.kt
    │   │               │   ├── NetworkModule.kt
    │   │               │   └── RepositoryModule.kt
    │   │               ├── domain
    │   │               │   ├── exception
    │   │               │   │   ├── EverpException.kt
    │   │               │   │   ├── ExceptionHandler.kt
    │   │               │   │   ├── ExceptionMapper.kt
    │   │               │   │   └── README.md
    │   │               │   ├── model
    │   │               │   │   ├── auth
    │   │               │   │   │   └── AccessToken.kt
    │   │               │   │   ├── common
    │   │               │   │   │   ├── PagingData.kt
    │   │               │   │   │   └── PagingDataMapper.kt
    │   │               │   │   ├── customer
    │   │               │   │   │   ├── CustomerDetail.kt
    │   │               │   │   │   └── CustomerStatusEnum.kt
    │   │               │   │   ├── dashboard
    │   │               │   │   │   ├── Dashboard.kt
    │   │               │   │   │   └── DashboardTapEnum.kt
    │   │               │   │   ├── device
    │   │               │   │   │   └── DeviceInfo.kt
    │   │               │   │   ├── inventory
    │   │               │   │   │   └── InventoryItemToggle.kt
    │   │               │   │   ├── invoice
    │   │               │   │   │   ├── InvoiceDetail.kt
    │   │               │   │   │   ├── InvoiceListItem.kt
    │   │               │   │   │   ├── InvoiceListParams.kt
    │   │               │   │   │   ├── InvoiceStatusEnum.kt
    │   │               │   │   │   └── InvoiceTypeEnum.kt
    │   │               │   │   ├── notification
    │   │               │   │   │   ├── Notification.kt
    │   │               │   │   │   ├── NotificationLinkEnum.kt
    │   │               │   │   │   ├── NotificationListParams.kt
    │   │               │   │   │   ├── NotificationSourceEnum.kt
    │   │               │   │   │   └── NotificationStatusEnum.kt
    │   │               │   │   ├── profile
    │   │               │   │   │   └── Profile.kt
    │   │               │   │   ├── purchase
    │   │               │   │   │   ├── PurchaseOrderDetail.kt
    │   │               │   │   │   ├── PurchaseOrderListItem.kt
    │   │               │   │   │   ├── PurchaseOrderListParams.kt
    │   │               │   │   │   ├── PurchaseOrderSearchTypeEnum.kt
    │   │               │   │   │   └── PurchaseOrderStatusEnum.kt
    │   │               │   │   ├── quotation
    │   │               │   │   │   ├── QuotationCreateRequest.kt
    │   │               │   │   │   ├── QuotationDetail.kt
    │   │               │   │   │   ├── QuotationItem.kt
    │   │               │   │   │   ├── QuotationListItem.kt
    │   │               │   │   │   ├── QuotationListParams.kt
    │   │               │   │   │   ├── QuotationMapper.kt
    │   │               │   │   │   ├── QuotationSearchTypeEnum.kt
    │   │               │   │   │   └── QuotationStatusEnum.kt
    │   │               │   │   ├── sale
    │   │               │   │   │   ├── SalesOrder.kt
    │   │               │   │   │   ├── SalesOrderListParams.kt
    │   │               │   │   │   ├── SalesOrderSearchTypeEnum.kt
    │   │               │   │   │   └── SalesOrderStatusEnum.kt
    │   │               │   │   ├── supplier
    │   │               │   │   │   ├── SupplierCategoryEnum.kt
    │   │               │   │   │   ├── SupplierDetail.kt
    │   │               │   │   │   └── SupplierStatusEnum.kt
    │   │               │   │   └── user
    │   │               │   │       ├── UserInfo.kt
    │   │               │   │       ├── UserRoleEnum.kt
    │   │               │   │       └── UserTypeEnum.kt
    │   │               │   └── repository
    │   │               │       ├── AlarmRepository.kt
    │   │               │       ├── AuthRepository.kt
    │   │               │       ├── DashboardRepository.kt
    │   │               │       ├── DeviceInfoRepository.kt
    │   │               │       ├── FcmRepository.kt
    │   │               │       ├── HrRepository.kt
    │   │               │       ├── ImRepository.kt
    │   │               │       ├── MmRepository.kt
    │   │               │       ├── ProfileRepository.kt
    │   │               │       ├── PushNotificationRepository.kt
    │   │               │       ├── SdRepository.kt
    │   │               │       └── UserRepository.kt
    │   │               ├── provider
    │   │               ├── receiver
    │   │               ├── service
    │   │               │   └── fcm
    │   │               │       └── MyFirebaseMessagingService.kt
    │   │               ├── ui
    │   │               │   ├── MainScreen.kt
    │   │               │   ├── MainViewModel.kt
    │   │               │   ├── auth
    │   │               │   │   └── AuthViewModel.kt
    │   │               │   ├── common
    │   │               │   │   ├── ErrorHandler.kt
    │   │               │   │   ├── ErrorMessageHandler.kt
    │   │               │   │   ├── RecentActivityCard.kt
    │   │               │   │   └── components
    │   │               │   │       ├── ListCard.kt
    │   │               │   │       ├── QuickActionCard.kt
    │   │               │   │       ├── SearchBar.kt
    │   │               │   │       └── StatusBadge.kt
    │   │               │   ├── customer
    │   │               │   │   ├── CustomerApp.kt
    │   │               │   │   ├── CustomerHomeScreen.kt
    │   │               │   │   ├── CustomerHomeViewModel.kt
    │   │               │   │   ├── CustomerNavigationItem.kt
    │   │               │   │   ├── CustomerOrderScreen.kt
    │   │               │   │   ├── CustomerOrderViewModel.kt
    │   │               │   │   ├── CustomerProfileEditScreen.kt
    │   │               │   │   ├── CustomerProfileEditViewModel.kt
    │   │               │   │   ├── CustomerProfileScreen.kt
    │   │               │   │   ├── CustomerProfileViewModel.kt
    │   │               │   │   ├── CustomerQuotationScreen.kt
    │   │               │   │   ├── CustomerQuotationViewModel.kt
    │   │               │   │   ├── CustomerVoucherScreen.kt
    │   │               │   │   ├── CustomerVoucherViewModel.kt
    │   │               │   │   ├── InvoiceDetailScreen.kt
    │   │               │   │   ├── InvoiceDetailViewModel.kt
    │   │               │   │   ├── NotificationScreen.kt
    │   │               │   │   ├── NotificationViewModel.kt
    │   │               │   │   ├── QuotationCreateScreen.kt
    │   │               │   │   ├── QuotationCreateViewModel.kt
    │   │               │   │   ├── QuotationDetailScreen.kt
    │   │               │   │   ├── QuotationDetailViewModel.kt
    │   │               │   │   ├── SalesOrderDetailScreen.kt
    │   │               │   │   └── SalesOrderDetailViewModel.kt
    │   │               │   ├── error
    │   │               │   │   └── ErrorActivity.kt
    │   │               │   ├── home
    │   │               │   │   ├── HomeScreen.kt
    │   │               │   │   └── HomeViewModel.kt
    │   │               │   ├── login
    │   │               │   │   └── LoginScreen.kt
    │   │               │   ├── main
    │   │               │   │   └── MainScreen.kt
    │   │               │   ├── navigation
    │   │               │   │   ├── AppNavGraph.kt
    │   │               │   │   ├── CustomBottomBar.kt
    │   │               │   │   └── NavigationItem.kt
    │   │               │   ├── profile
    │   │               │   │   ├── ProfileScreen.kt
    │   │               │   │   └── ProfileViewModel.kt
    │   │               │   ├── redirect
    │   │               │   │   └── RedirectReceiverActivity.kt
    │   │               │   ├── supplier
    │   │               │   │   ├── InvoiceDetailScreen.kt
    │   │               │   │   ├── InvoiceDetailViewModel.kt
    │   │               │   │   ├── NotificationScreen.kt
    │   │               │   │   ├── NotificationViewModel.kt
    │   │               │   │   ├── PurchaseOrderDetailScreen.kt
    │   │               │   │   ├── PurchaseOrderDetailViewModel.kt
    │   │               │   │   ├── SupplierApp.kt
    │   │               │   │   ├── SupplierHomeScreen.kt
    │   │               │   │   ├── SupplierHomeViewModel.kt
    │   │               │   │   ├── SupplierNavigationItem.kt
    │   │               │   │   ├── SupplierOrderScreen.kt
    │   │               │   │   ├── SupplierOrderViewModel.kt
    │   │               │   │   ├── SupplierProfileEditScreen.kt
    │   │               │   │   ├── SupplierProfileEditViewModel.kt
    │   │               │   │   ├── SupplierProfileScreen.kt
    │   │               │   │   ├── SupplierProfileViewModel.kt
    │   │               │   │   ├── SupplierVoucherScreen.kt
    │   │               │   │   └── SupplierVoucherViewModel.kt
    │   │               │   └── theme
    │   │               │       ├── Color.kt
    │   │               │       ├── Theme.kt
    │   │               │       └── Type.kt
    │   │               └── utils
    │   │                   ├── permission
    │   │                   │   └── PermissionStatus.kt
    │   │                   ├── serializer
    │   │                   │   ├── LocalDateAndTimeSerializer.kt
    │   │                   │   ├── NotificationLinkEnumSerializer.kt
    │   │                   │   └── NotificationSourceEnumSerializer.kt
    │   │                   └── state
    │   │                       └── UiResult.kt
    │   └── res
    │       ├── drawable
    │       │   ├── ic_launcher_background.xml
    │       │   └── ic_launcher_foreground.xml
    │       ├── drawable-nodpi
    │       │   └── everp_logo.png
    │       ├── mipmap-anydpi
    │       │   ├── ic_launcher.xml
    │       │   └── ic_launcher_round.xml
    │       ├── mipmap-hdpi
    │       │   ├── ic_launcher.webp
    │       │   └── ic_launcher_round.webp
    │       ├── mipmap-mdpi
    │       │   ├── ic_launcher.webp
    │       │   └── ic_launcher_round.webp
    │       ├── mipmap-xhdpi
    │       │   ├── ic_launcher.webp
    │       │   └── ic_launcher_round.webp
    │       ├── mipmap-xxhdpi
    │       │   ├── ic_launcher.webp
    │       │   └── ic_launcher_round.webp
    │       ├── mipmap-xxxhdpi
    │       │   ├── ic_launcher.webp
    │       │   └── ic_launcher_round.webp
    │       ├── values
    │       │   ├── colors.xml
    │       │   ├── strings.xml
    │       │   ├── styles.xml
    │       │   └── themes.xml
    │       └── xml
    │           ├── backup_rules.xml
    │           ├── data_extraction_rules.xml
    │           └── network_security_config.xml
    └── test
        └── java
            └── com
                └── autoever
                    └── everp
                        └── ExampleUnitTest.kt

6-4. iOS (SwiftUI App)

Erp4ever-iOS
├── Assets.xcassets
│   ├── AccentColor.colorset
│   │   └── Contents.json
│   ├── AppIcon.appiconset
│   │   ├── Contents.json
│   │   └── applogo.png
│   ├── Contents.json
│   └── Logo.imageset
│       ├── Contents.json
│       └── everp_logo.png
├── Components
│   ├── Common
│   │   ├── Card.swift
│   │   ├── CardTitle.swift
│   │   ├── EmptyStateCard.swift
│   │   ├── ErrorStateCard.swift
│   │   ├── InputField.swift
│   │   ├── KeyValueRow.swift
│   │   └── Section.swift
│   ├── Home
│   │   ├── ActivityRow.swift
│   │   ├── Header.swift
│   │   ├── StatusLabel.swift
│   │   ├── TypeLabel.swift
│   │   └── UserInfoBanner.swift
│   ├── Order
│   │   └── OrderCard.swift
│   ├── Profile
│   │   ├── CustomInput.swift
│   │   ├── InfoRow.swift
│   │   └── MenuRow.swift
│   ├── Purchase
│   │   └── PurchaseCard.swift
│   ├── Quote
│   │   ├── QuotationListItemCard.swift
│   │   └── QuoteCard.swift
│   ├── Search
│   │   └── SearchGlassBar.swift
│   └── WebView.swift
├── Config
│   └── APIEndpoints.swift
├── ContentView.swift
├── Docs
├── Erp4everiOSApp.swift
├── Info.plist
├── Models
│   ├── Auth
│   │   └── AuthConfig.swift
│   ├── Dashboard
│   │   ├── DashboardWorkflowModels.swift
│   │   └── DashboardWorkflowTab.swift
│   ├── HomeModel.swift
│   ├── Invoice
│   │   ├── PurchaseInvoiceModels.swift
│   │   ├── SalesInvoiceDetailModels.swift
│   │   └── SalesInvoiceListModels.swift
│   ├── Order
│   │   ├── OrderDetailModel.swift
│   │   └── OrderModel.swift
│   ├── PageInfo.swift
│   ├── PageResponse.swift
│   ├── Profile
│   │   ├── BusinessProfileModels.swift
│   │   └── EmployeeProfileModels.swift
│   ├── ProfileModel.swift
│   ├── PurchaseModel.swift
│   ├── PurchaseOrder
│   │   └── PurchaseOrderModels.swift
│   ├── Quote
│   │   ├── QuotationDetail.swift
│   │   ├── QuotationListItem.swift
│   │   ├── QuoteDetailModel.swift
│   │   ├── QuoteListModel.swift
│   │   └── QuoteListQuery.swift
│   └── Supplier
│       └── SupplierInvoiceModels.swift
├── Modifiers
│   └── GlassBackground.swift
├── Navigation
│   ├── MainAppView.swift
│   └── SearchCoordinator.swift
├── Services
│   ├── Auth
│   │   ├── AuthService.swift
│   │   ├── LogoutService.swift
│   │   └── TokenStore.swift
│   ├── Dashboard
│   │   └── DashboardService.swift
│   ├── Invoice
│   │   └── PurchaseInvoiceService.swift
│   ├── Profile
│   │   └── ProfileService.swift
│   ├── PurchaseOrder
│   │   └── PurchaseOrderService.swift
│   ├── Quote
│   │   └── QuoteService.swift
│   ├── Supplier
│   │   └── SupplierInvoiceService.swift
│   ├── User
│   │   └── UserService.swift
│   └── testServices.swift
├── Utils
│   ├── Anim.swift
│   ├── PKCEGenerator.swift
│   ├── StateGenerator.swift
│   └── StatusMapping.swift
├── ViewModels
│   ├── AuthViewModel.swift
│   ├── HomeViewModel.swift
│   ├── ProfileViewModel.swift
│   ├── PurchaseInvoiceDetailViewModel.swift
│   ├── PurchaseInvoiceListViewModel.swift
│   ├── PurchaseOrderDetailViewModel.swift
│   ├── PurchaseOrderListViewModel.swift
│   ├── QuoteDetailViewModel.swift
│   ├── QuoteListViewModel.swift
│   ├── SessionManager.swift
│   ├── SupplierInvoiceDetailViewModel.swift
│   └── SupplierInvoiceListViewModel.swift
└── Views
    ├── AuthView.swift
    ├── Common
    │   └── DateRangeSheet.swift
    ├── Home
    │   ├── QuickActionView.swift
    │   └── RecentActivitesView.swift
    ├── HomeView.swift
    ├── Invoice
    │   ├── PurchaseInvoiceDetailView.swift
    │   └── PurchaseInvoiceListView.swift
    ├── LoginView.swift
    ├── Order
    │   ├── OrderDetailView.swift
    │   └── OrderListView.swift
    ├── ProfileView.swift
    ├── PurchaseOrder
    │   ├── PurchaseOrderDetailView.swift
    │   ├── PurchaseOrderListView.swift
    │   └── components
    ├── PurchaseView.swift
    ├── Quote
    │   ├── QuoteDetailView.swift
    │   ├── QuoteListView.swift
    │   └── components
    │       ├── QuoteListSection.swift
    │       └── QuoteTypePromptView.swift
    ├── SearchView.swift
    └── Supplier
        ├── SupplierInvoiceDetailView.swift
        └── SupplierInvoiceListView.swift

Popular repositories Loading

  1. _4EVER_BE_BUSINESS _4EVER_BE_BUSINESS Public

    Java

  2. _4EVER_FE _4EVER_FE Public

    TypeScript 2

  3. _4EVER_IOS _4EVER_IOS Public

    Swift

  4. _4EVER_AOS _4EVER_AOS Public

    Kotlin

  5. .github .github Public

    JavaScript

  6. _4EVER_BE_AUTH _4EVER_BE_AUTH Public

    Java

Repositories

Showing 9 of 9 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…