# DB_SCHEMA 작성일: 2026-08-07 13:28:27 ## 1. DB 기본 정보 - DB 파일: `/opt/kvcs/data/ai_cs.db` - DB 크기: `64.05 MB` - DB 수정일: `2026-08-07 13:20:12` - 테이블 수: `11` - 총 row 수: `76416` ## 2. DB 사용 원칙 - 이 문서는 AICS SQLite DB 구조를 새 대화방, Claude, Codex, 근무자에게 설명하기 위한 기준 문서다. - 현재 AICS DB는 `/opt/kvcs/data/ai_cs.db` 파일을 사용한다. - 1단계 DB 관리는 조회 전용이다. - 원본 데이터 테이블은 직접 수정하지 않는다. - 처리 상태, 메모, AI 정리본 등은 별도 테이블로 분리해서 확장한다. - 본서버 데이터를 바꾸는 쓰기 API와 AICS DB 원본 수정은 별도 승인/백업/로그 정책이 필요하다. ## 3. 테이블 요약 | 테이블 | 설명 | rows | 사용 화면 | 정책 | |---|---:|---:|---|---| | `ai_board_analysis` | 게시판 분석 결과 | 24247 | 게시판 업무, 업무 카테고리 | 분석 결과는 수정 가능 후보지만, 원문은 수정하지 않습니다. | | `ai_board_items` | 게시판 원본 데이터 | 52037 | 향후 /aics/board, 업무 카테고리, 게시판 정리 데이터 | 원본성 데이터라 직접 수정 금지. 필요한 경우 별도 처리상태 테이블을 연결합니다. | | `ai_cs_items` | 소매 CS 분석 이력 | 28 | 향후 소매점360, 카톡 정리 데이터 | 기존 데이터 보존. 새 AICS에서는 별도 구조로 재설계 예정입니다. | | `ai_wh_kakao_tasks` | 중도매 CS톡 업무카드 | 71 | 향후 중도매360, 카톡 정리 데이터 | 기존 /cs 화면과 새 /aics 화면을 섞지 않고 참고용으로 봅니다. | | `import_products` | import_products | 10 | | | | `import_suppliers` | import_suppliers | 5 | | | | `kakao_attachments` | kakao_attachments | 4 | | | | `kakao_photo_item_links` | kakao_photo_item_links | 2 | | | | `kakao_photo_matches` | kakao_photo_matches | 2 | | | | `kakao_raw_sessions` | kakao_raw_sessions | 1 | | | | `sqlite_sequence` | SQLite 자동증가 관리 테이블 | 9 | 관리 참고용 | 직접 수정 금지. | ## 4. 테이블 상세 ### 4.1. `ai_board_analysis` - 한글명: 게시판 분석 결과 - 용도: 게시판 글에 대한 AI 분석/요약/분류 결과를 저장하는 테이블입니다. - 출처: AICS 수동 분석 또는 기존 분석 기능 - 사용 화면: 게시판 업무, 업무 카테고리 - 정책: 분석 결과는 수정 가능 후보지만, 원문은 수정하지 않습니다. - rows: `24247` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `id` | `INTEGER` | 1 | 0 | `None` | | `board_item_id` | `INTEGER` | 0 | 1 | `None` | | `priority` | `TEXT` | 0 | 1 | `'normal'` | | `category` | `TEXT` | 0 | 1 | `'etc'` | | `summary` | `TEXT` | 0 | 1 | `''` | | `customer_intent` | `TEXT` | 0 | 1 | `''` | | `check_items` | `TEXT` | 0 | 1 | `''` | | `suggested_reply` | `TEXT` | 0 | 1 | `''` | | `status` | `TEXT` | 0 | 1 | `'new'` | | `memo` | `TEXT` | 0 | 1 | `''` | | `analyzed_at` | `TEXT` | 0 | 1 | `''` | | `created_at` | `TEXT` | 0 | 1 | `''` | | `updated_at` | `TEXT` | 0 | 1 | `''` | #### 샘플 데이터 ```json [ { "id": "48297", "board_item_id": "97033", "priority": "normal", "category": "etc", "summary": "", "customer_intent": "", "check_items": "", "suggested_reply": "", "status": "new", "memo": "", "analyzed_at": "", "created_at": "2026-06-09 15:40:45", "updated_at": "2026-06-09 15:40:45" }, { "id": "48296", "board_item_id": "96855", "priority": "high", "category": "address_change", "summary": "문의합니다.\n안녕하세요,\n주문번호 2026052816330042 건 주소 변경 부탁드립니다!\n\n김근선\n01071061593\n서울시 광진구 광나루로56길 34, 구의현대2단지 204", "customer_intent": "배송 전 주소 변경 가능 여부 확인이 필요한 문의입니다.", "check_items": "[\"Check order number\", \"Check shop/customer name\", \"Check product name, color, size\", \"Check current order status\", \"Check stock/delivery status\", \"Check whether shipping request is already processed\"]", "suggested_reply": "고객님, 주소변경 요청 확인했습니다. 현재 배송요청 처리 여부를 확인한 뒤 변경 가능 여부를 안내드리겠습니다.", "status": "new", "memo": "", "analyzed_at": "2026-06-08 15:50:11", "created_at": "2026-06-08 15:45:11", "updated_at": "2026-06-08 15:50:11" }, { "id": "48295", "board_item_id": "96854", "priority": "urgent", "category": "refund_cancel", "summary": "문의합니다.\n해당 보스톤이어매쉬캡 배송취소 요청드립니다.", "customer_intent": "환불 또는 취소 가능 여부 확인이 필요한 문의입니다.", "check_items": "[\"Check order number\", \"Check shop/customer name\", \"Check product name, color, size\", \"Check current order status\", \"Check stock/delivery status\"]", "suggested_reply": "고객님, 환불/취소 요청 확인했습니다. 주문상태와 처리 가능 여부를 확인한 뒤 안내드리겠습니다.", "status": "new", "memo": "", "analyzed_at": "2026-06-08 15:50:11", "created_at": "2026-06-08 15:45:11", "updated_at": "2026-06-08 15:50:11" } ] ``` ### 4.2. `ai_board_items` - 한글명: 게시판 원본 데이터 - 용도: 키빌 본서버 QA 게시판 글/댓글/연결 주문 후보를 AICS에 저장한 테이블입니다. - 출처: 키빌 본서버 qa_board_export_v2.php - 사용 화면: 향후 /aics/board, 업무 카테고리, 게시판 정리 데이터 - 정책: 원본성 데이터라 직접 수정 금지. 필요한 경우 별도 처리상태 테이블을 연결합니다. - rows: `52037` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `id` | `INTEGER` | 1 | 0 | `None` | | `source` | `TEXT` | 0 | 1 | `'kidsvillage'` | | `board` | `TEXT` | 0 | 1 | `'qa'` | | `source_table` | `TEXT` | 0 | 1 | `''` | | `post_id` | `INTEGER` | 0 | 1 | `None` | | `parent_id` | `INTEGER` | 0 | 1 | `0` | | `item_type` | `TEXT` | 0 | 1 | `'question'` | | `kv_category` | `TEXT` | 0 | 1 | `''` | | `subject` | `TEXT` | 0 | 1 | `''` | | `content_html` | `TEXT` | 0 | 1 | `''` | | `content_text` | `TEXT` | 0 | 1 | `''` | | `writer_id` | `TEXT` | 0 | 1 | `''` | | `writer_name` | `TEXT` | 0 | 1 | `''` | | `writer_name_masked` | `TEXT` | 0 | 1 | `''` | | `is_secret` | `INTEGER` | 0 | 1 | `0` | | `source_created_at` | `TEXT` | 0 | 1 | `''` | | `source_updated_at` | `TEXT` | 0 | 1 | `''` | | `source_url` | `TEXT` | 0 | 1 | `''` | | `content_hash` | `TEXT` | 0 | 1 | `''` | | `created_at` | `TEXT` | 0 | 1 | `''` | | `updated_at` | `TEXT` | 0 | 1 | `''` | | `display_no` | `INTEGER` | 0 | 1 | `0` | | `display_no_category` | `INTEGER` | 0 | 1 | `0` | | `source_deleted` | `INTEGER` | 0 | 0 | `0` | | `source_deleted_at` | `TEXT` | 0 | 0 | `None` | | `source_status` | `TEXT` | 0 | 0 | `'active'` | | `linked_orders_json` | `TEXT` | 0 | 1 | `''` | | `linked_order_numbers` | `TEXT` | 0 | 1 | `''` | | `attachment_urls` | `TEXT` | 0 | 1 | `''` | | `attachment_source_post_id` | `TEXT` | 0 | 1 | `''` | | `attachment_source_reason` | `TEXT` | 0 | 1 | `''` | | `related_attachment_urls` | `TEXT` | 0 | 1 | `''` | | `related_attachment_source_post_id` | `TEXT` | 0 | 1 | `''` | | `related_attachment_source_reason` | `TEXT` | 0 | 1 | `''` | | `related_attachment_source_display_no` | `TEXT` | 0 | 1 | `''` | | `related_attachment_source_item_id` | `TEXT` | 0 | 1 | `''` | | `related_attachment_source_preview` | `TEXT` | 0 | 1 | `''` | | `ai_status` | `TEXT` | 0 | 1 | `'new'` | | `priority` | `TEXT` | 0 | 1 | `'normal'` | | `data_rule_json` | `TEXT` | 0 | 1 | `''` | | `data_rule_analyzed_at` | `TEXT` | 0 | 1 | `''` | | `data_rule_hash` | `TEXT` | 0 | 1 | `''` | | `data_rule_status` | `TEXT` | 0 | 1 | `''` | | `data_rule_error` | `TEXT` | 0 | 1 | `''` | #### 샘플 데이터 ```json [ { "id": "100278", "source": "kidsvillage", "board": "qa", "source_table": "g5_write_qa", "post_id": "53597", "parent_id": "53597", "item_type": "question", "kv_category": "입금확인", "subject": "문의합니다.", "content_html": "입금후 충전신청해서 그런지 3일째 충전확인도 안되네요.\r\n문의답변도 계속 없으시고 \r\n고객센터 전화도 안받으시고\r\n휴가 며칠안남으셨는데 그전에 확인좀 제발 빨리 부탁드립니다...", "content_text": "입금후 충전신청해서 그런지 3일째 충전확인도 안되네요.\n문의답변도 계속 없으시고 \n고객센터 전화도 안받으시고\n휴가 며칠안남으셨는데 그전에 확인좀 제발 빨리 부탁드립니다...", "writer_id": "smz9504", "writer_name": "타니앤빵", "writer_name_masked": "타니앤빵", "is_secret": "1", "source_created_at": "2026-08-07 13:11:19", "source_updated_at": "2026-08-07 13:11:19", "source_url": "https://kidsvillage.co.kr/bbs/board.php?bo_table=qa&wr_id=53597", "content_hash": "3f562db29e55ba20ad9c696aa8b573b319cf1ca655eb806de5116441a08e642f", "created_at": "2026-08-07 13:15:09", "updated_at": "2026-08-07 13:25:09", "display_no": "25897", "display_no_category": "815", "source_deleted": "0", "source_deleted_at": "", "source_status": "active", "linked_orders_json": "[]", "linked_order_numbers": "", "attachment_urls": "[]", "attachment_source_post_id": "", "attachment_source_reason": "", "related_attachment_urls": "", "related_attachment_source_post_id": "", "related_attachment_source_reason": "", "related_attachment_source_display_no": "", "related_attachment_source_item_id": "", "related_attachment_source_preview": "", "ai_status": "new", "priority": "normal", "data_rule_json": "{\"success\": true, \"gpt_used\": false, \"engine\": \"rule_based_v0.1\", \"input\": {\"writer_name\": \"타니앤빵\", \"category\": \"입금확인\", \"subject\": \"문의합니다.\", \"text\": \"입금후 충전신청해서 그런지 3일째 충전확인도 안되네요.\\n문의답변도 계속 없으시고 \\n고객센터 전화도 안받으시고\\n휴가 며칠안남으셨는데 그전에 확인좀 제발 빨리 부탁드립니다...\"}, \"detected\": {\"intent\": \"입고시기 재문의\", \"product_request\": {\"brand\": \"\", \"product_name\": \"\", \"color\": \"\", \"size\": \"\", \"raw\": \"\"}}, \"kv_lookup_used\": true, \"kv_lookup_limit\": 80, \"member\": {\"mb_id\": \"smz9504\", \"mb_name_masked\": \"신*지\", \"mb_nick\": \"타니앤빵\", ...", "data_rule_analyzed_at": "2026-08-07 13:15:13", "data_rule_hash": "3f562db29e55ba20ad9c696aa8b573b319cf1ca655eb806de5116441a08e642f", "data_rule_status": "done", "data_rule_error": "" }, { "id": "100277", "source": "kidsvillage", "board": "qa", "source_table": "g5_write_qa", "post_id": "53596", "parent_id": "53596", "item_type": "question", "kv_category": "일반문의", "subject": "문의합니다.", "content_html": "소재 문의드려요\r\n\r\n비다이어리\r\n프린세스맨투맨 소재", "content_text": "소재 문의드려요\n\n비다이어리\n프린세스맨투맨 소재", "writer_id": "Polohh18", "writer_name": "찜콩마켓", "writer_name_masked": "찜콩마켓", "is_secret": "1", "source_created_at": "2026-08-07 12:10:41", "source_updated_at": "2026-08-07 12:10:41", "source_url": "https://kidsvillage.co.kr/bbs/board.php?bo_table=qa&wr_id=53596", "content_hash": "66b38ef7443d7455b48634f3cd025ced5602a344d388226630f5a7fde62b242d", "created_at": "2026-08-07 12:15:09", "updated_at": "2026-08-07 13:25:09", "display_no": "25896", "display_no_category": "2214", "source_deleted": "0", "source_deleted_at": "", "source_status": "active", "linked_orders_json": "[]", "linked_order_numbers": "", "attachment_urls": "[]", "attachment_source_post_id": "", "attachment_source_reason": "", "related_attachment_urls": "", "related_attachment_source_post_id": "", "related_attachment_source_reason": "", "related_attachment_source_display_no": "", "related_attachment_source_item_id": "", "related_attachment_source_preview": "", "ai_status": "new", "priority": "normal", "data_rule_json": "{\"success\": true, \"gpt_used\": false, \"engine\": \"rule_based_v0.1\", \"input\": {\"writer_name\": \"찜콩마켓\", \"category\": \"일반문의\", \"subject\": \"문의합니다.\", \"text\": \"소재 문의드려요\\n\\n비다이어리\\n프린세스맨투맨 소재\"}, \"detected\": {\"intent\": \"일반문의\", \"product_request\": {\"brand\": \"\", \"product_name\": \"\", \"color\": \"\", \"size\": \"\", \"raw\": \"\"}}, \"kv_lookup_used\": false, \"kv_lookup_limit\": 80, \"member\": {\"mb_id\": \"Polohh18\", \"mb_name_masked\": \"하*리\", \"mb_nick\": \"찜콩마켓\", \"mb_company\": \"찜콩마켓\", \"mb_hp_masked\": \"010-****-8770\", \"mb_tel_masked\": ...", "data_rule_analyzed_at": "2026-08-07 12:15:10", "data_rule_hash": "66b38ef7443d7455b48634f3cd025ced5602a344d388226630f5a7fde62b242d", "data_rule_status": "done", "data_rule_error": "" }, { "id": "100276", "source": "kidsvillage", "board": "qa", "source_table": "g5_write_qa", "post_id": "53595", "parent_id": "53595", "item_type": "question", "kv_category": "일반문의", "subject": "문의합니다.", "content_html": "교환신청한거 안왔는데 불량건이요 3가지다 안왔는데요", "content_text": "교환신청한거 안왔는데 불량건이요 3가지다 안왔는데요", "writer_id": "thdalswjd2863", "writer_name": "로에슈", "writer_name_masked": "로에슈", "is_secret": "1", "source_created_at": "2026-08-07 11:08:00", "source_updated_at": "2026-08-07 11:08:00", "source_url": "https://kidsvillage.co.kr/bbs/board.php?bo_table=qa&wr_id=53595", "content_hash": "200f51c309e7c79f382a172ffe7fc805faacd8597ebb0e1cfb754b3ac3e85f32", "created_at": "2026-08-07 11:10:11", "updated_at": "2026-08-07 13:25:09", "display_no": "25895", "display_no_category": "2213", "source_deleted": "0", "source_deleted_at": "", "source_status": "active", "linked_orders_json": "[]", "linked_order_numbers": "", "attachment_urls": "[]", "attachment_source_post_id": "", "attachment_source_reason": "", "related_attachment_urls": "", "related_attachment_source_post_id": "", "related_attachment_source_reason": "", "related_attachment_source_display_no": "", "related_attachment_source_item_id": "", "related_attachment_source_preview": "", "ai_status": "new", "priority": "normal", "data_rule_json": "{\"success\": true, \"gpt_used\": false, \"engine\": \"rule_based_v0.1\", \"input\": {\"writer_name\": \"로에슈\", \"category\": \"일반문의\", \"subject\": \"문의합니다.\", \"text\": \"교환신청한거 안왔는데 불량건이요 3가지다 안왔는데요\"}, \"detected\": {\"intent\": \"불량/오배송\", \"product_request\": {\"brand\": \"\", \"product_name\": \"\", \"color\": \"\", \"size\": \"\", \"raw\": \"\"}}, \"kv_lookup_used\": false, \"kv_lookup_limit\": 80, \"member\": {\"mb_id\": \"thdalswjd2863\", \"mb_name_masked\": \"송*정\", \"mb_nick\": \"로에슈\", \"mb_company\": \"로에슈\", \"mb_hp_masked\": \"010-****-1127\", \"mb_tel_masked...", "data_rule_analyzed_at": "2026-08-07 11:10:13", "data_rule_hash": "200f51c309e7c79f382a172ffe7fc805faacd8597ebb0e1cfb754b3ac3e85f32", "data_rule_status": "done", "data_rule_error": "" } ] ``` ### 4.3. `ai_cs_items` - 한글명: 소매 CS 분석 이력 - 용도: 소매점 카톡/CS 분석 결과를 저장하는 테이블입니다. - 출처: 소매 CS톡 분석 화면 - 사용 화면: 향후 소매점360, 카톡 정리 데이터 - 정책: 기존 데이터 보존. 새 AICS에서는 별도 구조로 재설계 예정입니다. - rows: `28` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `id` | `INTEGER` | 1 | 0 | `None` | | `source_type` | `TEXT` | 0 | 1 | `'kakao'` | | `raw_text` | `TEXT` | 0 | 1 | `''` | | `priority` | `TEXT` | 0 | 1 | `''` | | `category` | `TEXT` | 0 | 1 | `''` | | `summary` | `TEXT` | 0 | 1 | `''` | | `customer_intent` | `TEXT` | 0 | 1 | `''` | | `check_items` | `TEXT` | 0 | 1 | `''` | | `suggested_reply` | `TEXT` | 0 | 1 | `''` | | `need_human_confirm` | `INTEGER` | 0 | 1 | `1` | | `status` | `TEXT` | 0 | 1 | `'new'` | | `created_at` | `TEXT` | 0 | 1 | `''` | | `updated_at` | `TEXT` | 0 | 1 | `''` | | `memo` | `TEXT` | 0 | 1 | `''` | | `order_no` | `TEXT` | 0 | 1 | `''` | #### 샘플 데이터 ```json [ { "id": "28", "source_type": "kakao", "raw_text": "주문번호 : 2026060211365778 (기본주소지)\n주문번호 : 2026060111335651 (위탁주소지)\n\n기본주소지와 위탁주소지에 들어온 상품들을 합배로 받고싶은데 합배가 안되서요\n기본주소지 전체 상품 + 현재 위탁주소지 들어온 상품들 합배 요청부탁드립니다.", "priority": "normal", "category": "etc", "summary": "주문번호 : 2026060211365778 (기본주소지)\n주문번호 : 2026060111335651 (위탁주소지)\n\n기본주소지와 위탁주소지에 들어온 상품들을 합배로 받고싶은데 합배", "customer_intent": "관리자 확인이 필요한 일반 문의입니다.", "check_items": "[\"Check order number\", \"Check shop/customer name\", \"Check product name, color, size\", \"Check current order status\", \"Check stock/delivery status\"]", "suggested_reply": "고객님, 문의주신 내용 확인했습니다. 관련 주문정보와 처리상태를 확인한 뒤 안내드리겠습니다.", "need_human_confirm": "1", "status": "new", "created_at": "2026-06-09 10:38:22", "updated_at": "2026-06-09 10:38:22", "memo": "", "order_no": "2026060211365778" }, { "id": "27", "source_type": "kakao", "raw_text": "2026050809423129\n저번주에 언제쯤 입고 되는지 문의 드렸고\n업체측 답 오면 댓글 주신다거 하셨는데 아직 답 오지 않은걸까요?", "priority": "high", "category": "stock_inquiry", "summary": "2026050809423129\n저번주에 언제쯤 입고 되는지 문의 드렸고\n업체측 답 오면 댓글 주신다거 하셨는데 아직 답 오지 않은걸까요?", "customer_intent": "입고 상태 또는 입고예정일 확인이 필요한 문의입니다.", "check_items": "[\"Check order number\", \"Check shop/customer name\", \"Check product name, color, size\", \"Check current order status\", \"Check stock/delivery status\"]", "suggested_reply": "고객님, 입고문의 확인했습니다. 현재 입고상태와 예정일 확인 후 안내드리겠습니다.", "need_human_confirm": "1", "status": "new", "created_at": "2026-06-09 09:35:33", "updated_at": "2026-06-09 09:35:33", "memo": "", "order_no": "2026050809423129" }, { "id": "26", "source_type": "kakao", "raw_text": "저번주에 언제쯤 입고 되는지 문의 드렸고\n업체측 답 오면 댓글 주신다거 하셨는데 아직 답 오지 않은걸까요?", "priority": "high", "category": "stock_inquiry", "summary": "저번주에 언제쯤 입고 되는지 문의 드렸고\n업체측 답 오면 댓글 주신다거 하셨는데 아직 답 오지 않은걸까요?", "customer_intent": "입고 상태 또는 입고예정일 확인이 필요한 문의입니다.", "check_items": "[\"Check order number\", \"Check shop/customer name\", \"Check product name, color, size\", \"Check current order status\", \"Check stock/delivery status\"]", "suggested_reply": "고객님, 입고문의 확인했습니다. 현재 입고상태와 예정일 확인 후 안내드리겠습니다.", "need_human_confirm": "1", "status": "new", "created_at": "2026-06-09 09:35:17", "updated_at": "2026-06-09 09:35:17", "memo": "", "order_no": "" } ] ``` ### 4.4. `ai_wh_kakao_tasks` - 한글명: 중도매 CS톡 업무카드 - 용도: 중도매 카톡에서 추출된 업무카드와 처리 상태를 저장하는 테이블입니다. - 출처: 중도매 CS톡 / 중도매 CS톡2 - 사용 화면: 향후 중도매360, 카톡 정리 데이터 - 정책: 기존 /cs 화면과 새 /aics 화면을 섞지 않고 참고용으로 봅니다. - rows: `71` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `id` | `INTEGER` | 1 | 0 | `None` | | `source_type` | `TEXT` | 0 | 1 | `'kakao_wholesale'` | | `wholesaler_name` | `TEXT` | 0 | 1 | `''` | | `raw_text` | `TEXT` | 0 | 1 | `''` | | `order_no` | `TEXT` | 0 | 1 | `''` | | `task_type` | `TEXT` | 0 | 1 | `'etc'` | | `priority` | `TEXT` | 0 | 1 | `'normal'` | | `task_status` | `TEXT` | 0 | 1 | `'new'` | | `title` | `TEXT` | 0 | 1 | `''` | | `request_summary` | `TEXT` | 0 | 1 | `''` | | `latest_reply` | `TEXT` | 0 | 1 | `''` | | `product_text` | `TEXT` | 0 | 1 | `''` | | `next_check_text` | `TEXT` | 0 | 1 | `''` | | `source_date` | `TEXT` | 0 | 1 | `''` | | `source_time` | `TEXT` | 0 | 1 | `''` | | `assignee` | `TEXT` | 0 | 1 | `''` | | `memo` | `TEXT` | 0 | 1 | `''` | | `created_at` | `TEXT` | 0 | 1 | `''` | | `updated_at` | `TEXT` | 0 | 1 | `''` | #### 샘플 데이터 ```json [ { "id": "100", "source_type": "kakao_wholesale", "wholesaler_name": "꿈의나라", "raw_text": "요거 나갔는데 언제 나갔는지 찾아보구 톡 드릴게용", "order_no": "", "task_type": "stock_schedule", "priority": "normal", "task_status": "confirm_needed", "title": "[입고시기] 주문번호 미확인", "request_summary": "요거 나갔는데 언제 나갔는지 찾아보구 톡 드릴게용", "latest_reply": "", "product_text": "", "next_check_text": "오늘 확인", "source_date": "", "source_time": "01:05", "assignee": "", "memo": "", "created_at": "2026-06-18 11:43:32", "updated_at": "2026-06-18 11:43:32" }, { "id": "99", "source_type": "kakao_wholesale", "wholesaler_name": "꿈의나라", "raw_text": "요거 품절이라서 차감으로 했는데", "order_no": "", "task_type": "soldout_adjust", "priority": "urgent", "task_status": "confirm_needed", "title": "[품절/차감] 주문번호 미확인", "request_summary": "요거 품절이라서 차감으로 했는데", "latest_reply": "", "product_text": "", "next_check_text": "오늘 확인", "source_date": "", "source_time": "01:04", "assignee": "", "memo": "", "created_at": "2026-06-18 11:43:32", "updated_at": "2026-06-18 11:43:32" }, { "id": "98", "source_type": "kakao_wholesale", "wholesaler_name": "꿈의나라", "raw_text": "2026050601453432\n바이미미 러너캡 블루 free\n미입고건인데 아직도 입고가 안되고 있어 확인 부탁드립니다.\n2026년 6월 18일 목요일", "order_no": "2026050601453432", "task_type": "update_error", "priority": "urgent", "task_status": "confirm_needed", "title": "[업데이트오류/누락] 2026050601453432", "request_summary": "2026050601453432\n바이미미 러너캡 블루 free\n미입고건인데 아직도 입고가 안되고 있어 확인 부탁드립니다.\n2026년 6월 18일 목요일", "latest_reply": "", "product_text": "바이미미 러너캡 블루 free", "next_check_text": "오늘 확인", "source_date": "", "source_time": "15:39", "assignee": "", "memo": "", "created_at": "2026-06-18 11:43:32", "updated_at": "2026-06-18 11:43:32" } ] ``` ### 4.5. `import_products` - 한글명: import_products - 용도: - 출처: - 사용 화면: - 정책: - rows: `10` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `id` | `INTEGER` | 1 | 0 | `None` | | `name` | `TEXT` | 0 | 1 | `''` | | `category` | `TEXT` | 0 | 1 | `''` | | `price` | `TEXT` | 0 | 1 | `''` | | `cost` | `TEXT` | 0 | 1 | `''` | | `source_url` | `TEXT` | 0 | 1 | `''` | | `image_url` | `TEXT` | 0 | 1 | `''` | | `colors` | `TEXT` | 0 | 1 | `''` | | `sizes` | `TEXT` | 0 | 1 | `''` | | `season` | `TEXT` | 0 | 1 | `''` | | `status` | `TEXT` | 0 | 1 | `'크롤링됨'` | | `memo` | `TEXT` | 0 | 1 | `''` | | `created_at` | `TEXT` | 0 | 1 | `''` | | `updated_at` | `TEXT` | 0 | 1 | `''` | | `images` | `TEXT` | 0 | 1 | `''` | | `name_original` | `TEXT` | 0 | 1 | `''` | | `supplier` | `TEXT` | 0 | 1 | `''` | | `colors_original` | `TEXT` | 0 | 1 | `''` | | `offer_id` | `TEXT` | 0 | 1 | `''` | | `margin` | `TEXT` | 0 | 1 | `''` | | `supplier_name_cn` | `TEXT` | 0 | 1 | `''` | | `supplier_url` | `TEXT` | 0 | 1 | `''` | | `supplier_id` | `TEXT` | 0 | 1 | `''` | | `supplier_logo` | `TEXT` | 0 | 1 | `''` | #### 샘플 데이터 ```json [ { "id": "30", "name": "Wheatfield 시즌 25 가을, 겨울 소녀 만화 고양이 불규칙한 밑단 탑 어린이 복합 유행 퍼프 슬리브 스웨터", "category": "상의", "price": "18,900", "cost": "", "source_url": "https://detail.1688.com/offer/970388856331.html", "image_url": "https://cbu01.alicdn.com/img/ibank/O1CN01TPHnDJ1ZxaekxTjv0_!!4266583261-0-cib.jpg", "colors": "레드", "sizes": "90, 100, 110, 120, 130, 140", "season": "", "status": "크롤링됨", "memo": "15일 내로 발송", "created_at": "2026-08-03 15:38:20", "updated_at": "2026-08-03 15:38:20", "images": "https://cbu01.alicdn.com/img/ibank/O1CN01TPHnDJ1ZxaekxTjv0_!!4266583261-0-cib.jpg\nhttps://cbu01.alicdn.com/img/ibank/O1CN01qwm5CM1Zxaeege0wf_!!4266583261-0-cib.jpg\nhttps://cbu01.alicdn.com/img/ibank/O1CN019zvTSO1Zxaej1bSJe_!!4266583261-0-cib.jpg\nhttps://cbu01.alicdn.com/img/ibank/O1CN01XsyXB61Zxaeegcjww_!!4266583261-0-cib.jpg\nhttps://cbu01.alicdn.com/img/ibank/O1CN01QRdcEb1Zxaeldndhr_!!4266583261-0-cib.jpg\nhttps://cbu01.alicdn.com/img/ibank/O1CN012aSwiv1ZxaekXjY6t_!!4266583261-0-cib.jpg\nhttps://...", "name_original": "麦田季25秋冬女童卡通猫不规则下摆上衣儿童复合时髦泡泡袖卫衣", "supplier": "Huzhou Yimai 브랜드 관리 유한 회사", "colors_original": "枣红色", "offer_id": "970388856331", "margin": "7,088원", "supplier_name_cn": "湖州一麦品牌管理有限公司", "supplier_url": "https://shop193956ni98489.1688.com", "supplier_id": "193956ni98489", "supplier_logo": "" }, { "id": "29", "name": "2026 아동 의류 겨울 의류 아동 한국 빵 재킷 후드 면화 의류 소녀 겨울 소년 재킷 면화 의류 6733", "category": "아우터", "price": "50,300", "cost": "", "source_url": "https://detail.1688.com/offer/987828213354.html", "image_url": "https://cbu01.alicdn.com/img/ibank/O1CN01GscA5x1c5x8FBlfAQ_!!3843683550-0-cib.jpg", "colors": "네이비, 레드", "sizes": "80, 90, 100, 110, 120, 130", "season": "", "status": "크롤링됨", "memo": "2개 주문/15일내로발송", "created_at": "2026-07-30 17:08:30", "updated_at": "2026-07-30 17:15:03", "images": "https://cbu01.alicdn.com/img/ibank/O1CN01kZkOUK1c5x8EVqFaR_!!3843683550-0-cib.jpg\nhttps://cbu01.alicdn.com/img/ibank/O1CN01bq6s4A1c5x8DFTJZd_!!3843683550-0-cib.jpg\nhttps://cbu01.alicdn.com/img/ibank/O1CN01uSrHh51c5x8FNq57R_!!3843683550-0-cib.jpg\nhttps://cbu01.alicdn.com/img/ibank/O1CN01rNFx6f1c5x8FBnTWD_!!3843683550-0-cib.jpg\nhttps://cbu01.alicdn.com/img/ibank/O1CN01qs7EHV1c5x8FKdSBU_!!3843683550-0-cib.jpg\nhttps://cbu01.alicdn.com/img/ibank/O1CN012229ww1c5x8EoHa0Z_!!3843683550-0-cib.jpg\nhttps://...", "name_original": "2026童装冬装儿童韩版面包服连帽棉衣女童冬款男童外套棉服6733", "supplier": "Huzhou Shenjia 브랜드 관리 유한 회사", "colors_original": "藏青色,红色", "offer_id": "987828213354", "margin": "18,913원", "supplier_name_cn": "湖州沈家品牌管理有限公司", "supplier_url": "https://shop38s4993346534.1688.com", "supplier_id": "38s4993346534", "supplier_logo": "" }, { "id": "28", "name": "밀밭 시즌 어린이 벨벳 두꺼운 따뜻한 가정 옷 소녀의 더블 레이어 편안한 면 벨벳 수건 수 놓은 잠옷 바지 세트", "category": "상하세트", "price": "23,300", "cost": "", "source_url": "https://detail.1688.com/offer/743709373267.html", "image_url": "https://cbu01.alicdn.com/img/ibank/O1CN01t9Sp3o1ZxaSMEtcRI_!!4266583261-0-cib.jpg?__r__=1697642400134", "colors": "옐로우(오리), 블루(오리), 화이트(리본), 핑크(리본), 퍼플(곰), 그린(곰), 화이트(팬더), 옐로우바탕(곰), 블루바탕(곰), 핑크바탕(판다), 그린(강아지), 로즈핑크(아이스크림)", "sizes": "80, 90, 100, 110, 120, 130", "season": "", "status": "크롤링됨", "memo": "남/여아 공용 상하세트(잠옷) / 15일배송", "created_at": "2026-07-30 16:48:56", "updated_at": "2026-07-30 17:00:47", "images": "https://cbu01.alicdn.com/img/ibank/O1CN01HT970S1ZxaSL607TV_!!4266583261-0-cib.jpg\nhttps://cbu01.alicdn.com/img/ibank/O1CN015XqqnN1ZxaSGLgV0H_!!4266583261-0-cib.jpg?__r__=1697642253050\nhttps://cbu01.alicdn.com/img/ibank/O1CN01KoiEba1ZxaS9czm0f_!!4266583261-0-cib.jpg?__r__=1697642253050\nhttps://cbu01.alicdn.com/img/ibank/O1CN017n3ffG1ZxaSJyVIQ4_!!4266583261-0-cib.jpg?__r__=1697642253051\nhttps://cbu01.alicdn.com/img/ibank/O1CN01J1k7Tv1ZxaSOLTUw3_!!4266583261-0-cib.jpg?__r__=1697642253051\nhttps://cb...", "name_original": "麦田季儿童加绒加厚保暖家居服女童双层舒棉绒毛巾绣花睡衣裤套装", "supplier": "Huzhou Yimai 브랜드 관리 유한 회사", "colors_original": "黄小鸭,蓝色小鸭,白底蝴蝶结,粉底蝴蝶结,紫色小熊,绿色小熊,黑白熊猫,黄色小熊,绿底小卡熊,粉底熊猫,绿底白小狗,玫粉色冰淇淋", "offer_id": "743709373267", "margin": "8,791.25원", "supplier_name_cn": "湖州一麦品牌管理有限公司", "supplier_url": "https://shop193956ni98489.1688.com", "supplier_id": "193956ni98489", "supplier_logo": "" } ] ``` ### 4.6. `import_suppliers` - 한글명: import_suppliers - 용도: - 출처: - 사용 화면: - 정책: - rows: `5` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `supplier_id` | `TEXT` | 1 | 0 | `None` | | `alias` | `TEXT` | 0 | 1 | `''` | | `memo` | `TEXT` | 0 | 1 | `''` | | `name` | `TEXT` | 0 | 1 | `''` | | `name_cn` | `TEXT` | 0 | 1 | `''` | | `url` | `TEXT` | 0 | 1 | `''` | | `logo` | `TEXT` | 0 | 1 | `''` | | `updated_at` | `TEXT` | 0 | 1 | `''` | #### 샘플 데이터 ```json [ { "supplier_id": "193956ni98489", "alias": "", "memo": "", "name": "Huzhou Yimai 브랜드 관리 유한 회사", "name_cn": "湖州一麦品牌管理有限公司", "url": "https://shop193956ni98489.1688.com", "logo": "", "updated_at": "2026-08-03 15:38:20" }, { "supplier_id": "6806h21599n23", "alias": "", "memo": "", "name": "Wuxing Zhili Qianda 의류 공장은 고객 서비스 제품에 중점을 둡니다.", "name_cn": "吴兴织里千田衣制衣厂关注客服商品", "url": "https://shop6806h21599n23.1688.com", "logo": "", "updated_at": "2026-07-28 15:34:05" }, { "supplier_id": "38s4993346534", "alias": "", "memo": "", "name": "Huzhou Shenjia 브랜드 관리 유한 회사", "name_cn": "湖州沈家品牌管理有限公司", "url": "https://shop38s4993346534.1688.com", "logo": "", "updated_at": "2026-07-30 17:08:30" } ] ``` ### 4.7. `kakao_attachments` - 한글명: kakao_attachments - 용도: - 출처: - 사용 화면: - 정책: - rows: `4` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `id` | `INTEGER` | 1 | 0 | `None` | | `partner_name` | `TEXT` | 0 | 0 | `None` | | `session_id` | `INTEGER` | 0 | 0 | `None` | | `original_name` | `TEXT` | 0 | 0 | `None` | | `stored_name` | `TEXT` | 0 | 1 | `None` | | `file_path` | `TEXT` | 0 | 1 | `None` | | `file_url` | `TEXT` | 0 | 1 | `None` | | `mime_type` | `TEXT` | 0 | 0 | `None` | | `file_size` | `INTEGER` | 0 | 1 | `0` | | `file_hash` | `TEXT` | 0 | 0 | `None` | | `source_type` | `TEXT` | 0 | 1 | `'upload'` | | `status` | `TEXT` | 0 | 1 | `'active'` | | `created_by` | `TEXT` | 0 | 0 | `None` | | `created_at` | `TEXT` | 0 | 1 | `datetime('now','localtime')` | | `deleted_at` | `TEXT` | 0 | 0 | `None` | | `deleted_by` | `TEXT` | 0 | 0 | `None` | #### 샘플 데이터 ```json [ { "id": "30", "partner_name": "도로시", "session_id": "13", "original_name": "image.png", "stored_name": "kakao_20260623_040122_811383.png", "file_path": "uploads/kakao/20260623/kakao_20260623_040122_811383.png", "file_url": "/uploads/kakao/20260623/kakao_20260623_040122_811383.png", "mime_type": "image/png", "file_size": "14828", "file_hash": "82dffb547f404794775ee8f385092aa7ec046c6ec9e6dedc7095126fb586413e", "source_type": "upload", "status": "active", "created_by": "dev", "created_at": "2026-06-23 04:01:22", "deleted_at": null, "deleted_by": null }, { "id": "29", "partner_name": "도로시", "session_id": "13", "original_name": "image.png", "stored_name": "kakao_20260623_040119_715372.png", "file_path": "uploads/kakao/20260623/kakao_20260623_040119_715372.png", "file_url": "/uploads/kakao/20260623/kakao_20260623_040119_715372.png", "mime_type": "image/png", "file_size": "14197", "file_hash": "b56a74693500a8dd86b4d5ad702e411338f25411c965a2016c4e7609be602b64", "source_type": "upload", "status": "active", "created_by": "dev", "created_at": "2026-06-23 04:01:19", "deleted_at": null, "deleted_by": null }, { "id": "26", "partner_name": "도로시", "session_id": null, "original_name": "image.png", "stored_name": "kakao_20260623_034623_717415.png", "file_path": "uploads/kakao/20260623/kakao_20260623_034623_717415.png", "file_url": "/uploads/kakao/20260623/kakao_20260623_034623_717415.png", "mime_type": "image/png", "file_size": "111358", "file_hash": "87d8b863cdb87c2a57a67e9c8b98832bdaf6f09a4106a69c32082fd545e3ee5b", "source_type": "upload", "status": "active", "created_by": "dev", "created_at": "2026-06-23 03:46:23", "deleted_at": null, "deleted_by": null } ] ``` ### 4.8. `kakao_photo_item_links` - 한글명: kakao_photo_item_links - 용도: - 출처: - 사용 화면: - 정책: - rows: `2` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `id` | `INTEGER` | 1 | 0 | `None` | | `session_id` | `INTEGER` | 0 | 1 | `None` | | `match_id` | `INTEGER` | 0 | 0 | `None` | | `photo_id` | `INTEGER` | 0 | 0 | `None` | | `message_index` | `INTEGER` | 0 | 0 | `None` | | `source_text` | `TEXT` | 0 | 0 | `None` | | `product_name` | `TEXT` | 0 | 0 | `None` | | `color` | `TEXT` | 0 | 0 | `None` | | `size` | `TEXT` | 0 | 0 | `None` | | `qty` | `INTEGER` | 0 | 0 | `None` | | `order_no` | `TEXT` | 0 | 0 | `None` | | `confidence` | `REAL` | 0 | 0 | `0` | | `link_status` | `TEXT` | 0 | 0 | `'candidate'` | | `created_by` | `TEXT` | 0 | 0 | `''` | | `created_at` | `TEXT` | 0 | 1 | `None` | | `updated_at` | `TEXT` | 0 | 1 | `None` | | `brand` | `TEXT` | 0 | 0 | `None` | | `inquiry_text` | `TEXT` | 0 | 0 | `None` | #### 샘플 데이터 ```json [ { "id": "2", "session_id": "13", "match_id": "7", "photo_id": "30", "message_index": "9", "source_text": "2026052222320303\n데일리베베/코지단가라티/소라/S/1\n교환 상품 전달 드렸었는데, 저희한테 입고 된 상품이 없습니다. 확인 부탁드립니다.\n사장님 요거 6월17일날\n없어용 카톡내용두 없구용", "product_name": "코지단가라티", "color": "소라", "size": "S", "qty": "1", "order_no": "2026052222320303", "confidence": "0.98", "link_status": "candidate", "created_by": "system", "created_at": "2026-06-23 04:13:53", "updated_at": "2026-06-23 04:13:53", "brand": "데일리베베", "inquiry_text": "교환 상품 전달 드렸었는데, 저희한테 입고 된 상품이 없습니다. 확인 부탁드립니다.\n사장님 요거 6월17일날\n없어용 카톡내용두 없구용" }, { "id": "1", "session_id": "13", "match_id": "6", "photo_id": "29", "message_index": "1", "source_text": "2026050418155028\n보니토/카프리7부팬츠/검정/L/1\n박음질 불량 교환 요청\n입고일 : 6/15\n6/17 전달로 확인됩니다.", "product_name": "카프리7부팬츠", "color": "검정", "size": "L", "qty": "1", "order_no": "2026050418155028", "confidence": "0.98", "link_status": "candidate", "created_by": "system", "created_at": "2026-06-23 04:13:53", "updated_at": "2026-06-23 04:13:53", "brand": "보니토", "inquiry_text": "박음질 불량 교환 요청" } ] ``` ### 4.9. `kakao_photo_matches` - 한글명: kakao_photo_matches - 용도: - 출처: - 사용 화면: - 정책: - rows: `2` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `id` | `INTEGER` | 1 | 0 | `None` | | `session_id` | `INTEGER` | 0 | 1 | `None` | | `photo_id` | `INTEGER` | 0 | 0 | `None` | | `message_index` | `INTEGER` | 0 | 0 | `None` | | `message_line` | `TEXT` | 0 | 0 | `None` | | `sender` | `TEXT` | 0 | 0 | `None` | | `message_time` | `TEXT` | 0 | 0 | `None` | | `message_text` | `TEXT` | 0 | 0 | `None` | | `sort_order` | `INTEGER` | 0 | 0 | `0` | | `match_status` | `TEXT` | 0 | 0 | `'confirmed'` | | `created_by` | `TEXT` | 0 | 0 | `''` | | `created_at` | `TEXT` | 0 | 1 | `None` | | `updated_at` | `TEXT` | 0 | 1 | `None` | #### 샘플 데이터 ```json [ { "id": "7", "session_id": "13", "photo_id": "30", "message_index": "9", "message_line": "사진", "sender": "도로시사장님", "message_time": "오후 6:10", "message_text": "사진", "sort_order": "2", "match_status": "confirmed", "created_by": "system", "created_at": "2026-06-23 04:01:53", "updated_at": "2026-06-23 04:01:53" }, { "id": "6", "session_id": "13", "photo_id": "29", "message_index": "1", "message_line": "사진", "sender": "도로시사장님", "message_time": "오전 12:45", "message_text": "사진", "sort_order": "1", "match_status": "confirmed", "created_by": "system", "created_at": "2026-06-23 04:01:53", "updated_at": "2026-06-23 04:01:53" } ] ``` ### 4.10. `kakao_raw_sessions` - 한글명: kakao_raw_sessions - 용도: - 출처: - 사용 화면: - 정책: - rows: `1` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `id` | `INTEGER` | 1 | 0 | `None` | | `source_type` | `TEXT` | 0 | 1 | `'kakao_wholesale'` | | `partner_name` | `TEXT` | 0 | 0 | `None` | | `raw_text` | `TEXT` | 0 | 1 | `None` | | `raw_length` | `INTEGER` | 0 | 1 | `0` | | `message_count` | `INTEGER` | 0 | 1 | `0` | | `memo` | `TEXT` | 0 | 0 | `None` | | `status` | `TEXT` | 0 | 1 | `'raw_saved'` | | `created_by` | `TEXT` | 0 | 0 | `None` | | `created_at` | `TEXT` | 0 | 1 | `datetime('now','localtime')` | | `updated_at` | `TEXT` | 0 | 0 | `None` | | `raw_hash` | `TEXT` | 0 | 0 | `None` | | `deleted_at` | `TEXT` | 0 | 0 | `None` | | `deleted_by` | `TEXT` | 0 | 0 | `None` | | `delete_reason` | `TEXT` | 0 | 0 | `None` | #### 샘플 데이터 ```json [ { "id": "13", "source_type": "kakao_wholesale", "partner_name": "도로시", "raw_text": "[도로시사장님] [오전 12:45] 사진\n[키즈빌리지] [오후 4:01] 2026050418155028\n보니토/카프리7부팬츠/검정/L/1\n박음질 불량 교환 요청\n\n입고일 : 6/15 \n[키즈빌리지] [오후 4:03] 6/17 전달로 확인됩니다.\n[키즈빌리지] [오후 4:05] 2026052712001788\n하이커/카프리스트라이프반바지/오렌지/S/1\n\n불량 교환건 품절로 안내해주셔\n정산금 차감 후 입금드리겠습니다.\n[키즈빌리지] [오후 4:24] 2026061318281251\n데일리베베/기획)냉감인견세트/강아지들/XS/1\n오염/박음질 불량 교환 요청\n\n입고일 : 6/15\n[키즈빌리지] [오후 4:30] 2026061016060762\n린도/별사탕티/노랑/S/1\n단추 떨어짐 불량 교환 요청\n\n입고일 : 6/11\n[도로시사장님] [오후 6:09] 2026052712001788\n하이커/카프리스트라이프반바지/오렌지/S/1\n\n불량 교환건 품절로 안내해주셔\n정산금 차감 후 입금드리겠습니다.\n\n매일...", "raw_length": "753", "message_count": "12", "memo": "", "status": "deleted", "created_by": "dev", "created_at": "2026-06-23 04:01:35", "updated_at": null, "raw_hash": "c53e61c5502aa3f781a1401f3c4c54cce90a029651697cfb793b3892d80fd45c", "deleted_at": "2026-06-23 17:14:53", "deleted_by": "dev", "delete_reason": "manual_date" } ] ``` ### 4.11. `sqlite_sequence` - 한글명: SQLite 자동증가 관리 테이블 - 용도: SQLite가 AUTOINCREMENT 값을 관리하는 내부 테이블입니다. - 출처: SQLite 내부 - 사용 화면: 관리 참고용 - 정책: 직접 수정 금지. - rows: `9` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `name` | `` | 0 | 0 | `None` | | `seq` | `` | 0 | 0 | `None` | #### 샘플 데이터 ```json [ { "name": "import_products", "seq": "30" }, { "name": "kakao_photo_item_links", "seq": "2" }, { "name": "kakao_photo_matches", "seq": "7" } ] ``` ## 5. 다음 설계 방향 1. API 카탈로그(`/aics/apis`)의 API 항목과 DB 테이블을 연결한다. 2. 원본 데이터 테이블과 업무 처리 상태 테이블을 분리한다. 3. 게시판/카톡/주문/소매점/중도매/물류 데이터를 각각 미러링 테이블로 확장한다. 4. 소매점360, 중도매360, 업무 카테고리 화면에서 이 DB 구조를 기준으로 데이터를 조회한다. 5. DB 구조 변경 시 이 문서를 다시 자동 생성한다.