사용자 테이블(p_users)
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| id | Long | PK, AI |
| user_id | VARCHAR(10) | 사용자 ID, Primary Key / 최소 4자 이상 10자 이하의 알파벳 소문자(a~z)와 숫자(0~9)로 구성 |
| user_name | VARCHAR(20) | 사용자 이름 |
| password | VARCHAR(15) | 사용자 비밀번호 / 최소 8자 이상 15자 이하의 알파벳 대소문자(a~z, A~Z)와 숫자(0~9), 특수문자로 구성 |
| phone_number | VARCHAR(13) | 사용자 전화번호 |
| user_role | ENUM | 사용자 역할(SHIPPER, HUB_ADMIN, COMPANY, MASTER) |
| is_delete | boolean | 삭제 여부 Column |
| created_at | TIMESTAMP | 레코드 생성 시간 |
| created_by | VARCHAR(100) | 레코드 생성자 (username) |
| updated_at | TIMESTAMP | 레코드 수정 시간 |
| updated_by | VARCHAR(100) | 레코드 수정자 (username) |
| deleted_at | TIMESTAMP | 레코드 삭제 시간 |
| deleted_by | VARCHAR(100) | 레코드 삭제자 (username) |
허브 테이블(p_hubs)
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| id | Long | Primary Key |
| hub_name | VARCHAR(100) | 허브 이름 |
| address | String | 허브 주소 |
| latitude | Double | 허브 주소 위치 위도 |
| longitude | Double | 허브 주소 위치 경도 |
| created_at | TIMESTAMP | 레코드 생성 시간 |
| created_by | VARCHAR(100) | 레코드 생성자 (username) |
| updated_at | TIMESTAMP | 레코드 수정 시간 |
| updated_by | VARCHAR(100) | 레코드 수정자 (username) |
| deleted_at | TIMESTAMP | 레코드 삭제 시간 |
| deleted_by | VARCHAR(100) | 레코드 삭제자 (username) |
허브 이동 정보 테이블(p_hub_movement_infos)
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| id | Long | 허브 이동 정보 테이블 ID |
| start_hub | Long | 출발 허브 ID |
| end_hub | Long | 도착 허브 ID |
| estimated_time | Time | 예상 소요 시간 |
| estimated_distance | Double | 예상 소요 거리 |
| is_delete | boolean | 삭제 여부 |
| created_at | TIMESTAMP | 레코드 생성 시간 |
| created_by | VARCHAR(100) | 레코드 생성자 (username) |
| updated_at | TIMESTAMP | 레코드 수정 시간 |
| updated_by | VARCHAR(100) | 레코드 수정자 (username) |
| deleted_at | TIMESTAMP | 레코드 삭제 시간 |
| deleted_by | VARCHAR(100) | 레코드 삭제자 (username) |
배송 담당자 테이블(p_delivery_managers)
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| id | Long | Primary Key |
| user_id | Long | User_id |
| hub_id | Long | Hub id (허브 이동 담당자 : 임의로 0 삽입) |
| slack_id | String | slack Id |
| manager_type | ENUM | 허브 이동 담당자, 업체 배송 담당자 |
| is_delete | is_delete | 삭제 여부 |
| created_at | TIMESTAMP | 레코드 생성 시간 |
| created_by | VARCHAR(100) | 레코드 생성자 (username) |
| updated_at | TIMESTAMP | 레코드 수정 시간 |
| updated_by | VARCHAR(100) | 레코드 수정자 (username) |
| deleted_at | TIMESTAMP | 레코드 삭제 시간 |
| deleted_by | VARCHAR(100) | 레코드 삭제자 (username) |
업체 테이블(p_companies)
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| id | Long | Primary Key |
| hub_id | Long | 업체를 담당하고 있는 Hub_id ( 현재 1:1 매칭 담당 가정 ) |
| name | String | 업체명 |
| type | ENUM | 공급 업체, 수령 업체 |
| address | String | 업체 주소 |
| is_delete | is_delete | 삭제 여부 |
| created_at | TIMESTAMP | 레코드 생성 시간 |
| created_by | VARCHAR(100) | 레코드 생성자 (username) |
| updated_at | TIMESTAMP | 레코드 수정 시간 |
| updated_by | VARCHAR(100) | 레코드 수정자 (username) |
| deleted_at | TIMESTAMP | 레코드 삭제 시간 |
| deleted_by | VARCHAR(100) | 레코드 삭제자 (username) |
상품 테이블(p_products)
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| id | Long | PK, AI |
| company_id | Long | 업체 ID, FK |
| hub_id | Long | 허브 ID, FK |
| product_name | VARCHAR(100) | 상품 명 |
| quantity | INTEGER | 상품 수량 |
| is_delete | Boolean | 삭제 여부 Column |
| created_at | TIMESTAMP | 레코드 생성 시간 |
| created_by | VARCHAR(100) | 레코드 생성자 (username) |
| updated_at | TIMESTAMP | 레코드 수정 시간 |
| updated_by | VARCHAR(100) | 레코드 수정자 (username) |
| deleted_at | TIMESTAMP | 레코드 삭제 시간 |
| deleted_by | VARCHAR(100) | 레코드 삭제자 (username) |
주문 테이블(p_orders)
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| id | Long | PK, AI |
| supply_company_id | Long | 공급업체 ID, FK |
| demand_company_id | Long | 수령업체 ID, FK |
| product_id | Long | 상품 ID, FK |
| amount | INTEGER | 주문 수량 |
| delivery_id | Long | 주문 ID, FK |
| is_delete | Boolean | 삭제 여부 Column |
| created_at | TIMESTAMP | 레코드 생성 시간 |
| created_by | VARCHAR(100) | 레코드 생성자 (username) |
| updated_at | TIMESTAMP | 레코드 수정 시간 |
| updated_by | VARCHAR(100) | 레코드 수정자 (username) |
| deleted_at | TIMESTAMP | 레코드 삭제 시간 |
| deleted_by | VARCHAR(100) | 레코드 삭제자 (username) |
배송 테이블(p_deliveries)
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| id | Long | 배송 ID |
| order_id | Long | 주문 ID |
| delivery_status | ENUM | 현재상태(허브 대기중, 허브 이동중, 목적지 허브 도착, 배송중 등) |
| start_hub | Long | 시작 허브 ID |
| end_hub | Long | 도착 허브 ID |
| address | String | 배송지 주소 |
| recipient | String | 수령인 |
| recipient_slack | String | 수령인 slack ID |
| is_delete | boolean | 삭제 여부 |
| created_at | TIMESTAMP | 레코드 생성 시간 |
| created_by | VARCHAR(100) | 레코드 생성자 (username) |
| updated_at | TIMESTAMP | 레코드 수정 시간 |
| updated_by | VARCHAR(100) | 레코드 수정자 (username) |
| deleted_at | TIMESTAMP | 레코드 삭제 시간 |
| deleted_by | VARCHAR(100) | 레코드 삭제자 (username) |
배송 경로 기록 테이블(p_delivery_routes)
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| id | Long | 배송 경로 기록 ID |
| delivery_id | Long | 배송 ID |
| hub_movement_info | Long | 허브 이동경로 ID |
| sequence | Long | 배송 순서 |
| distance | Double | 실제 걸린 거리 |
| duration_time | Time | 실제 걸린 시간 |
| route_status | ENUM | 현재상태(허브 대기중, 허브 이동중, 목적지 허브 도착, 배송중 등) |
| is_delete | boolean | 삭제여부 |
| created_at | TIMESTAMP | 레코드 생성 시간 |
| created_by | VARCHAR(100) | 레코드 생성자 (username) |
| updated_at | TIMESTAMP | 레코드 수정 시간 |
| updated_by | VARCHAR(100) | 레코드 수정자 (username) |
| deleted_at | TIMESTAMP | 레코드 삭제 시간 |
| deleted_by | VARCHAR(100) | 레코드 삭제자 (username) |
슬랙 메시지 테이블(p_slack_message)
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| id | Long | Primary Key |
| receiver_id | Long | 수신자 User Id |
| message | String | 메시지 내용 |
| send_time | TIMESTAMP | 보낸 시각 |
| created_at | TIMESTAMP | 레코드 생성 시간 |
| created_by | VARCHAR(100) | 레코드 생성자 (username) |
| updated_at | TIMESTAMP | 레코드 수정 시간 |
| updated_by | VARCHAR(100) | 레코드 수정자 (username) |
| deleted_at | TIMESTAMP | 레코드 삭제 시간 |
| deleted_by | VARCHAR(100) | 레코드 삭제자 (username) |