## 주요 변경사항 - Company, Equipment, License, Warehouse Location 모든 화면에 소프트 딜리트 구현 - 관리자 권한으로 삭제된 데이터 조회 가능 (includeInactive 파라미터) - 데이터 무결성 보장을 위한 논리 삭제 시스템 완성 ## 기능 개선 - 각 리스트 컨트롤러에 toggleIncludeInactive() 메서드 추가 - UI에 "비활성 포함" 체크박스 추가 (관리자 전용) - API 데이터소스에 includeInactive 파라미터 지원 ## 문서 정리 - 불필요한 문서 파일 제거 및 재구성 - CLAUDE.md 프로젝트 상태 업데이트 (진행률 80%) - 테스트 결과 문서화 (test20250812v01.md) ## UI 컴포넌트 - Equipment 화면 위젯 모듈화 (custom_dropdown_field, equipment_basic_info_section) - 폼 유효성 검증 강화 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
11 KiB
아래 내용 전체를 복사해서 superportPRD.md 파일로 저장하시면 됩니다.
supERPort ERP - 초기 프론트엔드 PRD (Flutter)
본 문서는 Flutter로 제작할 ERP 웹/앱 프론트엔드의 최소 기능 요구사항과 디렉터리 구조, 스타일 가이드, 그리고 AI 코드 생성에 활용 가능한 프롬프트를 포함하고 있습니다. 현재 계획은 확장 가능하며, 추후 대화와 요구사항 변경에 따라 자동으로 업데이트할 수 있습니다.
1. 개요
-
이름: supERPort
-
기술 스택: Flutter
-
주요 화면:
-
장비 입고
-
장비 출고
-
회사 등록
-
사용자 등록
-
라이센스 등록
-
2. 공통 스타일 가이드
-
디자인 레퍼런스: Metronic Admin Template
- 디자인 레퍼런스를 철저히 검토 및 적용: Metronic의 Layout, 컬러 팔레트, 컴포넌트, 인터랙션 가이드라인을 꼼꼼하게 분석하여, Flutter 및 Material Icons와 조화롭게 적용해야 합니다.
- 하나의 화면에 중복되는 정보를 제공하지 않아야 합니다.
-
아이콘: Material Icons
-
UI 기조: 모던하고 직관적인 플랫 디자인, 적절한 그림자(Elevation)와 여백 사용
-
메인 컬러 예시:
-
Primary: #5867dd (Metronic 기본색)
-
Secondary: #34bfa3
-
Background: #f7f8fa
-
-
타이포그래피: 가독성 높은 산세리프 폰트(예: Roboto, Noto Sans)
-
반응형 고려: Web & Mobile 겸용, Responsive Layout 구성
3. 기능 요구사항
3.1 장비 입고 화면
-
등록 후 리스트로 관리
-
새로운 장비 입고 기록을 추가 (Form)
-
등록된 목록을 리스트(테이블)로 보여주고, 항목별 Editing 기능 제공
-
-
필수 데이터
-
제조사명 (varchar 필수)
-
장비명 (varchar 필수)
-
대분류 / 중분류 / 소분류 (varchar, Email 선택 UI 유사 방식)
-
시리얼 넘버 (varchar)
-
바코드 입력 (varchar, 차후에 바코드 스캔 기능과 연동 예정)
-
물품 수 (int 필수)
-
시리얼 번호가 존재할 경우 1 고정 및 수정 불가
-
시리얼 번호가 없으면 직접 입력
-
-
입고일 (datetime)
-
당일 날짜를 기본값으로 설정
-
캘린더에서 과거 날짜만 선택 가능
-
-
(DB 연계 시) 장비(장비이력) 테이블과 매핑
-
입출고는 “I”(입고)로 기록
-
발생시간: 입고 시점(= 입고일)
-
-
3.2 장비 출고 화면
-
등록 후 리스트로 관리
-
새 출고 정보 등록 (Form)
-
출고 기록 목록 표시 및 편집 기능
-
-
필수 데이터
-
장비명 (varchar 필수)
-
대분류 / 중분류 / 소분류 (출고 시점에 불러오고 수정 가능 여부는 정책 결정)
-
시리얼 넘버 (varchar)
-
바코드 (varchar, 바코드 스캔 기능 연동 예정)
-
출고 수량 (int 필수)
-
출고일 (datetime)
-
(DB 연계 시) 장비(장비이력) 테이블과 매핑
-
입출고는 “O”(출고)로 기록
-
발생시간: 출고 시점(= 출고일)
-
-
3.3 회사 등록 화면
-
등록 후 리스트로 관리
-
새 회사 정보 등록 (Form)
-
회사 목록 조회 및 편집
-
-
필수 데이터
-
회사명 (varchar 필수)
-
주소 (varchar)
-
(확장) 지점 정보 (Optional / 별도 화면 구성 가능)
-
지점명 (varchar)
-
대표전화번호 (varchar)
-
주소 (varchar)
-
-
(DB 연계 시) 고객(회사) / 고객(지점) 테이블 매핑
- 회사 ID, 지점 ID 등 Primary Key, FK 관계
-
3.4 사용자 등록 화면
-
등록 후 리스트로 관리
-
사용자(직원) 가입/등록 Form
-
사용자 목록 조회 및 편집
-
-
필수 데이터
-
이름 (varchar 필수)
-
소속 회사ID (int)
-
관리등급 (char) – 예) S(관리자), M(멤버)
-
(DB 연계 시) 서비스(직원) 테이블 매핑
-
3.5 라이센스 등록 화면
-
등록 후 리스트로 관리
-
유지보수 라이센스 정보 등록 (Form)
-
등록된 라이센스 목록 표시 및 편집
-
-
필수 데이터
-
서비스(회사)ID (int) – 라이센스가 적용될 회사/서비스 정보
-
라이센스명 (varchar, 예: “1년 유지보수”)
-
라이센스기간 (int, 월 단위)
-
방문주기 (int, 유지보수 방문 주기)
-
(DB 연계 시) 유지(라이센스) 테이블과 매핑
-
4. 추천 디렉터리 구조
동일한 기능을 담은 모듈(파일)이 300라인을 초과하게 될 경우, 하위 파일로 분리해 관리하는 것을 권장합니다.
장비(Equipment) 모델과 장비 입고(In) / 출고(Out) 모델을 분리하여, 공통 필드와 입·출고 전용 필드를 구분해 유지보수를 용이하게 합니다.
lib/
┣ models/
┃ ┣ equipment_model.dart (장비(Equipment) 공통 모델)
┃ ┣ equipment_in_model.dart (장비 입고 관련 모델, 장비 + 입고 필드)
┃ ┣ equipment_out_model.dart (장비 출고 관련 모델, 장비 + 출고 필드)
┃ ┣ company_model.dart (회사 정보 모델)
┃ ┣ user_model.dart (사용자 정보 모델)
┃ ┗ license_model.dart (유지보수 라이센스 정보 모델)
┣ screens/
┃ ┣ equipment_in/
┃ ┃ ┣ equipment_in_list.dart (장비 입고 리스트 화면)
┃ ┃ ┗ equipment_in_form.dart (장비 입고 등록/수정 폼)
┃ ┣ equipment_out/
┃ ┃ ┣ equipment_out_list.dart (장비 출고 리스트 화면)
┃ ┃ ┗ equipment_out_form.dart (장비 출고 등록/수정 폼)
┃ ┣ company/
┃ ┃ ┣ company_list.dart (회사 목록 화면)
┃ ┃ ┗ company_form.dart (회사 등록/수정 폼)
┃ ┣ user/
┃ ┃ ┣ user_list.dart (사용자 목록 화면)
┃ ┃ ┗ user_form.dart (사용자 등록/수정 폼)
┃ ┣ license/
┃ ┃ ┣ license_list.dart (라이센스 목록 화면)
┃ ┃ ┗ license_form.dart (라이센스 등록/수정 폼)
┃ ┗ common/
┃ ┣ custom_widgets.dart (공통 위젯)
┃ ┗ theme.dart (스타일, 테마 정보)
┣ services/
┃ ┗ mock_data_service.dart (서버 없는 샘플 데이터 관리)
┣ utils/
┃ ┣ validators.dart (입력값 검증 함수)
┃ ┗ constants.dart (상수 관리, 예: 라우트명, 컬러코드)
┗ main.dart
5. 데이터베이스 설계
아래는 장비, 회사(고객), 서비스(직원/결제), 유지보수 라이센스 등에 대한 예시 테이블입니다. 실제 구현 시에는 필요에 따라 테이블을 통합하거나 컬럼명을 조정할 수 있습니다.
5.1 고객 관련 테이블
| 테이블명 | 필드명 | 타입 | 예시 | 비고 |
|---|---|---|---|---|
| 고객(회사) | ID | Integer | 1 | Primary Key |
| 회사명 | Varchar | LG전자 | 고객 회사명 | |
| 주소 | Varchar | 서울시 종로구 | 고객 회사 주소 | |
| 고객(지점) | ID | Integer | 10 | Primary Key |
| 회사ID | Integer | 1 | FK - 고객(회사) | |
| 지점명 | Varchar | 본사 | 고객 지점명 | |
| 주소 | Varchar | 서울시 종로구 | 지점 주소 | |
| 대표전화번호 | Varchar | 02-3403-2222 | 지점 연락처 |
5.2 서비스 관련 테이블
| 테이블명 | 필드명 | 타입 | 예시 | 비고 |
|---|---|---|---|---|
| 서비스(직원) | ID | Integer | 20 | Primary Key |
| 회사ID | Integer | 1 | FK - 서비스(회사) 또는 고객(회사) | |
| 이름 | Varchar | 홍길동 | 직원 이름 | |
| 관리등급 | Char | M | S(관리자)/M(멤버) | |
| 서비스(결제) | ID | Integer | 30 | Primary Key |
| 서비스(직원)ID | Integer | 20 | FK - 서비스(직원) | |
| 결제여부 | Char | A | 승인(A)/반려(D) | |
| 결제일 | Datetime | 2025-03-04 11:00 | 결제 일시 |
5.3 장비 관련 테이블
| 테이블명 | 필드명 | 타입 | 예시 | 비고 |
|---|---|---|---|---|
| 장비(장비정보) | ID | Integer | 50 | Primary Key |
| 장비(회사명)ID | Integer | 1 | FK - 장비(회사명) or 고객(회사) | |
| 장비명 | Varchar | 라우터 123 | 장비 모델명 | |
| 장비(장비이력) | ID | Integer | 60 | Primary Key |
| 장비(장비바코드)ID | Integer | 50 | FK - 장비(장비바코드) | |
| 입출고 | Varchar | I | 입고(I)/출고(O)/임대(R) 등 구분 | |
| 발생시간 | Datetime | 2025-03-04 11:00 | 이력 발생 시간 |
5.4 유지보수 라이센스 관련 테이블
| 테이블명 | 필드명 | 타입 | 예시 | 비고 |
|---|---|---|---|---|
| 유지(라이센스) | ID | Integer | 70 | Primary Key |
| 서비스(회사)ID | Integer | 1 | FK - 서비스(회사) | |
| 라이센스명 | Varchar | 1년 유지보수 | 유지보수 라이센스명 | |
| 라이센스기간 | Integer | 12 | 월 단위 | |
| 방문주기 | Integer | 1 | 유지보수 방문 주기 |
위 테이블들은 예시이며, 실제 구현 시에는 API 요청/응답 형식과 화면 요구사항에 따라 컬럼을 추가/수정/제거할 수 있습니다.
6. 코드 생성용 AI 프롬프트 예시
(아래 텍스트는 코드 자동생성용 프롬프트 작성 예시일 뿐, 실제 환경에 맞춰 수정해서 사용하세요.)
[System]
You are Claude, a large language model trained by Anthropic.
[User]
read document "doc/doc name" at first.
-
앱 이름: supERPort
-
화면 개요: 장비 입고, 장비 출고, 회사 등록, 사용자 등록
-
참조 스타일: Metronic Admin + Material Icons
-
필수 폴더 구조와 기능
-
equipment_in (리스트 & 폼)
-
equipment_out (리스트 & 폼)
-
company (리스트 & 폼)
-
user (리스트 & 폼)
Generate Flutter code with the above requirements.
-
Use a consistent coding style.
-
Provide minimal working code example for each screen.
-
Utilize Material Icons.
-
Implement basic validation in the forms.
7. 추후 업데이트 사항
-
장비 출고 시 필수 데이터 상세
-
회사 등록/사용자 등록 시 필수 데이터 구조 정의 (지점 정보, 연락처 등 확장)
-
Form 유효성 검사 규칙 세부화
-
권한(관리자/사용자)별 접근 제어
-
바코드 스캔 기능 연동
-
API 연동 및 서버 연결
-
유지보수 라이센스 관련 화면 및 기능 확대 (결제/계약 기간 연동 등)
본 문서는 ERP 플랫폼 “supERPort”의 Flutter 프론트엔드 개발에 필요한 최소 요구사항, 디렉터리 구조, 스타일 가이드, 그리고 데이터베이스 설계 정보를 담고 있습니다. 여기서 정의되지 않은 사항은 추후 대화에서 확정된 후 문서에 자동 반영될 예정입니다. 필요에 따라 Markdown 형식으로 다운로드해, 버전 관리 시스템에 추가하거나 직접 열람할 수 있습니다.