# DB_SCHEMA 작성일: 2026-09-21 17:06:21 ## 1. DB 기본 정보 - DB 파일: `/opt/kvcs/data/ai_cs.db` - DB 크기: `95.87 MB` - DB 수정일: `2026-09-21 17:05:55` - 테이블 수: `13` - 총 row 수: `79709` ## 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` | 게시판 원본 데이터 | 55308 | 향후 /aics/board, 업무 카테고리, 게시판 정리 데이터 | 원본성 데이터라 직접 수정 금지. 필요한 경우 별도 처리상태 테이블을 연결합니다. | | `ai_cs_items` | 소매 CS 분석 이력 | 28 | 향후 소매점360, 카톡 정리 데이터 | 기존 데이터 보존. 새 AICS에서는 별도 구조로 재설계 예정입니다. | | `ai_wh_kakao_tasks` | 중도매 CS톡 업무카드 | 71 | 향후 중도매360, 카톡 정리 데이터 | 기존 /cs 화면과 새 /aics 화면을 섞지 않고 참고용으로 봅니다. | | `aics_resource_files` | AICS 자료관리 첨부파일 | 9 | /aics/resources | 실제 파일은 /opt/kvcs/data/aics_resources/files 에 보관하고 DB에는 메타정보만 저장합니다. 삭제는 soft delete 방식입니다. | | `aics_resource_posts` | AICS 자료관리 게시글 | 10 | /aics/resources | 키빌 본서버 원본 데이터와 완전히 분리된 AICS 내부 업무자료입니다. 삭제는 is_deleted 기반 soft delete를 사용합니다. | | `import_products` | import_products | 10 | | | | `import_suppliers` | import_suppliers | 5 | | | | `kakao_attachments` | kakao_attachments | 5 | | | | `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 자동증가 관리 테이블 | 11 | 관리 참고용 | 직접 수정 금지. | ## 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: `55308` #### 컬럼 | 컬럼 | 타입 | 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": "103549", "source": "kidsvillage", "board": "qa", "source_table": "g5_write_qa", "post_id": "56925", "parent_id": "56866", "item_type": "comment", "kv_category": "일반문의", "subject": "답변/댓글", "content_html": "2026090316504439\r\n노이/노니맨투맨/크림/XS/1\r\n\r\n금일 입고로 확인됩니다.", "content_text": "2026090316504439\n노이/노니맨투맨/크림/XS/1\n\n금일 입고로 확인됩니다.", "writer_id": "master", "writer_name": "kidsvillage", "writer_name_masked": "kidsvillage", "is_secret": "0", "source_created_at": "2026-09-21 17:01:49", "source_updated_at": "", "source_url": "https://kidsvillage.co.kr/bbs/board.php?bo_table=qa&wr_id=56866#c_56925", "content_hash": "2f613ab83b1d0ff63a7c7f5003c4b57c4c2bdea6a315c618ab305637730c4e6c", "created_at": "2026-09-21 17:05:10", "updated_at": "2026-09-21 17:05:10", "display_no": "0", "display_no_category": "0", "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": "", "data_rule_analyzed_at": "", "data_rule_hash": "", "data_rule_status": "", "data_rule_error": "" }, { "id": "103548", "source": "kidsvillage", "board": "qa", "source_table": "g5_write_qa", "post_id": "56926", "parent_id": "56875", "item_type": "comment", "kv_category": "일반문의", "subject": "답변/댓글", "content_html": "문의주신 주문건은 현재 택배 배송으로 신청되어 있는 상태라 방문 픽업으로 변경하여 수령하시기는 어려운 점 양해 부탁드립니다.\r\n\r\n택배 배송지와 방문 픽업 장소가 서로 다르다 보니,\r\n배송 신청된 상품을 중간에 픽업으로 변경하여 전달드리는 방식으로는 처리가 어려운 상황입니다.", "content_text": "문의주신 주문건은 현재 택배 배송으로 신청되어 있는 상태라 방문 픽업으로 변경하여 수령하시기는 어려운 점 양해 부탁드립니다.\n\n택배 배송지와 방문 픽업 장소가 서로 다르다 보니,\n배송 신청된 상품을 중간에 픽업으로 변경하여 전달드리는 방식으로는 처리가 어려운 상황입니다.", "writer_id": "master", "writer_name": "kidsvillage", "writer_name_masked": "kidsvillage", "is_secret": "0", "source_created_at": "2026-09-21 17:02:10", "source_updated_at": "", "source_url": "https://kidsvillage.co.kr/bbs/board.php?bo_table=qa&wr_id=56875#c_56926", "content_hash": "9180f7ca3a5d69bea6b0cd7c3485557936aa02852f79dc9eda9355434cb7d70a", "created_at": "2026-09-21 17:05:10", "updated_at": "2026-09-21 17:05:10", "display_no": "0", "display_no_category": "0", "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": "", "data_rule_analyzed_at": "", "data_rule_hash": "", "data_rule_status": "", "data_rule_error": "" }, { "id": "103547", "source": "kidsvillage", "board": "qa", "source_table": "g5_write_qa", "post_id": "56921", "parent_id": "56861", "item_type": "comment", "kv_category": "일반문의", "subject": "답변/댓글", "content_html": "성지혜님 010-5550-6082\r\n경기도 안성시 공도읍 양기길30, 103동 2404호로 교환접수 도와드렸습니다.\r\n\r\n익일 선교환/선발송 도와드리겠습니다!!\r\n\r\n\r\n*958365590\r\n\r\n한진택배 반품/교환신청 접수 되어 보통 빠르면 \r\n내일, 이틀이내 기사님이 방문 수거예정입니다.\r\n반품/교환을 원하시는 상품을 문앞에 놓아주세요\r\n바로 부탁드립니다. 방문기사님이 한번 방문후 재방문을 안하세요 ㅜㅜ\r\n\r\n*불량 교환시 불량 부분은 체크스티커 또는 포스티잇으로 표시 부탁드립니다.\r\n**혹시 위탁건으로 고객님주소지일경우 고객님에게 꼭 바로 안내 부탁드립니다.\r\n***불량 회수 후 교환 소요시간 최소 2주 참고 부탁드립니다.", "content_text": "성지혜님 010-5550-6082\n경기도 안성시 공도읍 양기길30, 103동 2404호로 교환접수 도와드렸습니다.\n\n익일 선교환/선발송 도와드리겠습니다!!\n\n\n*958365590\n\n한진택배 반품/교환신청 접수 되어 보통 빠르면 \n내일, 이틀이내 기사님이 방문 수거예정입니다.\n반품/교환을 원하시는 상품을 문앞에 놓아주세요\n바로 부탁드립니다. 방문기사님이 한번 방문후 재방문을 안하세요 ㅜㅜ\n\n*불량 교환시 불량 부분은 체크스티커 또는 포스티잇으로 표시 부탁드립니다.\n**혹시 위탁건으로 고객님주소지일경우 고객님에게 꼭 바로 안내 부탁드립니다.\n***불량 회수 후 교환 소요시간 최소 2주 참고 부탁드립니다.", "writer_id": "master", "writer_name": "kidsvillage", "writer_name_masked": "kidsvillage", "is_secret": "0", "source_created_at": "2026-09-21 16:57:06", "source_updated_at": "", "source_url": "https://kidsvillage.co.kr/bbs/board.php?bo_table=qa&wr_id=56861#c_56921", "content_hash": "819fbb0f74696789b708fca4c780a0fa48acb12d71c641179de4d002d843680f", "created_at": "2026-09-21 17:00:12", "updated_at": "2026-09-21 17:05:10", "display_no": "0", "display_no_category": "0", "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": "", "data_rule_analyzed_at": "", "data_rule_hash": "", "data_rule_status": "", "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. `aics_resource_files` - 한글명: AICS 자료관리 첨부파일 - 용도: 자료관리 게시글에 첨부된 파일의 원본명, 저장명, MIME, 크기, SHA256 등 메타정보를 저장합니다. - 출처: AICS /aics/resources 파일 첨부 - 사용 화면: /aics/resources - 정책: 실제 파일은 /opt/kvcs/data/aics_resources/files 에 보관하고 DB에는 메타정보만 저장합니다. 삭제는 soft delete 방식입니다. - rows: `9` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `id` | `INTEGER` | 1 | 0 | `None` | | `post_id` | `INTEGER` | 0 | 1 | `None` | | `original_name` | `TEXT` | 0 | 1 | `''` | | `stored_name` | `TEXT` | 0 | 1 | `''` | | `mime_type` | `TEXT` | 0 | 1 | `''` | | `size_bytes` | `INTEGER` | 0 | 1 | `0` | | `sha256` | `TEXT` | 0 | 1 | `''` | | `is_deleted` | `INTEGER` | 0 | 1 | `0` | | `created_at` | `TEXT` | 0 | 1 | `''` | | `deleted_at` | `TEXT` | 0 | 1 | `''` | #### 샘플 데이터 ```json [ { "id": "14", "post_id": "15", "original_name": "키즈빌리지_배송요청_목록_20260921.xls", "stored_name": "c815466531a540b99e2a9830d39a6670.xls", "mime_type": "application/vnd.ms-excel", "size_bytes": "31232", "sha256": "e1ce9598837534771050788b234929c2a3db6b8b9e5d898b49fdd8423ffd5c90", "is_deleted": "0", "created_at": "2026-09-21 15:54:36", "deleted_at": "" }, { "id": "13", "post_id": "13", "original_name": "고미상품.png", "stored_name": "ab985c8d8a7f4b25985bd1e9cbe1aa9e.png", "mime_type": "image/png", "size_bytes": "142607", "sha256": "b528393306f48ebde939f08e65d5951dcbcee4206d7f4d95ae358f6109560b5e", "is_deleted": "1", "created_at": "2026-08-27 18:59:46", "deleted_at": "2026-09-21 16:07:25" }, { "id": "12", "post_id": "13", "original_name": "저장실패.png", "stored_name": "5eb974b5c67d43088ffd9ee34343d47b.png", "mime_type": "image/png", "size_bytes": "122568", "sha256": "0f51c6fed23ad95b1ba72233e861a14ba31e7638025dd3480b5c5e4b061b1f00", "is_deleted": "1", "created_at": "2026-08-27 18:50:23", "deleted_at": "2026-09-21 16:07:25" } ] ``` ### 4.6. `aics_resource_posts` - 한글명: AICS 자료관리 게시글 - 용도: AICS 자료관리에서 작성한 일반 업무 메모와 게시글을 저장하는 테이블입니다. - 출처: AICS /aics/resources 직접 작성 - 사용 화면: /aics/resources - 정책: 키빌 본서버 원본 데이터와 완전히 분리된 AICS 내부 업무자료입니다. 삭제는 is_deleted 기반 soft delete를 사용합니다. - rows: `10` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `id` | `INTEGER` | 1 | 0 | `None` | | `title` | `TEXT` | 0 | 1 | `''` | | `content` | `TEXT` | 0 | 1 | `''` | | `writer` | `TEXT` | 0 | 1 | `''` | | `is_deleted` | `INTEGER` | 0 | 1 | `0` | | `created_at` | `TEXT` | 0 | 1 | `''` | | `updated_at` | `TEXT` | 0 | 1 | `''` | | `deleted_at` | `TEXT` | 0 | 1 | `''` | #### 샘플 데이터 ```json [ { "id": "15", "title": "장끼엑셀", "content": "ㅁ", "writer": "ㅁ", "is_deleted": "0", "created_at": "2026-09-21 15:54:36", "updated_at": "2026-09-21 15:54:36", "deleted_at": "" }, { "id": "14", "title": "NA5", "content": "\n-현재 체크/프린트/입고확인된 상품들 우측(바로가기부근)에 나열되도록 (고민 일반리스트와 곂침)\n-간혹 호제트 5건 / 재인 5건 인경우 리셋시 다시 호제트 > m을 눌러야하 기본 리셋은 지향하되 방법을 강구해야함(프로그램계산처리 필요 수량줄어들시 자주발생할것 같음)\n\n***\n\n-일반리스트 확인버튼을 누르면 반대쪽 입고보조도 자동으로 새로고침 되게 ,\n 반대의경우 입고보조에도 확인/취소 버튼 만들고 액션했을때 일반리스트도 새로고침\n(일반리스트는 새로고침해도 날짜셋팅 중돼 셋팅했던거 안풀어지게유지)\n\n-보조입고 대표이미지 아래 썸네일 크기 50*50 사이즈 변경 썸네일 부분적 문제 1번사진만 변경되고 잘안됨\n\n-26일 보니토/조은별/재인/ㅜ톤ST골지티/아이블랙/18M 대표이미지이상함\n\n-대표이미지 써네일 클릭 V1처럼 큰이미지나오게 , 일반리스트 이미지클릭 상세페이지 가게하기\n\n-교환중인건은 수량 별도로 표시\n\n-입고보조 클릭하면 같은거 묶이고 다시 재클릭하면 풀리게 수정", "writer": "ㅁ", "is_deleted": "1", "created_at": "2026-08-28 02:30:41", "updated_at": "2026-09-21 16:07:27", "deleted_at": "2026-09-21 16:07:27" }, { "id": "13", "title": "NAV3", "content": "- 설정저장 누르면 저장실패 이미지\n\n- 데일리베베 0건 다끝난 브랜드는 보여지지않게 혹시 오늘 입고중에 다시 브랜드/상호/수량을 확인하고싶을때는\n\n- 브랜드 정렬버튼 맨우측에 버튼으로 초기값 이라고 넣어야함 이 버튼을 누르면 전체가 다시 다 나옴 재클릭하면\n다시 이전에 작업중던 0건인 것들은 안보임\n\n- 상호/브랜드/사이즈 등의 활당된 크기를 벗어나면 칸에 맞춰서 폰트크기 줄임 다만 마우스 오버시 말풍선? 팁? 그 이미지지 안나올때 텍스트라도\n나오게 하는것 처럼 그렇게 전체 폰트를 보여줘야함\n\n-상품이 고미로 들어왔을때 썸네일이미지 옆에'고미' 버튼을 만드고 누르면\n좌우가 살짝 5PX정도 들여쓰기 패딩을 준건처럼 그리고 해당 상품만 나열되도록 \n(지금처럼 M 2 장을 프린트했는데 실제 봉지에서 다음상품이 같은상품 S가 나오면\n다시 입고된 사이즈에서 S 를 누르고 또 찾아야하는 비효율이 발생함)\n\n대표이미지쪽에 V2에 있던 해당상품 주문자명나오고 디스카운트기능 넣기", "writer": "ㅁ", "is_deleted": "1", "created_at": "2026-08-27 18:50:23", "updated_at": "2026-09-21 16:07:25", "deleted_at": "2026-09-21 16:07:25" } ] ``` ### 4.7. `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.8. `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.9. `kakao_attachments` - 한글명: kakao_attachments - 용도: - 출처: - 사용 화면: - 정책: - rows: `5` #### 컬럼 | 컬럼 | 타입 | 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": "32", "partner_name": "도로시", "session_id": null, "original_name": "팝업제거_수정.PNG", "stored_name": "kakao_20260819_164757_348190.png", "file_path": "uploads/kakao/20260819/kakao_20260819_164757_348190.png", "file_url": "/uploads/kakao/20260819/kakao_20260819_164757_348190.png", "mime_type": "image/png", "file_size": "291104", "file_hash": "67e7cfdb0e95f311025bea6b74a4224c1f2535c7395dfdf8677c281540c11af7", "source_type": "upload", "status": "deleted", "created_by": "dev", "created_at": "2026-08-19 16:47:57", "deleted_at": "2026-08-19 16:48:02", "deleted_by": "dev" }, { "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 } ] ``` ### 4.10. `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.11. `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.12. `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.13. `sqlite_sequence` - 한글명: SQLite 자동증가 관리 테이블 - 용도: SQLite가 AUTOINCREMENT 값을 관리하는 내부 테이블입니다. - 출처: SQLite 내부 - 사용 화면: 관리 참고용 - 정책: 직접 수정 금지. - rows: `11` #### 컬럼 | 컬럼 | 타입 | PK | NOT NULL | 기본값 | |---|---|---:|---:|---| | `name` | `` | 0 | 0 | `None` | | `seq` | `` | 0 | 0 | `None` | #### 샘플 데이터 ```json [ { "name": "aics_resource_files", "seq": "14" }, { "name": "aics_resource_posts", "seq": "15" }, { "name": "import_products", "seq": "30" } ] ``` ## 5. 다음 설계 방향 1. API 카탈로그(`/aics/apis`)의 API 항목과 DB 테이블을 연결한다. 2. 원본 데이터 테이블과 업무 처리 상태 테이블을 분리한다. 3. 게시판/카톡/주문/소매점/중도매/물류 데이터를 각각 미러링 테이블로 확장한다. 4. 소매점360, 중도매360, 업무 카테고리 화면에서 이 DB 구조를 기준으로 데이터를 조회한다. 5. DB 구조 변경 시 이 문서를 다시 자동 생성한다.