Files
superport/docs/superportPRD.md
JiWoong Sul e7860ae028
Some checks failed
Flutter Test & Quality Check / Test on macos-latest (push) Has been cancelled
Flutter Test & Quality Check / Test on ubuntu-latest (push) Has been cancelled
Flutter Test & Quality Check / Build APK (push) Has been cancelled
feat: 소프트 딜리트 기능 전면 구현 완료
## 주요 변경사항
- 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>
2025-08-12 20:02:54 +09:00

11 KiB
Raw Blame History

아래 내용 전체를 복사해서 superportPRD.md 파일로 저장하시면 됩니다.


supERPort ERP - 초기 프론트엔드 PRD (Flutter)

본 문서는 Flutter로 제작할 ERP 웹/앱 프론트엔드의 최소 기능 요구사항과 디렉터리 구조, 스타일 가이드, 그리고 AI 코드 생성에 활용 가능한 프롬프트를 포함하고 있습니다. 현재 계획은 확장 가능하며, 추후 대화와 요구사항 변경에 따라 자동으로 업데이트할 수 있습니다.

1. 개요

  • 이름: supERPort

  • 기술 스택: Flutter

  • 주요 화면:

    1. 장비 입고

    2. 장비 출고

    3. 회사 등록

    4. 사용자 등록

    5. 라이센스 등록

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 기능 제공

  • 필수 데이터

    1. 제조사명 (varchar 필수)

    2. 장비명 (varchar 필수)

    3. 대분류 / 중분류 / 소분류 (varchar, Email 선택 UI 유사 방식)

    4. 시리얼 넘버 (varchar)

    5. 바코드 입력 (varchar, 차후에 바코드 스캔 기능과 연동 예정)

    6. 물품 수 (int 필수)

      • 시리얼 번호가 존재할 경우 1 고정 및 수정 불가

      • 시리얼 번호가 없으면 직접 입력

    7. 입고일 (datetime)

      • 당일 날짜를 기본값으로 설정

      • 캘린더에서 과거 날짜만 선택 가능

    8. (DB 연계 시) 장비(장비이력) 테이블과 매핑

      • 입출고는 “I”(입고)로 기록

      • 발생시간: 입고 시점(= 입고일)

3.2 장비 출고 화면

  • 등록 후 리스트로 관리

    • 새 출고 정보 등록 (Form)

    • 출고 기록 목록 표시 및 편집 기능

  • 필수 데이터

    1. 장비명 (varchar 필수)

    2. 대분류 / 중분류 / 소분류 (출고 시점에 불러오고 수정 가능 여부는 정책 결정)

    3. 시리얼 넘버 (varchar)

    4. 바코드 (varchar, 바코드 스캔 기능 연동 예정)

    5. 출고 수량 (int 필수)

    6. 출고일 (datetime)

    7. (DB 연계 시) 장비(장비이력) 테이블과 매핑

      • 입출고는 “O”(출고)로 기록

      • 발생시간: 출고 시점(= 출고일)

3.3 회사 등록 화면

  • 등록 후 리스트로 관리

    • 새 회사 정보 등록 (Form)

    • 회사 목록 조회 및 편집

  • 필수 데이터

    1. 회사명 (varchar 필수)

    2. 주소 (varchar)

    3. (확장) 지점 정보 (Optional / 별도 화면 구성 가능)

      • 지점명 (varchar)

      • 대표전화번호 (varchar)

      • 주소 (varchar)

    4. (DB 연계 시) 고객(회사) / 고객(지점) 테이블 매핑

      • 회사 ID, 지점 ID 등 Primary Key, FK 관계

3.4 사용자 등록 화면

  • 등록 후 리스트로 관리

    • 사용자(직원) 가입/등록 Form

    • 사용자 목록 조회 및 편집

  • 필수 데이터

    1. 이름 (varchar 필수)

    2. 소속 회사ID (int)

    3. 관리등급 (char) 예) S(관리자), M(멤버)

    4. (DB 연계 시) 서비스(직원) 테이블 매핑

3.5 라이센스 등록 화면

  • 등록 후 리스트로 관리

    • 유지보수 라이센스 정보 등록 (Form)

    • 등록된 라이센스 목록 표시 및 편집

  • 필수 데이터

    1. 서비스(회사)ID (int) 라이센스가 적용될 회사/서비스 정보

    2. 라이센스명 (varchar, 예: “1년 유지보수”)

    3. 라이센스기간 (int, 월 단위)

    4. 방문주기 (int, 유지보수 방문 주기)

    5. (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

  • 필수 폴더 구조와 기능

  1. equipment_in (리스트 & 폼)

  2. equipment_out (리스트 & 폼)

  3. company (리스트 & 폼)

  4. 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 형식으로 다운로드해, 버전 관리 시스템에 추가하거나 직접 열람할 수 있습니다.