← 웹사이트에서 읽기PDF 다운로드 ↓

Knowmerce C · 수정 전체 ERD v0.3

자동화 브라우저 처리 / 3PL 통합 / 상품별 입출고 관계 강조

제안 16개 테이블FK 28개
계정·상품 기준4 tables · 전체 컬럼 표시입출고 요청·상품 행·협업6 tables · 전체 컬럼 표시3PL 관리·배송 요금2 tables · 전체 컬럼 표시현재고·입출고 원장2 tables · 전체 컬럼 표시상시판매 규칙·대상 상품2 tables · 전체 컬럼 표시products.project_id → product_projects.id | 부모 1건당 자식 0..N; 자식당 부모 1products.project_id → product_projects.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1products.created_by → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1products.created_by → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1product_warehouses.product_id → products.id | 부모 1건당 자식 0..N; 자식당 부모 1product_warehouses.product_id → products.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1product_warehouses.warehouse_id → warehouses.id | 부모 1건당 자식 0..N; 자식당 부모 1product_warehouses.warehouse_id → warehouses.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1logistics_requests.requester_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1logistics_requests.requester_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1logistics_requests.assignee_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 0..1logistics_requests.assignee_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 0..1N:0..1logistics_requests.warehouse_id → warehouses.id | 부모 1건당 자식 0..N; 자식당 부모 0..1logistics_requests.warehouse_id → warehouses.id | 부모 1건당 자식 0..N; 자식당 부모 0..1N:0..1request_lines.request_id → logistics_requests.id | 부모 1건당 자식 0..N; 자식당 부모 1request_lines.request_id → logistics_requests.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1request_lines.product_id → products.id | 부모 1건당 자식 0..N; 자식당 부모 1request_lines.product_id → products.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1request_changes.request_id → logistics_requests.id | 부모 1건당 자식 0..N; 자식당 부모 1request_changes.request_id → logistics_requests.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1request_changes.requested_by → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1request_changes.requested_by → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1request_changes.reviewed_by → actors.id | 부모 1건당 자식 0..N; 자식당 부모 0..1request_changes.reviewed_by → actors.id | 부모 1건당 자식 0..N; 자식당 부모 0..1N:0..1request_change_lines.change_id → request_changes.id | 부모 1건당 자식 0..N; 자식당 부모 1request_change_lines.change_id → request_changes.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1request_change_lines.request_line_id → request_lines.id | 부모 1건당 자식 0..N; 자식당 부모 1request_change_lines.request_line_id → request_lines.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1project_comments.request_id → logistics_requests.id | 부모 1건당 자식 0..N; 자식당 부모 1project_comments.request_id → logistics_requests.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1project_comments.actor_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1project_comments.actor_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1request_status_history.request_id → logistics_requests.id | 부모 1건당 자식 0..N; 자식당 부모 1request_status_history.request_id → logistics_requests.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1request_status_history.actor_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1request_status_history.actor_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1warehouses.created_by → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1warehouses.created_by → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1warehouse_shipping_rates.warehouse_id → warehouses.id | 부모 1건당 자식 0..N; 자식당 부모 1warehouse_shipping_rates.warehouse_id → warehouses.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1inventory_balances.product_warehouse_id → product_warehouses.id | 부모 1건당 자식 0..1; 자식당 부모 1inventory_balances.product_warehouse_id → product_warehouses.id | 부모 1건당 자식 0..1; 자식당 부모 11:1inventory_movements.product_warehouse_id → product_warehouses.id | 부모 1건당 자식 0..N; 자식당 부모 1inventory_movements.product_warehouse_id → product_warehouses.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1inventory_movements.request_line_id → request_lines.id | 부모 1건당 자식 0..N; 자식당 부모 0..1inventory_movements.request_line_id → request_lines.id | 부모 1건당 자식 0..N; 자식당 부모 0..1N:0..1inventory_movements.actor_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1inventory_movements.actor_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1recurring_rules.warehouse_id → warehouses.id | 부모 1건당 자식 0..N; 자식당 부모 1recurring_rules.warehouse_id → warehouses.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1recurring_rules.created_by → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1recurring_rules.created_by → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1recurring_rule_lines.rule_id → recurring_rules.id | 부모 1건당 자식 0..N; 자식당 부모 1recurring_rule_lines.rule_id → recurring_rules.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1recurring_rule_lines.product_id → products.id | 부모 1건당 자식 0..N; 자식당 부모 1recurring_rule_lines.product_id → products.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1actors · 사용자 계정actors사용자 계정고유 식별자PKidtext로그인 IDlogin_idtextnametextrequester / staff / adminroletextteamtext비밀번호 해시password_hashtext해시 솔트password_salttextcreated_atdatetimeproduct_projects · 상품 프로젝트product_projects상품 프로젝트고유 식별자PKidtext예: GOLDEN HOURnametextcreated_atdatetimeproducts · 상품 마스터products상품 마스터고유 식별자PKidtext프론트가 계산하여 전송하는 품번 · 문자열sku_numbertext → product_projects.idFKproject_idtext[프로젝트]_상품명nametext자사 / 타사ownershiptext상품 / 제품 / 증정 / 대행 / 앨범categorytext없으면 NULLbarcode ?text미설정 시 자동화 화면에서 입력pack_capacity ?integer미설정 시 자동화 화면에서 입력charge_weight_g ?integeris_giftinteger → actors.idFKcreated_bytextcreated_atdatetimeproduct_warehouses · 상품·3PL 보관 매핑product_warehouses상품·3PL 보관 매핑고유 식별자PKidtext → products.idFKproduct_idtext → warehouses.idFKwarehouse_idtext외부 WMS 품번wms_sku ?textlogistics_requests · 입출고 요청 헤더logistics_requests입출고 요청 헤더고유 식별자PKidtext목록 표시 번호request_numinteger물류 요청 이름 · 필수request_nametextINBOUND / OUTBOUNDdirectiontext → actors.idFKrequester_idtext물류 담당자 · 미정 허용 → actors.idFKassignee_id ?text처리 3PL · 미정 허용 → warehouses.idFKwarehouse_id ?text입력완료 / 검토대기 / 논의 / 진행 / 완료 / 이슈 / 취소statustext입출고 시행 예정일scheduled_atdatetime완료 예상 시점expected_end_at ?datetime실제 완료 시점completed_at ?datetime입고방식 선택inbound_method ?text상품 입고 속성 · 요청 전체 적용inbound_attribute ?text출고사유outbound_reason ?text출고 필수recipient ?text출고 필수phone ?text문자열postal_code ?text출고 주소address ?text차량/송장transport_info ?text수입 국가origin_country ?text특이사항note ?textcreated_atdatetimerequest_lines · 입출고 요청 상품 행request_lines입출고 요청 상품 행고유 식별자PKidtext → logistics_requests.idFKrequest_idtext → products.idFKproduct_idtext화면 행 순서line_nointeger요청 당시 products.sku_numbersku_number_snapshottext요청 당시 상품명name_snapshottext신규는 1 이상 / 제출 후 물류팀은 0 허용requested_qtyinteger실제 수량 · 미확인 NULLactual_qty ?integerrequest_changes · 수정 요청request_changes수정 요청고유 식별자PKidtext → logistics_requests.idFKrequest_idtext → actors.idFKrequested_bytextreasontext변경 요청 일정proposed_scheduled_at ?datetimePENDING / APPROVED / REJECTED / VOIDstatustext검토자 → actors.idFKreviewed_by ?text검토 시각reviewed_at ?datetimecreated_atdatetimerequest_change_lines · 수정 요청 상품별 수량request_change_lines수정 요청 상품별 수량고유 식별자PKidtext → request_changes.idFKchange_idtext → request_lines.idFKrequest_line_idtextproposed_qtyintegerproject_comments · 요청 댓글·메모project_comments요청 댓글·메모고유 식별자PKidtext → logistics_requests.idFKrequest_idtext → actors.idFKactor_idtextbodytextcreated_atdatetimerequest_status_history · 입출고 상태 이력request_status_history입출고 상태 이력고유 식별자PKidtext → logistics_requests.idFKrequest_idtext → actors.idFKactor_idtext처음 생성은 NULLfrom_status ?textto_statustext이유reason ?textcreated_atdatetimewarehouses · 3PL 업체·주소·기본 비용warehouses3PL 업체·주소·기본 비용고유 식별자PKidtext다보내 / 패스트박스 등 3PL 업체명nametext우편번호postal_code ?text기본 주소addresstext상세 주소address_detail ?text담당자contact_name ?text연락처contact_phone ?text운영 메모memo ?text국내 배송 기본비domestic_base_fee ?decimal국내 작업료domestic_labor_fee ?decimal해외 작업료overseas_labor_fee ?decimal부자재 비용material_fee ?decimal이 수량까지 추가 작업비 없음free_item_qty ?integer초과 상품 1개당 추가 작업비extra_unit_fee ?decimal추가 작업비 상한 · 없으면 NULLextra_fee_cap ?decimal → actors.idFKcreated_bytextcreated_atdatetimewarehouse_shipping_rates · 3PL별 국가·무게 배송비warehouse_shipping_rates3PL별 국가·무게 배송비고유 식별자PKidtext → warehouses.idFKwarehouse_idtext국가 코드country_codetext하한 초과weight_from_ginteger상한 이하weight_to_ginteger구간 배송 요금 · 원shipping_feedecimalinventory_balances · 상품·3PL별 현재고inventory_balances상품·3PL별 현재고 → product_warehouses.idP/Fproduct_warehouse_idtextNULL 미확인 / 0 확인된 품절quantity ?integer재고 확인 시각verified_at ?datetimeupdated_atdatetimeinventory_movements · 상품 입출고·재고조정 이력inventory_movements상품 입출고·재고조정 이력고유 식별자PKidtext → product_warehouses.idFKproduct_warehouse_idtext기초재고/수동 조정은 NULL → request_lines.idFKrequest_line_id ?text → actors.idFKactor_idtextOPENING / INBOUND / OUTBOUND / ADJUSTMENTmovement_typetext입고 + / 출고 - / 조정 +/-quantity_deltaintegerreasontextcreated_atdatetimerecurring_rules · 상시판매 규칙 헤더recurring_rules상시판매 규칙 헤더고유 식별자PKidtext화면에서 구분할 규칙 이름nametext → warehouses.idFKwarehouse_idtext → actors.idFKcreated_bytextrecurring_rule_lines · 상시판매 규칙 대상 상품recurring_rule_lines상시판매 규칙 대상 상품고유 식별자PKidtext → recurring_rules.idFKrule_idtext → products.idFKproduct_idtextC 통합 서비스 · 전체 논리 모델16 tables / 28 FK relations / 5 domains요청·재고·협업 + 3PL + 상시판매 규칙미래 운영 설계안 · 현재 DB에 미적용실제 물리 테이블 5개 · 명시적 FK 1개workspace_owner_id / owner_id의 값 연결에는 SQL FK가 선언되어 있지 않다.actor_sessions.actor_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1actor_sessions.actor_id → actors.id | 부모 1건당 자식 0..N; 자식당 부모 1N:1flow_workspaces · 현재 업무 상태 컨테이너flow_workspaces현재 업무 상태 컨테이너PKowner_idTEXTdata (업무 전체 JSON)TEXTrevisionINTEGERactors · 현재 계정 테이블actors현재 계정 테이블PKidTEXTUQloginTEXTworkspace_owner_idTEXTnameTEXTroleTEXTteamTEXTpassword_hashTEXTpassword_saltTEXTmust_resetINTEGERcredential_versionINTEGERcreated_atTEXTactor_sessions · 현재 사용자 세션actor_sessions현재 사용자 세션PKtoken_hashTEXT → actors.idFKactor_idTEXTcredential_versionINTEGERexpires_atINTEGERreview_sessions · 리뷰 로그인 세션review_sessions리뷰 로그인 세션PKtoken_hashTEXTowner_idTEXTexpires_atINTEGERreview_login_attempts · 로그인 실패 제한review_login_attempts로그인 실패 제한PKattempt_keyTEXTfailuresINTEGERwindow_startINTEGER
휠 확대 · 드래그 이동 · 표 선택 → 연결 관계 · ? NULL 허용
계정·상품 기준입출고 요청·상품 행·협업3PL 관리·배송 요금현재고·입출고 원장상시판매 규칙·대상 상품