diff --git a/Todo.List b/Todo.List new file mode 100644 index 00000000..e8787545 --- /dev/null +++ b/Todo.List @@ -0,0 +1,26 @@ +옵션번역을 위한 vertext API키 설정 +옵션선택 기준 : 최대 옵션갯수, 옵션이미지번역유무, 옵션AI선택유무 , 옵션필터링 기준(표준편차범위등 ) 기본동작설명 +가격조정 기준 : 카드수수료 설정, 기본마진 설정, 기본더하기마진과 해외배송비 설정, 적정가격 산출비율(팔린가격, 원가x2, ) 카테고리별 해외배송비 가중치 사용유무 +더하기마진과, 해외배송비의 기본가중치 설정 +상세페이지 기준 : 옵션명 입력 유무, 상세설명 유무 및 설정버튼, 상세페이지 이미지번역설정, 이미지번역방법(자체번역1(기본인페인팅+deepL), 자체번역2(AI인페인팅+deepL), 웨일번역VD모드, 웨일번역기본모드) + +상품명 기준 : 네이버 키워드 상품정보 수집으로 자동키워드조합 +형태소 분석을 활용한 키워드 조합 +태그 기준 : 태그사용 유무 +썸네일 기준 : 썸네일 번역기준 + +로거의 디버그와 인포 구분 + +유저설정을 db에 통합 + +프로그램 로그인연동 + +FastAPI연동 + +상품명 AI 작성 +인자목록 : 원본상품명, 판매키워드, 네이버 상위판매상품의 상품명 20여개.등을 제공. +네이버 노출로직 제공하여 vertexai로 수행 +상품명 프롬프트 "한글로 된 단어와 영어 또는 영어와 숫자로된 상품코드, 전압, 전류 또는 여러가지 스펙등을 인식할수 있고, 각 옵션별로 특징적인 내용만 남기는 방법을 사용하려면?? +상품명에서 어느정도 옵션이 어떤내용을 말하는지를 유추할수 있잖니? 그래서 상품명과 옵션명들을 함께 제공할꺼야. +물론 중국어로 된 원문이야. +그래서 각 옵션별 특징을 간결하게 남긴 뒤 한글로 번역하는게 목표야." \ No newline at end of file diff --git a/__pycache__/browser_control.cpython-311.pyc b/__pycache__/browser_control.cpython-311.pyc index b73ad456..f73599ed 100644 Binary files a/__pycache__/browser_control.cpython-311.pyc and b/__pycache__/browser_control.cpython-311.pyc differ diff --git a/__pycache__/clipboardImageManager.cpython-311.pyc b/__pycache__/clipboardImageManager.cpython-311.pyc index 662920d0..79d833c0 100644 Binary files a/__pycache__/clipboardImageManager.cpython-311.pyc and b/__pycache__/clipboardImageManager.cpython-311.pyc differ diff --git a/__pycache__/gui.cpython-311.pyc b/__pycache__/gui.cpython-311.pyc index 48883a34..4931f09d 100644 Binary files a/__pycache__/gui.cpython-311.pyc and b/__pycache__/gui.cpython-311.pyc differ diff --git a/__pycache__/logger_module.cpython-311.pyc b/__pycache__/logger_module.cpython-311.pyc index 732cc90c..2ee9989d 100644 Binary files a/__pycache__/logger_module.cpython-311.pyc and b/__pycache__/logger_module.cpython-311.pyc differ diff --git a/__pycache__/option.cpython-311.pyc b/__pycache__/option.cpython-311.pyc index a35e1f5a..a06e2818 100644 Binary files a/__pycache__/option.cpython-311.pyc and b/__pycache__/option.cpython-311.pyc differ diff --git a/__pycache__/toggleSwitch.cpython-311.pyc b/__pycache__/toggleSwitch.cpython-311.pyc index c8572b96..272f3008 100644 Binary files a/__pycache__/toggleSwitch.cpython-311.pyc and b/__pycache__/toggleSwitch.cpython-311.pyc differ diff --git a/__pycache__/vertexAI.cpython-311.pyc b/__pycache__/vertexAI.cpython-311.pyc index 3c6ab396..f5a3a6a6 100644 Binary files a/__pycache__/vertexAI.cpython-311.pyc and b/__pycache__/vertexAI.cpython-311.pyc differ diff --git a/__pycache__/whale_translator.cpython-311.pyc b/__pycache__/whale_translator.cpython-311.pyc index 9f5441e0..69c6323f 100644 Binary files a/__pycache__/whale_translator.cpython-311.pyc and b/__pycache__/whale_translator.cpython-311.pyc differ diff --git a/appTranslator.log b/appTranslator.log index e634f3a8..b2822aa8 100644 --- a/appTranslator.log +++ b/appTranslator.log @@ -67178,3 +67178,6476 @@ Traceback (most recent call last): Exception: Page.wait_for_selector: Connection closed while reading from the driver 2024-10-13 11:59:19,375 - price.py:85 - default_logger - DEBUG - 더하기마진값5000을 팔린가격5000으로 간주 2024-10-13 11:59:19,376 - price.py:87 - default_logger - DEBUG - 옵션 가격 정보를 수집합니다. +2024-10-14 10:50:18,337 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 10:50:18,337 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 10:50:18,380 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 10:50:18,381 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 10:50:18,387 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 10:50:18,497 - cmb_diag.py:368 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 10:50:18,497 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 10:50:18,497 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 10:50:18,508 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 10:50:18,508 - gui.py:104 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 10:51:50,539 - gui.py:431 - default_logger - DEBUG - 가격 수정 버튼 - 활성화 선택 +2024-10-14 10:51:51,329 - gui.py:555 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 10:52:21,732 - gui.py:524 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 10:52:21,732 - gui.py:525 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 10:52:21,734 - gui.py:560 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 10:52:21,735 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 10:52:30,601 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 10:52:30,622 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 10:52:30,623 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 67724 +2024-10-14 10:52:30,623 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 10:52:30,875 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 10:52:32,713 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 10:52:32,920 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 10:52:32,922 - gui.py:584 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 10:52:33,270 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 10:52:33,271 - option.py:37 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 10:52:33,272 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 10:52:33,272 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 10:52:37,592 - gui.py:634 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 10:52:37,595 - gui.py:639 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 10:52:37,595 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 10:52:38,227 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 10:52:38,235 - browser_control.py:173 - default_logger - DEBUG - 가져온 텍스트: 총 31개 상품 +2024-10-14 10:52:38,245 - gui.py:663 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 10:52:38,251 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 10:52:38,251 - gui.py:681 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 10:52:38,281 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 10:52:38,950 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 10:52:39,482 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 10:52:39,537 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 10:52:39,548 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 10:52:39,549 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 10:52:39,564 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 10:52:39,572 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 10:52:39,594 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 10:52:39,595 - gui.py:707 - default_logger - DEBUG - 가격수정 : True +2024-10-14 10:52:40,661 - browser_control.py:381 - default_logger - DEBUG - 가격 탭 클릭 완료. +2024-10-14 10:52:40,661 - price.py:80 - default_logger - DEBUG - 초기 더하기마진과 해외배송비 가격 정보를 수집합니다. +2024-10-14 10:52:40,837 - price.py:640 - default_logger - DEBUG - 더하기 마진 값: 10000 +2024-10-14 10:52:40,861 - price.py:645 - default_logger - DEBUG - 해외 배송비 값: 50000 +2024-10-14 10:52:40,861 - price.py:88 - default_logger - DEBUG - 옵션 가격 정보를 수집합니다. +2024-10-14 10:52:40,997 - price.py:539 - default_logger - DEBUG - 옵션 수: 18 +2024-10-14 10:52:41,720 - price.py:614 - default_logger - DEBUG - 상품원가가 모였습니다.: [185, 185, 185, 185, 185, 308, 308, 335, 358, 358, 358, 358, 358, 358, 358, 358, 358, 525] +2024-10-14 10:52:41,721 - price.py:615 - default_logger - DEBUG - 최소원가: 37000, 최대원가: 105000, 평균원가: 63000, 상위평균원가: 84000 +2024-10-14 10:52:41,721 - price.py:500 - default_logger - DEBUG - 원가에 카드수수료 4.0%, 기본마진 24.0% 적용된 계산원가: 108000 +2024-10-14 10:52:41,721 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 10:52:41,723 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 10:52:41,724 - price.py:470 - default_logger - DEBUG - 적용된 구간: 150000, 계산된 마진: 17000 +2024-10-14 10:52:41,724 - price.py:504 - default_logger - DEBUG - 계산원가 기준 해외배송비: 17000 +2024-10-14 10:52:41,724 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 10:52:41,724 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 10:52:41,724 - price.py:299 - default_logger - DEBUG - 적용된 구간: 100000, 계산된 구간추가배송비: 10000 +2024-10-14 10:52:41,724 - price.py:294 - default_logger - DEBUG - 적용된 구간: 200000, 계산된 구간추가배송비: 0 +2024-10-14 10:52:41,724 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 20000 +2024-10-14 10:52:41,724 - price.py:508 - default_logger - DEBUG - 계산원가 기준 더하기마진: 20000 +2024-10-14 10:52:41,724 - price.py:511 - default_logger - DEBUG - 원가기반 가격: 145000 +2024-10-14 10:52:41,724 - price.py:98 - default_logger - DEBUG - 적정 판매가를 계산합니다. +2024-10-14 10:52:41,724 - price.py:401 - default_logger - DEBUG - 비율 기반 계산된 가격: 80000, 상한: 194000, 하한: 143000 +2024-10-14 10:52:41,724 - price.py:405 - default_logger - DEBUG - 가격이 하한을 밑돌아서 하한으로 조정됨: 143000 +2024-10-14 10:52:41,724 - price.py:103 - default_logger - DEBUG - 계산된 적정 판매가: 143000 +2024-10-14 10:52:41,724 - price.py:106 - default_logger - DEBUG - 더하기 마진을 적정 판매가에 맞게 조정합니다. +2024-10-14 10:52:41,724 - price.py:335 - default_logger - DEBUG - 총 옵션 기준 판매가 평균: 138000 +2024-10-14 10:52:41,724 - price.py:339 - default_logger - DEBUG - 적정 판매가와 기준 판매가 차이: 5000 +2024-10-14 10:52:41,724 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 10:52:41,724 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 10:52:41,724 - price.py:470 - default_logger - DEBUG - 적용된 구간: 150000, 계산된 마진: 24000 +2024-10-14 10:52:41,724 - price.py:109 - default_logger - DEBUG - 조정된 더하기 마진: 25000 +2024-10-14 10:52:41,724 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 10:52:41,724 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 10:52:41,724 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 10:52:41,724 - price.py:115 - default_logger - DEBUG - 적정판매가 기준으로 재계산된 해외배송비: 10000 +2024-10-14 10:52:41,724 - price.py:751 - default_logger - DEBUG - category : 생활/건강-공구-에어공구-유압공구 +2024-10-14 10:52:41,724 - cmb_diag.py:787 - default_logger - DEBUG - Parsed category levels - Level 1: 생활/건강, Level 2: 공구, Level 3: 에어공구, Level 4: 유압공구 +2024-10-14 10:52:41,724 - cmb_diag.py:798 - default_logger - DEBUG - Executing query to find CMB stage for category: 생활/건강-공구-에어공구-유압공구 +2024-10-14 10:52:41,740 - cmb_diag.py:800 - default_logger - DEBUG - Query arguments: ['생활/건강', '생활/건강', '공구', '공구', '에어공구', '에어공구', '유압공구', '유압공구'] +2024-10-14 10:52:41,741 - cmb_diag.py:832 - default_logger - ERROR - DB 조회 중 오류가 발생했습니다: Cannot operate on a closed database. +Traceback (most recent call last): + File "D:\py\autoTrans\src\cmb_diag.py", line 801, in get_crmobi_stage + self.cursor.execute(query, args) +sqlite3.ProgrammingError: Cannot operate on a closed database. +2024-10-14 10:52:48,399 - price.py:137 - default_logger - ERROR - 가격 수정 중 오류 발생: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 118, in process_price + extra_shipping = self.calculate_category_extra_shipping(category, optimal_price) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\price.py", line 755, in calculate_category_extra_shipping + category_data = self.locator_manager.get_category_data(category) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +2024-10-14 10:52:48,522 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 10:52:48,525 - gui.py:731 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 10:52:49,106 - gui.py:757 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 10:52:50,331 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 10:52:50,343 - gui.py:736 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 10:52:50,344 - gui.py:678 - default_logger - DEBUG - 번역 작업이 중단되었습니다. +2024-10-14 12:07:32,208 - gui.py:761 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 13:42:34,859 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 13:42:34,859 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 13:42:34,869 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 13:42:34,869 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 13:42:34,869 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 13:42:34,883 - DatabaseManager.py:13 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 13:42:34,900 - DatabaseManager.py:18 - default_logger - DEBUG - Creating a new database session. +2024-10-14 13:42:34,904 - DatabaseManager.py:70 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 13:42:35,001 - cmb_diag.py:373 - default_logger - ERROR - CrMoBi 단계 설정을 위젯에 반영하는 중 오류 발생: 'DatabaseManager' object has no attribute 'execute_query' +Traceback (most recent call last): + File "D:\py\autoTrans\src\cmb_diag.py", line 359, in update_cmb_settings_from_db + stages = self.db_manager.execute_query(query) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'DatabaseManager' object has no attribute 'execute_query' +2024-10-14 14:01:13,415 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 14:01:13,415 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 14:01:13,425 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 14:01:13,425 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 14:01:13,430 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 14:01:13,435 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 14:01:13,450 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:01:13,463 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:01:13,569 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:01:13,579 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None +2024-10-14 14:01:13,579 - cmb_diag.py:373 - default_logger - ERROR - CrMoBi 단계 설정을 위젯에 반영하는 중 오류 발생: 'NoneType' object is not iterable +Traceback (most recent call last): + File "D:\py\autoTrans\src\cmb_diag.py", line 362, in update_cmb_settings_from_db + for stage in stages: +TypeError: 'NoneType' object is not iterable +2024-10-14 14:01:13,579 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:01:13,580 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None +2024-10-14 14:05:24,926 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 14:05:24,926 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 14:05:24,932 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 14:05:24,932 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 14:05:24,932 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 14:05:24,947 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 14:05:24,950 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:24,962 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:05:25,044 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:25,044 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 14:05:25,044 - cmb_diag.py:371 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 14:05:25,044 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:25,053 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 14:05:25,053 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 14:05:25,053 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 14:05:25,053 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 14:05:25,053 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 14:05:28,553 - gui.py:449 - default_logger - DEBUG - 가격 수정 버튼 - 활성화 선택 +2024-10-14 14:05:29,306 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 14:05:31,191 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:31,191 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:05:31,206 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:31,206 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:05:31,206 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:31,217 - DatabaseManager.py:81 - default_logger - ERROR - Error fetching all results: SELECT DISTINCT category3 FROM categories WHERE category1 = ? AND category2 = ? AND category3 IS NOT NULL, params: {'level1': '모두 보기', 'level2': ''}, error: (sqlite3.ProgrammingError) Incorrect number of bindings supplied. The current statement uses 2, and there are 0 supplied. +[SQL: SELECT DISTINCT category3 FROM categories WHERE category1 = ? AND category2 = ? AND category3 IS NOT NULL] +(Background on this error at: https://sqlalche.me/e/20/f405) +2024-10-14 14:05:31,235 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:31,238 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:05:31,239 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:31,240 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:05:31,240 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:31,247 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:05:32,427 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:32,427 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 1}, result count: 4 +2024-10-14 14:05:33,569 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:33,572 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 2}, result count: 3 +2024-10-14 14:05:34,686 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:05:34,686 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 3}, result count: 1 +2024-10-14 14:05:38,243 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 14:05:38,243 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 14:05:38,243 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 14:05:38,243 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 14:05:42,635 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 14:05:42,647 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 14:05:42,648 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 133340 +2024-10-14 14:05:42,649 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 14:05:42,914 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 14:05:44,595 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 14:05:44,783 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 14:05:44,785 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 14:05:45,114 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 14:05:45,114 - option.py:37 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:05:45,195 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:05:45,195 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:05:47,598 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 14:05:47,601 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 14:05:47,601 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 14:05:48,239 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 14:05:48,244 - browser_control.py:173 - default_logger - DEBUG - 가져온 텍스트: 총 31개 상품 +2024-10-14 14:05:48,244 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 14:05:48,249 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 14:05:48,250 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 14:05:48,291 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 14:05:48,897 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 14:05:49,416 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 14:05:49,466 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 14:05:49,473 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 14:05:49,473 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 14:05:49,491 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 14:05:49,498 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 14:05:49,518 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:05:49,521 - gui.py:725 - default_logger - DEBUG - 가격수정 : True +2024-10-14 14:05:50,457 - browser_control.py:381 - default_logger - DEBUG - 가격 탭 클릭 완료. +2024-10-14 14:05:50,458 - price.py:80 - default_logger - DEBUG - 초기 더하기마진과 해외배송비 가격 정보를 수집합니다. +2024-10-14 14:05:50,621 - price.py:640 - default_logger - DEBUG - 더하기 마진 값: 10000 +2024-10-14 14:05:50,669 - price.py:645 - default_logger - DEBUG - 해외 배송비 값: 50000 +2024-10-14 14:05:50,670 - price.py:88 - default_logger - DEBUG - 옵션 가격 정보를 수집합니다. +2024-10-14 14:05:50,720 - price.py:539 - default_logger - DEBUG - 옵션 수: 18 +2024-10-14 14:05:51,318 - price.py:614 - default_logger - DEBUG - 상품원가가 모였습니다.: [185, 185, 185, 185, 185, 308, 308, 335, 358, 358, 358, 358, 358, 358, 358, 358, 358, 525] +2024-10-14 14:05:51,318 - price.py:615 - default_logger - DEBUG - 최소원가: 37000, 최대원가: 105000, 평균원가: 63000, 상위평균원가: 84000 +2024-10-14 14:05:51,318 - price.py:500 - default_logger - DEBUG - 원가에 카드수수료 4.0%, 기본마진 24.0% 적용된 계산원가: 108000 +2024-10-14 14:05:51,318 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:05:51,318 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:05:51,318 - price.py:470 - default_logger - DEBUG - 적용된 구간: 150000, 계산된 마진: 17000 +2024-10-14 14:05:51,318 - price.py:504 - default_logger - DEBUG - 계산원가 기준 해외배송비: 17000 +2024-10-14 14:05:51,318 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:05:51,318 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:05:51,318 - price.py:299 - default_logger - DEBUG - 적용된 구간: 100000, 계산된 구간추가배송비: 10000 +2024-10-14 14:05:51,318 - price.py:294 - default_logger - DEBUG - 적용된 구간: 200000, 계산된 구간추가배송비: 0 +2024-10-14 14:05:51,318 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 20000 +2024-10-14 14:05:51,318 - price.py:508 - default_logger - DEBUG - 계산원가 기준 더하기마진: 20000 +2024-10-14 14:05:51,318 - price.py:511 - default_logger - DEBUG - 원가기반 가격: 145000 +2024-10-14 14:05:51,318 - price.py:98 - default_logger - DEBUG - 적정 판매가를 계산합니다. +2024-10-14 14:05:51,318 - price.py:401 - default_logger - DEBUG - 비율 기반 계산된 가격: 80000, 상한: 194000, 하한: 143000 +2024-10-14 14:05:51,318 - price.py:405 - default_logger - DEBUG - 가격이 하한을 밑돌아서 하한으로 조정됨: 143000 +2024-10-14 14:05:51,318 - price.py:103 - default_logger - DEBUG - 계산된 적정 판매가: 143000 +2024-10-14 14:05:51,318 - price.py:106 - default_logger - DEBUG - 더하기 마진을 적정 판매가에 맞게 조정합니다. +2024-10-14 14:05:51,318 - price.py:335 - default_logger - DEBUG - 총 옵션 기준 판매가 평균: 138000 +2024-10-14 14:05:51,318 - price.py:339 - default_logger - DEBUG - 적정 판매가와 기준 판매가 차이: 5000 +2024-10-14 14:05:51,318 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:05:51,318 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:05:51,332 - price.py:470 - default_logger - DEBUG - 적용된 구간: 150000, 계산된 마진: 24000 +2024-10-14 14:05:51,332 - price.py:109 - default_logger - DEBUG - 조정된 더하기 마진: 25000 +2024-10-14 14:05:51,332 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:05:51,332 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:05:51,332 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:05:51,332 - price.py:115 - default_logger - DEBUG - 적정판매가 기준으로 재계산된 해외배송비: 10000 +2024-10-14 14:05:51,332 - price.py:751 - default_logger - DEBUG - category : 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:05:51,332 - cmb_diag.py:801 - default_logger - DEBUG - Parsed category levels - Level 1: 생활/건강, Level 2: 공구, Level 3: 에어공구, Level 4: 유압공구 +2024-10-14 14:05:51,332 - cmb_diag.py:812 - default_logger - DEBUG - Executing query to find CMB stage for category: 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:05:51,332 - cmb_diag.py:814 - default_logger - DEBUG - Query arguments: ['생활/건강', '생활/건강', '공구', '공구', '에어공구', '에어공구', '유압공구', '유압공구'] +2024-10-14 14:05:51,332 - cmb_diag.py:846 - default_logger - ERROR - DB 조회 중 오류가 발생했습니다: 'DatabaseManager' object has no attribute 'fetchone' +Traceback (most recent call last): + File "D:\py\autoTrans\src\cmb_diag.py", line 816, in get_crmobi_stage + result = self.db_manager.fetchone(query, args) + ^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'DatabaseManager' object has no attribute 'fetchone' +2024-10-14 14:16:43,320 - price.py:137 - default_logger - ERROR - 가격 수정 중 오류 발생: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 118, in process_price + extra_shipping = self.calculate_category_extra_shipping(category, optimal_price) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\price.py", line 755, in calculate_category_extra_shipping + category_data = self.locator_manager.get_category_data(category) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +2024-10-14 14:16:43,489 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 14:16:43,491 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 14:16:44,233 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 14:16:44,233 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 14:16:44,233 - gui.py:699 - default_logger - DEBUG - 2/20: 세부사항 수정 작업 중... +2024-10-14 14:16:44,355 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 14:16:44,921 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 14:16:45,209 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 14:16:45,370 - browser_control.py:359 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 중 오류: Page.wait_for_selector: Target page, context or browser has been closed +Call log: +waiting for locator("div.ant-tabs-nav") to be visible +Traceback (most recent call last): + File "D:\py\autoTrans\browser_control.py", line 357, in open_product_edit_dialog + await self.page.wait_for_selector('div.ant-tabs-nav') # 다이얼로그가 완전히 로딩될 때까지 기다림 + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 7999, in wait_for_selector + await self._impl_obj.wait_for_selector( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 397, in wait_for_selector + return await self._main_frame.wait_for_selector(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 323, in wait_for_selector + await self._channel.send("waitForSelector", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +playwright._impl._errors.TargetClosedError: Page.wait_for_selector: Target page, context or browser has been closed +Call log: +waiting for locator("div.ant-tabs-nav") to be visible + +2024-10-14 14:16:45,374 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 14:16:45,374 - title.py:97 - default_logger - ERROR - 원본 상품명 가져오기 중 오류 발생: Page.query_selector: Target page, context or browser has been closed +Traceback (most recent call last): + File "D:\py\autoTrans\title.py", line 92, in get_original_product_name + original_name_element = await self.page.query_selector(self.original_product_name_locator) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 7905, in query_selector + await self._impl_obj.query_selector(selector=selector, strict=strict) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 385, in query_selector + return await self._main_frame.query_selector(selector, strict) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 304, in query_selector + await self._channel.send("querySelector", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +playwright._impl._errors.TargetClosedError: Page.query_selector: Target page, context or browser has been closed +2024-10-14 14:16:45,386 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 14:16:45,389 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 14:16:45,396 - title.py:223 - default_logger - ERROR - 카테고리 텍스트 가져오기 중 오류 발생: Page.wait_for_selector: Target page, context or browser has been closed +Traceback (most recent call last): + File "D:\py\autoTrans\title.py", line 190, in get_category + await self.page.wait_for_selector(category_locator, timeout=5000, state="attached") # 요소가 나타날 때까지 대기 + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 7999, in wait_for_selector + await self._impl_obj.wait_for_selector( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 397, in wait_for_selector + return await self._main_frame.wait_for_selector(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 323, in wait_for_selector + await self._channel.send("waitForSelector", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +playwright._impl._errors.TargetClosedError: Page.wait_for_selector: Target page, context or browser has been closed +2024-10-14 14:16:45,400 - gui.py:725 - default_logger - DEBUG - 가격수정 : True +2024-10-14 14:16:45,407 - browser_control.py:383 - default_logger - DEBUG - 가격 탭 클릭 중 오류: Page.click: Target page, context or browser has been closed +Traceback (most recent call last): + File "D:\py\autoTrans\browser_control.py", line 380, in click_price_tab + await self.page.click(self.price_tab_locator) + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 9625, in click + await self._impl_obj.click( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 777, in click + return await self._main_frame.click(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 488, in click + await self._channel.send("click", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +playwright._impl._errors.TargetClosedError: Page.click: Target page, context or browser has been closed +2024-10-14 14:16:45,407 - price.py:80 - default_logger - DEBUG - 초기 더하기마진과 해외배송비 가격 정보를 수집합니다. +2024-10-14 14:16:45,420 - price.py:649 - default_logger - ERROR - 해외배송비와 더하기 마진 수집 중 오류 발생: Page.wait_for_selector: Connection closed while reading from the driver +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 637, in get_plusmargin_and_shipping_values + margin_element = await self.page.wait_for_selector(self.plus_margin_locator) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 7999, in wait_for_selector + await self._impl_obj.wait_for_selector( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 397, in wait_for_selector + return await self._main_frame.wait_for_selector(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 323, in wait_for_selector + await self._channel.send("waitForSelector", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +Exception: Page.wait_for_selector: Connection closed while reading from the driver +2024-10-14 14:16:45,420 - price.py:86 - default_logger - DEBUG - 더하기마진값5000을 팔린가격5000으로 간주 +2024-10-14 14:16:45,420 - price.py:88 - default_logger - DEBUG - 옵션 가격 정보를 수집합니다. +2024-10-14 14:17:21,339 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 14:17:21,339 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 14:17:21,342 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 14:17:21,342 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 14:17:21,342 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 14:17:21,365 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 14:18:23,597 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 14:18:23,597 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 14:18:23,604 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 14:18:23,604 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 14:18:23,604 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 14:18:23,620 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 14:18:23,635 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:23,636 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:18:23,713 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:23,728 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 14:18:23,728 - cmb_diag.py:371 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 14:18:23,728 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:23,728 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 14:18:23,728 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 14:18:23,728 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 14:18:23,728 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 14:18:23,728 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 14:18:37,103 - gui.py:449 - default_logger - DEBUG - 가격 수정 버튼 - 활성화 선택 +2024-10-14 14:18:37,939 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 14:18:37,939 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 14:18:37,939 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 14:18:37,939 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 14:18:39,124 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 14:18:42,984 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:42,986 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 1}, result count: 4 +2024-10-14 14:18:43,756 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 14:18:43,768 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 14:18:43,769 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 198870 +2024-10-14 14:18:43,770 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 14:18:43,838 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:43,841 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 2}, result count: 3 +2024-10-14 14:18:44,031 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 14:18:45,247 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:45,249 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:18:45,251 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:45,253 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:18:45,255 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:45,256 - DatabaseManager.py:81 - default_logger - ERROR - Error fetching all results: SELECT DISTINCT category3 FROM categories WHERE category1 = ? AND category2 = ? AND category3 IS NOT NULL, params: {'level1': '모두 보기', 'level2': ''}, error: (sqlite3.ProgrammingError) Incorrect number of bindings supplied. The current statement uses 2, and there are 0 supplied. +[SQL: SELECT DISTINCT category3 FROM categories WHERE category1 = ? AND category2 = ? AND category3 IS NOT NULL] +(Background on this error at: https://sqlalche.me/e/20/f405) +2024-10-14 14:18:45,272 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:45,274 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:18:45,274 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:45,276 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:18:45,276 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:45,285 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:18:45,925 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 14:18:45,999 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:46,010 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:18:46,283 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 14:18:46,283 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 14:18:46,493 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:46,502 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:18:46,668 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:46,678 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:18:46,855 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:18:46,869 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:18:47,005 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 14:18:47,010 - option.py:37 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:18:47,011 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:18:47,011 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:19:39,914 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 14:19:39,917 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 14:19:39,917 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 14:19:40,538 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 14:19:40,545 - browser_control.py:173 - default_logger - DEBUG - 가져온 텍스트: 총 31개 상품 +2024-10-14 14:19:40,545 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 14:19:40,552 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 14:19:40,552 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 14:19:40,583 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 14:19:41,017 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 14:19:41,040 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 14:19:41,049 - title.py:94 - default_logger - DEBUG - 원본 상품명: +2024-10-14 14:19:41,049 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 14:19:41,049 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 14:19:41,062 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 14:19:41,073 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 14:19:41,079 - title.py:219 - default_logger - ERROR - 카테고리 인증 요소를 찾을 수 없습니다. +2024-10-14 14:19:41,085 - gui.py:725 - default_logger - DEBUG - 가격수정 : True +2024-10-14 14:19:41,696 - browser_control.py:381 - default_logger - DEBUG - 가격 탭 클릭 완료. +2024-10-14 14:19:41,697 - price.py:80 - default_logger - DEBUG - 초기 더하기마진과 해외배송비 가격 정보를 수집합니다. +2024-10-14 14:19:46,248 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 14:20:11,714 - price.py:649 - default_logger - ERROR - 해외배송비와 더하기 마진 수집 중 오류 발생: Page.wait_for_selector: Timeout 30000ms exceeded. +Call log: +waiting for locator("//*[@id='productMainContentContainerId']/div/div[1]/div/div/div[2]/div/div[1]/div[8]/div/div/div[3]/div/div/div/div[1]/div[2]/input") to be visible +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 637, in get_plusmargin_and_shipping_values + margin_element = await self.page.wait_for_selector(self.plus_margin_locator) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 7999, in wait_for_selector + await self._impl_obj.wait_for_selector( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 397, in wait_for_selector + return await self._main_frame.wait_for_selector(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 323, in wait_for_selector + await self._channel.send("waitForSelector", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +playwright._impl._errors.TimeoutError: Page.wait_for_selector: Timeout 30000ms exceeded. +Call log: +waiting for locator("//*[@id='productMainContentContainerId']/div/div[1]/div/div/div[2]/div/div[1]/div[8]/div/div/div[3]/div/div/div/div[1]/div[2]/input") to be visible + +2024-10-14 14:20:11,716 - price.py:86 - default_logger - DEBUG - 더하기마진값5000을 팔린가격5000으로 간주 +2024-10-14 14:20:11,717 - price.py:88 - default_logger - DEBUG - 옵션 가격 정보를 수집합니다. +2024-10-14 14:20:41,736 - price.py:546 - default_logger - ERROR - 옵션 수를 나타내는 텍스트를 찾지 못함. 기본적으로 단일 상품으로 간주. +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 531, in get_option_count_from_text + option_count_text_element = await self.page.wait_for_selector(self.option_count_text_locator) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 7999, in wait_for_selector + await self._impl_obj.wait_for_selector( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 397, in wait_for_selector + return await self._main_frame.wait_for_selector(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 323, in wait_for_selector + await self._channel.send("waitForSelector", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +playwright._impl._errors.TimeoutError: Page.wait_for_selector: Timeout 30000ms exceeded. +Call log: +waiting for locator("div#productMainContentContainerId th:nth-child(2) > div > span") to be visible + +2024-10-14 14:21:11,745 - price.py:620 - default_logger - ERROR - Failed to collect product costs and prices: Page.wait_for_selector: Timeout 30000ms exceeded. +Call log: +waiting for locator("//*[@id='productMainContentContainerId']/div/div[2]/div/div/div[5]/div[1]/div/div/div/div/div[2]/table/tbody/tr[2]/td[3]/div/div/div/div[2]/input") to be visible +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 581, in collect_product_costs_and_prices + product_cost_element = await self.page.wait_for_selector(product_cost_locator) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 7999, in wait_for_selector + await self._impl_obj.wait_for_selector( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 397, in wait_for_selector + return await self._main_frame.wait_for_selector(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 323, in wait_for_selector + await self._channel.send("waitForSelector", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +playwright._impl._errors.TimeoutError: Page.wait_for_selector: Timeout 30000ms exceeded. +Call log: +waiting for locator("//*[@id='productMainContentContainerId']/div/div[2]/div/div/div[5]/div[1]/div/div/div/div/div[2]/table/tbody/tr[2]/td[3]/div/div/div/div[2]/input") to be visible + +2024-10-14 14:21:11,747 - price.py:500 - default_logger - DEBUG - 원가에 카드수수료 4.0%, 기본마진 24.0% 적용된 계산원가: 26000 +2024-10-14 14:21:11,747 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:21:11,747 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:21:11,747 - price.py:461 - default_logger - DEBUG - 적용된 구간: 50000, 적용된 마진: 5000 +2024-10-14 14:21:11,747 - price.py:504 - default_logger - DEBUG - 계산원가 기준 해외배송비: 5000 +2024-10-14 14:21:11,747 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:21:11,747 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:21:11,747 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:21:11,747 - price.py:508 - default_logger - DEBUG - 계산원가 기준 더하기마진: 10000 +2024-10-14 14:21:11,747 - price.py:511 - default_logger - DEBUG - 원가기반 가격: 41000 +2024-10-14 14:21:11,747 - price.py:98 - default_logger - DEBUG - 적정 판매가를 계산합니다. +2024-10-14 14:21:11,747 - price.py:401 - default_logger - DEBUG - 비율 기반 계산된 가격: 23000, 상한: 46000, 하한: 34000 +2024-10-14 14:21:11,747 - price.py:405 - default_logger - DEBUG - 가격이 하한을 밑돌아서 하한으로 조정됨: 34000 +2024-10-14 14:21:11,747 - price.py:103 - default_logger - DEBUG - 계산된 적정 판매가: 34000 +2024-10-14 14:21:11,747 - price.py:106 - default_logger - DEBUG - 더하기 마진을 적정 판매가에 맞게 조정합니다. +2024-10-14 14:21:11,761 - price.py:351 - default_logger - ERROR - 더하기 마진 조정 중 오류 발생: division by zero +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 334, in calculate_adjusted_margin + total_option_price = math.ceil(sum([option['price'] for option in option_data]) / len(option_data)) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ +ZeroDivisionError: division by zero +2024-10-14 14:21:11,771 - price.py:109 - default_logger - DEBUG - 조정된 더하기 마진: 0 +2024-10-14 14:21:11,771 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:21:11,771 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:21:11,771 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:21:11,775 - price.py:115 - default_logger - DEBUG - 적정판매가 기준으로 재계산된 해외배송비: 10000 +2024-10-14 14:21:11,775 - price.py:751 - default_logger - DEBUG - category : +2024-10-14 14:21:11,775 - cmb_diag.py:801 - default_logger - DEBUG - Parsed category levels - Level 1: , Level 2: None, Level 3: None, Level 4: None +2024-10-14 14:21:11,778 - cmb_diag.py:812 - default_logger - DEBUG - Executing query to find CMB stage for category: +2024-10-14 14:21:11,779 - cmb_diag.py:814 - default_logger - DEBUG - Query arguments: ['', '', None, None, None, None, None, None] +2024-10-14 14:21:11,779 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:21:11,780 - DatabaseManager.py:68 - default_logger - ERROR - Error fetching one result: + SELECT crmobi_stage FROM categories + WHERE (category1 = ? OR ? IS NULL) + AND (category2 = ? OR ? IS NULL) + AND (category3 = ? OR ? IS NULL) + AND (category4 = ? OR ? IS NULL) + , params: ['', '', None, None, None, None, None, None], error: List argument must consist only of tuples or dictionaries +2024-10-14 14:21:11,781 - cmb_diag.py:846 - default_logger - ERROR - DB 조회 중 오류가 발생했습니다: List argument must consist only of tuples or dictionaries +Traceback (most recent call last): + File "D:\py\autoTrans\src\cmb_diag.py", line 816, in get_crmobi_stage + result = self.db_manager.fetchone(query, args) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\src\DatabaseManager.py", line 62, in fetchone + result = session.execute(text(query), params).fetchone() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2256, in _execute_internal + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\engine\base.py", line 1412, in execute + distilled_parameters = _distill_params_20(parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 32, in sqlalchemy.cyextension.util._distill_params_20 + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 23, in sqlalchemy.cyextension.util._check_item +sqlalchemy.exc.ArgumentError: List argument must consist only of tuples or dictionaries +2024-10-14 14:21:19,058 - price.py:137 - default_logger - ERROR - 가격 수정 중 오류 발생: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 118, in process_price + extra_shipping = self.calculate_category_extra_shipping(category, optimal_price) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\price.py", line 755, in calculate_category_extra_shipping + category_data = self.locator_manager.get_category_data(category) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +2024-10-14 14:21:19,259 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 14:21:19,261 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 14:21:19,739 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 14:21:19,740 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 14:21:19,741 - gui.py:696 - default_logger - DEBUG - 번역 작업이 중단되었습니다. +2024-10-14 14:21:20,576 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 14:21:56,865 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 14:21:56,865 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 14:21:56,872 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 14:21:56,872 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 14:21:56,872 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 14:21:56,889 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 14:21:56,897 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:21:56,909 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:21:56,991 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:21:56,991 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 14:21:56,991 - cmb_diag.py:377 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 14:21:56,991 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:21:57,003 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 14:21:57,003 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 14:21:57,003 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 14:21:57,003 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 14:21:57,003 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 14:21:59,610 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 14:21:59,610 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 14:21:59,612 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 14:21:59,612 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 14:22:05,402 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 14:22:05,416 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 14:22:05,418 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 329940 +2024-10-14 14:22:05,418 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 14:22:05,648 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 14:22:07,489 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 14:22:07,736 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 14:22:07,736 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 14:22:08,081 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 14:22:08,082 - option.py:37 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:22:08,083 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:22:08,084 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:22:30,239 - gui.py:449 - default_logger - DEBUG - 가격 수정 버튼 - 활성화 선택 +2024-10-14 14:22:32,035 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 14:22:32,035 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 14:22:32,035 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 14:22:32,629 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 14:22:32,632 - browser_control.py:173 - default_logger - DEBUG - 가져온 텍스트: 총 31개 상품 +2024-10-14 14:22:32,632 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 14:22:32,638 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 14:22:32,638 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 14:22:32,667 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 14:22:33,138 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 14:22:33,151 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 14:22:33,180 - title.py:94 - default_logger - DEBUG - 원본 상품명: +2024-10-14 14:22:33,182 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 14:22:33,182 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 14:22:33,208 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 14:22:33,217 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 14:22:33,230 - title.py:219 - default_logger - ERROR - 카테고리 인증 요소를 찾을 수 없습니다. +2024-10-14 14:22:33,233 - gui.py:725 - default_logger - DEBUG - 가격수정 : True +2024-10-14 14:22:33,604 - browser_control.py:381 - default_logger - DEBUG - 가격 탭 클릭 완료. +2024-10-14 14:22:33,604 - price.py:80 - default_logger - DEBUG - 초기 더하기마진과 해외배송비 가격 정보를 수집합니다. +2024-10-14 14:22:34,727 - price.py:640 - default_logger - DEBUG - 더하기 마진 값: 0 +2024-10-14 14:22:36,808 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 14:22:59,936 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 14:23:01,929 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:01,931 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:23:01,945 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:01,945 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:23:01,955 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:01,957 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:23:01,957 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:01,957 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:23:01,959 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:01,965 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:23:02,670 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:02,670 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:23:02,905 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:02,908 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:23:04,004 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:04,004 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:23:04,734 - price.py:649 - default_logger - ERROR - 해외배송비와 더하기 마진 수집 중 오류 발생: Page.wait_for_selector: Timeout 30000ms exceeded. +Call log: +waiting for locator("//*[@id='productMainContentContainerId']/div/div[1]/div/div/div[2]/div/div[1]/div[10]/div/div/div/div[1]/div[2]/input") to be visible +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 642, in get_plusmargin_and_shipping_values + shipping_element = await self.page.wait_for_selector(self.oversea_shipping_locator) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 7999, in wait_for_selector + await self._impl_obj.wait_for_selector( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 397, in wait_for_selector + return await self._main_frame.wait_for_selector(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 323, in wait_for_selector + await self._channel.send("waitForSelector", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +playwright._impl._errors.TimeoutError: Page.wait_for_selector: Timeout 30000ms exceeded. +Call log: +waiting for locator("//*[@id='productMainContentContainerId']/div/div[1]/div/div/div[2]/div/div[1]/div[10]/div/div/div/div[1]/div[2]/input") to be visible + +2024-10-14 14:23:04,734 - price.py:86 - default_logger - DEBUG - 더하기마진값5000을 팔린가격5000으로 간주 +2024-10-14 14:23:04,737 - price.py:88 - default_logger - DEBUG - 옵션 가격 정보를 수집합니다. +2024-10-14 14:23:07,764 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 14:23:07,902 - price.py:550 - default_logger - ERROR - 옵션 수 계산 중 오류 발생: Page.wait_for_selector: Target page, context or browser has been closed +Call log: +waiting for locator("div#productMainContentContainerId th:nth-child(2) > div > span") to be visible +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 531, in get_option_count_from_text + option_count_text_element = await self.page.wait_for_selector(self.option_count_text_locator) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 7999, in wait_for_selector + await self._impl_obj.wait_for_selector( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 397, in wait_for_selector + return await self._main_frame.wait_for_selector(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 323, in wait_for_selector + await self._channel.send("waitForSelector", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +playwright._impl._errors.TargetClosedError: Page.wait_for_selector: Target page, context or browser has been closed +Call log: +waiting for locator("div#productMainContentContainerId th:nth-child(2) > div > span") to be visible + +2024-10-14 14:23:07,908 - price.py:620 - default_logger - ERROR - Failed to collect product costs and prices: Page.wait_for_selector: Target page, context or browser has been closed +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 581, in collect_product_costs_and_prices + product_cost_element = await self.page.wait_for_selector(product_cost_locator) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 7999, in wait_for_selector + await self._impl_obj.wait_for_selector( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 397, in wait_for_selector + return await self._main_frame.wait_for_selector(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 323, in wait_for_selector + await self._channel.send("waitForSelector", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +playwright._impl._errors.TargetClosedError: Page.wait_for_selector: Target page, context or browser has been closed +2024-10-14 14:23:07,911 - price.py:500 - default_logger - DEBUG - 원가에 카드수수료 4.0%, 기본마진 24.0% 적용된 계산원가: 26000 +2024-10-14 14:23:07,913 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:23:07,914 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:23:07,915 - price.py:461 - default_logger - DEBUG - 적용된 구간: 50000, 적용된 마진: 5000 +2024-10-14 14:23:07,916 - price.py:504 - default_logger - DEBUG - 계산원가 기준 해외배송비: 5000 +2024-10-14 14:23:07,917 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:23:07,919 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:23:07,920 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:23:07,921 - price.py:508 - default_logger - DEBUG - 계산원가 기준 더하기마진: 10000 +2024-10-14 14:23:07,923 - price.py:511 - default_logger - DEBUG - 원가기반 가격: 41000 +2024-10-14 14:23:07,924 - price.py:98 - default_logger - DEBUG - 적정 판매가를 계산합니다. +2024-10-14 14:23:07,926 - price.py:401 - default_logger - DEBUG - 비율 기반 계산된 가격: 23000, 상한: 46000, 하한: 34000 +2024-10-14 14:23:07,927 - price.py:405 - default_logger - DEBUG - 가격이 하한을 밑돌아서 하한으로 조정됨: 34000 +2024-10-14 14:23:07,928 - price.py:103 - default_logger - DEBUG - 계산된 적정 판매가: 34000 +2024-10-14 14:23:07,931 - price.py:106 - default_logger - DEBUG - 더하기 마진을 적정 판매가에 맞게 조정합니다. +2024-10-14 14:23:07,932 - price.py:351 - default_logger - ERROR - 더하기 마진 조정 중 오류 발생: division by zero +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 334, in calculate_adjusted_margin + total_option_price = math.ceil(sum([option['price'] for option in option_data]) / len(option_data)) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ +ZeroDivisionError: division by zero +2024-10-14 14:23:07,933 - price.py:109 - default_logger - DEBUG - 조정된 더하기 마진: 0 +2024-10-14 14:23:07,935 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:23:07,935 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:23:07,936 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:23:07,937 - price.py:115 - default_logger - DEBUG - 적정판매가 기준으로 재계산된 해외배송비: 10000 +2024-10-14 14:23:07,938 - price.py:751 - default_logger - DEBUG - category : +2024-10-14 14:23:07,939 - cmb_diag.py:807 - default_logger - DEBUG - Parsed category levels - Level 1: , Level 2: None, Level 3: None, Level 4: None +2024-10-14 14:23:07,940 - cmb_diag.py:818 - default_logger - DEBUG - Executing query to find CMB stage for category: +2024-10-14 14:23:07,941 - cmb_diag.py:820 - default_logger - DEBUG - Query arguments: ['', '', None, None, None, None, None, None] +2024-10-14 14:23:07,942 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:07,943 - DatabaseManager.py:68 - default_logger - ERROR - Error fetching one result: + SELECT crmobi_stage FROM categories + WHERE (category1 = ? OR ? IS NULL) + AND (category2 = ? OR ? IS NULL) + AND (category3 = ? OR ? IS NULL) + AND (category4 = ? OR ? IS NULL) + , params: ['', '', None, None, None, None, None, None], error: List argument must consist only of tuples or dictionaries +2024-10-14 14:23:07,944 - cmb_diag.py:852 - default_logger - ERROR - DB 조회 중 오류가 발생했습니다: List argument must consist only of tuples or dictionaries +Traceback (most recent call last): + File "D:\py\autoTrans\src\cmb_diag.py", line 822, in get_crmobi_stage + result = self.db_manager.fetchone(query, args) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\src\DatabaseManager.py", line 62, in fetchone + result = session.execute(text(query), params).fetchone() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2256, in _execute_internal + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\engine\base.py", line 1412, in execute + distilled_parameters = _distill_params_20(parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 32, in sqlalchemy.cyextension.util._distill_params_20 + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 23, in sqlalchemy.cyextension.util._check_item +sqlalchemy.exc.ArgumentError: List argument must consist only of tuples or dictionaries +2024-10-14 14:23:09,782 - price.py:137 - default_logger - ERROR - 가격 수정 중 오류 발생: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 118, in process_price + extra_shipping = self.calculate_category_extra_shipping(category, optimal_price) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\price.py", line 755, in calculate_category_extra_shipping + category_data = self.locator_manager.get_category_data(category) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +2024-10-14 14:23:09,791 - browser_control.py:510 - default_logger - DEBUG - 저장 버튼 클릭 중 오류: Page.click: Connection closed while reading from the driver +Traceback (most recent call last): + File "D:\py\autoTrans\browser_control.py", line 507, in save_product_edit + await self.page.click(self.save_button_locator) + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 9625, in click + await self._impl_obj.click( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 777, in click + return await self._main_frame.click(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_frame.py", line 488, in click + await self._channel.send("click", locals_to_params(locals())) + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 59, in send + return await self._connection.wrap_api_call( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_connection.py", line 514, in wrap_api_call + raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None +Exception: Page.click: Connection closed while reading from the driver +2024-10-14 14:23:09,791 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 14:23:32,713 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 14:23:32,713 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 14:23:32,725 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 14:23:32,725 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 14:23:32,725 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 14:23:32,749 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 14:23:32,757 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:32,768 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:23:32,893 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:32,893 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 14:23:32,893 - cmb_diag.py:377 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 14:23:32,893 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:32,897 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 14:23:32,897 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 14:23:32,897 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 14:23:32,897 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 14:23:32,900 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 14:23:35,819 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 14:23:37,848 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:37,850 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:23:37,862 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:37,862 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 14:23:37,871 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:37,873 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 14:23:37,873 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:37,874 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 14:23:37,874 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:37,877 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level3': ''}, result count: 0 +2024-10-14 14:23:37,878 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:37,878 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 14:23:37,881 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:37,881 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': '모두 보기'}, result count: 0 +2024-10-14 14:23:37,881 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:37,886 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 14:23:37,889 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:37,889 - DatabaseManager.py:81 - default_logger - ERROR - Error fetching all results: SELECT DISTINCT category2 FROM categories WHERE category1 = ? AND category2 IS NOT NULL, params: {'level1': '가구/인테리어'}, error: (sqlite3.ProgrammingError) Incorrect number of bindings supplied. The current statement uses 1, and there are 0 supplied. +[SQL: SELECT DISTINCT category2 FROM categories WHERE category1 = ? AND category2 IS NOT NULL] +(Background on this error at: https://sqlalche.me/e/20/f405) +2024-10-14 14:23:37,904 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:37,906 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 14:23:41,590 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:41,592 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '여가/생활편의', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:23:41,592 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:41,596 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '여가/생활편의', 'level2': ''}, result count: 0 +2024-10-14 14:23:41,596 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:41,599 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '여가/생활편의', 'level2': ''}, result count: 0 +2024-10-14 14:23:41,599 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:41,599 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '여가/생활편의', 'level2': ''}, result count: 0 +2024-10-14 14:23:41,600 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:41,603 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '여가/생활편의', 'level3': ''}, result count: 0 +2024-10-14 14:23:41,603 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:41,604 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '여가/생활편의'}, result count: 90 +2024-10-14 14:23:41,604 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:41,604 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '여가/생활편의', 'level2': '모두 보기'}, result count: 0 +2024-10-14 14:23:41,608 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:41,608 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '여가/생활편의'}, result count: 90 +2024-10-14 14:23:41,612 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:41,612 - DatabaseManager.py:81 - default_logger - ERROR - Error fetching all results: SELECT DISTINCT category2 FROM categories WHERE category1 = ? AND category2 IS NOT NULL, params: {'level1': '여가/생활편의'}, error: (sqlite3.ProgrammingError) Incorrect number of bindings supplied. The current statement uses 1, and there are 0 supplied. +[SQL: SELECT DISTINCT category2 FROM categories WHERE category1 = ? AND category2 IS NOT NULL] +(Background on this error at: https://sqlalche.me/e/20/f405) +2024-10-14 14:23:41,624 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:23:41,625 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '여가/생활편의'}, result count: 90 +2024-10-14 14:24:57,337 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 14:25:01,627 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 14:25:01,627 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 14:25:01,627 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 14:25:01,627 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 14:25:01,627 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 14:25:01,650 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 14:25:01,657 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:01,661 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:25:01,738 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:01,751 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 14:25:01,751 - cmb_diag.py:378 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 14:25:01,751 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:01,751 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 14:25:01,754 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 14:25:01,754 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 14:25:01,754 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 14:25:01,754 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 14:25:05,470 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 14:25:07,827 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:07,830 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '디지털/가전', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:25:07,845 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:07,852 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '디지털/가전', 'level2': ''}, result count: 0 +2024-10-14 14:25:07,852 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:07,854 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '디지털/가전', 'level2': ''}, result count: 0 +2024-10-14 14:25:07,855 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:07,855 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '디지털/가전', 'level2': ''}, result count: 0 +2024-10-14 14:25:07,855 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:07,855 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '디지털/가전', 'level3': ''}, result count: 3 +2024-10-14 14:25:07,860 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:07,860 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 14:25:07,875 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:07,875 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '디지털/가전', 'level2': '모두 보기'}, result count: 0 +2024-10-14 14:25:07,875 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:07,875 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 14:25:07,891 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:07,891 - DatabaseManager.py:81 - default_logger - ERROR - Error fetching all results: SELECT DISTINCT category2 FROM categories WHERE category1 = ? AND category2 IS NOT NULL, params: {'level1': '디지털/가전'}, error: (sqlite3.ProgrammingError) Incorrect number of bindings supplied. The current statement uses 1, and there are 0 supplied. +[SQL: SELECT DISTINCT category2 FROM categories WHERE category1 = ? AND category2 IS NOT NULL] +(Background on this error at: https://sqlalche.me/e/20/f405) +2024-10-14 14:25:07,904 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:25:07,908 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 14:26:50,309 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 14:26:54,486 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 14:26:54,486 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 14:26:54,493 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 14:26:54,493 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 14:26:54,493 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 14:26:54,510 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 14:26:54,517 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:26:54,526 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:26:54,604 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:26:54,604 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 14:26:54,604 - cmb_diag.py:384 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 14:26:54,604 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:26:54,620 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 14:26:54,620 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 14:26:54,620 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 14:26:54,620 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 14:26:54,621 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 14:26:57,433 - gui.py:449 - default_logger - DEBUG - 가격 수정 버튼 - 활성화 선택 +2024-10-14 14:26:58,810 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 14:26:58,810 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 14:26:58,810 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 14:26:58,810 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 14:26:59,739 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 14:27:02,975 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 14:27:02,982 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 14:27:02,983 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 1247278 +2024-10-14 14:27:02,984 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 14:27:03,244 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 14:27:04,937 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 14:27:05,124 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 14:27:05,126 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 14:27:05,506 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 14:27:05,507 - option.py:37 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:27:05,507 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:27:05,508 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:27:06,083 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:06,084 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:27:06,107 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:06,109 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 14:27:06,111 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:06,112 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 14:27:06,113 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:06,115 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 14:27:06,116 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:06,117 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level3': ''}, result count: 0 +2024-10-14 14:27:06,118 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:06,120 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 14:27:06,125 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:06,127 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': '모두 보기'}, result count: 0 +2024-10-14 14:27:06,128 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:06,130 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 14:27:06,137 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:06,140 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '가구/인테리어'}, result count: 17 +2024-10-14 14:27:06,141 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:06,143 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 14:27:09,260 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:09,261 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '식품', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:27:09,261 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:09,261 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '식품', 'level2': ''}, result count: 0 +2024-10-14 14:27:09,261 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:09,261 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '식품', 'level2': ''}, result count: 0 +2024-10-14 14:27:09,261 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:09,270 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '식품', 'level2': ''}, result count: 0 +2024-10-14 14:27:09,270 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:09,272 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '식품', 'level3': ''}, result count: 0 +2024-10-14 14:27:09,272 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:09,275 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '식품'}, result count: 595 +2024-10-14 14:27:09,277 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:09,277 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '식품', 'level2': '모두 보기'}, result count: 0 +2024-10-14 14:27:09,277 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:09,284 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '식품'}, result count: 595 +2024-10-14 14:27:09,291 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:09,291 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '식품'}, result count: 22 +2024-10-14 14:27:09,291 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:27:09,296 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '식품'}, result count: 595 +2024-10-14 14:31:07,174 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,177 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:31:07,177 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,177 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:31:07,177 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,177 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': ''}, result count: 0 +2024-10-14 14:31:07,185 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,186 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:31:07,187 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,188 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category3 = :level3 with params: {'level3': ''}, result count: 6 +2024-10-14 14:31:07,190 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,191 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:31:07,237 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,237 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': '모두 보기'}, result count: 0 +2024-10-14 14:31:07,237 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,244 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:31:07,321 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,338 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:31:07,428 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,431 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:31:07,458 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,458 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:31:07,458 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,471 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': ''}, result count: 0 +2024-10-14 14:31:07,471 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,474 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:31:07,474 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,475 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:31:07,475 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:07,477 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:31:11,286 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:11,286 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 14:31:11,299 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:11,315 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '디지털/가전', 'level2': '모두 보기'}, result count: 0 +2024-10-14 14:31:11,315 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:11,316 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 14:31:11,322 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:11,322 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '디지털/가전'}, result count: 28 +2024-10-14 14:31:11,322 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:11,331 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 14:31:13,333 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:13,333 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '디지털/가전', 'level2': '광학기기/용품', 'level3': ''}, result count: 0 +2024-10-14 14:31:13,333 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:13,333 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '디지털/가전', 'level2': '광학기기/용품'}, result count: 5 +2024-10-14 14:31:13,333 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:13,333 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '디지털/가전', 'level2': '광학기기/용품'}, result count: 5 +2024-10-14 14:31:13,333 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:31:13,333 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '디지털/가전', 'level2': '광학기기/용품'}, result count: 5 +2024-10-14 14:32:12,660 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:12,663 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:32:12,664 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:12,665 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:32:12,666 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:12,667 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': ''}, result count: 0 +2024-10-14 14:32:12,668 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:12,669 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:32:12,670 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:12,671 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category3 = :level3 with params: {'level3': ''}, result count: 6 +2024-10-14 14:32:12,672 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:12,679 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:32:12,710 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:12,727 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': '모두 보기'}, result count: 0 +2024-10-14 14:32:12,727 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:12,729 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:32:12,966 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:12,982 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:32:13,047 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:13,058 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:32:13,088 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:13,090 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:32:13,091 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:13,092 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': ''}, result count: 0 +2024-10-14 14:32:13,093 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:13,094 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 14:32:13,094 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:13,095 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 14:32:13,095 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:13,097 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:32:14,960 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:14,960 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 1}, result count: 4 +2024-10-14 14:32:24,984 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:24,987 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:32:26,190 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:32:26,190 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 2}, result count: 3 +2024-10-14 14:33:01,906 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 14:33:01,906 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 14:33:01,910 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 14:33:02,580 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 14:33:02,585 - browser_control.py:173 - default_logger - DEBUG - 가져온 텍스트: 총 31개 상품 +2024-10-14 14:33:02,586 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 14:33:02,592 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 14:33:02,592 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 14:33:02,628 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 14:33:03,402 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 14:33:04,035 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 14:33:04,185 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 14:33:04,189 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 14:33:04,191 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 14:33:04,277 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 14:33:04,285 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 14:33:04,302 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:33:04,307 - gui.py:725 - default_logger - DEBUG - 가격수정 : True +2024-10-14 14:33:05,300 - browser_control.py:381 - default_logger - DEBUG - 가격 탭 클릭 완료. +2024-10-14 14:33:05,300 - price.py:80 - default_logger - DEBUG - 초기 더하기마진과 해외배송비 가격 정보를 수집합니다. +2024-10-14 14:33:06,159 - price.py:640 - default_logger - DEBUG - 더하기 마진 값: 10000 +2024-10-14 14:33:06,177 - price.py:645 - default_logger - DEBUG - 해외 배송비 값: 50000 +2024-10-14 14:33:06,177 - price.py:88 - default_logger - DEBUG - 옵션 가격 정보를 수집합니다. +2024-10-14 14:33:06,197 - price.py:539 - default_logger - DEBUG - 옵션 수: 18 +2024-10-14 14:33:06,724 - price.py:614 - default_logger - DEBUG - 상품원가가 모였습니다.: [185, 185, 185, 185, 185, 308, 308, 335, 358, 358, 358, 358, 358, 358, 358, 358, 358, 525] +2024-10-14 14:33:06,725 - price.py:615 - default_logger - DEBUG - 최소원가: 37000, 최대원가: 105000, 평균원가: 63000, 상위평균원가: 84000 +2024-10-14 14:33:06,726 - price.py:500 - default_logger - DEBUG - 원가에 카드수수료 4.0%, 기본마진 24.0% 적용된 계산원가: 108000 +2024-10-14 14:33:06,726 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:33:06,727 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:33:06,728 - price.py:470 - default_logger - DEBUG - 적용된 구간: 150000, 계산된 마진: 17000 +2024-10-14 14:33:06,728 - price.py:504 - default_logger - DEBUG - 계산원가 기준 해외배송비: 17000 +2024-10-14 14:33:06,729 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:33:06,729 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:33:06,730 - price.py:299 - default_logger - DEBUG - 적용된 구간: 100000, 계산된 구간추가배송비: 10000 +2024-10-14 14:33:06,731 - price.py:294 - default_logger - DEBUG - 적용된 구간: 200000, 계산된 구간추가배송비: 0 +2024-10-14 14:33:06,731 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 20000 +2024-10-14 14:33:06,732 - price.py:508 - default_logger - DEBUG - 계산원가 기준 더하기마진: 20000 +2024-10-14 14:33:06,733 - price.py:511 - default_logger - DEBUG - 원가기반 가격: 145000 +2024-10-14 14:33:06,733 - price.py:98 - default_logger - DEBUG - 적정 판매가를 계산합니다. +2024-10-14 14:33:06,734 - price.py:401 - default_logger - DEBUG - 비율 기반 계산된 가격: 80000, 상한: 194000, 하한: 143000 +2024-10-14 14:33:06,734 - price.py:405 - default_logger - DEBUG - 가격이 하한을 밑돌아서 하한으로 조정됨: 143000 +2024-10-14 14:33:06,735 - price.py:103 - default_logger - DEBUG - 계산된 적정 판매가: 143000 +2024-10-14 14:33:06,736 - price.py:106 - default_logger - DEBUG - 더하기 마진을 적정 판매가에 맞게 조정합니다. +2024-10-14 14:33:06,736 - price.py:335 - default_logger - DEBUG - 총 옵션 기준 판매가 평균: 138000 +2024-10-14 14:33:06,737 - price.py:339 - default_logger - DEBUG - 적정 판매가와 기준 판매가 차이: 5000 +2024-10-14 14:33:06,737 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:33:06,738 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:33:06,739 - price.py:470 - default_logger - DEBUG - 적용된 구간: 150000, 계산된 마진: 24000 +2024-10-14 14:33:06,739 - price.py:109 - default_logger - DEBUG - 조정된 더하기 마진: 25000 +2024-10-14 14:33:06,740 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:33:06,740 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:33:06,741 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:33:06,741 - price.py:115 - default_logger - DEBUG - 적정판매가 기준으로 재계산된 해외배송비: 10000 +2024-10-14 14:33:06,742 - price.py:751 - default_logger - DEBUG - category : 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:33:06,743 - cmb_diag.py:814 - default_logger - DEBUG - Parsed category levels - Level 1: 생활/건강, Level 2: 공구, Level 3: 에어공구, Level 4: 유압공구 +2024-10-14 14:33:06,743 - cmb_diag.py:825 - default_logger - DEBUG - Executing query to find CMB stage for category: 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:33:06,744 - cmb_diag.py:827 - default_logger - DEBUG - Query arguments: ['생활/건강', '생활/건강', '공구', '공구', '에어공구', '에어공구', '유압공구', '유압공구'] +2024-10-14 14:33:06,744 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:33:06,746 - DatabaseManager.py:68 - default_logger - ERROR - Error fetching one result: + SELECT crmobi_stage FROM categories + WHERE (category1 = ? OR ? IS NULL) + AND (category2 = ? OR ? IS NULL) + AND (category3 = ? OR ? IS NULL) + AND (category4 = ? OR ? IS NULL) + , params: ['생활/건강', '생활/건강', '공구', '공구', '에어공구', '에어공구', '유압공구', '유압공구'], error: List argument must consist only of tuples or dictionaries +2024-10-14 14:33:06,746 - cmb_diag.py:859 - default_logger - ERROR - DB 조회 중 오류가 발생했습니다: List argument must consist only of tuples or dictionaries +Traceback (most recent call last): + File "D:\py\autoTrans\src\cmb_diag.py", line 829, in get_crmobi_stage + result = self.db_manager.fetchone(query, args) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\src\DatabaseManager.py", line 62, in fetchone + result = session.execute(text(query), params).fetchone() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2256, in _execute_internal + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\engine\base.py", line 1412, in execute + distilled_parameters = _distill_params_20(parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 32, in sqlalchemy.cyextension.util._distill_params_20 + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 23, in sqlalchemy.cyextension.util._check_item +sqlalchemy.exc.ArgumentError: List argument must consist only of tuples or dictionaries +2024-10-14 14:33:11,991 - price.py:137 - default_logger - ERROR - 가격 수정 중 오류 발생: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 118, in process_price + extra_shipping = self.calculate_category_extra_shipping(category, optimal_price) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\price.py", line 755, in calculate_category_extra_shipping + category_data = self.locator_manager.get_category_data(category) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +2024-10-14 14:33:12,080 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 14:33:12,085 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 14:33:12,639 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 14:33:14,031 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 14:33:14,033 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 14:33:14,035 - gui.py:696 - default_logger - DEBUG - 번역 작업이 중단되었습니다. +2024-10-14 14:33:16,725 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 14:35:57,022 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 14:35:57,022 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 14:35:57,028 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 14:35:57,028 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 14:35:57,028 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 14:35:57,045 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 14:35:57,051 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:35:57,057 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:35:57,136 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:35:57,136 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 14:35:57,136 - cmb_diag.py:384 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 14:35:57,136 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:35:57,136 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 14:35:57,136 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 14:35:57,136 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 14:35:57,136 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 14:35:57,136 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 14:35:59,898 - gui.py:449 - default_logger - DEBUG - 가격 수정 버튼 - 활성화 선택 +2024-10-14 14:36:01,101 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 14:36:01,104 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 14:36:01,104 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 14:36:01,104 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 14:36:05,781 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 14:36:05,793 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 14:36:05,795 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 985432 +2024-10-14 14:36:05,795 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 14:36:06,043 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 14:36:07,681 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 14:36:07,801 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 14:36:07,802 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 14:36:08,101 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 14:36:08,102 - option.py:37 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:36:08,102 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:36:08,103 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:36:10,514 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 14:36:10,515 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 14:36:10,515 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 14:36:11,118 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 14:36:11,123 - browser_control.py:173 - default_logger - DEBUG - 가져온 텍스트: 총 31개 상품 +2024-10-14 14:36:11,123 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 14:36:11,129 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 14:36:11,130 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 14:36:11,170 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 14:36:11,756 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 14:36:12,290 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 14:36:12,303 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 14:36:12,512 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 14:36:12,516 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 14:36:12,527 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 14:36:12,533 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 14:36:12,547 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:36:12,550 - gui.py:725 - default_logger - DEBUG - 가격수정 : True +2024-10-14 14:36:13,456 - browser_control.py:381 - default_logger - DEBUG - 가격 탭 클릭 완료. +2024-10-14 14:36:13,457 - price.py:80 - default_logger - DEBUG - 초기 더하기마진과 해외배송비 가격 정보를 수집합니다. +2024-10-14 14:36:13,600 - price.py:640 - default_logger - DEBUG - 더하기 마진 값: 10000 +2024-10-14 14:36:13,622 - price.py:645 - default_logger - DEBUG - 해외 배송비 값: 50000 +2024-10-14 14:36:13,622 - price.py:88 - default_logger - DEBUG - 옵션 가격 정보를 수집합니다. +2024-10-14 14:36:13,698 - price.py:539 - default_logger - DEBUG - 옵션 수: 18 +2024-10-14 14:36:14,248 - price.py:614 - default_logger - DEBUG - 상품원가가 모였습니다.: [185, 185, 185, 185, 185, 308, 308, 335, 358, 358, 358, 358, 358, 358, 358, 358, 358, 525] +2024-10-14 14:36:14,262 - price.py:615 - default_logger - DEBUG - 최소원가: 37000, 최대원가: 105000, 평균원가: 63000, 상위평균원가: 84000 +2024-10-14 14:36:14,262 - price.py:500 - default_logger - DEBUG - 원가에 카드수수료 4.0%, 기본마진 24.0% 적용된 계산원가: 108000 +2024-10-14 14:36:14,263 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:36:14,264 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:36:14,264 - price.py:470 - default_logger - DEBUG - 적용된 구간: 150000, 계산된 마진: 17000 +2024-10-14 14:36:14,265 - price.py:504 - default_logger - DEBUG - 계산원가 기준 해외배송비: 17000 +2024-10-14 14:36:14,265 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:36:14,266 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:36:14,266 - price.py:299 - default_logger - DEBUG - 적용된 구간: 100000, 계산된 구간추가배송비: 10000 +2024-10-14 14:36:14,267 - price.py:294 - default_logger - DEBUG - 적용된 구간: 200000, 계산된 구간추가배송비: 0 +2024-10-14 14:36:14,267 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 20000 +2024-10-14 14:36:14,268 - price.py:508 - default_logger - DEBUG - 계산원가 기준 더하기마진: 20000 +2024-10-14 14:36:14,268 - price.py:511 - default_logger - DEBUG - 원가기반 가격: 145000 +2024-10-14 14:36:14,269 - price.py:98 - default_logger - DEBUG - 적정 판매가를 계산합니다. +2024-10-14 14:36:14,269 - price.py:401 - default_logger - DEBUG - 비율 기반 계산된 가격: 80000, 상한: 194000, 하한: 143000 +2024-10-14 14:36:14,270 - price.py:405 - default_logger - DEBUG - 가격이 하한을 밑돌아서 하한으로 조정됨: 143000 +2024-10-14 14:36:14,270 - price.py:103 - default_logger - DEBUG - 계산된 적정 판매가: 143000 +2024-10-14 14:36:14,271 - price.py:106 - default_logger - DEBUG - 더하기 마진을 적정 판매가에 맞게 조정합니다. +2024-10-14 14:36:14,271 - price.py:335 - default_logger - DEBUG - 총 옵션 기준 판매가 평균: 138000 +2024-10-14 14:36:14,272 - price.py:339 - default_logger - DEBUG - 적정 판매가와 기준 판매가 차이: 5000 +2024-10-14 14:36:14,272 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:36:14,273 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:36:14,274 - price.py:470 - default_logger - DEBUG - 적용된 구간: 150000, 계산된 마진: 24000 +2024-10-14 14:36:14,274 - price.py:109 - default_logger - DEBUG - 조정된 더하기 마진: 25000 +2024-10-14 14:36:14,275 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:36:14,275 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:36:14,276 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:36:14,276 - price.py:115 - default_logger - DEBUG - 적정판매가 기준으로 재계산된 해외배송비: 10000 +2024-10-14 14:36:14,277 - price.py:751 - default_logger - DEBUG - category : 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:36:14,277 - cmb_diag.py:814 - default_logger - DEBUG - Parsed category levels - Level 1: 생활/건강, Level 2: 공구, Level 3: 에어공구, Level 4: 유압공구 +2024-10-14 14:36:14,278 - cmb_diag.py:825 - default_logger - DEBUG - Executing query to find CMB stage for category: 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:36:14,278 - cmb_diag.py:832 - default_logger - DEBUG - Query arguments: {'category1': '생활/건강', 'category2': '공구', 'category3': '에어공구', 'category4': '유압공구'} +2024-10-14 14:36:14,279 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:36:14,281 - DatabaseManager.py:64 - default_logger - DEBUG - Fetched one result for query: + SELECT crmobi_stage FROM categories + WHERE (category1 = :category1 OR :category1 IS NULL) + AND (category2 = :category2 OR :category2 IS NULL) + AND (category3 = :category3 OR :category3 IS NULL) + AND (category4 = :category4 OR :category4 IS NULL) + with params: {'category1': '생활/건강', 'category2': '공구', 'category3': '에어공구', 'category4': '유압공구'}, result: (2,) +2024-10-14 14:36:14,281 - cmb_diag.py:838 - default_logger - DEBUG - Query result for CMB stage: (2,) +2024-10-14 14:36:14,282 - cmb_diag.py:842 - default_logger - DEBUG - CMB stage found: 2 +2024-10-14 14:36:14,283 - cmb_diag.py:850 - default_logger - DEBUG - Executing query to get stage details for stage: 2 +2024-10-14 14:36:14,283 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:36:14,284 - DatabaseManager.py:64 - default_logger - DEBUG - Fetched one result for query: + SELECT threshold, increment_unit, extra_cost + FROM crmobi_stages + WHERE stage = :stage + with params: {'stage': 2}, result: (260000, 28000, 26000) +2024-10-14 14:36:14,285 - cmb_diag.py:852 - default_logger - DEBUG - Stage details result: (260000, 28000, 26000) +2024-10-14 14:36:14,285 - cmb_diag.py:856 - default_logger - DEBUG - Returning stage details - Threshold: 260000, Increment Unit: 28000, Extra Cost: 26000 +2024-10-14 14:36:14,286 - price.py:137 - default_logger - ERROR - 가격 수정 중 오류 발생: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 118, in process_price + extra_shipping = self.calculate_category_extra_shipping(category, optimal_price) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\price.py", line 755, in calculate_category_extra_shipping + category_data = self.locator_manager.get_category_data(category) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +2024-10-14 14:36:14,377 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 14:36:14,377 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 14:36:14,732 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 14:36:14,732 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 14:36:14,740 - gui.py:699 - default_logger - DEBUG - 2/20: 세부사항 수정 작업 중... +2024-10-14 14:36:14,851 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 14:36:15,232 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 14:36:15,271 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 14:36:15,814 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 14:36:15,825 - title.py:94 - default_logger - DEBUG - 원본 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机 +2024-10-14 14:36:15,830 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 14:36:15,831 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 14:36:15,838 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 14:36:15,849 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 14:36:15,866 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:36:15,866 - gui.py:725 - default_logger - DEBUG - 가격수정 : True +2024-10-14 14:36:16,238 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 14:36:16,359 - browser_control.py:381 - default_logger - DEBUG - 가격 탭 클릭 완료. +2024-10-14 14:36:16,360 - price.py:80 - default_logger - DEBUG - 초기 더하기마진과 해외배송비 가격 정보를 수집합니다. +2024-10-14 14:36:16,522 - price.py:640 - default_logger - DEBUG - 더하기 마진 값: 10000 +2024-10-14 14:36:16,556 - price.py:645 - default_logger - DEBUG - 해외 배송비 값: 30000 +2024-10-14 14:36:16,556 - price.py:88 - default_logger - DEBUG - 옵션 가격 정보를 수집합니다. +2024-10-14 14:36:16,609 - price.py:539 - default_logger - DEBUG - 옵션 수: 4 +2024-10-14 14:36:16,767 - price.py:614 - default_logger - DEBUG - 상품원가가 모였습니다.: [189, 189, 189, 229] +2024-10-14 14:36:16,768 - price.py:615 - default_logger - DEBUG - 최소원가: 38000, 최대원가: 46000, 평균원가: 40000, 상위평균원가: 43000 +2024-10-14 14:36:16,769 - price.py:500 - default_logger - DEBUG - 원가에 카드수수료 4.0%, 기본마진 24.0% 적용된 계산원가: 56000 +2024-10-14 14:36:16,770 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:36:16,771 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:36:16,771 - price.py:470 - default_logger - DEBUG - 적용된 구간: 70000, 계산된 마진: 7000 +2024-10-14 14:36:16,772 - price.py:504 - default_logger - DEBUG - 계산원가 기준 해외배송비: 7000 +2024-10-14 14:36:16,773 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:36:16,773 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:36:16,774 - price.py:294 - default_logger - DEBUG - 적용된 구간: 100000, 계산된 구간추가배송비: 0 +2024-10-14 14:36:16,775 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:36:16,775 - price.py:508 - default_logger - DEBUG - 계산원가 기준 더하기마진: 10000 +2024-10-14 14:36:16,776 - price.py:511 - default_logger - DEBUG - 원가기반 가격: 73000 +2024-10-14 14:36:16,776 - price.py:98 - default_logger - DEBUG - 적정 판매가를 계산합니다. +2024-10-14 14:36:16,777 - price.py:401 - default_logger - DEBUG - 비율 기반 계산된 가격: 41000, 상한: 99000, 하한: 74000 +2024-10-14 14:36:16,778 - price.py:405 - default_logger - DEBUG - 가격이 하한을 밑돌아서 하한으로 조정됨: 74000 +2024-10-14 14:36:16,779 - price.py:103 - default_logger - DEBUG - 계산된 적정 판매가: 74000 +2024-10-14 14:36:16,779 - price.py:106 - default_logger - DEBUG - 더하기 마진을 적정 판매가에 맞게 조정합니다. +2024-10-14 14:36:16,780 - price.py:335 - default_logger - DEBUG - 총 옵션 기준 판매가 평균: 89700 +2024-10-14 14:36:16,780 - price.py:339 - default_logger - DEBUG - 적정 판매가와 기준 판매가 차이: -15700 +2024-10-14 14:36:16,781 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:36:16,781 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:36:16,782 - price.py:470 - default_logger - DEBUG - 적용된 구간: 100000, 계산된 마진: 11000 +2024-10-14 14:36:16,782 - price.py:109 - default_logger - DEBUG - 조정된 더하기 마진: 11000 +2024-10-14 14:36:16,783 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:36:16,783 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:36:16,784 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:36:16,784 - price.py:115 - default_logger - DEBUG - 적정판매가 기준으로 재계산된 해외배송비: 10000 +2024-10-14 14:36:16,786 - price.py:751 - default_logger - DEBUG - category : 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:36:16,786 - cmb_diag.py:814 - default_logger - DEBUG - Parsed category levels - Level 1: 생활/건강, Level 2: 공구, Level 3: 에어공구, Level 4: 유압공구 +2024-10-14 14:36:16,786 - cmb_diag.py:825 - default_logger - DEBUG - Executing query to find CMB stage for category: 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:36:16,787 - cmb_diag.py:832 - default_logger - DEBUG - Query arguments: {'category1': '생활/건강', 'category2': '공구', 'category3': '에어공구', 'category4': '유압공구'} +2024-10-14 14:36:16,787 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:36:16,789 - DatabaseManager.py:64 - default_logger - DEBUG - Fetched one result for query: + SELECT crmobi_stage FROM categories + WHERE (category1 = :category1 OR :category1 IS NULL) + AND (category2 = :category2 OR :category2 IS NULL) + AND (category3 = :category3 OR :category3 IS NULL) + AND (category4 = :category4 OR :category4 IS NULL) + with params: {'category1': '생활/건강', 'category2': '공구', 'category3': '에어공구', 'category4': '유압공구'}, result: (2,) +2024-10-14 14:36:16,790 - cmb_diag.py:838 - default_logger - DEBUG - Query result for CMB stage: (2,) +2024-10-14 14:36:16,791 - cmb_diag.py:842 - default_logger - DEBUG - CMB stage found: 2 +2024-10-14 14:36:16,791 - cmb_diag.py:850 - default_logger - DEBUG - Executing query to get stage details for stage: 2 +2024-10-14 14:36:16,791 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:36:16,792 - DatabaseManager.py:64 - default_logger - DEBUG - Fetched one result for query: + SELECT threshold, increment_unit, extra_cost + FROM crmobi_stages + WHERE stage = :stage + with params: {'stage': 2}, result: (260000, 28000, 26000) +2024-10-14 14:36:16,792 - cmb_diag.py:852 - default_logger - DEBUG - Stage details result: (260000, 28000, 26000) +2024-10-14 14:36:16,794 - cmb_diag.py:856 - default_logger - DEBUG - Returning stage details - Threshold: 260000, Increment Unit: 28000, Extra Cost: 26000 +2024-10-14 14:36:16,794 - price.py:137 - default_logger - ERROR - 가격 수정 중 오류 발생: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +Traceback (most recent call last): + File "D:\py\autoTrans\price.py", line 118, in process_price + extra_shipping = self.calculate_category_extra_shipping(category, optimal_price) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\price.py", line 755, in calculate_category_extra_shipping + category_data = self.locator_manager.get_category_data(category) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: LocatorManager.get_category_data() missing 1 required positional argument: 'category' +2024-10-14 14:36:16,889 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 14:36:16,896 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 14:36:17,297 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 14:36:17,297 - gui.py:754 - default_logger - DEBUG - 2/[31]개 상품 수정 완료. +2024-10-14 14:36:17,297 - gui.py:696 - default_logger - DEBUG - 번역 작업이 중단되었습니다. +2024-10-14 14:36:19,034 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 14:43:15,534 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 14:43:15,534 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 14:43:15,546 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 14:43:15,546 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 14:43:15,547 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 14:43:15,560 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 14:43:15,564 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:43:15,587 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:43:15,693 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:43:15,694 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 14:43:15,695 - cmb_diag.py:384 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 14:43:15,695 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:43:15,696 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 14:43:15,696 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 14:43:15,696 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 14:43:15,696 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 14:43:15,697 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 14:44:02,527 - gui.py:449 - default_logger - DEBUG - 가격 수정 버튼 - 활성화 선택 +2024-10-14 14:44:03,194 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 14:44:03,194 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 14:44:03,197 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 14:44:03,197 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 14:44:07,635 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 14:44:07,647 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 14:44:07,648 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 2427248 +2024-10-14 14:44:07,648 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 14:44:07,922 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 14:44:09,598 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 14:44:09,806 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 14:44:09,807 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 14:44:10,131 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 14:44:10,131 - option.py:37 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:44:10,131 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:44:10,135 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:44:15,516 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 14:44:33,807 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:44:33,807 - DatabaseManager.py:64 - default_logger - DEBUG - Fetched one result for query: SELECT COUNT(1) FROM crmobi_stages WHERE stage = :stage with params: {'stage': 1}, result: (1,) +2024-10-14 14:44:33,807 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:44:33,807 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: + UPDATE crmobi_stages + SET threshold = :threshold, increment_unit = :increment_unit, extra_cost = :extra_cost + WHERE stage = :stage + with params: {'threshold': 113000, 'increment_unit': 70000, 'extra_cost': 12000, 'stage': 1} +2024-10-14 14:44:33,807 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:44:33,807 - DatabaseManager.py:64 - default_logger - DEBUG - Fetched one result for query: SELECT COUNT(1) FROM crmobi_stages WHERE stage = :stage with params: {'stage': 2}, result: (1,) +2024-10-14 14:44:33,807 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:44:33,822 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: + UPDATE crmobi_stages + SET threshold = :threshold, increment_unit = :increment_unit, extra_cost = :extra_cost + WHERE stage = :stage + with params: {'threshold': 84000, 'increment_unit': 10000, 'extra_cost': 7000, 'stage': 2} +2024-10-14 14:44:33,822 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:44:33,822 - DatabaseManager.py:64 - default_logger - DEBUG - Fetched one result for query: SELECT COUNT(1) FROM crmobi_stages WHERE stage = :stage with params: {'stage': 3}, result: (1,) +2024-10-14 14:44:33,822 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:44:33,822 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: + UPDATE crmobi_stages + SET threshold = :threshold, increment_unit = :increment_unit, extra_cost = :extra_cost + WHERE stage = :stage + with params: {'threshold': 390000, 'increment_unit': 26000, 'extra_cost': 26000, 'stage': 3} +2024-10-14 14:44:38,174 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 14:44:38,174 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 14:44:38,174 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 14:44:38,851 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 14:44:38,856 - browser_control.py:173 - default_logger - DEBUG - 가져온 텍스트: 총 31개 상품 +2024-10-14 14:44:38,856 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 14:44:38,862 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 14:44:38,863 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 14:44:38,914 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 14:44:39,534 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 14:44:40,196 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 14:44:40,211 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 14:44:40,215 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 14:44:40,215 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 14:44:40,227 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 14:44:40,234 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 14:44:40,244 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:44:40,244 - gui.py:725 - default_logger - DEBUG - 가격수정 : True +2024-10-14 14:44:41,253 - browser_control.py:381 - default_logger - DEBUG - 가격 탭 클릭 완료. +2024-10-14 14:44:41,253 - price.py:80 - default_logger - DEBUG - 초기 더하기마진과 해외배송비 가격 정보를 수집합니다. +2024-10-14 14:44:41,405 - price.py:640 - default_logger - DEBUG - 더하기 마진 값: 10000 +2024-10-14 14:44:41,452 - price.py:645 - default_logger - DEBUG - 해외 배송비 값: 50000 +2024-10-14 14:44:41,452 - price.py:88 - default_logger - DEBUG - 옵션 가격 정보를 수집합니다. +2024-10-14 14:44:41,598 - price.py:539 - default_logger - DEBUG - 옵션 수: 18 +2024-10-14 14:44:42,104 - price.py:614 - default_logger - DEBUG - 상품원가가 모였습니다.: [185, 185, 185, 185, 185, 308, 308, 335, 358, 358, 358, 358, 358, 358, 358, 358, 358, 525] +2024-10-14 14:44:42,105 - price.py:615 - default_logger - DEBUG - 최소원가: 37000, 최대원가: 105000, 평균원가: 63000, 상위평균원가: 84000 +2024-10-14 14:44:42,105 - price.py:500 - default_logger - DEBUG - 원가에 카드수수료 4.0%, 기본마진 24.0% 적용된 계산원가: 108000 +2024-10-14 14:44:42,106 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:44:42,106 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:44:42,108 - price.py:470 - default_logger - DEBUG - 적용된 구간: 150000, 계산된 마진: 17000 +2024-10-14 14:44:42,108 - price.py:504 - default_logger - DEBUG - 계산원가 기준 해외배송비: 17000 +2024-10-14 14:44:42,108 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:44:42,109 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:44:42,109 - price.py:299 - default_logger - DEBUG - 적용된 구간: 100000, 계산된 구간추가배송비: 10000 +2024-10-14 14:44:42,109 - price.py:294 - default_logger - DEBUG - 적용된 구간: 200000, 계산된 구간추가배송비: 0 +2024-10-14 14:44:42,109 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 20000 +2024-10-14 14:44:42,109 - price.py:508 - default_logger - DEBUG - 계산원가 기준 더하기마진: 20000 +2024-10-14 14:44:42,109 - price.py:511 - default_logger - DEBUG - 원가기반 가격: 145000 +2024-10-14 14:44:42,109 - price.py:98 - default_logger - DEBUG - 적정 판매가를 계산합니다. +2024-10-14 14:44:42,109 - price.py:401 - default_logger - DEBUG - 비율 기반 계산된 가격: 80000, 상한: 194000, 하한: 143000 +2024-10-14 14:44:42,109 - price.py:405 - default_logger - DEBUG - 가격이 하한을 밑돌아서 하한으로 조정됨: 143000 +2024-10-14 14:44:42,109 - price.py:103 - default_logger - DEBUG - 계산된 적정 판매가: 143000 +2024-10-14 14:44:42,109 - price.py:106 - default_logger - DEBUG - 더하기 마진을 적정 판매가에 맞게 조정합니다. +2024-10-14 14:44:42,109 - price.py:335 - default_logger - DEBUG - 총 옵션 기준 판매가 평균: 138000 +2024-10-14 14:44:42,109 - price.py:339 - default_logger - DEBUG - 적정 판매가와 기준 판매가 차이: 5000 +2024-10-14 14:44:42,109 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:44:42,109 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:44:42,109 - price.py:470 - default_logger - DEBUG - 적용된 구간: 150000, 계산된 마진: 24000 +2024-10-14 14:44:42,109 - price.py:109 - default_logger - DEBUG - 조정된 더하기 마진: 25000 +2024-10-14 14:44:42,109 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:44:42,109 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:44:42,109 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:44:42,109 - price.py:115 - default_logger - DEBUG - 적정판매가 기준으로 재계산된 해외배송비: 10000 +2024-10-14 14:44:42,109 - price.py:751 - default_logger - DEBUG - category : 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:44:42,109 - cmb_diag.py:814 - default_logger - DEBUG - Parsed category levels - Level 1: 생활/건강, Level 2: 공구, Level 3: 에어공구, Level 4: 유압공구 +2024-10-14 14:44:42,109 - cmb_diag.py:825 - default_logger - DEBUG - Executing query to find CMB stage for category: 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:44:42,109 - cmb_diag.py:832 - default_logger - DEBUG - Query arguments: {'category1': '생활/건강', 'category2': '공구', 'category3': '에어공구', 'category4': '유압공구'} +2024-10-14 14:44:42,109 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:44:42,123 - DatabaseManager.py:64 - default_logger - DEBUG - Fetched one result for query: + SELECT crmobi_stage FROM categories + WHERE (category1 = :category1 OR :category1 IS NULL) + AND (category2 = :category2 OR :category2 IS NULL) + AND (category3 = :category3 OR :category3 IS NULL) + AND (category4 = :category4 OR :category4 IS NULL) + with params: {'category1': '생활/건강', 'category2': '공구', 'category3': '에어공구', 'category4': '유압공구'}, result: (2,) +2024-10-14 14:44:42,123 - cmb_diag.py:838 - default_logger - DEBUG - Query result for CMB stage: (2,) +2024-10-14 14:44:42,126 - cmb_diag.py:842 - default_logger - DEBUG - CMB stage found: 2 +2024-10-14 14:44:42,126 - cmb_diag.py:850 - default_logger - DEBUG - Executing query to get stage details for stage: 2 +2024-10-14 14:44:42,126 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:44:42,126 - DatabaseManager.py:64 - default_logger - DEBUG - Fetched one result for query: + SELECT threshold, increment_unit, extra_cost + FROM crmobi_stages + WHERE stage = :stage + with params: {'stage': 2}, result: (84000, 10000, 7000) +2024-10-14 14:44:42,126 - cmb_diag.py:852 - default_logger - DEBUG - Stage details result: (84000, 10000, 7000) +2024-10-14 14:44:42,126 - cmb_diag.py:856 - default_logger - DEBUG - Returning stage details - Threshold: 84000, Increment Unit: 10000, Extra Cost: 7000 +2024-10-14 14:44:42,126 - price.py:763 - default_logger - DEBUG - 생활/건강-공구-에어공구-유압공구 카테고리, threshold 84000을 초과하여 추가 해외배송비 35000 추가 적용 +2024-10-14 14:44:42,126 - price.py:768 - default_logger - DEBUG - 총 추가 해외배송비: 35000 +2024-10-14 14:44:42,126 - price.py:120 - default_logger - DEBUG - 카테고리별 추가배송비 기준으로 재계산된 해외배송비: 45000 +2024-10-14 14:44:42,126 - price.py:123 - default_logger - DEBUG - 계산된 값을 페이지에 입력합니다. +2024-10-14 14:44:42,177 - price.py:229 - default_logger - DEBUG - 더하기 마진 입력 완료: 25000 +2024-10-14 14:44:42,259 - price.py:234 - default_logger - DEBUG - 해외 배송비 입력 완료: 45000 +2024-10-14 14:44:42,267 - price.py:205 - default_logger - DEBUG - 계산된 반품비: 105000, 초도배송비: 105000, 교환비: 210000 +2024-10-14 14:44:42,267 - price.py:128 - default_logger - DEBUG - 반품비: 105000, 초도배송비: 105000, 교환비: 210000 +2024-10-14 14:44:42,326 - price.py:156 - default_logger - DEBUG - 반품비 수정 완료: 105000 +2024-10-14 14:44:42,396 - price.py:165 - default_logger - DEBUG - 초도배송비 수정 완료: 105000 +2024-10-14 14:44:42,467 - price.py:174 - default_logger - DEBUG - 교환비 수정 완료: 210000 +2024-10-14 14:44:42,656 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 14:44:42,656 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 14:44:43,097 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 14:44:43,099 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 14:44:43,099 - gui.py:699 - default_logger - DEBUG - 2/20: 세부사항 수정 작업 중... +2024-10-14 14:44:43,415 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 14:44:43,853 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 14:44:44,418 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 14:44:44,581 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 14:44:44,600 - title.py:94 - default_logger - DEBUG - 원본 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机 +2024-10-14 14:44:44,601 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 14:44:44,602 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 14:44:44,608 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 14:44:44,622 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 14:44:44,625 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:44:44,625 - gui.py:725 - default_logger - DEBUG - 가격수정 : True +2024-10-14 14:44:45,013 - browser_control.py:381 - default_logger - DEBUG - 가격 탭 클릭 완료. +2024-10-14 14:44:45,013 - price.py:80 - default_logger - DEBUG - 초기 더하기마진과 해외배송비 가격 정보를 수집합니다. +2024-10-14 14:44:45,130 - price.py:640 - default_logger - DEBUG - 더하기 마진 값: 10000 +2024-10-14 14:44:45,155 - price.py:645 - default_logger - DEBUG - 해외 배송비 값: 30000 +2024-10-14 14:44:45,160 - price.py:88 - default_logger - DEBUG - 옵션 가격 정보를 수집합니다. +2024-10-14 14:44:45,214 - price.py:539 - default_logger - DEBUG - 옵션 수: 4 +2024-10-14 14:44:45,386 - price.py:614 - default_logger - DEBUG - 상품원가가 모였습니다.: [189, 189, 189, 229] +2024-10-14 14:44:45,387 - price.py:615 - default_logger - DEBUG - 최소원가: 38000, 최대원가: 46000, 평균원가: 40000, 상위평균원가: 43000 +2024-10-14 14:44:45,387 - price.py:500 - default_logger - DEBUG - 원가에 카드수수료 4.0%, 기본마진 24.0% 적용된 계산원가: 56000 +2024-10-14 14:44:45,389 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:44:45,390 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:44:45,391 - price.py:470 - default_logger - DEBUG - 적용된 구간: 70000, 계산된 마진: 7000 +2024-10-14 14:44:45,393 - price.py:504 - default_logger - DEBUG - 계산원가 기준 해외배송비: 7000 +2024-10-14 14:44:45,393 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:44:45,393 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:44:45,393 - price.py:294 - default_logger - DEBUG - 적용된 구간: 100000, 계산된 구간추가배송비: 0 +2024-10-14 14:44:45,393 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:44:45,393 - price.py:508 - default_logger - DEBUG - 계산원가 기준 더하기마진: 10000 +2024-10-14 14:44:45,393 - price.py:511 - default_logger - DEBUG - 원가기반 가격: 73000 +2024-10-14 14:44:45,393 - price.py:98 - default_logger - DEBUG - 적정 판매가를 계산합니다. +2024-10-14 14:44:45,393 - price.py:401 - default_logger - DEBUG - 비율 기반 계산된 가격: 41000, 상한: 99000, 하한: 74000 +2024-10-14 14:44:45,399 - price.py:405 - default_logger - DEBUG - 가격이 하한을 밑돌아서 하한으로 조정됨: 74000 +2024-10-14 14:44:45,399 - price.py:103 - default_logger - DEBUG - 계산된 적정 판매가: 74000 +2024-10-14 14:44:45,399 - price.py:106 - default_logger - DEBUG - 더하기 마진을 적정 판매가에 맞게 조정합니다. +2024-10-14 14:44:45,399 - price.py:335 - default_logger - DEBUG - 총 옵션 기준 판매가 평균: 89700 +2024-10-14 14:44:45,399 - price.py:339 - default_logger - DEBUG - 적정 판매가와 기준 판매가 차이: -15700 +2024-10-14 14:44:45,399 - price.py:436 - default_logger - DEBUG - 기존 구간: [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000] +2024-10-14 14:44:45,399 - price.py:437 - default_logger - DEBUG - 기존 추가 마진: [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000] +2024-10-14 14:44:45,399 - price.py:470 - default_logger - DEBUG - 적용된 구간: 100000, 계산된 마진: 11000 +2024-10-14 14:44:45,399 - price.py:109 - default_logger - DEBUG - 조정된 더하기 마진: 11000 +2024-10-14 14:44:45,399 - price.py:263 - default_logger - DEBUG - 기존 구간: [50000, 100000, 200000] +2024-10-14 14:44:45,399 - price.py:264 - default_logger - DEBUG - 기존 추가 비용: [5000, 7000, 9000] +2024-10-14 14:44:45,407 - price.py:309 - default_logger - DEBUG - 최종 계산된 배송비: 10000 +2024-10-14 14:44:45,407 - price.py:115 - default_logger - DEBUG - 적정판매가 기준으로 재계산된 해외배송비: 10000 +2024-10-14 14:44:45,408 - price.py:751 - default_logger - DEBUG - category : 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:44:45,408 - cmb_diag.py:814 - default_logger - DEBUG - Parsed category levels - Level 1: 생활/건강, Level 2: 공구, Level 3: 에어공구, Level 4: 유압공구 +2024-10-14 14:44:45,410 - cmb_diag.py:825 - default_logger - DEBUG - Executing query to find CMB stage for category: 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:44:45,410 - cmb_diag.py:832 - default_logger - DEBUG - Query arguments: {'category1': '생활/건강', 'category2': '공구', 'category3': '에어공구', 'category4': '유압공구'} +2024-10-14 14:44:45,410 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:44:45,413 - DatabaseManager.py:64 - default_logger - DEBUG - Fetched one result for query: + SELECT crmobi_stage FROM categories + WHERE (category1 = :category1 OR :category1 IS NULL) + AND (category2 = :category2 OR :category2 IS NULL) + AND (category3 = :category3 OR :category3 IS NULL) + AND (category4 = :category4 OR :category4 IS NULL) + with params: {'category1': '생활/건강', 'category2': '공구', 'category3': '에어공구', 'category4': '유압공구'}, result: (2,) +2024-10-14 14:44:45,413 - cmb_diag.py:838 - default_logger - DEBUG - Query result for CMB stage: (2,) +2024-10-14 14:44:45,414 - cmb_diag.py:842 - default_logger - DEBUG - CMB stage found: 2 +2024-10-14 14:44:45,414 - cmb_diag.py:850 - default_logger - DEBUG - Executing query to get stage details for stage: 2 +2024-10-14 14:44:45,416 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:44:45,416 - DatabaseManager.py:64 - default_logger - DEBUG - Fetched one result for query: + SELECT threshold, increment_unit, extra_cost + FROM crmobi_stages + WHERE stage = :stage + with params: {'stage': 2}, result: (84000, 10000, 7000) +2024-10-14 14:44:45,416 - cmb_diag.py:852 - default_logger - DEBUG - Stage details result: (84000, 10000, 7000) +2024-10-14 14:44:45,416 - cmb_diag.py:856 - default_logger - DEBUG - Returning stage details - Threshold: 84000, Increment Unit: 10000, Extra Cost: 7000 +2024-10-14 14:44:45,416 - price.py:768 - default_logger - DEBUG - 총 추가 해외배송비: 0 +2024-10-14 14:44:45,416 - price.py:120 - default_logger - DEBUG - 카테고리별 추가배송비 기준으로 재계산된 해외배송비: 10000 +2024-10-14 14:44:45,416 - price.py:123 - default_logger - DEBUG - 계산된 값을 페이지에 입력합니다. +2024-10-14 14:44:45,472 - price.py:229 - default_logger - DEBUG - 더하기 마진 입력 완료: 11000 +2024-10-14 14:44:45,556 - price.py:234 - default_logger - DEBUG - 해외 배송비 입력 완료: 10000 +2024-10-14 14:44:45,557 - price.py:205 - default_logger - DEBUG - 계산된 반품비: 46000, 초도배송비: 46000, 교환비: 92000 +2024-10-14 14:44:45,558 - price.py:128 - default_logger - DEBUG - 반품비: 46000, 초도배송비: 46000, 교환비: 92000 +2024-10-14 14:44:45,618 - price.py:156 - default_logger - DEBUG - 반품비 수정 완료: 46000 +2024-10-14 14:44:45,677 - price.py:165 - default_logger - DEBUG - 초도배송비 수정 완료: 46000 +2024-10-14 14:44:45,744 - price.py:174 - default_logger - DEBUG - 교환비 수정 완료: 92000 +2024-10-14 14:44:46,897 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 14:44:46,897 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 14:44:47,252 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 14:44:47,254 - gui.py:754 - default_logger - DEBUG - 2/[31]개 상품 수정 완료. +2024-10-14 14:44:47,255 - gui.py:696 - default_logger - DEBUG - 번역 작업이 중단되었습니다. +2024-10-14 14:44:49,466 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 14:51:28,299 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 14:51:28,303 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 14:51:28,312 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 14:51:28,312 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 14:51:28,312 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 14:51:28,329 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 14:51:28,338 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:51:28,351 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 14:51:28,502 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:51:28,503 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 14:51:28,504 - cmb_diag.py:384 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 14:51:28,504 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 14:51:28,505 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 14:51:28,506 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 14:51:28,506 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 14:51:28,506 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 14:51:28,507 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 14:51:31,890 - gui.py:449 - default_logger - DEBUG - 옵션이미지 번역 버튼 - 활성화 선택 +2024-10-14 14:51:32,495 - gui.py:449 - default_logger - DEBUG - 옵션이미지 번역 버튼 - 비활성화 선택 +2024-10-14 14:51:33,227 - gui.py:449 - default_logger - DEBUG - 옵션명 AI번역 버튼 - 활성화 선택 +2024-10-14 14:51:35,344 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 14:51:35,344 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 14:51:35,344 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 14:51:35,348 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 14:51:39,894 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 14:51:39,906 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 14:51:39,908 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 985278 +2024-10-14 14:51:39,908 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 14:51:40,228 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 14:51:41,951 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 14:51:42,198 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 14:51:42,200 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 14:51:42,574 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 14:51:42,576 - option.py:37 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:51:42,577 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:51:42,578 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 14:51:44,769 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 14:51:44,769 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 14:51:44,769 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 14:51:45,407 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 14:51:45,412 - browser_control.py:173 - default_logger - DEBUG - 가져온 텍스트: 총 31개 상품 +2024-10-14 14:51:45,413 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 14:51:45,418 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 14:51:45,419 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 14:51:45,459 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 14:51:46,122 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 14:51:46,667 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 14:51:46,731 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 14:51:46,956 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 14:51:46,956 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 14:51:46,973 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 14:51:46,973 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 14:51:46,992 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:51:46,992 - gui.py:719 - default_logger - DEBUG - 옵션수정 : True + False + False +2024-10-14 14:51:47,735 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 14:51:47,736 - option.py:146 - default_logger - DEBUG - 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2에 대한 옵션을 처리 중... +2024-10-14 14:51:49,731 - option.py:252 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 14:51:49,741 - option.py:264 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 14:51:49,742 - option.py:529 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 14:51:49,743 - option.py:239 - default_logger - DEBUG - 옵션 처리 중 오류 발생: Frame.click() missing 1 required positional argument: 'selector' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 171, in process_options + await self.low_order_click() + File "D:\py\autoTrans\option.py", line 530, in low_order_click + await self.page.click(low_order_button_locator) + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 9625, in click + await self._impl_obj.click( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 777, in click + return await self._main_frame.click(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: Frame.click() missing 1 required positional argument: 'selector' +2024-10-14 14:51:50,128 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 14:51:50,129 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 14:51:50,588 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 14:51:50,590 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 14:51:50,590 - gui.py:699 - default_logger - DEBUG - 2/20: 세부사항 수정 작업 중... +2024-10-14 14:51:50,655 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 14:51:51,142 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 14:51:51,831 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 14:51:51,849 - title.py:94 - default_logger - DEBUG - 원본 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机 +2024-10-14 14:51:51,850 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 14:51:51,851 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 14:51:51,863 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 14:51:51,869 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 14:51:51,882 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 14:51:51,882 - gui.py:719 - default_logger - DEBUG - 옵션수정 : True + False + False +2024-10-14 14:51:51,939 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 14:51:52,372 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 14:51:52,373 - option.py:146 - default_logger - DEBUG - 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机에 대한 옵션을 처리 중... +2024-10-14 14:51:54,378 - option.py:252 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 14:51:54,389 - option.py:264 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 14:51:54,390 - option.py:529 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 14:51:54,390 - option.py:239 - default_logger - DEBUG - 옵션 처리 중 오류 발생: Frame.click() missing 1 required positional argument: 'selector' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 171, in process_options + await self.low_order_click() + File "D:\py\autoTrans\option.py", line 530, in low_order_click + await self.page.click(low_order_button_locator) + File "D:\py\autoTrans\Lib\site-packages\playwright\async_api\_generated.py", line 9625, in click + await self._impl_obj.click( + File "D:\py\autoTrans\Lib\site-packages\playwright\_impl\_page.py", line 777, in click + return await self._main_frame.click(**locals_to_params(locals())) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: Frame.click() missing 1 required positional argument: 'selector' +2024-10-14 14:51:54,516 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 14:51:54,517 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 14:51:55,152 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 14:51:55,153 - gui.py:754 - default_logger - DEBUG - 2/[31]개 상품 수정 완료. +2024-10-14 14:51:55,154 - gui.py:696 - default_logger - DEBUG - 번역 작업이 중단되었습니다. +2024-10-14 14:51:55,534 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 15:02:09,020 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 15:02:09,020 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 15:02:09,029 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 15:02:09,029 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 15:02:09,029 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 15:02:09,045 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 15:02:09,053 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:02:09,064 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:02:09,163 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:02:09,164 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 15:02:09,165 - cmb_diag.py:384 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 15:02:09,165 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:02:09,166 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 15:02:09,167 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 15:02:09,167 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 15:02:09,167 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 15:02:09,168 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 15:02:17,561 - gui.py:449 - default_logger - DEBUG - 옵션이미지 번역 버튼 - 활성화 선택 +2024-10-14 15:02:18,299 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 15:02:18,301 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 15:02:18,302 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 15:02:18,303 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 15:02:22,739 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 15:02:22,752 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 15:02:22,754 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 7276914 +2024-10-14 15:02:22,754 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 15:02:23,011 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 15:02:24,745 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 15:02:24,938 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 15:02:24,938 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 15:02:25,259 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 15:02:25,259 - option.py:39 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 15:02:25,259 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 15:02:25,261 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 15:02:28,159 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 15:02:28,159 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 15:02:28,159 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 15:02:28,778 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 15:02:28,784 - browser_control.py:173 - default_logger - DEBUG - 가져온 텍스트: 총 31개 상품 +2024-10-14 15:02:28,784 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 15:02:28,790 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 15:02:28,790 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 15:02:28,815 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 15:02:29,461 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 15:02:30,003 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 15:02:30,019 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 15:02:30,242 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 15:02:30,243 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 15:02:30,254 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 15:02:30,261 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 15:02:30,263 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 15:02:30,275 - gui.py:719 - default_logger - DEBUG - 옵션수정 : False + True + False +2024-10-14 15:02:30,954 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 15:02:30,955 - option.py:148 - default_logger - DEBUG - 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2에 대한 옵션을 처리 중... +2024-10-14 15:02:32,954 - option.py:254 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 15:02:32,964 - option.py:266 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 15:02:32,966 - option.py:529 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 15:02:33,084 - option.py:283 - default_logger - DEBUG - 총 옵션 갯수: 18 +2024-10-14 15:02:33,084 - option.py:320 - default_logger - ERROR - 1번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,091 - option.py:320 - default_logger - ERROR - 2번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,092 - option.py:320 - default_logger - ERROR - 3번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,092 - option.py:320 - default_logger - ERROR - 4번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,092 - option.py:320 - default_logger - ERROR - 5번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,092 - option.py:320 - default_logger - ERROR - 6번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 7번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 8번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 9번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 10번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 11번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 12번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 13번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 14번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 15번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 16번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 17번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - option.py:320 - default_logger - ERROR - 18번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:33,096 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {} +2024-10-14 15:02:33,096 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {} +2024-10-14 15:02:33,096 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{} +2024-10-14 15:02:33,107 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 15:02:35,081 - vertexAI.py:144 - default_logger - DEBUG - 모델 응답: ```json +{ +"trans_option_1": "220V", +"trans_option_2": "24V", +"trans_option_3": "DSG-02-3C2", +"trans_option_4": "DSG-02-3B2", +"trans_option_5": "DSG-02-3B3B", +"trans_option_6": "DSG-02-3C3", +"trans_option_7": "DSG-02-3C6", +"trans_option_8": "DSG-02-03", +"trans_option_9": "DSG-02-D2" +} +``` +2024-10-14 15:02:35,084 - vertexAI.py:151 - default_logger - DEBUG - 응답에서 추출된 JSON 텍스트: { +"trans_option_1": "220V", +"trans_option_2": "24V", +"trans_option_3": "DSG-02-3C2", +"trans_option_4": "DSG-02-3B2", +"trans_option_5": "DSG-02-3B3B", +"trans_option_6": "DSG-02-3C3", +"trans_option_7": "DSG-02-3C6", +"trans_option_8": "DSG-02-03", +"trans_option_9": "DSG-02-D2" +} +2024-10-14 15:02:35,084 - vertexAI.py:154 - default_logger - DEBUG - 번역된 데이터: {'trans_option_1': '220V', 'trans_option_2': '24V', 'trans_option_3': 'DSG-02-3C2', 'trans_option_4': 'DSG-02-3B2', 'trans_option_5': 'DSG-02-3B3B', 'trans_option_6': 'DSG-02-3C3', 'trans_option_7': 'DSG-02-3C6', 'trans_option_8': 'DSG-02-03', 'trans_option_9': 'DSG-02-D2'} +2024-10-14 15:02:35,084 - option.py:183 - default_logger - DEBUG - 번역된 옵션 입력 +2024-10-14 15:02:35,084 - option.py:428 - default_logger - DEBUG - trans_option_1번째 translated_name : 220V +2024-10-14 15:02:35,087 - option.py:448 - default_logger - DEBUG - 원본 옵션명을 찾을 수 없습니다: origin_option_1 +2024-10-14 15:02:35,088 - option.py:428 - default_logger - DEBUG - trans_option_2번째 translated_name : 24V +2024-10-14 15:02:35,088 - option.py:448 - default_logger - DEBUG - 원본 옵션명을 찾을 수 없습니다: origin_option_2 +2024-10-14 15:02:35,088 - option.py:428 - default_logger - DEBUG - trans_option_3번째 translated_name : DSG-02-3C2 +2024-10-14 15:02:35,088 - option.py:448 - default_logger - DEBUG - 원본 옵션명을 찾을 수 없습니다: origin_option_3 +2024-10-14 15:02:35,091 - option.py:428 - default_logger - DEBUG - trans_option_4번째 translated_name : DSG-02-3B2 +2024-10-14 15:02:35,091 - option.py:448 - default_logger - DEBUG - 원본 옵션명을 찾을 수 없습니다: origin_option_4 +2024-10-14 15:02:35,091 - option.py:428 - default_logger - DEBUG - trans_option_5번째 translated_name : DSG-02-3B3B +2024-10-14 15:02:35,092 - option.py:448 - default_logger - DEBUG - 원본 옵션명을 찾을 수 없습니다: origin_option_5 +2024-10-14 15:02:35,093 - option.py:428 - default_logger - DEBUG - trans_option_6번째 translated_name : DSG-02-3C3 +2024-10-14 15:02:35,093 - option.py:448 - default_logger - DEBUG - 원본 옵션명을 찾을 수 없습니다: origin_option_6 +2024-10-14 15:02:35,095 - option.py:428 - default_logger - DEBUG - trans_option_7번째 translated_name : DSG-02-3C6 +2024-10-14 15:02:35,095 - option.py:448 - default_logger - DEBUG - 원본 옵션명을 찾을 수 없습니다: origin_option_7 +2024-10-14 15:02:35,096 - option.py:428 - default_logger - DEBUG - trans_option_8번째 translated_name : DSG-02-03 +2024-10-14 15:02:35,096 - option.py:448 - default_logger - DEBUG - 원본 옵션명을 찾을 수 없습니다: origin_option_8 +2024-10-14 15:02:35,097 - option.py:428 - default_logger - DEBUG - trans_option_9번째 translated_name : DSG-02-D2 +2024-10-14 15:02:35,097 - option.py:448 - default_logger - DEBUG - 원본 옵션명을 찾을 수 없습니다: origin_option_9 +2024-10-14 15:02:35,098 - option.py:452 - default_logger - DEBUG - selected_translated_options 일괄 업데이트: {} +2024-10-14 15:02:35,098 - option.py:196 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 15:02:35,100 - option.py:493 - default_logger - ERROR - 옵션 필터링 및 조정 중 오류 발생: max() arg is an empty sequence +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 477, in filter_and_adjust_options + filtered_options = self.filter_bait_items_with_price_distribution(options_list) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\option.py", line 76, in filter_bait_items_with_price_distribution + if len(prices) <= 3 and (max(prices) / min(prices) > 3): + ^^^^^^^^^^^ +ValueError: max() arg is an empty sequence +2024-10-14 15:02:35,100 - option.py:200 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 15:02:35,101 - option.py:529 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 15:02:35,226 - option.py:134 - default_logger - DEBUG - 선택된 옵션 저장 완료: [] +2024-10-14 15:02:35,226 - option.py:231 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 15:02:35,244 - option.py:235 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 15:02:35,599 - option.py:238 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 15:02:35,925 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 15:02:35,925 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 15:02:36,348 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 15:02:36,352 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 15:02:36,352 - gui.py:699 - default_logger - DEBUG - 2/20: 세부사항 수정 작업 중... +2024-10-14 15:02:36,429 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 15:02:36,883 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 15:02:37,203 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 15:02:37,484 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 15:02:37,502 - title.py:94 - default_logger - DEBUG - 원본 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机 +2024-10-14 15:02:37,502 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 15:02:37,502 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 15:02:37,518 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 15:02:37,525 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 15:02:37,543 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 15:02:37,545 - gui.py:719 - default_logger - DEBUG - 옵션수정 : False + True + False +2024-10-14 15:02:37,740 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 15:02:37,955 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 15:02:37,969 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 15:02:37,972 - option.py:148 - default_logger - DEBUG - 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机에 대한 옵션을 처리 중... +2024-10-14 15:02:38,121 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 15:02:39,319 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 15:02:39,978 - option.py:254 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 15:02:39,987 - option.py:266 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 15:02:39,988 - option.py:529 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 15:02:40,097 - option.py:283 - default_logger - DEBUG - 총 옵션 갯수: 4 +2024-10-14 15:02:40,098 - option.py:320 - default_logger - ERROR - 1번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:40,099 - option.py:320 - default_logger - ERROR - 2번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:40,100 - option.py:320 - default_logger - ERROR - 3번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:40,101 - option.py:320 - default_logger - ERROR - 4번째 옵션 수집 중 오류 발생: 'i' +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 288, in collect_options_info + original_name_selector = self.original_name_selector_template.format(i) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 'i' +2024-10-14 15:02:40,101 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {} +2024-10-14 15:02:40,102 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {} +2024-10-14 15:02:40,103 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{} +2024-10-14 15:02:40,103 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 15:02:43,717 - option.py:190 - default_logger - ERROR - 안전 필터에 의해 번역 요청이 차단되었습니다. Cannot get the response text. +Cannot get the Candidate text. +Response candidate content has no parts (and thus no text). The candidate is likely blocked by the safety filters. +Content: +{} +Candidate: +{ + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.23632812, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.14746094 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "MEDIUM", + "blocked": true, + "probability_score": 0.74609375, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.58203125 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.21777344, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.13964844 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.27539062, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.115722656 + } + ], + "avg_logprobs": "NaN" +} +Response: +{ + "candidates": [ + { + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.23632812, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.14746094 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "MEDIUM", + "blocked": true, + "probability_score": 0.74609375, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.58203125 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.21777344, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.13964844 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.27539062, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.115722656 + } + ], + "avg_logprobs": "NaN" + } + ], + "usage_metadata": { + "prompt_token_count": 380, + "total_token_count": 380 + }, + "model_version": "gemini-1.5-flash-001" +} +2024-10-14 15:02:43,719 - option.py:191 - default_logger - DEBUG - 퍼센티 자체 AI번역 사용 시도 +2024-10-14 15:02:43,822 - option.py:196 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 15:02:43,823 - option.py:493 - default_logger - ERROR - 옵션 필터링 및 조정 중 오류 발생: max() arg is an empty sequence +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 477, in filter_and_adjust_options + filtered_options = self.filter_bait_items_with_price_distribution(options_list) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\option.py", line 76, in filter_bait_items_with_price_distribution + if len(prices) <= 3 and (max(prices) / min(prices) > 3): + ^^^^^^^^^^^ +ValueError: max() arg is an empty sequence +2024-10-14 15:02:43,824 - option.py:200 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 15:02:43,825 - option.py:529 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 15:02:43,925 - option.py:134 - default_logger - DEBUG - 선택된 옵션 저장 완료: [] +2024-10-14 15:02:43,925 - option.py:231 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 15:02:43,927 - option.py:235 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 15:02:44,165 - option.py:238 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 15:02:44,388 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 15:02:44,388 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 15:02:44,837 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 15:02:44,838 - gui.py:754 - default_logger - DEBUG - 2/[31]개 상품 수정 완료. +2024-10-14 15:02:44,839 - gui.py:696 - default_logger - DEBUG - 번역 작업이 중단되었습니다. +2024-10-14 15:02:45,903 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 15:10:19,279 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 15:10:19,279 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 15:10:19,291 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 15:10:19,291 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 15:10:19,291 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 15:10:19,307 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 15:10:19,312 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:10:19,321 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:10:19,401 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:10:19,401 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 15:10:19,401 - cmb_diag.py:384 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 15:10:19,401 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:10:19,401 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 15:10:19,409 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 15:10:19,409 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 15:10:19,409 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 15:10:19,409 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 15:10:22,392 - gui.py:449 - default_logger - DEBUG - 옵션이미지 번역 버튼 - 활성화 선택 +2024-10-14 15:10:22,887 - gui.py:449 - default_logger - DEBUG - 옵션이미지 번역 버튼 - 비활성화 선택 +2024-10-14 15:10:23,736 - gui.py:449 - default_logger - DEBUG - 옵션명 AI번역 버튼 - 활성화 선택 +2024-10-14 15:10:26,613 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 15:10:26,614 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 15:10:26,614 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 15:10:26,614 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 15:10:31,082 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 15:10:31,093 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 15:10:31,094 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 1772034 +2024-10-14 15:10:31,095 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 15:10:31,360 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 15:10:33,572 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 15:10:33,640 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 15:10:33,642 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 15:10:34,086 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 15:10:34,087 - option.py:39 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 15:10:34,087 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 15:10:34,087 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 15:10:44,924 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 15:10:44,927 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 15:10:44,927 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 15:10:45,559 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 15:10:45,559 - browser_control.py:173 - default_logger - DEBUG - 가져온 텍스트: 총 31개 상품 +2024-10-14 15:10:45,559 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 15:10:45,559 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 15:10:45,559 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 15:10:45,597 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 15:10:46,171 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 15:10:46,657 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 15:10:46,667 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 15:10:46,891 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 15:10:46,892 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 15:10:46,904 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 15:10:46,912 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 15:10:46,929 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 15:10:46,929 - gui.py:719 - default_logger - DEBUG - 옵션수정 : True + False + False +2024-10-14 15:10:47,623 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 15:10:47,625 - option.py:148 - default_logger - DEBUG - 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2에 대한 옵션을 처리 중... +2024-10-14 15:10:49,637 - option.py:254 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 15:10:49,648 - option.py:266 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 15:10:49,648 - option.py:529 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 15:10:49,777 - option.py:283 - default_logger - DEBUG - 총 옵션 갯수: 18 +2024-10-14 15:10:49,817 - option.py:318 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 15:10:49,875 - option.py:318 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 15:10:49,947 - option.py:318 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 15:10:49,985 - option.py:318 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,044 - option.py:318 - default_logger - DEBUG - 5번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,101 - option.py:318 - default_logger - DEBUG - 6번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,141 - option.py:318 - default_logger - DEBUG - 7번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,197 - option.py:318 - default_logger - DEBUG - 8번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,253 - option.py:318 - default_logger - DEBUG - 9번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,287 - option.py:318 - default_logger - DEBUG - 10번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,325 - option.py:318 - default_logger - DEBUG - 11번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,367 - option.py:318 - default_logger - DEBUG - 12번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,414 - option.py:318 - default_logger - DEBUG - 13번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,458 - option.py:318 - default_logger - DEBUG - 14번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,499 - option.py:318 - default_logger - DEBUG - 15번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,543 - option.py:318 - default_logger - DEBUG - 16번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,589 - option.py:318 - default_logger - DEBUG - 17번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,632 - option.py:318 - default_logger - DEBUG - 18번째 옵션 정보 수집 완료 +2024-10-14 15:10:50,632 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C4-LW', 'origin_option_7': 'DSG-02-3C5', 'origin_option_8': 'DSG-03-3C3', 'origin_option_9': 'DSG-02-3C60-DL 电磁换向阀', 'origin_option_10': 'DSG-02-3C6-DC24', 'origin_option_11': 'DSG-02-3C6-DC24-50', 'origin_option_12': 'DSG-02-3C6-AC220V', 'origin_option_13': 'DSG-02-3C9', 'origin_option_14': 'DSG-02-3C10', 'origin_option_15': 'DSG-02-3C11', 'origin_option_16': 'DSG-02-3C12', 'origin_option_17': '提示勿拍:其他型号规格请联系客服', 'origin_option_18': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 15:10:50,636 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-N-50 +2024-10-14 15:10:50,636 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-N-50 +2024-10-14 15:10:50,636 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-A220 +2024-10-14 15:10:50,636 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-A220 +2024-10-14 15:10:50,636 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-DL-D2 +2024-10-14 15:10:50,636 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-DL-D2 +2024-10-14 15:10:50,636 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-D24V +2024-10-14 15:10:50,640 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-D24V +2024-10-14 15:10:50,640 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-A220V +2024-10-14 15:10:50,641 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-A220V +2024-10-14 15:10:50,641 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-LW +2024-10-14 15:10:50,642 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-LW +2024-10-14 15:10:50,642 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C5 +2024-10-14 15:10:50,644 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C5 +2024-10-14 15:10:50,644 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-03-3C3 +2024-10-14 15:10:50,644 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-03-3C3 +2024-10-14 15:10:50,644 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C60-DL 电磁换向阀 +2024-10-14 15:10:50,644 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C60-DL 电磁换向阀 +2024-10-14 15:10:50,644 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DC24 +2024-10-14 15:10:50,644 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DC24 +2024-10-14 15:10:50,647 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DC24-50 +2024-10-14 15:10:50,647 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DC24-50 +2024-10-14 15:10:50,649 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-AC220V +2024-10-14 15:10:50,649 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-AC220V +2024-10-14 15:10:50,650 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C9 +2024-10-14 15:10:50,650 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C9 +2024-10-14 15:10:50,650 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C10 +2024-10-14 15:10:50,650 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C10 +2024-10-14 15:10:50,650 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C11 +2024-10-14 15:10:50,652 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C11 +2024-10-14 15:10:50,652 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C12 +2024-10-14 15:10:50,652 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C12 +2024-10-14 15:10:50,652 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 提示勿拍:其他型号规格请联系客服 +2024-10-14 15:10:50,652 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 提示勿拍其他型号规格请联系客服 +2024-10-14 15:10:50,652 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 15:10:50,656 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 15:10:50,656 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C4-LW', 'origin_option_7': 'DSG-02-3C5', 'origin_option_8': 'DSG-03-3C3', 'origin_option_9': 'DSG-02-3C60-DL 电磁换向阀', 'origin_option_10': 'DSG-02-3C6-DC24', 'origin_option_11': 'DSG-02-3C6-DC24-50', 'origin_option_12': 'DSG-02-3C6-AC220V', 'origin_option_13': 'DSG-02-3C9', 'origin_option_14': 'DSG-02-3C10', 'origin_option_15': 'DSG-02-3C11', 'origin_option_16': 'DSG-02-3C12', 'origin_option_17': '提示勿拍其他型号规格请联系客服', 'origin_option_18': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 15:10:50,657 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "DSG-02-3C2-N-50", "origin_option_2": "DSG-02-3C2-A220", "origin_option_3": "DSG-02-3C2-DL-D2", "origin_option_4": "DSG-02-3C4-DL-D24V", "origin_option_5": "DSG-02-3C4-DL-A220V", "origin_option_6": "DSG-02-3C4-LW", "origin_option_7": "DSG-02-3C5", "origin_option_8": "DSG-03-3C3", "origin_option_9": "DSG-02-3C60-DL 电磁换向阀", "origin_option_10": "DSG-02-3C6-DC24", "origin_option_11": "DSG-02-3C6-DC24-50", "origin_option_12": "DSG-02-3C6-AC220V", "origin_option_13": "DSG-02-3C9", "origin_option_14": "DSG-02-3C10", "origin_option_15": "DSG-02-3C11", "origin_option_16": "DSG-02-3C12", "origin_option_17": "提示勿拍其他型号规格请联系客服", "origin_option_18": "DSG-02-3C6-DL 电磁换向阀"} +2024-10-14 15:10:50,657 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 15:10:53,107 - vertexAI.py:144 - default_logger - DEBUG - 모델 응답: ```json +{ + "trans_option_1": "3C2-N-50", + "trans_option_2": "3C2-A220", + "trans_option_3": "3C2-DL-D2", + "trans_option_4": "3C4-DL-D24V", + "trans_option_5": "3C4-DL-A220V", + "trans_option_6": "3C4-LW", + "trans_option_7": "3C5", + "trans_option_8": "3C3", + "trans_option_9": "3C60-DL 전자석 방향 전환 밸브", + "trans_option_10": "3C6-DC24", + "trans_option_11": "3C6-DC24-50", + "trans_option_12": "3C6-AC220V", + "trans_option_13": "3C9", + "trans_option_14": "3C10", + "trans_option_15": "3C11", + "trans_option_16": "3C12", + "trans_option_17": "3C6-DL 전자석 방향 전환 밸브", + "trans_option_18": "3C6-DL 전자석 방향 전환 밸브" +} +``` +2024-10-14 15:10:53,110 - vertexAI.py:151 - default_logger - DEBUG - 응답에서 추출된 JSON 텍스트: { + "trans_option_1": "3C2-N-50", + "trans_option_2": "3C2-A220", + "trans_option_3": "3C2-DL-D2", + "trans_option_4": "3C4-DL-D24V", + "trans_option_5": "3C4-DL-A220V", + "trans_option_6": "3C4-LW", + "trans_option_7": "3C5", + "trans_option_8": "3C3", + "trans_option_9": "3C60-DL 전자석 방향 전환 밸브", + "trans_option_10": "3C6-DC24", + "trans_option_11": "3C6-DC24-50", + "trans_option_12": "3C6-AC220V", + "trans_option_13": "3C9", + "trans_option_14": "3C10", + "trans_option_15": "3C11", + "trans_option_16": "3C12", + "trans_option_17": "3C6-DL 전자석 방향 전환 밸브", + "trans_option_18": "3C6-DL 전자석 방향 전환 밸브" +} +2024-10-14 15:10:53,110 - vertexAI.py:154 - default_logger - DEBUG - 번역된 데이터: {'trans_option_1': '3C2-N-50', 'trans_option_2': '3C2-A220', 'trans_option_3': '3C2-DL-D2', 'trans_option_4': '3C4-DL-D24V', 'trans_option_5': '3C4-DL-A220V', 'trans_option_6': '3C4-LW', 'trans_option_7': '3C5', 'trans_option_8': '3C3', 'trans_option_9': '3C60-DL 전자석 방향 전환 밸브', 'trans_option_10': '3C6-DC24', 'trans_option_11': '3C6-DC24-50', 'trans_option_12': '3C6-AC220V', 'trans_option_13': '3C9', 'trans_option_14': '3C10', 'trans_option_15': '3C11', 'trans_option_16': '3C12', 'trans_option_17': '3C6-DL 전자석 방향 전환 밸브', 'trans_option_18': '3C6-DL 전자석 방향 전환 밸브'} +2024-10-14 15:10:53,112 - option.py:183 - default_logger - DEBUG - 번역된 옵션 입력 +2024-10-14 15:10:53,113 - option.py:428 - default_logger - DEBUG - trans_option_1번째 translated_name : 3C2-N-50 +2024-10-14 15:10:53,113 - option.py:436 - default_logger - DEBUG - trans_option_1번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,133 - option.py:440 - default_logger - DEBUG - trans_option_1번째 translated_name : [3C2-N-50] 입력 완료 +2024-10-14 15:10:53,134 - option.py:428 - default_logger - DEBUG - trans_option_2번째 translated_name : 3C2-A220 +2024-10-14 15:10:53,134 - option.py:436 - default_logger - DEBUG - trans_option_2번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,164 - option.py:440 - default_logger - DEBUG - trans_option_2번째 translated_name : [3C2-A220] 입력 완료 +2024-10-14 15:10:53,166 - option.py:428 - default_logger - DEBUG - trans_option_3번째 translated_name : 3C2-DL-D2 +2024-10-14 15:10:53,167 - option.py:436 - default_logger - DEBUG - trans_option_3번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,205 - option.py:440 - default_logger - DEBUG - trans_option_3번째 translated_name : [3C2-DL-D2] 입력 완료 +2024-10-14 15:10:53,207 - option.py:428 - default_logger - DEBUG - trans_option_4번째 translated_name : 3C4-DL-D24V +2024-10-14 15:10:53,207 - option.py:436 - default_logger - DEBUG - trans_option_4번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,246 - option.py:440 - default_logger - DEBUG - trans_option_4번째 translated_name : [3C4-DL-D24V] 입력 완료 +2024-10-14 15:10:53,248 - option.py:428 - default_logger - DEBUG - trans_option_5번째 translated_name : 3C4-DL-A220V +2024-10-14 15:10:53,249 - option.py:436 - default_logger - DEBUG - trans_option_5번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,284 - option.py:440 - default_logger - DEBUG - trans_option_5번째 translated_name : [3C4-DL-A220V] 입력 완료 +2024-10-14 15:10:53,285 - option.py:428 - default_logger - DEBUG - trans_option_6번째 translated_name : 3C4-LW +2024-10-14 15:10:53,287 - option.py:436 - default_logger - DEBUG - trans_option_6번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,333 - option.py:440 - default_logger - DEBUG - trans_option_6번째 translated_name : [3C4-LW] 입력 완료 +2024-10-14 15:10:53,335 - option.py:428 - default_logger - DEBUG - trans_option_7번째 translated_name : 3C5 +2024-10-14 15:10:53,336 - option.py:436 - default_logger - DEBUG - trans_option_7번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,377 - option.py:440 - default_logger - DEBUG - trans_option_7번째 translated_name : [3C5] 입력 완료 +2024-10-14 15:10:53,379 - option.py:428 - default_logger - DEBUG - trans_option_8번째 translated_name : 3C3 +2024-10-14 15:10:53,379 - option.py:436 - default_logger - DEBUG - trans_option_8번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,414 - option.py:440 - default_logger - DEBUG - trans_option_8번째 translated_name : [3C3] 입력 완료 +2024-10-14 15:10:53,417 - option.py:428 - default_logger - DEBUG - trans_option_9번째 translated_name : 3C60-DL 전자석 방향 전환 밸브 +2024-10-14 15:10:53,418 - option.py:436 - default_logger - DEBUG - trans_option_9번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,461 - option.py:440 - default_logger - DEBUG - trans_option_9번째 translated_name : [3C60-DL 전자석 방향 전환 밸브] 입력 완료 +2024-10-14 15:10:53,461 - option.py:428 - default_logger - DEBUG - trans_option_10번째 translated_name : 3C6-DC24 +2024-10-14 15:10:53,463 - option.py:436 - default_logger - DEBUG - trans_option_10번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,517 - option.py:440 - default_logger - DEBUG - trans_option_10번째 translated_name : [3C6-DC24] 입력 완료 +2024-10-14 15:10:53,518 - option.py:428 - default_logger - DEBUG - trans_option_11번째 translated_name : 3C6-DC24-50 +2024-10-14 15:10:53,519 - option.py:436 - default_logger - DEBUG - trans_option_11번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,550 - option.py:440 - default_logger - DEBUG - trans_option_11번째 translated_name : [3C6-DC24-50] 입력 완료 +2024-10-14 15:10:53,552 - option.py:428 - default_logger - DEBUG - trans_option_12번째 translated_name : 3C6-AC220V +2024-10-14 15:10:53,554 - option.py:436 - default_logger - DEBUG - trans_option_12번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,595 - option.py:440 - default_logger - DEBUG - trans_option_12번째 translated_name : [3C6-AC220V] 입력 완료 +2024-10-14 15:10:53,597 - option.py:428 - default_logger - DEBUG - trans_option_13번째 translated_name : 3C9 +2024-10-14 15:10:53,597 - option.py:436 - default_logger - DEBUG - trans_option_13번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,656 - option.py:440 - default_logger - DEBUG - trans_option_13번째 translated_name : [3C9] 입력 완료 +2024-10-14 15:10:53,657 - option.py:428 - default_logger - DEBUG - trans_option_14번째 translated_name : 3C10 +2024-10-14 15:10:53,658 - option.py:436 - default_logger - DEBUG - trans_option_14번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:53,928 - option.py:440 - default_logger - DEBUG - trans_option_14번째 translated_name : [3C10] 입력 완료 +2024-10-14 15:10:53,930 - option.py:428 - default_logger - DEBUG - trans_option_15번째 translated_name : 3C11 +2024-10-14 15:10:53,931 - option.py:436 - default_logger - DEBUG - trans_option_15번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:54,356 - option.py:440 - default_logger - DEBUG - trans_option_15번째 translated_name : [3C11] 입력 완료 +2024-10-14 15:10:54,358 - option.py:428 - default_logger - DEBUG - trans_option_16번째 translated_name : 3C12 +2024-10-14 15:10:54,358 - option.py:436 - default_logger - DEBUG - trans_option_16번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:54,520 - option.py:440 - default_logger - DEBUG - trans_option_16번째 translated_name : [3C12] 입력 완료 +2024-10-14 15:10:54,521 - option.py:428 - default_logger - DEBUG - trans_option_17번째 translated_name : 3C6-DL 전자석 방향 전환 밸브 +2024-10-14 15:10:54,522 - option.py:436 - default_logger - DEBUG - trans_option_17번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:54,764 - option.py:440 - default_logger - DEBUG - trans_option_17번째 translated_name : [3C6-DL 전자석 방향 전환 밸브] 입력 완료 +2024-10-14 15:10:54,766 - option.py:428 - default_logger - DEBUG - trans_option_18번째 translated_name : 3C6-DL 전자석 방향 전환 밸브 +2024-10-14 15:10:54,768 - option.py:436 - default_logger - DEBUG - trans_option_18번째 번역옵션 필드 : JSHandle@ +2024-10-14 15:10:54,850 - option.py:440 - default_logger - DEBUG - trans_option_18번째 translated_name : [3C6-DL 전자석 방향 전환 밸브] 입력 완료 +2024-10-14 15:10:54,852 - option.py:452 - default_logger - DEBUG - selected_translated_options 일괄 업데이트: {'DSG-02-3C2-N-50': '3C2-N-50', 'DSG-02-3C2-A220': '3C2-A220', 'DSG-02-3C2-DL-D2': '3C2-DL-D2', 'DSG-02-3C4-DL-D24V': '3C4-DL-D24V', 'DSG-02-3C4-DL-A220V': '3C4-DL-A220V', 'DSG-02-3C4-LW': '3C4-LW', 'DSG-02-3C5': '3C5', 'DSG-03-3C3': '3C3', 'DSG-02-3C60-DL 电磁换向阀': '3C60-DL 전자석 방향 전환 밸브', 'DSG-02-3C6-DC24': '3C6-DC24', 'DSG-02-3C6-DC24-50': '3C6-DC24-50', 'DSG-02-3C6-AC220V': '3C6-AC220V', 'DSG-02-3C9': '3C9', 'DSG-02-3C10': '3C10', 'DSG-02-3C11': '3C11', 'DSG-02-3C12': '3C12', '提示勿拍:其他型号规格请联系客服': '3C6-DL 전자석 방향 전환 밸브', 'DSG-02-3C6-DL 电磁换向阀': '3C6-DL 전자석 방향 전환 밸브'} +2024-10-14 15:10:54,853 - option.py:196 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 15:10:54,865 - option.py:85 - default_logger - DEBUG - 최저옵션: 148000.0, 표준편차: 22445.76178752288 +2024-10-14 15:10:54,865 - option.py:90 - default_logger - DEBUG - Option 116200.0 z-score: -1.4167485292335653 +2024-10-14 15:10:54,865 - option.py:90 - default_logger - DEBUG - Option 116200.0 z-score: -1.4167485292335653 +2024-10-14 15:10:54,865 - option.py:90 - default_logger - DEBUG - Option 116200.0 z-score: -1.4167485292335653 +2024-10-14 15:10:54,865 - option.py:90 - default_logger - DEBUG - Option 116200.0 z-score: -1.4167485292335653 +2024-10-14 15:10:54,872 - option.py:90 - default_logger - DEBUG - Option 116200.0 z-score: -1.4167485292335653 +2024-10-14 15:10:54,873 - option.py:90 - default_logger - DEBUG - Option 146900.0 z-score: -0.049007024596129614 +2024-10-14 15:10:54,874 - option.py:90 - default_logger - DEBUG - Option 146900.0 z-score: -0.049007024596129614 +2024-10-14 15:10:54,875 - option.py:90 - default_logger - DEBUG - Option 153600.0 z-score: 0.24949030703484168 +2024-10-14 15:10:54,876 - option.py:90 - default_logger - DEBUG - Option 159400.0 z-score: 0.5078909821780706 +2024-10-14 15:10:54,876 - option.py:90 - default_logger - DEBUG - Option 159400.0 z-score: 0.5078909821780706 +2024-10-14 15:10:54,877 - option.py:90 - default_logger - DEBUG - Option 159400.0 z-score: 0.5078909821780706 +2024-10-14 15:10:54,878 - option.py:90 - default_logger - DEBUG - Option 159400.0 z-score: 0.5078909821780706 +2024-10-14 15:10:54,879 - option.py:90 - default_logger - DEBUG - Option 159400.0 z-score: 0.5078909821780706 +2024-10-14 15:10:54,880 - option.py:90 - default_logger - DEBUG - Option 159400.0 z-score: 0.5078909821780706 +2024-10-14 15:10:54,881 - option.py:90 - default_logger - DEBUG - Option 159400.0 z-score: 0.5078909821780706 +2024-10-14 15:10:54,882 - option.py:90 - default_logger - DEBUG - Option 159400.0 z-score: 0.5078909821780706 +2024-10-14 15:10:54,882 - option.py:90 - default_logger - DEBUG - Option 159400.0 z-score: 0.5078909821780706 +2024-10-14 15:10:54,883 - option.py:90 - default_logger - DEBUG - Option 201000.0 z-score: 2.361247548722609 +2024-10-14 15:10:54,885 - option.py:94 - default_logger - DEBUG - Z-스코어 필터링: [146900.0, 146900.0, 153600.0, 159400.0, 159400.0, 159400.0, 159400.0, 159400.0, 159400.0, 159400.0, 159400.0, 159400.0] +2024-10-14 15:10:54,886 - option.py:102 - default_logger - DEBUG - 필터링된 본품옵션의 최저가: 146900.0, 마켓상한선: 293800.0 +2024-10-14 15:10:54,886 - option.py:107 - default_logger - DEBUG - 최종 선택된 옵션: [146900.0, 146900.0, 153600.0, 159400.0, 159400.0, 159400.0, 159400.0, 159400.0, 159400.0, 159400.0, 159400.0, 159400.0] +2024-10-14 15:10:58,581 - option.py:519 - default_logger - DEBUG - 옵션 체크 상태 조정 완료. +2024-10-14 15:10:58,582 - option.py:200 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 15:10:58,582 - option.py:529 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 15:10:59,300 - option.py:134 - default_logger - DEBUG - 선택된 옵션 저장 완료: [('3C2-N-50', 0), ('3C2-A220', 0), ('3C2-DL-D2', 0), ('3C4-DL-D24V', 0), ('3C4-DL-A220V', 0), ('3C6-DL 전자석 방향 전환 밸브', 0), ('3C4-LW', 0), ('3C5', 0), ('3C3', 0), ('3C60-DL 전자석 방향 전환 밸브', 0), ('3C6-DC24', 0), ('3C6-DC24-50', 0), ('3C6-AC220V', 0), ('3C9', 0), ('3C10', 0), ('3C11', 0), ('3C12', 0), ('3C6-DL 전자석 방향 전환 밸브', 0)] +2024-10-14 15:10:59,300 - option.py:231 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 15:10:59,303 - option.py:235 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 15:10:59,593 - option.py:238 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 15:10:59,899 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 15:10:59,900 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 15:11:00,384 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 15:11:00,387 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 15:11:00,389 - gui.py:699 - default_logger - DEBUG - 2/20: 세부사항 수정 작업 중... +2024-10-14 15:11:00,458 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 15:11:00,878 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 15:11:01,507 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 15:11:01,525 - title.py:94 - default_logger - DEBUG - 원본 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机 +2024-10-14 15:11:01,525 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 15:11:01,525 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 15:11:01,541 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 15:11:01,546 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 15:11:01,561 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 15:11:01,561 - gui.py:719 - default_logger - DEBUG - 옵션수정 : True + False + False +2024-10-14 15:11:02,032 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 15:11:02,033 - option.py:148 - default_logger - DEBUG - 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机에 대한 옵션을 처리 중... +2024-10-14 15:11:02,982 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 15:11:04,028 - option.py:254 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 15:11:04,039 - option.py:266 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 15:11:04,040 - option.py:529 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 15:11:04,165 - option.py:283 - default_logger - DEBUG - 총 옵션 갯수: 4 +2024-10-14 15:11:04,204 - option.py:318 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 15:11:04,253 - option.py:318 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 15:11:04,303 - option.py:318 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 15:11:04,365 - option.py:318 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 15:11:04,365 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': '香水 小样压盖机', 'origin_option_2': '香水瓶 中套压盖机 适合13MM 15MM盖子', 'origin_option_3': '喷雾瓶 卡扣式压盖机', 'origin_option_4': '中套压盖机 20MM瓶口专用 适合 20MM 瓶口'} +2024-10-14 15:11:04,377 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 香水 小样压盖机 +2024-10-14 15:11:04,377 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 香水 小样压盖机 +2024-10-14 15:11:04,377 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 香水瓶 中套压盖机 适合13MM 15MM盖子 +2024-10-14 15:11:04,377 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 香水瓶 中套压盖机 适合13MM 15MM盖子 +2024-10-14 15:11:04,377 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 喷雾瓶 卡扣式压盖机 +2024-10-14 15:11:04,377 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 喷雾瓶 卡扣式压盖机 +2024-10-14 15:11:04,377 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口 +2024-10-14 15:11:04,385 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口 +2024-10-14 15:11:04,385 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': '香水 小样压盖机', 'origin_option_2': '香水瓶 中套压盖机 适合13MM 15MM盖子', 'origin_option_3': '喷雾瓶 卡扣式压盖机', 'origin_option_4': '中套压盖机 20MM瓶口专用 适合 20MM 瓶口'} +2024-10-14 15:11:04,385 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "香水 小样压盖机", "origin_option_2": "香水瓶 中套压盖机 适合13MM 15MM盖子", "origin_option_3": "喷雾瓶 卡扣式压盖机", "origin_option_4": "中套压盖机 20MM瓶口专用 适合 20MM 瓶口"} +2024-10-14 15:11:04,388 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 15:11:05,238 - option.py:190 - default_logger - ERROR - 안전 필터에 의해 번역 요청이 차단되었습니다. Cannot get the response text. +Cannot get the Candidate text. +Response candidate content has no parts (and thus no text). The candidate is likely blocked by the safety filters. +Content: +{} +Candidate: +{ + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.17578125, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.125 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "MEDIUM", + "blocked": true, + "probability_score": 0.66015625, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.4921875 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.17773438, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.08642578 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.2421875, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.12988281 + } + ], + "avg_logprobs": "NaN" +} +Response: +{ + "candidates": [ + { + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.17578125, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.125 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "MEDIUM", + "blocked": true, + "probability_score": 0.66015625, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.4921875 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.17773438, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.08642578 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.2421875, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.12988281 + } + ], + "avg_logprobs": "NaN" + } + ], + "usage_metadata": { + "prompt_token_count": 466, + "total_token_count": 466 + }, + "model_version": "gemini-1.5-flash-001" +} +2024-10-14 15:11:05,238 - option.py:191 - default_logger - DEBUG - 퍼센티 자체 AI번역 사용 시도 +2024-10-14 15:11:05,349 - option.py:196 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 15:11:05,349 - option.py:85 - default_logger - DEBUG - 최저옵션: 87200.0, 표준편차: 0.0 +2024-10-14 15:11:05,352 - option.py:90 - default_logger - DEBUG - Option 87200.0 z-score: nan +2024-10-14 15:11:05,354 - option.py:90 - default_logger - DEBUG - Option 87200.0 z-score: nan +2024-10-14 15:11:05,354 - option.py:90 - default_logger - DEBUG - Option 87200.0 z-score: nan +2024-10-14 15:11:05,355 - option.py:90 - default_logger - DEBUG - Option 87200.0 z-score: nan +2024-10-14 15:11:05,355 - option.py:94 - default_logger - DEBUG - Z-스코어 필터링: [] +2024-10-14 15:11:05,357 - option.py:493 - default_logger - ERROR - 옵션 필터링 및 조정 중 오류 발생: cannot access local variable 'final_options' where it is not associated with a value +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 477, in filter_and_adjust_options + filtered_options = self.filter_bait_items_with_price_distribution(options_list) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\option.py", line 107, in filter_bait_items_with_price_distribution + self.logger.debug(f"최종 선택된 옵션: {[opt['price'] for opt in final_options]}") + ^^^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'final_options' where it is not associated with a value +2024-10-14 15:11:05,368 - option.py:200 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 15:11:05,368 - option.py:529 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 15:11:05,537 - option.py:134 - default_logger - DEBUG - 선택된 옵션 저장 완료: [('압축기 소형', 0), ('압축기 중형 13MM/15MM', 0), ('압축기 스프레이 캡', 0), ('압축기 중형 20MM', 0)] +2024-10-14 15:11:05,552 - option.py:231 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 15:11:05,552 - option.py:235 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 15:11:05,894 - option.py:238 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 15:11:06,139 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 15:11:06,141 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 15:11:06,590 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 15:11:06,591 - gui.py:754 - default_logger - DEBUG - 2/[31]개 상품 수정 완료. +2024-10-14 15:11:06,592 - gui.py:696 - default_logger - DEBUG - 번역 작업이 중단되었습니다. +2024-10-14 15:11:07,613 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 15:25:28,338 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 15:25:28,338 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 15:25:28,345 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 15:25:28,345 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 15:25:28,345 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 15:25:28,361 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 15:25:28,368 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:25:28,376 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:25:28,473 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:25:28,474 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 15:25:28,474 - cmb_diag.py:384 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 15:25:28,476 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:25:28,476 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 15:25:28,477 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 15:25:28,477 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 15:25:28,477 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 15:25:28,477 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 15:34:16,641 - gui.py:449 - default_logger - DEBUG - 옵션명 AI번역 버튼 - 활성화 선택 +2024-10-14 15:34:52,074 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 15:34:52,074 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 15:34:52,074 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 15:34:52,074 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 15:34:53,941 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 15:34:56,009 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:34:56,010 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 15:34:56,037 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:34:56,040 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 15:34:56,041 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:34:56,042 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': ''}, result count: 0 +2024-10-14 15:34:56,042 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:34:56,044 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 15:34:56,045 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:34:56,046 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 15:34:56,047 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:34:56,054 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:34:57,002 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 15:34:57,014 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 15:34:57,015 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 1640674 +2024-10-14 15:34:57,016 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 15:34:57,259 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 15:34:58,641 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:34:58,643 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 1}, result count: 4 +2024-10-14 15:34:59,066 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 15:34:59,264 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:34:59,265 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 2}, result count: 3 +2024-10-14 15:34:59,273 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 15:34:59,276 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 15:34:59,619 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 15:34:59,620 - option.py:39 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 15:34:59,620 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 15:34:59,622 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 15:35:07,585 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:07,586 - DatabaseManager.py:54 - default_logger - ERROR - Error executing query: UPDATE categories SET crmobi_stage = 0 WHERE id = ?, params: (1640,), error: List argument must consist only of tuples or dictionaries +2024-10-14 15:35:11,088 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:11,093 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:35:12,144 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:12,144 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 3}, result count: 1 +2024-10-14 15:35:12,654 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:12,654 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:35:13,484 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:13,486 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 1}, result count: 4 +2024-10-14 15:35:14,388 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:14,388 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 2}, result count: 3 +2024-10-14 15:35:18,778 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:18,778 - DatabaseManager.py:54 - default_logger - ERROR - Error executing query: UPDATE categories SET crmobi_stage = 0 WHERE id = ?, params: (1640,), error: List argument must consist only of tuples or dictionaries +2024-10-14 15:35:21,659 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:21,659 - DatabaseManager.py:54 - default_logger - ERROR - Error executing query: UPDATE categories SET crmobi_stage = 0 WHERE id = ?, params: (1640,), error: List argument must consist only of tuples or dictionaries +2024-10-14 15:35:26,071 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:26,071 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:35:26,836 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:26,836 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:35:27,677 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:27,677 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 3}, result count: 1 +2024-10-14 15:35:28,387 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:28,387 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:35:29,338 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:29,338 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 1}, result count: 4 +2024-10-14 15:35:30,590 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:30,592 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 2}, result count: 3 +2024-10-14 15:35:32,880 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:32,884 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 3}, result count: 1 +2024-10-14 15:35:33,431 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:33,431 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:35:36,197 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:36,197 - DatabaseManager.py:54 - default_logger - ERROR - Error executing query: UPDATE categories SET crmobi_stage = 0 WHERE id = ?, params: (10,), error: List argument must consist only of tuples or dictionaries +2024-10-14 15:35:36,818 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:36,819 - DatabaseManager.py:54 - default_logger - ERROR - Error executing query: UPDATE categories SET crmobi_stage = 0 WHERE id = ?, params: (10,), error: List argument must consist only of tuples or dictionaries +2024-10-14 15:35:38,997 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:38,997 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:35:42,075 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:42,082 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:35:44,390 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:35:44,390 - DatabaseManager.py:54 - default_logger - ERROR - Error executing query: UPDATE categories SET crmobi_stage = 0 WHERE id = ?, params: (10,), error: List argument must consist only of tuples or dictionaries +2024-10-14 15:53:27,823 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 15:53:32,190 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 15:53:32,191 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 15:53:32,200 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 15:53:32,200 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 15:53:32,200 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 15:53:32,216 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 15:53:32,223 - cmb_diag.py:498 - default_logger - ERROR - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:53:32,223 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:53:32,225 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:53:32,321 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:53:32,322 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 15:53:32,322 - cmb_diag.py:411 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 15:53:32,322 - cmb_diag.py:255 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 15:53:32,322 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:53:32,322 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 15:53:32,322 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 15:53:32,322 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 15:53:32,322 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 15:53:32,325 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 15:53:35,041 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 15:53:46,967 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 15:56:48,039 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 15:56:48,039 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 15:56:48,046 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 15:56:48,046 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 15:56:48,046 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 15:56:48,061 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 15:56:48,061 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:56:48,061 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:56:48,076 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:56:48,172 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:56:48,188 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 15:56:48,188 - cmb_diag.py:411 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 15:56:48,189 - cmb_diag.py:255 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 15:56:48,189 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:56:48,190 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 15:56:48,190 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 15:56:48,190 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 15:56:48,190 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 15:56:48,191 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 15:56:53,337 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 15:56:56,147 - cmb_diag.py:595 - default_logger - DEBUG - CMB 단계해제 +2024-10-14 15:56:56,147 - cmb_diag.py:601 - default_logger - DEBUG - category_id : 10 +2024-10-14 15:56:56,147 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:56:56,164 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: UPDATE categories SET crmobi_stage = 0 WHERE id = :category_id with params: {'category_id': 10} +2024-10-14 15:56:56,180 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:56:56,197 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:56:56,212 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:56:59,000 - cmb_diag.py:595 - default_logger - DEBUG - CMB 단계해제 +2024-10-14 15:56:59,000 - cmb_diag.py:601 - default_logger - DEBUG - category_id : 11 +2024-10-14 15:56:59,000 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:56:59,020 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: UPDATE categories SET crmobi_stage = 0 WHERE id = :category_id with params: {'category_id': 11} +2024-10-14 15:56:59,032 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:56:59,048 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:56:59,064 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:57:01,689 - cmb_diag.py:577 - default_logger - DEBUG - 선택된 카테고리에 CMB [3]단계 적용 +2024-10-14 15:57:01,689 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:57:01,689 - DatabaseManager.py:54 - default_logger - ERROR - Error executing query: UPDATE categories + SET crmobi_stage = ? + WHERE category1 = ? AND category2 = ? AND category3 = ? AND category4 = ?, params: [3, '가구/인테리어', '거실가구', '소파', '소파베드'], error: List argument must consist only of tuples or dictionaries +2024-10-14 15:57:05,943 - cmb_diag.py:591 - default_logger - ERROR - CMB 단계 적용 오류 발생: List argument must consist only of tuples or dictionaries +Traceback (most recent call last): + File "D:\py\autoTrans\src\cmb_diag.py", line 584, in apply_crmobi_stage + self.db_manager.execute_query('''UPDATE categories + File "D:\py\autoTrans\src\DatabaseManager.py", line 48, in execute_query + session.execute(text(query), params) + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2256, in _execute_internal + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\engine\base.py", line 1412, in execute + distilled_parameters = _distill_params_20(parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 32, in sqlalchemy.cyextension.util._distill_params_20 + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 23, in sqlalchemy.cyextension.util._check_item +sqlalchemy.exc.ArgumentError: List argument must consist only of tuples or dictionaries +2024-10-14 15:57:11,302 - cmb_diag.py:577 - default_logger - DEBUG - 선택된 카테고리에 CMB [2]단계 적용 +2024-10-14 15:57:11,305 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:57:11,305 - DatabaseManager.py:54 - default_logger - ERROR - Error executing query: UPDATE categories + SET crmobi_stage = ? + WHERE category1 = ? AND category2 = ? AND category3 = ? AND category4 = ?, params: [2, '가구/인테리어', '거실가구', '소파', '빈백'], error: List argument must consist only of tuples or dictionaries +2024-10-14 15:57:12,584 - cmb_diag.py:591 - default_logger - ERROR - CMB 단계 적용 오류 발생: List argument must consist only of tuples or dictionaries +Traceback (most recent call last): + File "D:\py\autoTrans\src\cmb_diag.py", line 584, in apply_crmobi_stage + self.db_manager.execute_query('''UPDATE categories + File "D:\py\autoTrans\src\DatabaseManager.py", line 48, in execute_query + session.execute(text(query), params) + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2256, in _execute_internal + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\engine\base.py", line 1412, in execute + distilled_parameters = _distill_params_20(parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 32, in sqlalchemy.cyextension.util._distill_params_20 + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 23, in sqlalchemy.cyextension.util._check_item +sqlalchemy.exc.ArgumentError: List argument must consist only of tuples or dictionaries +2024-10-14 15:57:13,427 - cmb_diag.py:577 - default_logger - DEBUG - 선택된 카테고리에 CMB [1]단계 적용 +2024-10-14 15:57:13,427 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:57:13,427 - DatabaseManager.py:54 - default_logger - ERROR - Error executing query: UPDATE categories + SET crmobi_stage = ? + WHERE category1 = ? AND category2 = ? AND category3 = ? AND category4 = ?, params: [1, '가구/인테리어', '거실가구', '소파', '빈백'], error: List argument must consist only of tuples or dictionaries +2024-10-14 15:57:14,507 - cmb_diag.py:591 - default_logger - ERROR - CMB 단계 적용 오류 발생: List argument must consist only of tuples or dictionaries +Traceback (most recent call last): + File "D:\py\autoTrans\src\cmb_diag.py", line 584, in apply_crmobi_stage + self.db_manager.execute_query('''UPDATE categories + File "D:\py\autoTrans\src\DatabaseManager.py", line 48, in execute_query + session.execute(text(query), params) + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\orm\session.py", line 2256, in _execute_internal + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\py\autoTrans\Lib\site-packages\sqlalchemy\engine\base.py", line 1412, in execute + distilled_parameters = _distill_params_20(parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 32, in sqlalchemy.cyextension.util._distill_params_20 + File "lib\\sqlalchemy\\cyextension\\util.pyx", line 23, in sqlalchemy.cyextension.util._check_item +sqlalchemy.exc.ArgumentError: List argument must consist only of tuples or dictionaries +2024-10-14 15:59:08,771 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 15:59:13,019 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 15:59:13,019 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 15:59:13,023 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 15:59:13,023 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 15:59:13,023 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 15:59:13,036 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 15:59:13,036 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:59:13,036 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:13,051 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:59:13,149 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:13,150 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 15:59:13,151 - cmb_diag.py:411 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 15:59:13,151 - cmb_diag.py:255 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 15:59:13,151 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:13,152 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 15:59:13,152 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 15:59:13,152 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 15:59:13,152 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 15:59:13,154 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 15:59:16,376 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 15:59:19,862 - cmb_diag.py:577 - default_logger - DEBUG - 선택된 카테고리에 CMB [3]단계 적용 +2024-10-14 15:59:19,865 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:19,883 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: UPDATE categories + SET crmobi_stage = :stage + WHERE category1 = :category1 AND category2 = :category2 AND category3 = :category3 AND category4 = :category4 with params: {'category1': '가구/인테리어', 'category2': '거실가구', 'category3': '소파', 'category4': '소파베드', 'stage': 3} +2024-10-14 15:59:19,898 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:59:19,926 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:19,931 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:59:22,094 - cmb_diag.py:577 - default_logger - DEBUG - 선택된 카테고리에 CMB [2]단계 적용 +2024-10-14 15:59:22,095 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:22,113 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: UPDATE categories + SET crmobi_stage = :stage + WHERE category1 = :category1 AND category2 = :category2 AND category3 = :category3 AND category4 = :category4 with params: {'category1': '가구/인테리어', 'category2': '거실가구', 'category3': '소파', 'category4': '벤치소파', 'stage': 2} +2024-10-14 15:59:22,129 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:59:22,145 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:22,153 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:59:25,642 - cmb_diag.py:603 - default_logger - DEBUG - CMB 단계해제 +2024-10-14 15:59:25,642 - cmb_diag.py:609 - default_logger - DEBUG - category_id : 9 +2024-10-14 15:59:25,642 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:25,664 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: UPDATE categories SET crmobi_stage = 0 WHERE id = :category_id with params: {'category_id': 9} +2024-10-14 15:59:25,665 - cmb_diag.py:609 - default_logger - DEBUG - category_id : 11 +2024-10-14 15:59:25,667 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:25,674 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: UPDATE categories SET crmobi_stage = 0 WHERE id = :category_id with params: {'category_id': 11} +2024-10-14 15:59:25,689 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:59:25,707 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:25,713 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:59:28,999 - cmb_diag.py:577 - default_logger - DEBUG - 선택된 카테고리에 CMB [3]단계 적용 +2024-10-14 15:59:29,001 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:29,016 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: UPDATE categories + SET crmobi_stage = :stage + WHERE category1 = :category1 AND category2 = :category2 AND category3 = :category3 AND category4 = :category4 with params: {'category1': '가구/인테리어', 'category2': 'DIY자재/용품', 'category3': '바닥재', 'category4': '온돌마루', 'stage': 3} +2024-10-14 15:59:29,016 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:29,026 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: UPDATE categories + SET crmobi_stage = :stage + WHERE category1 = :category1 AND category2 = :category2 AND category3 = :category3 AND category4 = :category4 with params: {'category1': '가구/인테리어', 'category2': 'DIY자재/용품', 'category3': '시트지', 'category4': '무늬목시트지', 'stage': 3} +2024-10-14 15:59:29,026 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:29,033 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: UPDATE categories + SET crmobi_stage = :stage + WHERE category1 = :category1 AND category2 = :category2 AND category3 = :category3 AND category4 = :category4 with params: {'category1': '가구/인테리어', 'category2': '거실가구', 'category3': '소파', 'category4': '인조가죽소파', 'stage': 3} +2024-10-14 15:59:29,047 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:59:29,062 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:29,078 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:59:31,517 - cmb_diag.py:577 - default_logger - DEBUG - 선택된 카테고리에 CMB [2]단계 적용 +2024-10-14 15:59:31,517 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:31,536 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: UPDATE categories + SET crmobi_stage = :stage + WHERE category1 = :category1 AND category2 = :category2 AND category3 = :category3 AND category4 = :category4 with params: {'category1': '가구/인테리어', 'category2': 'DIY자재/용품', 'category3': '바닥재', 'category4': '필름난방', 'stage': 2} +2024-10-14 15:59:31,549 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:59:31,565 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:31,581 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:59:34,430 - cmb_diag.py:577 - default_logger - DEBUG - 선택된 카테고리에 CMB [1]단계 적용 +2024-10-14 15:59:34,430 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:34,449 - DatabaseManager.py:51 - default_logger - DEBUG - Executed query: UPDATE categories + SET crmobi_stage = :stage + WHERE category1 = :category1 AND category2 = :category2 AND category3 = :category3 AND category4 = :category4 with params: {'category1': '가구/인테리어', 'category2': 'DIY자재/용품', 'category3': '가구부속품', 'category4': '경첩/꺽쇠/자석철물류', 'stage': 1} +2024-10-14 15:59:34,462 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:59:34,478 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:34,496 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 15:59:38,957 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:59:38,972 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:38,972 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 1}, result count: 4 +2024-10-14 15:59:39,947 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:59:39,947 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:39,950 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 2}, result count: 3 +2024-10-14 15:59:41,080 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:59:41,082 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:41,084 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND crmobi_stage = :cmb_stage with params: {'cmb_stage': 3}, result count: 4 +2024-10-14 15:59:42,245 - cmb_diag.py:498 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 15:59:42,247 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 15:59:42,247 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:00:20,106 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:02:16,916 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:02:21,047 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:02:21,047 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:02:21,057 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:02:21,059 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:02:21,059 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:02:21,070 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:02:21,074 - cmb_diag.py:500 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:02:21,074 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:02:21,079 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:02:21,172 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:02:21,173 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:02:21,174 - cmb_diag.py:413 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:02:21,174 - cmb_diag.py:257 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:02:21,174 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:02:21,175 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:02:21,175 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:02:21,175 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:02:21,175 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:02:21,176 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:02:24,261 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:03:18,800 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:03:24,874 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:03:24,874 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:03:24,883 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:03:24,883 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:03:24,883 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:03:24,903 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:03:24,903 - cmb_diag.py:500 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:03:24,903 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:03:24,916 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:03:25,055 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:03:25,057 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:03:25,057 - cmb_diag.py:413 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:03:25,057 - cmb_diag.py:257 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:03:25,057 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:03:25,057 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:03:25,057 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:03:25,057 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:03:25,057 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:03:25,057 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:03:27,554 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:03:39,534 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:03:43,502 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:03:43,502 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:03:43,513 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:03:43,513 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:03:43,513 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:03:43,530 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:03:43,530 - cmb_diag.py:500 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:03:43,530 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:03:43,543 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:03:43,625 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:03:43,625 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:03:43,625 - cmb_diag.py:413 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:03:43,625 - cmb_diag.py:257 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:03:43,625 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:03:43,625 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:03:43,625 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:03:43,625 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:03:43,625 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:03:43,625 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:03:46,049 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:04:34,235 - gui.py:449 - default_logger - DEBUG - 옵션명 AI번역 버튼 - 활성화 선택 +2024-10-14 16:04:35,352 - gui.py:449 - default_logger - DEBUG - 옵션 Auto선택 버튼 - 활성화 선택 +2024-10-14 16:05:19,636 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:05:24,288 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:05:24,288 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:05:24,300 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:05:24,301 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:05:24,301 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:05:24,312 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:05:24,320 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:05:24,320 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:24,328 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:05:24,396 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:24,396 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:05:24,412 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:05:24,412 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:05:24,413 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:24,414 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:05:24,414 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:05:24,414 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:05:24,414 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:05:24,416 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:05:27,091 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:05:34,436 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:05:34,438 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:05:34,438 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:34,439 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:34,441 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:05:34,451 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:34,451 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:34,461 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:05:34,461 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:34,463 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:05:34,463 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:34,465 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:34,467 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:05:34,467 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:05:34,468 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:34,468 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:34,470 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level3': ''}, result count: 0 +2024-10-14 16:05:34,470 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:34,472 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:34,474 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:05:34,475 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:34,475 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': '모두 보기'}, result count: 0 +2024-10-14 16:05:34,475 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:34,475 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:34,482 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:05:34,483 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:34,483 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '가구/인테리어'}, result count: 17 +2024-10-14 16:05:34,483 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:34,490 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:34,491 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:05:37,152 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:05:37,156 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:05:37,156 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:37,156 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:37,159 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '식품', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:05:37,161 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:37,161 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:37,161 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '식품', 'level2': ''}, result count: 0 +2024-10-14 16:05:37,164 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:37,165 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '식품', 'level2': ''}, result count: 0 +2024-10-14 16:05:37,166 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:37,166 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:37,168 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '식품', 'level2': ''}, result count: 0 +2024-10-14 16:05:37,168 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:05:37,170 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:37,170 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:37,171 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '식품', 'level3': ''}, result count: 0 +2024-10-14 16:05:37,173 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:37,174 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:37,175 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '식품'}, result count: 595 +2024-10-14 16:05:37,177 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:37,183 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '식품', 'level2': '모두 보기'}, result count: 0 +2024-10-14 16:05:37,183 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:37,184 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:37,185 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '식품'}, result count: 595 +2024-10-14 16:05:37,189 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:37,189 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '식품'}, result count: 22 +2024-10-14 16:05:37,189 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:37,189 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:37,189 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '식품'}, result count: 595 +2024-10-14 16:05:39,576 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:05:39,576 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:39,576 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:39,579 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '식품', 'level2': '냉동/간편조리식품', 'level3': ''}, result count: 0 +2024-10-14 16:05:39,581 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:39,584 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:39,584 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '식품', 'level2': '냉동/간편조리식품'}, result count: 21 +2024-10-14 16:05:39,586 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:39,587 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '식품', 'level2': '냉동/간편조리식품'}, result count: 21 +2024-10-14 16:05:39,587 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:05:39,587 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:39,589 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '식품', 'level2': '냉동/간편조리식품'}, result count: 21 +2024-10-14 16:05:53,874 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:05:57,789 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:05:57,789 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:05:57,796 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:05:57,796 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:05:57,796 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:05:57,813 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:05:57,819 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:05:57,819 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:57,829 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:05:57,928 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:57,929 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:05:57,930 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:05:57,930 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:05:57,930 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:05:57,931 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:05:57,931 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:05:57,931 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:05:57,931 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:05:57,932 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:06:00,716 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:06:47,856 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:06:52,779 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:06:52,779 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:06:52,786 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:06:52,786 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:06:52,786 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:06:52,803 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:06:52,803 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:06:52,803 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:06:52,815 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:06:52,896 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:06:52,896 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:06:52,896 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:06:52,896 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:06:52,896 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:06:52,896 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:06:52,896 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:06:52,896 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:06:52,896 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:06:52,896 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:07:26,392 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:07:35,030 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:07:35,030 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:07:35,034 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:07:35,034 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:35,036 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '생활/건강', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:07:35,045 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:07:35,045 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:35,045 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '생활/건강', 'level2': ''}, result count: 0 +2024-10-14 16:07:35,045 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:35,045 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '생활/건강', 'level2': ''}, result count: 0 +2024-10-14 16:07:35,045 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:07:35,061 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:35,062 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '생활/건강', 'level2': ''}, result count: 0 +2024-10-14 16:07:35,063 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:07:35,063 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:07:35,063 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:35,063 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '생활/건강', 'level3': ''}, result count: 0 +2024-10-14 16:07:35,063 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:07:35,063 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:35,063 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '생활/건강'}, result count: 1223 +2024-10-14 16:07:35,077 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:35,077 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '생활/건강', 'level2': '모두 보기'}, result count: 0 +2024-10-14 16:07:35,077 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:07:35,077 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:35,077 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '생활/건강'}, result count: 1223 +2024-10-14 16:07:35,093 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:35,093 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '생활/건강'}, result count: 33 +2024-10-14 16:07:35,093 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:07:35,093 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:35,108 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '생활/건강'}, result count: 1223 +2024-10-14 16:07:37,471 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:07:37,471 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:07:37,471 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:37,471 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '생활/건강', 'level2': '물리치료/저주파용품', 'level3': ''}, result count: 0 +2024-10-14 16:07:37,471 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:07:37,471 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:37,471 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '생활/건강', 'level2': '물리치료/저주파용품'}, result count: 7 +2024-10-14 16:07:37,471 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:37,487 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '생활/건강', 'level2': '물리치료/저주파용품'}, result count: 7 +2024-10-14 16:07:37,487 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:07:37,487 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:07:37,487 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '생활/건강', 'level2': '물리치료/저주파용품'}, result count: 7 +2024-10-14 16:08:14,102 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:08:18,117 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:08:18,117 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:08:18,125 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:08:18,125 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:08:18,125 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:08:18,140 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:08:18,146 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:08:18,146 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:08:18,154 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:08:18,229 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:08:18,229 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:08:18,229 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:08:18,229 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:08:18,229 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:08:18,239 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:08:18,239 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:08:18,239 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:08:18,239 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:08:18,239 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:08:20,929 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:08:27,882 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:09:35,738 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:09:35,738 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:09:35,747 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:09:35,749 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:09:35,749 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:09:35,761 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:09:35,766 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:09:35,767 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:35,774 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:09:35,848 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:35,848 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:09:35,848 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:09:35,848 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:09:35,848 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:35,859 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:09:35,859 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:09:35,860 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:09:35,860 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:09:35,860 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:09:38,639 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:09:47,442 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:09:47,445 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:09:47,445 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:47,447 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:47,447 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:09:47,458 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:47,458 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:47,458 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:09:47,458 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:47,458 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:09:47,458 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:47,458 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:47,474 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:09:47,474 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:09:47,474 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:47,474 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:47,474 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level3': ''}, result count: 0 +2024-10-14 16:09:47,474 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:47,479 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:47,479 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:09:47,479 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:47,479 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': '모두 보기'}, result count: 0 +2024-10-14 16:09:47,479 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:47,479 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:47,479 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:09:47,490 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:47,490 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '가구/인테리어'}, result count: 17 +2024-10-14 16:09:47,490 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:47,490 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:47,490 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:09:52,169 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:09:52,170 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:52,170 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:52,173 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': '서재/사무용가구', 'level3': ''}, result count: 0 +2024-10-14 16:09:52,173 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:52,173 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:52,177 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': '서재/사무용가구'}, result count: 33 +2024-10-14 16:09:52,178 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:52,178 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': '서재/사무용가구'}, result count: 5 +2024-10-14 16:09:52,178 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:52,178 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:52,178 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': '서재/사무용가구'}, result count: 33 +2024-10-14 16:09:54,337 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:54,337 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:54,337 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': '서재/사무용가구', 'level3': '사무/교구용가구'}, result count: 11 +2024-10-14 16:09:56,899 - cmb_diag.py:322 - default_logger - DEBUG - 1레벨, 2레벨, 3레벨 카테고리를 초기화 +2024-10-14 16:09:56,899 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:09:56,899 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:09:56,899 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:56,899 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:56,899 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:09:56,899 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:56,899 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:56,899 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 16:09:56,899 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:56,899 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': ''}, result count: 0 +2024-10-14 16:09:56,899 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:56,899 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:56,899 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 16:09:56,913 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:09:56,915 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:56,915 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:56,916 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category3 = :level3 with params: {'level3': ''}, result count: 6 +2024-10-14 16:09:56,916 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:56,916 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:56,916 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:09:56,962 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:56,962 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': '모두 보기'}, result count: 0 +2024-10-14 16:09:56,962 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:56,962 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:56,978 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:09:57,040 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:57,056 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:57,058 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:09:57,153 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:09:57,153 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:57,153 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:57,153 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:09:57,184 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:57,184 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:57,184 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 16:09:57,184 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:57,184 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': ''}, result count: 0 +2024-10-14 16:09:57,184 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:57,184 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:57,195 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 16:09:57,195 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:09:57,195 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:57,195 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:09:57,198 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:09:57,198 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:09:57,201 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:10:15,431 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:10:19,453 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:10:19,454 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:10:19,461 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:10:19,461 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:10:19,461 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:10:19,476 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:10:19,480 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:10:19,484 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:10:19,485 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:10:19,577 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:10:19,578 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:10:19,578 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:10:19,578 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:10:19,579 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:10:19,580 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:10:19,581 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:10:19,581 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:10:19,581 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:10:19,581 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:10:22,498 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:11:11,421 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:11:15,828 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:11:15,828 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:11:15,835 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:11:15,835 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:11:15,835 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:11:15,851 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:11:15,858 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:11:15,858 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:15,862 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:11:15,959 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:15,959 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:11:15,959 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:11:15,959 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:11:15,959 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:15,962 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:11:15,962 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:11:15,962 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:11:15,962 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:11:15,963 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:11:18,421 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:11:23,554 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:11:23,554 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:11:23,554 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:23,554 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:23,560 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:11:23,572 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:23,572 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:23,581 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:11:23,581 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:23,583 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:11:23,583 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:23,585 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:23,585 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:11:23,587 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:11:23,587 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:23,588 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:23,588 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level3': ''}, result count: 0 +2024-10-14 16:11:23,588 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:23,591 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:23,592 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:11:23,596 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:23,598 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': '모두 보기'}, result count: 0 +2024-10-14 16:11:23,598 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:23,600 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:23,600 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:11:23,608 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:23,608 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '가구/인테리어'}, result count: 17 +2024-10-14 16:11:23,609 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:23,611 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:23,612 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:11:26,935 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:11:26,935 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:26,935 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:26,935 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': '서재/사무용가구', 'level3': ''}, result count: 0 +2024-10-14 16:11:26,935 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:26,935 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:26,935 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': '서재/사무용가구'}, result count: 33 +2024-10-14 16:11:26,935 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:26,935 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': '서재/사무용가구'}, result count: 5 +2024-10-14 16:11:26,935 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:26,935 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:26,935 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': '서재/사무용가구'}, result count: 33 +2024-10-14 16:11:31,378 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:11:31,378 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:31,378 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:31,378 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': 'DIY자재/용품', 'level3': ''}, result count: 0 +2024-10-14 16:11:31,378 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:31,378 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:31,378 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': 'DIY자재/용품'}, result count: 49 +2024-10-14 16:11:31,378 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:31,378 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': 'DIY자재/용품'}, result count: 14 +2024-10-14 16:11:31,378 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:31,378 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:31,378 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': 'DIY자재/용품'}, result count: 49 +2024-10-14 16:11:34,553 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:34,553 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:34,556 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': 'DIY자재/용품', 'level3': '접착제/보수용품'}, result count: 1 +2024-10-14 16:11:35,736 - cmb_diag.py:322 - default_logger - DEBUG - 1레벨, 2레벨, 3레벨 카테고리를 초기화 +2024-10-14 16:11:35,736 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:11:35,736 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:11:35,736 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:35,736 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:35,736 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:11:35,736 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:35,736 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:35,736 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 16:11:35,736 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:35,736 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': ''}, result count: 0 +2024-10-14 16:11:35,736 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:35,736 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:35,736 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 16:11:35,751 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:11:35,751 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:35,753 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:35,753 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category3 = :level3 with params: {'level3': ''}, result count: 6 +2024-10-14 16:11:35,755 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:35,755 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:35,755 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:11:35,799 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:35,799 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': '모두 보기'}, result count: 0 +2024-10-14 16:11:35,799 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:35,799 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:35,814 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:11:35,894 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:35,894 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:35,897 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:11:35,983 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:11:35,990 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:35,990 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:35,992 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:11:36,025 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:36,025 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:36,028 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 16:11:36,028 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:36,028 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL with params: {'level2': ''}, result count: 0 +2024-10-14 16:11:36,030 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:36,030 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:36,030 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 with params: {'level2': ''}, result count: 0 +2024-10-14 16:11:36,030 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:11:36,030 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:36,030 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category2 = :level2 AND category3 = :level3 with params: {'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:11:36,035 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:11:36,035 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:11:36,039 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:12:14,750 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:12:18,691 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:12:18,691 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:12:18,710 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:12:18,710 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:12:18,715 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:12:18,715 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:12:18,734 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:12:18,734 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:18,734 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:12:18,831 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:18,831 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:12:18,831 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:12:18,831 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:12:18,831 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:18,831 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:12:18,831 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:12:18,831 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:12:18,831 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:12:18,831 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:12:21,305 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:12:25,829 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:12:25,832 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:12:25,832 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:25,832 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:25,834 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '여가/생활편의', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:12:25,847 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:25,847 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:25,856 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '여가/생활편의', 'level2': ''}, result count: 0 +2024-10-14 16:12:25,856 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:25,858 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '여가/생활편의', 'level2': ''}, result count: 0 +2024-10-14 16:12:25,859 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:25,860 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:25,861 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '여가/생활편의', 'level2': ''}, result count: 0 +2024-10-14 16:12:25,861 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:12:25,862 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:25,863 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:25,865 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '여가/생활편의', 'level3': ''}, result count: 0 +2024-10-14 16:12:25,865 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:25,866 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:25,867 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '여가/생활편의'}, result count: 90 +2024-10-14 16:12:25,867 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:25,870 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '여가/생활편의', 'level2': '모두 보기'}, result count: 0 +2024-10-14 16:12:25,870 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:25,872 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:25,873 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '여가/생활편의'}, result count: 90 +2024-10-14 16:12:25,874 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:25,877 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '여가/생활편의'}, result count: 8 +2024-10-14 16:12:25,877 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:25,878 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:25,880 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '여가/생활편의'}, result count: 90 +2024-10-14 16:12:28,321 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:12:28,322 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:12:28,322 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:28,324 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:28,326 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '디지털/가전', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:12:28,327 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:28,327 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:28,328 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '디지털/가전', 'level2': ''}, result count: 0 +2024-10-14 16:12:28,328 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:28,330 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '디지털/가전', 'level2': ''}, result count: 0 +2024-10-14 16:12:28,330 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:28,332 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:28,332 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '디지털/가전', 'level2': ''}, result count: 0 +2024-10-14 16:12:28,334 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:12:28,335 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:28,336 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:28,336 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '디지털/가전', 'level3': ''}, result count: 3 +2024-10-14 16:12:28,337 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:28,337 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:28,339 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 16:12:28,341 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:28,341 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '디지털/가전', 'level2': '모두 보기'}, result count: 0 +2024-10-14 16:12:28,348 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:28,350 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:28,351 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 16:12:28,352 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:28,352 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '디지털/가전'}, result count: 28 +2024-10-14 16:12:28,362 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:28,363 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:28,364 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 16:12:30,812 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:12:30,812 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:12:30,812 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:30,812 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:30,816 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:12:30,816 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:30,816 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:30,816 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:12:30,816 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:30,816 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:12:30,816 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:30,816 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:30,816 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:12:30,826 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:12:30,828 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:30,828 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:30,830 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level3': ''}, result count: 0 +2024-10-14 16:12:30,830 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:30,830 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:30,830 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:12:30,830 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:30,830 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': '모두 보기'}, result count: 0 +2024-10-14 16:12:30,830 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:30,830 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:30,830 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:12:30,844 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:30,846 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '가구/인테리어'}, result count: 17 +2024-10-14 16:12:30,847 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:12:30,847 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:12:30,847 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:13:00,190 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:13:04,164 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:13:04,164 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:13:04,164 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:13:04,164 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:13:04,164 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:13:04,187 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:13:04,193 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:13:04,193 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:04,201 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:13:04,289 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:04,290 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:13:04,290 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:13:04,291 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:13:04,291 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:04,292 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:13:04,292 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:13:04,292 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:13:04,292 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:13:04,293 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:13:06,863 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:13:13,027 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:13:13,029 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:13:13,030 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:13:13,030 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:13,033 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:13:13,045 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:13:13,045 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:13,059 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:13:13,061 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:13,061 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:13:13,063 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:13:13,063 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:13,063 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '가구/인테리어', 'level2': ''}, result count: 0 +2024-10-14 16:13:13,063 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:13:13,063 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:13:13,069 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:13,070 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '가구/인테리어', 'level3': ''}, result count: 0 +2024-10-14 16:13:13,072 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:13:13,072 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:13,074 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:13:13,081 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:13,081 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '가구/인테리어', 'level2': '모두 보기'}, result count: 0 +2024-10-14 16:13:13,084 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:13:13,085 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:13,086 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:13:13,095 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:13,097 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '가구/인테리어'}, result count: 17 +2024-10-14 16:13:13,097 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:13:13,097 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:13:13,102 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '가구/인테리어'}, result count: 356 +2024-10-14 16:14:09,142 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:14:13,523 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:14:13,523 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:14:13,525 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:14:13,525 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:14:13,525 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:14:13,539 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:14:13,553 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:14:13,554 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:13,562 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:14:13,664 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:13,664 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:14:13,664 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:14:13,664 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:14:13,664 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:13,664 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:14:13,664 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:14:13,664 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:14:13,664 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:14:13,664 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:14:20,915 - gui.py:573 - default_logger - DEBUG - 크무비 설정 버튼 클릭됨 +2024-10-14 16:14:24,228 - cmb_diag.py:268 - default_logger - DEBUG - 2레벨 카테고리를 업데이트 +2024-10-14 16:14:24,228 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:14:24,228 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:14:24,228 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:24,228 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 AND category3 = :level3 with params: {'level1': '디지털/가전', 'level2': '', 'level3': ''}, result count: 0 +2024-10-14 16:14:24,242 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:14:24,242 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:24,242 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '디지털/가전', 'level2': ''}, result count: 0 +2024-10-14 16:14:24,242 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:24,242 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '디지털/가전', 'level2': ''}, result count: 0 +2024-10-14 16:14:24,242 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:14:24,242 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:24,242 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category2 = :level2 with params: {'level1': '디지털/가전', 'level2': ''}, result count: 0 +2024-10-14 16:14:24,258 - cmb_diag.py:296 - default_logger - DEBUG - 3레벨 카테고리를 업데이트 +2024-10-14 16:14:24,259 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:14:24,259 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:24,260 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 AND category3 = :level3 with params: {'level1': '디지털/가전', 'level3': ''}, result count: 3 +2024-10-14 16:14:24,261 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:14:24,261 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:24,261 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 16:14:24,261 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:24,261 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL with params: {'level1': '디지털/가전', 'level2': '모두 보기'}, result count: 0 +2024-10-14 16:14:24,274 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:14:24,274 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:24,275 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 16:14:24,275 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:24,275 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL with params: {'level1': '디지털/가전'}, result count: 28 +2024-10-14 16:14:24,275 - cmb_diag.py:337 - default_logger - DEBUG - 레벨별 카테고리를 기준으로 트리뷰를 필터링 +2024-10-14 16:14:24,275 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:14:24,289 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 AND category1 = :level1 with params: {'level1': '디지털/가전'}, result count: 690 +2024-10-14 16:26:10,638 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 16:26:15,043 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 16:26:15,044 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 16:26:15,052 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 16:26:15,052 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 16:26:15,057 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 16:26:15,073 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 16:26:15,079 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 16:26:15,079 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:26:15,088 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 16:26:15,178 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:26:15,179 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 16:26:15,179 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 16:26:15,179 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 16:26:15,180 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 16:26:15,180 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 16:26:15,181 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 16:26:15,181 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 16:26:15,181 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 16:26:15,182 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 16:26:18,786 - gui.py:449 - default_logger - DEBUG - 옵션명 AI번역 버튼 - 활성화 선택 +2024-10-14 16:26:19,062 - gui.py:449 - default_logger - DEBUG - 옵션 Auto선택 버튼 - 활성화 선택 +2024-10-14 16:26:21,165 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 16:26:21,165 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 16:26:21,165 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 16:26:21,165 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 16:26:25,769 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 16:26:25,780 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 16:26:25,781 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 3082624 +2024-10-14 16:26:25,782 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 16:26:26,080 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 16:26:27,796 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 16:26:27,995 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 16:26:27,996 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 16:26:28,316 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 16:26:28,316 - option.py:39 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 16:26:28,316 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 16:26:28,316 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 16:26:30,800 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 16:26:30,802 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 16:26:30,802 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 16:26:31,386 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 16:26:31,392 - browser_control.py:173 - default_logger - DEBUG - 총 상품수 확인: 총 31개 상품 +2024-10-14 16:26:31,392 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 16:26:31,392 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 16:26:31,400 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 16:26:31,424 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 16:26:32,041 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 16:26:32,595 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 16:26:32,611 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 16:26:32,822 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 16:26:32,823 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 16:26:32,836 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 16:26:32,845 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 16:26:32,860 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 16:26:32,860 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 16:26:33,579 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 16:26:33,580 - option.py:148 - default_logger - DEBUG - 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2에 대한 옵션을 처리 중... +2024-10-14 16:26:35,566 - option.py:259 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 16:26:35,576 - option.py:271 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 16:26:35,578 - option.py:534 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 16:26:35,709 - option.py:177 - default_logger - DEBUG - 옵션 AI번역 : True +2024-10-14 16:26:35,731 - option.py:288 - default_logger - DEBUG - 총 옵션 갯수: 6 +2024-10-14 16:26:35,788 - option.py:323 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 16:26:35,889 - option.py:323 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 16:26:35,945 - option.py:323 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 16:26:35,996 - option.py:323 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 16:26:36,051 - option.py:323 - default_logger - DEBUG - 5번째 옵션 정보 수집 완료 +2024-10-14 16:26:36,096 - option.py:323 - default_logger - DEBUG - 6번째 옵션 정보 수집 완료 +2024-10-14 16:26:36,096 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 16:26:36,096 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-N-50 +2024-10-14 16:26:36,099 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-N-50 +2024-10-14 16:26:36,099 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-A220 +2024-10-14 16:26:36,101 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-A220 +2024-10-14 16:26:36,101 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-DL-D2 +2024-10-14 16:26:36,102 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-DL-D2 +2024-10-14 16:26:36,102 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-D24V +2024-10-14 16:26:36,102 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-D24V +2024-10-14 16:26:36,105 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-A220V +2024-10-14 16:26:36,105 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-A220V +2024-10-14 16:26:36,105 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 16:26:36,105 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 16:26:36,105 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 16:26:36,108 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "DSG-02-3C2-N-50", "origin_option_2": "DSG-02-3C2-A220", "origin_option_3": "DSG-02-3C2-DL-D2", "origin_option_4": "DSG-02-3C4-DL-D24V", "origin_option_5": "DSG-02-3C4-DL-A220V", "origin_option_6": "DSG-02-3C6-DL 电磁换向阀"} +2024-10-14 16:26:36,109 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 16:26:37,817 - vertexAI.py:144 - default_logger - DEBUG - 모델 응답: ```json +{ + "trans_option_1": "3C2-N-50", + "trans_option_2": "3C2-A220", + "trans_option_3": "3C2-DL-D2", + "trans_option_4": "3C4-DL-D24V", + "trans_option_5": "3C4-DL-A220V", + "trans_option_6": "3C6-DL" +} +``` +2024-10-14 16:26:37,817 - vertexAI.py:151 - default_logger - DEBUG - 응답에서 추출된 JSON 텍스트: { + "trans_option_1": "3C2-N-50", + "trans_option_2": "3C2-A220", + "trans_option_3": "3C2-DL-D2", + "trans_option_4": "3C4-DL-D24V", + "trans_option_5": "3C4-DL-A220V", + "trans_option_6": "3C6-DL" +} +2024-10-14 16:26:37,817 - vertexAI.py:154 - default_logger - DEBUG - 번역된 데이터: {'trans_option_1': '3C2-N-50', 'trans_option_2': '3C2-A220', 'trans_option_3': '3C2-DL-D2', 'trans_option_4': '3C4-DL-D24V', 'trans_option_5': '3C4-DL-A220V', 'trans_option_6': '3C6-DL'} +2024-10-14 16:26:37,817 - option.py:185 - default_logger - DEBUG - 번역된 옵션 입력 +2024-10-14 16:26:37,817 - option.py:433 - default_logger - DEBUG - trans_option_1번째 translated_name : 3C2-N-50 +2024-10-14 16:26:37,817 - option.py:441 - default_logger - DEBUG - trans_option_1번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:37,839 - option.py:445 - default_logger - DEBUG - trans_option_1번째 translated_name : [3C2-N-50] 입력 완료 +2024-10-14 16:26:37,839 - option.py:433 - default_logger - DEBUG - trans_option_2번째 translated_name : 3C2-A220 +2024-10-14 16:26:37,840 - option.py:441 - default_logger - DEBUG - trans_option_2번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:37,868 - option.py:445 - default_logger - DEBUG - trans_option_2번째 translated_name : [3C2-A220] 입력 완료 +2024-10-14 16:26:37,869 - option.py:433 - default_logger - DEBUG - trans_option_3번째 translated_name : 3C2-DL-D2 +2024-10-14 16:26:37,870 - option.py:441 - default_logger - DEBUG - trans_option_3번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:37,894 - option.py:445 - default_logger - DEBUG - trans_option_3번째 translated_name : [3C2-DL-D2] 입력 완료 +2024-10-14 16:26:37,896 - option.py:433 - default_logger - DEBUG - trans_option_4번째 translated_name : 3C4-DL-D24V +2024-10-14 16:26:37,897 - option.py:441 - default_logger - DEBUG - trans_option_4번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:37,939 - option.py:445 - default_logger - DEBUG - trans_option_4번째 translated_name : [3C4-DL-D24V] 입력 완료 +2024-10-14 16:26:37,942 - option.py:433 - default_logger - DEBUG - trans_option_5번째 translated_name : 3C4-DL-A220V +2024-10-14 16:26:37,942 - option.py:441 - default_logger - DEBUG - trans_option_5번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:37,978 - option.py:445 - default_logger - DEBUG - trans_option_5번째 translated_name : [3C4-DL-A220V] 입력 완료 +2024-10-14 16:26:37,979 - option.py:433 - default_logger - DEBUG - trans_option_6번째 translated_name : 3C6-DL +2024-10-14 16:26:37,981 - option.py:441 - default_logger - DEBUG - trans_option_6번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:38,036 - option.py:445 - default_logger - DEBUG - trans_option_6번째 translated_name : [3C6-DL] 입력 완료 +2024-10-14 16:26:38,037 - option.py:457 - default_logger - DEBUG - selected_translated_options 일괄 업데이트: {'DSG-02-3C2-N-50': '3C2-N-50', 'DSG-02-3C2-A220': '3C2-A220', 'DSG-02-3C2-DL-D2': '3C2-DL-D2', 'DSG-02-3C4-DL-D24V': '3C4-DL-D24V', 'DSG-02-3C4-DL-A220V': '3C4-DL-A220V', 'DSG-02-3C6-DL 电磁换向阀': '3C6-DL'} +2024-10-14 16:26:38,038 - option.py:197 - default_logger - DEBUG - [VertexAI] 를 이용한 옵션번역 성공 +2024-10-14 16:26:38,039 - option.py:201 - default_logger - DEBUG - 옵션 필터링 및 조정 : True +2024-10-14 16:26:38,040 - option.py:85 - default_logger - DEBUG - 최저옵션: 130333.33333333333, 표준편차: 31603.09408199703 +2024-10-14 16:26:38,041 - option.py:90 - default_logger - DEBUG - Option 116200.0 z-score: -0.44721359549995776 +2024-10-14 16:26:38,042 - option.py:90 - default_logger - DEBUG - Option 116200.0 z-score: -0.44721359549995776 +2024-10-14 16:26:38,043 - option.py:90 - default_logger - DEBUG - Option 116200.0 z-score: -0.44721359549995776 +2024-10-14 16:26:38,043 - option.py:90 - default_logger - DEBUG - Option 116200.0 z-score: -0.44721359549995776 +2024-10-14 16:26:38,044 - option.py:90 - default_logger - DEBUG - Option 116200.0 z-score: -0.44721359549995776 +2024-10-14 16:26:38,045 - option.py:90 - default_logger - DEBUG - Option 201000.0 z-score: 2.23606797749979 +2024-10-14 16:26:38,047 - option.py:94 - default_logger - DEBUG - Z-스코어 필터링: [116200.0, 116200.0, 116200.0, 116200.0, 116200.0] +2024-10-14 16:26:38,047 - option.py:102 - default_logger - DEBUG - 필터링된 본품옵션의 최저가: 116200.0, 마켓상한선: 232400.0 +2024-10-14 16:26:38,047 - option.py:107 - default_logger - DEBUG - 최종 선택된 옵션: [116200.0, 116200.0, 116200.0, 116200.0, 116200.0] +2024-10-14 16:26:39,423 - option.py:524 - default_logger - DEBUG - 옵션 체크 상태 조정 완료. +2024-10-14 16:26:39,425 - option.py:205 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 16:26:39,425 - option.py:534 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 16:26:39,800 - option.py:134 - default_logger - DEBUG - 선택된 옵션 저장 완료: [('3C6-DL', 0), ('3C2-N-50', 0), ('3C2-A220', 0), ('3C2-DL-D2', 0), ('3C4-DL-D24V', 0), ('3C4-DL-A220V', 0)] +2024-10-14 16:26:39,800 - option.py:236 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 16:26:39,803 - option.py:240 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 16:26:40,098 - option.py:243 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 16:26:40,576 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 16:26:40,576 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 16:26:41,025 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 16:26:41,028 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 16:26:41,028 - gui.py:699 - default_logger - DEBUG - 2/20: 세부사항 수정 작업 중... +2024-10-14 16:26:41,105 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 16:26:41,555 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 16:26:42,163 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 16:26:42,174 - title.py:94 - default_logger - DEBUG - 원본 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机 +2024-10-14 16:26:42,174 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 16:26:42,179 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 16:26:42,192 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 16:26:42,199 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 16:26:42,204 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 16:26:42,204 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 16:26:42,672 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 16:26:42,673 - option.py:148 - default_logger - DEBUG - 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机에 대한 옵션을 처리 중... +2024-10-14 16:26:44,674 - option.py:259 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 16:26:44,683 - option.py:271 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 16:26:44,683 - option.py:534 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 16:26:44,743 - option.py:177 - default_logger - DEBUG - 옵션 AI번역 : True +2024-10-14 16:26:44,760 - option.py:288 - default_logger - DEBUG - 총 옵션 갯수: 4 +2024-10-14 16:26:44,814 - option.py:323 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 16:26:44,860 - option.py:323 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 16:26:44,928 - option.py:323 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 16:26:44,982 - option.py:323 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 16:26:44,983 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': '香水 小样压盖机', 'origin_option_2': '香水瓶 中套压盖机 适合13MM 15MM盖子', 'origin_option_3': '喷雾瓶 卡扣式压盖机', 'origin_option_4': '中套压盖机 20MM瓶口专用 适合 20MM 瓶口'} +2024-10-14 16:26:44,984 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 香水 小样压盖机 +2024-10-14 16:26:44,986 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 香水 小样压盖机 +2024-10-14 16:26:44,987 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 香水瓶 中套压盖机 适合13MM 15MM盖子 +2024-10-14 16:26:44,987 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 香水瓶 中套压盖机 适合13MM 15MM盖子 +2024-10-14 16:26:44,987 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 喷雾瓶 卡扣式压盖机 +2024-10-14 16:26:44,987 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 喷雾瓶 卡扣式压盖机 +2024-10-14 16:26:44,990 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口 +2024-10-14 16:26:44,990 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口 +2024-10-14 16:26:44,990 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': '香水 小样压盖机', 'origin_option_2': '香水瓶 中套压盖机 适合13MM 15MM盖子', 'origin_option_3': '喷雾瓶 卡扣式压盖机', 'origin_option_4': '中套压盖机 20MM瓶口专用 适合 20MM 瓶口'} +2024-10-14 16:26:44,992 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "香水 小样压盖机", "origin_option_2": "香水瓶 中套压盖机 适合13MM 15MM盖子", "origin_option_3": "喷雾瓶 卡扣式压盖机", "origin_option_4": "中套压盖机 20MM瓶口专用 适合 20MM 瓶口"} +2024-10-14 16:26:44,992 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 16:26:45,950 - option.py:192 - default_logger - ERROR - 안전 필터에 의해 번역 요청이 차단되었습니다. Cannot get the response text. +Cannot get the Candidate text. +Response candidate content has no parts (and thus no text). The candidate is likely blocked by the safety filters. +Content: +{} +Candidate: +{ + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.16210938, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.103515625 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "MEDIUM", + "blocked": true, + "probability_score": 0.640625, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.5078125 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.15625, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.07910156 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.2421875, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.10498047 + } + ], + "avg_logprobs": "NaN" +} +Response: +{ + "candidates": [ + { + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.16210938, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.103515625 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "MEDIUM", + "blocked": true, + "probability_score": 0.640625, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.5078125 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.15625, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.07910156 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.2421875, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.10498047 + } + ], + "avg_logprobs": "NaN" + } + ], + "usage_metadata": { + "prompt_token_count": 466, + "total_token_count": 466 + }, + "model_version": "gemini-1.5-flash-001" +} +2024-10-14 16:26:45,952 - option.py:193 - default_logger - DEBUG - 퍼센티 자체 AI번역 사용 시도 +2024-10-14 16:26:46,056 - option.py:197 - default_logger - DEBUG - [퍼센티AI] 를 이용한 옵션번역 성공 +2024-10-14 16:26:46,056 - option.py:201 - default_logger - DEBUG - 옵션 필터링 및 조정 : True +2024-10-14 16:26:46,058 - option.py:85 - default_logger - DEBUG - 최저옵션: 87200.0, 표준편차: 0.0 +2024-10-14 16:26:46,058 - option.py:90 - default_logger - DEBUG - Option 87200.0 z-score: nan +2024-10-14 16:26:46,058 - option.py:90 - default_logger - DEBUG - Option 87200.0 z-score: nan +2024-10-14 16:26:46,058 - option.py:90 - default_logger - DEBUG - Option 87200.0 z-score: nan +2024-10-14 16:26:46,058 - option.py:90 - default_logger - DEBUG - Option 87200.0 z-score: nan +2024-10-14 16:26:46,061 - option.py:94 - default_logger - DEBUG - Z-스코어 필터링: [] +2024-10-14 16:26:46,061 - option.py:498 - default_logger - ERROR - 옵션 필터링 및 조정 중 오류 발생: cannot access local variable 'final_options' where it is not associated with a value +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 482, in filter_and_adjust_options + filtered_options = self.filter_bait_items_with_price_distribution(options_list) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\py\autoTrans\option.py", line 107, in filter_bait_items_with_price_distribution + self.logger.debug(f"최종 선택된 옵션: {[opt['price'] for opt in final_options]}") + ^^^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'final_options' where it is not associated with a value +2024-10-14 16:26:46,064 - option.py:205 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 16:26:46,065 - option.py:534 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 16:26:46,253 - option.py:134 - default_logger - DEBUG - 선택된 옵션 저장 완료: [('압축기 소형', 0), ('압축기 중형 13MM/15MM', 0), ('압축기 스프레이 캡', 0), ('압축기 중형 20MM', 0)] +2024-10-14 16:26:46,255 - option.py:236 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 16:26:46,255 - option.py:240 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 16:26:46,398 - option.py:243 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 16:26:46,841 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 16:26:46,843 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 16:26:47,098 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 16:26:47,102 - gui.py:754 - default_logger - DEBUG - 2/[31]개 상품 수정 완료. +2024-10-14 16:26:47,103 - gui.py:699 - default_logger - DEBUG - 3/20: 세부사항 수정 작업 중... +2024-10-14 16:26:47,236 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 16:26:47,708 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 16:26:48,196 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 16:26:48,208 - title.py:94 - default_logger - DEBUG - 원본 상품명: 驾驾乐千斤顶液压立式2吨小汽车用5吨货车轿车油压车载手摇千金顶 +2024-10-14 16:26:48,219 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 16:26:48,219 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 16:26:48,233 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 16:26:48,242 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 16:26:48,257 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 16:26:48,259 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 16:26:49,168 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 16:26:49,168 - option.py:148 - default_logger - DEBUG - 상품명: 驾驾乐千斤顶液压立式2吨小汽车用5吨货车轿车油压车载手摇千金顶에 대한 옵션을 처리 중... +2024-10-14 16:26:51,177 - option.py:259 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 16:26:51,188 - option.py:271 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 16:26:51,189 - option.py:534 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 16:26:51,409 - option.py:177 - default_logger - DEBUG - 옵션 AI번역 : True +2024-10-14 16:26:51,457 - option.py:288 - default_logger - DEBUG - 총 옵션 갯수: 43 +2024-10-14 16:26:51,538 - option.py:323 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 16:26:51,639 - option.py:323 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 16:26:51,719 - option.py:323 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 16:26:51,787 - option.py:323 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 16:26:51,871 - option.py:323 - default_logger - DEBUG - 5번째 옵션 정보 수집 완료 +2024-10-14 16:26:51,934 - option.py:323 - default_logger - DEBUG - 6번째 옵션 정보 수집 완료 +2024-10-14 16:26:51,985 - option.py:323 - default_logger - DEBUG - 7번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,046 - option.py:323 - default_logger - DEBUG - 8번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,090 - option.py:323 - default_logger - DEBUG - 9번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,155 - option.py:323 - default_logger - DEBUG - 10번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,219 - option.py:323 - default_logger - DEBUG - 11번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,286 - option.py:323 - default_logger - DEBUG - 12번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,340 - option.py:323 - default_logger - DEBUG - 13번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,401 - option.py:323 - default_logger - DEBUG - 14번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,459 - option.py:323 - default_logger - DEBUG - 15번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,505 - option.py:323 - default_logger - DEBUG - 16번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,558 - option.py:323 - default_logger - DEBUG - 17번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,616 - option.py:323 - default_logger - DEBUG - 18번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,674 - option.py:323 - default_logger - DEBUG - 19번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,713 - option.py:323 - default_logger - DEBUG - 20번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,794 - option.py:323 - default_logger - DEBUG - 21번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,856 - option.py:323 - default_logger - DEBUG - 22번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,901 - option.py:323 - default_logger - DEBUG - 23번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,955 - option.py:323 - default_logger - DEBUG - 24번째 옵션 정보 수집 완료 +2024-10-14 16:26:52,998 - option.py:323 - default_logger - DEBUG - 25번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,050 - option.py:323 - default_logger - DEBUG - 26번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,122 - option.py:323 - default_logger - DEBUG - 27번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,182 - option.py:323 - default_logger - DEBUG - 28번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,239 - option.py:323 - default_logger - DEBUG - 29번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,289 - option.py:323 - default_logger - DEBUG - 30번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,336 - option.py:323 - default_logger - DEBUG - 31번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,384 - option.py:323 - default_logger - DEBUG - 32번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,437 - option.py:323 - default_logger - DEBUG - 33번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,498 - option.py:323 - default_logger - DEBUG - 34번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,552 - option.py:323 - default_logger - DEBUG - 35번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,608 - option.py:323 - default_logger - DEBUG - 36번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,653 - option.py:323 - default_logger - DEBUG - 37번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,708 - option.py:323 - default_logger - DEBUG - 38번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,772 - option.py:323 - default_logger - DEBUG - 39번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,831 - option.py:323 - default_logger - DEBUG - 40번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,866 - option.py:323 - default_logger - DEBUG - 41번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,922 - option.py:323 - default_logger - DEBUG - 42번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,968 - option.py:323 - default_logger - DEBUG - 43번째 옵션 정보 수집 완료 +2024-10-14 16:26:53,970 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': '立式国标2吨 限量抢', 'origin_option_2': '3吨标准', 'origin_option_3': '2吨加厚(带塑盒)', 'origin_option_4': '3吨加厚加高', 'origin_option_5': '3吨标准(带塑盒)', 'origin_option_6': '3吨加厚加高(带塑盒)', 'origin_option_7': '5吨加厚加高', 'origin_option_8': '3吨标准+扳手', 'origin_option_9': '(双节液压)2吨 轿车推荐', 'origin_option_10': '5吨加厚加高(带塑盒)', 'origin_option_11': '3吨加厚加高+扳手', 'origin_option_12': '3吨标准(带塑盒)+扳手', 'origin_option_13': '(双节液压)3吨 SUV推荐', 'origin_option_14': '(双节液压)2吨(带塑盒) 轿车推荐款', 'origin_option_15': '3吨加厚加高(带塑盒)+扳手', 'origin_option_16': '5吨加厚加高+扳手', 'origin_option_17': '(双节液压)3吨(带塑盒)SUV推荐', 'origin_option_18': '8吨加厚加高', 'origin_option_19': '5吨加厚加高(带塑盒)+扳手', 'origin_option_20': '10吨加厚加高', 'origin_option_21': '(双节液压)2吨+扳手', 'origin_option_22': '8吨加厚加高(带塑盒)', 'origin_option_23': '(双节液压)3吨 +扳手', 'origin_option_24': '(双节液压)2吨(带塑盒)+扳手', 'origin_option_25': '10吨加厚加高(带塑盒)', 'origin_option_26': '(双节液压)3吨(带塑盒)+扳手', 'origin_option_27': '12吨加厚加高', 'origin_option_28': '(双节液压)4吨加厚低版', 'origin_option_29': '(双节液压)4吨加厚高版', 'origin_option_30': '16吨加厚加高', 'origin_option_31': '(双节液压)4吨加厚低版(带塑盒)', 'origin_option_32': '(双节液压)6吨加厚低版', 'origin_option_33': '(双节液压)4吨加厚高版(带塑盒)', 'origin_option_34': '(双节液压)6吨加厚高版', 'origin_option_35': '20吨加厚加高', 'origin_option_36': '(双节液压)8吨加厚', 'origin_option_37': '30吨加厚加高', 'origin_option_38': '(双节液压)10吨加厚', 'origin_option_39': '32吨加厚加高', 'origin_option_40': '(双节液压)12吨加厚', 'origin_option_41': '(双节液压)16吨加厚', 'origin_option_42': '(双节液压)20吨加厚', 'origin_option_43': '50吨加厚加高'} +2024-10-14 16:26:53,982 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 立式国标2吨 限量抢 +2024-10-14 16:26:53,984 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 立式国标2吨 限量抢 +2024-10-14 16:26:53,984 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨标准 +2024-10-14 16:26:53,985 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨标准 +2024-10-14 16:26:53,986 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 2吨加厚(带塑盒) +2024-10-14 16:26:53,986 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 2吨加厚带塑盒 +2024-10-14 16:26:53,987 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨加厚加高 +2024-10-14 16:26:53,987 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨加厚加高 +2024-10-14 16:26:53,987 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨标准(带塑盒) +2024-10-14 16:26:53,988 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨标准带塑盒 +2024-10-14 16:26:53,990 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨加厚加高(带塑盒) +2024-10-14 16:26:53,990 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨加厚加高带塑盒 +2024-10-14 16:26:53,990 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 5吨加厚加高 +2024-10-14 16:26:53,991 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 5吨加厚加高 +2024-10-14 16:26:53,992 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨标准+扳手 +2024-10-14 16:26:53,992 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨标准+扳手 +2024-10-14 16:26:53,993 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)2吨 轿车推荐 +2024-10-14 16:26:53,993 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压2吨 轿车推荐 +2024-10-14 16:26:53,994 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 5吨加厚加高(带塑盒) +2024-10-14 16:26:53,994 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 5吨加厚加高带塑盒 +2024-10-14 16:26:53,994 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨加厚加高+扳手 +2024-10-14 16:26:53,996 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨加厚加高+扳手 +2024-10-14 16:26:53,996 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨标准(带塑盒)+扳手 +2024-10-14 16:26:53,996 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨标准带塑盒+扳手 +2024-10-14 16:26:53,996 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)3吨 SUV推荐 +2024-10-14 16:26:53,996 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压3吨 SUV推荐 +2024-10-14 16:26:53,996 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)2吨(带塑盒) 轿车推荐款 +2024-10-14 16:26:53,996 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压2吨带塑盒 轿车推荐款 +2024-10-14 16:26:54,000 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨加厚加高(带塑盒)+扳手 +2024-10-14 16:26:54,000 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨加厚加高带塑盒+扳手 +2024-10-14 16:26:54,001 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 5吨加厚加高+扳手 +2024-10-14 16:26:54,001 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 5吨加厚加高+扳手 +2024-10-14 16:26:54,001 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)3吨(带塑盒)SUV推荐 +2024-10-14 16:26:54,001 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压3吨带塑盒SUV推荐 +2024-10-14 16:26:54,003 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 8吨加厚加高 +2024-10-14 16:26:54,003 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 8吨加厚加高 +2024-10-14 16:26:54,003 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 5吨加厚加高(带塑盒)+扳手 +2024-10-14 16:26:54,003 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 5吨加厚加高带塑盒+扳手 +2024-10-14 16:26:54,003 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 10吨加厚加高 +2024-10-14 16:26:54,006 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 10吨加厚加高 +2024-10-14 16:26:54,006 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)2吨+扳手 +2024-10-14 16:26:54,008 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压2吨+扳手 +2024-10-14 16:26:54,008 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 8吨加厚加高(带塑盒) +2024-10-14 16:26:54,008 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 8吨加厚加高带塑盒 +2024-10-14 16:26:54,008 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)3吨 +扳手 +2024-10-14 16:26:54,008 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压3吨 +扳手 +2024-10-14 16:26:54,011 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)2吨(带塑盒)+扳手 +2024-10-14 16:26:54,011 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压2吨带塑盒+扳手 +2024-10-14 16:26:54,011 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 10吨加厚加高(带塑盒) +2024-10-14 16:26:54,013 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 10吨加厚加高带塑盒 +2024-10-14 16:26:54,013 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)3吨(带塑盒)+扳手 +2024-10-14 16:26:54,013 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压3吨带塑盒+扳手 +2024-10-14 16:26:54,015 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 12吨加厚加高 +2024-10-14 16:26:54,015 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 12吨加厚加高 +2024-10-14 16:26:54,015 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)4吨加厚低版 +2024-10-14 16:26:54,015 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压4吨加厚低版 +2024-10-14 16:26:54,017 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)4吨加厚高版 +2024-10-14 16:26:54,017 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压4吨加厚高版 +2024-10-14 16:26:54,018 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 16吨加厚加高 +2024-10-14 16:26:54,018 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 16吨加厚加高 +2024-10-14 16:26:54,018 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)4吨加厚低版(带塑盒) +2024-10-14 16:26:54,018 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压4吨加厚低版带塑盒 +2024-10-14 16:26:54,020 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)6吨加厚低版 +2024-10-14 16:26:54,020 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压6吨加厚低版 +2024-10-14 16:26:54,020 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)4吨加厚高版(带塑盒) +2024-10-14 16:26:54,020 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压4吨加厚高版带塑盒 +2024-10-14 16:26:54,020 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)6吨加厚高版 +2024-10-14 16:26:54,023 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压6吨加厚高版 +2024-10-14 16:26:54,023 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 20吨加厚加高 +2024-10-14 16:26:54,024 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 20吨加厚加高 +2024-10-14 16:26:54,024 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)8吨加厚 +2024-10-14 16:26:54,026 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压8吨加厚 +2024-10-14 16:26:54,026 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 30吨加厚加高 +2024-10-14 16:26:54,027 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 30吨加厚加高 +2024-10-14 16:26:54,027 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)10吨加厚 +2024-10-14 16:26:54,027 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压10吨加厚 +2024-10-14 16:26:54,027 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 32吨加厚加高 +2024-10-14 16:26:54,027 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 32吨加厚加高 +2024-10-14 16:26:54,027 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)12吨加厚 +2024-10-14 16:26:54,027 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压12吨加厚 +2024-10-14 16:26:54,027 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)16吨加厚 +2024-10-14 16:26:54,027 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压16吨加厚 +2024-10-14 16:26:54,032 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)20吨加厚 +2024-10-14 16:26:54,032 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压20吨加厚 +2024-10-14 16:26:54,032 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 50吨加厚加高 +2024-10-14 16:26:54,032 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 50吨加厚加高 +2024-10-14 16:26:54,035 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': '立式国标2吨 限量抢', 'origin_option_2': '3吨标准', 'origin_option_3': '2吨加厚带塑盒', 'origin_option_4': '3吨加厚加高', 'origin_option_5': '3吨标准带塑盒', 'origin_option_6': '3吨加厚加高带塑盒', 'origin_option_7': '5吨加厚加高', 'origin_option_8': '3吨标准+扳手', 'origin_option_9': '双节液压2吨 轿车推荐', 'origin_option_10': '5吨加厚加高带塑盒', 'origin_option_11': '3吨加厚加高+扳手', 'origin_option_12': '3吨标准带塑盒+扳手', 'origin_option_13': '双节液压3吨 SUV推荐', 'origin_option_14': '双节液压2吨带塑盒 轿车推荐款', 'origin_option_15': '3吨加厚加高带塑盒+扳手', 'origin_option_16': '5吨加厚加高+扳手', 'origin_option_17': '双节液压3吨带塑盒SUV推荐', 'origin_option_18': '8吨加厚加高', 'origin_option_19': '5吨加厚加高带塑盒+扳手', 'origin_option_20': '10吨加厚加高', 'origin_option_21': '双节液压2吨+扳手', 'origin_option_22': '8吨加厚加高带塑盒', 'origin_option_23': '双节液压3吨 +扳手', 'origin_option_24': '双节液压2吨带塑盒+扳手', 'origin_option_25': '10吨加厚加高带塑盒', 'origin_option_26': '双节液压3吨带塑盒+扳手', 'origin_option_27': '12吨加厚加高', 'origin_option_28': '双节液压4吨加厚低版', 'origin_option_29': '双节液压4吨加厚高版', 'origin_option_30': '16吨加厚加高', 'origin_option_31': '双节液压4吨加厚低版带塑盒', 'origin_option_32': '双节液压6吨加厚低版', 'origin_option_33': '双节液压4吨加厚高版带塑盒', 'origin_option_34': '双节液压6吨加厚高版', 'origin_option_35': '20吨加厚加高', 'origin_option_36': '双节液压8吨加厚', 'origin_option_37': '30吨加厚加高', 'origin_option_38': '双节液压10吨加厚', 'origin_option_39': '32吨加厚加高', 'origin_option_40': '双节液压12吨加厚', 'origin_option_41': '双节液压16吨加厚', 'origin_option_42': '双节液压20吨加厚', 'origin_option_43': '50吨加厚加高'} +2024-10-14 16:26:54,036 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '驾驾乐千斤顶液压立式2吨小汽车用5吨货车轿车油压车载手摇千金顶'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "立式国标2吨 限量抢", "origin_option_2": "3吨标准", "origin_option_3": "2吨加厚带塑盒", "origin_option_4": "3吨加厚加高", "origin_option_5": "3吨标准带塑盒", "origin_option_6": "3吨加厚加高带塑盒", "origin_option_7": "5吨加厚加高", "origin_option_8": "3吨标准+扳手", "origin_option_9": "双节液压2吨 轿车推荐", "origin_option_10": "5吨加厚加高带塑盒", "origin_option_11": "3吨加厚加高+扳手", "origin_option_12": "3吨标准带塑盒+扳手", "origin_option_13": "双节液压3吨 SUV推荐", "origin_option_14": "双节液压2吨带塑盒 轿车推荐款", "origin_option_15": "3吨加厚加高带塑盒+扳手", "origin_option_16": "5吨加厚加高+扳手", "origin_option_17": "双节液压3吨带塑盒SUV推荐", "origin_option_18": "8吨加厚加高", "origin_option_19": "5吨加厚加高带塑盒+扳手", "origin_option_20": "10吨加厚加高", "origin_option_21": "双节液压2吨+扳手", "origin_option_22": "8吨加厚加高带塑盒", "origin_option_23": "双节液压3吨 +扳手", "origin_option_24": "双节液压2吨带塑盒+扳手", "origin_option_25": "10吨加厚加高带塑盒", "origin_option_26": "双节液压3吨带塑盒+扳手", "origin_option_27": "12吨加厚加高", "origin_option_28": "双节液压4吨加厚低版", "origin_option_29": "双节液压4吨加厚高版", "origin_option_30": "16吨加厚加高", "origin_option_31": "双节液压4吨加厚低版带塑盒", "origin_option_32": "双节液压6吨加厚低版", "origin_option_33": "双节液压4吨加厚高版带塑盒", "origin_option_34": "双节液压6吨加厚高版", "origin_option_35": "20吨加厚加高", "origin_option_36": "双节液压8吨加厚", "origin_option_37": "30吨加厚加高", "origin_option_38": "双节液压10吨加厚", "origin_option_39": "32吨加厚加高", "origin_option_40": "双节液压12吨加厚", "origin_option_41": "双节液压16吨加厚", "origin_option_42": "双节液压20吨加厚", "origin_option_43": "50吨加厚加高"} +2024-10-14 16:26:54,037 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 16:26:58,044 - vertexAI.py:144 - default_logger - DEBUG - 모델 응답: ```json +{ +"trans_option_1": "2톤 국표", +"trans_option_2": "3톤 표준", +"trans_option_3": "2톤 두께 플라스틱 케이스", +"trans_option_4": "3톤 두께 높이", +"trans_option_5": "3톤 표준 플라스틱 케이스", +"trans_option_6": "3톤 두께 높이 플라스틱 케이스", +"trans_option_7": "5톤 두께 높이", +"trans_option_8": "3톤 표준 + 렌치", +"trans_option_9": "2단 2톤", +"trans_option_10": "5톤 두께 높이 플라스틱 케이스", +"trans_option_11": "3톤 두께 높이 + 렌치", +"trans_option_12": "3톤 표준 플라스틱 케이스 + 렌치", +"trans_option_13": "2단 3톤", +"trans_option_14": "2단 2톤 플라스틱 케이스", +"trans_option_15": "3톤 두께 높이 플라스틱 케이스 + 렌치", +"trans_option_16": "5톤 두께 높이 + 렌치", +"trans_option_17": "2단 3톤 플라스틱 케이스", +"trans_option_18": "8톤 두께 높이", +"trans_option_19": "5톤 두께 높이 플라스틱 케이스 + 렌치", +"trans_option_20": "10톤 두께 높이", +"trans_option_21": "2단 2톤 + 렌치", +"trans_option_22": "8톤 두께 높이 플라스틱 케이스", +"trans_option_23": "2단 3톤 + 렌치", +"trans_option_24": "2단 2톤 플라스틱 케이스 + 렌치", +"trans_option_25": "10톤 두께 높이 플라스틱 케이스", +"trans_option_26": "2단 3톤 플라스틱 케이스 + 렌치", +"trans_option_27": "12톤 두께 높이", +"trans_option_28": "2단 4톤 두께 낮은", +"trans_option_29": "2단 4톤 두께 높은", +"trans_option_30": "16톤 두께 높이", +"trans_option_31": "2단 4톤 두께 낮은 플라스틱 케이스", +"trans_option_32": "2단 6톤 두께 낮은", +"trans_option_33": "2단 4톤 두께 높은 플라스틱 케이스", +"trans_option_34": "2단 6톤 두께 높은", +"trans_option_35": "20톤 두께 높이", +"trans_option_36": "2단 8톤 두께", +"trans_option_37": "30톤 두께 높이", +"trans_option_38": "2단 10톤 두께", +"trans_option_39": "32톤 두께 높이", +"trans_option_40": "2단 12톤 두께", +"trans_option_41": "2단 16톤 두께", +"trans_option_42": "2단 20톤 두께", +"trans_option_43": "50톤 두께 높이" +} +``` +2024-10-14 16:26:58,044 - vertexAI.py:151 - default_logger - DEBUG - 응답에서 추출된 JSON 텍스트: { +"trans_option_1": "2톤 국표", +"trans_option_2": "3톤 표준", +"trans_option_3": "2톤 두께 플라스틱 케이스", +"trans_option_4": "3톤 두께 높이", +"trans_option_5": "3톤 표준 플라스틱 케이스", +"trans_option_6": "3톤 두께 높이 플라스틱 케이스", +"trans_option_7": "5톤 두께 높이", +"trans_option_8": "3톤 표준 + 렌치", +"trans_option_9": "2단 2톤", +"trans_option_10": "5톤 두께 높이 플라스틱 케이스", +"trans_option_11": "3톤 두께 높이 + 렌치", +"trans_option_12": "3톤 표준 플라스틱 케이스 + 렌치", +"trans_option_13": "2단 3톤", +"trans_option_14": "2단 2톤 플라스틱 케이스", +"trans_option_15": "3톤 두께 높이 플라스틱 케이스 + 렌치", +"trans_option_16": "5톤 두께 높이 + 렌치", +"trans_option_17": "2단 3톤 플라스틱 케이스", +"trans_option_18": "8톤 두께 높이", +"trans_option_19": "5톤 두께 높이 플라스틱 케이스 + 렌치", +"trans_option_20": "10톤 두께 높이", +"trans_option_21": "2단 2톤 + 렌치", +"trans_option_22": "8톤 두께 높이 플라스틱 케이스", +"trans_option_23": "2단 3톤 + 렌치", +"trans_option_24": "2단 2톤 플라스틱 케이스 + 렌치", +"trans_option_25": "10톤 두께 높이 플라스틱 케이스", +"trans_option_26": "2단 3톤 플라스틱 케이스 + 렌치", +"trans_option_27": "12톤 두께 높이", +"trans_option_28": "2단 4톤 두께 낮은", +"trans_option_29": "2단 4톤 두께 높은", +"trans_option_30": "16톤 두께 높이", +"trans_option_31": "2단 4톤 두께 낮은 플라스틱 케이스", +"trans_option_32": "2단 6톤 두께 낮은", +"trans_option_33": "2단 4톤 두께 높은 플라스틱 케이스", +"trans_option_34": "2단 6톤 두께 높은", +"trans_option_35": "20톤 두께 높이", +"trans_option_36": "2단 8톤 두께", +"trans_option_37": "30톤 두께 높이", +"trans_option_38": "2단 10톤 두께", +"trans_option_39": "32톤 두께 높이", +"trans_option_40": "2단 12톤 두께", +"trans_option_41": "2단 16톤 두께", +"trans_option_42": "2단 20톤 두께", +"trans_option_43": "50톤 두께 높이" +} +2024-10-14 16:26:58,056 - vertexAI.py:154 - default_logger - DEBUG - 번역된 데이터: {'trans_option_1': '2톤 국표', 'trans_option_2': '3톤 표준', 'trans_option_3': '2톤 두께 플라스틱 케이스', 'trans_option_4': '3톤 두께 높이', 'trans_option_5': '3톤 표준 플라스틱 케이스', 'trans_option_6': '3톤 두께 높이 플라스틱 케이스', 'trans_option_7': '5톤 두께 높이', 'trans_option_8': '3톤 표준 + 렌치', 'trans_option_9': '2단 2톤', 'trans_option_10': '5톤 두께 높이 플라스틱 케이스', 'trans_option_11': '3톤 두께 높이 + 렌치', 'trans_option_12': '3톤 표준 플라스틱 케이스 + 렌치', 'trans_option_13': '2단 3톤', 'trans_option_14': '2단 2톤 플라스틱 케이스', 'trans_option_15': '3톤 두께 높이 플라스틱 케이스 + 렌치', 'trans_option_16': '5톤 두께 높이 + 렌치', 'trans_option_17': '2단 3톤 플라스틱 케이스', 'trans_option_18': '8톤 두께 높이', 'trans_option_19': '5톤 두께 높이 플라스틱 케이스 + 렌치', 'trans_option_20': '10톤 두께 높이', 'trans_option_21': '2단 2톤 + 렌치', 'trans_option_22': '8톤 두께 높이 플라스틱 케이스', 'trans_option_23': '2단 3톤 + 렌치', 'trans_option_24': '2단 2톤 플라스틱 케이스 + 렌치', 'trans_option_25': '10톤 두께 높이 플라스틱 케이스', 'trans_option_26': '2단 3톤 플라스틱 케이스 + 렌치', 'trans_option_27': '12톤 두께 높이', 'trans_option_28': '2단 4톤 두께 낮은', 'trans_option_29': '2단 4톤 두께 높은', 'trans_option_30': '16톤 두께 높이', 'trans_option_31': '2단 4톤 두께 낮은 플라스틱 케이스', 'trans_option_32': '2단 6톤 두께 낮은', 'trans_option_33': '2단 4톤 두께 높은 플라스틱 케이스', 'trans_option_34': '2단 6톤 두께 높은', 'trans_option_35': '20톤 두께 높이', 'trans_option_36': '2단 8톤 두께', 'trans_option_37': '30톤 두께 높이', 'trans_option_38': '2단 10톤 두께', 'trans_option_39': '32톤 두께 높이', 'trans_option_40': '2단 12톤 두께', 'trans_option_41': '2단 16톤 두께', 'trans_option_42': '2단 20톤 두께', 'trans_option_43': '50톤 두께 높이'} +2024-10-14 16:26:58,058 - option.py:185 - default_logger - DEBUG - 번역된 옵션 입력 +2024-10-14 16:26:58,060 - option.py:433 - default_logger - DEBUG - trans_option_1번째 translated_name : 2톤 국표 +2024-10-14 16:26:58,060 - option.py:441 - default_logger - DEBUG - trans_option_1번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:58,082 - option.py:445 - default_logger - DEBUG - trans_option_1번째 translated_name : [2톤 국표] 입력 완료 +2024-10-14 16:26:58,083 - option.py:433 - default_logger - DEBUG - trans_option_2번째 translated_name : 3톤 표준 +2024-10-14 16:26:58,084 - option.py:441 - default_logger - DEBUG - trans_option_2번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:58,126 - option.py:445 - default_logger - DEBUG - trans_option_2번째 translated_name : [3톤 표준] 입력 완료 +2024-10-14 16:26:58,127 - option.py:433 - default_logger - DEBUG - trans_option_3번째 translated_name : 2톤 두께 플라스틱 케이스 +2024-10-14 16:26:58,128 - option.py:441 - default_logger - DEBUG - trans_option_3번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:58,491 - option.py:445 - default_logger - DEBUG - trans_option_3번째 translated_name : [2톤 두께 플라스틱 케이스] 입력 완료 +2024-10-14 16:26:58,492 - option.py:433 - default_logger - DEBUG - trans_option_4번째 translated_name : 3톤 두께 높이 +2024-10-14 16:26:58,493 - option.py:441 - default_logger - DEBUG - trans_option_4번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:58,539 - option.py:445 - default_logger - DEBUG - trans_option_4번째 translated_name : [3톤 두께 높이] 입력 완료 +2024-10-14 16:26:58,539 - option.py:433 - default_logger - DEBUG - trans_option_5번째 translated_name : 3톤 표준 플라스틱 케이스 +2024-10-14 16:26:58,540 - option.py:441 - default_logger - DEBUG - trans_option_5번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:58,888 - option.py:445 - default_logger - DEBUG - trans_option_5번째 translated_name : [3톤 표준 플라스틱 케이스] 입력 완료 +2024-10-14 16:26:58,890 - option.py:433 - default_logger - DEBUG - trans_option_6번째 translated_name : 3톤 두께 높이 플라스틱 케이스 +2024-10-14 16:26:58,890 - option.py:441 - default_logger - DEBUG - trans_option_6번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:59,478 - option.py:445 - default_logger - DEBUG - trans_option_6번째 translated_name : [3톤 두께 높이 플라스틱 케이스] 입력 완료 +2024-10-14 16:26:59,479 - option.py:433 - default_logger - DEBUG - trans_option_7번째 translated_name : 5톤 두께 높이 +2024-10-14 16:26:59,480 - option.py:441 - default_logger - DEBUG - trans_option_7번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:59,822 - option.py:445 - default_logger - DEBUG - trans_option_7번째 translated_name : [5톤 두께 높이] 입력 완료 +2024-10-14 16:26:59,823 - option.py:433 - default_logger - DEBUG - trans_option_8번째 translated_name : 3톤 표준 + 렌치 +2024-10-14 16:26:59,824 - option.py:441 - default_logger - DEBUG - trans_option_8번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:59,873 - option.py:445 - default_logger - DEBUG - trans_option_8번째 translated_name : [3톤 표준 + 렌치] 입력 완료 +2024-10-14 16:26:59,874 - option.py:433 - default_logger - DEBUG - trans_option_9번째 translated_name : 2단 2톤 +2024-10-14 16:26:59,875 - option.py:441 - default_logger - DEBUG - trans_option_9번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:26:59,935 - option.py:445 - default_logger - DEBUG - trans_option_9번째 translated_name : [2단 2톤] 입력 완료 +2024-10-14 16:26:59,936 - option.py:433 - default_logger - DEBUG - trans_option_10번째 translated_name : 5톤 두께 높이 플라스틱 케이스 +2024-10-14 16:26:59,937 - option.py:441 - default_logger - DEBUG - trans_option_10번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:00,000 - option.py:445 - default_logger - DEBUG - trans_option_10번째 translated_name : [5톤 두께 높이 플라스틱 케이스] 입력 완료 +2024-10-14 16:27:00,001 - option.py:433 - default_logger - DEBUG - trans_option_11번째 translated_name : 3톤 두께 높이 + 렌치 +2024-10-14 16:27:00,001 - option.py:441 - default_logger - DEBUG - trans_option_11번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:00,640 - option.py:445 - default_logger - DEBUG - trans_option_11번째 translated_name : [3톤 두께 높이 + 렌치] 입력 완료 +2024-10-14 16:27:00,641 - option.py:433 - default_logger - DEBUG - trans_option_12번째 translated_name : 3톤 표준 플라스틱 케이스 + 렌치 +2024-10-14 16:27:00,642 - option.py:441 - default_logger - DEBUG - trans_option_12번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:00,989 - option.py:445 - default_logger - DEBUG - trans_option_12번째 translated_name : [3톤 표준 플라스틱 케이스 + 렌치] 입력 완료 +2024-10-14 16:27:00,992 - option.py:433 - default_logger - DEBUG - trans_option_13번째 translated_name : 2단 3톤 +2024-10-14 16:27:00,992 - option.py:441 - default_logger - DEBUG - trans_option_13번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:01,044 - option.py:445 - default_logger - DEBUG - trans_option_13번째 translated_name : [2단 3톤] 입력 완료 +2024-10-14 16:27:01,044 - option.py:433 - default_logger - DEBUG - trans_option_14번째 translated_name : 2단 2톤 플라스틱 케이스 +2024-10-14 16:27:01,044 - option.py:441 - default_logger - DEBUG - trans_option_14번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:01,106 - option.py:445 - default_logger - DEBUG - trans_option_14번째 translated_name : [2단 2톤 플라스틱 케이스] 입력 완료 +2024-10-14 16:27:01,106 - option.py:433 - default_logger - DEBUG - trans_option_15번째 translated_name : 3톤 두께 높이 플라스틱 케이스 + 렌치 +2024-10-14 16:27:01,107 - option.py:441 - default_logger - DEBUG - trans_option_15번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:01,439 - option.py:445 - default_logger - DEBUG - trans_option_15번째 translated_name : [3톤 두께 높이 플라스틱 케이스 + 렌치] 입력 완료 +2024-10-14 16:27:01,441 - option.py:433 - default_logger - DEBUG - trans_option_16번째 translated_name : 5톤 두께 높이 + 렌치 +2024-10-14 16:27:01,442 - option.py:441 - default_logger - DEBUG - trans_option_16번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:01,508 - option.py:445 - default_logger - DEBUG - trans_option_16번째 translated_name : [5톤 두께 높이 + 렌치] 입력 완료 +2024-10-14 16:27:01,509 - option.py:433 - default_logger - DEBUG - trans_option_17번째 translated_name : 2단 3톤 플라스틱 케이스 +2024-10-14 16:27:01,510 - option.py:441 - default_logger - DEBUG - trans_option_17번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:02,072 - option.py:445 - default_logger - DEBUG - trans_option_17번째 translated_name : [2단 3톤 플라스틱 케이스] 입력 완료 +2024-10-14 16:27:02,074 - option.py:433 - default_logger - DEBUG - trans_option_18번째 translated_name : 8톤 두께 높이 +2024-10-14 16:27:02,074 - option.py:441 - default_logger - DEBUG - trans_option_18번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:02,553 - option.py:445 - default_logger - DEBUG - trans_option_18번째 translated_name : [8톤 두께 높이] 입력 완료 +2024-10-14 16:27:02,554 - option.py:433 - default_logger - DEBUG - trans_option_19번째 translated_name : 5톤 두께 높이 플라스틱 케이스 + 렌치 +2024-10-14 16:27:02,554 - option.py:441 - default_logger - DEBUG - trans_option_19번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:02,755 - option.py:445 - default_logger - DEBUG - trans_option_19번째 translated_name : [5톤 두께 높이 플라스틱 케이스 + 렌치] 입력 완료 +2024-10-14 16:27:02,756 - option.py:433 - default_logger - DEBUG - trans_option_20번째 translated_name : 10톤 두께 높이 +2024-10-14 16:27:02,757 - option.py:441 - default_logger - DEBUG - trans_option_20번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:02,958 - option.py:445 - default_logger - DEBUG - trans_option_20번째 translated_name : [10톤 두께 높이] 입력 완료 +2024-10-14 16:27:02,959 - option.py:433 - default_logger - DEBUG - trans_option_21번째 translated_name : 2단 2톤 + 렌치 +2024-10-14 16:27:02,960 - option.py:441 - default_logger - DEBUG - trans_option_21번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:03,058 - option.py:445 - default_logger - DEBUG - trans_option_21번째 translated_name : [2단 2톤 + 렌치] 입력 완료 +2024-10-14 16:27:03,060 - option.py:433 - default_logger - DEBUG - trans_option_22번째 translated_name : 8톤 두께 높이 플라스틱 케이스 +2024-10-14 16:27:03,061 - option.py:441 - default_logger - DEBUG - trans_option_22번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:03,451 - option.py:445 - default_logger - DEBUG - trans_option_22번째 translated_name : [8톤 두께 높이 플라스틱 케이스] 입력 완료 +2024-10-14 16:27:03,452 - option.py:433 - default_logger - DEBUG - trans_option_23번째 translated_name : 2단 3톤 + 렌치 +2024-10-14 16:27:03,453 - option.py:441 - default_logger - DEBUG - trans_option_23번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:04,021 - option.py:445 - default_logger - DEBUG - trans_option_23번째 translated_name : [2단 3톤 + 렌치] 입력 완료 +2024-10-14 16:27:04,022 - option.py:433 - default_logger - DEBUG - trans_option_24번째 translated_name : 2단 2톤 플라스틱 케이스 + 렌치 +2024-10-14 16:27:04,023 - option.py:441 - default_logger - DEBUG - trans_option_24번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:04,430 - option.py:445 - default_logger - DEBUG - trans_option_24번째 translated_name : [2단 2톤 플라스틱 케이스 + 렌치] 입력 완료 +2024-10-14 16:27:04,431 - option.py:433 - default_logger - DEBUG - trans_option_25번째 translated_name : 10톤 두께 높이 플라스틱 케이스 +2024-10-14 16:27:04,431 - option.py:441 - default_logger - DEBUG - trans_option_25번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:04,510 - option.py:445 - default_logger - DEBUG - trans_option_25번째 translated_name : [10톤 두께 높이 플라스틱 케이스] 입력 완료 +2024-10-14 16:27:04,512 - option.py:433 - default_logger - DEBUG - trans_option_26번째 translated_name : 2단 3톤 플라스틱 케이스 + 렌치 +2024-10-14 16:27:04,512 - option.py:441 - default_logger - DEBUG - trans_option_26번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:04,756 - option.py:445 - default_logger - DEBUG - trans_option_26번째 translated_name : [2단 3톤 플라스틱 케이스 + 렌치] 입력 완료 +2024-10-14 16:27:04,758 - option.py:433 - default_logger - DEBUG - trans_option_27번째 translated_name : 12톤 두께 높이 +2024-10-14 16:27:04,758 - option.py:441 - default_logger - DEBUG - trans_option_27번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:04,964 - option.py:445 - default_logger - DEBUG - trans_option_27번째 translated_name : [12톤 두께 높이] 입력 완료 +2024-10-14 16:27:04,965 - option.py:433 - default_logger - DEBUG - trans_option_28번째 translated_name : 2단 4톤 두께 낮은 +2024-10-14 16:27:04,966 - option.py:441 - default_logger - DEBUG - trans_option_28번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:05,549 - option.py:445 - default_logger - DEBUG - trans_option_28번째 translated_name : [2단 4톤 두께 낮은] 입력 완료 +2024-10-14 16:27:05,550 - option.py:433 - default_logger - DEBUG - trans_option_29번째 translated_name : 2단 4톤 두께 높은 +2024-10-14 16:27:05,551 - option.py:441 - default_logger - DEBUG - trans_option_29번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:06,009 - option.py:445 - default_logger - DEBUG - trans_option_29번째 translated_name : [2단 4톤 두께 높은] 입력 완료 +2024-10-14 16:27:06,011 - option.py:433 - default_logger - DEBUG - trans_option_30번째 translated_name : 16톤 두께 높이 +2024-10-14 16:27:06,012 - option.py:441 - default_logger - DEBUG - trans_option_30번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:06,212 - option.py:445 - default_logger - DEBUG - trans_option_30번째 translated_name : [16톤 두께 높이] 입력 완료 +2024-10-14 16:27:06,213 - option.py:433 - default_logger - DEBUG - trans_option_31번째 translated_name : 2단 4톤 두께 낮은 플라스틱 케이스 +2024-10-14 16:27:06,215 - option.py:441 - default_logger - DEBUG - trans_option_31번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:06,443 - option.py:445 - default_logger - DEBUG - trans_option_31번째 translated_name : [2단 4톤 두께 낮은 플라스틱 케이스] 입력 완료 +2024-10-14 16:27:06,444 - option.py:433 - default_logger - DEBUG - trans_option_32번째 translated_name : 2단 6톤 두께 낮은 +2024-10-14 16:27:06,444 - option.py:441 - default_logger - DEBUG - trans_option_32번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:06,545 - option.py:445 - default_logger - DEBUG - trans_option_32번째 translated_name : [2단 6톤 두께 낮은] 입력 완료 +2024-10-14 16:27:06,546 - option.py:433 - default_logger - DEBUG - trans_option_33번째 translated_name : 2단 4톤 두께 높은 플라스틱 케이스 +2024-10-14 16:27:06,548 - option.py:441 - default_logger - DEBUG - trans_option_33번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:07,146 - option.py:445 - default_logger - DEBUG - trans_option_33번째 translated_name : [2단 4톤 두께 높은 플라스틱 케이스] 입력 완료 +2024-10-14 16:27:07,147 - option.py:433 - default_logger - DEBUG - trans_option_34번째 translated_name : 2단 6톤 두께 높은 +2024-10-14 16:27:07,147 - option.py:441 - default_logger - DEBUG - trans_option_34번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:07,599 - option.py:445 - default_logger - DEBUG - trans_option_34번째 translated_name : [2단 6톤 두께 높은] 입력 완료 +2024-10-14 16:27:07,600 - option.py:433 - default_logger - DEBUG - trans_option_35번째 translated_name : 20톤 두께 높이 +2024-10-14 16:27:07,600 - option.py:441 - default_logger - DEBUG - trans_option_35번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:07,685 - option.py:445 - default_logger - DEBUG - trans_option_35번째 translated_name : [20톤 두께 높이] 입력 완료 +2024-10-14 16:27:07,688 - option.py:433 - default_logger - DEBUG - trans_option_36번째 translated_name : 2단 8톤 두께 +2024-10-14 16:27:07,689 - option.py:441 - default_logger - DEBUG - trans_option_36번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:08,018 - option.py:445 - default_logger - DEBUG - trans_option_36번째 translated_name : [2단 8톤 두께] 입력 완료 +2024-10-14 16:27:08,018 - option.py:433 - default_logger - DEBUG - trans_option_37번째 translated_name : 30톤 두께 높이 +2024-10-14 16:27:08,019 - option.py:441 - default_logger - DEBUG - trans_option_37번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:08,089 - option.py:445 - default_logger - DEBUG - trans_option_37번째 translated_name : [30톤 두께 높이] 입력 완료 +2024-10-14 16:27:08,090 - option.py:433 - default_logger - DEBUG - trans_option_38번째 translated_name : 2단 10톤 두께 +2024-10-14 16:27:08,091 - option.py:441 - default_logger - DEBUG - trans_option_38번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:08,339 - option.py:445 - default_logger - DEBUG - trans_option_38번째 translated_name : [2단 10톤 두께] 입력 완료 +2024-10-14 16:27:08,340 - option.py:433 - default_logger - DEBUG - trans_option_39번째 translated_name : 32톤 두께 높이 +2024-10-14 16:27:08,341 - option.py:441 - default_logger - DEBUG - trans_option_39번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:08,959 - option.py:445 - default_logger - DEBUG - trans_option_39번째 translated_name : [32톤 두께 높이] 입력 완료 +2024-10-14 16:27:08,960 - option.py:433 - default_logger - DEBUG - trans_option_40번째 translated_name : 2단 12톤 두께 +2024-10-14 16:27:08,960 - option.py:441 - default_logger - DEBUG - trans_option_40번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:09,410 - option.py:445 - default_logger - DEBUG - trans_option_40번째 translated_name : [2단 12톤 두께] 입력 완료 +2024-10-14 16:27:09,411 - option.py:433 - default_logger - DEBUG - trans_option_41번째 translated_name : 2단 16톤 두께 +2024-10-14 16:27:09,412 - option.py:441 - default_logger - DEBUG - trans_option_41번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:09,608 - option.py:445 - default_logger - DEBUG - trans_option_41번째 translated_name : [2단 16톤 두께] 입력 완료 +2024-10-14 16:27:09,610 - option.py:433 - default_logger - DEBUG - trans_option_42번째 translated_name : 2단 20톤 두께 +2024-10-14 16:27:09,610 - option.py:441 - default_logger - DEBUG - trans_option_42번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:09,876 - option.py:445 - default_logger - DEBUG - trans_option_42번째 translated_name : [2단 20톤 두께] 입력 완료 +2024-10-14 16:27:09,878 - option.py:433 - default_logger - DEBUG - trans_option_43번째 translated_name : 50톤 두께 높이 +2024-10-14 16:27:09,879 - option.py:441 - default_logger - DEBUG - trans_option_43번째 번역옵션 필드 : JSHandle@ +2024-10-14 16:27:10,089 - option.py:445 - default_logger - DEBUG - trans_option_43번째 translated_name : [50톤 두께 높이] 입력 완료 +2024-10-14 16:27:10,090 - option.py:457 - default_logger - DEBUG - selected_translated_options 일괄 업데이트: {'立式国标2吨 限量抢': '2톤 국표', '3吨标准': '3톤 표준', '2吨加厚(带塑盒)': '2톤 두께 플라스틱 케이스', '3吨加厚加高': '3톤 두께 높이', '3吨标准(带塑盒)': '3톤 표준 플라스틱 케이스', '3吨加厚加高(带塑盒)': '3톤 두께 높이 플라스틱 케이스', '5吨加厚加高': '5톤 두께 높이', '3吨标准+扳手': '3톤 표준 + 렌치', '(双节液压)2吨 轿车推荐': '2단 2톤', '5吨加厚加高(带塑盒)': '5톤 두께 높이 플라스틱 케이스', '3吨加厚加高+扳手': '3톤 두께 높이 + 렌치', '3吨标准(带塑盒)+扳手': '3톤 표준 플라스틱 케이스 + 렌치', '(双节液压)3吨 SUV推荐': '2단 3톤', '(双节液压)2吨(带塑盒) 轿车推荐款': '2단 2톤 플라스틱 케이스', '3吨加厚加高(带塑盒)+扳手': '3톤 두께 높이 플라스틱 케이스 + 렌치', '5吨加厚加高+扳手': '5톤 두께 높이 + 렌치', '(双节液压)3吨(带塑盒)SUV推荐': '2단 3톤 플라스틱 케이스', '8吨加厚加高': '8톤 두께 높이', '5吨加厚加高(带塑盒)+扳手': '5톤 두께 높이 플라스틱 케이스 + 렌치', '10吨加厚加高': '10톤 두께 높이', '(双节液压)2吨+扳手': '2단 2톤 + 렌치', '8吨加厚加高(带塑盒)': '8톤 두께 높이 플라스틱 케이스', '(双节液压)3吨 +扳手': '2단 3톤 + 렌치', '(双节液压)2吨(带塑盒)+扳手': '2단 2톤 플라스틱 케이스 + 렌치', '10吨加厚加高(带塑盒)': '10톤 두께 높이 플라스틱 케이스', '(双节液压)3吨(带塑盒)+扳手': '2단 3톤 플라스틱 케이스 + 렌치', '12吨加厚加高': '12톤 두께 높이', '(双节液压)4吨加厚低版': '2단 4톤 두께 낮은', '(双节液压)4吨加厚高版': '2단 4톤 두께 높은', '16吨加厚加高': '16톤 두께 높이', '(双节液压)4吨加厚低版(带塑盒)': '2단 4톤 두께 낮은 플라스틱 케이스', '(双节液压)6吨加厚低版': '2단 6톤 두께 낮은', '(双节液压)4吨加厚高版(带塑盒)': '2단 4톤 두께 높은 플라스틱 케이스', '(双节液压)6吨加厚高版': '2단 6톤 두께 높은', '20吨加厚加高': '20톤 두께 높이', '(双节液压)8吨加厚': '2단 8톤 두께', '30吨加厚加高': '30톤 두께 높이', '(双节液压)10吨加厚': '2단 10톤 두께', '32吨加厚加高': '32톤 두께 높이', '(双节液压)12吨加厚': '2단 12톤 두께', '(双节液压)16吨加厚': '2단 16톤 두께', '(双节液压)20吨加厚': '2단 20톤 두께', '50吨加厚加高': '50톤 두께 높이'} +2024-10-14 16:27:10,093 - option.py:197 - default_logger - DEBUG - [VertexAI] 를 이용한 옵션번역 성공 +2024-10-14 16:27:10,094 - option.py:201 - default_logger - DEBUG - 옵션 필터링 및 조정 : True +2024-10-14 16:27:10,095 - option.py:85 - default_logger - DEBUG - 최저옵션: 89955.81395348837, 표준편차: 21513.80630076375 +2024-10-14 16:27:10,096 - option.py:90 - default_logger - DEBUG - Option 67600.0 z-score: -1.03913801402473 +2024-10-14 16:27:10,096 - option.py:90 - default_logger - DEBUG - Option 69700.0 z-score: -0.9415262771408923 +2024-10-14 16:27:10,098 - option.py:90 - default_logger - DEBUG - Option 70000.0 z-score: -0.9275817433003442 +2024-10-14 16:27:10,098 - option.py:90 - default_logger - DEBUG - Option 71200.0 z-score: -0.8718036079381511 +2024-10-14 16:27:10,099 - option.py:90 - default_logger - DEBUG - Option 72000.0 z-score: -0.8346181843633559 +2024-10-14 16:27:10,099 - option.py:90 - default_logger - DEBUG - Option 73500.0 z-score: -0.7648955151606147 +2024-10-14 16:27:10,100 - option.py:90 - default_logger - DEBUG - Option 74700.0 z-score: -0.7091173797984217 +2024-10-14 16:27:10,101 - option.py:90 - default_logger - DEBUG - Option 75000.0 z-score: -0.6951728459578735 +2024-10-14 16:27:10,101 - option.py:90 - default_logger - DEBUG - Option 75700.0 z-score: -0.6626356003299276 +2024-10-14 16:27:10,102 - option.py:90 - default_logger - DEBUG - Option 76700.0 z-score: -0.6161538208614334 +2024-10-14 16:27:10,102 - option.py:90 - default_logger - DEBUG - Option 76700.0 z-score: -0.6161538208614334 +2024-10-14 16:27:10,103 - option.py:90 - default_logger - DEBUG - Option 77000.0 z-score: -0.6022092870208853 +2024-10-14 16:27:10,103 - option.py:90 - default_logger - DEBUG - Option 77700.0 z-score: -0.5696720413929394 +2024-10-14 16:27:10,104 - option.py:90 - default_logger - DEBUG - Option 78200.0 z-score: -0.5464311516586923 +2024-10-14 16:27:10,104 - option.py:90 - default_logger - DEBUG - Option 78700.0 z-score: -0.5231902619244453 +2024-10-14 16:27:10,105 - option.py:90 - default_logger - DEBUG - Option 79400.0 z-score: -0.4906530162964993 +2024-10-14 16:27:10,106 - option.py:90 - default_logger - DEBUG - Option 80000.0 z-score: -0.4627639486154029 +2024-10-14 16:27:10,106 - option.py:90 - default_logger - DEBUG - Option 80900.0 z-score: -0.42093034709375815 +2024-10-14 16:27:10,106 - option.py:90 - default_logger - DEBUG - Option 81700.0 z-score: -0.3837449235189629 +2024-10-14 16:27:10,108 - option.py:90 - default_logger - DEBUG - Option 82200.0 z-score: -0.3605040337847158 +2024-10-14 16:27:10,109 - option.py:90 - default_logger - DEBUG - Option 82200.0 z-score: -0.3605040337847158 +2024-10-14 16:27:10,109 - option.py:90 - default_logger - DEBUG - Option 84000.0 z-score: -0.2768368307414264 +2024-10-14 16:27:10,109 - option.py:90 - default_logger - DEBUG - Option 84500.0 z-score: -0.2535959410071793 +2024-10-14 16:27:10,111 - option.py:90 - default_logger - DEBUG - Option 84700.0 z-score: -0.2442995851134805 +2024-10-14 16:27:10,112 - option.py:90 - default_logger - DEBUG - Option 84900.0 z-score: -0.23500322921978167 +2024-10-14 16:27:10,112 - option.py:90 - default_logger - DEBUG - Option 86000.0 z-score: -0.18387327180443813 +2024-10-14 16:27:10,113 - option.py:90 - default_logger - DEBUG - Option 86500.0 z-score: -0.16063238207019107 +2024-10-14 16:27:10,114 - option.py:90 - default_logger - DEBUG - Option 88200.0 z-score: -0.08161335697375106 +2024-10-14 16:27:10,114 - option.py:90 - default_logger - DEBUG - Option 91700.0 z-score: 0.08107287116597837 +2024-10-14 16:27:10,115 - option.py:90 - default_logger - DEBUG - Option 92200.0 z-score: 0.10431376090022544 +2024-10-14 16:27:10,115 - option.py:90 - default_logger - DEBUG - Option 92200.0 z-score: 0.10431376090022544 +2024-10-14 16:27:10,117 - option.py:90 - default_logger - DEBUG - Option 93500.0 z-score: 0.16474007420926778 +2024-10-14 16:27:10,117 - option.py:90 - default_logger - DEBUG - Option 95700.0 z-score: 0.26699998903995487 +2024-10-14 16:27:10,118 - option.py:90 - default_logger - DEBUG - Option 96000.0 z-score: 0.2809445228805031 +2024-10-14 16:27:10,118 - option.py:90 - default_logger - DEBUG - Option 98700.0 z-score: 0.40644532744543727 +2024-10-14 16:27:10,118 - option.py:90 - default_logger - DEBUG - Option 100400.0 z-score: 0.48546435254187725 +2024-10-14 16:27:10,119 - option.py:90 - default_logger - DEBUG - Option 105700.0 z-score: 0.7318177837248961 +2024-10-14 16:27:10,119 - option.py:90 - default_logger - DEBUG - Option 108700.0 z-score: 0.8712631221303785 +2024-10-14 16:27:10,121 - option.py:90 - default_logger - DEBUG - Option 114400.0 z-score: 1.136209265100795 +2024-10-14 16:27:10,121 - option.py:90 - default_logger - DEBUG - Option 123200.0 z-score: 1.5452489244235432 +2024-10-14 16:27:10,122 - option.py:90 - default_logger - DEBUG - Option 132400.0 z-score: 1.9728812955336892 +2024-10-14 16:27:10,122 - option.py:90 - default_logger - DEBUG - Option 143100.0 z-score: 2.470236335846576 +2024-10-14 16:27:10,123 - option.py:90 - default_logger - DEBUG - Option 180600.0 z-score: 4.213303065915106 +2024-10-14 16:27:10,123 - option.py:94 - default_logger - DEBUG - Z-스코어 필터링: [71200.0, 72000.0, 73500.0, 74700.0, 75000.0, 75700.0, 76700.0, 76700.0, 77000.0, 77700.0, 78200.0, 78700.0, 79400.0, 80000.0, 80900.0, 81700.0, 82200.0, 82200.0, 84000.0, 84500.0, 84700.0, 84900.0, 86000.0, 86500.0, 88200.0, 91700.0, 92200.0, 92200.0, 93500.0, 95700.0, 96000.0, 98700.0, 100400.0, 105700.0, 108700.0, 114400.0] +2024-10-14 16:27:10,124 - option.py:102 - default_logger - DEBUG - 필터링된 본품옵션의 최저가: 71200.0, 마켓상한선: 142400.0 +2024-10-14 16:27:10,125 - option.py:107 - default_logger - DEBUG - 최종 선택된 옵션: [71200.0, 72000.0, 73500.0, 74700.0, 75000.0, 75700.0, 76700.0, 76700.0, 77000.0, 77700.0, 78200.0, 78700.0, 79400.0, 80000.0, 80900.0, 81700.0, 82200.0, 82200.0, 84000.0, 84500.0, 84700.0, 84900.0, 86000.0, 86500.0, 88200.0, 91700.0, 92200.0, 92200.0, 93500.0, 95700.0, 96000.0, 98700.0, 100400.0, 105700.0, 108700.0, 114400.0] +2024-10-14 16:27:29,426 - option.py:524 - default_logger - DEBUG - 옵션 체크 상태 조정 완료. +2024-10-14 16:27:29,426 - option.py:205 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 16:27:29,426 - option.py:534 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 16:27:30,894 - option.py:134 - default_logger - DEBUG - 선택된 옵션 저장 완료: [('2톤 국표', 0), ('3톤 표준', 0), ('2톤 두께 플라스틱 케이스', 0), ('2단 12톤 두께', 0), ('2단 16톤 두께', 0), ('2단 20톤 두께', 0), ('50톤 두께 높이', 0)] +2024-10-14 16:27:30,896 - option.py:236 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 16:27:30,896 - option.py:240 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 16:27:31,386 - option.py:243 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 16:27:31,922 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 16:27:31,922 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 16:27:32,571 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 16:27:32,573 - gui.py:754 - default_logger - DEBUG - 3/[31]개 상품 수정 완료. +2024-10-14 16:27:32,574 - gui.py:699 - default_logger - DEBUG - 4/20: 세부사항 수정 작업 중... +2024-10-14 16:27:32,649 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 16:27:33,093 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 16:27:33,242 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 16:27:33,795 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 16:27:33,805 - title.py:94 - default_logger - DEBUG - 원본 상품명: 直销SCYY液压泵站货梯升降机传菜机提升机配件动力单元油泵电机 +2024-10-14 16:27:33,810 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 16:27:33,811 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 16:27:33,822 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 16:27:33,827 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 16:27:33,842 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 16:27:33,843 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 16:27:34,615 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 16:27:34,616 - option.py:148 - default_logger - DEBUG - 상품명: 直销SCYY液压泵站货梯升降机传菜机提升机配件动力单元油泵电机에 대한 옵션을 처리 중... +2024-10-14 16:27:36,349 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 17:08:07,689 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 17:08:07,689 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 17:08:07,699 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 17:08:07,699 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 17:08:07,699 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 17:08:07,713 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 17:08:07,713 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 17:08:07,713 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:08:07,728 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 17:08:07,806 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:08:07,806 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 17:08:07,806 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 17:08:07,806 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 17:08:07,806 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:08:07,806 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 17:08:07,806 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 17:08:07,806 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 17:08:07,806 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 17:08:07,806 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 17:08:10,801 - gui.py:449 - default_logger - DEBUG - 옵션명 AI번역 버튼 - 활성화 선택 +2024-10-14 17:08:11,024 - gui.py:449 - default_logger - DEBUG - 옵션 Auto선택 버튼 - 활성화 선택 +2024-10-14 17:08:12,006 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 17:08:12,006 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 17:08:12,009 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 17:08:12,009 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 17:08:16,441 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 17:08:16,452 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 17:08:16,454 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 264804 +2024-10-14 17:08:16,454 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 17:08:16,698 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 17:08:18,447 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 17:08:18,645 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 17:08:18,647 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 17:08:18,970 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 17:08:18,970 - option.py:39 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:08:18,972 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:08:18,973 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:08:22,102 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 17:08:22,104 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 17:08:22,105 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 17:08:22,758 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 17:08:22,763 - browser_control.py:173 - default_logger - DEBUG - 총 상품수 확인: 총 31개 상품 +2024-10-14 17:08:22,764 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 17:08:22,769 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 17:08:22,770 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 17:08:22,808 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 17:08:23,399 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 17:08:23,953 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 17:08:23,970 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 17:08:24,171 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 17:08:24,171 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 17:08:24,194 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 17:08:24,201 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 17:08:24,213 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 17:08:24,215 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 17:08:24,848 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 17:08:24,849 - option.py:152 - default_logger - DEBUG - 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2에 대한 옵션을 처리 중... +2024-10-14 17:08:26,862 - option.py:266 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 17:08:26,874 - option.py:278 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 17:08:26,874 - option.py:558 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 17:08:27,258 - option.py:181 - default_logger - DEBUG - 옵션 AI번역 : True +2024-10-14 17:08:27,292 - option.py:295 - default_logger - DEBUG - 총 옵션 갯수: 18 +2024-10-14 17:08:27,326 - option.py:330 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,367 - option.py:330 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,408 - option.py:330 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,441 - option.py:330 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,476 - option.py:330 - default_logger - DEBUG - 5번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,528 - option.py:330 - default_logger - DEBUG - 6번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,559 - option.py:330 - default_logger - DEBUG - 7번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,612 - option.py:330 - default_logger - DEBUG - 8번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,674 - option.py:330 - default_logger - DEBUG - 9번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,718 - option.py:330 - default_logger - DEBUG - 10번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,752 - option.py:330 - default_logger - DEBUG - 11번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,809 - option.py:330 - default_logger - DEBUG - 12번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,859 - option.py:330 - default_logger - DEBUG - 13번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,900 - option.py:330 - default_logger - DEBUG - 14번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,941 - option.py:330 - default_logger - DEBUG - 15번째 옵션 정보 수집 완료 +2024-10-14 17:08:27,981 - option.py:330 - default_logger - DEBUG - 16번째 옵션 정보 수집 완료 +2024-10-14 17:08:28,025 - option.py:330 - default_logger - DEBUG - 17번째 옵션 정보 수집 완료 +2024-10-14 17:08:28,075 - option.py:330 - default_logger - DEBUG - 18번째 옵션 정보 수집 완료 +2024-10-14 17:08:28,075 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C4-LW', 'origin_option_7': 'DSG-02-3C5', 'origin_option_8': 'DSG-03-3C3', 'origin_option_9': 'DSG-02-3C60-DL 电磁换向阀', 'origin_option_10': 'DSG-02-3C6-DC24', 'origin_option_11': 'DSG-02-3C6-DC24-50', 'origin_option_12': 'DSG-02-3C6-AC220V', 'origin_option_13': 'DSG-02-3C9', 'origin_option_14': 'DSG-02-3C10', 'origin_option_15': 'DSG-02-3C11', 'origin_option_16': 'DSG-02-3C12', 'origin_option_17': '提示勿拍:其他型号规格请联系客服', 'origin_option_18': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 17:08:28,075 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-N-50 +2024-10-14 17:08:28,075 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-N-50 +2024-10-14 17:08:28,075 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-A220 +2024-10-14 17:08:28,075 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-A220 +2024-10-14 17:08:28,075 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-DL-D2 +2024-10-14 17:08:28,075 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-DL-D2 +2024-10-14 17:08:28,075 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-D24V +2024-10-14 17:08:28,075 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-D24V +2024-10-14 17:08:28,075 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-A220V +2024-10-14 17:08:28,075 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-A220V +2024-10-14 17:08:28,085 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-LW +2024-10-14 17:08:28,085 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-LW +2024-10-14 17:08:28,086 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C5 +2024-10-14 17:08:28,087 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C5 +2024-10-14 17:08:28,087 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-03-3C3 +2024-10-14 17:08:28,088 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-03-3C3 +2024-10-14 17:08:28,088 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C60-DL 电磁换向阀 +2024-10-14 17:08:28,089 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C60-DL 电磁换向阀 +2024-10-14 17:08:28,089 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DC24 +2024-10-14 17:08:28,091 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DC24 +2024-10-14 17:08:28,091 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DC24-50 +2024-10-14 17:08:28,092 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DC24-50 +2024-10-14 17:08:28,092 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-AC220V +2024-10-14 17:08:28,093 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-AC220V +2024-10-14 17:08:28,093 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C9 +2024-10-14 17:08:28,093 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C9 +2024-10-14 17:08:28,095 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C10 +2024-10-14 17:08:28,095 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C10 +2024-10-14 17:08:28,095 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C11 +2024-10-14 17:08:28,097 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C11 +2024-10-14 17:08:28,097 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C12 +2024-10-14 17:08:28,098 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C12 +2024-10-14 17:08:28,099 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 提示勿拍:其他型号规格请联系客服 +2024-10-14 17:08:28,099 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 提示勿拍其他型号规格请联系客服 +2024-10-14 17:08:28,099 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 17:08:28,099 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 17:08:28,099 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C4-LW', 'origin_option_7': 'DSG-02-3C5', 'origin_option_8': 'DSG-03-3C3', 'origin_option_9': 'DSG-02-3C60-DL 电磁换向阀', 'origin_option_10': 'DSG-02-3C6-DC24', 'origin_option_11': 'DSG-02-3C6-DC24-50', 'origin_option_12': 'DSG-02-3C6-AC220V', 'origin_option_13': 'DSG-02-3C9', 'origin_option_14': 'DSG-02-3C10', 'origin_option_15': 'DSG-02-3C11', 'origin_option_16': 'DSG-02-3C12', 'origin_option_17': '提示勿拍其他型号规格请联系客服', 'origin_option_18': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 17:08:28,102 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "DSG-02-3C2-N-50", "origin_option_2": "DSG-02-3C2-A220", "origin_option_3": "DSG-02-3C2-DL-D2", "origin_option_4": "DSG-02-3C4-DL-D24V", "origin_option_5": "DSG-02-3C4-DL-A220V", "origin_option_6": "DSG-02-3C4-LW", "origin_option_7": "DSG-02-3C5", "origin_option_8": "DSG-03-3C3", "origin_option_9": "DSG-02-3C60-DL 电磁换向阀", "origin_option_10": "DSG-02-3C6-DC24", "origin_option_11": "DSG-02-3C6-DC24-50", "origin_option_12": "DSG-02-3C6-AC220V", "origin_option_13": "DSG-02-3C9", "origin_option_14": "DSG-02-3C10", "origin_option_15": "DSG-02-3C11", "origin_option_16": "DSG-02-3C12", "origin_option_17": "提示勿拍其他型号规格请联系客服", "origin_option_18": "DSG-02-3C6-DL 电磁换向阀"} +2024-10-14 17:08:28,104 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 17:08:30,251 - vertexAI.py:144 - default_logger - DEBUG - 모델 응답: ```json +{ +"trans_option_1": "3C2-N-50", +"trans_option_2": "3C2-AC220V", +"trans_option_3": "3C2-D2", +"trans_option_4": "3C4-D24V", +"trans_option_5": "3C4-AC220V", +"trans_option_6": "3C4-LW", +"trans_option_7": "3C5", +"trans_option_8": "3C3", +"trans_option_9": "3C60-D2", +"trans_option_10": "3C6-DC24", +"trans_option_11": "3C6-DC24-50", +"trans_option_12": "3C6-AC220V", +"trans_option_13": "3C9", +"trans_option_14": "3C10", +"trans_option_15": "3C11", +"trans_option_16": "3C12" +} +``` +2024-10-14 17:08:30,252 - vertexAI.py:151 - default_logger - DEBUG - 응답에서 추출된 JSON 텍스트: { +"trans_option_1": "3C2-N-50", +"trans_option_2": "3C2-AC220V", +"trans_option_3": "3C2-D2", +"trans_option_4": "3C4-D24V", +"trans_option_5": "3C4-AC220V", +"trans_option_6": "3C4-LW", +"trans_option_7": "3C5", +"trans_option_8": "3C3", +"trans_option_9": "3C60-D2", +"trans_option_10": "3C6-DC24", +"trans_option_11": "3C6-DC24-50", +"trans_option_12": "3C6-AC220V", +"trans_option_13": "3C9", +"trans_option_14": "3C10", +"trans_option_15": "3C11", +"trans_option_16": "3C12" +} +2024-10-14 17:08:30,253 - vertexAI.py:154 - default_logger - DEBUG - 번역된 데이터: {'trans_option_1': '3C2-N-50', 'trans_option_2': '3C2-AC220V', 'trans_option_3': '3C2-D2', 'trans_option_4': '3C4-D24V', 'trans_option_5': '3C4-AC220V', 'trans_option_6': '3C4-LW', 'trans_option_7': '3C5', 'trans_option_8': '3C3', 'trans_option_9': '3C60-D2', 'trans_option_10': '3C6-DC24', 'trans_option_11': '3C6-DC24-50', 'trans_option_12': '3C6-AC220V', 'trans_option_13': '3C9', 'trans_option_14': '3C10', 'trans_option_15': '3C11', 'trans_option_16': '3C12'} +2024-10-14 17:08:30,255 - option.py:189 - default_logger - DEBUG - 번역된 옵션 입력 +2024-10-14 17:08:30,256 - option.py:440 - default_logger - DEBUG - trans_option_1번째 translated_name : 3C2-N-50 +2024-10-14 17:08:30,256 - option.py:448 - default_logger - DEBUG - trans_option_1번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:30,279 - option.py:452 - default_logger - INFO - trans_option_1번째 translated_name : [3C2-N-50] 입력 완료 +2024-10-14 17:08:30,282 - option.py:440 - default_logger - DEBUG - trans_option_2번째 translated_name : 3C2-AC220V +2024-10-14 17:08:30,282 - option.py:448 - default_logger - DEBUG - trans_option_2번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:30,313 - option.py:452 - default_logger - INFO - trans_option_2번째 translated_name : [3C2-AC220V] 입력 완료 +2024-10-14 17:08:30,314 - option.py:440 - default_logger - DEBUG - trans_option_3번째 translated_name : 3C2-D2 +2024-10-14 17:08:30,314 - option.py:448 - default_logger - DEBUG - trans_option_3번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:30,358 - option.py:452 - default_logger - INFO - trans_option_3번째 translated_name : [3C2-D2] 입력 완료 +2024-10-14 17:08:30,358 - option.py:440 - default_logger - DEBUG - trans_option_4번째 translated_name : 3C4-D24V +2024-10-14 17:08:30,361 - option.py:448 - default_logger - DEBUG - trans_option_4번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:30,418 - option.py:452 - default_logger - INFO - trans_option_4번째 translated_name : [3C4-D24V] 입력 완료 +2024-10-14 17:08:30,420 - option.py:440 - default_logger - DEBUG - trans_option_5번째 translated_name : 3C4-AC220V +2024-10-14 17:08:30,420 - option.py:448 - default_logger - DEBUG - trans_option_5번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:30,465 - option.py:452 - default_logger - INFO - trans_option_5번째 translated_name : [3C4-AC220V] 입력 완료 +2024-10-14 17:08:30,466 - option.py:440 - default_logger - DEBUG - trans_option_6번째 translated_name : 3C4-LW +2024-10-14 17:08:30,468 - option.py:448 - default_logger - DEBUG - trans_option_6번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:30,527 - option.py:452 - default_logger - INFO - trans_option_6번째 translated_name : [3C4-LW] 입력 완료 +2024-10-14 17:08:30,528 - option.py:440 - default_logger - DEBUG - trans_option_7번째 translated_name : 3C5 +2024-10-14 17:08:30,529 - option.py:448 - default_logger - DEBUG - trans_option_7번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:30,935 - option.py:452 - default_logger - INFO - trans_option_7번째 translated_name : [3C5] 입력 완료 +2024-10-14 17:08:30,936 - option.py:440 - default_logger - DEBUG - trans_option_8번째 translated_name : 3C3 +2024-10-14 17:08:30,936 - option.py:448 - default_logger - DEBUG - trans_option_8번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:31,164 - option.py:452 - default_logger - INFO - trans_option_8번째 translated_name : [3C3] 입력 완료 +2024-10-14 17:08:31,165 - option.py:440 - default_logger - DEBUG - trans_option_9번째 translated_name : 3C60-D2 +2024-10-14 17:08:31,167 - option.py:448 - default_logger - DEBUG - trans_option_9번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:31,271 - option.py:452 - default_logger - INFO - trans_option_9번째 translated_name : [3C60-D2] 입력 완료 +2024-10-14 17:08:31,271 - option.py:440 - default_logger - DEBUG - trans_option_10번째 translated_name : 3C6-DC24 +2024-10-14 17:08:31,271 - option.py:448 - default_logger - DEBUG - trans_option_10번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:31,318 - option.py:452 - default_logger - INFO - trans_option_10번째 translated_name : [3C6-DC24] 입력 완료 +2024-10-14 17:08:31,319 - option.py:440 - default_logger - DEBUG - trans_option_11번째 translated_name : 3C6-DC24-50 +2024-10-14 17:08:31,319 - option.py:448 - default_logger - DEBUG - trans_option_11번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:31,366 - option.py:452 - default_logger - INFO - trans_option_11번째 translated_name : [3C6-DC24-50] 입력 완료 +2024-10-14 17:08:31,367 - option.py:440 - default_logger - DEBUG - trans_option_12번째 translated_name : 3C6-AC220V +2024-10-14 17:08:31,368 - option.py:448 - default_logger - DEBUG - trans_option_12번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:31,406 - option.py:452 - default_logger - INFO - trans_option_12번째 translated_name : [3C6-AC220V] 입력 완료 +2024-10-14 17:08:31,407 - option.py:440 - default_logger - DEBUG - trans_option_13번째 translated_name : 3C9 +2024-10-14 17:08:31,408 - option.py:448 - default_logger - DEBUG - trans_option_13번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:31,451 - option.py:452 - default_logger - INFO - trans_option_13번째 translated_name : [3C9] 입력 완료 +2024-10-14 17:08:31,452 - option.py:440 - default_logger - DEBUG - trans_option_14번째 translated_name : 3C10 +2024-10-14 17:08:31,453 - option.py:448 - default_logger - DEBUG - trans_option_14번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:31,506 - option.py:452 - default_logger - INFO - trans_option_14번째 translated_name : [3C10] 입력 완료 +2024-10-14 17:08:31,507 - option.py:440 - default_logger - DEBUG - trans_option_15번째 translated_name : 3C11 +2024-10-14 17:08:31,507 - option.py:448 - default_logger - DEBUG - trans_option_15번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:31,540 - option.py:452 - default_logger - INFO - trans_option_15번째 translated_name : [3C11] 입력 완료 +2024-10-14 17:08:31,542 - option.py:440 - default_logger - DEBUG - trans_option_16번째 translated_name : 3C12 +2024-10-14 17:08:31,542 - option.py:448 - default_logger - DEBUG - trans_option_16번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:08:31,576 - option.py:452 - default_logger - INFO - trans_option_16번째 translated_name : [3C12] 입력 완료 +2024-10-14 17:08:31,578 - option.py:464 - default_logger - DEBUG - selected_translated_options 일괄 업데이트: {'DSG-02-3C2-N-50': '3C2-N-50', 'DSG-02-3C2-A220': '3C2-AC220V', 'DSG-02-3C2-DL-D2': '3C2-D2', 'DSG-02-3C4-DL-D24V': '3C4-D24V', 'DSG-02-3C4-DL-A220V': '3C4-AC220V', 'DSG-02-3C4-LW': '3C4-LW', 'DSG-02-3C5': '3C5', 'DSG-03-3C3': '3C3', 'DSG-02-3C60-DL 电磁换向阀': '3C60-D2', 'DSG-02-3C6-DC24': '3C6-DC24', 'DSG-02-3C6-DC24-50': '3C6-DC24-50', 'DSG-02-3C6-AC220V': '3C6-AC220V', 'DSG-02-3C9': '3C9', 'DSG-02-3C10': '3C10', 'DSG-02-3C11': '3C11', 'DSG-02-3C12': '3C12'} +2024-10-14 17:08:31,578 - option.py:204 - default_logger - DEBUG - [VertexAI] 를 이용한 옵션번역 성공 +2024-10-14 17:08:31,578 - option.py:208 - default_logger - DEBUG - 옵션 필터링 및 조정 : True +2024-10-14 17:08:31,590 - option.py:85 - default_logger - DEBUG - 최저옵션: 148555.55555555556, 표준편차: 22289.066134223805 +2024-10-14 17:08:31,591 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:08:31,592 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:08:31,592 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:08:31,593 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:08:31,593 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:08:31,595 - option.py:95 - default_logger - DEBUG - Option 147000 z-score: -0.06979007313218386 +2024-10-14 17:08:31,595 - option.py:95 - default_logger - DEBUG - Option 147000 z-score: -0.06979007313218386 +2024-10-14 17:08:31,595 - option.py:95 - default_logger - DEBUG - Option 154000 z-score: 0.2442652559626422 +2024-10-14 17:08:31,596 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:08:31,596 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:08:31,596 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:08:31,598 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:08:31,600 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:08:31,600 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:08:31,600 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:08:31,601 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:08:31,601 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:08:31,601 - option.py:95 - default_logger - DEBUG - Option 201000 z-score: 2.3529224655993315 +2024-10-14 17:08:31,601 - option.py:99 - default_logger - DEBUG - Z-스코어 필터링: [147000, 147000, 154000, 160000, 160000, 160000, 160000, 160000, 160000, 160000, 160000, 160000] +2024-10-14 17:08:31,604 - option.py:107 - default_logger - DEBUG - 필터링된 본품옵션의 최저가: 147000, 마켓상한선: 294000 +2024-10-14 17:08:31,605 - option.py:112 - default_logger - DEBUG - 최종 선택된 옵션: [('DSG-02-3C4-LW', 147000), ('DSG-02-3C5', 147000), ('DSG-03-3C3', 154000), ('DSG-02-3C60-DL 电磁换向阀', 160000), ('DSG-02-3C6-DC24', 160000), ('DSG-02-3C6-DC24-50', 160000), ('DSG-02-3C6-AC220V', 160000), ('DSG-02-3C9', 160000), ('DSG-02-3C10', 160000), ('DSG-02-3C11', 160000), ('DSG-02-3C12', 160000), ('提示勿拍:其他型号规格请联系客服', 160000)] +2024-10-14 17:08:31,614 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-N-50, 필터링된 옵션에 포함 여부: False +2024-10-14 17:08:31,627 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-A220, 필터링된 옵션에 포함 여부: False +2024-10-14 17:08:31,640 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-DL-D2, 필터링된 옵션에 포함 여부: False +2024-10-14 17:08:31,648 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C4-DL-D24V, 필터링된 옵션에 포함 여부: False +2024-10-14 17:08:31,658 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C4-DL-A220V, 필터링된 옵션에 포함 여부: False +2024-10-14 17:08:31,673 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C4-LW, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:32,029 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C5, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:32,273 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-03-3C3, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:32,559 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C60-DL 电磁换向阀, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:33,110 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-DC24, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:33,390 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-DC24-50, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:33,727 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-AC220V, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:33,995 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C9, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:34,230 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C10, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:34,508 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C11, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:34,740 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C12, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:35,006 - option.py:537 - default_logger - DEBUG - 옵션 이름: 提示勿拍:其他型号规格请联系客服, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:35,274 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-DL 电磁换向阀, 필터링된 옵션에 포함 여부: False +2024-10-14 17:08:35,274 - option.py:548 - default_logger - DEBUG - 옵션 체크 상태 조정 완료. +2024-10-14 17:08:35,274 - option.py:212 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 17:08:35,274 - option.py:141 - default_logger - ERROR - 선택된 옵션 저장 중 오류 발생: list indices must be integers or slices, not str +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 120, in store_selected_options + total_options_count = len([self.option_info]['original_names']) + ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ +TypeError: list indices must be integers or slices, not str +2024-10-14 17:08:35,274 - option.py:243 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 17:08:35,282 - option.py:247 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 17:08:35,563 - option.py:250 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 17:08:35,907 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 17:08:35,909 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 17:08:36,316 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 17:08:36,317 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 17:08:36,318 - gui.py:699 - default_logger - DEBUG - 2/20: 세부사항 수정 작업 중... +2024-10-14 17:08:36,418 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 17:08:36,828 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 17:08:37,489 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 17:08:37,506 - title.py:94 - default_logger - DEBUG - 원본 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机 +2024-10-14 17:08:37,507 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 17:08:37,507 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 17:08:37,519 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 17:08:37,523 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 17:08:37,537 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 17:08:37,537 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 17:08:37,984 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 17:08:37,986 - option.py:152 - default_logger - DEBUG - 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机에 대한 옵션을 처리 중... +2024-10-14 17:08:39,962 - option.py:266 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 17:08:39,978 - option.py:278 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 17:08:39,978 - option.py:558 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 17:08:40,055 - option.py:181 - default_logger - DEBUG - 옵션 AI번역 : True +2024-10-14 17:08:40,072 - option.py:295 - default_logger - DEBUG - 총 옵션 갯수: 5 +2024-10-14 17:08:40,130 - option.py:330 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 17:08:40,171 - option.py:330 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 17:08:40,249 - option.py:330 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 17:08:40,304 - option.py:330 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 17:08:40,347 - option.py:330 - default_logger - DEBUG - 5번째 옵션 정보 수집 완료 +2024-10-14 17:08:40,347 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': '香水 小样压盖机', 'origin_option_2': '香水瓶 中套压盖机 适合13MM 15MM盖子', 'origin_option_3': '喷雾瓶 卡扣式压盖机', 'origin_option_4': '中套压盖机 20MM瓶口专用 适合 20MM 瓶口', 'origin_option_5': '小样分装+香水瓶卡扣 两种压头 13 15MM中盖'} +2024-10-14 17:08:40,347 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 香水 小样压盖机 +2024-10-14 17:08:40,347 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 香水 小样压盖机 +2024-10-14 17:08:40,347 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 香水瓶 中套压盖机 适合13MM 15MM盖子 +2024-10-14 17:08:40,347 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 香水瓶 中套压盖机 适合13MM 15MM盖子 +2024-10-14 17:08:40,347 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 喷雾瓶 卡扣式压盖机 +2024-10-14 17:08:40,347 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 喷雾瓶 卡扣式压盖机 +2024-10-14 17:08:40,347 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口 +2024-10-14 17:08:40,347 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口 +2024-10-14 17:08:40,347 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 小样分装+香水瓶卡扣 两种压头 13 15MM中盖 +2024-10-14 17:08:40,347 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 小样分装+香水瓶卡扣 两种压头 13 15MM中盖 +2024-10-14 17:08:40,347 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': '香水 小样压盖机', 'origin_option_2': '香水瓶 中套压盖机 适合13MM 15MM盖子', 'origin_option_3': '喷雾瓶 卡扣式压盖机', 'origin_option_4': '中套压盖机 20MM瓶口专用 适合 20MM 瓶口', 'origin_option_5': '小样分装+香水瓶卡扣 两种压头 13 15MM中盖'} +2024-10-14 17:08:40,347 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "香水 小样压盖机", "origin_option_2": "香水瓶 中套压盖机 适合13MM 15MM盖子", "origin_option_3": "喷雾瓶 卡扣式压盖机", "origin_option_4": "中套压盖机 20MM瓶口专用 适合 20MM 瓶口", "origin_option_5": "小样分装+香水瓶卡扣 两种压头 13 15MM中盖"} +2024-10-14 17:08:40,347 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 17:08:42,738 - option.py:196 - default_logger - ERROR - 안전 필터에 의해 번역 요청이 차단되었습니다. Cannot get the response text. +Cannot get the Candidate text. +Response candidate content has no parts (and thus no text). The candidate is likely blocked by the safety filters. +Content: +{} +Candidate: +{ + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.18457031, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.14453125 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "MEDIUM", + "blocked": true, + "probability_score": 0.6796875, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.58984375 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.16796875, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.087402344 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.24609375, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.14160156 + } + ], + "avg_logprobs": "NaN" +} +Response: +{ + "candidates": [ + { + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.18457031, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.14453125 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "MEDIUM", + "blocked": true, + "probability_score": 0.6796875, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.58984375 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.16796875, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.087402344 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.24609375, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.14160156 + } + ], + "avg_logprobs": "NaN" + } + ], + "usage_metadata": { + "prompt_token_count": 497, + "total_token_count": 497 + }, + "model_version": "gemini-1.5-flash-001" +} +2024-10-14 17:08:42,739 - option.py:197 - default_logger - DEBUG - 퍼센티 자체 AI번역 사용 시도 +2024-10-14 17:08:42,843 - option.py:199 - default_logger - DEBUG - 번역을 위한 5초간 대기 +2024-10-14 17:08:47,844 - option.py:204 - default_logger - DEBUG - [퍼센티AI] 를 이용한 옵션번역 성공 +2024-10-14 17:08:47,845 - option.py:208 - default_logger - DEBUG - 옵션 필터링 및 조정 : True +2024-10-14 17:08:47,846 - option.py:85 - default_logger - DEBUG - 최저옵션: 90000.0, 표준편차: 4000.0 +2024-10-14 17:08:47,847 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:08:47,847 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:08:47,847 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:08:47,848 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:08:47,848 - option.py:95 - default_logger - DEBUG - Option 98000 z-score: 2.0 +2024-10-14 17:08:47,849 - option.py:99 - default_logger - DEBUG - Z-스코어 필터링: [88000, 88000, 88000, 88000] +2024-10-14 17:08:47,849 - option.py:107 - default_logger - DEBUG - 필터링된 본품옵션의 최저가: 88000, 마켓상한선: 176000 +2024-10-14 17:08:47,850 - option.py:112 - default_logger - DEBUG - 최종 선택된 옵션: [('香水 小样压盖机', 88000), ('香水瓶 中套压盖机 适合13MM 15MM盖子', 88000), ('喷雾瓶 卡扣式压盖机', 88000), ('中套压盖机 20MM瓶口专用 适合 20MM 瓶口', 88000)] +2024-10-14 17:08:47,867 - option.py:537 - default_logger - DEBUG - 옵션 이름: 香水 小样压盖机, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:48,136 - option.py:537 - default_logger - DEBUG - 옵션 이름: 香水瓶 中套压盖机 适合13MM 15MM盖子, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:48,327 - option.py:537 - default_logger - DEBUG - 옵션 이름: 喷雾瓶 卡扣式压盖机, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:48,706 - option.py:537 - default_logger - DEBUG - 옵션 이름: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口, 필터링된 옵션에 포함 여부: True +2024-10-14 17:08:48,936 - option.py:537 - default_logger - DEBUG - 옵션 이름: 小样分装+香水瓶卡扣 两种压头 13 15MM中盖, 필터링된 옵션에 포함 여부: False +2024-10-14 17:08:48,937 - option.py:548 - default_logger - DEBUG - 옵션 체크 상태 조정 완료. +2024-10-14 17:08:48,937 - option.py:212 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 17:08:48,937 - option.py:141 - default_logger - ERROR - 선택된 옵션 저장 중 오류 발생: list indices must be integers or slices, not str +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 120, in store_selected_options + total_options_count = len([self.option_info]['original_names']) + ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ +TypeError: list indices must be integers or slices, not str +2024-10-14 17:08:48,939 - option.py:243 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 17:08:48,939 - option.py:247 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 17:08:49,299 - option.py:250 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 17:08:49,450 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 17:08:49,456 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 17:08:50,017 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 17:08:50,020 - gui.py:754 - default_logger - DEBUG - 2/[31]개 상품 수정 완료. +2024-10-14 17:08:50,021 - gui.py:699 - default_logger - DEBUG - 3/20: 세부사항 수정 작업 중... +2024-10-14 17:08:50,150 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 17:08:50,726 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 17:08:51,364 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 17:08:51,383 - title.py:94 - default_logger - DEBUG - 원본 상품명: 驾驾乐千斤顶液压立式2吨小汽车用5吨货车轿车油压车载手摇千金顶 +2024-10-14 17:08:51,383 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 17:08:51,385 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 17:08:51,402 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 17:08:51,411 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 17:08:51,428 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 17:08:51,430 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 17:08:52,796 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 17:08:52,797 - option.py:152 - default_logger - DEBUG - 상품명: 驾驾乐千斤顶液压立式2吨小汽车用5吨货车轿车油压车载手摇千金顶에 대한 옵션을 처리 중... +2024-10-14 17:08:54,799 - option.py:266 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 17:08:54,809 - option.py:278 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 17:08:54,810 - option.py:558 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 17:08:55,664 - option.py:181 - default_logger - DEBUG - 옵션 AI번역 : True +2024-10-14 17:08:55,697 - option.py:295 - default_logger - DEBUG - 총 옵션 갯수: 44 +2024-10-14 17:08:55,752 - option.py:330 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 17:08:55,818 - option.py:330 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 17:08:55,905 - option.py:330 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 17:08:55,980 - option.py:330 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,049 - option.py:330 - default_logger - DEBUG - 5번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,140 - option.py:330 - default_logger - DEBUG - 6번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,186 - option.py:330 - default_logger - DEBUG - 7번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,241 - option.py:330 - default_logger - DEBUG - 8번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,305 - option.py:330 - default_logger - DEBUG - 9번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,365 - option.py:330 - default_logger - DEBUG - 10번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,416 - option.py:330 - default_logger - DEBUG - 11번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,468 - option.py:330 - default_logger - DEBUG - 12번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,517 - option.py:330 - default_logger - DEBUG - 13번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,588 - option.py:330 - default_logger - DEBUG - 14번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,635 - option.py:330 - default_logger - DEBUG - 15번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,686 - option.py:330 - default_logger - DEBUG - 16번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,731 - option.py:330 - default_logger - DEBUG - 17번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,802 - option.py:330 - default_logger - DEBUG - 18번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,857 - option.py:330 - default_logger - DEBUG - 19번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,902 - option.py:330 - default_logger - DEBUG - 20번째 옵션 정보 수집 완료 +2024-10-14 17:08:56,970 - option.py:330 - default_logger - DEBUG - 21번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,017 - option.py:330 - default_logger - DEBUG - 22번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,087 - option.py:330 - default_logger - DEBUG - 23번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,131 - option.py:330 - default_logger - DEBUG - 24번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,186 - option.py:330 - default_logger - DEBUG - 25번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,229 - option.py:330 - default_logger - DEBUG - 26번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,289 - option.py:330 - default_logger - DEBUG - 27번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,341 - option.py:330 - default_logger - DEBUG - 28번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,394 - option.py:330 - default_logger - DEBUG - 29번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,440 - option.py:330 - default_logger - DEBUG - 30번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,485 - option.py:330 - default_logger - DEBUG - 31번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,521 - option.py:330 - default_logger - DEBUG - 32번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,573 - option.py:330 - default_logger - DEBUG - 33번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,633 - option.py:330 - default_logger - DEBUG - 34번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,701 - option.py:330 - default_logger - DEBUG - 35번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,767 - option.py:330 - default_logger - DEBUG - 36번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,818 - option.py:330 - default_logger - DEBUG - 37번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,864 - option.py:330 - default_logger - DEBUG - 38번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,914 - option.py:330 - default_logger - DEBUG - 39번째 옵션 정보 수집 완료 +2024-10-14 17:08:57,971 - option.py:330 - default_logger - DEBUG - 40번째 옵션 정보 수집 완료 +2024-10-14 17:08:58,015 - option.py:330 - default_logger - DEBUG - 41번째 옵션 정보 수집 완료 +2024-10-14 17:08:58,064 - option.py:330 - default_logger - DEBUG - 42번째 옵션 정보 수집 완료 +2024-10-14 17:08:58,113 - option.py:330 - default_logger - DEBUG - 43번째 옵션 정보 수집 완료 +2024-10-14 17:08:58,164 - option.py:330 - default_logger - DEBUG - 44번째 옵션 정보 수집 완료 +2024-10-14 17:08:58,165 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': '立式国标2吨 限量抢', 'origin_option_2': '2吨加厚', 'origin_option_3': '3吨标准', 'origin_option_4': '2吨加厚(带塑盒)', 'origin_option_5': '3吨加厚加高', 'origin_option_6': '3吨标准(带塑盒)', 'origin_option_7': '3吨加厚加高(带塑盒)', 'origin_option_8': '5吨加厚加高', 'origin_option_9': '3吨标准+扳手', 'origin_option_10': '(双节液压)2吨 轿车推荐', 'origin_option_11': '5吨加厚加高(带塑盒)', 'origin_option_12': '3吨加厚加高+扳手', 'origin_option_13': '3吨标准(带塑盒)+扳手', 'origin_option_14': '(双节液压)3吨 SUV推荐', 'origin_option_15': '(双节液压)2吨(带塑盒) 轿车推荐款', 'origin_option_16': '3吨加厚加高(带塑盒)+扳手', 'origin_option_17': '5吨加厚加高+扳手', 'origin_option_18': '(双节液压)3吨(带塑盒)SUV推荐', 'origin_option_19': '8吨加厚加高', 'origin_option_20': '5吨加厚加高(带塑盒)+扳手', 'origin_option_21': '10吨加厚加高', 'origin_option_22': '(双节液压)2吨+扳手', 'origin_option_23': '8吨加厚加高(带塑盒)', 'origin_option_24': '(双节液压)3吨 +扳手', 'origin_option_25': '(双节液压)2吨(带塑盒)+扳手', 'origin_option_26': '10吨加厚加高(带塑盒)', 'origin_option_27': '(双节液压)3吨(带塑盒)+扳手', 'origin_option_28': '12吨加厚加高', 'origin_option_29': '(双节液压)4吨加厚低版', 'origin_option_30': '(双节液压)4吨加厚高版', 'origin_option_31': '16吨加厚加高', 'origin_option_32': '(双节液压)4吨加厚低版(带塑盒)', 'origin_option_33': '(双节液压)6吨加厚低版', 'origin_option_34': '(双节液压)4吨加厚高版(带塑盒)', 'origin_option_35': '(双节液压)6吨加厚高版', 'origin_option_36': '20吨加厚加高', 'origin_option_37': '(双节液压)8吨加厚', 'origin_option_38': '30吨加厚加高', 'origin_option_39': '(双节液压)10吨加厚', 'origin_option_40': '32吨加厚加高', 'origin_option_41': '(双节液压)12吨加厚', 'origin_option_42': '(双节液压)16吨加厚', 'origin_option_43': '(双节液压)20吨加厚', 'origin_option_44': '50吨加厚加高'} +2024-10-14 17:08:58,166 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 立式国标2吨 限量抢 +2024-10-14 17:08:58,168 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 立式国标2吨 限量抢 +2024-10-14 17:08:58,169 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 2吨加厚 +2024-10-14 17:08:58,170 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 2吨加厚 +2024-10-14 17:08:58,170 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨标准 +2024-10-14 17:08:58,171 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨标准 +2024-10-14 17:08:58,171 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 2吨加厚(带塑盒) +2024-10-14 17:08:58,172 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 2吨加厚带塑盒 +2024-10-14 17:08:58,173 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨加厚加高 +2024-10-14 17:08:58,173 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨加厚加高 +2024-10-14 17:08:58,174 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨标准(带塑盒) +2024-10-14 17:08:58,175 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨标准带塑盒 +2024-10-14 17:08:58,175 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨加厚加高(带塑盒) +2024-10-14 17:08:58,176 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨加厚加高带塑盒 +2024-10-14 17:08:58,177 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 5吨加厚加高 +2024-10-14 17:08:58,177 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 5吨加厚加高 +2024-10-14 17:08:58,178 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨标准+扳手 +2024-10-14 17:08:58,179 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨标准+扳手 +2024-10-14 17:08:58,179 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)2吨 轿车推荐 +2024-10-14 17:08:58,181 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压2吨 轿车推荐 +2024-10-14 17:08:58,181 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 5吨加厚加高(带塑盒) +2024-10-14 17:08:58,182 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 5吨加厚加高带塑盒 +2024-10-14 17:08:58,183 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨加厚加高+扳手 +2024-10-14 17:08:58,183 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨加厚加高+扳手 +2024-10-14 17:08:58,183 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨标准(带塑盒)+扳手 +2024-10-14 17:08:58,185 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨标准带塑盒+扳手 +2024-10-14 17:08:58,185 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)3吨 SUV推荐 +2024-10-14 17:08:58,186 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压3吨 SUV推荐 +2024-10-14 17:08:58,187 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)2吨(带塑盒) 轿车推荐款 +2024-10-14 17:08:58,187 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压2吨带塑盒 轿车推荐款 +2024-10-14 17:08:58,188 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 3吨加厚加高(带塑盒)+扳手 +2024-10-14 17:08:58,189 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 3吨加厚加高带塑盒+扳手 +2024-10-14 17:08:58,189 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 5吨加厚加高+扳手 +2024-10-14 17:08:58,189 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 5吨加厚加高+扳手 +2024-10-14 17:08:58,189 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)3吨(带塑盒)SUV推荐 +2024-10-14 17:08:58,189 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压3吨带塑盒SUV推荐 +2024-10-14 17:08:58,192 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 8吨加厚加高 +2024-10-14 17:08:58,192 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 8吨加厚加高 +2024-10-14 17:08:58,192 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 5吨加厚加高(带塑盒)+扳手 +2024-10-14 17:08:58,195 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 5吨加厚加高带塑盒+扳手 +2024-10-14 17:08:58,195 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 10吨加厚加高 +2024-10-14 17:08:58,196 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 10吨加厚加高 +2024-10-14 17:08:58,196 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)2吨+扳手 +2024-10-14 17:08:58,197 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压2吨+扳手 +2024-10-14 17:08:58,197 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 8吨加厚加高(带塑盒) +2024-10-14 17:08:58,198 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 8吨加厚加高带塑盒 +2024-10-14 17:08:58,198 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)3吨 +扳手 +2024-10-14 17:08:58,199 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压3吨 +扳手 +2024-10-14 17:08:58,199 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)2吨(带塑盒)+扳手 +2024-10-14 17:08:58,200 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压2吨带塑盒+扳手 +2024-10-14 17:08:58,202 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 10吨加厚加高(带塑盒) +2024-10-14 17:08:58,202 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 10吨加厚加高带塑盒 +2024-10-14 17:08:58,202 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)3吨(带塑盒)+扳手 +2024-10-14 17:08:58,203 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压3吨带塑盒+扳手 +2024-10-14 17:08:58,203 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 12吨加厚加高 +2024-10-14 17:08:58,204 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 12吨加厚加高 +2024-10-14 17:08:58,204 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)4吨加厚低版 +2024-10-14 17:08:58,204 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压4吨加厚低版 +2024-10-14 17:08:58,204 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)4吨加厚高版 +2024-10-14 17:08:58,206 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压4吨加厚高版 +2024-10-14 17:08:58,206 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 16吨加厚加高 +2024-10-14 17:08:58,207 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 16吨加厚加高 +2024-10-14 17:08:58,207 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)4吨加厚低版(带塑盒) +2024-10-14 17:08:58,207 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压4吨加厚低版带塑盒 +2024-10-14 17:08:58,207 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)6吨加厚低版 +2024-10-14 17:08:58,210 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压6吨加厚低版 +2024-10-14 17:08:58,211 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)4吨加厚高版(带塑盒) +2024-10-14 17:08:58,211 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压4吨加厚高版带塑盒 +2024-10-14 17:08:58,213 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)6吨加厚高版 +2024-10-14 17:08:58,213 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压6吨加厚高版 +2024-10-14 17:08:58,214 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 20吨加厚加高 +2024-10-14 17:08:58,214 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 20吨加厚加高 +2024-10-14 17:08:58,214 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)8吨加厚 +2024-10-14 17:08:58,214 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压8吨加厚 +2024-10-14 17:08:58,214 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 30吨加厚加高 +2024-10-14 17:08:58,214 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 30吨加厚加高 +2024-10-14 17:08:58,214 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)10吨加厚 +2024-10-14 17:08:58,214 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压10吨加厚 +2024-10-14 17:08:58,214 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 32吨加厚加高 +2024-10-14 17:08:58,220 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 32吨加厚加高 +2024-10-14 17:08:58,220 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)12吨加厚 +2024-10-14 17:08:58,220 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压12吨加厚 +2024-10-14 17:08:58,220 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)16吨加厚 +2024-10-14 17:08:58,220 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压16吨加厚 +2024-10-14 17:08:58,220 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: (双节液压)20吨加厚 +2024-10-14 17:08:58,220 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 双节液压20吨加厚 +2024-10-14 17:08:58,220 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 50吨加厚加高 +2024-10-14 17:08:58,220 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 50吨加厚加高 +2024-10-14 17:08:58,220 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': '立式国标2吨 限量抢', 'origin_option_2': '2吨加厚', 'origin_option_3': '3吨标准', 'origin_option_4': '2吨加厚带塑盒', 'origin_option_5': '3吨加厚加高', 'origin_option_6': '3吨标准带塑盒', 'origin_option_7': '3吨加厚加高带塑盒', 'origin_option_8': '5吨加厚加高', 'origin_option_9': '3吨标准+扳手', 'origin_option_10': '双节液压2吨 轿车推荐', 'origin_option_11': '5吨加厚加高带塑盒', 'origin_option_12': '3吨加厚加高+扳手', 'origin_option_13': '3吨标准带塑盒+扳手', 'origin_option_14': '双节液压3吨 SUV推荐', 'origin_option_15': '双节液压2吨带塑盒 轿车推荐款', 'origin_option_16': '3吨加厚加高带塑盒+扳手', 'origin_option_17': '5吨加厚加高+扳手', 'origin_option_18': '双节液压3吨带塑盒SUV推荐', 'origin_option_19': '8吨加厚加高', 'origin_option_20': '5吨加厚加高带塑盒+扳手', 'origin_option_21': '10吨加厚加高', 'origin_option_22': '双节液压2吨+扳手', 'origin_option_23': '8吨加厚加高带塑盒', 'origin_option_24': '双节液压3吨 +扳手', 'origin_option_25': '双节液压2吨带塑盒+扳手', 'origin_option_26': '10吨加厚加高带塑盒', 'origin_option_27': '双节液压3吨带塑盒+扳手', 'origin_option_28': '12吨加厚加高', 'origin_option_29': '双节液压4吨加厚低版', 'origin_option_30': '双节液压4吨加厚高版', 'origin_option_31': '16吨加厚加高', 'origin_option_32': '双节液压4吨加厚低版带塑盒', 'origin_option_33': '双节液压6吨加厚低版', 'origin_option_34': '双节液压4吨加厚高版带塑盒', 'origin_option_35': '双节液压6吨加厚高版', 'origin_option_36': '20吨加厚加高', 'origin_option_37': '双节液压8吨加厚', 'origin_option_38': '30吨加厚加高', 'origin_option_39': '双节液压10吨加厚', 'origin_option_40': '32吨加厚加高', 'origin_option_41': '双节液压12吨加厚', 'origin_option_42': '双节液压16吨加厚', 'origin_option_43': '双节液压20吨加厚', 'origin_option_44': '50吨加厚加高'} +2024-10-14 17:08:58,220 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '驾驾乐千斤顶液压立式2吨小汽车用5吨货车轿车油压车载手摇千金顶'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "立式国标2吨 限量抢", "origin_option_2": "2吨加厚", "origin_option_3": "3吨标准", "origin_option_4": "2吨加厚带塑盒", "origin_option_5": "3吨加厚加高", "origin_option_6": "3吨标准带塑盒", "origin_option_7": "3吨加厚加高带塑盒", "origin_option_8": "5吨加厚加高", "origin_option_9": "3吨标准+扳手", "origin_option_10": "双节液压2吨 轿车推荐", "origin_option_11": "5吨加厚加高带塑盒", "origin_option_12": "3吨加厚加高+扳手", "origin_option_13": "3吨标准带塑盒+扳手", "origin_option_14": "双节液压3吨 SUV推荐", "origin_option_15": "双节液压2吨带塑盒 轿车推荐款", "origin_option_16": "3吨加厚加高带塑盒+扳手", "origin_option_17": "5吨加厚加高+扳手", "origin_option_18": "双节液压3吨带塑盒SUV推荐", "origin_option_19": "8吨加厚加高", "origin_option_20": "5吨加厚加高带塑盒+扳手", "origin_option_21": "10吨加厚加高", "origin_option_22": "双节液压2吨+扳手", "origin_option_23": "8吨加厚加高带塑盒", "origin_option_24": "双节液压3吨 +扳手", "origin_option_25": "双节液压2吨带塑盒+扳手", "origin_option_26": "10吨加厚加高带塑盒", "origin_option_27": "双节液压3吨带塑盒+扳手", "origin_option_28": "12吨加厚加高", "origin_option_29": "双节液压4吨加厚低版", "origin_option_30": "双节液压4吨加厚高版", "origin_option_31": "16吨加厚加高", "origin_option_32": "双节液压4吨加厚低版带塑盒", "origin_option_33": "双节液压6吨加厚低版", "origin_option_34": "双节液压4吨加厚高版带塑盒", "origin_option_35": "双节液压6吨加厚高版", "origin_option_36": "20吨加厚加高", "origin_option_37": "双节液压8吨加厚", "origin_option_38": "30吨加厚加高", "origin_option_39": "双节液压10吨加厚", "origin_option_40": "32吨加厚加高", "origin_option_41": "双节液压12吨加厚", "origin_option_42": "双节液压16吨加厚", "origin_option_43": "双节液压20吨加厚", "origin_option_44": "50吨加厚加高"} +2024-10-14 17:08:58,220 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 17:09:02,243 - vertexAI.py:144 - default_logger - DEBUG - 모델 응답: ```json +{ +"trans_option_1": "2톤 국표", +"trans_option_2": "2톤 두께", +"trans_option_3": "3톤 표준", +"trans_option_4": "2톤 두께 (플라스틱 케이스 포함)", +"trans_option_5": "3톤 두께 (높이)", +"trans_option_6": "3톤 표준 (플라스틱 케이스 포함)", +"trans_option_7": "3톤 두께 (높이, 플라스틱 케이스 포함)", +"trans_option_8": "5톤 두께 (높이)", +"trans_option_9": "3톤 표준 (렌치 포함)", +"trans_option_10": "2톤 (이중식, 승용차 추천)", +"trans_option_11": "5톤 두께 (높이, 플라스틱 케이스 포함)", +"trans_option_12": "3톤 두께 (높이, 렌치 포함)", +"trans_option_13": "3톤 표준 (플라스틱 케이스, 렌치 포함)", +"trans_option_14": "3톤 (이중식, SUV 추천)", +"trans_option_15": "2톤 (이중식, 플라스틱 케이스 포함, 승용차 추천)", +"trans_option_16": "3톤 두께 (높이, 플라스틱 케이스, 렌치 포함)", +"trans_option_17": "5톤 두께 (높이, 렌치 포함)", +"trans_option_18": "3톤 (이중식, 플라스틱 케이스 포함, SUV 추천)", +"trans_option_19": "8톤 두께 (높이)", +"trans_option_20": "5톤 두께 (높이, 플라스틱 케이스, 렌치 포함)", +"trans_option_21": "10톤 두께 (높이)", +"trans_option_22": "2톤 (이중식, 렌치 포함)", +"trans_option_23": "8톤 두께 (높이, 플라스틱 케이스 포함)", +"trans_option_24": "3톤 (이중식, 렌치 포함)", +"trans_option_25": "2톤 (이중식, 플라스틱 케이스, 렌치 포함)", +"trans_option_26": "10톤 두께 (높이, 플라스틱 케이스 포함)", +"trans_option_27": "3톤 (이중식, 플라스틱 케이스, 렌치 포함)", +"trans_option_28": "12톤 두께 (높이)", +"trans_option_29": "4톤 (이중식, 두께, 낮은 버전)", +"trans_option_30": "4톤 (이중식, 두께, 높은 버전)", +"trans_option_31": "16톤 두께 (높이)", +"trans_option_32": "4톤 (이중식, 두께, 낮은 버전, 플라스틱 케이스 포함)", +"trans_option_33": "6톤 (이중식, 두께, 낮은 버전)", +"trans_option_34": "4톤 (이중식, 두께, 높은 버전, 플라스틱 케이스 포함)", +"trans_option_35": "6톤 (이중식, 두께, 높은 버전)", +"trans_option_36": "20톤 두께 (높이)", +"trans_option_37": "8톤 (이중식, 두께)", +"trans_option_38": "30톤 두께 (높이)", +"trans_option_39": "10톤 (이중식, 두께)", +"trans_option_40": "32톤 두께 (높이)", +"trans_option_41": "12톤 (이중식, 두께)", +"trans_option_42": "16톤 (이중식, 두께)", +"trans_option_43": "20톤 (이중식, 두께)", +"trans_option_44": "50톤 두께 (높이)" +} +``` +2024-10-14 17:09:02,243 - vertexAI.py:151 - default_logger - DEBUG - 응답에서 추출된 JSON 텍스트: { +"trans_option_1": "2톤 국표", +"trans_option_2": "2톤 두께", +"trans_option_3": "3톤 표준", +"trans_option_4": "2톤 두께 (플라스틱 케이스 포함)", +"trans_option_5": "3톤 두께 (높이)", +"trans_option_6": "3톤 표준 (플라스틱 케이스 포함)", +"trans_option_7": "3톤 두께 (높이, 플라스틱 케이스 포함)", +"trans_option_8": "5톤 두께 (높이)", +"trans_option_9": "3톤 표준 (렌치 포함)", +"trans_option_10": "2톤 (이중식, 승용차 추천)", +"trans_option_11": "5톤 두께 (높이, 플라스틱 케이스 포함)", +"trans_option_12": "3톤 두께 (높이, 렌치 포함)", +"trans_option_13": "3톤 표준 (플라스틱 케이스, 렌치 포함)", +"trans_option_14": "3톤 (이중식, SUV 추천)", +"trans_option_15": "2톤 (이중식, 플라스틱 케이스 포함, 승용차 추천)", +"trans_option_16": "3톤 두께 (높이, 플라스틱 케이스, 렌치 포함)", +"trans_option_17": "5톤 두께 (높이, 렌치 포함)", +"trans_option_18": "3톤 (이중식, 플라스틱 케이스 포함, SUV 추천)", +"trans_option_19": "8톤 두께 (높이)", +"trans_option_20": "5톤 두께 (높이, 플라스틱 케이스, 렌치 포함)", +"trans_option_21": "10톤 두께 (높이)", +"trans_option_22": "2톤 (이중식, 렌치 포함)", +"trans_option_23": "8톤 두께 (높이, 플라스틱 케이스 포함)", +"trans_option_24": "3톤 (이중식, 렌치 포함)", +"trans_option_25": "2톤 (이중식, 플라스틱 케이스, 렌치 포함)", +"trans_option_26": "10톤 두께 (높이, 플라스틱 케이스 포함)", +"trans_option_27": "3톤 (이중식, 플라스틱 케이스, 렌치 포함)", +"trans_option_28": "12톤 두께 (높이)", +"trans_option_29": "4톤 (이중식, 두께, 낮은 버전)", +"trans_option_30": "4톤 (이중식, 두께, 높은 버전)", +"trans_option_31": "16톤 두께 (높이)", +"trans_option_32": "4톤 (이중식, 두께, 낮은 버전, 플라스틱 케이스 포함)", +"trans_option_33": "6톤 (이중식, 두께, 낮은 버전)", +"trans_option_34": "4톤 (이중식, 두께, 높은 버전, 플라스틱 케이스 포함)", +"trans_option_35": "6톤 (이중식, 두께, 높은 버전)", +"trans_option_36": "20톤 두께 (높이)", +"trans_option_37": "8톤 (이중식, 두께)", +"trans_option_38": "30톤 두께 (높이)", +"trans_option_39": "10톤 (이중식, 두께)", +"trans_option_40": "32톤 두께 (높이)", +"trans_option_41": "12톤 (이중식, 두께)", +"trans_option_42": "16톤 (이중식, 두께)", +"trans_option_43": "20톤 (이중식, 두께)", +"trans_option_44": "50톤 두께 (높이)" +} +2024-10-14 17:09:02,243 - vertexAI.py:154 - default_logger - DEBUG - 번역된 데이터: {'trans_option_1': '2톤 국표', 'trans_option_2': '2톤 두께', 'trans_option_3': '3톤 표준', 'trans_option_4': '2톤 두께 (플라스틱 케이스 포함)', 'trans_option_5': '3톤 두께 (높이)', 'trans_option_6': '3톤 표준 (플라스틱 케이스 포함)', 'trans_option_7': '3톤 두께 (높이, 플라스틱 케이스 포함)', 'trans_option_8': '5톤 두께 (높이)', 'trans_option_9': '3톤 표준 (렌치 포함)', 'trans_option_10': '2톤 (이중식, 승용차 추천)', 'trans_option_11': '5톤 두께 (높이, 플라스틱 케이스 포함)', 'trans_option_12': '3톤 두께 (높이, 렌치 포함)', 'trans_option_13': '3톤 표준 (플라스틱 케이스, 렌치 포함)', 'trans_option_14': '3톤 (이중식, SUV 추천)', 'trans_option_15': '2톤 (이중식, 플라스틱 케이스 포함, 승용차 추천)', 'trans_option_16': '3톤 두께 (높이, 플라스틱 케이스, 렌치 포함)', 'trans_option_17': '5톤 두께 (높이, 렌치 포함)', 'trans_option_18': '3톤 (이중식, 플라스틱 케이스 포함, SUV 추천)', 'trans_option_19': '8톤 두께 (높이)', 'trans_option_20': '5톤 두께 (높이, 플라스틱 케이스, 렌치 포함)', 'trans_option_21': '10톤 두께 (높이)', 'trans_option_22': '2톤 (이중식, 렌치 포함)', 'trans_option_23': '8톤 두께 (높이, 플라스틱 케이스 포함)', 'trans_option_24': '3톤 (이중식, 렌치 포함)', 'trans_option_25': '2톤 (이중식, 플라스틱 케이스, 렌치 포함)', 'trans_option_26': '10톤 두께 (높이, 플라스틱 케이스 포함)', 'trans_option_27': '3톤 (이중식, 플라스틱 케이스, 렌치 포함)', 'trans_option_28': '12톤 두께 (높이)', 'trans_option_29': '4톤 (이중식, 두께, 낮은 버전)', 'trans_option_30': '4톤 (이중식, 두께, 높은 버전)', 'trans_option_31': '16톤 두께 (높이)', 'trans_option_32': '4톤 (이중식, 두께, 낮은 버전, 플라스틱 케이스 포함)', 'trans_option_33': '6톤 (이중식, 두께, 낮은 버전)', 'trans_option_34': '4톤 (이중식, 두께, 높은 버전, 플라스틱 케이스 포함)', 'trans_option_35': '6톤 (이중식, 두께, 높은 버전)', 'trans_option_36': '20톤 두께 (높이)', 'trans_option_37': '8톤 (이중식, 두께)', 'trans_option_38': '30톤 두께 (높이)', 'trans_option_39': '10톤 (이중식, 두께)', 'trans_option_40': '32톤 두께 (높이)', 'trans_option_41': '12톤 (이중식, 두께)', 'trans_option_42': '16톤 (이중식, 두께)', 'trans_option_43': '20톤 (이중식, 두께)', 'trans_option_44': '50톤 두께 (높이)'} +2024-10-14 17:09:02,243 - option.py:189 - default_logger - DEBUG - 번역된 옵션 입력 +2024-10-14 17:09:02,259 - option.py:440 - default_logger - DEBUG - trans_option_1번째 translated_name : 2톤 국표 +2024-10-14 17:09:02,259 - option.py:448 - default_logger - DEBUG - trans_option_1번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:02,274 - option.py:452 - default_logger - INFO - trans_option_1번째 translated_name : [2톤 국표] 입력 완료 +2024-10-14 17:09:02,274 - option.py:440 - default_logger - DEBUG - trans_option_2번째 translated_name : 2톤 두께 +2024-10-14 17:09:02,274 - option.py:448 - default_logger - DEBUG - trans_option_2번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:02,308 - option.py:452 - default_logger - INFO - trans_option_2번째 translated_name : [2톤 두께] 입력 완료 +2024-10-14 17:09:02,320 - option.py:440 - default_logger - DEBUG - trans_option_3번째 translated_name : 3톤 표준 +2024-10-14 17:09:02,320 - option.py:448 - default_logger - DEBUG - trans_option_3번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:02,379 - option.py:452 - default_logger - INFO - trans_option_3번째 translated_name : [3톤 표준] 입력 완료 +2024-10-14 17:09:02,380 - option.py:440 - default_logger - DEBUG - trans_option_4번째 translated_name : 2톤 두께 (플라스틱 케이스 포함) +2024-10-14 17:09:02,381 - option.py:448 - default_logger - DEBUG - trans_option_4번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:02,455 - option.py:452 - default_logger - INFO - trans_option_4번째 translated_name : [2톤 두께 (플라스틱 케이스 포함)] 입력 완료 +2024-10-14 17:09:02,456 - option.py:440 - default_logger - DEBUG - trans_option_5번째 translated_name : 3톤 두께 (높이) +2024-10-14 17:09:02,456 - option.py:448 - default_logger - DEBUG - trans_option_5번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:02,553 - option.py:452 - default_logger - INFO - trans_option_5번째 translated_name : [3톤 두께 (높이)] 입력 완료 +2024-10-14 17:09:02,554 - option.py:440 - default_logger - DEBUG - trans_option_6번째 translated_name : 3톤 표준 (플라스틱 케이스 포함) +2024-10-14 17:09:02,555 - option.py:448 - default_logger - DEBUG - trans_option_6번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:02,622 - option.py:452 - default_logger - INFO - trans_option_6번째 translated_name : [3톤 표준 (플라스틱 케이스 포함)] 입력 완료 +2024-10-14 17:09:02,623 - option.py:440 - default_logger - DEBUG - trans_option_7번째 translated_name : 3톤 두께 (높이, 플라스틱 케이스 포함) +2024-10-14 17:09:02,624 - option.py:448 - default_logger - DEBUG - trans_option_7번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:02,711 - option.py:452 - default_logger - INFO - trans_option_7번째 translated_name : [3톤 두께 (높이, 플라스틱 케이스 포함)] 입력 완료 +2024-10-14 17:09:02,712 - option.py:440 - default_logger - DEBUG - trans_option_8번째 translated_name : 5톤 두께 (높이) +2024-10-14 17:09:02,713 - option.py:448 - default_logger - DEBUG - trans_option_8번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:02,791 - option.py:452 - default_logger - INFO - trans_option_8번째 translated_name : [5톤 두께 (높이)] 입력 완료 +2024-10-14 17:09:02,793 - option.py:440 - default_logger - DEBUG - trans_option_9번째 translated_name : 3톤 표준 (렌치 포함) +2024-10-14 17:09:02,793 - option.py:448 - default_logger - DEBUG - trans_option_9번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:03,080 - option.py:452 - default_logger - INFO - trans_option_9번째 translated_name : [3톤 표준 (렌치 포함)] 입력 완료 +2024-10-14 17:09:03,081 - option.py:440 - default_logger - DEBUG - trans_option_10번째 translated_name : 2톤 (이중식, 승용차 추천) +2024-10-14 17:09:03,082 - option.py:448 - default_logger - DEBUG - trans_option_10번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:03,706 - option.py:452 - default_logger - INFO - trans_option_10번째 translated_name : [2톤 (이중식, 승용차 추천)] 입력 완료 +2024-10-14 17:09:03,707 - option.py:440 - default_logger - DEBUG - trans_option_11번째 translated_name : 5톤 두께 (높이, 플라스틱 케이스 포함) +2024-10-14 17:09:03,708 - option.py:448 - default_logger - DEBUG - trans_option_11번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:04,136 - option.py:452 - default_logger - INFO - trans_option_11번째 translated_name : [5톤 두께 (높이, 플라스틱 케이스 포함)] 입력 완료 +2024-10-14 17:09:04,137 - option.py:440 - default_logger - DEBUG - trans_option_12번째 translated_name : 3톤 두께 (높이, 렌치 포함) +2024-10-14 17:09:04,138 - option.py:448 - default_logger - DEBUG - trans_option_12번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:04,204 - option.py:452 - default_logger - INFO - trans_option_12번째 translated_name : [3톤 두께 (높이, 렌치 포함)] 입력 완료 +2024-10-14 17:09:04,205 - option.py:440 - default_logger - DEBUG - trans_option_13번째 translated_name : 3톤 표준 (플라스틱 케이스, 렌치 포함) +2024-10-14 17:09:04,206 - option.py:448 - default_logger - DEBUG - trans_option_13번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:04,580 - option.py:452 - default_logger - INFO - trans_option_13번째 translated_name : [3톤 표준 (플라스틱 케이스, 렌치 포함)] 입력 완료 +2024-10-14 17:09:04,581 - option.py:440 - default_logger - DEBUG - trans_option_14번째 translated_name : 3톤 (이중식, SUV 추천) +2024-10-14 17:09:04,583 - option.py:448 - default_logger - DEBUG - trans_option_14번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:04,668 - option.py:452 - default_logger - INFO - trans_option_14번째 translated_name : [3톤 (이중식, SUV 추천)] 입력 완료 +2024-10-14 17:09:04,669 - option.py:440 - default_logger - DEBUG - trans_option_15번째 translated_name : 2톤 (이중식, 플라스틱 케이스 포함, 승용차 추천) +2024-10-14 17:09:04,670 - option.py:448 - default_logger - DEBUG - trans_option_15번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:05,237 - option.py:452 - default_logger - INFO - trans_option_15번째 translated_name : [2톤 (이중식, 플라스틱 케이스 포함, 승용차 추천)] 입력 완료 +2024-10-14 17:09:05,238 - option.py:440 - default_logger - DEBUG - trans_option_16번째 translated_name : 3톤 두께 (높이, 플라스틱 케이스, 렌치 포함) +2024-10-14 17:09:05,238 - option.py:448 - default_logger - DEBUG - trans_option_16번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:05,702 - option.py:452 - default_logger - INFO - trans_option_16번째 translated_name : [3톤 두께 (높이, 플라스틱 케이스, 렌치 포함)] 입력 완료 +2024-10-14 17:09:05,703 - option.py:440 - default_logger - DEBUG - trans_option_17번째 translated_name : 5톤 두께 (높이, 렌치 포함) +2024-10-14 17:09:05,703 - option.py:448 - default_logger - DEBUG - trans_option_17번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:05,775 - option.py:452 - default_logger - INFO - trans_option_17번째 translated_name : [5톤 두께 (높이, 렌치 포함)] 입력 완료 +2024-10-14 17:09:05,777 - option.py:440 - default_logger - DEBUG - trans_option_18번째 translated_name : 3톤 (이중식, 플라스틱 케이스 포함, SUV 추천) +2024-10-14 17:09:05,777 - option.py:448 - default_logger - DEBUG - trans_option_18번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:06,136 - option.py:452 - default_logger - INFO - trans_option_18번째 translated_name : [3톤 (이중식, 플라스틱 케이스 포함, SUV 추천)] 입력 완료 +2024-10-14 17:09:06,138 - option.py:440 - default_logger - DEBUG - trans_option_19번째 translated_name : 8톤 두께 (높이) +2024-10-14 17:09:06,138 - option.py:448 - default_logger - DEBUG - trans_option_19번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:06,219 - option.py:452 - default_logger - INFO - trans_option_19번째 translated_name : [8톤 두께 (높이)] 입력 완료 +2024-10-14 17:09:06,219 - option.py:440 - default_logger - DEBUG - trans_option_20번째 translated_name : 5톤 두께 (높이, 플라스틱 케이스, 렌치 포함) +2024-10-14 17:09:06,220 - option.py:448 - default_logger - DEBUG - trans_option_20번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:06,792 - option.py:452 - default_logger - INFO - trans_option_20번째 translated_name : [5톤 두께 (높이, 플라스틱 케이스, 렌치 포함)] 입력 완료 +2024-10-14 17:09:06,793 - option.py:440 - default_logger - DEBUG - trans_option_21번째 translated_name : 10톤 두께 (높이) +2024-10-14 17:09:06,794 - option.py:448 - default_logger - DEBUG - trans_option_21번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:07,262 - option.py:452 - default_logger - INFO - trans_option_21번째 translated_name : [10톤 두께 (높이)] 입력 완료 +2024-10-14 17:09:07,263 - option.py:440 - default_logger - DEBUG - trans_option_22번째 translated_name : 2톤 (이중식, 렌치 포함) +2024-10-14 17:09:07,264 - option.py:448 - default_logger - DEBUG - trans_option_22번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:07,499 - option.py:452 - default_logger - INFO - trans_option_22번째 translated_name : [2톤 (이중식, 렌치 포함)] 입력 완료 +2024-10-14 17:09:07,500 - option.py:440 - default_logger - DEBUG - trans_option_23번째 translated_name : 8톤 두께 (높이, 플라스틱 케이스 포함) +2024-10-14 17:09:07,502 - option.py:448 - default_logger - DEBUG - trans_option_23번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:07,686 - option.py:452 - default_logger - INFO - trans_option_23번째 translated_name : [8톤 두께 (높이, 플라스틱 케이스 포함)] 입력 완료 +2024-10-14 17:09:07,687 - option.py:440 - default_logger - DEBUG - trans_option_24번째 translated_name : 3톤 (이중식, 렌치 포함) +2024-10-14 17:09:07,687 - option.py:448 - default_logger - DEBUG - trans_option_24번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:07,789 - option.py:452 - default_logger - INFO - trans_option_24번째 translated_name : [3톤 (이중식, 렌치 포함)] 입력 완료 +2024-10-14 17:09:07,791 - option.py:440 - default_logger - DEBUG - trans_option_25번째 translated_name : 2톤 (이중식, 플라스틱 케이스, 렌치 포함) +2024-10-14 17:09:07,792 - option.py:448 - default_logger - DEBUG - trans_option_25번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:08,473 - option.py:452 - default_logger - INFO - trans_option_25번째 translated_name : [2톤 (이중식, 플라스틱 케이스, 렌치 포함)] 입력 완료 +2024-10-14 17:09:08,473 - option.py:440 - default_logger - DEBUG - trans_option_26번째 translated_name : 10톤 두께 (높이, 플라스틱 케이스 포함) +2024-10-14 17:09:08,474 - option.py:448 - default_logger - DEBUG - trans_option_26번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:08,877 - option.py:452 - default_logger - INFO - trans_option_26번째 translated_name : [10톤 두께 (높이, 플라스틱 케이스 포함)] 입력 완료 +2024-10-14 17:09:08,878 - option.py:440 - default_logger - DEBUG - trans_option_27번째 translated_name : 3톤 (이중식, 플라스틱 케이스, 렌치 포함) +2024-10-14 17:09:08,879 - option.py:448 - default_logger - DEBUG - trans_option_27번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:08,949 - option.py:452 - default_logger - INFO - trans_option_27번째 translated_name : [3톤 (이중식, 플라스틱 케이스, 렌치 포함)] 입력 완료 +2024-10-14 17:09:08,950 - option.py:440 - default_logger - DEBUG - trans_option_28번째 translated_name : 12톤 두께 (높이) +2024-10-14 17:09:08,952 - option.py:448 - default_logger - DEBUG - trans_option_28번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:09,309 - option.py:452 - default_logger - INFO - trans_option_28번째 translated_name : [12톤 두께 (높이)] 입력 완료 +2024-10-14 17:09:09,310 - option.py:440 - default_logger - DEBUG - trans_option_29번째 translated_name : 4톤 (이중식, 두께, 낮은 버전) +2024-10-14 17:09:09,311 - option.py:448 - default_logger - DEBUG - trans_option_29번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:09,370 - option.py:452 - default_logger - INFO - trans_option_29번째 translated_name : [4톤 (이중식, 두께, 낮은 버전)] 입력 완료 +2024-10-14 17:09:09,384 - option.py:440 - default_logger - DEBUG - trans_option_30번째 translated_name : 4톤 (이중식, 두께, 높은 버전) +2024-10-14 17:09:09,385 - option.py:448 - default_logger - DEBUG - trans_option_30번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:09,958 - option.py:452 - default_logger - INFO - trans_option_30번째 translated_name : [4톤 (이중식, 두께, 높은 버전)] 입력 완료 +2024-10-14 17:09:09,959 - option.py:440 - default_logger - DEBUG - trans_option_31번째 translated_name : 16톤 두께 (높이) +2024-10-14 17:09:09,959 - option.py:448 - default_logger - DEBUG - trans_option_31번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:10,431 - option.py:452 - default_logger - INFO - trans_option_31번째 translated_name : [16톤 두께 (높이)] 입력 완료 +2024-10-14 17:09:10,433 - option.py:440 - default_logger - DEBUG - trans_option_32번째 translated_name : 4톤 (이중식, 두께, 낮은 버전, 플라스틱 케이스 포함) +2024-10-14 17:09:10,433 - option.py:448 - default_logger - DEBUG - trans_option_32번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:10,802 - option.py:452 - default_logger - INFO - trans_option_32번째 translated_name : [4톤 (이중식, 두께, 낮은 버전, 플라스틱 케이스 포함)] 입력 완료 +2024-10-14 17:09:10,803 - option.py:440 - default_logger - DEBUG - trans_option_33번째 translated_name : 6톤 (이중식, 두께, 낮은 버전) +2024-10-14 17:09:10,805 - option.py:448 - default_logger - DEBUG - trans_option_33번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:10,868 - option.py:452 - default_logger - INFO - trans_option_33번째 translated_name : [6톤 (이중식, 두께, 낮은 버전)] 입력 완료 +2024-10-14 17:09:10,869 - option.py:440 - default_logger - DEBUG - trans_option_34번째 translated_name : 4톤 (이중식, 두께, 높은 버전, 플라스틱 케이스 포함) +2024-10-14 17:09:10,870 - option.py:448 - default_logger - DEBUG - trans_option_34번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:10,941 - option.py:452 - default_logger - INFO - trans_option_34번째 translated_name : [4톤 (이중식, 두께, 높은 버전, 플라스틱 케이스 포함)] 입력 완료 +2024-10-14 17:09:10,943 - option.py:440 - default_logger - DEBUG - trans_option_35번째 translated_name : 6톤 (이중식, 두께, 높은 버전) +2024-10-14 17:09:10,944 - option.py:448 - default_logger - DEBUG - trans_option_35번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:11,302 - option.py:452 - default_logger - INFO - trans_option_35번째 translated_name : [6톤 (이중식, 두께, 높은 버전)] 입력 완료 +2024-10-14 17:09:11,303 - option.py:440 - default_logger - DEBUG - trans_option_36번째 translated_name : 20톤 두께 (높이) +2024-10-14 17:09:11,305 - option.py:448 - default_logger - DEBUG - trans_option_36번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:11,535 - option.py:452 - default_logger - INFO - trans_option_36번째 translated_name : [20톤 두께 (높이)] 입력 완료 +2024-10-14 17:09:11,536 - option.py:440 - default_logger - DEBUG - trans_option_37번째 translated_name : 8톤 (이중식, 두께) +2024-10-14 17:09:11,536 - option.py:448 - default_logger - DEBUG - trans_option_37번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:12,173 - option.py:452 - default_logger - INFO - trans_option_37번째 translated_name : [8톤 (이중식, 두께)] 입력 완료 +2024-10-14 17:09:12,174 - option.py:440 - default_logger - DEBUG - trans_option_38번째 translated_name : 30톤 두께 (높이) +2024-10-14 17:09:12,175 - option.py:448 - default_logger - DEBUG - trans_option_38번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:12,549 - option.py:452 - default_logger - INFO - trans_option_38번째 translated_name : [30톤 두께 (높이)] 입력 완료 +2024-10-14 17:09:12,551 - option.py:440 - default_logger - DEBUG - trans_option_39번째 translated_name : 10톤 (이중식, 두께) +2024-10-14 17:09:12,552 - option.py:448 - default_logger - DEBUG - trans_option_39번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:12,623 - option.py:452 - default_logger - INFO - trans_option_39번째 translated_name : [10톤 (이중식, 두께)] 입력 완료 +2024-10-14 17:09:12,624 - option.py:440 - default_logger - DEBUG - trans_option_40번째 translated_name : 32톤 두께 (높이) +2024-10-14 17:09:12,626 - option.py:448 - default_logger - DEBUG - trans_option_40번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:12,869 - option.py:452 - default_logger - INFO - trans_option_40번째 translated_name : [32톤 두께 (높이)] 입력 완료 +2024-10-14 17:09:12,870 - option.py:440 - default_logger - DEBUG - trans_option_41번째 translated_name : 12톤 (이중식, 두께) +2024-10-14 17:09:12,871 - option.py:448 - default_logger - DEBUG - trans_option_41번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:13,301 - option.py:452 - default_logger - INFO - trans_option_41번째 translated_name : [12톤 (이중식, 두께)] 입력 완료 +2024-10-14 17:09:13,303 - option.py:440 - default_logger - DEBUG - trans_option_42번째 translated_name : 16톤 (이중식, 두께) +2024-10-14 17:09:13,304 - option.py:448 - default_logger - DEBUG - trans_option_42번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:13,898 - option.py:452 - default_logger - INFO - trans_option_42번째 translated_name : [16톤 (이중식, 두께)] 입력 완료 +2024-10-14 17:09:13,908 - option.py:440 - default_logger - DEBUG - trans_option_43번째 translated_name : 20톤 (이중식, 두께) +2024-10-14 17:09:13,908 - option.py:448 - default_logger - DEBUG - trans_option_43번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:14,272 - option.py:452 - default_logger - INFO - trans_option_43번째 translated_name : [20톤 (이중식, 두께)] 입력 완료 +2024-10-14 17:09:14,273 - option.py:440 - default_logger - DEBUG - trans_option_44번째 translated_name : 50톤 두께 (높이) +2024-10-14 17:09:14,274 - option.py:448 - default_logger - DEBUG - trans_option_44번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:09:14,347 - option.py:452 - default_logger - INFO - trans_option_44번째 translated_name : [50톤 두께 (높이)] 입력 완료 +2024-10-14 17:09:14,348 - option.py:464 - default_logger - DEBUG - selected_translated_options 일괄 업데이트: {'立式国标2吨 限量抢': '2톤 국표', '2吨加厚': '2톤 두께', '3吨标准': '3톤 표준', '2吨加厚(带塑盒)': '2톤 두께 (플라스틱 케이스 포함)', '3吨加厚加高': '3톤 두께 (높이)', '3吨标准(带塑盒)': '3톤 표준 (플라스틱 케이스 포함)', '3吨加厚加高(带塑盒)': '3톤 두께 (높이, 플라스틱 케이스 포함)', '5吨加厚加高': '5톤 두께 (높이)', '3吨标准+扳手': '3톤 표준 (렌치 포함)', '(双节液压)2吨 轿车推荐': '2톤 (이중식, 승용차 추천)', '5吨加厚加高(带塑盒)': '5톤 두께 (높이, 플라스틱 케이스 포함)', '3吨加厚加高+扳手': '3톤 두께 (높이, 렌치 포함)', '3吨标准(带塑盒)+扳手': '3톤 표준 (플라스틱 케이스, 렌치 포함)', '(双节液压)3吨 SUV推荐': '3톤 (이중식, SUV 추천)', '(双节液压)2吨(带塑盒) 轿车推荐款': '2톤 (이중식, 플라스틱 케이스 포함, 승용차 추천)', '3吨加厚加高(带塑盒)+扳手': '3톤 두께 (높이, 플라스틱 케이스, 렌치 포함)', '5吨加厚加高+扳手': '5톤 두께 (높이, 렌치 포함)', '(双节液压)3吨(带塑盒)SUV推荐': '3톤 (이중식, 플라스틱 케이스 포함, SUV 추천)', '8吨加厚加高': '8톤 두께 (높이)', '5吨加厚加高(带塑盒)+扳手': '5톤 두께 (높이, 플라스틱 케이스, 렌치 포함)', '10吨加厚加高': '10톤 두께 (높이)', '(双节液压)2吨+扳手': '2톤 (이중식, 렌치 포함)', '8吨加厚加高(带塑盒)': '8톤 두께 (높이, 플라스틱 케이스 포함)', '(双节液压)3吨 +扳手': '3톤 (이중식, 렌치 포함)', '(双节液压)2吨(带塑盒)+扳手': '2톤 (이중식, 플라스틱 케이스, 렌치 포함)', '10吨加厚加高(带塑盒)': '10톤 두께 (높이, 플라스틱 케이스 포함)', '(双节液压)3吨(带塑盒)+扳手': '3톤 (이중식, 플라스틱 케이스, 렌치 포함)', '12吨加厚加高': '12톤 두께 (높이)', '(双节液压)4吨加厚低版': '4톤 (이중식, 두께, 낮은 버전)', '(双节液压)4吨加厚高版': '4톤 (이중식, 두께, 높은 버전)', '16吨加厚加高': '16톤 두께 (높이)', '(双节液压)4吨加厚低版(带塑盒)': '4톤 (이중식, 두께, 낮은 버전, 플라스틱 케이스 포함)', '(双节液压)6吨加厚低版': '6톤 (이중식, 두께, 낮은 버전)', '(双节液压)4吨加厚高版(带塑盒)': '4톤 (이중식, 두께, 높은 버전, 플라스틱 케이스 포함)', '(双节液压)6吨加厚高版': '6톤 (이중식, 두께, 높은 버전)', '20吨加厚加高': '20톤 두께 (높이)', '(双节液压)8吨加厚': '8톤 (이중식, 두께)', '30吨加厚加高': '30톤 두께 (높이)', '(双节液压)10吨加厚': '10톤 (이중식, 두께)', '32吨加厚加高': '32톤 두께 (높이)', '(双节液压)12吨加厚': '12톤 (이중식, 두께)', '(双节液压)16吨加厚': '16톤 (이중식, 두께)', '(双节液压)20吨加厚': '20톤 (이중식, 두께)', '50吨加厚加高': '50톤 두께 (높이)'} +2024-10-14 17:09:14,350 - option.py:204 - default_logger - DEBUG - [VertexAI] 를 이용한 옵션번역 성공 +2024-10-14 17:09:14,352 - option.py:208 - default_logger - DEBUG - 옵션 필터링 및 조정 : True +2024-10-14 17:09:14,353 - option.py:85 - default_logger - DEBUG - 최저옵션: 89840.90909090909, 표준편차: 21609.071308363007 +2024-10-14 17:09:14,353 - option.py:95 - default_logger - DEBUG - Option 68000 z-score: -1.010728724952486 +2024-10-14 17:09:14,355 - option.py:95 - default_logger - DEBUG - Option 68000 z-score: -1.010728724952486 +2024-10-14 17:09:14,355 - option.py:95 - default_logger - DEBUG - Option 70000 z-score: -0.9181750019599586 +2024-10-14 17:09:14,355 - option.py:95 - default_logger - DEBUG - Option 70000 z-score: -0.9181750019599586 +2024-10-14 17:09:14,356 - option.py:95 - default_logger - DEBUG - Option 72000 z-score: -0.8256212789674312 +2024-10-14 17:09:14,357 - option.py:95 - default_logger - DEBUG - Option 72000 z-score: -0.8256212789674312 +2024-10-14 17:09:14,357 - option.py:95 - default_logger - DEBUG - Option 74000 z-score: -0.7330675559749039 +2024-10-14 17:09:14,358 - option.py:95 - default_logger - DEBUG - Option 75000 z-score: -0.6867906944786402 +2024-10-14 17:09:14,358 - option.py:95 - default_logger - DEBUG - Option 75000 z-score: -0.6867906944786402 +2024-10-14 17:09:14,358 - option.py:95 - default_logger - DEBUG - Option 76000 z-score: -0.6405138329823765 +2024-10-14 17:09:14,360 - option.py:95 - default_logger - DEBUG - Option 77000 z-score: -0.5942369714861129 +2024-10-14 17:09:14,361 - option.py:95 - default_logger - DEBUG - Option 77000 z-score: -0.5942369714861129 +2024-10-14 17:09:14,361 - option.py:95 - default_logger - DEBUG - Option 77000 z-score: -0.5942369714861129 +2024-10-14 17:09:14,362 - option.py:95 - default_logger - DEBUG - Option 78000 z-score: -0.5479601099898492 +2024-10-14 17:09:14,362 - option.py:95 - default_logger - DEBUG - Option 79000 z-score: -0.5016832484935856 +2024-10-14 17:09:14,364 - option.py:95 - default_logger - DEBUG - Option 79000 z-score: -0.5016832484935856 +2024-10-14 17:09:14,365 - option.py:95 - default_logger - DEBUG - Option 80000 z-score: -0.4554063869973219 +2024-10-14 17:09:14,366 - option.py:95 - default_logger - DEBUG - Option 80000 z-score: -0.4554063869973219 +2024-10-14 17:09:14,366 - option.py:95 - default_logger - DEBUG - Option 81000 z-score: -0.4091295255010582 +2024-10-14 17:09:14,367 - option.py:95 - default_logger - DEBUG - Option 82000 z-score: -0.36285266400479455 +2024-10-14 17:09:14,367 - option.py:95 - default_logger - DEBUG - Option 83000 z-score: -0.3165758025085309 +2024-10-14 17:09:14,368 - option.py:95 - default_logger - DEBUG - Option 83000 z-score: -0.3165758025085309 +2024-10-14 17:09:14,369 - option.py:95 - default_logger - DEBUG - Option 84000 z-score: -0.2702989410122672 +2024-10-14 17:09:14,369 - option.py:95 - default_logger - DEBUG - Option 85000 z-score: -0.22402207951600353 +2024-10-14 17:09:14,370 - option.py:95 - default_logger - DEBUG - Option 85000 z-score: -0.22402207951600353 +2024-10-14 17:09:14,372 - option.py:95 - default_logger - DEBUG - Option 85000 z-score: -0.22402207951600353 +2024-10-14 17:09:14,373 - option.py:95 - default_logger - DEBUG - Option 86000 z-score: -0.1777452180197399 +2024-10-14 17:09:14,373 - option.py:95 - default_logger - DEBUG - Option 87000 z-score: -0.13146835652347622 +2024-10-14 17:09:14,374 - option.py:95 - default_logger - DEBUG - Option 89000 z-score: -0.03891463353094887 +2024-10-14 17:09:14,374 - option.py:95 - default_logger - DEBUG - Option 92000 z-score: 0.09991595095784213 +2024-10-14 17:09:14,375 - option.py:95 - default_logger - DEBUG - Option 93000 z-score: 0.14619281245410579 +2024-10-14 17:09:14,376 - option.py:95 - default_logger - DEBUG - Option 93000 z-score: 0.14619281245410579 +2024-10-14 17:09:14,376 - option.py:95 - default_logger - DEBUG - Option 94000 z-score: 0.19246967395036946 +2024-10-14 17:09:14,377 - option.py:95 - default_logger - DEBUG - Option 96000 z-score: 0.2850233969428968 +2024-10-14 17:09:14,377 - option.py:95 - default_logger - DEBUG - Option 96000 z-score: 0.2850233969428968 +2024-10-14 17:09:14,378 - option.py:95 - default_logger - DEBUG - Option 99000 z-score: 0.4238539814316878 +2024-10-14 17:09:14,378 - option.py:95 - default_logger - DEBUG - Option 101000 z-score: 0.5164077044242151 +2024-10-14 17:09:14,379 - option.py:95 - default_logger - DEBUG - Option 106000 z-score: 0.7477920119055335 +2024-10-14 17:09:14,379 - option.py:95 - default_logger - DEBUG - Option 109000 z-score: 0.8866225963943245 +2024-10-14 17:09:14,380 - option.py:95 - default_logger - DEBUG - Option 115000 z-score: 1.1642837653719065 +2024-10-14 17:09:14,381 - option.py:95 - default_logger - DEBUG - Option 124000 z-score: 1.5807755188382795 +2024-10-14 17:09:14,381 - option.py:95 - default_logger - DEBUG - Option 133000 z-score: 1.9972672723046525 +2024-10-14 17:09:14,382 - option.py:95 - default_logger - DEBUG - Option 144000 z-score: 2.506312748763553 +2024-10-14 17:09:14,382 - option.py:95 - default_logger - DEBUG - Option 181000 z-score: 4.218556624125308 +2024-10-14 17:09:14,383 - option.py:99 - default_logger - DEBUG - Z-스코어 필터링: [72000, 72000, 74000, 75000, 75000, 76000, 77000, 77000, 77000, 78000, 79000, 79000, 80000, 80000, 81000, 82000, 83000, 83000, 84000, 85000, 85000, 85000, 86000, 87000, 89000, 92000, 93000, 93000, 94000, 96000, 96000, 99000, 101000, 106000, 109000, 115000] +2024-10-14 17:09:14,383 - option.py:107 - default_logger - DEBUG - 필터링된 본품옵션의 최저가: 72000, 마켓상한선: 144000 +2024-10-14 17:09:14,384 - option.py:112 - default_logger - DEBUG - 최종 선택된 옵션: [('3吨加厚加高', 72000), ('3吨标准(带塑盒)', 72000), ('3吨加厚加高(带塑盒)', 74000), ('5吨加厚加高', 75000), ('3吨标准+扳手', 75000), ('(双节液压)2吨 轿车推荐', 76000), ('5吨加厚加高(带塑盒)', 77000), ('3吨加厚加高+扳手', 77000), ('3吨标准(带塑盒)+扳手', 77000), ('(双节液压)3吨 SUV推荐', 78000), ('(双节液压)2吨(带塑盒) 轿车推荐款', 79000), ('3吨加厚加高(带塑盒)+扳手', 79000), ('5吨加厚加高+扳手', 80000), ('(双节液压)3吨(带塑盒)SUV推荐', 80000), ('8吨加厚加高', 81000), ('5吨加厚加高(带塑盒)+扳手', 82000), ('10吨加厚加高', 83000), ('(双节液压)2吨+扳手', 83000), ('8吨加厚加高(带塑盒)', 84000), ('(双节液压)3吨 +扳手', 85000), ('(双节液压)2吨(带塑盒)+扳手', 85000), ('10吨加厚加高(带塑盒)', 85000), ('(双节液压)3吨(带塑盒)+扳手', 86000), ('12吨加厚加高', 87000), ('(双节液压)4吨加厚低版', 89000), ('(双节液压)4吨加厚高版', 92000), ('16吨加厚加高', 93000), ('(双节液压)4吨加厚低版(带塑盒)', 93000), ('(双节液压)6吨加厚低版', 94000), ('(双节液压)4吨加厚高版(带塑盒)', 96000), ('(双节液压)6吨加厚高版', 96000), ('20吨加厚加高', 99000), ('(双节液压)8吨加厚', 101000), ('30吨加厚加高', 106000), ('(双节液压)10吨加厚', 109000), ('32吨加厚加高', 115000)] +2024-10-14 17:09:14,584 - option.py:537 - default_logger - DEBUG - 옵션 이름: 立式国标2吨 限量抢, 필터링된 옵션에 포함 여부: False +2024-10-14 17:09:14,733 - option.py:537 - default_logger - DEBUG - 옵션 이름: 2吨加厚, 필터링된 옵션에 포함 여부: False +2024-10-14 17:09:14,764 - option.py:537 - default_logger - DEBUG - 옵션 이름: 3吨标准, 필터링된 옵션에 포함 여부: False +2024-10-14 17:09:15,076 - option.py:537 - default_logger - DEBUG - 옵션 이름: 2吨加厚(带塑盒), 필터링된 옵션에 포함 여부: False +2024-10-14 17:09:15,365 - option.py:537 - default_logger - DEBUG - 옵션 이름: 3吨加厚加高, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:16,018 - option.py:537 - default_logger - DEBUG - 옵션 이름: 3吨标准(带塑盒), 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:16,463 - option.py:537 - default_logger - DEBUG - 옵션 이름: 3吨加厚加高(带塑盒), 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:16,967 - option.py:537 - default_logger - DEBUG - 옵션 이름: 5吨加厚加高, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:17,508 - option.py:537 - default_logger - DEBUG - 옵션 이름: 3吨标准+扳手, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:17,992 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)2吨 轿车推荐, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:18,490 - option.py:537 - default_logger - DEBUG - 옵션 이름: 5吨加厚加高(带塑盒), 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:19,004 - option.py:537 - default_logger - DEBUG - 옵션 이름: 3吨加厚加高+扳手, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:19,514 - option.py:537 - default_logger - DEBUG - 옵션 이름: 3吨标准(带塑盒)+扳手, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:20,012 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)3吨 SUV推荐, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:20,585 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)2吨(带塑盒) 轿车推荐款, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:21,156 - option.py:537 - default_logger - DEBUG - 옵션 이름: 3吨加厚加高(带塑盒)+扳手, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:21,742 - option.py:537 - default_logger - DEBUG - 옵션 이름: 5吨加厚加高+扳手, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:22,243 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)3吨(带塑盒)SUV推荐, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:22,802 - option.py:537 - default_logger - DEBUG - 옵션 이름: 8吨加厚加高, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:23,298 - option.py:537 - default_logger - DEBUG - 옵션 이름: 5吨加厚加高(带塑盒)+扳手, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:23,798 - option.py:537 - default_logger - DEBUG - 옵션 이름: 10吨加厚加高, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:24,345 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)2吨+扳手, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:24,848 - option.py:537 - default_logger - DEBUG - 옵션 이름: 8吨加厚加高(带塑盒), 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:25,458 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)3吨 +扳手, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:25,941 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)2吨(带塑盒)+扳手, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:26,461 - option.py:537 - default_logger - DEBUG - 옵션 이름: 10吨加厚加高(带塑盒), 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:26,943 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)3吨(带塑盒)+扳手, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:27,461 - option.py:537 - default_logger - DEBUG - 옵션 이름: 12吨加厚加高, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:27,975 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)4吨加厚低版, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:28,437 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)4吨加厚高版, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:28,989 - option.py:537 - default_logger - DEBUG - 옵션 이름: 16吨加厚加高, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:29,444 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)4吨加厚低版(带塑盒), 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:29,935 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)6吨加厚低版, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:30,439 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)4吨加厚高版(带塑盒), 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:30,918 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)6吨加厚高版, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:31,380 - option.py:537 - default_logger - DEBUG - 옵션 이름: 20吨加厚加高, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:31,876 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)8吨加厚, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:32,344 - option.py:537 - default_logger - DEBUG - 옵션 이름: 30吨加厚加高, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:32,892 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)10吨加厚, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:33,357 - option.py:537 - default_logger - DEBUG - 옵션 이름: 32吨加厚加高, 필터링된 옵션에 포함 여부: True +2024-10-14 17:09:33,858 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)12吨加厚, 필터링된 옵션에 포함 여부: False +2024-10-14 17:09:33,871 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)16吨加厚, 필터링된 옵션에 포함 여부: False +2024-10-14 17:09:33,891 - option.py:537 - default_logger - DEBUG - 옵션 이름: (双节液压)20吨加厚, 필터링된 옵션에 포함 여부: False +2024-10-14 17:09:33,904 - option.py:537 - default_logger - DEBUG - 옵션 이름: 50吨加厚加高, 필터링된 옵션에 포함 여부: False +2024-10-14 17:09:33,905 - option.py:548 - default_logger - DEBUG - 옵션 체크 상태 조정 완료. +2024-10-14 17:09:33,907 - option.py:212 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 17:09:33,907 - option.py:141 - default_logger - ERROR - 선택된 옵션 저장 중 오류 발생: list indices must be integers or slices, not str +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 120, in store_selected_options + total_options_count = len([self.option_info]['original_names']) + ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ +TypeError: list indices must be integers or slices, not str +2024-10-14 17:09:33,907 - option.py:243 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 17:09:33,909 - option.py:247 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 17:09:34,388 - option.py:250 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 17:09:34,879 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 17:09:34,882 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 17:09:34,882 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 17:09:35,477 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 17:09:35,479 - gui.py:754 - default_logger - DEBUG - 3/[31]개 상품 수정 완료. +2024-10-14 17:09:35,479 - gui.py:696 - default_logger - DEBUG - 번역 작업이 중단되었습니다. +2024-10-14 17:09:37,893 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 17:13:29,103 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 17:13:29,103 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 17:13:29,116 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 17:13:29,117 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 17:13:29,117 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 17:13:29,134 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 17:13:29,142 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 17:13:29,143 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:13:29,156 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 17:13:29,289 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:13:29,291 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 17:13:29,292 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 17:13:29,292 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 17:13:29,292 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:13:29,294 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 17:13:29,295 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 17:13:29,295 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 17:13:29,295 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 17:13:29,296 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 17:13:54,926 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 17:13:54,926 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 17:13:54,926 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 17:13:54,926 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 17:13:56,813 - gui.py:449 - default_logger - DEBUG - 옵션명 AI번역 버튼 - 활성화 선택 +2024-10-14 17:13:57,089 - gui.py:449 - default_logger - DEBUG - 옵션 Auto선택 버튼 - 활성화 선택 +2024-10-14 17:13:59,455 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 17:13:59,466 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 17:13:59,468 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 329516 +2024-10-14 17:13:59,468 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 17:13:59,725 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 17:14:01,636 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 17:14:01,838 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 17:14:01,841 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 17:14:02,195 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 17:14:02,196 - option.py:39 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:14:02,197 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:14:02,198 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:14:03,314 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 17:14:03,317 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 17:14:03,317 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 17:14:03,934 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 17:14:03,934 - browser_control.py:173 - default_logger - DEBUG - 총 상품수 확인: 총 31개 상품 +2024-10-14 17:14:03,934 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 17:14:03,946 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 17:14:03,946 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 17:14:03,970 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 17:14:04,573 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 17:14:05,094 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 17:14:05,108 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 17:14:05,312 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 17:14:05,314 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 17:14:05,329 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 17:14:05,339 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 17:14:05,360 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 17:14:05,360 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 17:14:06,161 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 17:14:06,162 - option.py:152 - default_logger - DEBUG - 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2에 대한 옵션을 처리 중... +2024-10-14 17:14:08,177 - option.py:266 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 17:14:08,186 - option.py:278 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 17:14:08,187 - option.py:563 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 17:14:08,269 - option.py:181 - default_logger - DEBUG - 옵션 AI번역 : True +2024-10-14 17:14:08,284 - option.py:295 - default_logger - DEBUG - 총 옵션 갯수: 18 +2024-10-14 17:14:08,338 - option.py:330 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,365 - option.py:330 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,398 - option.py:330 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,438 - option.py:330 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,484 - option.py:330 - default_logger - DEBUG - 5번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,518 - option.py:330 - default_logger - DEBUG - 6번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,549 - option.py:330 - default_logger - DEBUG - 7번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,586 - option.py:330 - default_logger - DEBUG - 8번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,614 - option.py:330 - default_logger - DEBUG - 9번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,657 - option.py:330 - default_logger - DEBUG - 10번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,681 - option.py:330 - default_logger - DEBUG - 11번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,727 - option.py:330 - default_logger - DEBUG - 12번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,758 - option.py:330 - default_logger - DEBUG - 13번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,784 - option.py:330 - default_logger - DEBUG - 14번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,822 - option.py:330 - default_logger - DEBUG - 15번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,853 - option.py:330 - default_logger - DEBUG - 16번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,904 - option.py:330 - default_logger - DEBUG - 17번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,940 - option.py:330 - default_logger - DEBUG - 18번째 옵션 정보 수집 완료 +2024-10-14 17:14:08,940 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C4-LW', 'origin_option_7': 'DSG-02-3C5', 'origin_option_8': 'DSG-03-3C3', 'origin_option_9': 'DSG-02-3C60-DL 电磁换向阀', 'origin_option_10': 'DSG-02-3C6-DC24', 'origin_option_11': 'DSG-02-3C6-DC24-50', 'origin_option_12': 'DSG-02-3C6-AC220V', 'origin_option_13': 'DSG-02-3C9', 'origin_option_14': 'DSG-02-3C10', 'origin_option_15': 'DSG-02-3C11', 'origin_option_16': 'DSG-02-3C12', 'origin_option_17': '提示勿拍:其他型号规格请联系客服', 'origin_option_18': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 17:14:08,947 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-N-50 +2024-10-14 17:14:08,948 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-N-50 +2024-10-14 17:14:08,949 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-A220 +2024-10-14 17:14:08,949 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-A220 +2024-10-14 17:14:08,950 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-DL-D2 +2024-10-14 17:14:08,950 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-DL-D2 +2024-10-14 17:14:08,952 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-D24V +2024-10-14 17:14:08,952 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-D24V +2024-10-14 17:14:08,952 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-A220V +2024-10-14 17:14:08,952 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-A220V +2024-10-14 17:14:08,952 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-LW +2024-10-14 17:14:08,952 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-LW +2024-10-14 17:14:08,952 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C5 +2024-10-14 17:14:08,952 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C5 +2024-10-14 17:14:08,952 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-03-3C3 +2024-10-14 17:14:08,952 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-03-3C3 +2024-10-14 17:14:08,952 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C60-DL 电磁换向阀 +2024-10-14 17:14:08,952 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C60-DL 电磁换向阀 +2024-10-14 17:14:08,952 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DC24 +2024-10-14 17:14:08,952 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DC24 +2024-10-14 17:14:08,952 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DC24-50 +2024-10-14 17:14:08,952 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DC24-50 +2024-10-14 17:14:08,952 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-AC220V +2024-10-14 17:14:08,952 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-AC220V +2024-10-14 17:14:08,964 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C9 +2024-10-14 17:14:08,965 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C9 +2024-10-14 17:14:08,966 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C10 +2024-10-14 17:14:08,966 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C10 +2024-10-14 17:14:08,967 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C11 +2024-10-14 17:14:08,968 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C11 +2024-10-14 17:14:08,969 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C12 +2024-10-14 17:14:08,969 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C12 +2024-10-14 17:14:08,970 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 提示勿拍:其他型号规格请联系客服 +2024-10-14 17:14:08,971 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 提示勿拍其他型号规格请联系客服 +2024-10-14 17:14:08,971 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 17:14:08,971 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 17:14:08,971 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C4-LW', 'origin_option_7': 'DSG-02-3C5', 'origin_option_8': 'DSG-03-3C3', 'origin_option_9': 'DSG-02-3C60-DL 电磁换向阀', 'origin_option_10': 'DSG-02-3C6-DC24', 'origin_option_11': 'DSG-02-3C6-DC24-50', 'origin_option_12': 'DSG-02-3C6-AC220V', 'origin_option_13': 'DSG-02-3C9', 'origin_option_14': 'DSG-02-3C10', 'origin_option_15': 'DSG-02-3C11', 'origin_option_16': 'DSG-02-3C12', 'origin_option_17': '提示勿拍其他型号规格请联系客服', 'origin_option_18': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 17:14:08,971 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "DSG-02-3C2-N-50", "origin_option_2": "DSG-02-3C2-A220", "origin_option_3": "DSG-02-3C2-DL-D2", "origin_option_4": "DSG-02-3C4-DL-D24V", "origin_option_5": "DSG-02-3C4-DL-A220V", "origin_option_6": "DSG-02-3C4-LW", "origin_option_7": "DSG-02-3C5", "origin_option_8": "DSG-03-3C3", "origin_option_9": "DSG-02-3C60-DL 电磁换向阀", "origin_option_10": "DSG-02-3C6-DC24", "origin_option_11": "DSG-02-3C6-DC24-50", "origin_option_12": "DSG-02-3C6-AC220V", "origin_option_13": "DSG-02-3C9", "origin_option_14": "DSG-02-3C10", "origin_option_15": "DSG-02-3C11", "origin_option_16": "DSG-02-3C12", "origin_option_17": "提示勿拍其他型号规格请联系客服", "origin_option_18": "DSG-02-3C6-DL 电磁换向阀"} +2024-10-14 17:14:08,971 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 17:14:11,324 - vertexAI.py:144 - default_logger - DEBUG - 모델 응답: ```json +{ + "trans_option_1": "3C2-N-50", + "trans_option_2": "3C2-A220", + "trans_option_3": "3C2-DL-D2", + "trans_option_4": "3C4-DL-D24V", + "trans_option_5": "3C4-DL-A220V", + "trans_option_6": "3C4-LW", + "trans_option_7": "3C5", + "trans_option_8": "3C3", + "trans_option_9": "3C60-DL 전자식 변환 밸브", + "trans_option_10": "3C6-DC24", + "trans_option_11": "3C6-DC24-50", + "trans_option_12": "3C6-AC220V", + "trans_option_13": "3C9", + "trans_option_14": "3C10", + "trans_option_15": "3C11", + "trans_option_16": "3C12", + "trans_option_17": "3C6-DL 전자식 변환 밸브" +} +``` +2024-10-14 17:14:11,324 - vertexAI.py:151 - default_logger - DEBUG - 응답에서 추출된 JSON 텍스트: { + "trans_option_1": "3C2-N-50", + "trans_option_2": "3C2-A220", + "trans_option_3": "3C2-DL-D2", + "trans_option_4": "3C4-DL-D24V", + "trans_option_5": "3C4-DL-A220V", + "trans_option_6": "3C4-LW", + "trans_option_7": "3C5", + "trans_option_8": "3C3", + "trans_option_9": "3C60-DL 전자식 변환 밸브", + "trans_option_10": "3C6-DC24", + "trans_option_11": "3C6-DC24-50", + "trans_option_12": "3C6-AC220V", + "trans_option_13": "3C9", + "trans_option_14": "3C10", + "trans_option_15": "3C11", + "trans_option_16": "3C12", + "trans_option_17": "3C6-DL 전자식 변환 밸브" +} +2024-10-14 17:14:11,338 - vertexAI.py:154 - default_logger - DEBUG - 번역된 데이터: {'trans_option_1': '3C2-N-50', 'trans_option_2': '3C2-A220', 'trans_option_3': '3C2-DL-D2', 'trans_option_4': '3C4-DL-D24V', 'trans_option_5': '3C4-DL-A220V', 'trans_option_6': '3C4-LW', 'trans_option_7': '3C5', 'trans_option_8': '3C3', 'trans_option_9': '3C60-DL 전자식 변환 밸브', 'trans_option_10': '3C6-DC24', 'trans_option_11': '3C6-DC24-50', 'trans_option_12': '3C6-AC220V', 'trans_option_13': '3C9', 'trans_option_14': '3C10', 'trans_option_15': '3C11', 'trans_option_16': '3C12', 'trans_option_17': '3C6-DL 전자식 변환 밸브'} +2024-10-14 17:14:11,339 - option.py:189 - default_logger - DEBUG - 번역된 옵션 입력 +2024-10-14 17:14:11,340 - option.py:440 - default_logger - DEBUG - trans_option_1번째 translated_name : 3C2-N-50 +2024-10-14 17:14:11,340 - option.py:448 - default_logger - DEBUG - trans_option_1번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,354 - option.py:452 - default_logger - INFO - trans_option_1번째 translated_name : [3C2-N-50] 입력 완료 +2024-10-14 17:14:11,354 - option.py:440 - default_logger - DEBUG - trans_option_2번째 translated_name : 3C2-A220 +2024-10-14 17:14:11,354 - option.py:448 - default_logger - DEBUG - trans_option_2번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,379 - option.py:452 - default_logger - INFO - trans_option_2번째 translated_name : [3C2-A220] 입력 완료 +2024-10-14 17:14:11,379 - option.py:440 - default_logger - DEBUG - trans_option_3번째 translated_name : 3C2-DL-D2 +2024-10-14 17:14:11,383 - option.py:448 - default_logger - DEBUG - trans_option_3번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,395 - option.py:452 - default_logger - INFO - trans_option_3번째 translated_name : [3C2-DL-D2] 입력 완료 +2024-10-14 17:14:11,395 - option.py:440 - default_logger - DEBUG - trans_option_4번째 translated_name : 3C4-DL-D24V +2024-10-14 17:14:11,395 - option.py:448 - default_logger - DEBUG - trans_option_4번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,440 - option.py:452 - default_logger - INFO - trans_option_4번째 translated_name : [3C4-DL-D24V] 입력 완료 +2024-10-14 17:14:11,441 - option.py:440 - default_logger - DEBUG - trans_option_5번째 translated_name : 3C4-DL-A220V +2024-10-14 17:14:11,441 - option.py:448 - default_logger - DEBUG - trans_option_5번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,489 - option.py:452 - default_logger - INFO - trans_option_5번째 translated_name : [3C4-DL-A220V] 입력 완료 +2024-10-14 17:14:11,490 - option.py:440 - default_logger - DEBUG - trans_option_6번째 translated_name : 3C4-LW +2024-10-14 17:14:11,491 - option.py:448 - default_logger - DEBUG - trans_option_6번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,540 - option.py:452 - default_logger - INFO - trans_option_6번째 translated_name : [3C4-LW] 입력 완료 +2024-10-14 17:14:11,541 - option.py:440 - default_logger - DEBUG - trans_option_7번째 translated_name : 3C5 +2024-10-14 17:14:11,542 - option.py:448 - default_logger - DEBUG - trans_option_7번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,585 - option.py:452 - default_logger - INFO - trans_option_7번째 translated_name : [3C5] 입력 완료 +2024-10-14 17:14:11,585 - option.py:440 - default_logger - DEBUG - trans_option_8번째 translated_name : 3C3 +2024-10-14 17:14:11,585 - option.py:448 - default_logger - DEBUG - trans_option_8번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,615 - option.py:452 - default_logger - INFO - trans_option_8번째 translated_name : [3C3] 입력 완료 +2024-10-14 17:14:11,618 - option.py:440 - default_logger - DEBUG - trans_option_9번째 translated_name : 3C60-DL 전자식 변환 밸브 +2024-10-14 17:14:11,618 - option.py:448 - default_logger - DEBUG - trans_option_9번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,651 - option.py:452 - default_logger - INFO - trans_option_9번째 translated_name : [3C60-DL 전자식 변환 밸브] 입력 완료 +2024-10-14 17:14:11,651 - option.py:440 - default_logger - DEBUG - trans_option_10번째 translated_name : 3C6-DC24 +2024-10-14 17:14:11,651 - option.py:448 - default_logger - DEBUG - trans_option_10번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,692 - option.py:452 - default_logger - INFO - trans_option_10번째 translated_name : [3C6-DC24] 입력 완료 +2024-10-14 17:14:11,692 - option.py:440 - default_logger - DEBUG - trans_option_11번째 translated_name : 3C6-DC24-50 +2024-10-14 17:14:11,692 - option.py:448 - default_logger - DEBUG - trans_option_11번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,730 - option.py:452 - default_logger - INFO - trans_option_11번째 translated_name : [3C6-DC24-50] 입력 완료 +2024-10-14 17:14:11,731 - option.py:440 - default_logger - DEBUG - trans_option_12번째 translated_name : 3C6-AC220V +2024-10-14 17:14:11,732 - option.py:448 - default_logger - DEBUG - trans_option_12번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,763 - option.py:452 - default_logger - INFO - trans_option_12번째 translated_name : [3C6-AC220V] 입력 완료 +2024-10-14 17:14:11,765 - option.py:440 - default_logger - DEBUG - trans_option_13번째 translated_name : 3C9 +2024-10-14 17:14:11,765 - option.py:448 - default_logger - DEBUG - trans_option_13번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,796 - option.py:452 - default_logger - INFO - trans_option_13번째 translated_name : [3C9] 입력 완료 +2024-10-14 17:14:11,796 - option.py:440 - default_logger - DEBUG - trans_option_14번째 translated_name : 3C10 +2024-10-14 17:14:11,796 - option.py:448 - default_logger - DEBUG - trans_option_14번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,831 - option.py:452 - default_logger - INFO - trans_option_14번째 translated_name : [3C10] 입력 완료 +2024-10-14 17:14:11,831 - option.py:440 - default_logger - DEBUG - trans_option_15번째 translated_name : 3C11 +2024-10-14 17:14:11,831 - option.py:448 - default_logger - DEBUG - trans_option_15번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,870 - option.py:452 - default_logger - INFO - trans_option_15번째 translated_name : [3C11] 입력 완료 +2024-10-14 17:14:11,870 - option.py:440 - default_logger - DEBUG - trans_option_16번째 translated_name : 3C12 +2024-10-14 17:14:11,870 - option.py:448 - default_logger - DEBUG - trans_option_16번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:11,958 - option.py:452 - default_logger - INFO - trans_option_16번째 translated_name : [3C12] 입력 완료 +2024-10-14 17:14:11,959 - option.py:440 - default_logger - DEBUG - trans_option_17번째 translated_name : 3C6-DL 전자식 변환 밸브 +2024-10-14 17:14:11,960 - option.py:448 - default_logger - DEBUG - trans_option_17번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:14:12,240 - option.py:452 - default_logger - INFO - trans_option_17번째 translated_name : [3C6-DL 전자식 변환 밸브] 입력 완료 +2024-10-14 17:14:12,241 - option.py:464 - default_logger - DEBUG - selected_translated_options 일괄 업데이트: {'DSG-02-3C2-N-50': '3C2-N-50', 'DSG-02-3C2-A220': '3C2-A220', 'DSG-02-3C2-DL-D2': '3C2-DL-D2', 'DSG-02-3C4-DL-D24V': '3C4-DL-D24V', 'DSG-02-3C4-DL-A220V': '3C4-DL-A220V', 'DSG-02-3C4-LW': '3C4-LW', 'DSG-02-3C5': '3C5', 'DSG-03-3C3': '3C3', 'DSG-02-3C60-DL 电磁换向阀': '3C60-DL 전자식 변환 밸브', 'DSG-02-3C6-DC24': '3C6-DC24', 'DSG-02-3C6-DC24-50': '3C6-DC24-50', 'DSG-02-3C6-AC220V': '3C6-AC220V', 'DSG-02-3C9': '3C9', 'DSG-02-3C10': '3C10', 'DSG-02-3C11': '3C11', 'DSG-02-3C12': '3C12', '提示勿拍:其他型号规格请联系客服': '3C6-DL 전자식 변환 밸브'} +2024-10-14 17:14:12,242 - option.py:204 - default_logger - DEBUG - [VertexAI] 를 이용한 옵션번역 성공 +2024-10-14 17:14:12,244 - option.py:208 - default_logger - DEBUG - 옵션 필터링 및 조정 : True +2024-10-14 17:14:12,245 - option.py:85 - default_logger - DEBUG - 최저옵션: 148555.55555555556, 표준편차: 22289.066134223805 +2024-10-14 17:14:12,245 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:14:12,246 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:14:12,246 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:14:12,247 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:14:12,247 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:14:12,247 - option.py:95 - default_logger - DEBUG - Option 147000 z-score: -0.06979007313218386 +2024-10-14 17:14:12,247 - option.py:95 - default_logger - DEBUG - Option 147000 z-score: -0.06979007313218386 +2024-10-14 17:14:12,247 - option.py:95 - default_logger - DEBUG - Option 154000 z-score: 0.2442652559626422 +2024-10-14 17:14:12,247 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:14:12,252 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:14:12,252 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:14:12,252 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:14:12,252 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:14:12,252 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:14:12,252 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:14:12,252 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:14:12,252 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:14:12,252 - option.py:95 - default_logger - DEBUG - Option 201000 z-score: 2.3529224655993315 +2024-10-14 17:14:12,252 - option.py:99 - default_logger - DEBUG - Z-스코어 필터링: [147000, 147000, 154000, 160000, 160000, 160000, 160000, 160000, 160000, 160000, 160000, 160000] +2024-10-14 17:14:12,252 - option.py:107 - default_logger - DEBUG - 필터링된 본품옵션의 최저가: 147000, 마켓상한선: 294000 +2024-10-14 17:14:12,262 - option.py:112 - default_logger - DEBUG - 최종 선택된 옵션: [('DSG-02-3C4-LW', 147000), ('DSG-02-3C5', 147000), ('DSG-03-3C3', 154000), ('DSG-02-3C60-DL 电磁换向阀', 160000), ('DSG-02-3C6-DC24', 160000), ('DSG-02-3C6-DC24-50', 160000), ('DSG-02-3C6-AC220V', 160000), ('DSG-02-3C9', 160000), ('DSG-02-3C10', 160000), ('DSG-02-3C11', 160000), ('DSG-02-3C12', 160000), ('提示勿拍:其他型号规格请联系客服', 160000)] +2024-10-14 17:14:12,371 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-N-50, 필터링된 옵션에 포함 여부: False +2024-10-14 17:14:12,386 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-A220, 필터링된 옵션에 포함 여부: False +2024-10-14 17:14:12,396 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-DL-D2, 필터링된 옵션에 포함 여부: False +2024-10-14 17:14:12,403 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C4-DL-D24V, 필터링된 옵션에 포함 여부: False +2024-10-14 17:14:12,420 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C4-DL-A220V, 필터링된 옵션에 포함 여부: False +2024-10-14 17:14:12,435 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C4-LW, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:12,687 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C5, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:12,988 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-03-3C3, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:13,208 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C60-DL 电磁换向阀, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:13,441 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-DC24, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:13,669 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-DC24-50, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:13,889 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-AC220V, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:14,203 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C9, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:14,437 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C10, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:14,649 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C11, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:14,902 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C12, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:15,132 - option.py:537 - default_logger - DEBUG - 옵션 이름: 提示勿拍:其他型号规格请联系客服, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:15,359 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-DL 电磁换向阀, 필터링된 옵션에 포함 여부: False +2024-10-14 17:14:15,359 - option.py:553 - default_logger - DEBUG - 옵션 체크 상태 조정 완료. +2024-10-14 17:14:15,359 - option.py:212 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 17:14:15,361 - option.py:141 - default_logger - ERROR - 선택된 옵션 저장 중 오류 발생: list indices must be integers or slices, not str +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 120, in store_selected_options + total_options_count = len([self.option_info]['original_names']) + ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ +TypeError: list indices must be integers or slices, not str +2024-10-14 17:14:15,362 - option.py:243 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 17:14:15,365 - option.py:247 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 17:14:15,501 - option.py:250 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 17:14:15,953 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 17:14:15,955 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 17:14:16,291 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 17:14:16,294 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 17:14:16,295 - gui.py:699 - default_logger - DEBUG - 2/20: 세부사항 수정 작업 중... +2024-10-14 17:14:16,398 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 17:14:16,779 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 17:14:17,329 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 17:14:17,344 - title.py:94 - default_logger - DEBUG - 원본 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机 +2024-10-14 17:14:17,344 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 17:14:17,345 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 17:14:17,354 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 17:14:17,360 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 17:14:17,372 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 17:14:17,372 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 17:14:17,719 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 17:14:17,721 - option.py:152 - default_logger - DEBUG - 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机에 대한 옵션을 처리 중... +2024-10-14 17:14:19,734 - option.py:266 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 17:14:19,743 - option.py:278 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 17:14:19,744 - option.py:563 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 17:14:19,799 - option.py:181 - default_logger - DEBUG - 옵션 AI번역 : True +2024-10-14 17:14:19,812 - option.py:295 - default_logger - DEBUG - 총 옵션 갯수: 5 +2024-10-14 17:14:19,861 - option.py:330 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 17:14:19,910 - option.py:330 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 17:14:19,947 - option.py:330 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 17:14:20,012 - option.py:330 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 17:14:20,058 - option.py:330 - default_logger - DEBUG - 5번째 옵션 정보 수집 완료 +2024-10-14 17:14:20,060 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': '香水 小样压盖机', 'origin_option_2': '香水瓶 中套压盖机 适合13MM 15MM盖子', 'origin_option_3': '喷雾瓶 卡扣式压盖机', 'origin_option_4': '中套压盖机 20MM瓶口专用 适合 20MM 瓶口', 'origin_option_5': '小样分装+香水瓶卡扣 两种压头 13 15MM中盖'} +2024-10-14 17:14:20,060 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 香水 小样压盖机 +2024-10-14 17:14:20,060 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 香水 小样压盖机 +2024-10-14 17:14:20,060 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 香水瓶 中套压盖机 适合13MM 15MM盖子 +2024-10-14 17:14:20,060 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 香水瓶 中套压盖机 适合13MM 15MM盖子 +2024-10-14 17:14:20,060 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 喷雾瓶 卡扣式压盖机 +2024-10-14 17:14:20,060 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 喷雾瓶 卡扣式压盖机 +2024-10-14 17:14:20,060 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口 +2024-10-14 17:14:20,060 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口 +2024-10-14 17:14:20,060 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 小样分装+香水瓶卡扣 两种压头 13 15MM中盖 +2024-10-14 17:14:20,060 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 小样分装+香水瓶卡扣 两种压头 13 15MM中盖 +2024-10-14 17:14:20,060 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': '香水 小样压盖机', 'origin_option_2': '香水瓶 中套压盖机 适合13MM 15MM盖子', 'origin_option_3': '喷雾瓶 卡扣式压盖机', 'origin_option_4': '中套压盖机 20MM瓶口专用 适合 20MM 瓶口', 'origin_option_5': '小样分装+香水瓶卡扣 两种压头 13 15MM中盖'} +2024-10-14 17:14:20,060 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "香水 小样压盖机", "origin_option_2": "香水瓶 中套压盖机 适合13MM 15MM盖子", "origin_option_3": "喷雾瓶 卡扣式压盖机", "origin_option_4": "中套压盖机 20MM瓶口专用 适合 20MM 瓶口", "origin_option_5": "小样分装+香水瓶卡扣 两种压头 13 15MM中盖"} +2024-10-14 17:14:20,060 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 17:14:21,227 - option.py:196 - default_logger - ERROR - 안전 필터에 의해 번역 요청이 차단되었습니다. Cannot get the response text. +Cannot get the Candidate text. +Response candidate content has no parts (and thus no text). The candidate is likely blocked by the safety filters. +Content: +{} +Candidate: +{ + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.16308594, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.13867188 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "MEDIUM", + "blocked": true, + "probability_score": 0.71875, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.625 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.15234375, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.080566406 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.22265625, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.12792969 + } + ], + "avg_logprobs": "NaN" +} +Response: +{ + "candidates": [ + { + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.16308594, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.13867188 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "MEDIUM", + "blocked": true, + "probability_score": 0.71875, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.625 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.15234375, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.080566406 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.22265625, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.12792969 + } + ], + "avg_logprobs": "NaN" + } + ], + "usage_metadata": { + "prompt_token_count": 497, + "total_token_count": 497 + }, + "model_version": "gemini-1.5-flash-001" +} +2024-10-14 17:14:21,227 - option.py:197 - default_logger - DEBUG - 퍼센티 자체 AI번역 사용 시도 +2024-10-14 17:14:21,333 - option.py:199 - default_logger - DEBUG - 번역을 위한 5초간 대기 +2024-10-14 17:14:26,335 - option.py:204 - default_logger - DEBUG - [퍼센티AI] 를 이용한 옵션번역 성공 +2024-10-14 17:14:26,336 - option.py:208 - default_logger - DEBUG - 옵션 필터링 및 조정 : True +2024-10-14 17:14:26,337 - option.py:85 - default_logger - DEBUG - 최저옵션: 90000.0, 표준편차: 4000.0 +2024-10-14 17:14:26,338 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:14:26,339 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:14:26,339 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:14:26,340 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:14:26,341 - option.py:95 - default_logger - DEBUG - Option 98000 z-score: 2.0 +2024-10-14 17:14:26,341 - option.py:99 - default_logger - DEBUG - Z-스코어 필터링: [88000, 88000, 88000, 88000] +2024-10-14 17:14:26,342 - option.py:107 - default_logger - DEBUG - 필터링된 본품옵션의 최저가: 88000, 마켓상한선: 176000 +2024-10-14 17:14:26,343 - option.py:112 - default_logger - DEBUG - 최종 선택된 옵션: [('香水 小样压盖机', 88000), ('香水瓶 中套压盖机 适合13MM 15MM盖子', 88000), ('喷雾瓶 卡扣式压盖机', 88000), ('中套压盖机 20MM瓶口专用 适合 20MM 瓶口', 88000)] +2024-10-14 17:14:26,343 - option.py:537 - default_logger - DEBUG - 옵션 이름: 香水 小样压盖机, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:26,533 - option.py:537 - default_logger - DEBUG - 옵션 이름: 香水瓶 中套压盖机 适合13MM 15MM盖子, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:26,735 - option.py:537 - default_logger - DEBUG - 옵션 이름: 喷雾瓶 卡扣式压盖机, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:26,963 - option.py:537 - default_logger - DEBUG - 옵션 이름: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口, 필터링된 옵션에 포함 여부: True +2024-10-14 17:14:27,200 - option.py:537 - default_logger - DEBUG - 옵션 이름: 小样分装+香水瓶卡扣 两种压头 13 15MM中盖, 필터링된 옵션에 포함 여부: False +2024-10-14 17:14:27,201 - option.py:553 - default_logger - DEBUG - 옵션 체크 상태 조정 완료. +2024-10-14 17:14:27,201 - option.py:212 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 17:14:27,201 - option.py:141 - default_logger - ERROR - 선택된 옵션 저장 중 오류 발생: list indices must be integers or slices, not str +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 120, in store_selected_options + total_options_count = len([self.option_info]['original_names']) + ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ +TypeError: list indices must be integers or slices, not str +2024-10-14 17:14:27,205 - option.py:243 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 17:14:27,205 - option.py:247 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 17:14:27,362 - option.py:250 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 17:14:27,817 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 17:14:27,820 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 17:14:28,176 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 17:14:28,179 - gui.py:754 - default_logger - DEBUG - 2/[31]개 상품 수정 완료. +2024-10-14 17:14:28,180 - gui.py:699 - default_logger - DEBUG - 3/20: 세부사항 수정 작업 중... +2024-10-14 17:14:28,216 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 17:14:28,277 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 17:14:28,754 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 17:14:29,300 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 17:14:29,416 - title.py:94 - default_logger - DEBUG - 원본 상품명: 驾驾乐千斤顶液压立式2吨小汽车用5吨货车轿车油压车载手摇千金顶 +2024-10-14 17:14:29,416 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 17:14:29,416 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 17:14:29,432 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 17:14:29,439 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 17:14:29,456 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 17:14:29,458 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 17:14:30,584 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 17:14:30,586 - option.py:152 - default_logger - DEBUG - 상품명: 驾驾乐千斤顶液压立式2吨小汽车用5吨货车轿车油压车载手摇千金顶에 대한 옵션을 처리 중... +2024-10-14 17:14:31,040 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 17:19:15,612 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 17:19:15,612 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 17:19:15,614 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 17:19:15,614 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 17:19:15,614 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 17:19:15,629 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 17:19:15,640 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 17:19:15,640 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:19:15,645 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 17:19:15,721 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:19:15,721 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 17:19:15,721 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 17:19:15,721 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 17:19:15,721 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:19:15,737 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 17:19:15,737 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 17:19:15,737 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 17:19:15,737 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 17:19:15,737 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 17:19:18,467 - gui.py:449 - default_logger - DEBUG - 옵션명 AI번역 버튼 - 활성화 선택 +2024-10-14 17:19:18,729 - gui.py:449 - default_logger - DEBUG - 옵션 Auto선택 버튼 - 활성화 선택 +2024-10-14 17:19:20,184 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 17:19:20,187 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 17:19:20,187 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 17:19:20,188 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 17:19:24,301 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 17:19:24,315 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 17:19:24,317 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 1051160 +2024-10-14 17:19:24,317 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 17:19:24,556 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 17:19:26,241 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 17:19:26,424 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 17:19:26,425 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 17:19:26,757 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 17:19:26,758 - option.py:39 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:19:26,759 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:19:26,760 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:19:28,867 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 17:19:28,867 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 17:19:28,867 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 17:19:29,452 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 17:19:29,452 - browser_control.py:173 - default_logger - DEBUG - 총 상품수 확인: 총 31개 상품 +2024-10-14 17:19:29,452 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 17:19:29,452 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 17:19:29,452 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 17:19:29,489 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 17:19:30,037 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 17:19:30,540 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 17:19:30,595 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 17:19:30,818 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 17:19:30,818 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 17:19:30,832 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 17:19:30,837 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 17:19:30,853 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 17:19:30,854 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 17:19:31,542 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 17:19:31,545 - option.py:152 - default_logger - DEBUG - 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2에 대한 옵션을 처리 중... +2024-10-14 17:19:33,562 - option.py:266 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 17:19:33,572 - option.py:278 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 17:19:33,573 - option.py:565 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 17:19:33,861 - option.py:181 - default_logger - DEBUG - 옵션 AI번역 : True +2024-10-14 17:19:33,892 - option.py:295 - default_logger - DEBUG - 총 옵션 갯수: 6 +2024-10-14 17:19:33,965 - option.py:330 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 17:19:34,020 - option.py:330 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 17:19:34,079 - option.py:330 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 17:19:34,122 - option.py:330 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 17:19:34,183 - option.py:330 - default_logger - DEBUG - 5번째 옵션 정보 수집 완료 +2024-10-14 17:19:34,236 - option.py:330 - default_logger - DEBUG - 6번째 옵션 정보 수집 완료 +2024-10-14 17:19:34,236 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 17:19:34,236 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-N-50 +2024-10-14 17:19:34,236 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-N-50 +2024-10-14 17:19:34,236 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-A220 +2024-10-14 17:19:34,236 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-A220 +2024-10-14 17:19:34,236 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-DL-D2 +2024-10-14 17:19:34,236 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-DL-D2 +2024-10-14 17:19:34,236 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-D24V +2024-10-14 17:19:34,236 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-D24V +2024-10-14 17:19:34,247 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-A220V +2024-10-14 17:19:34,247 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-A220V +2024-10-14 17:19:34,247 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 17:19:34,249 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 17:19:34,250 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 17:19:34,250 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "DSG-02-3C2-N-50", "origin_option_2": "DSG-02-3C2-A220", "origin_option_3": "DSG-02-3C2-DL-D2", "origin_option_4": "DSG-02-3C4-DL-D24V", "origin_option_5": "DSG-02-3C4-DL-A220V", "origin_option_6": "DSG-02-3C6-DL 电磁换向阀"} +2024-10-14 17:19:34,253 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 17:19:35,997 - vertexAI.py:144 - default_logger - DEBUG - 모델 응답: ```json +{ +"trans_option_1": "3C2-N-50", +"trans_option_2": "3C2-A220", +"trans_option_3": "3C2-DL-D2", +"trans_option_4": "3C4-DL-D24V", +"trans_option_5": "3C4-DL-A220V", +"trans_option_6": "3C6-DL 전자석" +} +``` +2024-10-14 17:19:35,999 - vertexAI.py:151 - default_logger - DEBUG - 응답에서 추출된 JSON 텍스트: { +"trans_option_1": "3C2-N-50", +"trans_option_2": "3C2-A220", +"trans_option_3": "3C2-DL-D2", +"trans_option_4": "3C4-DL-D24V", +"trans_option_5": "3C4-DL-A220V", +"trans_option_6": "3C6-DL 전자석" +} +2024-10-14 17:19:35,999 - vertexAI.py:154 - default_logger - DEBUG - 번역된 데이터: {'trans_option_1': '3C2-N-50', 'trans_option_2': '3C2-A220', 'trans_option_3': '3C2-DL-D2', 'trans_option_4': '3C4-DL-D24V', 'trans_option_5': '3C4-DL-A220V', 'trans_option_6': '3C6-DL 전자석'} +2024-10-14 17:19:35,999 - option.py:189 - default_logger - DEBUG - 번역된 옵션 입력 +2024-10-14 17:19:35,999 - option.py:440 - default_logger - DEBUG - trans_option_1번째 translated_name : 3C2-N-50 +2024-10-14 17:19:35,999 - option.py:448 - default_logger - DEBUG - trans_option_1번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:19:36,020 - option.py:452 - default_logger - INFO - trans_option_1번째 translated_name : [3C2-N-50] 입력 완료 +2024-10-14 17:19:36,022 - option.py:440 - default_logger - DEBUG - trans_option_2번째 translated_name : 3C2-A220 +2024-10-14 17:19:36,023 - option.py:448 - default_logger - DEBUG - trans_option_2번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:19:36,051 - option.py:452 - default_logger - INFO - trans_option_2번째 translated_name : [3C2-A220] 입력 완료 +2024-10-14 17:19:36,051 - option.py:440 - default_logger - DEBUG - trans_option_3번째 translated_name : 3C2-DL-D2 +2024-10-14 17:19:36,053 - option.py:448 - default_logger - DEBUG - trans_option_3번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:19:36,088 - option.py:452 - default_logger - INFO - trans_option_3번째 translated_name : [3C2-DL-D2] 입력 완료 +2024-10-14 17:19:36,089 - option.py:440 - default_logger - DEBUG - trans_option_4번째 translated_name : 3C4-DL-D24V +2024-10-14 17:19:36,090 - option.py:448 - default_logger - DEBUG - trans_option_4번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:19:36,136 - option.py:452 - default_logger - INFO - trans_option_4번째 translated_name : [3C4-DL-D24V] 입력 완료 +2024-10-14 17:19:36,136 - option.py:440 - default_logger - DEBUG - trans_option_5번째 translated_name : 3C4-DL-A220V +2024-10-14 17:19:36,136 - option.py:448 - default_logger - DEBUG - trans_option_5번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:19:36,174 - option.py:452 - default_logger - INFO - trans_option_5번째 translated_name : [3C4-DL-A220V] 입력 완료 +2024-10-14 17:19:36,174 - option.py:440 - default_logger - DEBUG - trans_option_6번째 translated_name : 3C6-DL 전자석 +2024-10-14 17:19:36,174 - option.py:448 - default_logger - DEBUG - trans_option_6번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:19:36,235 - option.py:452 - default_logger - INFO - trans_option_6번째 translated_name : [3C6-DL 전자석] 입력 완료 +2024-10-14 17:19:36,236 - option.py:464 - default_logger - DEBUG - selected_translated_options 일괄 업데이트: {'DSG-02-3C2-N-50': '3C2-N-50', 'DSG-02-3C2-A220': '3C2-A220', 'DSG-02-3C2-DL-D2': '3C2-DL-D2', 'DSG-02-3C4-DL-D24V': '3C4-DL-D24V', 'DSG-02-3C4-DL-A220V': '3C4-DL-A220V', 'DSG-02-3C6-DL 电磁换向阀': '3C6-DL 전자석'} +2024-10-14 17:19:36,238 - option.py:204 - default_logger - DEBUG - [VertexAI] 를 이용한 옵션번역 성공 +2024-10-14 17:19:36,239 - option.py:208 - default_logger - DEBUG - 옵션 필터링 및 조정 : True +2024-10-14 17:19:36,240 - option.py:85 - default_logger - DEBUG - 최저옵션: 131000.0, 표준편차: 31304.951684997057 +2024-10-14 17:19:36,241 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -0.4472135954999579 +2024-10-14 17:19:36,242 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -0.4472135954999579 +2024-10-14 17:19:36,243 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -0.4472135954999579 +2024-10-14 17:19:36,243 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -0.4472135954999579 +2024-10-14 17:19:36,245 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -0.4472135954999579 +2024-10-14 17:19:36,246 - option.py:95 - default_logger - DEBUG - Option 201000 z-score: 2.23606797749979 +2024-10-14 17:19:36,246 - option.py:99 - default_logger - DEBUG - Z-스코어 필터링: [117000, 117000, 117000, 117000, 117000] +2024-10-14 17:19:36,247 - option.py:107 - default_logger - DEBUG - 필터링된 본품옵션의 최저가: 117000, 마켓상한선: 234000 +2024-10-14 17:19:36,248 - option.py:112 - default_logger - DEBUG - 최종 선택된 옵션: [('DSG-02-3C2-N-50', 117000), ('DSG-02-3C2-A220', 117000), ('DSG-02-3C2-DL-D2', 117000), ('DSG-02-3C4-DL-D24V', 117000), ('DSG-02-3C4-DL-A220V', 117000)] +2024-10-14 17:19:36,272 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-N-50, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:19:36,554 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C2-N-50' 체크함 +2024-10-14 17:19:36,574 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-A220, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:19:36,872 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C2-A220' 체크함 +2024-10-14 17:19:37,065 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-DL-D2, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:19:37,289 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C2-DL-D2' 체크함 +2024-10-14 17:19:37,305 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C4-DL-D24V, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:19:37,354 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 17:19:37,531 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C4-DL-D24V' 체크함 +2024-10-14 17:19:37,547 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C4-DL-A220V, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:19:37,839 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C4-DL-A220V' 체크함 +2024-10-14 17:19:37,851 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-DL 电磁换向阀, 필터링된 옵션에 포함 여부: False, 현재 체크 상태: False +2024-10-14 17:19:37,851 - option.py:555 - default_logger - DEBUG - 옵션 체크 상태 조정 완료. +2024-10-14 17:19:37,858 - option.py:212 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 17:19:37,858 - option.py:141 - default_logger - ERROR - 선택된 옵션 저장 중 오류 발생: list indices must be integers or slices, not str +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 120, in store_selected_options + total_options_count = len([self.option_info]['original_names']) + ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ +TypeError: list indices must be integers or slices, not str +2024-10-14 17:19:37,860 - option.py:243 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 17:19:37,860 - option.py:247 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 17:19:38,137 - option.py:250 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 17:19:38,357 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 17:19:38,360 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 17:19:38,926 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 17:19:38,927 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 17:19:38,930 - gui.py:696 - default_logger - DEBUG - 번역 작업이 중단되었습니다. +2024-10-14 17:19:42,049 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... +2024-10-14 17:20:01,555 - vertexAI.py:18 - default_logger - DEBUG - GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정: leensoo1nt.json +2024-10-14 17:20:01,556 - vertexAI.py:22 - default_logger - DEBUG - Vertex AI 모델 초기화 중... +2024-10-14 17:20:01,562 - vertexAI.py:26 - default_logger - DEBUG - prompt.json 파일을 불러옵니다. +2024-10-14 17:20:01,562 - vertexAI.py:40 - default_logger - DEBUG - 프롬프트 파일 경로: D:\py\autoTrans\prompt.json +2024-10-14 17:20:01,562 - vertexAI.py:43 - default_logger - DEBUG - prompt.json 파일이 성공적으로 로드되었습니다. +2024-10-14 17:20:01,578 - DatabaseManager.py:14 - default_logger - DEBUG - Database engine created with URL: sqlite:///D:\py\autoTrans\userDB.db +2024-10-14 17:20:01,584 - cmb_diag.py:499 - default_logger - DEBUG - DB에서 데이터를 읽어와 테이블을 생성 +2024-10-14 17:20:01,584 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:20:01,591 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1 with params: {}, result count: 4901 +2024-10-14 17:20:01,669 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:20:01,669 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages with params: None, result count: 3 +2024-10-14 17:20:01,669 - cmb_diag.py:412 - default_logger - DEBUG - CrMoBi 단계 설정이 위젯에 반영되었습니다. +2024-10-14 17:20:01,669 - cmb_diag.py:256 - default_logger - DEBUG - 1레벨 카테고리를 업데이트 +2024-10-14 17:20:01,683 - DatabaseManager.py:19 - default_logger - DEBUG - Creating a new database session. +2024-10-14 17:20:01,683 - DatabaseManager.py:77 - default_logger - DEBUG - Fetched all results for query: SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL with params: None, result count: 11 +2024-10-14 17:20:01,684 - price.py:68 - default_logger - DEBUG - self.shipping_config : {'min_price_for_extra_shipping': 50000, 'thresholds': [50000, 100000, 200000], 'increment_unit': 20000, 'additional_costs': [5000, 7000, 9000]} +2024-10-14 17:20:01,685 - price.py:70 - default_logger - DEBUG - self.margin_config : {'thresholds': [50000, 70000, 100000, 150000, 200000, 300000, 400000, 500000, 1000000], 'additional_margins': [5000, 10000, 15000, 25000, 35000, 50000, 70000, 90000, 120000]} +2024-10-14 17:20:01,685 - price.py:72 - default_logger - DEBUG - self.optimal_price_config : {'sold_price': None, 'cost_price2X': None, 'calculated_price': None, 'lower_bound': 0.85, 'upper_bound': 1.15, 'ratios': {'sold_price': 0.5, 'cost_price2X': 0.3, 'calculated_price': 0.2}} +2024-10-14 17:20:01,685 - gui.py:122 - default_logger - DEBUG - 로그기록이 설정되었습니다. +2024-10-14 17:20:04,797 - gui.py:449 - default_logger - DEBUG - 옵션 Auto선택 버튼 - 활성화 선택 +2024-10-14 17:20:05,970 - gui.py:449 - default_logger - DEBUG - 옵션명 AI번역 버튼 - 활성화 선택 +2024-10-14 17:20:07,120 - gui.py:542 - default_logger - DEBUG - 크롬 실행 버튼 클릭됨 +2024-10-14 17:20:07,121 - gui.py:543 - default_logger - DEBUG - self.browser_controller.page : None +2024-10-14 17:20:07,121 - gui.py:578 - default_logger - DEBUG - 크롬 브라우저를 실행합니다... +2024-10-14 17:20:07,123 - browser_control.py:61 - default_logger - DEBUG - 크롬 브라우저 실행 중... +2024-10-14 17:20:11,313 - browser_control.py:76 - default_logger - DEBUG - newPage 로딩 ... +2024-10-14 17:20:11,326 - browser_control.py:81 - default_logger - DEBUG - 페이지 제목: 퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 +2024-10-14 17:20:11,328 - browser_control.py:88 - default_logger - DEBUG - 크롬 창 핸들: 11667900 +2024-10-14 17:20:11,328 - browser_control.py:94 - default_logger - DEBUG - 로그인 시도 중: 직원 계정 +2024-10-14 17:20:11,611 - browser_control.py:112 - default_logger - DEBUG - 로그인 완료: 직원 계정 +2024-10-14 17:20:13,295 - browser_control.py:252 - default_logger - DEBUG - 다이얼로그가 발견되었습니다. 닫기 버튼을 클릭합니다. +2024-10-14 17:20:13,474 - browser_control.py:258 - default_logger - DEBUG - 다이얼로그를 성공적으로 닫았습니다. +2024-10-14 17:20:13,475 - gui.py:602 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 중... +2024-10-14 17:20:13,781 - browser_control.py:271 - default_logger - DEBUG - 신규 상품 등록 페이지로 이동 완료. +2024-10-14 17:20:13,783 - option.py:39 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:20:13,783 - title.py:31 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:20:13,784 - price.py:46 - default_logger - DEBUG - page객체 업데이트 : +2024-10-14 17:20:16,496 - gui.py:652 - default_logger - DEBUG - 번역 작업 버튼 클릭됨 +2024-10-14 17:20:16,496 - gui.py:657 - default_logger - DEBUG - 번역 작업을 시작합니다... +2024-10-14 17:20:16,496 - browser_control.py:679 - default_logger - DEBUG - 페이지 스크롤 시작... +2024-10-14 17:20:17,133 - browser_control.py:689 - default_logger - DEBUG - 페이지 스크롤 완료. +2024-10-14 17:20:17,136 - browser_control.py:173 - default_logger - DEBUG - 총 상품수 확인: 총 31개 상품 +2024-10-14 17:20:17,136 - gui.py:681 - default_logger - DEBUG - 현재 페이지: 1 +2024-10-14 17:20:17,148 - browser_control.py:318 - default_logger - DEBUG - 현재 페이지의 수정할 상품 개수: 20 +2024-10-14 17:20:17,149 - gui.py:699 - default_logger - DEBUG - 1/20: 세부사항 수정 작업 중... +2024-10-14 17:20:17,187 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 17:20:17,792 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 17:20:18,287 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 17:20:18,349 - title.py:94 - default_logger - DEBUG - 원본 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2 +2024-10-14 17:20:18,547 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 17:20:18,547 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 17:20:18,564 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 17:20:18,566 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 17:20:18,582 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 17:20:18,582 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 17:20:19,236 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 17:20:19,238 - option.py:152 - default_logger - DEBUG - 상품명: 液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2에 대한 옵션을 처리 중... +2024-10-14 17:20:21,228 - option.py:266 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 17:20:21,237 - option.py:278 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 17:20:21,239 - option.py:565 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 17:20:21,551 - option.py:181 - default_logger - DEBUG - 옵션 AI번역 : True +2024-10-14 17:20:21,577 - option.py:295 - default_logger - DEBUG - 총 옵션 갯수: 18 +2024-10-14 17:20:21,618 - option.py:330 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 17:20:21,657 - option.py:330 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 17:20:21,686 - option.py:330 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 17:20:21,722 - option.py:330 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 17:20:21,764 - option.py:330 - default_logger - DEBUG - 5번째 옵션 정보 수집 완료 +2024-10-14 17:20:21,800 - option.py:330 - default_logger - DEBUG - 6번째 옵션 정보 수집 완료 +2024-10-14 17:20:21,837 - option.py:330 - default_logger - DEBUG - 7번째 옵션 정보 수집 완료 +2024-10-14 17:20:21,878 - option.py:330 - default_logger - DEBUG - 8번째 옵션 정보 수집 완료 +2024-10-14 17:20:21,909 - option.py:330 - default_logger - DEBUG - 9번째 옵션 정보 수집 완료 +2024-10-14 17:20:21,953 - option.py:330 - default_logger - DEBUG - 10번째 옵션 정보 수집 완료 +2024-10-14 17:20:21,990 - option.py:330 - default_logger - DEBUG - 11번째 옵션 정보 수집 완료 +2024-10-14 17:20:22,033 - option.py:330 - default_logger - DEBUG - 12번째 옵션 정보 수집 완료 +2024-10-14 17:20:22,075 - option.py:330 - default_logger - DEBUG - 13번째 옵션 정보 수집 완료 +2024-10-14 17:20:22,118 - option.py:330 - default_logger - DEBUG - 14번째 옵션 정보 수집 완료 +2024-10-14 17:20:22,169 - option.py:330 - default_logger - DEBUG - 15번째 옵션 정보 수집 완료 +2024-10-14 17:20:22,208 - option.py:330 - default_logger - DEBUG - 16번째 옵션 정보 수집 완료 +2024-10-14 17:20:22,255 - option.py:330 - default_logger - DEBUG - 17번째 옵션 정보 수집 완료 +2024-10-14 17:20:22,286 - option.py:330 - default_logger - DEBUG - 18번째 옵션 정보 수집 완료 +2024-10-14 17:20:22,286 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C4-LW', 'origin_option_7': 'DSG-02-3C5', 'origin_option_8': 'DSG-03-3C3', 'origin_option_9': 'DSG-02-3C60-DL 电磁换向阀', 'origin_option_10': 'DSG-02-3C6-DC24', 'origin_option_11': 'DSG-02-3C6-DC24-50', 'origin_option_12': 'DSG-02-3C6-AC220V', 'origin_option_13': 'DSG-02-3C9', 'origin_option_14': 'DSG-02-3C10', 'origin_option_15': 'DSG-02-3C11', 'origin_option_16': 'DSG-02-3C12', 'origin_option_17': '提示勿拍:其他型号规格请联系客服', 'origin_option_18': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 17:20:22,296 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-N-50 +2024-10-14 17:20:22,298 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-N-50 +2024-10-14 17:20:22,299 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-A220 +2024-10-14 17:20:22,300 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-A220 +2024-10-14 17:20:22,300 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C2-DL-D2 +2024-10-14 17:20:22,300 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C2-DL-D2 +2024-10-14 17:20:22,300 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-D24V +2024-10-14 17:20:22,303 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-D24V +2024-10-14 17:20:22,303 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-DL-A220V +2024-10-14 17:20:22,303 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-DL-A220V +2024-10-14 17:20:22,304 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C4-LW +2024-10-14 17:20:22,304 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C4-LW +2024-10-14 17:20:22,304 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C5 +2024-10-14 17:20:22,307 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C5 +2024-10-14 17:20:22,307 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-03-3C3 +2024-10-14 17:20:22,307 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-03-3C3 +2024-10-14 17:20:22,307 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C60-DL 电磁换向阀 +2024-10-14 17:20:22,309 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C60-DL 电磁换向阀 +2024-10-14 17:20:22,309 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DC24 +2024-10-14 17:20:22,310 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DC24 +2024-10-14 17:20:22,310 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DC24-50 +2024-10-14 17:20:22,311 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DC24-50 +2024-10-14 17:20:22,311 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-AC220V +2024-10-14 17:20:22,311 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-AC220V +2024-10-14 17:20:22,313 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C9 +2024-10-14 17:20:22,313 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C9 +2024-10-14 17:20:22,315 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C10 +2024-10-14 17:20:22,315 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C10 +2024-10-14 17:20:22,316 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C11 +2024-10-14 17:20:22,317 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C11 +2024-10-14 17:20:22,318 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C12 +2024-10-14 17:20:22,318 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C12 +2024-10-14 17:20:22,319 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 提示勿拍:其他型号规格请联系客服 +2024-10-14 17:20:22,321 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 提示勿拍其他型号规格请联系客服 +2024-10-14 17:20:22,321 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 17:20:22,322 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: DSG-02-3C6-DL 电磁换向阀 +2024-10-14 17:20:22,322 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': 'DSG-02-3C2-N-50', 'origin_option_2': 'DSG-02-3C2-A220', 'origin_option_3': 'DSG-02-3C2-DL-D2', 'origin_option_4': 'DSG-02-3C4-DL-D24V', 'origin_option_5': 'DSG-02-3C4-DL-A220V', 'origin_option_6': 'DSG-02-3C4-LW', 'origin_option_7': 'DSG-02-3C5', 'origin_option_8': 'DSG-03-3C3', 'origin_option_9': 'DSG-02-3C60-DL 电磁换向阀', 'origin_option_10': 'DSG-02-3C6-DC24', 'origin_option_11': 'DSG-02-3C6-DC24-50', 'origin_option_12': 'DSG-02-3C6-AC220V', 'origin_option_13': 'DSG-02-3C9', 'origin_option_14': 'DSG-02-3C10', 'origin_option_15': 'DSG-02-3C11', 'origin_option_16': 'DSG-02-3C12', 'origin_option_17': '提示勿拍其他型号规格请联系客服', 'origin_option_18': 'DSG-02-3C6-DL 电磁换向阀'} +2024-10-14 17:20:22,323 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '液压电磁阀双向换向阀220v24vDSG-02-3C2/2B2/2B3B/3C3/3C6/03/D2'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "DSG-02-3C2-N-50", "origin_option_2": "DSG-02-3C2-A220", "origin_option_3": "DSG-02-3C2-DL-D2", "origin_option_4": "DSG-02-3C4-DL-D24V", "origin_option_5": "DSG-02-3C4-DL-A220V", "origin_option_6": "DSG-02-3C4-LW", "origin_option_7": "DSG-02-3C5", "origin_option_8": "DSG-03-3C3", "origin_option_9": "DSG-02-3C60-DL 电磁换向阀", "origin_option_10": "DSG-02-3C6-DC24", "origin_option_11": "DSG-02-3C6-DC24-50", "origin_option_12": "DSG-02-3C6-AC220V", "origin_option_13": "DSG-02-3C9", "origin_option_14": "DSG-02-3C10", "origin_option_15": "DSG-02-3C11", "origin_option_16": "DSG-02-3C12", "origin_option_17": "提示勿拍其他型号规格请联系客服", "origin_option_18": "DSG-02-3C6-DL 电磁换向阀"} +2024-10-14 17:20:22,325 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 17:20:24,742 - vertexAI.py:144 - default_logger - DEBUG - 모델 응답: ```json +{ +"trans_option_1": "DSG-02-3C2-N-50", +"trans_option_2": "DSG-02-3C2-A220", +"trans_option_3": "DSG-02-3C2-DL-D2", +"trans_option_4": "DSG-02-3C4-DL-D24V", +"trans_option_5": "DSG-02-3C4-DL-A220V", +"trans_option_6": "DSG-02-3C4-LW", +"trans_option_7": "DSG-02-3C5", +"trans_option_8": "DSG-03-3C3", +"trans_option_9": "DSG-02-3C60-DL 전자석 방향 전환 밸브", +"trans_option_10": "DSG-02-3C6-DC24", +"trans_option_11": "DSG-02-3C6-DC24-50", +"trans_option_12": "DSG-02-3C6-AC220V", +"trans_option_13": "DSG-02-3C9", +"trans_option_14": "DSG-02-3C10", +"trans_option_15": "DSG-02-3C11", +"trans_option_16": "DSG-02-3C12" +} +``` +2024-10-14 17:20:24,742 - vertexAI.py:151 - default_logger - DEBUG - 응답에서 추출된 JSON 텍스트: { +"trans_option_1": "DSG-02-3C2-N-50", +"trans_option_2": "DSG-02-3C2-A220", +"trans_option_3": "DSG-02-3C2-DL-D2", +"trans_option_4": "DSG-02-3C4-DL-D24V", +"trans_option_5": "DSG-02-3C4-DL-A220V", +"trans_option_6": "DSG-02-3C4-LW", +"trans_option_7": "DSG-02-3C5", +"trans_option_8": "DSG-03-3C3", +"trans_option_9": "DSG-02-3C60-DL 전자석 방향 전환 밸브", +"trans_option_10": "DSG-02-3C6-DC24", +"trans_option_11": "DSG-02-3C6-DC24-50", +"trans_option_12": "DSG-02-3C6-AC220V", +"trans_option_13": "DSG-02-3C9", +"trans_option_14": "DSG-02-3C10", +"trans_option_15": "DSG-02-3C11", +"trans_option_16": "DSG-02-3C12" +} +2024-10-14 17:20:24,742 - vertexAI.py:154 - default_logger - DEBUG - 번역된 데이터: {'trans_option_1': 'DSG-02-3C2-N-50', 'trans_option_2': 'DSG-02-3C2-A220', 'trans_option_3': 'DSG-02-3C2-DL-D2', 'trans_option_4': 'DSG-02-3C4-DL-D24V', 'trans_option_5': 'DSG-02-3C4-DL-A220V', 'trans_option_6': 'DSG-02-3C4-LW', 'trans_option_7': 'DSG-02-3C5', 'trans_option_8': 'DSG-03-3C3', 'trans_option_9': 'DSG-02-3C60-DL 전자석 방향 전환 밸브', 'trans_option_10': 'DSG-02-3C6-DC24', 'trans_option_11': 'DSG-02-3C6-DC24-50', 'trans_option_12': 'DSG-02-3C6-AC220V', 'trans_option_13': 'DSG-02-3C9', 'trans_option_14': 'DSG-02-3C10', 'trans_option_15': 'DSG-02-3C11', 'trans_option_16': 'DSG-02-3C12'} +2024-10-14 17:20:24,742 - option.py:189 - default_logger - DEBUG - 번역된 옵션 입력 +2024-10-14 17:20:24,742 - option.py:440 - default_logger - DEBUG - trans_option_1번째 translated_name : DSG-02-3C2-N-50 +2024-10-14 17:20:24,742 - option.py:448 - default_logger - DEBUG - trans_option_1번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:24,772 - option.py:452 - default_logger - INFO - trans_option_1번째 translated_name : [DSG-02-3C2-N-50] 입력 완료 +2024-10-14 17:20:24,773 - option.py:440 - default_logger - DEBUG - trans_option_2번째 translated_name : DSG-02-3C2-A220 +2024-10-14 17:20:24,773 - option.py:448 - default_logger - DEBUG - trans_option_2번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:24,805 - option.py:452 - default_logger - INFO - trans_option_2번째 translated_name : [DSG-02-3C2-A220] 입력 완료 +2024-10-14 17:20:24,806 - option.py:440 - default_logger - DEBUG - trans_option_3번째 translated_name : DSG-02-3C2-DL-D2 +2024-10-14 17:20:24,806 - option.py:448 - default_logger - DEBUG - trans_option_3번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:24,846 - option.py:452 - default_logger - INFO - trans_option_3번째 translated_name : [DSG-02-3C2-DL-D2] 입력 완료 +2024-10-14 17:20:24,848 - option.py:440 - default_logger - DEBUG - trans_option_4번째 translated_name : DSG-02-3C4-DL-D24V +2024-10-14 17:20:24,849 - option.py:448 - default_logger - DEBUG - trans_option_4번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:24,888 - option.py:452 - default_logger - INFO - trans_option_4번째 translated_name : [DSG-02-3C4-DL-D24V] 입력 완료 +2024-10-14 17:20:24,898 - option.py:440 - default_logger - DEBUG - trans_option_5번째 translated_name : DSG-02-3C4-DL-A220V +2024-10-14 17:20:24,898 - option.py:448 - default_logger - DEBUG - trans_option_5번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:24,934 - option.py:452 - default_logger - INFO - trans_option_5번째 translated_name : [DSG-02-3C4-DL-A220V] 입력 완료 +2024-10-14 17:20:24,937 - option.py:440 - default_logger - DEBUG - trans_option_6번째 translated_name : DSG-02-3C4-LW +2024-10-14 17:20:24,939 - option.py:448 - default_logger - DEBUG - trans_option_6번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:24,987 - option.py:452 - default_logger - INFO - trans_option_6번째 translated_name : [DSG-02-3C4-LW] 입력 완료 +2024-10-14 17:20:24,991 - option.py:440 - default_logger - DEBUG - trans_option_7번째 translated_name : DSG-02-3C5 +2024-10-14 17:20:24,991 - option.py:448 - default_logger - DEBUG - trans_option_7번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:25,040 - option.py:452 - default_logger - INFO - trans_option_7번째 translated_name : [DSG-02-3C5] 입력 완료 +2024-10-14 17:20:25,040 - option.py:440 - default_logger - DEBUG - trans_option_8번째 translated_name : DSG-03-3C3 +2024-10-14 17:20:25,043 - option.py:448 - default_logger - DEBUG - trans_option_8번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:25,083 - option.py:452 - default_logger - INFO - trans_option_8번째 translated_name : [DSG-03-3C3] 입력 완료 +2024-10-14 17:20:25,083 - option.py:440 - default_logger - DEBUG - trans_option_9번째 translated_name : DSG-02-3C60-DL 전자석 방향 전환 밸브 +2024-10-14 17:20:25,083 - option.py:448 - default_logger - DEBUG - trans_option_9번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:25,125 - option.py:452 - default_logger - INFO - trans_option_9번째 translated_name : [DSG-02-3C60-DL 전자석 방향 전환 밸브] 입력 완료 +2024-10-14 17:20:25,128 - option.py:440 - default_logger - DEBUG - trans_option_10번째 translated_name : DSG-02-3C6-DC24 +2024-10-14 17:20:25,129 - option.py:448 - default_logger - DEBUG - trans_option_10번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:25,172 - option.py:452 - default_logger - INFO - trans_option_10번째 translated_name : [DSG-02-3C6-DC24] 입력 완료 +2024-10-14 17:20:25,174 - option.py:440 - default_logger - DEBUG - trans_option_11번째 translated_name : DSG-02-3C6-DC24-50 +2024-10-14 17:20:25,174 - option.py:448 - default_logger - DEBUG - trans_option_11번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:25,212 - option.py:452 - default_logger - INFO - trans_option_11번째 translated_name : [DSG-02-3C6-DC24-50] 입력 완료 +2024-10-14 17:20:25,216 - option.py:440 - default_logger - DEBUG - trans_option_12번째 translated_name : DSG-02-3C6-AC220V +2024-10-14 17:20:25,217 - option.py:448 - default_logger - DEBUG - trans_option_12번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:25,249 - option.py:452 - default_logger - INFO - trans_option_12번째 translated_name : [DSG-02-3C6-AC220V] 입력 완료 +2024-10-14 17:20:25,249 - option.py:440 - default_logger - DEBUG - trans_option_13번째 translated_name : DSG-02-3C9 +2024-10-14 17:20:25,249 - option.py:448 - default_logger - DEBUG - trans_option_13번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:25,358 - option.py:452 - default_logger - INFO - trans_option_13번째 translated_name : [DSG-02-3C9] 입력 완료 +2024-10-14 17:20:25,360 - option.py:440 - default_logger - DEBUG - trans_option_14번째 translated_name : DSG-02-3C10 +2024-10-14 17:20:25,362 - option.py:448 - default_logger - DEBUG - trans_option_14번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:25,613 - option.py:452 - default_logger - INFO - trans_option_14번째 translated_name : [DSG-02-3C10] 입력 완료 +2024-10-14 17:20:25,614 - option.py:440 - default_logger - DEBUG - trans_option_15번째 translated_name : DSG-02-3C11 +2024-10-14 17:20:25,615 - option.py:448 - default_logger - DEBUG - trans_option_15번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:25,845 - option.py:452 - default_logger - INFO - trans_option_15번째 translated_name : [DSG-02-3C11] 입력 완료 +2024-10-14 17:20:25,846 - option.py:440 - default_logger - DEBUG - trans_option_16번째 translated_name : DSG-02-3C12 +2024-10-14 17:20:25,847 - option.py:448 - default_logger - DEBUG - trans_option_16번째 번역옵션 필드 : JSHandle@ +2024-10-14 17:20:26,117 - option.py:452 - default_logger - INFO - trans_option_16번째 translated_name : [DSG-02-3C12] 입력 완료 +2024-10-14 17:20:26,118 - option.py:464 - default_logger - DEBUG - selected_translated_options 일괄 업데이트: {'DSG-02-3C2-N-50': 'DSG-02-3C2-N-50', 'DSG-02-3C2-A220': 'DSG-02-3C2-A220', 'DSG-02-3C2-DL-D2': 'DSG-02-3C2-DL-D2', 'DSG-02-3C4-DL-D24V': 'DSG-02-3C4-DL-D24V', 'DSG-02-3C4-DL-A220V': 'DSG-02-3C4-DL-A220V', 'DSG-02-3C4-LW': 'DSG-02-3C4-LW', 'DSG-02-3C5': 'DSG-02-3C5', 'DSG-03-3C3': 'DSG-03-3C3', 'DSG-02-3C60-DL 电磁换向阀': 'DSG-02-3C60-DL 전자석 방향 전환 밸브', 'DSG-02-3C6-DC24': 'DSG-02-3C6-DC24', 'DSG-02-3C6-DC24-50': 'DSG-02-3C6-DC24-50', 'DSG-02-3C6-AC220V': 'DSG-02-3C6-AC220V', 'DSG-02-3C9': 'DSG-02-3C9', 'DSG-02-3C10': 'DSG-02-3C10', 'DSG-02-3C11': 'DSG-02-3C11', 'DSG-02-3C12': 'DSG-02-3C12'} +2024-10-14 17:20:26,119 - option.py:204 - default_logger - DEBUG - [VertexAI] 를 이용한 옵션번역 성공 +2024-10-14 17:20:26,120 - option.py:208 - default_logger - DEBUG - 옵션 필터링 및 조정 : True +2024-10-14 17:20:26,121 - option.py:85 - default_logger - DEBUG - 최저옵션: 148555.55555555556, 표준편차: 22289.066134223805 +2024-10-14 17:20:26,121 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:20:26,122 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:20:26,123 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:20:26,124 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:20:26,124 - option.py:95 - default_logger - DEBUG - Option 117000 z-score: -1.4157414835385813 +2024-10-14 17:20:26,124 - option.py:95 - default_logger - DEBUG - Option 147000 z-score: -0.06979007313218386 +2024-10-14 17:20:26,124 - option.py:95 - default_logger - DEBUG - Option 147000 z-score: -0.06979007313218386 +2024-10-14 17:20:26,128 - option.py:95 - default_logger - DEBUG - Option 154000 z-score: 0.2442652559626422 +2024-10-14 17:20:26,128 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:20:26,129 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:20:26,129 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:20:26,130 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:20:26,131 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:20:26,132 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:20:26,132 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:20:26,133 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:20:26,133 - option.py:95 - default_logger - DEBUG - Option 160000 z-score: 0.5134555380439217 +2024-10-14 17:20:26,135 - option.py:95 - default_logger - DEBUG - Option 201000 z-score: 2.3529224655993315 +2024-10-14 17:20:26,135 - option.py:99 - default_logger - DEBUG - Z-스코어 필터링: [147000, 147000, 154000, 160000, 160000, 160000, 160000, 160000, 160000, 160000, 160000, 160000] +2024-10-14 17:20:26,136 - option.py:107 - default_logger - DEBUG - 필터링된 본품옵션의 최저가: 147000, 마켓상한선: 294000 +2024-10-14 17:20:26,137 - option.py:112 - default_logger - DEBUG - 최종 선택된 옵션: [('DSG-02-3C4-LW', 147000), ('DSG-02-3C5', 147000), ('DSG-03-3C3', 154000), ('DSG-02-3C60-DL 电磁换向阀', 160000), ('DSG-02-3C6-DC24', 160000), ('DSG-02-3C6-DC24-50', 160000), ('DSG-02-3C6-AC220V', 160000), ('DSG-02-3C9', 160000), ('DSG-02-3C10', 160000), ('DSG-02-3C11', 160000), ('DSG-02-3C12', 160000), ('提示勿拍:其他型号规格请联系客服', 160000)] +2024-10-14 17:20:26,268 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-N-50, 필터링된 옵션에 포함 여부: False, 현재 체크 상태: False +2024-10-14 17:20:26,290 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-A220, 필터링된 옵션에 포함 여부: False, 현재 체크 상태: False +2024-10-14 17:20:26,304 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C2-DL-D2, 필터링된 옵션에 포함 여부: False, 현재 체크 상태: False +2024-10-14 17:20:26,329 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C4-DL-D24V, 필터링된 옵션에 포함 여부: False, 현재 체크 상태: False +2024-10-14 17:20:26,338 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C4-DL-A220V, 필터링된 옵션에 포함 여부: False, 현재 체크 상태: False +2024-10-14 17:20:26,478 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C4-LW, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:26,778 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C4-LW' 체크함 +2024-10-14 17:20:26,865 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C5, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:27,112 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C5' 체크함 +2024-10-14 17:20:27,128 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-03-3C3, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:27,460 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-03-3C3' 체크함 +2024-10-14 17:20:27,485 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C60-DL 电磁换向阀, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:27,933 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C60-DL 电磁换向阀' 체크함 +2024-10-14 17:20:27,960 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-DC24, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:28,215 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C6-DC24' 체크함 +2024-10-14 17:20:28,235 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-DC24-50, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:28,511 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C6-DC24-50' 체크함 +2024-10-14 17:20:28,520 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-AC220V, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:28,756 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C6-AC220V' 체크함 +2024-10-14 17:20:28,777 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C9, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:29,017 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C9' 체크함 +2024-10-14 17:20:29,033 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C10, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:29,265 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C10' 체크함 +2024-10-14 17:20:29,283 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C11, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:29,549 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C11' 체크함 +2024-10-14 17:20:29,567 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C12, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:29,801 - option.py:545 - default_logger - DEBUG - 옵션 'DSG-02-3C12' 체크함 +2024-10-14 17:20:29,820 - option.py:537 - default_logger - DEBUG - 옵션 이름: 提示勿拍:其他型号规格请联系客服, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:30,083 - option.py:545 - default_logger - DEBUG - 옵션 '提示勿拍:其他型号规格请联系客服' 체크함 +2024-10-14 17:20:30,099 - option.py:537 - default_logger - DEBUG - 옵션 이름: DSG-02-3C6-DL 电磁换向阀, 필터링된 옵션에 포함 여부: False, 현재 체크 상태: False +2024-10-14 17:20:30,099 - option.py:555 - default_logger - DEBUG - 옵션 체크 상태 조정 완료. +2024-10-14 17:20:30,099 - option.py:212 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 17:20:30,099 - option.py:141 - default_logger - ERROR - 선택된 옵션 저장 중 오류 발생: list indices must be integers or slices, not str +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 120, in store_selected_options + total_options_count = len([self.option_info]['original_names']) + ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ +TypeError: list indices must be integers or slices, not str +2024-10-14 17:20:30,099 - option.py:243 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 17:20:30,099 - option.py:247 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 17:20:30,389 - option.py:250 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 17:20:30,757 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 17:20:30,758 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 17:20:31,340 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 17:20:31,343 - gui.py:754 - default_logger - DEBUG - 1/[31]개 상품 수정 완료. +2024-10-14 17:20:31,343 - gui.py:699 - default_logger - DEBUG - 2/20: 세부사항 수정 작업 중... +2024-10-14 17:20:31,397 - browser_control.py:353 - default_logger - DEBUG - 상품의 '세부사항 수정 및 업로드' 버튼을 화면에 보이도록 스크롤. +2024-10-14 17:20:32,027 - browser_control.py:356 - default_logger - DEBUG - 세부사항 수정 다이얼로그 열기 완료. +2024-10-14 17:20:32,667 - title.py:91 - default_logger - DEBUG - 원본 상품명을 가져오는 중입니다. +2024-10-14 17:20:32,682 - title.py:94 - default_logger - DEBUG - 원본 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机 +2024-10-14 17:20:32,683 - title.py:179 - default_logger - DEBUG - 마켓 : ss - 카테고리 텍스트를 가져오는 중입니다. +2024-10-14 17:20:32,684 - title.py:188 - default_logger - DEBUG - category_locator : div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 +2024-10-14 17:20:32,697 - title.py:192 - default_logger - DEBUG - main_category_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'> +2024-10-14 17:20:32,704 - title.py:201 - default_logger - DEBUG - category_text_element : selector='div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2 >> div.ant-col.css-1li46mu:nth-child(1)'> +2024-10-14 17:20:32,715 - title.py:214 - default_logger - DEBUG - 카테고리 text = 생활/건강-공구-에어공구-유압공구 +2024-10-14 17:20:32,719 - gui.py:719 - default_logger - DEBUG - 옵션수정 : optionTrnas=True + optionIMGTrans=False + optionAutoSelectTrue +2024-10-14 17:20:33,145 - browser_control.py:373 - default_logger - DEBUG - 옵션 탭 클릭 완료. +2024-10-14 17:20:33,146 - option.py:152 - default_logger - DEBUG - 상품명: 小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机에 대한 옵션을 처리 중... +2024-10-14 17:20:35,150 - option.py:266 - default_logger - DEBUG - 단일 상품 여부: 옵션 상품입니다 +2024-10-14 17:20:35,158 - option.py:278 - default_logger - DEBUG - 전체 옵션이 체크되어 있음 +2024-10-14 17:20:35,158 - option.py:565 - default_logger - DEBUG - 가격 낮은 순 정렬을 클릭합니다. +2024-10-14 17:20:35,228 - option.py:181 - default_logger - DEBUG - 옵션 AI번역 : True +2024-10-14 17:20:35,251 - option.py:295 - default_logger - DEBUG - 총 옵션 갯수: 5 +2024-10-14 17:20:35,305 - option.py:330 - default_logger - DEBUG - 1번째 옵션 정보 수집 완료 +2024-10-14 17:20:35,347 - option.py:330 - default_logger - DEBUG - 2번째 옵션 정보 수집 완료 +2024-10-14 17:20:35,393 - option.py:330 - default_logger - DEBUG - 3번째 옵션 정보 수집 완료 +2024-10-14 17:20:35,443 - option.py:330 - default_logger - DEBUG - 4번째 옵션 정보 수집 완료 +2024-10-14 17:20:35,530 - option.py:330 - default_logger - DEBUG - 5번째 옵션 정보 수집 완료 +2024-10-14 17:20:35,530 - vertexAI.py:128 - default_logger - DEBUG - 옵션 데이터를 번역 중: {'origin_option_1': '香水 小样压盖机', 'origin_option_2': '香水瓶 中套压盖机 适合13MM 15MM盖子', 'origin_option_3': '喷雾瓶 卡扣式压盖机', 'origin_option_4': '中套压盖机 20MM瓶口专用 适合 20MM 瓶口', 'origin_option_5': '小样分装+香水瓶卡扣 两种压头 13 15MM中盖'} +2024-10-14 17:20:35,530 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 香水 小样压盖机 +2024-10-14 17:20:35,530 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 香水 小样压盖机 +2024-10-14 17:20:35,530 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 香水瓶 中套压盖机 适合13MM 15MM盖子 +2024-10-14 17:20:35,530 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 香水瓶 中套压盖机 适合13MM 15MM盖子 +2024-10-14 17:20:35,530 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 喷雾瓶 卡扣式压盖机 +2024-10-14 17:20:35,530 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 喷雾瓶 卡扣式压盖机 +2024-10-14 17:20:35,530 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口 +2024-10-14 17:20:35,536 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口 +2024-10-14 17:20:35,536 - vertexAI.py:60 - default_logger - DEBUG - 텍스트에서 특수 문자를 정리 중: 小样分装+香水瓶卡扣 两种压头 13 15MM中盖 +2024-10-14 17:20:35,538 - vertexAI.py:76 - default_logger - DEBUG - 정리된 텍스트: 小样分装+香水瓶卡扣 两种压头 13 15MM中盖 +2024-10-14 17:20:35,538 - vertexAI.py:132 - default_logger - DEBUG - 정리된 옵션 데이터: {'origin_option_1': '香水 小样压盖机', 'origin_option_2': '香水瓶 中套压盖机 适合13MM 15MM盖子', 'origin_option_3': '喷雾瓶 卡扣式压盖机', 'origin_option_4': '中套压盖机 20MM瓶口专用 适合 20MM 瓶口', 'origin_option_5': '小样分装+香水瓶卡扣 两种压头 13 15MM中盖'} +2024-10-14 17:20:35,540 - vertexAI.py:139 - default_logger - DEBUG - 생성된 프롬프트: 질문은 아래와 같아. + +가공방법 +1. 특수문자가 있을 경우 제거해줘. +2. 원본 상품명 '小型香水瓶分装中套机喷雾头胶水瓶内塞压盖机卡口封口手压封盖机'을 참고해서, 각 옵션의 이름을 최대한 간결하게, 각 옵션의 특징(제품의 스펙을 나타내는 크기,무게,용량,전압,전류,상품코드등)만 남겨줘. +3. 간결하게 만들어진 각 옵션명을 한국어로 일관되게 번역해줘. +4. 번역된 옵션 이름 중 같은 이름의 옵션이 있을 경우, 해당옵션들만 원본옵션명에서 특징들을 다시 추출해서 추가해줘. +5. 가격문의, 문의사항, 견적, 견적문의, 예약금, 선결제, 고객센터 연락 등 옵션명을 바로 알려주지 않고 고객에게 연락을 유도하는 옵션명은 삭제해야 해. +6. 짧은 단어로 대체할수 있는 단어들은 (예시 : 디스플레시 > 화면)의미를 유지한체 짧은 단어로 대체해줘. +7. 번역된 옵션명들은 'trans_option_1': '', 'trans_option_2': '', 'trans_option_3': '', 'trans_option_4': '' 와 같은 형식(json)으로 반환해줘. + +원본 데이터 + 원본옵션명{"origin_option_1": "香水 小样压盖机", "origin_option_2": "香水瓶 中套压盖机 适合13MM 15MM盖子", "origin_option_3": "喷雾瓶 卡扣式压盖机", "origin_option_4": "中套压盖机 20MM瓶口专用 适合 20MM 瓶口", "origin_option_5": "小样分装+香水瓶卡扣 两种压头 13 15MM中盖"} +2024-10-14 17:20:35,541 - vertexAI.py:142 - default_logger - DEBUG - Vertex AI 모델에 프롬프트를 전달하여 응답을 기다리는 중... +2024-10-14 17:20:37,204 - option.py:196 - default_logger - ERROR - 안전 필터에 의해 번역 요청이 차단되었습니다. Cannot get the response text. +Cannot get the Candidate text. +Response candidate content has no parts (and thus no text). The candidate is likely blocked by the safety filters. +Content: +{} +Candidate: +{ + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.18261719, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.12158203 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "HIGH", + "blocked": true, + "probability_score": 0.7890625, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.6640625 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.16113281, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.09423828 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.21875, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.115722656 + } + ], + "avg_logprobs": "NaN" +} +Response: +{ + "candidates": [ + { + "finish_reason": "SAFETY", + "safety_ratings": [ + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE", + "probability_score": 0.18261719, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.12158203 + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "HIGH", + "blocked": true, + "probability_score": 0.7890625, + "severity": "HARM_SEVERITY_MEDIUM", + "severity_score": 0.6640625 + }, + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE", + "probability_score": 0.16113281, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.09423828 + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE", + "probability_score": 0.21875, + "severity": "HARM_SEVERITY_NEGLIGIBLE", + "severity_score": 0.115722656 + } + ], + "avg_logprobs": "NaN" + } + ], + "usage_metadata": { + "prompt_token_count": 497, + "total_token_count": 497 + }, + "model_version": "gemini-1.5-flash-001" +} +2024-10-14 17:20:37,205 - option.py:197 - default_logger - DEBUG - 퍼센티 자체 AI번역 사용 시도 +2024-10-14 17:20:37,309 - option.py:199 - default_logger - DEBUG - 번역을 위한 5초간 대기 +2024-10-14 17:20:42,310 - option.py:204 - default_logger - DEBUG - [퍼센티AI] 를 이용한 옵션번역 성공 +2024-10-14 17:20:42,311 - option.py:208 - default_logger - DEBUG - 옵션 필터링 및 조정 : True +2024-10-14 17:20:42,312 - option.py:85 - default_logger - DEBUG - 최저옵션: 90000.0, 표준편차: 4000.0 +2024-10-14 17:20:42,313 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:20:42,314 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:20:42,314 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:20:42,315 - option.py:95 - default_logger - DEBUG - Option 88000 z-score: -0.5 +2024-10-14 17:20:42,316 - option.py:95 - default_logger - DEBUG - Option 98000 z-score: 2.0 +2024-10-14 17:20:42,316 - option.py:99 - default_logger - DEBUG - Z-스코어 필터링: [88000, 88000, 88000, 88000] +2024-10-14 17:20:42,317 - option.py:107 - default_logger - DEBUG - 필터링된 본품옵션의 최저가: 88000, 마켓상한선: 176000 +2024-10-14 17:20:42,318 - option.py:112 - default_logger - DEBUG - 최종 선택된 옵션: [('香水 小样压盖机', 88000), ('香水瓶 中套压盖机 适合13MM 15MM盖子', 88000), ('喷雾瓶 卡扣式压盖机', 88000), ('中套压盖机 20MM瓶口专用 适合 20MM 瓶口', 88000)] +2024-10-14 17:20:42,327 - option.py:537 - default_logger - DEBUG - 옵션 이름: 香水 小样压盖机, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:42,503 - option.py:545 - default_logger - DEBUG - 옵션 '香水 小样压盖机' 체크함 +2024-10-14 17:20:42,531 - option.py:537 - default_logger - DEBUG - 옵션 이름: 香水瓶 中套压盖机 适合13MM 15MM盖子, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:42,779 - option.py:545 - default_logger - DEBUG - 옵션 '香水瓶 中套压盖机 适合13MM 15MM盖子' 체크함 +2024-10-14 17:20:42,794 - option.py:537 - default_logger - DEBUG - 옵션 이름: 喷雾瓶 卡扣式压盖机, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:42,993 - option.py:545 - default_logger - DEBUG - 옵션 '喷雾瓶 卡扣式压盖机' 체크함 +2024-10-14 17:20:43,009 - option.py:537 - default_logger - DEBUG - 옵션 이름: 中套压盖机 20MM瓶口专用 适合 20MM 瓶口, 필터링된 옵션에 포함 여부: True, 현재 체크 상태: False +2024-10-14 17:20:43,303 - option.py:545 - default_logger - DEBUG - 옵션 '中套压盖机 20MM瓶口专用 适合 20MM 瓶口' 체크함 +2024-10-14 17:20:43,331 - option.py:537 - default_logger - DEBUG - 옵션 이름: 小样分装+香水瓶卡扣 两种压头 13 15MM中盖, 필터링된 옵션에 포함 여부: False, 현재 체크 상태: False +2024-10-14 17:20:43,339 - option.py:555 - default_logger - DEBUG - 옵션 체크 상태 조정 완료. +2024-10-14 17:20:43,339 - option.py:212 - default_logger - DEBUG - 옵션 필터링 및 조정 +2024-10-14 17:20:43,339 - option.py:141 - default_logger - ERROR - 선택된 옵션 저장 중 오류 발생: list indices must be integers or slices, not str +Traceback (most recent call last): + File "D:\py\autoTrans\option.py", line 120, in store_selected_options + total_options_count = len([self.option_info]['original_names']) + ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ +TypeError: list indices must be integers or slices, not str +2024-10-14 17:20:43,339 - option.py:243 - default_logger - DEBUG - A-Z 버튼을 클릭합니다. +2024-10-14 17:20:43,339 - option.py:247 - default_logger - DEBUG - 저장 버튼을 클릭합니다. +2024-10-14 17:20:43,681 - option.py:250 - default_logger - DEBUG - 옵션 처리 완료. +2024-10-14 17:20:44,171 - browser_control.py:508 - default_logger - DEBUG - 상품 수정 내용 저장 완료. +2024-10-14 17:20:44,173 - gui.py:749 - default_logger - DEBUG - 상품 세부사항 저장 중... +2024-10-14 17:20:44,471 - gui.py:775 - default_logger - DEBUG - 번역 작업을 중단합니다... +2024-10-14 17:20:44,659 - browser_control.py:500 - default_logger - DEBUG - 상품 수정 내용 저장 및 ECS 완료. +2024-10-14 17:20:44,662 - gui.py:754 - default_logger - DEBUG - 2/[31]개 상품 수정 완료. +2024-10-14 17:20:44,663 - gui.py:696 - default_logger - DEBUG - 번역 작업이 중단되었습니다. +2024-10-14 17:20:46,739 - gui.py:779 - default_logger - DEBUG - 프로그램을 종료합니다... diff --git a/browser_control.py b/browser_control.py index 48aa8170..0c2d59b8 100644 --- a/browser_control.py +++ b/browser_control.py @@ -170,7 +170,7 @@ class BrowserController: }}''', self.total_product_count_locator) if element_text: - self.logger.debug(f"가져온 텍스트: {element_text}") # 텍스트 확인용 로그 + self.logger.debug(f"총 상품수 확인: {element_text}") # 텍스트 확인용 로그 # "총 xx개 상품"에서 숫자만 추출 count = int(''.join(filter(str.isdigit, element_text))) return count diff --git a/config.ini b/config.ini index 9bed6680..35ed29d8 100644 --- a/config.ini +++ b/config.ini @@ -5,26 +5,28 @@ exchange_fee_input_locator = '//*[@id='productMainContentContainerId']/div/div[1 plus_margin_locator = '//*[@id='productMainContentContainerId']/div/div[1]/div/div/div[2]/div/div[1]/div[8]/div/div/div[3]/div/div/div/div[1]/div[2]/input' oversea_shipping_locator = '//*[@id='productMainContentContainerId']/div/div[1]/div/div/div[2]/div/div[1]/div[10]/div/div/div/div[1]/div[2]/input' option_count_text_locator = 'div#productMainContentContainerId th:nth-child(2) > div > span' -product_cost_locator = '//*[@id='productMainContentContainerId']/div/div[2]/div/div/div[5]/div[1]/div/div/div/div/div[2]/table/tbody/tr[{i}]/td[3]/div/div/div/div[2]/input' -standard_selling_price_locator = '//*[@id='productMainContentContainerId']/div/div[2]/div/div/div[5]/div[1]/div/div/div/div/div[2]/table/tbody/tr[{i}]/td[4]/div/div/div[1]/div/div[2]/input' +product_cost_locator = '//*[@id='productMainContentContainerId']/div/div[2]/div/div/div[5]/div[1]/div/div/div/div/div[2]/table/tbody/tr[{index}]/td[3]/div/div/div/div[2]/input' +standard_selling_price_locator = '//*[@id='productMainContentContainerId']/div/div[2]/div/div/div[5]/div[1]/div/div/div/div/div[2]/table/tbody/tr[{index}]/td[4]/div/div/div[1]/div/div[2]/input' [OptionLocators] # 옵션 관련 선택자 -option_excluded_selector_template = '//*[@id="productMainContentContainerId"]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/div/div[2]/div/div/div[5]/div[1]/div/div/ul/li[{i}]/div/div[1]/div/div[2]/div/div[3]' -option_input_selector_template = '//*[@id="productMainContentContainerId"]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/div/div[2]/div/div/div[5]/div[1]/div/div/ul/li[{i}]/div/div[1]/div/div[3]/div[2]/div[1]/span/input' +option_excluded_selector_template = '//*[@id="productMainContentContainerId"]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/div/div[2]/div/div/div[5]/div[1]/div/div/ul/li[{index}]/div/div[1]/div/div[2]/div/div[3]' +option_input_selector_template = '//*[@id="productMainContentContainerId"]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/div/div[2]/div/div/div[5]/div[1]/div/div/ul/li[{index}]/div/div[1]/div/div[3]/div[2]/div[1]/span/input' single_option_locator = '//div[@id="productMainContentContainerId"]//label[contains(@class, 'ant-radio-button-wrapper-checked') and contains(., '단일 상품등록')]' option_product_locator = '//div[@id="productMainContentContainerId"]//label[contains(@class, 'ant-radio-button-wrapper-checked') and contains(., '옵션 상품등록')]' total_options_selector = '#productMainContentContainerId label.ant-checkbox-wrapper' is_all_option_checked_selector = '#productMainContentContainerId .ant-checkbox-indeterminate' -original_name_selector_template = 'div#productMainContentContainerId li:nth-child({i}) > div > div:nth-child(1) > div > div:nth-child(3) > div:nth-child(3) > span' -edit_field_selector_template = 'div#productMainContentContainerId li:nth-child({i}) > div > div:nth-child(1) > div > div:nth-child(3) > div:nth-child(2) > div:nth-child(1) > span > input' -checkbox_selector_template = '#productMainContentContainerId li:nth-child({i}) input[type="checkbox"]' -image_selector_template = '#productMainContentContainerId li:nth-child({i}) img.sc-gbvfcU.ezktkd' -price_selector_template = '#productMainContentContainerId li:nth-child({i}) sup' -delete_button_selector_template = '#productMainContentContainerId > div.sc-TOgAA.fZvEqY > div:nth-child(2) > div > div > div:nth-child(2) > div > div.sc-cFShuL.dbIeho > div > div > div.ant-collapse-content.ant-collapse-content-active > div > div > div.sc-fGdiLE.iyXMeU > div.ant-list.ant-list-split.css-1li46mu > div > div > ul > li:nth-child({i}) > div > div:nth-child(1) > div > div:nth-child(2) > div > div.ant-row.ant-row-no-wrap.ant-row-space-between.ant-row-middle.css-1li46mu > div:nth-child(1) > div' +original_name_selector_template = 'div#productMainContentContainerId li:nth-child({index}) > div > div:nth-child(1) > div > div:nth-child(3) > div:nth-child(3) > span' +edit_field_selector_template = 'div#productMainContentContainerId li:nth-child({index}) > div > div:nth-child(1) > div > div:nth-child(3) > div:nth-child(2) > div:nth-child(1) > span > input' +checkbox_selector_template = '#productMainContentContainerId li:nth-child({index}) input[type="checkbox"]' +image_selector_template = '#productMainContentContainerId li:nth-child({index}) img.sc-gbvfcU.ezktkd' +price_selector_template = '#productMainContentContainerId li:nth-child({index}) sup' +delete_button_selector_template = '#productMainContentContainerId > div.sc-TOgAA.fZvEqY > div:nth-child(2) > div > div > div:nth-child(2) > div > div.sc-cFShuL.dbIeho > div > div > div.ant-collapse-content.ant-collapse-content-active > div > div > div.sc-fGdiLE.iyXMeU > div.ant-list.ant-list-split.css-1li46mu > div > div > ul > li:nth-child({index}) > div > div:nth-child(1) > div > div:nth-child(2) > div > div.ant-row.ant-row-no-wrap.ant-row-space-between.ant-row-middle.css-1li46mu > div:nth-child(1) > div' confirm_delete_button_locator = 'body > div:nth-child(18) > div > div.ant-modal-wrap.ant-modal-confirm-centered.ant-modal-centered > div > div.sc-ddjGPC.jbwEYW > div > div > div > div.ant-modal-confirm-btns > button.ant-btn.css-1li46mu.ant-btn-primary.ant-btn-dangerous' -add_button_selector_template = '#productMainContentContainerId > div.sc-TOgAA.fZvEqY > div:nth-child(2) > div > div > div:nth-child(2) > div > div.sc-cFShuL.dbIeho > div > div > div.ant-collapse-content.ant-collapse-content-active > div > div > div.sc-fGdiLE.iyXMeU > div.ant-list.ant-list-split.css-1li46mu > div > div > ul > li:nth-child({i}) > div > div:nth-child(1) > div > div:nth-child(2) > div > div > img' +add_button_selector_template = '#productMainContentContainerId > div.sc-TOgAA.fZvEqY > div:nth-child(2) > div > div > div:nth-child(2) > div > div.sc-cFShuL.dbIeho > div > div > div.ant-collapse-content.ant-collapse-content-active > div > div > div.sc-fGdiLE.iyXMeU > div.ant-list.ant-list-split.css-1li46mu > div > div > ul > li:nth-child({index}) > div > div:nth-child(1) > div > div:nth-child(2) > div > div > img' file_input_locator = 'input[type="file"]' +low_order_button_locator = 'button:has-text("가격 낮은 순")' +AtoZ_button_locator = 'button:has-text("A-Z")' [DetailLocators] product_detail_input_locator = '//*[@id='detailMainContainerId']/div/div/div[{i}]/textarea' diff --git a/gui.py b/gui.py index 1167d3c7..4178d991 100644 --- a/gui.py +++ b/gui.py @@ -10,9 +10,11 @@ from price import PriceHandler from title import TitleHandler from locatorManager import LocatorManager from src.cmb_diag import CMBSettingsDialog +from src.DatabaseManager import DatabaseManager from logger_module import QTextEditLogger # 추가 import logging import asyncio +import os, shutil class TranslationApp(QWidget): def __init__(self, logger=None, app=None): @@ -32,7 +34,23 @@ class TranslationApp(QWidget): self.vertexAI = VertexAITranslator(self.logger, key_path) self.optionHandler = None - self.cmb_diag = CMBSettingsDialog(parent=self, logger=self.logger, debug=True) + # DB 파일 경로 설정 + self.base_dir = os.path.dirname(os.path.abspath(__file__)) + self.user_db_path = os.path.join(self.base_dir, "userDB.db") + self.initial_db_path = os.path.join(self.base_dir, "src", "initialDB.db") + + # userDB.db 파일이 없으면 initialDB.db를 복사해서 생성 + if not os.path.exists(self.user_db_path): + if os.path.exists(self.initial_db_path): + shutil.copyfile(self.initial_db_path, self.user_db_path) + print("initialDB.db를 userDB.db로 복사했습니다.") + else: + raise FileNotFoundError("initialDB.db 파일이 없습니다. 초기 DB 파일이 존재하는지 확인해주세요.") + + # DatabaseManager 초기화 + self.db_manager = DatabaseManager(db_url=f"sqlite:///{self.user_db_path}", logger=self.logger) + + self.cmb_diag = CMBSettingsDialog(parent=self, logger=self.logger, db_manager=self.db_manager, initial_db_path=self.initial_db_path, user_db_path=self.user_db_path, debug=self.debug) self.clipboardImageManager = ClipboardImageManager(self, logger, self.browser_controller, self.debug) self.optionHandler = OptionHandler(self.locator_manager, self.browser_controller, self.whale_translator, self.logger, self.vertexAI, self.debug) self.priceHandler = PriceHandler(self.locator_manager, self.browser_controller, self.logger, self.vertexAI, self.cmb_diag, self.debug) @@ -698,7 +716,7 @@ class TranslationApp(QWidget): self.complete_stage(0) if self.toggle_states['optionTrnas'] or self.toggle_states['optionIMGTrans'] or self.toggle_states['optionAutoSelect']: - self.logger.debug(f"옵션수정 : {self.toggle_states['optionTrnas']} + {self.toggle_states['optionIMGTrans']} + {self.toggle_states['optionAutoSelect']}") + self.logger.debug(f"옵션수정 : optionTrnas={self.toggle_states['optionTrnas']} + optionIMGTrans={self.toggle_states['optionIMGTrans']} + optionAutoSelect{self.toggle_states['optionAutoSelect']}") # 옵션 수정 self.start_stage(0) await self.edit_option(product_name) @@ -811,7 +829,7 @@ class TranslationApp(QWidget): # 옵션 최대선택갯수 max_option_count = 20 option_image_trans = False - await self.optionHandler.process_options(product_name, max_option_count, option_image_trans) + await self.optionHandler.process_options(product_name, max_option_count, self.toggle_states) # 수정 후 저장 # await self.optionHandler.save_option() diff --git a/locatorManager.py b/locatorManager.py index 6d96ba0d..7ae9a8bc 100644 --- a/locatorManager.py +++ b/locatorManager.py @@ -73,6 +73,8 @@ class LocatorManager: 'confirm_delete_button_locator': self.config.get('OptionLocators', 'confirm_delete_button_locator').strip("'"), 'add_button_selector_template': self.config.get('OptionLocators', 'add_button_selector_template').strip("'"), 'file_input_locator': self.config.get('OptionLocators', 'file_input_locator').strip("'"), + 'low_order_button_locator': self.config.get('OptionLocators', 'low_order_button_locator').strip("'"), + 'AtoZ_button_locator': self.config.get('OptionLocators', 'AtoZ_button_locator').strip("'"), } # TitleLocators 섹션 diff --git a/option.py b/option.py index b900cdfe..e8807f7c 100644 --- a/option.py +++ b/option.py @@ -2,7 +2,7 @@ from collections import Counter import pyautogui from datetime import datetime import numpy as np -import asyncio +import asyncio, time, math class OptionHandler: def __init__(self, locator_manager, browser_controller, whale_translator, logger, vertexAI, debug_flag=False): @@ -31,6 +31,8 @@ class OptionHandler: self.confirm_delete_button_locator = self.locator_manager.get_locator('OptionLocators', 'confirm_delete_button_locator') self.add_button_selector_template = self.locator_manager.get_locator('OptionLocators', 'add_button_selector_template') self.file_input_locator = self.locator_manager.get_locator('OptionLocators', 'file_input_locator') + self.low_order_button_locator = self.locator_manager.get_locator('OptionLocators', 'low_order_button_locator') + self.AtoZ_button_locator = self.locator_manager.get_locator('OptionLocators', 'AtoZ_button_locator') def update_page(self, page1): self.page = page1 @@ -81,7 +83,12 @@ class OptionHandler: std_price = np.std(prices) self.logger.debug(f"최저옵션: {mean_price}, 표준편차: {std_price}") - + + if std_price == 0: + # 모든 옵션의 가격이 동일한 경우 그대로 반환 + self.logger.debug("모든 옵션의 가격이 동일합니다. 필터링 없이 모든 옵션을 반환합니다.") + return options + filtered_options = [] for option in options: z_score = (option['price'] - mean_price) / std_price @@ -102,8 +109,7 @@ class OptionHandler: # 최종적으로 필터링된 가격 범위 내에 있는 옵션만 선택 final_options = [option for option in filtered_options if lower_bound <= option['price'] <= upper_bound] - self.logger.debug(f"최종 선택된 옵션: {[opt['price'] for opt in final_options]}") - + self.logger.debug(f"최종 선택된 옵션: {[(opt['name'], opt['price']) for opt in final_options]}") return final_options async def store_selected_options(self): @@ -111,13 +117,13 @@ class OptionHandler: try: selected_translated_options = [] - total_options_count = len(self.option_info['original_names']) + total_options_count = len([self.option_info]['original_names']) await self.low_order_click() for i in range(1, total_options_count + 1): - option_excluded_selector = self.option_excluded_selector_template.format(i) - option_input_selector = self.option_input_selector_template.format(i) + option_excluded_selector = self.option_excluded_selector_template.format(index=i) + option_input_selector = self.option_input_selector_template.format(index=i) option_excluded_element = await self.page.query_selector(option_excluded_selector) if not option_excluded_element: @@ -135,7 +141,7 @@ class OptionHandler: self.logger.error(f"선택된 옵션 저장 중 오류 발생: {e}", exc_info=True) - async def process_options(self, product_name, max_option_count=20, option_image_trans_flag=False): + async def process_options(self, product_name, max_option_count=20, toggle_states=False): """ 옵션 처리 로직. 옵션을 번역하고 이미지를 업데이트함. @@ -171,36 +177,44 @@ class OptionHandler: await self.low_order_click() # 4. 옵션 정보 수집 및 번역 - self.option_info = await self.collect_options_info() + if toggle_states['optionTrnas']: + self.logger.debug(f"옵션 AI번역 : {toggle_states['optionTrnas']}") + self.option_info = await self.collect_options_info() - translation_success = False # 성공/실패 플래그 + translation_success = False # 성공/실패 플래그 - try: - # Vertex AI를 통한 번역 시도 - translated_options = await self.vertexAItranslator.translate_options(self.option_info['original_names'], product_name) - self.logger.debug(f"번역된 옵션 입력") - await self.apply_translated_options(translated_options, self.option_info['edit_fields']) + try: + # Vertex AI를 통한 번역 시도 + translated_options = await self.vertexAItranslator.translate_options(self.option_info['original_names'], product_name) + self.logger.debug(f"번역된 옵션 입력") + await self.apply_translated_options(translated_options, self.option_info['edit_fields']) - translation_success = True # 번역 성공 + translation_success = True # 번역 성공 - except ValueError as ve: - if "SAFETY" in str(ve): - self.logger.error(f"안전 필터에 의해 번역 요청이 차단되었습니다. {ve}") - self.logger.debug(f"퍼센티 자체 AI번역 사용 시도") - pyautogui.hotkey('alt', 'q') - translation_success = False # 번역 실패 + except ValueError as ve: + if "SAFETY" in str(ve): + self.logger.error(f"안전 필터에 의해 번역 요청이 차단되었습니다. {ve}") + self.logger.debug(f"퍼센티 자체 AI번역 사용 시도") + pyautogui.hotkey('alt', 'q') + self.logger.debug(f"번역을 위한 5초간 대기") + # await asyncio.sleep(5) + time.sleep(5) + translation_success = False # 번역 실패 + + self.logger.debug(f"[{'VertexAI' if translation_success else '퍼센티AI'}] 를 이용한 옵션번역 성공") # 5. 옵션 필터링 및 조정 - self.logger.debug(f"옵션 필터링 및 조정") - await self.filter_and_adjust_options(max_option_count) + if toggle_states['optionAutoSelect']: + self.logger.debug(f"옵션 필터링 및 조정 : {toggle_states['optionAutoSelect']}") + await self.filter_and_adjust_options(max_option_count) # 6. 선택된 옵션 재수집 self.logger.debug(f"옵션 필터링 및 조정") await self.store_selected_options() # 페이지에서 실제 선택된 옵션을 수집하여 저장 # 7. 옵션 이미지 업데이트 (옵션 이미지가 있는 경우) - if option_image_trans_flag: - self.logger.debug("옵션 이미지 업데이트 (옵션 이미지가 있는 경우만)") + if toggle_states['optionIMGTrans']: + self.logger.debug(f"옵션 이미지번역(옵션 이미지가 있는 경우만) : {toggle_states['optionIMGTrans']}") for index, option_image_url in enumerate(self.option_info.get('option_images', []), start=1): option_name = translated_options.get(f'trans_option_{index}', f'옵션_{index}') await self.update_option_image(index, option_image_url, product_name, option_name, self.debug_flag) @@ -283,11 +297,11 @@ class OptionHandler: # 옵션 정보를 비동기로 수집 (각 항목 병렬 처리) for i in range(1, total_options_count + 1): try: - original_name_selector = self.original_name_selector_template.format(i) - edit_field_selector = self.edit_field_selector_template.format(i) - checkbox_selector = self.checkbox_selector_template.format(i) - image_selector = self.image_selector_template.format(i) - price_selector = self.price_selector_template.format(i) + original_name_selector = self.original_name_selector_template.format(index=i) + edit_field_selector = self.edit_field_selector_template.format(index=i) + checkbox_selector = self.checkbox_selector_template.format(index=i) + image_selector = self.image_selector_template.format(index=i) + price_selector = self.price_selector_template.format(index=i) tasks = [ self.page.query_selector(original_name_selector), @@ -435,15 +449,15 @@ class OptionHandler: if edit_field: await edit_field.fill(translated_name) # 필드에 번역된 옵션명 입력 - self.logger.debug(f"{key}번째 translated_name : [{translated_name}] 입력 완료") + self.logger.info(f"{key}번째 translated_name : [{translated_name}] 입력 완료") # 업데이트할 번역된 이름을 임시 딕셔너리에 저장 updated_translations[original_name] = translated_name else: - self.logger.debug(f"{key}번째 옵션 필드가 없습니다.") + self.logger.error(f"{key}번째 옵션 필드가 없습니다.") else: - self.logger.debug(f"원본 옵션명을 찾을 수 없습니다: {origin_option_key}") + self.logger.error(f"원본 옵션명을 찾을 수 없습니다: {origin_option_key}") # 모든 번역이 끝난 후 한 번에 업데이트 self.option_info['selected_translated_options'].update(updated_translations) @@ -452,6 +466,20 @@ class OptionHandler: except Exception as e: self.logger.error(f"번역된 옵션명을 입력하는 중 오류 발생: {e}", exc_info=True) + def round_to_UP(self, number, nearest=1000): + """ + 숫자를 주어진 'nearest' 값에 맞춰 올림합니다. + + Parameters: + - number (float or int): 올림할 숫자 + - nearest (int): 올림할 단위 (기본값 1000) + + Returns: + - rounded_number (int): 올림된 숫자 + """ + # nearest 값으로 나눈 후 math.ceil을 사용하여 올림 + rounded_number = math.ceil(number / nearest) * nearest + return rounded_number async def filter_and_adjust_options(self, max_option_count): """가격 필터링을 적용하고 옵션을 조정""" @@ -466,7 +494,7 @@ class OptionHandler: options_list = [ { "name": name, - "price": (info['low_price'] + info['high_price']) / 2 # 중간 값을 사용하여 필터링 + "price": self.round_to_UP((info['low_price'] + info['high_price']) / 2) # 중간 값을 사용하여 필터링 } for name, info in prices.items() ] @@ -501,43 +529,41 @@ class OptionHandler: try: # 옵션 체크 상태를 수집한 정보에서 필터링된 옵션들만 체크 상태로 유지 for i, name in enumerate(self.option_info['original_names'].values()): - checkbox_selector = self.checkbox_selector_template.format(i+1) + checkbox_selector = self.checkbox_selector_template.format(index=i+1) checkbox_element = await self.page.query_selector(checkbox_selector) is_checked = self.option_info['checked_states'].get(name, False) + # 디버깅 로그: 현재 옵션 이름과 필터링된 옵션 이름 확인 + self.logger.debug(f"옵션 이름: {name}, 필터링된 옵션에 포함 여부: {name in filtered_option_names}, 현재 체크 상태: {is_checked}") + if checkbox_element: + # 필터링된 이름에 포함되는 경우 if name in filtered_option_names: + # 체크되어 있지 않으면 체크 수행 if not is_checked: await checkbox_element.click() + self.logger.debug(f"옵션 '{name}' 체크함") self.option_info['checked_states'][name] = True + # 필터링된 이름에 포함되지 않는 경우 else: + # 체크되어 있으면 체크 해제 수행 if is_checked: await checkbox_element.click() + self.logger.debug(f"옵션 '{name}' 체크 해제함") self.option_info['checked_states'][name] = False + self.logger.debug(f"옵션 체크 상태 조정 완료.") except Exception as e: self.logger.error(f"옵션 체크 상태 조정 중 오류 발생: {e}", exc_info=True) async def AtoZ_button_click(self): - AtoZ_button_locator = self.locator_manager.get_locator('OptionLocators', 'AtoZ_button_locator') self.logger.debug("A-Z 버튼을 클릭합니다.") - await self.page.click(AtoZ_button_locator) + await self.page.click(self.AtoZ_button_locator) async def low_order_click(self): - low_order_button_locator = self.locator_manager.get_locator('OptionLocators', 'low_order_button_locator') self.logger.debug("가격 낮은 순 정렬을 클릭합니다.") - await self.page.click(low_order_button_locator) - - async def save_option(self): - """옵션 수정 후 저장 버튼 클릭""" - save_button_locator = self.locator_manager.get_locator('OptionLocators', 'save_button_locator') - - try: - await self.page.click(save_button_locator) - self.logger.debug("옵션 수정 내용 저장 완료.") - except Exception as e: - self.logger.debug(f"옵션수정 후 저장 버튼 클릭 중 오류: {e}", exc_info=True) + await self.page.click(self.low_order_button_locator) async def update_option_image(self, index, option_image_url, product_name, option_name, debug_flag=False): """ @@ -557,9 +583,9 @@ class OptionHandler: self.logger.debug(f"{index}번째 옵션의 이미지를 업데이트합니다.") - delete_button_selector = self.delete_button_selector_template.format(index) + delete_button_selector = self.delete_button_selector_template.format(index=index) confirm_delete_button_locator = self.confirm_delete_button_locator - add_button_selector = self.add_button_selector_template.format(index) + add_button_selector = self.add_button_selector_template.format(index=index) file_input_locator = self.file_input_locator # 기존 이미지 삭제 (삭제 버튼이 존재할 경우) diff --git a/option_translator.py b/option_translator.py new file mode 100644 index 00000000..c5b7ba67 --- /dev/null +++ b/option_translator.py @@ -0,0 +1,117 @@ +import re +import jieba +from collections import Counter +from transformers import pipeline + +class ProductOptionTranslator: + def __init__(self, product_name, options, translator): + """ + 옵션 명칭을 간소화하고 번역하는 클래스. + + Parameters: + - product_name (str): 상품명 + - options (list): 옵션명 리스트 (중국어 원문) + - translator (object): 번역기 객체 (예: transformers의 pipeline 등) + """ + self.product_name = product_name + self.options = options + self.translator = translator + + def simplify_options(self): + """ + 각 옵션의 특징을 간결하게 남기고 불필요한 정보를 제거합니다. + + Returns: + - simplified_options (list): 간소화된 옵션명 리스트 + """ + # 상품명에서 공통적인 키워드 추출 + common_words = self.extract_common_words() + simplified_options = [] + + for option in self.options: + # 형태소 분석을 통해 단어 단위로 분리 + words = list(jieba.cut(option)) + + # 의미 있는 단어만 남기기 (숫자, 영어, 특수한 패턴 유지) + keywords = [word for word in words if self.is_significant(word, common_words)] + + # 간결하게 옵션명 재구성 + simplified_option = " ".join(keywords) + simplified_options.append(simplified_option) + + return simplified_options + + def extract_common_words(self): + """ + 상품명에서 공통적으로 사용되는 키워드를 추출합니다. + + Returns: + - common_words (set): 상품명에서 중복되는 일반적인 단어들의 집합 + """ + product_words = list(jieba.cut(self.product_name)) + word_counts = Counter(product_words) + common_words = {word for word, count in word_counts.items() if count > 1} + return common_words + + def is_significant(self, word, common_words): + """ + 단어가 의미 있는지 확인합니다. 의미 없는 수식어나 중복된 단어는 제거합니다. + + Parameters: + - word (str): 검사할 단어 + - common_words (set): 상품명에서 추출한 공통 단어들 + + Returns: + - (bool): 단어가 의미 있는 경우 True, 그렇지 않은 경우 False + """ + # 공통 단어 또는 의미 없는 수식어는 제거 + if word in common_words: + return False + # 숫자, 영어 또는 특정 패턴(전압, 전류 등)은 의미 있는 단어로 간주 + if re.match(r'[A-Za-z0-9]+', word) or re.match(r'\d+(V|A|W|Hz)', word): + return True + return True if len(word) > 1 else False + + def translate_options(self, simplified_options): + """ + 간소화된 옵션명을 한글로 번역합니다. + + Parameters: + - simplified_options (list): 간소화된 옵션명 리스트 + + Returns: + - translated_options (list): 한글로 번역된 옵션명 리스트 (25자 이내로 축약) + """ + translated_options = [] + for option in simplified_options: + translated_text = self.translator(option, src_lang="zh", tgt_lang="ko") + # 번역된 결과가 25자를 넘을 경우 축약 + if len(translated_text) > 25: + translated_text = translated_text[:25] + '...' + translated_options.append(translated_text) + return translated_options + + def process_options(self): + """ + 전체 옵션 처리 과정을 수행합니다 (간소화 + 번역). + + Returns: + - translated_options (list): 최종 한글로 번역된 옵션 리스트 + """ + simplified_options = self.simplify_options() + return self.translate_options(simplified_options) + + +# 번역기 예시 (transformers의 pipeline을 사용한 경우) +translator = pipeline('translation', model='Helsinki-NLP/opus-mt-zh-ko') + +# 예제 데이터 +product_name = "전기 드릴 18V 가정용" +options = ["18V 2.0Ah 배터리 포함", "18V 본체만", "충전기 포함 세트", "전용 케이스"] + +# 클래스 사용 +translator_class = ProductOptionTranslator(product_name, options, translator) +translated_options = translator_class.process_options() + +for idx, translated_option in enumerate(translated_options, 1): + print(f"옵션 {idx}: {translated_option}") \ No newline at end of file diff --git a/price.py b/price.py index df633c62..3c6d3780 100644 --- a/price.py +++ b/price.py @@ -574,8 +574,8 @@ class PriceHandler: # 옵션 개수만큼 순회하면서 값을 수집 for i in range(1, total_options + 1): - product_cost_locator = self.product_cost_locator_template.format(i=i+1) - standard_selling_price_locator = self.standard_selling_price_locator_template.format(i=i+1) + product_cost_locator = self.product_cost_locator_template.format(index=i+1) + standard_selling_price_locator = self.standard_selling_price_locator_template.format(index=i+1) # 각 선택자를 사용하여 요소 찾기 product_cost_element = await self.page.wait_for_selector(product_cost_locator) @@ -735,7 +735,7 @@ class PriceHandler: """ krw = cny * exchange_rate return krw - + def calculate_category_extra_shipping(self, category: str, product_price: int) -> int: """ 카테고리와 상품가를 기반으로 추가 해외배송비를 계산합니다. @@ -749,37 +749,21 @@ class PriceHandler: """ total_extra_shipping = 0 self.logger.debug(f"category : {category}") - cmb_config = self.cmb_diag.get_crmobi_stage(category) - # locator_manager에서 카테고리별 해외배송비 설정을 불러옴 - category_data = self.locator_manager.get_category_data(category) + # cmb_diag에서 카테고리별 해외배송비 설정을 불러옴 + category_data = self.cmb_diag.get_crmobi_stage(category) if category_data: # 카테고리 설정이 있는지 확인 - threshold_index = 1 + threshold, unit, extra_shipping = category_data - # threshold와 extra_shipping의 dynamic한 처리 - while True: - threshold_key = f'threshold_{threshold_index}' - extra_shipping_key = f'extra_shipping_{threshold_index}' - unit_key = f'unit_{threshold_index}' - - # threshold_key가 존재하지 않으면 종료 - if threshold_key not in category_data or extra_shipping_key not in category_data or unit_key not in category_data: - break - - threshold = int(category_data.get(threshold_key, 0)) - extra_shipping = int(category_data.get(extra_shipping_key, 0)) - unit = int(category_data.get(unit_key, 0)) - - if product_price > threshold: - excess_amount = product_price - threshold - increments = excess_amount // unit - total_extra_shipping += increments * extra_shipping - self.logger.debug(f"{category} 카테고리, threshold {threshold}을 초과하여 추가 해외배송비 {increments * extra_shipping} 추가 적용") - - threshold_index += 1 # 다음 구간으로 이동 + if product_price > threshold: + excess_amount = product_price - threshold + increments = excess_amount // unit + total_extra_shipping += increments * extra_shipping + self.logger.debug(f"{category} 카테고리, threshold {threshold}을 초과하여 추가 해외배송비 {increments * extra_shipping} 추가 적용") + else: self.logger.debug(f"카테고리 {category}는 추가 해외배송비 규칙이 없습니다. 추가 해외배송비는 0으로 설정됩니다.") self.logger.debug(f"총 추가 해외배송비: {total_extra_shipping}") - return total_extra_shipping + return total_extra_shipping \ No newline at end of file diff --git a/src/DatabaseManager.py b/src/DatabaseManager.py new file mode 100644 index 00000000..6ed554f9 --- /dev/null +++ b/src/DatabaseManager.py @@ -0,0 +1,82 @@ +from sqlalchemy import create_engine, text +from sqlalchemy.orm import sessionmaker +from sqlalchemy.exc import SQLAlchemyError +import os, shutil + +class DatabaseManager: + def __init__(self, db_url, logger=None): + self.logger = logger + self.db_url = db_url + self.engine = create_engine(db_url, echo=False) + self.Session = sessionmaker(bind=self.engine) + + if self.logger: + self.logger.debug(f"Database engine created with URL: {db_url}") + + def get_session(self): + """DB 세션을 생성하고 반환""" + if self.logger: + self.logger.debug("Creating a new database session.") + return self.Session() + + def close_engine(self): + """DB 엔진을 종료""" + if self.logger: + self.logger.debug("Closing the database engine.") + self.engine.dispose() + + def create_db_file(self, db_path, initial_db_path): + """DB 파일이 없을 경우 초기 DB 파일을 복사하여 생성""" + if not os.path.exists(db_path): + if self.logger: + self.logger.debug(f"Creating user DB file from initial DB: {initial_db_path} -> {db_path}") + shutil.copyfile(initial_db_path, db_path) + else: + if self.logger: + self.logger.debug(f"User DB file already exists at: {db_path}") + + def execute_query(self, query, params=None): + """ + 쿼리를 실행하고 결과를 반환하지 않음 + + Parameters: + query (str): 실행할 쿼리 문자열 + params (dict, optional): 쿼리에 사용할 매개변수 + """ + with self.get_session() as session: + try: + session.execute(text(query), params) + session.commit() + if self.logger: + self.logger.debug(f"Executed query: {query} with params: {params}") + except SQLAlchemyError as e: + if self.logger: + self.logger.error(f"Error executing query: {query}, params: {params}, error: {e}") + session.rollback() + raise + + def fetchone(self, query, params=None): + """쿼리를 실행하고 단일 행을 반환""" + with self.get_session() as session: + try: + result = session.execute(text(query), params).fetchone() + if self.logger: + self.logger.debug(f"Fetched one result for query: {query} with params: {params}, result: {result}") + return result + except SQLAlchemyError as e: + if self.logger: + self.logger.error(f"Error fetching one result: {query}, params: {params}, error: {e}") + raise + + def fetchall(self, query, params=None): + """쿼리를 실행하고 모든 행을 반환""" + with self.get_session() as session: + try: + result = session.execute(text(query), params).fetchall() + if self.logger: + self.logger.debug(f"Fetched all results for query: {query} with params: {params}, result count: {len(result)}") + return result + except SQLAlchemyError as e: + if self.logger: + self.logger.error(f"Error fetching all results: {query}, params: {params}, error: {e}") + raise \ No newline at end of file diff --git a/src/cmb_diag.py b/src/cmb_diag.py index f7d51e88..5e34c4c4 100644 --- a/src/cmb_diag.py +++ b/src/cmb_diag.py @@ -2,30 +2,39 @@ from PySide6.QtWidgets import (QDialog, QFileDialog, QVBoxLayout, QHBoxLayout, Q QSpinBox, QGroupBox, QFileDialog, QMessageBox, QComboBox) from PySide6.QtCore import Qt from PySide6.QtGui import QFont, QColor -import sqlite3 +from src.DatabaseManager import DatabaseManager +# import sqlite3 import shutil import os, re import pandas as pd class CMBSettingsDialog(QDialog): - def __init__(self, parent=None, logger=None, debug=False): + def __init__(self, parent=None, logger=None, db_manager: DatabaseManager = None, initial_db_path = None, user_db_path = None, debug=False): super().__init__(parent) self.setWindowTitle("CMB 설정") self.resize(900, 600) + self.db_manager = db_manager + self.initial_db_path = initial_db_path + self.user_db_path = user_db_path self.logger = logger self.debug = debug # DB 파일 경로 설정 - self.user_db_path = os.path.join("src", "userDB.db") - self.initial_db_path = os.path.join("src", "initialDB.db") + # self.user_db_path = os.path.join("src", "userDB.db") + # self.initial_db_path = os.path.join("src", "initialDB.db") - # userDB 체크 및 초기화 - if not os.path.exists(self.user_db_path): - shutil.copyfile(self.initial_db_path, self.user_db_path) + # # userDB 체크 및 초기화 + # if not os.path.exists(self.user_db_path): + # shutil.copyfile(self.initial_db_path, self.user_db_path) - # DB 연결 설정 - self.conn = sqlite3.connect(self.user_db_path) - self.cursor = self.conn.cursor() + # # DB 연결 설정 + # self.conn = sqlite3.connect(self.user_db_path) + # self.cursor = self.conn.cursor() + + # DB 매니저가 제공되지 않으면 오류 발생 + if self.db_manager is None: + raise ValueError("DatabaseManager 인스턴스가 필요합니다.") + # 메인 레이아웃 설정 main_layout = QHBoxLayout() @@ -46,18 +55,19 @@ class CMBSettingsDialog(QDialog): self.search_btn.setDefault(False) self.search_btn.clicked.connect(self.search_category) - search_layout.addWidget(self.search_input,0,1,1,3) - search_layout.addWidget(self.search_btn,0,2,1,1) - self.cmb_view_btn = QPushButton("모두 보기") + search_layout.addWidget(self.search_input,0,1,1,8) + search_layout.addWidget(self.search_btn,0,9,1,1) + self.cmb_view_btn = QPushButton("CMB-ALL") self.cmb_view_btn.clicked.connect(self.toggle_cmb_view) - search_layout.addWidget(self.cmb_view_btn,0,3,1,1) + search_layout.addWidget(self.cmb_view_btn,0,10,1,1) # 1레벨, 2레벨, 3레벨 콤보박스와 라벨 설정 + self.category_combo_label = QLabel("카테고리") self.level1_combo = QComboBox() self.level2_combo = QComboBox() self.level3_combo = QComboBox() - self.reset_combo_btn = QPushButton("콤보리셋") + self.reset_combo_btn = QPushButton("Reset") # 기본적으로 "모두 보기" 옵션 추가 self.level1_combo.addItem("모두 보기") @@ -66,13 +76,13 @@ class CMBSettingsDialog(QDialog): # 레벨 필터링 라벨 추가 # search_layout.addWidget(QLabel("1레벨:")) - search_layout.addWidget(self.level1_combo,1,1,1,2) + search_layout.addWidget(self.category_combo_label,1,0,1,1) + search_layout.addWidget(self.level1_combo,1,1,1,3) # search_layout.addWidget(QLabel("2레벨:")) - search_layout.addWidget(self.level2_combo,1,2,1,2) + search_layout.addWidget(self.level2_combo,1,4,1,3) # search_layout.addWidget(QLabel("3레벨:")) - search_layout.addWidget(self.level3_combo,1,3,1,2) - search_layout.addWidget(self.level3_combo,1,3,1,2) - search_layout.addWidget(self.reset_combo_btn,1,4,1,1) + search_layout.addWidget(self.level3_combo,1,7,1,3) + search_layout.addWidget(self.reset_combo_btn,1,10,1,1) # 콤보박스의 신호 연결 self.level1_combo.currentTextChanged.connect(self.update_level2_combo) @@ -243,117 +253,151 @@ class CMBSettingsDialog(QDialog): def load_level1_categories(self): """1레벨 카테고리를 DB에서 로드하여 콤보박스에 추가""" - query = "SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL" - self.cursor.execute(query) - rows = self.cursor.fetchall() - - for row in rows: - self.level1_combo.addItem(row[0]) + self.logger.debug("1레벨 카테고리를 업데이트") + try: + query = "SELECT DISTINCT category1 FROM categories WHERE category1 IS NOT NULL" + rows = self.db_manager.fetchall(query) + for row in rows: + self.level1_combo.addItem(row[0]) + except Exception as e: + QMessageBox.critical(self, "DB Loading 오류", f"1레벨 카테고리를 업데이트 중 오류가 발생했습니다: {e}") + self.logger.error(f"1레벨 카테고리를 업데이트 중 오류 발생: {e}", exc_info=True) def update_level2_combo(self): """1레벨 선택 시, 2레벨 콤보박스를 업데이트""" - selected_level1 = self.level1_combo.currentText() - self.level2_combo.clear() - self.level2_combo.addItem("모두 보기") - - if selected_level1 == "모두 보기": - return + self.logger.debug("2레벨 카테고리를 업데이트") + try: + selected_level1 = self.level1_combo.currentText() + self.level2_combo.clear() + self.level2_combo.addItem("모두 보기") - query = "SELECT DISTINCT category2 FROM categories WHERE category1 = ? AND category2 IS NOT NULL" - self.cursor.execute(query, (selected_level1,)) - rows = self.cursor.fetchall() - - for row in rows: - self.level2_combo.addItem(row[0]) + # "모두 보기"가 선택된 경우에는 필터링하지 않음 + if selected_level1 == "모두 보기": + return + + # selected_level1이 유효한 값일 경우에만 쿼리를 실행 + if selected_level1: + query = "SELECT DISTINCT category2 FROM categories WHERE category1 = :level1 AND category2 IS NOT NULL" + rows = self.db_manager.fetchall(query, {"level1": selected_level1}) + + if rows is None: + self.logger.error("DB에서 데이터를 가져오지 못했습니다. 쿼리를 확인해주세요.") + return + + for row in rows: + self.level2_combo.addItem(row[0]) + except Exception as e: + QMessageBox.critical(self, "DB Loading 오류", f"2레벨 카테고리를 업데이트 중 오류가 발생했습니다: {e}") + self.logger.error(f"2레벨 카테고리를 업데이트 중 오류 발생: {e}", exc_info=True) def update_level3_combo(self): """2레벨 선택 시, 3레벨 콤보박스를 업데이트""" - selected_level1 = self.level1_combo.currentText() - selected_level2 = self.level2_combo.currentText() - self.level3_combo.clear() - self.level3_combo.addItem("모두 보기") - - if selected_level2 == "모두 보기": - return - query = "SELECT DISTINCT category3 FROM categories WHERE category1 = ? AND category2 = ? AND category3 IS NOT NULL" - self.cursor.execute(query, (selected_level1, selected_level2)) - rows = self.cursor.fetchall() - - for row in rows: - self.level3_combo.addItem(row[0]) + self.logger.debug("3레벨 카테고리를 업데이트") + try: + selected_level1 = self.level1_combo.currentText() + selected_level2 = self.level2_combo.currentText() + self.level3_combo.clear() + self.level3_combo.addItem("모두 보기") + + # 파라미터를 제대로 전달하여 쿼리를 수행 + if selected_level1 != "모두 보기": + query = "SELECT DISTINCT category3 FROM categories WHERE category1 = :level1 AND category2 = :level2 AND category3 IS NOT NULL" + rows = self.db_manager.fetchall(query, {"level1": selected_level1, "level2": selected_level2}) + else: + query = "SELECT DISTINCT category3 FROM categories WHERE category2 = :level2 AND category3 IS NOT NULL" + rows = self.db_manager.fetchall(query, {"level2": selected_level2}) + + if rows is None: + self.logger.error("DB에서 데이터를 가져오지 못했습니다. 쿼리를 확인해주세요.") + return + + for row in rows: + self.level3_combo.addItem(row[0]) + except Exception as e: + QMessageBox.critical(self, "DB Loading 오류", f"3레벨 카테고리를 업데이트 중 오류가 발생했습니다: {e}") + self.logger.error(f"3레벨 카테고리를 업데이트 중 오류 발생: {e}", exc_info=True) def reset_comboboxes(self): - """1레벨, 2레벨, 3레벨 콤보박스를 초기화하고 QTreeWidget을 전체 항목으로 필터링합니다.""" - # 각 레벨 콤보박스 초기화 - self.level1_combo.setCurrentIndex(0) - self.level2_combo.clear() - self.level3_combo.clear() + self.logger.debug("1레벨, 2레벨, 3레벨 카테고리를 초기화") + try: + """1레벨, 2레벨, 3레벨 콤보박스를 초기화하고 QTreeWidget을 전체 항목으로 필터링합니다.""" + # 각 레벨 콤보박스 초기화 + self.level1_combo.setCurrentIndex(0) + self.level2_combo.clear() + self.level3_combo.clear() - # QTreeWidget 필터링 초기화 (모든 항목 표시) - self.load_db_to_table() # 이 메서드는 전체 데이터를 다시 로드하는 메서드입니다. + # QTreeWidget 필터링 초기화 (모든 항목 표시) + self.load_db_to_table() # 이 메서드는 전체 데이터를 다시 로드하는 메서드입니다. + except Exception as e: + QMessageBox.critical(self, "DB Loading 오류", f"1레벨, 2레벨, 3레벨 카테고리를 초기화 중 오류가 발생했습니다: {e}") + self.logger.error(f"1레벨, 2레벨, 3레벨 카테고리를 초기화 중 오류 발생: {e}", exc_info=True) def filter_category_tree(self): - """선택된 1레벨, 2레벨, 3레벨 카테고리를 기준으로 트리뷰를 필터링""" - selected_level1 = self.level1_combo.currentText() - selected_level2 = self.level2_combo.currentText() - selected_level3 = self.level3_combo.currentText() + self.logger.debug(f"레벨별 카테고리를 기준으로 트리뷰를 필터링") + try: + """선택된 1레벨, 2레벨, 3레벨 카테고리를 기준으로 트리뷰를 필터링""" + selected_level1 = self.level1_combo.currentText() + selected_level2 = self.level2_combo.currentText() + selected_level3 = self.level3_combo.currentText() - # 기본 쿼리와 조건을 설정 - query = '''SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1''' - args = [] + # 기본 쿼리와 조건을 설정 + query = '''SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1''' + args = {} - # 선택된 값에 따라 필터 추가 - if selected_level1 != "모두 보기": - query += " AND category1 = ?" - args.append(selected_level1) - if selected_level2 != "모두 보기": - query += " AND category2 = ?" - args.append(selected_level2) - if selected_level3 != "모두 보기": - query += " AND category3 = ?" - args.append(selected_level3) - - self.cursor.execute(query, args) - rows = self.cursor.fetchall() - - # 트리뷰에 표시 - self.category_tree.clear() - for row_data in rows: - row_id, category1, category2, category3, category4, crmobi_stage = row_data - formatted_id = str(row_id).zfill(4) - top_item = QTreeWidgetItem([ - formatted_id, - category1 or "", category2 or "", - category3 or "", category4 or "", - f"{crmobi_stage}" if crmobi_stage > 0 else "미적용" - ]) - top_item.setCheckState(0, Qt.Unchecked) + if selected_level1 != "모두 보기": + query += " AND category1 = :level1" + args["level1"] = selected_level1 + if selected_level2 != "모두 보기": + query += " AND category2 = :level2" + args["level2"] = selected_level2 + if selected_level3 != "모두 보기": + query += " AND category3 = :level3" + args["level3"] = selected_level3 - # 단계별 배경색 설정 QColor(R,G,B,A) - if crmobi_stage == 1: - color = QColor(152, 251, 152, 204) # 옐로우그린 - elif crmobi_stage == 2: - color = QColor(135, 206, 235, 204) # 스카이블루 - elif crmobi_stage == 3: - color = QColor(255, 192, 203, 204) # 라이트핑크 - else: - color = None + rows = self.db_manager.fetchall(query, args) + + # 트리뷰에 표시 + self.category_tree.clear() + for row_data in rows: + row_id, category1, category2, category3, category4, crmobi_stage = row_data + formatted_id = str(row_id).zfill(4) + top_item = QTreeWidgetItem([ + formatted_id, + category1 or "", category2 or "", + category3 or "", category4 or "", + f"{crmobi_stage}" if crmobi_stage > 0 else "미적용" + ]) + top_item.setCheckState(0, Qt.Unchecked) - # 행 전체에 배경색 적용 - if color: - for col in range(6): # 열의 개수에 따라 반복 - top_item.setBackground(col, color) + # 단계별 배경색 설정 QColor(R,G,B,A) + if crmobi_stage == 1: + color = QColor(152, 251, 152, 204) # 옐로우그린 + elif crmobi_stage == 2: + color = QColor(135, 206, 235, 204) # 스카이블루 + elif crmobi_stage == 3: + color = QColor(255, 192, 203, 204) # 라이트핑크 + else: + color = None + + # 행 전체에 배경색 적용 + if color: + for col in range(6): # 열의 개수에 따라 반복 + top_item.setBackground(col, color) + + self.category_tree.addTopLevelItem(top_item) + except Exception as e: + QMessageBox.critical(self, "DB Loading 오류", f"레벨별 카테고리를 기준으로 트리뷰를 필터링 중 오류가 발생했습니다: {e}") + self.logger.error(f"레벨별 카테고리를 기준으로 트리뷰를 필터링 중 오류 발생: {e}", exc_info=True) - self.category_tree.addTopLevelItem(top_item) def update_cmb_settings_from_db(self): """DB의 crmobi_stages 테이블에서 값을 읽어와 각 단계별 설정 위젯에 반영합니다.""" try: # CrMoBi 단계 설정을 crmobi_stages 테이블에서 가져옴 - self.cursor.execute("SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages") - stages = self.cursor.fetchall() + query = "SELECT stage, threshold, increment_unit, extra_cost FROM crmobi_stages" + stages = self.db_manager.fetchall(query) # 각 단계별 설정 값을 위젯에 적용 for stage in stages: @@ -370,134 +414,144 @@ class CMBSettingsDialog(QDialog): self.logger.error(f"CrMoBi 단계 설정을 위젯에 반영하는 중 오류 발생: {e}", exc_info=True) def create_tables(self): - """초기 DB를 생성하고 CrMoBi 단계 테이블도 추가합니다.""" + """초기 DB를 생성하고 CrMoBi 단계 테이블도 추가합니다. 엑셀 파일을 읽어 DB에 데이터를 삽입합니다.""" + self.db_manager.create_db_file(self.user_db_path, self.initial_db_path) + + # 엑셀 파일 선택을 위한 다이얼로그 file_dialog = QFileDialog() excel_path, _ = file_dialog.getOpenFileName(self, "엑셀 파일 선택", "", "Excel Files (*.xlsx *.xls)") - - if excel_path: - try: - db_path = os.path.join("src", "initialDB.db") - conn = sqlite3.connect(db_path) - cursor = conn.cursor() - - # 테이블 생성 - cursor.execute(''' - CREATE TABLE IF NOT EXISTS categories ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - category1 TEXT, - category2 TEXT, - category3 TEXT, - category4 TEXT, - crmobi_stage INTEGER DEFAULT 0 - ) - ''') - - # 엑셀 파일에서 "스스 카테고리" 시트를 읽어옴 - sheet_name = '스스 카테고리' - try: - # 시트의 첫 번째 열만 읽어옴 - df = pd.read_excel(excel_path, sheet_name=sheet_name, header=None, usecols=[0]) - df.columns = ["full_category"] # 열 이름 지정 - - # 카테고리 코드와 경로를 추출 - for _, row in df.iterrows(): - # 카테고리 코드 제거 및 텍스트 추출 - full_text = row['full_category'] - match = re.match(r'\[.*?\]\s*(.*)', full_text) - if match: - category_path = match.group(1) # 대괄호 안의 카테고리 코드를 제외한 텍스트 - - # 하이픈으로 카테고리 분할 - category_parts = category_path.split('-') - category_levels = category_parts + [""] * (4 - len(category_parts)) # 4개로 맞추기 위해 빈 문자열 추가 - - # 데이터베이스에 삽입 - cursor.execute(''' - INSERT INTO categories (category1, category2, category3, category4) - VALUES (?, ?, ?, ?) - ''', category_levels[:4]) - except Exception as sheet_error: - QMessageBox.warning(self, "시트 불러오기 오류", f"'{sheet_name}' 시트에서 데이터를 읽어오는 중 오류가 발생했습니다: {sheet_error}") - # CrMoBi 단계 테이블 생성 - cursor.execute(''' - CREATE TABLE IF NOT EXISTS crmobi_stages ( - stage INTEGER PRIMARY KEY, - threshold INTEGER, - increment_unit INTEGER, - extra_cost INTEGER - ) - ''') - - # 초기 데이터 설정 (원하는 경우) - cursor.execute('DELETE FROM crmobi_stages') - conn.commit() + if not excel_path: + self.logger.error("엑셀 파일이 선택되지 않았습니다.") + return - for i in range(1, 4): - cursor.execute(''' - INSERT INTO crmobi_stages (stage, threshold, increment_unit, extra_cost) - VALUES (?, ?, ?, ?) - ''', (i, 100000 * i, 20000, 5000 * i)) - - conn.commit() - conn.close() - QMessageBox.information(self, "DB 생성", "DB가 성공적으로 생성되었습니다.") - except Exception as e: - QMessageBox.critical(self, "DB 생성 오류", f"DB 생성 중 오류가 발생했습니다: {e}") + try: + # 카테고리 테이블 생성 + query_create_categories = ''' + CREATE TABLE IF NOT EXISTS categories ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + category1 TEXT, + category2 TEXT, + category3 TEXT, + category4 TEXT, + crmobi_stage INTEGER DEFAULT 0 + ) + ''' + self.db_manager.execute_query(query_create_categories) + + # crmobi_stages 테이블 생성 + query_create_stages = ''' + CREATE TABLE IF NOT EXISTS crmobi_stages ( + stage INTEGER PRIMARY KEY, + threshold INTEGER, + increment_unit INTEGER, + extra_cost INTEGER + ) + ''' + self.db_manager.execute_query(query_create_stages) + + # 초기 crmobi_stages 데이터 삽입 + delete_stages_query = 'DELETE FROM crmobi_stages' + self.db_manager.execute_query(delete_stages_query) + + for i in range(1, 4): + insert_stage_query = ''' + INSERT INTO crmobi_stages (stage, threshold, increment_unit, extra_cost) + VALUES (:stage, :threshold, :increment_unit, :extra_cost) + ''' + params = {"stage": i, "threshold": 100000 * i, "increment_unit": 20000, "extra_cost": 5000 * i} + self.db_manager.execute_query(insert_stage_query, params) + + # 엑셀 파일에서 데이터 읽기 + sheet_name = '스스 카테고리' + df = pd.read_excel(excel_path, sheet_name=sheet_name, header=None, usecols=[0]) + df.columns = ["full_category"] + + # 카테고리 데이터를 데이터베이스에 삽입 + for _, row in df.iterrows(): + full_text = row['full_category'] + match = re.match(r'\[.*?\]\s*(.*)', full_text) + if match: + category_path = match.group(1) + category_parts = category_path.split('-') + category_levels = category_parts + [""] * (4 - len(category_parts)) # 4개로 맞추기 위해 빈 문자열 추가 + + insert_category_query = ''' + INSERT INTO categories (category1, category2, category3, category4) + VALUES (:category1, :category2, :category3, :category4) + ''' + category_params = { + "category1": category_levels[0], + "category2": category_levels[1], + "category3": category_levels[2], + "category4": category_levels[3] + } + self.db_manager.execute_query(insert_category_query, category_params) + + QMessageBox.information(self, "DB 생성", "DB가 성공적으로 생성되었습니다.") + + except Exception as e: + QMessageBox.critical(self, "DB 생성 오류", f"DB 생성 중 오류가 발생했습니다: {e}") + self.logger.error(f"DB 생성 중 오류 발생: {e}", exc_info=True) def load_db_to_table(self, search_text=None, cmb_stage=None): """DB에서 데이터를 읽어와 테이블에 표시하고 배경색을 설정합니다.""" - self.category_tree.clear() - - # 기본 쿼리와 조건을 설정 - query = '''SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1''' - args = [] - - # 검색어가 있을 경우 WHERE 조건 추가 - if search_text: - query += ''' AND (category1 LIKE ? OR category2 LIKE ? OR category3 LIKE ? OR category4 LIKE ?)''' - args.extend([f"%{search_text}%"] * 4) - - # CMB 단계 필터링 조건 추가 - if cmb_stage: - query += " AND crmobi_stage = ?" - args.append(cmb_stage) - - self.cursor.execute(query, args) - rows = self.cursor.fetchall() + self.logger.debug(f"DB에서 데이터를 읽어와 테이블을 생성") + try: + self.category_tree.clear() - # id 기준 오름차순 정렬을 위해 정렬 - rows = sorted(rows, key=lambda x: int(x[0])) # x[0]는 id 열 + # 기본 쿼리와 조건을 설정 + query = '''SELECT id, category1, category2, category3, category4, crmobi_stage FROM categories WHERE 1=1''' + params = {} - for row_data in rows: - row_id, category1, category2, category3, category4, crmobi_stage = row_data - formatted_id = str(row_id).zfill(4) - top_item = QTreeWidgetItem([formatted_id, category1 or "", category2 or "", category3 or "", category4 or "", f"{crmobi_stage}" if crmobi_stage > 0 else "미적용"]) - top_item.setCheckState(0, Qt.Unchecked) - - # id 값을 정수로 설정하여 정렬 시 정수 기준으로 처리되도록 함 - top_item.setData(0, Qt.UserRole, int(row_id)) + # 검색어가 있을 경우 WHERE 조건 추가 + if search_text: + query += ''' AND (category1 LIKE :search_text OR category2 LIKE :search_text OR category3 LIKE :search_text OR category4 LIKE :search_text)''' + params["search_text"] = f"%{search_text}%" - # 단계별 배경색 설정 QColor(R,G,B,A) - if crmobi_stage == 1: - color = QColor(152, 251, 152, 204) # 옐로우그린 - elif crmobi_stage == 2: - color = QColor(135, 206, 235, 204) # 스카이블루 - elif crmobi_stage == 3: - color = QColor(255, 192, 203, 204) # 라이트핑크 - else: - color = None + # CMB 단계 필터링 조건 추가 + if cmb_stage: + query += " AND crmobi_stage = :cmb_stage" + params["cmb_stage"] = cmb_stage - # 행 전체에 배경색 적용 - if color: - for col in range(6): # 열의 개수에 따라 반복 - top_item.setBackground(col, color) - - self.category_tree.addTopLevelItem(top_item) + # 쿼리 실행 및 데이터 가져오기 + rows = self.db_manager.fetchall(query, params) - # 초기 정렬 기준을 id 열로 설정하고 오름차순 정렬 - self.category_tree.setSortingEnabled(True) - self.category_tree.sortByColumn(0, Qt.AscendingOrder) # ID 열을 기준으로 오름차순 정렬 + # id 기준 오름차순 정렬을 위해 정렬 + rows = sorted(rows, key=lambda x: int(x[0])) # x[0]는 id 열 + + for row_data in rows: + row_id, category1, category2, category3, category4, crmobi_stage = row_data + formatted_id = str(row_id).zfill(4) + top_item = QTreeWidgetItem([formatted_id, category1 or "", category2 or "", category3 or "", category4 or "", f"{crmobi_stage}" if crmobi_stage > 0 else "미적용"]) + top_item.setCheckState(0, Qt.Unchecked) + + # id 값을 정수로 설정하여 정렬 시 정수 기준으로 처리되도록 함 + top_item.setData(0, Qt.UserRole, int(row_id)) + + # 단계별 배경색 설정 QColor(R,G,B,A) + if crmobi_stage == 1: + color = QColor(152, 251, 152, 204) # 옐로우그린 + elif crmobi_stage == 2: + color = QColor(135, 206, 235, 204) # 스카이블루 + elif crmobi_stage == 3: + color = QColor(255, 192, 203, 204) # 라이트핑크 + else: + color = None + + # 행 전체에 배경색 적용 + if color: + for col in range(6): # 열의 개수에 따라 반복 + top_item.setBackground(col, color) + + self.category_tree.addTopLevelItem(top_item) + + # 초기 정렬 기준을 id 열로 설정하고 오름차순 정렬 + self.category_tree.setSortingEnabled(True) + self.category_tree.sortByColumn(0, Qt.AscendingOrder) # ID 열을 기준으로 오름차순 정렬 + except Exception as e: + QMessageBox.critical(self, "DB Loading 오류", f"DB 테이블을 읽는 중 오류발생: {e}") + self.logger.error(f"load_db_to_table 실행 중 오류: {e}", exc_info=True) def set_column_widths(self): """ID 열 너비를 일정하게 설정""" @@ -507,40 +561,61 @@ class CMBSettingsDialog(QDialog): def sort_by_column(self, index): """클릭된 열을 기준으로 오름차순/내림차순으로 정렬""" - # 정렬 역할을 UserRole로 설정하여 ID 필드가 정수로 정렬되도록 설정 - self.category_tree.setSortingEnabled(False) # 정렬을 일시적으로 비활성화 - self.category_tree.sortItems(index, self.sort_order) - self.category_tree.setSortingEnabled(True) # 정렬을 다시 활성화 + self.logger.debug(f"클릭된 열을 기준으로 오름차순/내림차순으로 정렬") + try: + # 정렬 역할을 UserRole로 설정하여 ID 필드가 정수로 정렬되도록 설정 + self.category_tree.setSortingEnabled(False) # 정렬을 일시적으로 비활성화 + self.category_tree.sortItems(index, self.sort_order) + self.category_tree.setSortingEnabled(True) # 정렬을 다시 활성화 - # 정렬 순서를 토글 - self.sort_order = Qt.DescendingOrder if self.sort_order == Qt.AscendingOrder else Qt.AscendingOrder + # 정렬 순서를 토글 + self.sort_order = Qt.DescendingOrder if self.sort_order == Qt.AscendingOrder else Qt.AscendingOrder + except Exception as e: + self.logger.error(f"클릭된 열을 기준으로 오름차순/내림차순으로 정렬 중 오류 발생: {e}", exc_info=True) def apply_crmobi_stage(self, stage): """선택된 카테고리에 CrMoBi 단계를 적용하고 DB에 저장.""" - for i in range(self.category_tree.topLevelItemCount()): - item = self.category_tree.topLevelItem(i) - if item.checkState(0) == Qt.Checked: - category_values = [item.text(j) for j in range(1, 5)] # ID 열 제외 - # DB 업데이트 - self.cursor.execute('''UPDATE categories - SET crmobi_stage = ? - WHERE category1 = ? AND category2 = ? AND category3 = ? AND category4 = ?''', - [stage] + category_values) + self.logger.debug(f"선택된 카테고리에 CMB [{stage}]단계 적용") + try: + for i in range(self.category_tree.topLevelItemCount()): + item = self.category_tree.topLevelItem(i) + if item.checkState(0) == Qt.Checked: + category_values = { + "category1": item.text(1), + "category2": item.text(2), + "category3": item.text(3), + "category4": item.text(4), + "stage": stage + } + # DB 업데이트 + self.db_manager.execute_query( + '''UPDATE categories + SET crmobi_stage = :stage + WHERE category1 = :category1 AND category2 = :category2 AND category3 = :category3 AND category4 = :category4''', + category_values + ) + self.load_db_to_table() # 트리 새로고침 + except Exception as e: + QMessageBox.critical(self, "DB Update 오류", f"크무비 단계 적용 중 오류가 발생했습니다: {e}") + self.logger.error(f"CMB 단계 적용 오류 발생: {e}", exc_info=True) - self.conn.commit() # 변경사항 저장 - self.load_db_to_table() # 트리 새로고침 - def remove_cmb_stage(self): """선택된 카테고리의 CMB 단계를 해제하고 DB에 반영.""" - for i in range(self.category_tree.topLevelItemCount()): - item = self.category_tree.topLevelItem(i) - if item.checkState(0) == Qt.Checked: - category_id = int(item.text(0)) # ID 열에서 값 가져오기 - # DB에서 CMB 단계를 해제 - self.cursor.execute("UPDATE categories SET crmobi_stage = 0 WHERE id = ?", (category_id,)) + self.logger.debug(f"CMB 단계해제") + try: + for i in range(self.category_tree.topLevelItemCount()): + item = self.category_tree.topLevelItem(i) + if item.checkState(0) == Qt.Checked: + category_id = int(item.text(0)) # ID 열에서 값 가져오기 + self.logger.debug(f"category_id : {category_id}") + # DB에서 CMB 단계를 해제 + self.db_manager.execute_query("UPDATE categories SET crmobi_stage = 0 WHERE id = :category_id", {"category_id": category_id}) - self.conn.commit() - self.load_db_to_table() # 트리 새로고침 + self.load_db_to_table() # 트리 새로고침 + except Exception as e: + QMessageBox.critical(self, "DB Update 오류", f"크무비 단계 해제 중 오류가 발생했습니다: {e}") + self.logger.error(f"CMB 단계해제 오류 발생: {e}", exc_info=True) + def toggle_cmb_settings(self, checked): """CMB 단계 설정 영역 표시/숨기기, 공간을 완전히 제거 또는 복원합니다.""" @@ -559,22 +634,28 @@ class CMBSettingsDialog(QDialog): # 레이아웃을 다시 갱신하여 공간을 완전히 반영 self.layout().update() + def toggle_select_all_filtered_items(self): """버튼의 텍스트에 따라 전체 선택 또는 전체 해제를 수행합니다.""" - if self.select_toggle_button.text() == "전체 선택": - # 전체 체크 - for i in range(self.category_tree.topLevelItemCount()): - item = self.category_tree.topLevelItem(i) - item.setCheckState(0, Qt.Checked) - # 버튼 텍스트를 "전체 해제"로 변경 - self.select_toggle_button.setText("전체 해제") - else: - # 전체 체크 해제 - for i in range(self.category_tree.topLevelItemCount()): - item = self.category_tree.topLevelItem(i) - item.setCheckState(0, Qt.Unchecked) - # 버튼 텍스트를 "전체 선택"으로 변경 - self.select_toggle_button.setText("전체 선택") + self.logger.debug(f"전체선택") + try: + if self.select_toggle_button.text() == "전체 선택": + # 전체 체크 + for i in range(self.category_tree.topLevelItemCount()): + item = self.category_tree.topLevelItem(i) + item.setCheckState(0, Qt.Checked) + # 버튼 텍스트를 "전체 해제"로 변경 + self.select_toggle_button.setText("전체 해제") + else: + # 전체 체크 해제 + for i in range(self.category_tree.topLevelItemCount()): + item = self.category_tree.topLevelItem(i) + item.setCheckState(0, Qt.Unchecked) + # 버튼 텍스트를 "전체 선택"으로 변경 + self.select_toggle_button.setText("전체 선택") + except Exception as e: + QMessageBox.critical(self, "카테고리 선택 오류", f"카테고리 전체 선택 중 오류가 발생했습니다: {e}") + self.logger.error(f"전체선택 중 오류: {e}", exc_info=True) def save_cmb_stage_to_db(self): """사용자가 설정한 CMB 단계를 crmobi_stage 테이블에 저장합니다.""" @@ -585,26 +666,29 @@ class CMBSettingsDialog(QDialog): threshold = min_amount_spin.value() increment_unit = unit_amount_spin.value() extra_cost = cost_spin.value() - + # 기존 데이터가 있는지 확인 - self.cursor.execute("SELECT COUNT(1) FROM crmobi_stages WHERE stage = ?", (stage,)) - exists = self.cursor.fetchone()[0] - - # 데이터를 업데이트 또는 삽입 + query_check_exists = "SELECT COUNT(1) FROM crmobi_stages WHERE stage = :stage" + exists = self.db_manager.fetchone(query_check_exists, {"stage": stage})[0] + if exists: - self.cursor.execute(''' + query_update_stage = ''' UPDATE crmobi_stages - SET threshold = ?, increment_unit = ?, extra_cost = ? - WHERE stage = ? - ''', (threshold, increment_unit, extra_cost, stage)) + SET threshold = :threshold, increment_unit = :increment_unit, extra_cost = :extra_cost + WHERE stage = :stage + ''' + self.db_manager.execute_query(query_update_stage, { + "threshold": threshold, "increment_unit": increment_unit, "extra_cost": extra_cost, "stage": stage + }) else: - self.cursor.execute(''' + query_insert_stage = ''' INSERT INTO crmobi_stages (stage, threshold, increment_unit, extra_cost) - VALUES (?, ?, ?, ?) - ''', (stage, threshold, increment_unit, extra_cost)) - - # 변경사항 저장 - self.conn.commit() + VALUES (:stage, :threshold, :increment_unit, :extra_cost) + ''' + self.db_manager.execute_query(query_insert_stage, { + "stage": stage, "threshold": threshold, "increment_unit": increment_unit, "extra_cost": extra_cost + }) + QMessageBox.information(self, "저장 성공", "CMB 단계 설정이 성공적으로 저장되었습니다.") except Exception as e: @@ -613,17 +697,24 @@ class CMBSettingsDialog(QDialog): def reset_db(self): """사용자 DB를 삭제하고 초기 DB를 로드합니다.""" - if os.path.exists(self.user_db_path): - os.remove(self.user_db_path) - shutil.copyfile(self.initial_db_path, self.user_db_path) + try: + if os.path.exists(self.user_db_path): + os.remove(self.user_db_path) + self.logger.debug(f"Deleted user DB at: {self.user_db_path}") + + # 초기 DB 복사 + self.db_manager.create_db_file(self.user_db_path, self.initial_db_path) + QMessageBox.information(self, "DB 초기화", "사용자 DB가 삭제되었습니다. 초기 DB를 로드합니다.") + self.load_db_to_table() - QMessageBox.information(self, "DB 초기화", "사용자 DB가 삭제되었습니다. 초기 DB를 로드합니다.") - self.load_db_to_table() + except Exception as e: + QMessageBox.critical(self, "DB 초기화 오류", f"DB 초기화 중 오류가 발생했습니다: {e}") + self.logger.error(f"DB 초기화 중 오류: {e}", exc_info=True) def save_user_db(self): """사용자가 설정한 내용을 저장하여 사용자 DB로 생성합니다.""" # 테이블 생성 - self.cursor.execute(''' + self.db_manager.execute_query(''' CREATE TABLE IF NOT EXISTS categories ( id INTEGER PRIMARY KEY AUTOINCREMENT, category1 TEXT, @@ -634,7 +725,7 @@ class CMBSettingsDialog(QDialog): ''') # 기존 데이터를 모두 삭제 - self.cursor.execute("DELETE FROM categories") + self.db_manager.execute_query("DELETE FROM categories") # 테이블 데이터 삽입 for row_idx in range(self.category_table.rowCount()): @@ -642,7 +733,7 @@ class CMBSettingsDialog(QDialog): self.category_table.item(row_idx, col_idx).text() if self.category_table.item(row_idx, col_idx) else "" for col_idx in range(4) ] - self.cursor.execute("INSERT INTO categories (category1, category2, category3, category4) VALUES (?, ?, ?, ?)", row_data) + self.db_manager.execute_query("INSERT INTO categories (category1, category2, category3, category4) VALUES (?, ?, ?, ?)", row_data) QMessageBox.information(self, "DB 저장", "사용자 DB가 저장되었습니다.") @@ -665,56 +756,63 @@ class CMBSettingsDialog(QDialog): def search_category(self): """카테고리 검색 기능.""" - search_text = self.search_input.text().strip() - if search_text: - # 검색어가 있는 경우 필터링하여 로드 - query = ''' - SELECT id, category1, category2, category3, category4, crmobi_stage - FROM categories - WHERE category1 LIKE ? OR category2 LIKE ? OR category3 LIKE ? OR category4 LIKE ? - ''' - args = [f"%{search_text}%"] * 4 - self.cursor.execute(query, args) - else: - # 검색어가 없는 경우 전체 로드 - query = ''' - SELECT id, category1, category2, category3, category4, crmobi_stage - FROM categories - ''' - self.cursor.execute(query) - - # 검색 결과를 트리에 표시 - self.category_tree.clear() - rows = self.cursor.fetchall() - - for row_data in rows: - # top_item = QTreeWidgetItem([str(data) if data else "" for data in row_data[:4]]) - row_id, category1, category2, category3, category4, crmobi_stage = row_data - formatted_id = str(row_id).zfill(4) - top_item = QTreeWidgetItem([formatted_id, category1 or "", category2 or "", category3 or "", category4 or "", f"{crmobi_stage}" if crmobi_stage > 0 else "미적용"]) + self.logger.debug(f"카테고리 검색 기능") - crmobi_stage = row_data[5] - top_item.setCheckState(0, Qt.Unchecked) - top_item.setText(5, f"{crmobi_stage}" if crmobi_stage > 0 else "미적용") - - # 단계별 배경색 설정 QColor(R,G,B,A) - if crmobi_stage == 1: - color = QColor(152, 251, 152, 204) # 옐로우그린 - elif crmobi_stage == 2: - color = QColor(135, 206, 235, 204) # 스카이블루 - elif crmobi_stage == 3: - color = QColor(255, 192, 203, 204) # 라이트핑크 + try: + search_text = self.search_input.text().strip() + if search_text: + # 검색어가 있는 경우 필터링하여 로드 + query = ''' + SELECT id, category1, category2, category3, category4, crmobi_stage + FROM categories + WHERE category1 LIKE ? OR category2 LIKE ? OR category3 LIKE ? OR category4 LIKE ? + ''' + args = [f"%{search_text}%"] * 4 else: - color = None - - # 행 전체에 배경색 적용 - if color: - for col in range(6): # 열의 개수에 따라 반복 - top_item.setBackground(col, color) - - self.category_tree.addTopLevelItem(top_item) + # 검색어가 없는 경우 전체 로드 + query = ''' + SELECT id, category1, category2, category3, category4, crmobi_stage + FROM categories + ''' + args = [] - def get_crmobi_stage(self, category): + # 검색 결과를 트리에 표시 + self.category_tree.clear() + rows = self.db_manager.fetchall(query, args) + + for row_data in rows: + # top_item = QTreeWidgetItem([str(data) if data else "" for data in row_data[:4]]) + row_id, category1, category2, category3, category4, crmobi_stage = row_data + formatted_id = str(row_id).zfill(4) + top_item = QTreeWidgetItem([formatted_id, category1 or "", category2 or "", category3 or "", category4 or "", f"{crmobi_stage}" if crmobi_stage > 0 else "미적용"]) + + crmobi_stage = row_data[5] + top_item.setCheckState(0, Qt.Unchecked) + top_item.setText(5, f"{crmobi_stage}" if crmobi_stage > 0 else "미적용") + + # 단계별 배경색 설정 QColor(R,G,B,A) + if crmobi_stage == 1: + color = QColor(152, 251, 152, 204) # 옐로우그린 + elif crmobi_stage == 2: + color = QColor(135, 206, 235, 204) # 스카이블루 + elif crmobi_stage == 3: + color = QColor(255, 192, 203, 204) # 라이트핑크 + else: + color = None + + # 행 전체에 배경색 적용 + if color: + for col in range(6): # 열의 개수에 따라 반복 + top_item.setBackground(col, color) + + self.category_tree.addTopLevelItem(top_item) + + except Exception as e: + QMessageBox.critical(self, "카테고리 검색 오류", f"카테고리 검색 중 오류가 발생했습니다: {e}") + self.logger.error(f"카테고리 검색 중 오류: {e}", exc_info=True) + + + def get_crmobi_stage_by_keyword(self, category): """ 주어진 카테고리에 해당하는 CMB 단계가 설정되어 있는지 확인하고, 설정된 경우 해당 단계의 범위를 반환합니다. @@ -735,8 +833,8 @@ class CMBSettingsDialog(QDialog): self.logger.debug(f"category : {category}") args = [category] * 4 - self.cursor.execute(query, args) - result = self.cursor.fetchone() + # self.db_manager.execute(query, args) + result = self.db_manager.fetchone(query, args) if result and result[0] > 0: # CMB 단계가 설정되어 있을 때 crmobi_stage = result[0] @@ -747,8 +845,8 @@ class CMBSettingsDialog(QDialog): FROM crmobi_stages WHERE stage = ? ''' - self.cursor.execute(stage_query, (crmobi_stage,)) - stage_result = self.cursor.fetchone() + # self.db_manager.execute(stage_query, (crmobi_stage,)) + stage_result = self.db_manager.fetchone(stage_query, (crmobi_stage,)) self.logger.debug(f"stage_result : {stage_result}") if stage_result: @@ -762,9 +860,86 @@ class CMBSettingsDialog(QDialog): QMessageBox.critical(self, "DB 오류", f"DB 조회 중 오류가 발생했습니다: {e}") return None + + def get_crmobi_stage(self, category): + """ + 주어진 카테고리에 해당하는 CMB 단계가 설정되어 있는지 확인하고, + 설정된 경우 해당 단계의 범위를 반환합니다. + + Parameters: + category (str): 카테고리 이름 (예: '생활/건강-공구-에어공구-유압공구') + + Returns: + tuple: (min_amount, unit_amount, extra_cost) 값이 있는 경우 + None: 설정된 CMB 단계가 없는 경우 + """ + + try: + # 카테고리를 하이픈("-")을 기준으로 나누기 + category_levels = category.split('-') + category1 = category_levels[0] if len(category_levels) > 0 else None + category2 = category_levels[1] if len(category_levels) > 1 else None + category3 = category_levels[2] if len(category_levels) > 2 else None + category4 = category_levels[3] if len(category_levels) > 3 else None + + # 디버깅 로그: 카테고리 레벨별 출력 + self.logger.debug(f"Parsed category levels - Level 1: {category1}, Level 2: {category2}, Level 3: {category3}, Level 4: {category4}") + + # DB에서 카테고리에 대한 CMB 단계 정보를 가져옴 + query = ''' + SELECT crmobi_stage FROM categories + WHERE (category1 = :category1 OR :category1 IS NULL) + AND (category2 = :category2 OR :category2 IS NULL) + AND (category3 = :category3 OR :category3 IS NULL) + AND (category4 = :category4 OR :category4 IS NULL) + ''' + + self.logger.debug(f"Executing query to find CMB stage for category: {category}") + params = { + "category1": category1, + "category2": category2, + "category3": category3, + "category4": category4 + } + self.logger.debug(f"Query arguments: {params}") + + # 쿼리 실행 + result = self.db_manager.fetchone(query, params) + + # 디버깅 로그: 쿼리 결과 출력 + self.logger.debug(f"Query result for CMB stage: {result}") + + if result and result[0] > 0: # CMB 단계가 설정되어 있을 때 + crmobi_stage = result[0] + self.logger.debug(f"CMB stage found: {crmobi_stage}") + + # 설정된 CMB 단계에 해당하는 범위 가져오기 + stage_query = ''' + SELECT threshold, increment_unit, extra_cost + FROM crmobi_stages + WHERE stage = :stage + ''' + self.logger.debug(f"Executing query to get stage details for stage: {crmobi_stage}") + stage_result = self.db_manager.fetchone(stage_query, {"stage": crmobi_stage}) + self.logger.debug(f"Stage details result: {stage_result}") + + if stage_result: + min_amount, unit_amount, extra_cost = stage_result + self.logger.debug(f"Returning stage details - Threshold: {min_amount}, Increment Unit: {unit_amount}, Extra Cost: {extra_cost}") + return (min_amount, unit_amount, extra_cost) + + # CMB 단계가 설정되지 않은 경우 + self.logger.debug("No CMB stage found for the given category.") + return None + + except Exception as e: + self.logger.error(f"DB 조회 중 오류가 발생했습니다: {e}", exc_info=True) + QMessageBox.critical(self, "DB 오류", f"DB 조회 중 오류가 발생했습니다: {e}") + return None + def closeEvent(self, event): """QDialog 종료 시 DB 연결 해제""" - self.conn.close() + # self.conn.close() event.accept() def focusInEvent(self, event): diff --git a/src/userDB.db b/userDB.db similarity index 97% rename from src/userDB.db rename to userDB.db index 5fb9a19e..5982b49c 100644 Binary files a/src/userDB.db and b/userDB.db differ