File size: 210,986 Bytes
760001a
1
{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"gpuType":"T4","authorship_tag":"ABX9TyNyouBtP4urmITBdFXXQzkd"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"},"accelerator":"GPU"},"cells":[{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"CgfLbwRyLfj_","executionInfo":{"status":"ok","timestamp":1748765426328,"user_tz":-180,"elapsed":28903,"user":{"displayName":"Allaa Sabboukh","userId":"15783130365351138779"}},"outputId":"916d7009-6923-4c65-c892-414c165ddd58"},"outputs":[{"output_type":"stream","name":"stdout","text":["Mounted at /content/drive\n"]}],"source":["from google.colab import drive\n","drive.mount('/content/drive')\n"]},{"cell_type":"code","source":["import os\n","os.listdir(\"/content/drive/MyDrive/AutoModelForSequenceClassification/\")\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"YhHVyU2fLjHF","executionInfo":{"status":"ok","timestamp":1748765432163,"user_tz":-180,"elapsed":412,"user":{"displayName":"Allaa Sabboukh","userId":"15783130365351138779"}},"outputId":"a346dc0d-9cff-4c4a-a98a-f5bede251713"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["['vocab.txt',\n"," 'model.safetensors',\n"," 'special_tokens_map.json',\n"," 'config.json',\n"," 'tokenizer.json',\n"," 'tokenizer_config.json',\n"," 'labels.pkl',\n"," 'products_cleaned_strategy (1).xlsx',\n"," 'test_model']"]},"metadata":{},"execution_count":2}]},{"cell_type":"code","source":["!pip install transformers datasets\n","!pip install torch"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"09qq13lJNjYP","executionInfo":{"status":"ok","timestamp":1748765523926,"user_tz":-180,"elapsed":88858,"user":{"displayName":"Allaa Sabboukh","userId":"15783130365351138779"}},"outputId":"a7077e8b-f389-46f0-8cd0-560861bca283"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Requirement already satisfied: transformers in /usr/local/lib/python3.11/dist-packages (4.52.2)\n","Requirement already satisfied: datasets in /usr/local/lib/python3.11/dist-packages (2.14.4)\n","Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from transformers) (3.18.0)\n","Requirement already satisfied: huggingface-hub<1.0,>=0.30.0 in /usr/local/lib/python3.11/dist-packages (from transformers) (0.31.4)\n","Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.11/dist-packages (from transformers) (2.0.2)\n","Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.11/dist-packages (from transformers) (24.2)\n","Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.11/dist-packages (from transformers) (6.0.2)\n","Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.11/dist-packages (from transformers) (2024.11.6)\n","Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from transformers) (2.32.3)\n","Requirement already satisfied: tokenizers<0.22,>=0.21 in /usr/local/lib/python3.11/dist-packages (from transformers) (0.21.1)\n","Requirement already satisfied: safetensors>=0.4.3 in /usr/local/lib/python3.11/dist-packages (from transformers) (0.5.3)\n","Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.11/dist-packages (from transformers) (4.67.1)\n","Requirement already satisfied: pyarrow>=8.0.0 in /usr/local/lib/python3.11/dist-packages (from datasets) (18.1.0)\n","Requirement already satisfied: dill<0.3.8,>=0.3.0 in /usr/local/lib/python3.11/dist-packages (from datasets) (0.3.7)\n","Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from datasets) (2.2.2)\n","Requirement already satisfied: xxhash in /usr/local/lib/python3.11/dist-packages (from datasets) (3.5.0)\n","Requirement already satisfied: multiprocess in /usr/local/lib/python3.11/dist-packages (from datasets) (0.70.15)\n","Requirement already satisfied: fsspec>=2021.11.1 in /usr/local/lib/python3.11/dist-packages (from fsspec[http]>=2021.11.1->datasets) (2025.3.2)\n","Requirement already satisfied: aiohttp in /usr/local/lib/python3.11/dist-packages (from datasets) (3.11.15)\n","Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (2.6.1)\n","Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (1.3.2)\n","Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (25.3.0)\n","Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (1.6.0)\n","Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (6.4.4)\n","Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (0.3.1)\n","Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (1.20.0)\n","Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub<1.0,>=0.30.0->transformers) (4.13.2)\n","Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests->transformers) (3.4.2)\n","Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests->transformers) (3.10)\n","Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests->transformers) (2.4.0)\n","Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests->transformers) (2025.4.26)\n","Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2.9.0.post0)\n","Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2025.2)\n","Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2025.2)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->pandas->datasets) (1.17.0)\n","Requirement already satisfied: torch in /usr/local/lib/python3.11/dist-packages (2.6.0+cu124)\n","Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from torch) (3.18.0)\n","Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.11/dist-packages (from torch) (4.13.2)\n","Requirement already satisfied: networkx in /usr/local/lib/python3.11/dist-packages (from torch) (3.4.2)\n","Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/dist-packages (from torch) (3.1.6)\n","Requirement already satisfied: fsspec in /usr/local/lib/python3.11/dist-packages (from torch) (2025.3.2)\n","Collecting nvidia-cuda-nvrtc-cu12==12.4.127 (from torch)\n","  Downloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n","Collecting nvidia-cuda-runtime-cu12==12.4.127 (from torch)\n","  Downloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n","Collecting nvidia-cuda-cupti-cu12==12.4.127 (from torch)\n","  Downloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n","Collecting nvidia-cudnn-cu12==9.1.0.70 (from torch)\n","  Downloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n","Collecting nvidia-cublas-cu12==12.4.5.8 (from torch)\n","  Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n","Collecting nvidia-cufft-cu12==11.2.1.3 (from torch)\n","  Downloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n","Collecting nvidia-curand-cu12==10.3.5.147 (from torch)\n","  Downloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n","Collecting nvidia-cusolver-cu12==11.6.1.9 (from torch)\n","  Downloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n","Collecting nvidia-cusparse-cu12==12.3.1.170 (from torch)\n","  Downloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n","Requirement already satisfied: nvidia-cusparselt-cu12==0.6.2 in /usr/local/lib/python3.11/dist-packages (from torch) (0.6.2)\n","Requirement already satisfied: nvidia-nccl-cu12==2.21.5 in /usr/local/lib/python3.11/dist-packages (from torch) (2.21.5)\n","Requirement already satisfied: nvidia-nvtx-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch) (12.4.127)\n","Collecting nvidia-nvjitlink-cu12==12.4.127 (from torch)\n","  Downloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n","Requirement already satisfied: triton==3.2.0 in /usr/local/lib/python3.11/dist-packages (from torch) (3.2.0)\n","Requirement already satisfied: sympy==1.13.1 in /usr/local/lib/python3.11/dist-packages (from torch) (1.13.1)\n","Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from sympy==1.13.1->torch) (1.3.0)\n","Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/dist-packages (from jinja2->torch) (3.0.2)\n","Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m363.4/363.4 MB\u001b[0m \u001b[31m4.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (13.8 MB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.8/13.8 MB\u001b[0m \u001b[31m103.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (24.6 MB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.6/24.6 MB\u001b[0m \u001b[31m64.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (883 kB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m883.7/883.7 kB\u001b[0m \u001b[31m48.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m2.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m211.5/211.5 MB\u001b[0m \u001b[31m5.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 MB\u001b[0m \u001b[31m13.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.9/127.9 MB\u001b[0m \u001b[31m8.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.5/207.5 MB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m79.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hInstalling collected packages: nvidia-nvjitlink-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, nvidia-cusparse-cu12, nvidia-cudnn-cu12, nvidia-cusolver-cu12\n","  Attempting uninstall: nvidia-nvjitlink-cu12\n","    Found existing installation: nvidia-nvjitlink-cu12 12.5.82\n","    Uninstalling nvidia-nvjitlink-cu12-12.5.82:\n","      Successfully uninstalled nvidia-nvjitlink-cu12-12.5.82\n","  Attempting uninstall: nvidia-curand-cu12\n","    Found existing installation: nvidia-curand-cu12 10.3.6.82\n","    Uninstalling nvidia-curand-cu12-10.3.6.82:\n","      Successfully uninstalled nvidia-curand-cu12-10.3.6.82\n","  Attempting uninstall: nvidia-cufft-cu12\n","    Found existing installation: nvidia-cufft-cu12 11.2.3.61\n","    Uninstalling nvidia-cufft-cu12-11.2.3.61:\n","      Successfully uninstalled nvidia-cufft-cu12-11.2.3.61\n","  Attempting uninstall: nvidia-cuda-runtime-cu12\n","    Found existing installation: nvidia-cuda-runtime-cu12 12.5.82\n","    Uninstalling nvidia-cuda-runtime-cu12-12.5.82:\n","      Successfully uninstalled nvidia-cuda-runtime-cu12-12.5.82\n","  Attempting uninstall: nvidia-cuda-nvrtc-cu12\n","    Found existing installation: nvidia-cuda-nvrtc-cu12 12.5.82\n","    Uninstalling nvidia-cuda-nvrtc-cu12-12.5.82:\n","      Successfully uninstalled nvidia-cuda-nvrtc-cu12-12.5.82\n","  Attempting uninstall: nvidia-cuda-cupti-cu12\n","    Found existing installation: nvidia-cuda-cupti-cu12 12.5.82\n","    Uninstalling nvidia-cuda-cupti-cu12-12.5.82:\n","      Successfully uninstalled nvidia-cuda-cupti-cu12-12.5.82\n","  Attempting uninstall: nvidia-cublas-cu12\n","    Found existing installation: nvidia-cublas-cu12 12.5.3.2\n","    Uninstalling nvidia-cublas-cu12-12.5.3.2:\n","      Successfully uninstalled nvidia-cublas-cu12-12.5.3.2\n","  Attempting uninstall: nvidia-cusparse-cu12\n","    Found existing installation: nvidia-cusparse-cu12 12.5.1.3\n","    Uninstalling nvidia-cusparse-cu12-12.5.1.3:\n","      Successfully uninstalled nvidia-cusparse-cu12-12.5.1.3\n","  Attempting uninstall: nvidia-cudnn-cu12\n","    Found existing installation: nvidia-cudnn-cu12 9.3.0.75\n","    Uninstalling nvidia-cudnn-cu12-9.3.0.75:\n","      Successfully uninstalled nvidia-cudnn-cu12-9.3.0.75\n","  Attempting uninstall: nvidia-cusolver-cu12\n","    Found existing installation: nvidia-cusolver-cu12 11.6.3.83\n","    Uninstalling nvidia-cusolver-cu12-11.6.3.83:\n","      Successfully uninstalled nvidia-cusolver-cu12-11.6.3.83\n","Successfully installed nvidia-cublas-cu12-12.4.5.8 nvidia-cuda-cupti-cu12-12.4.127 nvidia-cuda-nvrtc-cu12-12.4.127 nvidia-cuda-runtime-cu12-12.4.127 nvidia-cudnn-cu12-9.1.0.70 nvidia-cufft-cu12-11.2.1.3 nvidia-curand-cu12-10.3.5.147 nvidia-cusolver-cu12-11.6.1.9 nvidia-cusparse-cu12-12.3.1.170 nvidia-nvjitlink-cu12-12.4.127\n"]}]},{"cell_type":"code","source":["import pandas as pd\n","import re\n","\n","# ===============================\n","# تحميل الإكسل شيت\n","# ===============================\n","excel_path = \"/content/drive/MyDrive/AutoModelForSequenceClassification/products_cleaned_strategy (1).xlsx\"\n","df = pd.read_excel(excel_path)\n","\n","# طباعة أسماء الأعمدة لنشوف إيه اللي موجود\n","print(\"أعمدة الإكسل شيت:\")\n","print(df.columns.tolist())\n","print(f\"عدد المنتجات: {len(df)}\")\n","print(\"-\" * 50)\n","\n","# ===============================\n","# تنظيف النصوص العربية\n","# ===============================\n","def normalize_arabic(text):\n","    \"\"\"تنظيف وتوحيد النصوص العربية\"\"\"\n","    if pd.isna(text):\n","        return \"\"\n","\n","    text = str(text).strip()\n","    # توحيد الألف\n","    text = re.sub(r'[إأآا]', 'ا', text)\n","    # توحيد التاء المربوطة\n","    text = re.sub(r'ة', 'ه', text)\n","    # توحيد الياء\n","    text = re.sub(r'ى', 'ي', text)\n","    # توحيد الهمزة\n","    text = re.sub(r'ئ', 'ء', text)\n","    # إزالة علامات الترقيم\n","    text = re.sub(r'[^\\w\\s]', ' ', text)\n","    # إزالة المسافات الزائدة\n","    text = ' '.join(text.split())\n","\n","    return text.lower()\n","\n","# ===============================\n","# البحث في المنتجات\n","# ===============================\n","def search_product(search_query, product_column=\"اسم المنتج\", category_column=\"التصنيف المحاسبي\"):\n","    \"\"\"البحث عن منتج في الإكسل شيت\"\"\"\n","\n","    # تنظيف كلمة البحث\n","    normalized_query = normalize_arabic(search_query)\n","    query_words = normalized_query.split()\n","\n","    if not query_words:\n","        return {\"found\": False, \"message\": \"لم يتم إدخال كلمة بحث صحيحة\"}\n","\n","    results = []\n","\n","    # البحث في كل منتج\n","    for index, row in df.iterrows():\n","        product_name = str(row.get(product_column, \"\"))\n","        category = str(row.get(category_column, \"غير محدد\"))\n","\n","        if product_name and product_name != \"nan\":\n","            normalized_product = normalize_arabic(product_name)\n","\n","            # التحقق من وجود أي كلمة من البحث في اسم المنتج\n","            match_found = False\n","            for query_word in query_words:\n","                if len(query_word) >= 2 and query_word in normalized_product:\n","                    match_found = True\n","                    break\n","\n","            if match_found:\n","                confidence = calculate_confidence(search_query, product_name)\n","                results.append({\n","                    \"اسم_المنتج\": product_name,\n","                    \"التصنيف_المحاسبي\": category,\n","                    \"درجة_التطابق\": calculate_match_score(normalized_query, normalized_product),\n","                    \"الثقة\": confidence\n","                })\n","\n","    # ترتيب النتائج حسب الثقة أولاً، ثم درجة التطابق\n","    results.sort(key=lambda x: (x[\"الثقة\"], x[\"درجة_التطابق\"]), reverse=True)\n","\n","    if results:\n","        return {\n","            \"found\": True,\n","            \"query\": search_query,\n","            \"count\": len(results),\n","            \"results\": results[:10]  # أفضل 10 نتائج\n","        }\n","    else:\n","        return {\n","            \"found\": False,\n","            \"query\": search_query,\n","            \"message\": \"لم يتم العثور على منتجات مطابقة\"\n","        }\n","\n","def calculate_match_score(query, product):\n","    \"\"\"حساب درجة التطابق بين البحث والمنتج\"\"\"\n","    query_words = set(query.split())\n","    product_words = set(product.split())\n","\n","    if not query_words or not product_words:\n","        return 0\n","\n","    # نسبة الكلمات المشتركة\n","    common_words = query_words.intersection(product_words)\n","    return len(common_words) / len(query_words)\n","\n","def calculate_confidence(query, product):\n","    \"\"\"حساب الـ Confidence بناءً على عدة عوامل\"\"\"\n","\n","    # تنظيف النصوص\n","    query_clean = normalize_arabic(query)\n","    product_clean = normalize_arabic(product)\n","\n","    query_words = query_clean.split()\n","    product_words = product_clean.split()\n","\n","    if not query_words or not product_words:\n","        return 0.0\n","\n","    # العامل 1: نسبة الكلمات المشتركة\n","    query_set = set(query_words)\n","    product_set = set(product_words)\n","    common_words = query_set.intersection(product_set)\n","    word_overlap_ratio = len(common_words) / len(query_set) if query_set else 0\n","\n","    # العامل 2: التطابق الجزئي للكلمات (substring matching)\n","    substring_score = 0\n","    for q_word in query_words:\n","        if len(q_word) >= 2:  # تجاهل الكلمات القصيرة جداً\n","            for p_word in product_words:\n","                if q_word in p_word:\n","                    # كلما كانت الكلمة أطول، كلما زادت الثقة\n","                    substring_score += len(q_word) / len(p_word)\n","                elif p_word in q_word:\n","                    substring_score += len(p_word) / len(q_word)\n","\n","    # تطبيع الـ substring score\n","    substring_score = min(substring_score / len(query_words), 1.0)\n","\n","    # العامل 3: التطابق الكامل للنص\n","    if query_clean == product_clean:\n","        exact_match_bonus = 0.3\n","    elif query_clean in product_clean or product_clean in query_clean:\n","        exact_match_bonus = 0.2\n","    else:\n","        exact_match_bonus = 0\n","\n","    # العامل 4: طول الكلمات المطابقة (كلمات أطول = ثقة أكبر)\n","    length_factor = 0\n","    if common_words:\n","        avg_common_length = sum(len(word) for word in common_words) / len(common_words)\n","        length_factor = min(avg_common_length / 10, 0.1)  # حد أقصى 0.1\n","\n","    # حساب الـ Confidence النهائي\n","    confidence = (\n","        word_overlap_ratio * 0.4 +      # 40% للكلمات المشتركة\n","        substring_score * 0.3 +         # 30% للتطابق الجزئي\n","        exact_match_bonus +             # 20-30% للتطابق الكامل\n","        length_factor                   # 10% لطول الكلمات\n","    )\n","\n","    # ضمان أن الثقة بين 0 و 1\n","    return min(max(confidence, 0.0), 1.0)\n","\n","# ===============================\n","# دالة البحث مع فلترة حسب الثقة\n","# ===============================\n","def search_with_confidence_filter(product_name, min_confidence=0.3):\n","    \"\"\"بحث مع فلترة النتائج حسب مستوى الثقة\"\"\"\n","    result = search_product(product_name)\n","\n","    if result[\"found\"]:\n","        # فلترة النتائج حسب الثقة\n","        filtered_results = [\n","            item for item in result[\"results\"]\n","            if item[\"الثقة\"] >= min_confidence\n","        ]\n","\n","        if filtered_results:\n","            result[\"results\"] = filtered_results\n","            result[\"count\"] = len(filtered_results)\n","            return result\n","        else:\n","            return {\n","                \"found\": False,\n","                \"query\": product_name,\n","                \"message\": f\"لا توجد نتائج بثقة أعلى من {min_confidence:.1f}\"\n","            }\n","\n","    return result\n","\n","def advanced_search(product_name, min_confidence=0.3):\n","    \"\"\"بحث متقدم مع عرض مفصل للنتائج\"\"\"\n","    result = search_with_confidence_filter(product_name, min_confidence)\n","\n","    print(f\"🔍 البحث المتقدم عن: '{product_name}' (حد أدنى للثقة: {min_confidence:.1f})\")\n","    print(\"=\" * 80)\n","\n","    if result[\"found\"]:\n","        print(f\"✅ تم العثور على {result['count']} منتج(ات) عالي الثقة:\")\n","        print()\n","\n","        for i, product in enumerate(result[\"results\"], 1):\n","            # تحديد لون الثقة\n","            confidence = product['الثقة']\n","            if confidence >= 0.8:\n","                confidence_level = \"عالية جداً 🔥\"\n","                confidence_color = \"🟢\"\n","            elif confidence >= 0.6:\n","                confidence_level = \"عالية ✨\"\n","                confidence_color = \"🟢\"\n","            elif confidence >= 0.4:\n","                confidence_level = \"متوسطة ⚡\"\n","                confidence_color = \"🟡\"\n","            else:\n","                confidence_level = \"منخفضة ⚠️\"\n","                confidence_color = \"🔴\"\n","\n","            print(f\"{i:2d}. {confidence_color} المنتج: {product['اسم_المنتج']}\")\n","            print(f\"     📊 التصنيف: {product['التصنيف_المحاسبي']}\")\n","            print(f\"     📈 درجة التطابق: {product['درجة_التطابق']:.2f}\")\n","            print(f\"     🎯 مستوى الثقة: {confidence:.3f} ({confidence_level})\")\n","            print(\"-\" * 60)\n","    else:\n","        print(f\"❌ {result['message']}\")\n","\n","    print()\n","\n","# ===============================\n","# دالة البحث السريع\n","# ===============================\n","def quick_search(product_name):\n","    \"\"\"بحث سريع وطباعة النتائج\"\"\"\n","    result = search_product(product_name)\n","\n","    print(f\"🔍 البحث عن: '{product_name}'\")\n","    print(\"=\" * 60)\n","\n","    if result[\"found\"]:\n","        print(f\"✅ تم العثور على {result['count']} منتج(ات):\")\n","        print()\n","\n","        for i, product in enumerate(result[\"results\"], 1):\n","            confidence_icon = \"🟢\" if product['الثقة'] >= 0.7 else \"🟡\" if product['الثقة'] >= 0.4 else \"🔴\"\n","\n","            print(f\"{i:2d}. المنتج: {product['اسم_المنتج']}\")\n","            print(f\"     التصنيف: {product['التصنيف_المحاسبي']}\")\n","            print(f\"     التطابق: {product['درجة_التطابق']:.2f}\")\n","            print(f\"     الثقة: {confidence_icon} {product['الثقة']:.3f}\")\n","            print(\"-\" * 40)\n","    else:\n","        print(f\"❌ {result['message']}\")\n","\n","    print()\n","\n","# ===============================\n","# اختبار البحث\n","# ===============================\n","def test_search():\n","    \"\"\"اختبار البحث على عدة منتجات\"\"\"\n","    test_queries = [\n","        \"حليب\",\n","        \"نادك\",\n","        \"صابون\",\n","        \"منظف\",\n","        \"زيت\",\n","        \"شامبو\",\n","        \"غيث\",  # كلمة مش موجودة\n","        \"طماطم\"\n","    ]\n","\n","    print(\"🧪 اختبار البحث العادي:\")\n","    print(\"=\" * 80)\n","\n","    for query in test_queries:\n","        quick_search(query)\n","\n","    print(\"\\n🎯 اختبار البحث المتقدم (ثقة عالية):\")\n","    print(\"=\" * 80)\n","\n","    for query in test_queries[:4]:  # اختبار أول 4 فقط\n","        advanced_search(query, min_confidence=0.5)\n","\n","# ===============================\n","# تشغيل الكود\n","# ===============================\n","if __name__ == \"__main__\":\n","    # عرض معلومات الملف أولاً\n","    print(\"📊 معلومات الملف:\")\n","    print(f\"عدد الصفوف: {len(df)}\")\n","    print(f\"عدد الأعمدة: {len(df.columns)}\")\n","\n","    # عرض عينة من البيانات\n","    print(\"\\n📋 عينة من البيانات:\")\n","    print(df.head(3).to_string())\n","    print(\"\\n\" + \"=\" * 80)\n","\n","    # تشغيل الاختبارات\n","    test_search()\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"mmmNulh3koOu","executionInfo":{"status":"ok","timestamp":1748765951531,"user_tz":-180,"elapsed":12469,"user":{"displayName":"Allaa Sabboukh","userId":"15783130365351138779"}},"outputId":"759117ef-0777-4781-de22-97e8ab7d4686"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["أعمدة الإكسل شيت:\n","['اسم المنتج', 'التصنيف الرئيسي', 'التصنيف الفرعي', 'التصنيف المحاسبي', 'الماركة المصنعة']\n","عدد المنتجات: 15848\n","--------------------------------------------------\n","📊 معلومات الملف:\n","عدد الصفوف: 15848\n","عدد الأعمدة: 5\n","\n","📋 عينة من البيانات:\n","                        اسم المنتج التصنيف الرئيسي         التصنيف الفرعي                   التصنيف المحاسبي الماركة المصنعة\n","0  حليب من حليب الأبقار كامل الدسم     أطعمة طازجة  منتجات الألبان والبيض  تكاليف مباشرة - تكلفة بضاعة مباعة           Nadec\n","1            شوكولاتة بالحليب قطعة     أطعمة طازجة  منتجات الألبان والبيض  تكاليف مباشرة - تكلفة بضاعة مباعة             Kdd\n","2                   زبادي يوناني ً     أطعمة طازجة  منتجات الألبان والبيض  تكاليف مباشرة - تكلفة بضاعة مباعة         Almarai\n","\n","================================================================================\n","🧪 اختبار البحث العادي:\n","================================================================================\n","🔍 البحث عن: 'حليب'\n","============================================================\n","✅ تم العثور على 397 منتج(ات):\n","\n"," 1. المنتج: حليب\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 2. المنتج: حليب من حليب الأبقار كامل الدسم\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 3. المنتج: حليب نجوم كامل الدسم\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 4. المنتج: حليب الشوكولاتة ً\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 5. المنتج: حليب كامل الدسم\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 6. المنتج: حليب قليل الدسم\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 7. المنتج: حليب نجوم بنكهة الفراولة\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 8. المنتج: حليب كامل الدسم قطعة\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 9. المنتج: نجوم حليب بالفانيلا حبة\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","10. المنتج: حليب طازج\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","\n","🔍 البحث عن: 'نادك'\n","============================================================\n","❌ لم يتم العثور على منتجات مطابقة\n","\n","🔍 البحث عن: 'صابون'\n","============================================================\n","✅ تم العثور على 182 منتج(ات):\n","\n"," 1. المنتج: صابون سائل غسيل الصحون بالتفاح\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 2. المنتج: صابون سائل غسيل الصحون بالليمون\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 3. المنتج: فيري صابون سائل لغسيل الصحون\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 4. المنتج: العجيب صابون جلي الصحون ليمون\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 5. المنتج: صابون سائل الصحون ليمون\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 6. المنتج: برش صابون معطر\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 7. المنتج: صابون جل للغسالة الأوتوماتيك سعر خاص\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 8. المنتج: صابون للتفتيح وردي\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 9. المنتج: صابون تقصير وشد بنفسجي\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","10. المنتج: صابون جل لتصفيف الحواجب مع فرشاة متعدد الألوان\n","     التصنيف: مصروفات عمومية -مستلزمات نظافة للمستخدمين\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","\n","🔍 البحث عن: 'منظف'\n","============================================================\n","✅ تم العثور على 180 منتج(ات):\n","\n"," 1. المنتج: ماكسي بيل - منظف الوجه الكلاسيكي\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 2. المنتج: باور بلاس منظف مراحيض برائحة الانتعاش،\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 3. المنتج: سائل منظف للأرضيات ومتعدد الإستخدامات 4 في 1 ورد\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 4. المنتج: 4 في 1 منظف ومعقم مضاد للبكتيريا برائحة الليمون\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 5. المنتج: سائل منظف للأرضيات ومتعدد الإستخدامات 4 في يمون\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 6. المنتج: منظف النوافذ والزجاج برائحة عطرالبوتبوري ل\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 7. المنتج: منظف النوافذ والزجاج برائحة اصلية ل\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 8. المنتج: يو دو منظف زجاج + عبوة\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 9. المنتج: ماسل بخاخ منظف جميع الاغراض ولأسطح متعددة,\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","10. المنتج: منظف النوافذ والزجاج برائحة الليمون ل\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","\n","🔍 البحث عن: 'زيت'\n","============================================================\n","✅ تم العثور على 578 منتج(ات):\n","\n"," 1. المنتج: زيت\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 2. المنتج: زبدة نباتية من زيت دور الشمس\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 3. المنتج: زهرة زيت دوار الشمس زيت طبخ\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 4. المنتج: زيت نباتي للطبخ\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 5. المنتج: زيت الذرة أوميغا\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 6. المنتج: الجوف زيت الزيتون البكر اكسترا\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 7. المنتج: زيت دوار الشمس النقي زيت طبخ\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 8. المنتج: زيت زيتون عصرة أولى ممتاز\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 9. المنتج: زيت دوار الشمس\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","10. المنتج: حياة زيت\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","\n","🔍 البحث عن: 'شامبو'\n","============================================================\n","✅ تم العثور على 201 منتج(ات):\n","\n"," 1. المنتج: شامبو العباية\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 2. المنتج: بيرسيل شامبو العباية السوداء مع شامبو العباية بعبق الورد\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 3. المنتج: شامبو العباية السوداء +\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 4. المنتج: شامبو للعباية الملونة\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 5. المنتج: بيرسيل شامبو للعبايات الملونة +\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 6. المنتج: شامبو العباية ومنعم بالورود 2 في 1\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 7. المنتج: شامبو العباية أصالة العود\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 8. المنتج: شامبو عبائة 2 في 1 بالعطر الفرنسي\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 9. المنتج: شامبو العباية و منعم بالورود 2 في 1\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","10. المنتج: شامبو للعبايات الملونة\n","     التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","\n","🔍 البحث عن: 'غيث'\n","============================================================\n","❌ لم يتم العثور على منتجات مطابقة\n","\n","🔍 البحث عن: 'طماطم'\n","============================================================\n","✅ تم العثور على 68 منتج(ات):\n","\n"," 1. المنتج: كوب طماطم كرزي الأحمر\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 2. المنتج: إس جي إم - عبوة طماطم كجم\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 3. المنتج: طماطم عنقودية حمراء\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 4. المنتج: طماطم كاندي\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 5. المنتج: طماطم صحن\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 6. المنتج: طماطم كرزية\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 7. المنتج: الرشيد عبوة طماطم\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 8. المنتج: دافا بيبي طماطم\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 9. المنتج: طماطم شيري ميكس\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","10. المنتج: طماطم الكرزية البرقوق\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n","\n","\n","🎯 اختبار البحث المتقدم (ثقة عالية):\n","================================================================================\n","🔍 البحث المتقدم عن: 'حليب' (حد أدنى للثقة: 0.5)\n","================================================================================\n","✅ تم العثور على 10 منتج(ات) عالي الثقة:\n","\n"," 1. 🟢 المنتج: حليب\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 2. 🟢 المنتج: حليب من حليب الأبقار كامل الدسم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 3. 🟢 المنتج: حليب نجوم كامل الدسم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 4. 🟢 المنتج: حليب الشوكولاتة ً\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 5. 🟢 المنتج: حليب كامل الدسم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 6. 🟢 المنتج: حليب قليل الدسم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 7. 🟢 المنتج: حليب نجوم بنكهة الفراولة\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 8. 🟢 المنتج: حليب كامل الدسم قطعة\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 9. 🟢 المنتج: نجوم حليب بالفانيلا حبة\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n","10. 🟢 المنتج: حليب طازج\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n","\n","🔍 البحث المتقدم عن: 'نادك' (حد أدنى للثقة: 0.5)\n","================================================================================\n","❌ لم يتم العثور على منتجات مطابقة\n","\n","🔍 البحث المتقدم عن: 'صابون' (حد أدنى للثقة: 0.5)\n","================================================================================\n","✅ تم العثور على 10 منتج(ات) عالي الثقة:\n","\n"," 1. 🟢 المنتج: صابون سائل غسيل الصحون بالتفاح\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 2. 🟢 المنتج: صابون سائل غسيل الصحون بالليمون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 3. 🟢 المنتج: فيري صابون سائل لغسيل الصحون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 4. 🟢 المنتج: العجيب صابون جلي الصحون ليمون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 5. 🟢 المنتج: صابون سائل الصحون ليمون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 6. 🟢 المنتج: برش صابون معطر\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 7. 🟢 المنتج: صابون جل للغسالة الأوتوماتيك سعر خاص\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 8. 🟢 المنتج: صابون للتفتيح وردي\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 9. 🟢 المنتج: صابون تقصير وشد بنفسجي\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n","10. 🟢 المنتج: صابون جل لتصفيف الحواجب مع فرشاة متعدد الألوان\n","     📊 التصنيف: مصروفات عمومية -مستلزمات نظافة للمستخدمين\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n","\n","🔍 البحث المتقدم عن: 'منظف' (حد أدنى للثقة: 0.5)\n","================================================================================\n","✅ تم العثور على 10 منتج(ات) عالي الثقة:\n","\n"," 1. 🟢 المنتج: ماكسي بيل - منظف الوجه الكلاسيكي\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 2. 🟢 المنتج: باور بلاس منظف مراحيض برائحة الانتعاش،\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 3. 🟢 المنتج: سائل منظف للأرضيات ومتعدد الإستخدامات 4 في 1 ورد\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 4. 🟢 المنتج: 4 في 1 منظف ومعقم مضاد للبكتيريا برائحة الليمون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 5. 🟢 المنتج: سائل منظف للأرضيات ومتعدد الإستخدامات 4 في يمون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 6. 🟢 المنتج: منظف النوافذ والزجاج برائحة عطرالبوتبوري ل\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 7. 🟢 المنتج: منظف النوافذ والزجاج برائحة اصلية ل\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 8. 🟢 المنتج: يو دو منظف زجاج + عبوة\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n"," 9. 🟢 المنتج: ماسل بخاخ منظف جميع الاغراض ولأسطح متعددة,\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n","10. 🟢 المنتج: منظف النوافذ والزجاج برائحة الليمون ل\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً 🔥)\n","------------------------------------------------------------\n","\n"]}]},{"cell_type":"code","source":["\n","\n","import json\n","from datetime import datetime\n","from google.colab import files\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n","\n","\n","\n","class SearchResultsSaver:\n","    def __init__(self):\n","        self.all_results = []\n","        self.session_stats = {\n","            'start_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),\n","            'total_searches': 0,\n","            'successful_searches': 0,\n","            'failed_searches': 0\n","        }\n","\n","    def save_search_result(self, query, result):\n","        \"\"\"حفظ نتيجة بحث واحدة\"\"\"\n","        search_record = {\n","            'timestamp': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),\n","            'query': query,\n","            'found': result.get('found', False),\n","            'count': result.get('count', 0),\n","            'results': result.get('results', [])\n","        }\n","\n","        self.all_results.append(search_record)\n","        self.session_stats['total_searches'] += 1\n","\n","        if result.get('found', False):\n","            self.session_stats['successful_searches'] += 1\n","        else:\n","            self.session_stats['failed_searches'] += 1\n","\n","    def save_to_excel(self, filename='search_results.xlsx'):\n","        \"\"\"حفظ النتائج في ملف Excel مفصل\"\"\"\n","        if not self.all_results:\n","            print(\"❌ لا توجد نتائج للحفظ\")\n","            return\n","\n","\n","        detailed_results = []\n","\n","        for search in self.all_results:\n","            if search['found'] and search['results']:\n","                for result in search['results']:\n","                    detailed_results.append({\n","                        'وقت_البحث': search['timestamp'],\n","                        'كلمة_البحث': search['query'],\n","                        'اسم_المنتج_الموجود': result['اسم_المنتج'],\n","                        'التصنيف_المحاسبي': result['التصنيف_المحاسبي'],\n","                        'درجة_التطابق': result['درجة_التطابق'],\n","                        'مستوى_الثقة': result['الثقة'],\n","                        'تقييم_الثقة': self._get_confidence_level(result['الثقة'])\n","                    })\n","            else:\n","                detailed_results.append({\n","                    'وقت_البحث': search['timestamp'],\n","                    'كلمة_البحث': search['query'],\n","                    'اسم_المنتج_الموجود': 'لم يتم العثور على نتائج',\n","                    'التصنيف_المحاسبي': '',\n","                    'درجة_التطابق': 0,\n","                    'مستوى_الثقة': 0,\n","                    'تقييم_الثقة': 'غير موجود'\n","                })\n","\n","        # إنشاء DataFrame وحفظه\n","        results_df = pd.DataFrame(detailed_results)\n","\n","        # إنشاء ملف Excel متعدد الأوراق\n","        with pd.ExcelWriter(filename, engine='openpyxl') as writer:\n","            # ورقة النتائج المفصلة\n","            results_df.to_excel(writer, sheet_name='النتائج_المفصلة', index=False)\n","\n","            # ورقة الإحصائيات\n","            stats_df = pd.DataFrame([self.session_stats])\n","            stats_df.to_excel(writer, sheet_name='إحصائيات_الجلسة', index=False)\n","\n","            # ورقة تحليل الأداء\n","            performance_analysis = self._analyze_performance()\n","            performance_df = pd.DataFrame(performance_analysis)\n","            performance_df.to_excel(writer, sheet_name='تحليل_الأداء', index=False)\n","\n","        print(f\"✅ تم حفظ النتائج في ملف: {filename}\")\n","        files.download(filename)\n","\n","    def save_to_json(self, filename='search_results.json'):\n","        \"\"\"حفظ النتائج في ملف JSON\"\"\"\n","        if not self.all_results:\n","            print(\"❌ لا توجد نتائج للحفظ\")\n","            return\n","\n","        complete_data = {\n","            'session_info': self.session_stats,\n","            'search_results': self.all_results,\n","            'summary': self._get_summary()\n","        }\n","\n","        with open(filename, 'w', encoding='utf-8') as f:\n","            json.dump(complete_data, f, ensure_ascii=False, indent=2)\n","\n","        print(f\"✅ تم حفظ النتائج في ملف JSON: {filename}\")\n","        files.download(filename)\n","\n","    def create_performance_report(self, filename='performance_report.txt'):\n","        \"\"\"إنشاء تقرير أداء مفصل\"\"\"\n","        if not self.all_results:\n","            print(\"❌ لا توجد نتائج لإنشاء التقرير\")\n","            return\n","\n","        report = f\"\"\"\n","📊 تقرير أداء نظام البحث\n","{'='*50}\n","\n","📅 معلومات الجلسة:\n","- وقت البدء: {self.session_stats['start_time']}\n","- إجمالي عمليات البحث: {self.session_stats['total_searches']}\n","- عمليات البحث الناجحة: {self.session_stats['successful_searches']}\n","- عمليات البحث الفاشلة: {self.session_stats['failed_searches']}\n","- معدل النجاح: {(self.session_stats['successful_searches']/self.session_stats['total_searches']*100):.1f}%\n","\n","📈 تحليل مستويات الثقة:\n","\"\"\"\n","\n","        # تحليل مستويات الثقة\n","        confidence_analysis = self._analyze_confidence_levels()\n","        for level, count in confidence_analysis.items():\n","            report += f\"- {level}: {count} نتيجة\\n\"\n","\n","        report += f\"\\n🔍 أفضل النتائج (ثقة عالية):\\n\"\n","\n","        # أفضل النتائج\n","        best_results = self._get_best_results()\n","        for i, result in enumerate(best_results[:5], 1):\n","            report += f\"{i}. '{result['query']}' → '{result['product']}' (ثقة: {result['confidence']:.3f})\\n\"\n","\n","        report += f\"\\n❌ الاستعلامات التي لم تجد نتائج:\\n\"\n","\n","        # الاستعلامات الفاشلة\n","        failed_queries = [search['query'] for search in self.all_results if not search['found']]\n","        for i, query in enumerate(failed_queries, 1):\n","            report += f\"{i}. '{query}'\\n\"\n","\n","        with open(filename, 'w', encoding='utf-8') as f:\n","            f.write(report)\n","\n","        print(f\"✅ تم إنشاء تقرير الأداء: {filename}\")\n","        files.download(filename)\n","\n","    def create_visualizations(self):\n","        \"\"\"إنشاء رسوم بيانية للنتائج\"\"\"\n","        if not self.all_results:\n","            print(\"❌ لا توجد نتائج لإنشاء الرسوم البيانية\")\n","            return\n","\n","        # إعداد الرسوم البيانية\n","        fig, axes = plt.subplots(2, 2, figsize=(15, 12))\n","        fig.suptitle('تحليل نتائج البحث', fontsize=16, fontweight='bold')\n","\n","        # 1. نسبة النجاح\n","        success_data = [self.session_stats['successful_searches'],\n","                       self.session_stats['failed_searches']]\n","        labels = ['نجحت', 'فشلت']\n","        colors = ['#2ecc71', '#e74c3c']\n","\n","        axes[0,0].pie(success_data, labels=labels, colors=colors, autopct='%1.1f%%')\n","        axes[0,0].set_title('معدل نجاح البحث')\n","\n","        # 2. توزيع مستويات الثقة\n","        confidence_levels = self._analyze_confidence_levels()\n","        axes[0,1].bar(confidence_levels.keys(), confidence_levels.values(),\n","                      color=['#e74c3c', '#f39c12', '#2ecc71', '#27ae60'])\n","        axes[0,1].set_title('توزيع مستويات الثقة')\n","        axes[0,1].tick_params(axis='x', rotation=45)\n","\n","        # 3. توزيع درجات التطابق\n","        all_matches = []\n","        for search in self.all_results:\n","            if search['found']:\n","                for result in search['results']:\n","                    all_matches.append(result['درجة_التطابق'])\n","\n","        if all_matches:\n","            axes[1,0].hist(all_matches, bins=10, color='#3498db', alpha=0.7)\n","            axes[1,0].set_title('توزيع درجات التطابق')\n","            axes[1,0].set_xlabel('درجة التطابق')\n","            axes[1,0].set_ylabel('التكرار')\n","\n","        # 4. عدد النتائج لكل بحث\n","        result_counts = [search['count'] for search in self.all_results if search['found']]\n","        if result_counts:\n","            axes[1,1].hist(result_counts, bins=max(10, len(set(result_counts))),\n","                          color='#9b59b6', alpha=0.7)\n","            axes[1,1].set_title('عدد النتائج المطابقة لكل بحث')\n","            axes[1,1].set_xlabel('عدد النتائج')\n","            axes[1,1].set_ylabel('التكرار')\n","\n","        plt.tight_layout()\n","        plt.savefig('search_analysis.png', dpi=300, bbox_inches='tight')\n","        print(\"✅ تم إنشاء الرسوم البيانية: search_analysis.png\")\n","        files.download('search_analysis.png')\n","        plt.show()\n","\n","    def _get_confidence_level(self, confidence):\n","        \"\"\"تحديد مستوى الثقة\"\"\"\n","        if confidence >= 0.8:\n","            return \"عالية جداً\"\n","        elif confidence >= 0.6:\n","            return \"عالية\"\n","        elif confidence >= 0.4:\n","            return \"متوسطة\"\n","        else:\n","            return \"منخفضة\"\n","\n","    def _analyze_confidence_levels(self):\n","        \"\"\"تحليل مستويات الثقة\"\"\"\n","        levels = {\"منخفضة\": 0, \"متوسطة\": 0, \"عالية\": 0, \"عالية جداً\": 0}\n","\n","        for search in self.all_results:\n","            if search['found']:\n","                for result in search['results']:\n","                    level = self._get_confidence_level(result['الثقة'])\n","                    levels[level] += 1\n","\n","        return levels\n","\n","    def _get_best_results(self):\n","        \"\"\"الحصول على أفضل النتائج\"\"\"\n","        best_results = []\n","\n","        for search in self.all_results:\n","            if search['found']:\n","                for result in search['results']:\n","                    if result['الثقة'] >= 0.7:\n","                        best_results.append({\n","                            'query': search['query'],\n","                            'product': result['اسم_المنتج'],\n","                            'confidence': result['الثقة']\n","                        })\n","\n","        return sorted(best_results, key=lambda x: x['confidence'], reverse=True)\n","\n","    def _analyze_performance(self):\n","        \"\"\"تحليل الأداء\"\"\"\n","        analysis = []\n","\n","        for search in self.all_results:\n","            analysis.append({\n","                'كلمة_البحث': search['query'],\n","                'نجح_البحث': 'نعم' if search['found'] else 'لا',\n","                'عدد_النتائج': search['count'],\n","                'أعلى_ثقة': max([r['الثقة'] for r in search['results']], default=0) if search['found'] else 0,\n","                'متوسط_الثقة': sum([r['الثقة'] for r in search['results']]) / len(search['results']) if search['found'] and search['results'] else 0\n","            })\n","\n","        return analysis\n","\n","    def _get_summary(self):\n","        \"\"\"ملخص النتائج\"\"\"\n","        total_results = sum(search['count'] for search in self.all_results if search['found'])\n","        avg_confidence = 0\n","\n","        if total_results > 0:\n","            total_confidence = 0\n","            for search in self.all_results:\n","                if search['found']:\n","                    for result in search['results']:\n","                        total_confidence += result['الثقة']\n","            avg_confidence = total_confidence / total_results\n","\n","        return {\n","            'إجمالي_النتائج_الموجودة': total_results,\n","            'متوسط_الثقة_العام': avg_confidence,\n","            'معدل_النجاح': self.session_stats['successful_searches'] / self.session_stats['total_searches'] * 100 if self.session_stats['total_searches'] > 0 else 0\n","        }\n","\n","# ===============================\n","# تحديث الدوال الأصلية لتشمل الحفظ\n","# ===============================\n","\n","# إنشاء كائن الحفظ\n","saver = SearchResultsSaver()\n","\n","def enhanced_search(product_name, min_confidence=0.3, save_result=True):\n","    \"\"\"بحث محسن مع حفظ النتائج\"\"\"\n","    result = search_with_confidence_filter(product_name, min_confidence)\n","\n","    # حفظ النتيجة\n","    if save_result:\n","        saver.save_search_result(product_name, result)\n","\n","    # عرض النتيجة\n","    print(f\"🔍 البحث المحسن عن: '{product_name}' (حد أدنى للثقة: {min_confidence:.1f})\")\n","    print(\"=\" * 80)\n","\n","    if result[\"found\"]:\n","        print(f\"✅ تم العثور على {result['count']} منتج(ات) عالي الثقة:\")\n","        print()\n","\n","        for i, product in enumerate(result[\"results\"], 1):\n","            confidence = product['الثقة']\n","            confidence_level = saver._get_confidence_level(confidence)\n","            confidence_icon = \"🔥\" if confidence >= 0.8 else \"\" if confidence >= 0.6 else \"\" if confidence >= 0.4 else \"⚠️\"\n","\n","            print(f\"{i:2d}. {confidence_icon} المنتج: {product['اسم_المنتج']}\")\n","            print(f\"     📊 التصنيف: {product['التصنيف_المحاسبي']}\")\n","            print(f\"     📈 درجة التطابق: {product['درجة_التطابق']:.2f}\")\n","            print(f\"     🎯 مستوى الثقة: {confidence:.3f} ({confidence_level})\")\n","            print(\"-\" * 60)\n","    else:\n","        print(f\"❌ {result['message']}\")\n","\n","    print()\n","    return result\n","\n","def test_and_save():\n","    \"\"\"اختبار البحث مع حفظ جميع النتائج\"\"\"\n","    test_queries = [\n","        \"حليب\",\n","        \"نادك\",\n","        \"صابون\",\n","        \"منظف\",\n","        \"زيت\",\n","        \"شامبو\",\n","        \"غيث\",\n","        \"طماطم\",\n","        \"عصير\",\n","        \"ماء\"\n","    ]\n","\n","    print(\"🧪 اختبار البحث المحسن مع الحفظ:\")\n","    print(\"=\" * 80)\n","\n","    for query in test_queries:\n","        enhanced_search(query, min_confidence=0.3)\n","\n","    # حفظ النتائج بكل الطرق\n","    print(\"\\n💾 حفظ النتائج...\")\n","    saver.save_to_excel('نتائج_البحث.xlsx')\n","    saver.save_to_json('نتائج_البحث.json')\n","    saver.create_performance_report('تقرير_الأداء.txt')\n","    saver.create_visualizations()\n","\n","    print(\"✅ تم حفظ جميع النتائج والتقارير!\")\n","\n","# دالة سريعة للحفظ فقط\n","def save_current_results():\n","    \"\"\"حفظ النتائج الحالية فقط\"\"\"\n","    saver.save_to_excel('نتائج_البحث_سريع.xlsx')\n","    saver.create_performance_report('تقرير_سريع.txt')\n","\n","# ===============================\n","# لتشغيل الاختبار مع الحفظ\n","# ===============================\n","\n","# تشغيل مباشر للحفظ\n","print(\"🚀 بدء تشغيل النظام المحسن...\")\n","print(\"=\" * 50)\n","\n","# تشغيل الاختبار مع الحفظ\n","test_and_save()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"m_0H3CjHO7qm","executionInfo":{"status":"ok","timestamp":1748765976215,"user_tz":-180,"elapsed":11276,"user":{"displayName":"Allaa Sabboukh","userId":"15783130365351138779"}},"outputId":"f5bba5bf-aa2d-4972-ae9b-765235a94e1f"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["🚀 بدء تشغيل النظام المحسن...\n","==================================================\n","🧪 اختبار البحث المحسن مع الحفظ:\n","================================================================================\n","🔍 البحث المحسن عن: 'حليب' (حد أدنى للثقة: 0.3)\n","================================================================================\n","✅ تم العثور على 10 منتج(ات) عالي الثقة:\n","\n"," 1. 🔥 المنتج: حليب\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 2. 🔥 المنتج: حليب من حليب الأبقار كامل الدسم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 3. 🔥 المنتج: حليب نجوم كامل الدسم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 4. 🔥 المنتج: حليب الشوكولاتة ً\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 5. 🔥 المنتج: حليب كامل الدسم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 6. 🔥 المنتج: حليب قليل الدسم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 7. 🔥 المنتج: حليب نجوم بنكهة الفراولة\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 8. 🔥 المنتج: حليب كامل الدسم قطعة\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 9. 🔥 المنتج: نجوم حليب بالفانيلا حبة\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","10. 🔥 المنتج: حليب طازج\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","\n","🔍 البحث المحسن عن: 'نادك' (حد أدنى للثقة: 0.3)\n","================================================================================\n","❌ لم يتم العثور على منتجات مطابقة\n","\n","🔍 البحث المحسن عن: 'صابون' (حد أدنى للثقة: 0.3)\n","================================================================================\n","✅ تم العثور على 10 منتج(ات) عالي الثقة:\n","\n"," 1. 🔥 المنتج: صابون سائل غسيل الصحون بالتفاح\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 2. 🔥 المنتج: صابون سائل غسيل الصحون بالليمون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 3. 🔥 المنتج: فيري صابون سائل لغسيل الصحون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 4. 🔥 المنتج: العجيب صابون جلي الصحون ليمون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 5. 🔥 المنتج: صابون سائل الصحون ليمون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 6. 🔥 المنتج: برش صابون معطر\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 7. 🔥 المنتج: صابون جل للغسالة الأوتوماتيك سعر خاص\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 8. 🔥 المنتج: صابون للتفتيح وردي\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 9. 🔥 المنتج: صابون تقصير وشد بنفسجي\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","10. 🔥 المنتج: صابون جل لتصفيف الحواجب مع فرشاة متعدد الألوان\n","     📊 التصنيف: مصروفات عمومية -مستلزمات نظافة للمستخدمين\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","\n","🔍 البحث المحسن عن: 'منظف' (حد أدنى للثقة: 0.3)\n","================================================================================\n","✅ تم العثور على 10 منتج(ات) عالي الثقة:\n","\n"," 1. 🔥 المنتج: ماكسي بيل - منظف الوجه الكلاسيكي\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 2. 🔥 المنتج: باور بلاس منظف مراحيض برائحة الانتعاش،\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 3. 🔥 المنتج: سائل منظف للأرضيات ومتعدد الإستخدامات 4 في 1 ورد\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 4. 🔥 المنتج: 4 في 1 منظف ومعقم مضاد للبكتيريا برائحة الليمون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 5. 🔥 المنتج: سائل منظف للأرضيات ومتعدد الإستخدامات 4 في يمون\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 6. 🔥 المنتج: منظف النوافذ والزجاج برائحة عطرالبوتبوري ل\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 7. 🔥 المنتج: منظف النوافذ والزجاج برائحة اصلية ل\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 8. 🔥 المنتج: يو دو منظف زجاج + عبوة\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 9. 🔥 المنتج: ماسل بخاخ منظف جميع الاغراض ولأسطح متعددة,\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","10. 🔥 المنتج: منظف النوافذ والزجاج برائحة الليمون ل\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","\n","🔍 البحث المحسن عن: 'زيت' (حد أدنى للثقة: 0.3)\n","================================================================================\n","✅ تم العثور على 10 منتج(ات) عالي الثقة:\n","\n"," 1. 🔥 المنتج: زيت\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 2. 🔥 المنتج: زبدة نباتية من زيت دور الشمس\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 3. 🔥 المنتج: زهرة زيت دوار الشمس زيت طبخ\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 4. 🔥 المنتج: زيت نباتي للطبخ\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 5. 🔥 المنتج: زيت الذرة أوميغا\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 6. 🔥 المنتج: الجوف زيت الزيتون البكر اكسترا\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 7. 🔥 المنتج: زيت دوار الشمس النقي زيت طبخ\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 8. 🔥 المنتج: زيت زيتون عصرة أولى ممتاز\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 9. 🔥 المنتج: زيت دوار الشمس\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","10. 🔥 المنتج: حياة زيت\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","\n","🔍 البحث المحسن عن: 'شامبو' (حد أدنى للثقة: 0.3)\n","================================================================================\n","✅ تم العثور على 10 منتج(ات) عالي الثقة:\n","\n"," 1. 🔥 المنتج: شامبو العباية\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 2. 🔥 المنتج: بيرسيل شامبو العباية السوداء مع شامبو العباية بعبق الورد\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 3. 🔥 المنتج: شامبو العباية السوداء +\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 4. 🔥 المنتج: شامبو للعباية الملونة\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 5. 🔥 المنتج: بيرسيل شامبو للعبايات الملونة +\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 6. 🔥 المنتج: شامبو العباية ومنعم بالورود 2 في 1\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 7. 🔥 المنتج: شامبو العباية أصالة العود\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 8. 🔥 المنتج: شامبو عبائة 2 في 1 بالعطر الفرنسي\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 9. 🔥 المنتج: شامبو العباية و منعم بالورود 2 في 1\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","10. 🔥 المنتج: شامبو للعبايات الملونة\n","     📊 التصنيف: مصروفات عمومية -مستلزمات التنظيف \n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","\n","🔍 البحث المحسن عن: 'غيث' (حد أدنى للثقة: 0.3)\n","================================================================================\n","❌ لم يتم العثور على منتجات مطابقة\n","\n","🔍 البحث المحسن عن: 'طماطم' (حد أدنى للثقة: 0.3)\n","================================================================================\n","✅ تم العثور على 10 منتج(ات) عالي الثقة:\n","\n"," 1. 🔥 المنتج: كوب طماطم كرزي الأحمر\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 2. 🔥 المنتج: إس جي إم - عبوة طماطم كجم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 3. 🔥 المنتج: طماطم عنقودية حمراء\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 4. 🔥 المنتج: طماطم كاندي\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 5. 🔥 المنتج: طماطم صحن\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 6. 🔥 المنتج: طماطم كرزية\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 7. 🔥 المنتج: الرشيد عبوة طماطم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 8. 🔥 المنتج: دافا بيبي طماطم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 9. 🔥 المنتج: طماطم شيري ميكس\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","10. 🔥 المنتج: طماطم الكرزية البرقوق\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","\n","🔍 البحث المحسن عن: 'عصير' (حد أدنى للثقة: 0.3)\n","================================================================================\n","✅ تم العثور على 10 منتج(ات) عالي الثقة:\n","\n"," 1. 🔥 المنتج: داناو عصير التوت المشكل مع الحليب ً\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 2. 🔥 المنتج: داناو عصير التوت المشكل مع الحليب\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 3. 🔥 المنتج: سلاشز حلوى طرية مع عصير فواكه حقيقي،\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 4. 🔥 المنتج: طماطم مقطعة في عصير الطماطم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 5. 🔥 المنتج: طماطم كاملة مقشرة في عصير الطماطم\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 6. 🔥 المنتج: عصير ليمون ومركز\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 7. 🔥 المنتج: حدائق شتورة عصير ليمون\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 8. 🔥 المنتج: اورينت جاردن عصير ليمون\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 9. 🔥 المنتج: أورينت جاردنز عصير ليمون\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","10. 🔥 المنتج: حدائق اورينت عصير ليمون\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","\n","🔍 البحث المحسن عن: 'ماء' (حد أدنى للثقة: 0.3)\n","================================================================================\n","✅ تم العثور على 10 منتج(ات) عالي الثقة:\n","\n"," 1. 🔥 المنتج: لحم تونا خفيف في ماء وملح\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 2. 🔥 المنتج: ماء الزهر\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 3. 🔥 المنتج: ماء الورد\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 4. 🔥 المنتج: شتورة ماء ورد\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 5. 🔥 المنتج: اورينت ماء الورد\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 6. 🔥 المنتج: ماء جوز الهند مع اللب\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 7. 🔥 المنتج: اورينت ماء الزهر\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 8. 🔥 المنتج: لبنان ماء الورد\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n"," 9. 🔥 المنتج: لبنان ماء زهر\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","10. 🔥 المنتج: شتورة بديل ماء زهر\n","     📊 التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     📈 درجة التطابق: 1.00\n","     🎯 مستوى الثقة: 1.000 (عالية جداً)\n","------------------------------------------------------------\n","\n","\n","💾 حفظ النتائج...\n","✅ تم حفظ النتائج في ملف: نتائج_البحث.xlsx\n"]},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.Javascript object>"],"application/javascript":["\n","    async function download(id, filename, size) {\n","      if (!google.colab.kernel.accessAllowed) {\n","        return;\n","      }\n","      const div = document.createElement('div');\n","      const label = document.createElement('label');\n","      label.textContent = `Downloading \"${filename}\": `;\n","      div.appendChild(label);\n","      const progress = document.createElement('progress');\n","      progress.max = size;\n","      div.appendChild(progress);\n","      document.body.appendChild(div);\n","\n","      const buffers = [];\n","      let downloaded = 0;\n","\n","      const channel = await google.colab.kernel.comms.open(id);\n","      // Send a message to notify the kernel that we're ready.\n","      channel.send({})\n","\n","      for await (const message of channel.messages) {\n","        // Send a message to notify the kernel that we're ready.\n","        channel.send({})\n","        if (message.buffers) {\n","          for (const buffer of message.buffers) {\n","            buffers.push(buffer);\n","            downloaded += buffer.byteLength;\n","            progress.value = downloaded;\n","          }\n","        }\n","      }\n","      const blob = new Blob(buffers, {type: 'application/binary'});\n","      const a = document.createElement('a');\n","      a.href = window.URL.createObjectURL(blob);\n","      a.download = filename;\n","      div.appendChild(a);\n","      a.click();\n","      div.remove();\n","    }\n","  "]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.Javascript object>"],"application/javascript":["download(\"download_0b6450c9-35a4-4ba2-9d5c-bca51e50366b\", \"\\u0646\\u062a\\u0627\\u0626\\u062c_\\u0627\\u0644\\u0628\\u062d\\u062b.xlsx\", 10990)"]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["✅ تم حفظ النتائج في ملف JSON: نتائج_البحث.json\n"]},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.Javascript object>"],"application/javascript":["\n","    async function download(id, filename, size) {\n","      if (!google.colab.kernel.accessAllowed) {\n","        return;\n","      }\n","      const div = document.createElement('div');\n","      const label = document.createElement('label');\n","      label.textContent = `Downloading \"${filename}\": `;\n","      div.appendChild(label);\n","      const progress = document.createElement('progress');\n","      progress.max = size;\n","      div.appendChild(progress);\n","      document.body.appendChild(div);\n","\n","      const buffers = [];\n","      let downloaded = 0;\n","\n","      const channel = await google.colab.kernel.comms.open(id);\n","      // Send a message to notify the kernel that we're ready.\n","      channel.send({})\n","\n","      for await (const message of channel.messages) {\n","        // Send a message to notify the kernel that we're ready.\n","        channel.send({})\n","        if (message.buffers) {\n","          for (const buffer of message.buffers) {\n","            buffers.push(buffer);\n","            downloaded += buffer.byteLength;\n","            progress.value = downloaded;\n","          }\n","        }\n","      }\n","      const blob = new Blob(buffers, {type: 'application/binary'});\n","      const a = document.createElement('a');\n","      a.href = window.URL.createObjectURL(blob);\n","      a.download = filename;\n","      div.appendChild(a);\n","      a.click();\n","      div.remove();\n","    }\n","  "]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.Javascript object>"],"application/javascript":["download(\"download_7e201289-c802-47e5-b7d3-8d28e6fb95f7\", \"\\u0646\\u062a\\u0627\\u0626\\u062c_\\u0627\\u0644\\u0628\\u062d\\u062b.json\", 25523)"]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["✅ تم إنشاء تقرير الأداء: تقرير_الأداء.txt\n"]},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.Javascript object>"],"application/javascript":["\n","    async function download(id, filename, size) {\n","      if (!google.colab.kernel.accessAllowed) {\n","        return;\n","      }\n","      const div = document.createElement('div');\n","      const label = document.createElement('label');\n","      label.textContent = `Downloading \"${filename}\": `;\n","      div.appendChild(label);\n","      const progress = document.createElement('progress');\n","      progress.max = size;\n","      div.appendChild(progress);\n","      document.body.appendChild(div);\n","\n","      const buffers = [];\n","      let downloaded = 0;\n","\n","      const channel = await google.colab.kernel.comms.open(id);\n","      // Send a message to notify the kernel that we're ready.\n","      channel.send({})\n","\n","      for await (const message of channel.messages) {\n","        // Send a message to notify the kernel that we're ready.\n","        channel.send({})\n","        if (message.buffers) {\n","          for (const buffer of message.buffers) {\n","            buffers.push(buffer);\n","            downloaded += buffer.byteLength;\n","            progress.value = downloaded;\n","          }\n","        }\n","      }\n","      const blob = new Blob(buffers, {type: 'application/binary'});\n","      const a = document.createElement('a');\n","      a.href = window.URL.createObjectURL(blob);\n","      a.download = filename;\n","      div.appendChild(a);\n","      a.click();\n","      div.remove();\n","    }\n","  "]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.Javascript object>"],"application/javascript":["download(\"download_1a4328f6-0d35-4a61-a716-206fc409eb9d\", \"\\u062a\\u0642\\u0631\\u064a\\u0631_\\u0627\\u0644\\u0623\\u062f\\u0627\\u0621.txt\", 962)"]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["✅ تم إنشاء الرسوم البيانية: search_analysis.png\n"]},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.Javascript object>"],"application/javascript":["\n","    async function download(id, filename, size) {\n","      if (!google.colab.kernel.accessAllowed) {\n","        return;\n","      }\n","      const div = document.createElement('div');\n","      const label = document.createElement('label');\n","      label.textContent = `Downloading \"${filename}\": `;\n","      div.appendChild(label);\n","      const progress = document.createElement('progress');\n","      progress.max = size;\n","      div.appendChild(progress);\n","      document.body.appendChild(div);\n","\n","      const buffers = [];\n","      let downloaded = 0;\n","\n","      const channel = await google.colab.kernel.comms.open(id);\n","      // Send a message to notify the kernel that we're ready.\n","      channel.send({})\n","\n","      for await (const message of channel.messages) {\n","        // Send a message to notify the kernel that we're ready.\n","        channel.send({})\n","        if (message.buffers) {\n","          for (const buffer of message.buffers) {\n","            buffers.push(buffer);\n","            downloaded += buffer.byteLength;\n","            progress.value = downloaded;\n","          }\n","        }\n","      }\n","      const blob = new Blob(buffers, {type: 'application/binary'});\n","      const a = document.createElement('a');\n","      a.href = window.URL.createObjectURL(blob);\n","      a.download = filename;\n","      div.appendChild(a);\n","      a.click();\n","      div.remove();\n","    }\n","  "]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.Javascript object>"],"application/javascript":["download(\"download_077ba561-e697-4ce6-8c06-e955d1e38606\", \"search_analysis.png\", 284813)"]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["<Figure size 1500x1200 with 4 Axes>"],"image/png":"iVBORw0KGgoAAAANSUhEUgAABdIAAAScCAYAAACP030PAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Xd4VGXCxuFn0ntCQhoQCL0XKSICAoKLZQUUuygKlkUWVyys2MC1oO6u2BBdZQELiqC4sAqoCChKkd47IbQUQnrPzPn+8HOWMRBCSPJOkt99XbnklDnnmQTGk2feeY/NsixLAAAAAAAAAADgjDxMBwAAAAAAAAAAwJ1RpAMAAAAAAAAAUAaKdAAAAAAAAAAAykCRDgAAAAAAAABAGSjSAQAAAAAAAAAoA0U6AAAAAAAAAABloEgHAAAAAAAAAKAMFOkAAAAAAAAAAJSBIh0AAAAAAAAAgDJQpAMAAAAAAAAAUAaKdAAAAJSLzWZzfsXHx5uO42LFihUu+e666y7TkSrdrFmzXJ7j5MmTTUe6IJMnT3Z5PrNmzarwserCzx8AAABmUaQDAAAAAAAAAFAGinQAAAAAAAAAAMpAkQ4AAADUQjk5OaYjAAAAALUGRToAAABQi3z00UcKCwtTcHCwwsPDVVRUZDoSAAAAUONRpAMAAAC1yKuvvqqAgAB9+eWXeumll+Tp6Wk6EiooISGhVtxYFgAAoDagSAcAAABqkaioKNntdvn7+ysqKkp5eXmmI6GCgoODNXr0aHXt2tV0FAAAgDrPy3QAAAAAVExJSYn27NmjLVu2KDExUadOnVJubq58fX2dX2FhYYqJiVF0dLR69OihoKAgI1mLi4v10UcfadGiRdq4caNSUlIkSZGRkbr00kv15z//Wb179zaS7Wz27Nmjv//97xo1apQuvfRS03HKrUOHDlq6dKkGDx4sSTp8+LCCg4O1fft2vf/++1q1apUOHTqkrKwshYaGqkWLFhoyZIj+8pe/KDAw0HD6miczM1Nbt27Vjh07lJKSolOnTslut8vX11d+fn7y8/NTZGSkYmJiFBcXd16leEREhN5///0qTA8AAIDyokgHAAAw5K677tLs2bNlWZbi4+MVHx+vFStWlPvxbdu21f79+8u9//Lly9W/f//zD1oJhg0bpq+//rrU+sTERCUmJuqzzz7TZ599puHDhxtId2apqamaP3++Lr/88kop0lesWKEBAwZo5syZSkhI0LPPPqtDhw4pPj7+wsOext/fX5MmTVLPnj118cUXKyIiQsuWLdPVV19dar70tLQ0paWlae3atfryyy+1atUq+fj4SJK2bNmizz//XFu2bNGePXuUlpamjIwMeXh4ON+oCQwMVHR0tKKjozV06FCNHj26Up+Lu1u1apX69u1b7v2bNGmihISEcu07efJk59+Ru+66SwkJCeV+LAAAACofRToAAIAh/fr1k5fXr5djt9xyiyIiIly2FxYWKjs727kcGBgof39/53JxcXH1BL1ABw4ccCnR/fz8dN9998nPz09z5szR0aNH5XA49Oijj7pVkd6nTx9lZGS4rMvIyNDdd98ty7IkSU2bNtXUqVPLdbzY2FiNHj1arVq1Unh4uEaPHq3g4GCXfU6ePOn8s5eXl8LCws4793PPPVdq3TvvvONSol9yySUaPHiwtm3bpi+++EKS9Msvv2jOnDm66667JEkLFiw447EkqaioSNnZ2Tp58qQOHz4sSc7nVNvMnDnT+Rwl6ZFHHnH+3EpKSqrsvF27dnX+HbnmmmuUlpbmsr24uFiZmZnOZX9/fz5RAAAAUIUo0gEAAKpQQUGBXnnlFTkcDklSdHS0xowZI0m6++67dffdd0uSXnrppVKP/frrr3X99dc7lx977DG98sorzuU//OEP6tSpky666CKlp6dr6tSpWr58ubPk9fb2Vrdu3dS5c2fVr19fzZo1q7LnWRZfX1+X5fj4eN17773q0KGDHnnkESUmJjq3ORwOeXi47218wsLClJmZqeXLlzvXjRw5Ul26dHEuz507V7t27XIu33///YqNjVXr1q1dpukYMmRIqeM3b95cWVlZkn6d9ua3KXAu1O9/BkOGDNGDDz6owMBAbd682VkIx8TElHpsdHS0WrdurfDwcC1btszlzZ2aYu3atVq8eLFzefDgwerVq1e5Hjtv3jyXxw4ZMsQ5PUtISIjGjBmjvn37qm3btlq6dKnefvttl7/TkZGRuvjii9W6dWs1bty41PFfeeUV5zz2fn5++utf/yqbzaYhQ4Y4/4489thjpR63fft2l2librzxRn322Wflek4AAAA4fxTpAAAAVejjjz/WpEmTnMsTJkwo92N/P23LqVOnXJb/9a9/SZLeeustjR8/3lmGBgQE6IknntD999+v+vXrVzR6pWnUqJFuuOEGzZ8/X5K0e/dudezYUc2aNdOdd96p8ePHKyQkxHDK8hs+fLhLkf7VV185i/Ts7GyNGjXKWYzGxsbqmWeeKddxk5OTlZOT41z+/c/7QowZM0bz589XYWGhJOmJJ57Qs88+qyuuuEKPPPLIGaf8GT58uO6++241adJECxYs0J///GeXEr1Lly669dZb1bNnT8XFxSkyMrLS8la2Rx99VKtWrXIu33zzzeV6XGFhodavX++y7vRR6F27dtXbb7+t7OxsDR8+XN9++61zW/v27TVlyhRdffXV8vT0POPxly1bpr/+9a/O5Ztuukk2m61c2c71+gAAAIDK5b7DfQAAAGqBLVu2uCxHRUWV63Hr1q1zGX0uSQ0bNiy136effqpx48Y5y70mTZpo48aNevLJJyu1RLfb7S7Lv01J8xvLsnTy5Enn1++nRJk7d67efvttNW/e3Lnu4MGDmjx5sjp37uwydUZV5DuXQYMGqUOHDurQoYO6du1a6nin69mzp8vyjh07nH/et2+fs0SXpPr165drhH1mZqbuvfde5ycXpDP/vMuSm5vr8jM4feqf3r17a9u2bbr++uudc6AXFhbqv//9rwYMGKBnn3221PE6duyoJk2aaOrUqbr++ut1/PhxSb+OUF+wYIE2bdqkCRMmqF+/fmrWrFmpaWqq07l+/hX5d5iVlaWRI0cqNTXVuc7T01OtWrVy2c+yLN10000uJfqdd96pTZs26dprrz1riV7RXJK0d+9ePfHEEy7rzvfvCwAAAM4PI9IBAACq0O/nLH7uuecUEBCgO++8s9S2w4cP64cfftAnn3yiJUuWOKdokX6dpuXWW2912T8rK0tjx451OdfSpUvVunXrcmXbs2ePPvnkE+dyt27ddO21155x39PnYpakoKAgl+XPP/9cN954o3N53LhxeuONN5zLHh4eGjNmjMaMGaNffvlFU6dOdZ47ISFBDzzwgL766iuXYy5dulSrV692Lg8fPlwdO3asUL6yZGZmatmyZc7liy66qMzy8/dz2Z8+Evj3P9Nt27Zp5MiRevrpp9WiRQuXbVlZWVq/fr2+/PJLffjhh6XefLjzzjvL/Rwsy9LFF1+snTt3Svp1KpfExESXYrZly5b6/PPPlZ6ers8++0yTJ09WUlKSJOnZZ5/VVVddpYsvvtjluD/88IMeffRR53KjRo20cuXKapkmqDJ//oGBgS6j6a+55hr94x//UJ8+fVz2y83N1fr167VgwQLNnj271M/ktttuKzVv/ccff6wlS5Y4l//whz9o1qxZ5RpZ/vu/L//617/UoEED3X///QoPD3fZduLECf3000+aN2+eFixYUOoeCefz9wUAAADnjyIdAACgCl199dUu859nZmbqgQce0Pjx49WmTRv5+voqKytLSUlJpUq733h7e2vGjBlq06aNy/q5c+e6lLj3339/uUt0SZoyZYpmz57tXP7mm2/Ouu/u3btdluPi4lyWFy5c6LJ8+tzuv9ejRw/NmTNH27Zt0/bt2yVJS5YsUU5OjksBev/99ztHqvv7+2v8+PEVzleW34+Gb9KkSZn7/34KjdNHnLdo0UKtWrXS3r17nes++OADffDBB2ratKmio6OVl5en9PR0HT161OXNktMNGTJETz/9dLmfw8GDB50luiT16tXrrKOb69Wrp/vvv18RERHONz8sy9L8+fNLFekTJkxwGSX/4YcfVttc+5X587/mmms0Y8YM5/LatWvVt29fRUVFKT4+XkVFRcrIyNCRI0fO+mmE/v376+233y61fvr06S7L//jHP8o9PcugQYPk4+PjvBFsUVGRnnjiCT3zzDNq3bq1goKClJ2drdTUVJeR8aez2Wx64YUXNHDgwHKdEwAAABXD1C4AAABVqG/fvnruuedKTe9RWFioLVu2aN26ddq9e/cZS3RPT0/98Y9/1C+//KI77rij1PZNmza5LPfr1++8sm3evNlluUePHmfdd86cOWXu+/uS71zTyqxfv97lhoy/L5QzMjJcCu5WrVopNDT0jMdyOByaO3dumfnKcvq85JKcU5+czemjpCW5vHnh6empjz/++IzTbBw6dEhr1qzR1q1bdeTIkTOW6C1bttT777+vL7/88pw5Tnfy5EmX5d+Pmv+9oqKiUp8A+H2eI0eOaO3atc7lzp07u8ylnpaWpnvuuafUmyiVobJ//i+//LIuvfTSUo9NSUnRunXrtHnzZiUkJJyxRG/atKnefPNNfffdd2f8pMPp/w7r1at31lHzZ9K8eXO98847pW4GW1JSoh07dmjt2rXauXPnGUt0m82mfv36afny5Zo4cWK5zwkAAICKYUQ6AABAFXvqqac0ZMgQffDBB1qxYoWOHDmijIwMFRUVydPTU76+vgoJCXGOjm3Tpo169Oih/v37l1lI/34e6IKCgvPK9fvpS06cOFFq2oqioiK99tprLqNuPT09dcstt7jsd/rc55I0duxYvfTSS+rcubN8fX2VnZ2tgwcPau3atfrPf/6jb775xqW4HTZsmEtJ+ftsp06dUmFhYanCMS0tTePGjdPWrVud65o2barevXuX4zvwq9jYWJfln376Sfn5+fL39y+1b3Z2tl5//XWXdUOHDnVZ7t69u7Zv366PP/5YCxcu1J49e5SamqqCggJZliUfHx8FBgYqIiJCDRs2VKtWrdSlSxf16dPnvErY0zVt2lQ2m835PV20aJFef/113XjjjYqKilJJSYlSU1O1ZcsWLV++XJ9++qlzznPp1+/376cOOnLkiMty27ZtS30vZsyYoUaNGmnIkCEVyn02lf3zj4iI0MqVK/Xll19q3rx52rx5s/Pmrg6HQ15eXvL391f9+vXVoEEDtWzZUl26dFHfvn110UUXlZn19H+HJSUlstvtZU4N9Ht33323LrvsMn3wwQf69ttvlZCQoPT0dBUWFspms8nHx0chISGKjIxU48aN1bp1a3Xv3l39+/dnXnQAAIBqZLPO9nlSAAAAuLVZs2bp7rvvdi5ffvnl+u6778qcVsLhcOjEiRNq2LChHnjgAZeCPCoqSqNHj1aLFi1kt9u1ceNGffnll855tH8zefJkTZo0yWXdrl271Llz51LzNpfHFVdcoblz56pevXou69u1a6ddu3Y5lzt16qRbb71VDRo00KlTp7RmzRotWrTI5eaeXl5eWrx4sQYNGlTu89vtdsXFxenEiRPOdQMHDtS7777rfIPAsiytWLFCDz/8sMtI/u7du+uXX34536dcJUaMGKGPP/74vB8XEhKi6dOn67bbbnNZv2fPHpfphHr06KF169ZdcM7yqq6f/4Xq37+/Vq5c6VyeNWuWRo4cWeZjkpKSFBERIW9v76qOBwAAgEpCkQ4AAFBDZWdnq0WLFkpJSXGuGzlypF566SXFxMS47Juenq5Fixbptdde05133qmHHnpIR48e1SWXXKJjx46V63wBAQF6/vnnzzpX9eLFizVixIhSc4ifSVBQkP7whz/o3nvv1ZVXXnnGfZYsWaKhQ4c6548+l0aNGmnWrFkVmit6+vTpeuCBB1zWeXh4qF27dgoICNCBAweUlpbmst3Pz09r1qxR586dz/t8VSEvL0933HGHvvjii3Lt37ZtW91222269957FR0dXWq7ZVlq1KiRy8j1BQsWaNiwYWc9ZklJiRYuXFjmHPnlVZ0//5kzZ+qnn37S+++/f96PnTt3rssnNAIDAzV9+nTdcsstpYry3bt366OPPtKbb76pw4cPl/oECAAAANwXRToAAEANtnjxYg0ZMkQlJSXOdR4eHmrevLkiIyOdU3okJCQ4p/2YOnWqHnroIUnS8ePH9eKLL2ru3Lml5tmWfr3RaZcuXTR06FDdc889ZyxcT5edna2ZM2dq06ZNOnnypPLz8+VwOBQcHKzY2Fi1b99e3bp1U48ePco1GnfdunV6+eWXtXjxYuXn55faHhwcrF69eunGG2/UiBEj5Ofnd85jns2LL76oSZMmuXwvzyYqKkqffvqpBgwYUOHzVZWff/5Z8+fP15EjR5Sdna2ioiJ5e3srPDxczZs3V+fOndW7d281aNDgnMeaNm2a/vznPzuX/fz8NHHiRF1//fVq3ry5vL29lZmZqV27dmn58uWaOXOmQkJCSs2/X1HV9fO/6667NHv27LPe/PVczvRpgMDAQLVq1UqBgYHKyclRYmKiy5tM6enpFOkAAAA1CEU6AABADffTTz/pjjvu0KFDh865r7e3t+bPn3/GOa0TExOVkJCgnJwc+fr6KioqSq1atSo1L7UJdrtde/fu1YkTJ5SXl6eQkBDFxsaqefPmpW7keiGOHTumf//731q1apV27typ9PR0FRQUKDg4WA0bNlSbNm10+eWXa8SIEQoJCam087qz0aNH69///ne59+/cuXOlFem/qa6ff0U5HA49//zzevHFF1VYWHjO/ePj47Vz584zzsMPAAAA90SRDgAAUAvY7XYtWrRIX331ldavX69jx44pMzNTkhQaGqpWrVrpsssu06hRo9SiRYtqyZSQkKCmTZtq0qRJio+P1913363ly5erf//+1XJ+VJ73339fzz33nBITE8vcz9fXV88995wee+yxakrmXlJTU/Xhhx/qxx9/1NatW5WWlqacnBz5+fkpMjJSnTp10rXXXqvbbrtNAQEBpuMCAADgPFCkAwAAoEqkpaXpr3/9q4YMGaL69evr3//+tx577DG1bt3adDRUgN1u18qVK7V69Wrt3r1bGRkZys/PV2BgoBo1aqRu3bpp6NChioiIMB0VAAAAqHQU6QAAAAAAAAAAlMH8hIIAAAAAAAAAALgxinQAAAAAAAAAAMpAkQ4AAAAAAAAAQBko0gEAAAAAAAAAKANFOgAAAAAAAAAAZaBIBwA399FHH8lmsykhIcFYhsmTJ8vLy6tSjxkfH6977rmn3Pu3aNFCd911V6VmAAAAAOBqxYoVstlsWrVqVZWep3///ho0aFC59x80aJD69+9fdYEA4Bwo0gEAAAAAAAAAKANFOgAAAAAAAOq8/Px87d+/3/lfADgdRToAVKLMzEylpKSYjoFqcPjwYWVnZ5uOAQAAgDOw2+06duyYioqKTEdBNSopKdH+/ftVUlJSocevXbtWLVu2dP73bMf/rWiv6HkA1EwU6QBQCT755BO1bt1aYWFhuu+++0zHUXZ2tg4fPmw6Rq3Wr18/ff7556ZjAAAA1HiVOfo3NTVVt912m4KDg9WoUSPt3LmzUo6LmuHo0aNq2bKljh49WqHHt2/fXvPmzVNUVJRmzpx51uP/VrRX9DwAaqbKvXMcANRBH374oe6880716NFDL7/8snr27HnG/fLy8vTaa68pOjpao0ePrtJMn3/+uSZPnlyuG5Ta7XalpaWpoKBAwcHBCgkJkaenZ7nPlZWVpfT0dPn7+yskJER+fn4XkLz65efnKy0tTR4eHgoJCVFQUNA5H3P48GG9/PLLiomJUXZ2toKDg6shKQAAgDnZ2dk6deqUwsPDderUKTVp0qTSjr127VoNGDBAlmWdc9+SkhIlJSUpPDxcAQEBLtsKCgo0YMAAJSYmauTIkbrooosUHx9faTmry+HDh53f5/Dw8Cq71kxNTZVlWYqKijrvx/7+U7gVOUZlKykpUVZWlj744ANlZWWppKREXl7nV3tZlqV3331X3333nXx9feXj46PbbrvNuT0qKkrz5s1zKdwB1B2MSAeAcsjKytKpU6fOuO25557T4MGDtXbtWk2YMEH9+vU7434BAQFq1aqV7r33Xr311ltVGVcDBgzQ9OnTncsnTpzQd9995/LR1nfeeUddunSRn5+foqOj1aRJE4WHhyswMFA9evRQamrqWY+/Z88eDRw4UPXq1VNoaKji4+MVHR0tf39/NWvWTB999FGVPr/KMHToUMXFxSkgIEBxcXFq2LChgoODFRkZqfHjx5f52H79+ik/P18jR45kVDoAAKgTPv/8c+cn8s52vVtRv5WSZXE4HJo0aZIiIiIUFxensLAwPfjggy5Ta3zxxRfasWOHlixZounTp+u+++5TWFhYhTKVdf1/ITZv3qzJkycrKyvrrPuc/n2uimvNFStWqEOHDoqKilJ0dLS6deumAwcOnNcxJkyY4PLlDo4eParOnTsrLi5OnTt3rtBo8QkTJujnn3/W66+/rh49emjUqFE6fvy4c3tAQID++Mc/qri4WMOHDy/1Zg6A2o0iHQDO4amnnlJERITq16+vP/7xjzp58qTL9uPHj6tVq1ay2WwqLCzUwoULNXHiRM2aNavUsW644Qbdf//9evzxx6vkwvw3TZo00VVXXeVczs7O1hVXXKG5c+c61+3du1fNmzfXCy+8oD/96U/y9fWVJDVq1EjR0dFlHj81NVUeHh4aO3aspkyZoqZNm0qSs1T38fGpgmflatWqVfrb3/6m4uLic+6blpamyZMna9OmTc51iYmJuvHGGzV16lT17t1bkuTj46PmzZu7jEovKirS7NmztWvXLue66dOnO9+sGDBggMu57rjjDt10000X+vQAAACMWrdunT755BPn8unXPqcP2JCkX375RS1atNCqVatKHSclJeWc85RHRkbqhhtuKHOfzz77TH/72980cOBAffDBBxozZozefPNNl4y/FZ5t2rSRJO3bt0+vv/66Ro0apdzc3LKf8GnOdf1/ITZv3qxnn33WWaRX1rVmYWFhmQNhTt9v6NChys3N1bRp0/Tmm2/q+PHj55yecuHChVq+fLlz+c9//rPL1+neeusttWzZslzX6RciMTFRs2bNUnp6uqSyR4vb7Xa1a9dO//znP8s85vr163XVVVfpwQcf1Ouvv67CwkLNnz/fuX3Dhg1q2LChGjZsqMaNG5f6twCglrMAAGf14YcfWpKsMWPGWO+8844VGRlpXX/99S773HHHHZanp6fVtWtXKzg42JJkeXp6WpMmTTrjMY8ePWrZbDZr2rRp55Xh0KFDZe6Xmppq7d69+6zbO3bsaA0dOrTU+nfffdfy8PCwrrzySmvz5s1nfOykSZMsT0/PUuv3799vxcfHW7GxsdaHH35oFRUVlZnxdE2aNLFGjx5d7v2bN29ujRw50rk8cOBAq2/fvuV6bHZ2tiXJ+sc//uGyPj8/3xo0aJDl6+trPfvss1Z6enqpx86bN8+SZO3cubNc5xo6dKjVvn37cu0LAADgrtq3b2/ddNNN5dp306ZNliRr3rx5znV79+61unTpYkmyIiMjrR9++OGsj8/IyLD++te/WmvWrDnrPm+99ZYlyeU4y5Yts3bs2OFc3rp1qxUQEGDFxMRY7dq1syRZkqywsDArKyurXM+lPNf/Z/PRRx9ZkqyEhATnuhEjRliNGzd2Ls+cOdOSZB05csSyrMq51nzuuecsHx8fS5I1YsQIq7i4+KyP/+26+P7773fut3v3buubb75x7rN8+XJLkvXjjz9almVZSUlJloeHh/X222+XK+PUqVMtSVZqamqZ+/Xr188aOHBguY5pWb9e//fr18+5PHbsWCs2Ntay2+3lenxYWJg1duzYc54jNjbW+vHHH63nn3/ekmQ9+OCDLpmjoqKsf/3rX9btt99uSTqv32kA1GyMSAeAMixfvlwRERGaNm2a7r//fo0YMULfffedyz4vv/yyWrRooY0bN+riiy/WggULlJmZqcmTJ5/xmA0bNlRUVFS5b3z02wiec81bftddd2no0KFn3d66detSH2/88ccf9cADD2j8+PFavHixOnfuXK5MklRcXKxhw4YpICBAmzZt0ogRI+Tt7V3ux5+voqIil+/BsWPHFBcXV67HLl26VFLpuRv/8pe/aO3atfr+++/1zDPPnPGjv799zLVFixbnPM9vU+i0atWqXLkAAADc1YEDB8p1/SNJH3zwgSS5XAONGjVKhw4d0rRp0xQfH6/rrrtOhYWFZ3x8aGioZs+erffff/+s57jpppvUpk0bXXbZZbr44os1e/Zs9evXT+3atXPu07FjRz333HNKSkpSUlKSnn76ae3atUvp6enlnme8PNf/Z3P55ZdL+vUa+zdpaWnKzs52Lv/2PfjtvkIXeq25bNkyPf300xo6dKiee+45zZkzR6+99tpZjxEUFKRHHnlE7777rho2bKgJEyYoNDRUV1xxxVkfk5CQIIfDUa6Mdrtdc+bMUXh4uCIiIs65//n4/e8DBw4cUNOmTeXhce5qa+HChcrIyHD53v3www/67LPPXPZ7+umnlZGRob59++rFF1+Ur6+vy8j6DRs26NZbb9W9996rjz76SNOmTdOMGTO0evXqSniGANwdRToAnEF2drYGDhyo2bNnq6CgQPPnz9emTZu0YsUKl7I1JydHV1xxhVJSUvTll1/qu+++07BhwxQYGHjWY69bt06pqalq0KCBpF9vaHPLLbfo1VdfPeP+SUlJkqSQkJAyMx84cEAdOnQ46/bfpp453YQJE9S9e3e98sorZR77TP79739r586dmjt37jmngimPr776SldcccVZP5KanJzs8j1o27atli5dqm3btp31mKmpqXrjjTc0evRoxcXF6frrr3du27Vrl9577z299NJLuvTSS896jN9+YZg2bdpZ98nOztYnn3yivn37qri42G3miQQAAKioFi1a6IsvvnCZH/r3tm/frjFjxui1117TkCFD1KlTJ+e2zZs369JLL9UDDzygV199VWlpafr555/Peqz4+HgdO3ZM0q83jWzevLkeeeQR5/bIyEht3rxZ7777roKCgnT33XfrjjvucDnGzJkz9cgjj+iGG27Qvn379Le//c05zcu5lPf6PykpSd7e3nrjjTdKHSM2NlYNGzbUhx9+KOnXgSe//PKL0tPTtWbNGkm/3msoMDBQ9evXl3Th15qbN2+WJD366KN66qmnNGDAAC1atMi5feLEiWrcuLHL9Dr/+Mc/9OOPP+rqq6/We++9p44dO5b5c46Pj5enp6fef//9s74ZUlJSouXLl2vw4MH65Zdf9NRTT8lms531mGeyfv16DRo0SNu3bz/j9qSkJJffB1q0aKFNmzaV+ffq+PHj+vvf/64RI0YoLi5OI0eOdG4bO3asvvrqK5f9+/XrpwMHDmjx4sXauXOnLMtSeHi4c3tRUZHLDUw7duwoSTpy5Mh5PVcANdP53b4YAOqIp556St9//70uu+wyJSQkOOchDAgIcBkpM23aNO3YsUMrV67UZZdddtbjPfbYY/L09FRycrI+/fRThYSE6K677pIkZxl9tnkhv//+e0VFRSk0NLTMzA6HQ/7+/mfcVlJSolWrVqlv377OdceOHdOaNWv03nvvOUdx/HbRfe2115Z5LkmaP3++evXqVWZ5fz5mzZqlEydOKDIystS2VatWqaioyGUEyXPPPacBAwbooosu0uWXX64uXbooICBAGRkZSkhI0Pbt23Xw4EFZlqX+/ftrxowZLm9wfPHFF/L29nb+HM5m2LBhGjRokMaPH6/33ntP/fv3V2RkpHJzc3XixAlt2bJFu3fvVklJiVq0aKHFixfrkksuqZTvCQAAgCn/+Mc/NGzYMLVo0UJXXnmlWrduLW9vb6WlpWnv3r3avHmzTp48KS8vL91///2l5p7u16+fvv76a91+++3O67vfBoicSUFBgXOU9m/Xcf3793fZx9fXV/fdd5/uu+8+jRkzRu+8846mTZumevXqKT8/X4888ogGDRqkuXPnlmuU8unKe/3/8ccfOwfCnElQUJC++eYb3XzzzSooKFB2draaNGmiG2+8UTfffLPeffdd3Xnnnc79L/Ras2/fvvLw8NCIESN03XXXKS0tTXl5ec7tixcvVo8ePUrdw6hPnz7q06eP/vSnP+mSSy7RZ599poceeuiMzyk6OlpPP/20Jk+erB9++EGDBw9WXFyc7Ha7UlJStGPHDm3dulV5eXkKCwvTG2+8oXHjxp3X91+S5s6dq3Xr1ql9+/altiUmJurAgQO67rrrnOsmTJighQsXqk+fPrrsssvUrVs3BQcHKyMjQ4cPH9bmzZuVkJAgSRo4cKDef/995+9Uqamp2r59ux577LFS54qNjVVsbKzzd5CuXbs6t3Xr1k1vv/22iouLlZ+fr7lz5yokJKTM3wUB1B4U6QBwBitXrlSHDh20cuVKORwObdq0ScnJyerevbvL9CBr1qxR586dz3nhlJ2drQ8++EC+vr4aPHiwnn/+eeeI9IKCAkk648X+559/ru+//1733nvvOTO3aNFC69evl8PhKHWs6dOn68SJExo1apRz3eHDhyXJeaPQ384nla9IP3z4sHr27HnO/cqroKDgjN+D3NxcTZgwQV5eXrrmmmuc69u3b6+tW7fqrbfe0tdff6133nlH+fn5CgkJUcOGDdW9e3fde++9uuqqq1xGR52ePyoqSgEBAWXm8vT01OLFi/Xhhx/q448/1rx585Seni4/Pz9FRUWpXbt2Gjp0qAYOHKh+/fqd9y9tAAAA7mjw4MHavHmz3njjDX3//fdaunSpiouLFRYWpqZNm2ro0KHq2bOnrrnmGud17elmzpyphx9+WN9++61SUlIk6azXXZmZmdq5c6fzGvS30jczM/OM+2/ZskULFy5UgwYNnCOU9+7dq/T0dI0dO7ZC12Plvf7ftm2bGjVqVGrKwN+kpKSoR48eWrZsmUpKSvTKK6+oZ8+euv/++zVt2jQNHTpUf//73537X+i15sUXX6wPP/xQr776qvPmmF26dHFu9/HxOev3MScnR1OnTpX06zSQZZk0aZL69Omjd999V99//71SUlJks9kUERGhVq1a6Z577lHfvn111VVXlfnp3LIUFBTI29tbdrvdZdS33W7XQw89JIfDoWHDhjnXx8XFadOmTXr77be1cOFCzZgxQzk5OQoJCVGDBg3Us2dPPfDAA7rqqqtKDf5JTEyUJDVq1OiseaZMmaLw8HD94Q9/cK6bOXOmxowZo3/9618KDw/XjTfeqEcffVQxMTEVes4AahizU7QDgHtq0qSJy41szmbYsGFWz549L+hc+fn5VmxsrNWoUSNr7ty51s6dO62vvvrKuuWWWywPDw+refPmVnJy8jmPs3jxYstms1lXX3219cUXX1gbN260vvvuO2vcuHGWh4eHNWzYMJf9d+7caUmyZsyYUaHcF198sdWnT58KPfZMXn/9dUuSdc8991gbNmywNmzYYL366qtWkyZNznij0As1YcIEy8fHx8rLy6vU4wIAAMDV448/bkmyDh06dMbtY8eOtSRZGzdutCzLshwOh9WzZ08rLCzMmjx5srVw4UJr1qxZ1pNPPmn169fP8vT0tOrXr+9y49HNmzdbkqzFixdXKGN5r/8HDx5s9e7d+4zbfrtJ58KFCyuU4UIlJydboaGh1siRI53r3n77bUuSdfPNN1uffvqpNX/+fOvll1+2brvtNis8PNySZD322GNG8v7ef/7zH0uSNXToUGv16tXWli1brHfffddq3769JckaN25cpZ1r48aNliTrk08+OeP2F1980ZJkvfvuu5V2TgA1H0U6AJxBeS+kn376acvb29vatGnTGbfn5+dbJSUl5zzOunXrrBYtWliSnF+hoaHW2LFjrbS0tHLn/uSTT6zGjRu7HCcwMNB67LHHrMLCQpd97Xa7FRcXZ7Vv397Kyso64/EcDsdZz/Xkk09akqxvvvnmrPsUFxeXO3tJSYk1btw4y8vLyyV/9+7dy/3LSF5enrVv375y7fvtt99akqwnn3zyrPucT34AAACU9sUXX1g+Pj7WoEGDSm3Lz8+3xo8fb0my7rjjDpdtJ0+etG677TbL09PTeV3o5+dn9enTx3rllVdKXSNnZ2db/v7+1k033XTWa9icnJyz5izv9f/NN99stWjR4ozHbtu2rRUXF1fqurs6ZGZmWgMHDrQkWT/++KPLtrfeesuKiopyfh9tNpvVsmVLa8yYMdaGDRuqPWtZXnjhBSsgIMDl94E2bdpYM2fOrNTz5OTkWEFBQda1117rsj4jI8N68MEHLUnWfffdV6nnBFDz2SzLsqp61DsA1DTx8fGKj4/XihUrytwvJSVF7du3V35+vu655x4NGDBAUVFRSk5O1rp16/T+++9r7969LjcoOhuHw6EtW7bo6NGjatCggTp16iRvb+/zzm63253HiYqKUqdOnc76Mdr58+frpptuUvPmzfXggw/q4osvVnBwsBITE7Vy5Upt2LBB33zzzRkfe+rUKXXt2lVJSUm65557dPXVV6tRo0bKyMjQ5s2b9d577+nDDz90+WhpeaSkpGjbtm0qKSlRp06dFBsbW+7HrlixQgMGDFB5/9c2ZMgQLVq0SEOGDNFtt92mli1bym63a/fu3ZozZ46uuuoqPfjgg+eVHwAAoK5yOBzat2+fsrKynDds/Oijj5zX1XFxcdqyZYuOHz+un376SbNnz9bRo0d1++236/3333fOkX665ORkrVmzRq1bt5bdbj/j/Nm/eeaZZ/Tcc8+pZ8+euuuuu9SmTRt5eHho7969+uyzz9S+fXvnVCa/V97r/9mzZ+uuu+7S/fffrxtvvFExMTHatWuXJk+erIMHD+qbb75Rnz59zuv7VhGpqalKTk5WcnKyNm7cqHfffVcHDhzQ888/ryeffLLU/g6HQ8uWLVN4eLi8vb3VpEmTc96DyZSMjAxt2bJFubm5ateuneLj46vkPJMmTdLf/vY3DRkyRG3bttXBgwf13XffKSMjQ48++qhefvnl875hKoBaznCRDwBuqbwjUizLsvbu3WsNGzbM8vb2dhk54enpad18881GRqScj0WLFlkdOnRwyS7J8vX1tZ544okyH3vs2DHrpptuKjWKXJLVp08fKykpqZqexa9SUlKsefPmlXv/wsJC669//asVEhJSKn+zZs1KjeYBAADA2aWnp7tcT4WHh1sPPfSQderUKec+p19rDh061Pr+++/LPOZv06X89t9zeeONN0p9QlOSFR8fb/33v/896+PKe/3vcDisBx98sNS1f6dOnar12vEvf/mLywjzXr16WV9//XWZj2nSpIk1c+ZM53/rOrvdbj3//PNWbGys5ePjYzVu3NgaMWKEtWbNGtPRALgpRqQDQCXJz8/Xrl27lJGRodDQUDVv3rxcI9HdxZEjR7Rv3z7l5OQoKipKbdq0KXf+3Nxcbd26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np4uj7nvvvu0adMm9evXT2PHjtWkSZPk5+fnss/UqVMVGxvrXP6tvD+9xC8oKFBOTo6Kiooq++m6+Nvhz7Q+50CVngMAztea7L16MfFzPdPkJtNRAAAAAAA4K0ako0558skndfLkyVLro6OjZVmW0tLSJEk5OTm644479MYbb+ihhx4qVaJLksPh0IgRI/TQQw9pypQppUp0SSouLlZ+/tmnLSguLtaECRNkWZb69u17Ac+sbO+f+E4L036psuMDwIX4/OQazU5abjoGAAAAAABnxYh01CmZmZmKjo4utX7//v3y9PRURESEpF+nYPHy8tLdd98tSTp69KgkqVGjRs7HrF27Vvv379eECRPOer5Ro0bp+uuvV0FBgYYNG6bo6GhlZWXpwIED2rBhg5YuXarCwkJ99tlnioqKqsyn6rT01Ga9dXxxlRwbACrLa8f+q0a+ERpYr9O5dwYAAAAAoJoxIh11SnR0tE6cOFFq/Zw5czR48GB5e3tLkk6cOKGGDRvKZrNJkt5//329//77Lo85ceKEwsLCFBQUdNbzDRkyRN9++60yMzM1ZswY9e/fX7fddpvef/992e12Pffcc0pISNA111xTic/yf7bmJOjphDmyZFXJ8QGgsjhk6YmEOdqRe8R0FAAAAAAASmFEOuqU22+/XZMmTVJsbKwuuugi5efn61//+pcWLFigVatWOfdr1aqVduzYodTUVEVGRmry5MmljtWqVSulpKRox44dat++/VnPOWDAAA0YMKAqnk6ZUouz9NCBmSq0Sqr93ABQEQWOIv3lwAzNbfuIIryDTccBAAAAAMCJEemoU1588UVdeeWVuvLKK1WvXj01aNBAixcv1pIlS9SlSxfnfldeeaWaN2+ugQMHatGiRTp58qRyc3O1a9cu/fOf/9TJkyfVoUMHXX311br66qv1ySefKCkpSXl5edq1a5emTJmirVu3Gnuedsuhxw9+qLSSbGMZAKAiUouz9MShj+WwHKajAAAAAADgRJGOOsXb21tvvvmm0tPTtXXrVh07dkxr1qxRnz59XPbz8vLSkiVL1LZtW914442KjIxUUFCQ2rVrp//85z/OKWA++eQTXXnllbrvvvsUGxurwMBAtWvXTnPnzlVwsLnRlO+cWKr1OQeMnR8ALsSa7L16P2mZ6RgAAAAAADjZLMti8mSgDEVFRUpISFBh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W56jY8eOioyM1H333ae6detqxowZatq0qSpWrGjfpkqVKnr//fcVFRWlqKgoDRkyRHv37tWlS5fk4+OTqeciSTVr1pSkW96odO/evapSpYqWL19uX5acnKx27drJy8tLW7du1TPPPCMXF5fbnuv8+fOKjY29o5+11WpVeHh4prbPrKSkpDTzVh46dEhFihSRr6/vbffdvn27duzYkea/f0Zee+01jR49Wk8//bR27typ/v3767nnntPbb7+t+Ph47d+//5b7njp1SsWLF8/Uc/nll18kKc08hnPmzNHq1avtj61Wq959912tXLlSNWvWtK9jVAkAAPmLh4eHJk+eLIvFoh07dujZZ5/VmjVrFB8ff8u50h31gh4eHoqMjMzyG9pf/wTn9X7MZrOpSpUq+uCDDzLcPjAwUIUKFdLJkycl5UxP6e3trRdffNHe3w8bNkwhISF65JFH0my3evVq9e7dWwMGDNDSpUvto5azw80/txutWrVKbdq00csvv6whQ4aoevXqafr3jOSlfnXv3r26evWqBg0apBdffFGrV69Wx44d1a9fv1u+7sqMpKSkNPOHX7x4UcuXL1dcXJykf6eTeeSRR1SoUCH7Nps2bZKkO7qebn79kZFTp06pUKFCmbrv1KlTp7Rr1650c5l/++23Gj58uMaMGaNZs2apTJky6fY9evSobDZbpv7/SU1N1ezZsxUYGJhuVDuAe0OQDiDPKlu2rH744Qf7dCkZ2bVrl3r16qXPP/9cbdq0UdWqVe3rtm3bpoYNG6p379767LPPdOHCBa1bt+6WxypVqpROnTol6d8bipYpU0avvPKKfX3hwoW1bds2TZo0Sd7e3urataueffbZNMeYNm2aXnnlFT3xxBM6cOCA3nvvPfvHeO/ETz/9JEm3vHnO9RcDN76Amjp1qnbv3q05c+bc0cdWCxUqJD8/P82aNUsxMTEZbmOz2bRx40Z17NhRCxYsUO/eve+4aTt58qQefPBBrVixIsP1UVFRaULzsmXL6syZM/rhhx9uecwLFy7oyy+/1EMPPSRfX1+H0+GsXLlSn376qXr37q1vvvnGfqPSv//+W4MHD5arq6vDFx4VKlTQ3Llzdfz48Vtuc+LECb333nt68803Vbt2bfu8h+fOndPTTz+d7iOhr732mvbs2aNly5Zp5syZkv59UQoAAPKPHTt2qHXr1ipVqpS2b9+uqVOnqlGjRg4DPEe94NGjR7V79+47vsmiYRjq1KmTPvvsswzXR0VFSZK9Hzt37pxiY2NVuXLlWx7TYrHYA9Ps6Cnff/99RUREKCEhwb7siy++0NKlS1WvXj198sknqlKlSrp5z1977TXVrl1bH3/88S2PfSdeeumlW85RffPPTfr3v3n58uV1+PBhHTp0SMuXL9fvv/+u/fv3O7x/Ul7rV6+/iWC1WiVJTk5OqlSpkmJjY295DUjS1atX9cgjj+ibb77JcP3NrwtWrFihBx98ULt3785w+w0bNqhHjx7y9vbW/fffb1++ZMkSPfjgg7ecFz86Ovq2g3YqVKig06dP37JW6d95/H/44Qc1b95cNptNvXv3tq9LTU3VoEGD9OSTTzp8rVKqVCk5Oztr8uTJt3wTIiUlRatWrVLLli21adMmvf3221k+lQ1Q0FnNLgAA7tann36qdu3aqWzZsnr44YdVvnx5ubi46MKFC9q/f7+2bdum8+fPy2q16oUXXtCoUaPS7N+0aVP9/PPP6ty5swoXLizpf41uRq5du2YfabBr1y4dPnw4TSMmSW5uburZs6d69uypXr16aeLEiRo/frwCAgKUkJCgV155RS1atNCcOXNuexf2m7Vr106VK1fW1q1b7XMiNmjQIMNtrzdMxg03+vn+++/VsGFD+4udY8eOaebMmXr77bcdntfZ2VmjR49Wjx49VKpUKT388MMqXbq0LBaLzp8/r71792r79u2KiYmRh4eH/WZPd+rHH3/U8uXL08wpf93Vq1f1119/6eGHH7Yv69mzp77++mt16NBBderUUcOGDeXv76+4uDidPHlS27Zt04EDB2QYhmrVqqXJkyenGYHy0Ucf6dKlS5KkS5cuKTY2Vp6envL09NQrr7yiixcvavPmzdq5c6dcXV01adIk+3WSkc8++0yPPvqoypUrp5YtW6pixYpydXXVxYsXdfjwYe3atUvHjx+XxWLR448/rokTJ9qvgT/++EM2m03NmzdPd9wKFSqoQoUKGj58uJycnFS9evU7/tkCAIDc6/XXX5enp6dWrlzpsNdw1At+9NFHOnfunK5evarZs2crKSlJvXr1uqM69uzZozlz5tzyvkArV65UkSJF5OfnJ+nf0FuSPczN6Hjnzp2zfzozO3rKhQsXqlKlSulqePjhh/Xwww9r3bp1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adK2bdtkxIgRApbdyK6s+a233pp07do1adq0aVJQUJD86Ec/St5///1qrpwdsb3fyWVlZcmVV16Z5OXlJTk5Ocnxxx+fLFmypNw+9t9//2TUqFHlxtLeu5E9VbHeFe0vIrwfqyGq6jX+7wTp1atekvh8FwAAAAAAbItrpAMAAAAAQApBOgAAAAAApBCkAwAAAABACkE6AAAAAACkEKQDAAAAAEAKQToAAAAAAKQQpAMAAAAAQApBOgAAAAAApBCkA9RR9erVixdeeGG78zp06BC/+93vKuWYxx57bFx33XXbnTd79uxo2LBhpRwTAABqih3trXe0b64M1XksgN2ZIB2AOmPz5s2RJEls3rw526UAAAAAuxFBOkAtsSUgLisri7KysmyXUyN17tw55syZE507d852KQAAUGN973vfi1atWsXq1auzXQpAjSFIB6gl5syZE8cff3xcc801cc0112S7nBrpySefjF69esWTTz6Z7VIAAKiB/vjHP8YxxxwTubm58fjjj2e7nK0kSVLlJ81s3rw51q5dG1OmTInGjRtX6bEAdicuQAtQS/Tq1SvuvvvuaNGiRbUds6ysLOrVqxdlZWXRoEGDajvurjr00EPL/RcAALZYsGBBDBgwIM4+++wYOXJkHHXUUdkuaSv3339/zJ49OyZOnLjduUmSRJIkEfHF9yPVq1dvh45Rr169+Oyzz+KRRx6J9u3bxyGHHPJVSgaoNZyRDpAFEyZMiH322ScWL168Q/OHDBkSBx10UOyxxx7RoEGDyM3Nje7du8dDDz2UmdOiRYs4+OCDo02bNtGmTZsqqry8M888M+6///7o3LlzLF++vFqO+VWMHj06WrZsGfvvv/8O/9kDAFA3PPDAA3HSSSfFbbfdFieddFLstdde8a9//avcnFdeeSX23XffmDBhQrnxZcuWRadOnWL06NFVWuPAgQPj6quvjogvgvLbbrst3n333Qrn3n///XHmmWdmevYdVVpaGoMHD47zzjsvOnXqFBdddFHss88+kZOTE6ecckrmci9vv/12DBgwINq1axeNGzeORo0aRatWraJPnz7x5ptvfuXnClDTCNIBsuCMM86Is88+O4YOHbpD81u2bBlXXnllDB06NBo1ahSdOnWKvn37Rn5+fmbO9OnTY6+99op99tknzjvvvFizZk2l111cXByXXXZZrF+/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vPPO+Mtf/hIdOnSIu+66K3PiyKOPPhpTpkyJgoKCGDVqVJx77rk7dMwlS5ZEXl5e7LvvvuXGf//738fKlSujT58+ERGZoLy4uLjc9xJt3LgxHn300fif//mfiPjiZJw//vGPcf3118d9990XS5cujc2bN8e+++4bXbp0ia9//etx/fXXp14fvaysLJIkifXr10fz5s0z4+vXr49nn302mjRpUq7nXrFiRbRr1y5zv7CwsNwJQQC1Sb3E33AANcqMGTNi0KBBcffdd2e+jPTiiy+OP//5zzFv3rzMtRIr+5gnn3xyPPDAA/Htb387Pvjggxg/fnzcdNNNcdNNN8Xw4cMr/Zhf1ebNm6NBgwbb3N6tW7c4/fTT4+KLLy43fvvtt8dFF10Uc+fOjcMOO6yqywQAYDewfPny6NixY7zxxhvlTmCpSm+88UZ069YtbrnlljjttNPik08+iUmTJsWYMWPinHPOiV/96leZuUcccUS0bt06fvnLX0bnzp3jgw8+iJ///Ofx5ptvxrx588p9UvWr2PKJ2fXr10e/fv0iSZJ45513Yu7cudGyZcu49957M/+AEBFx+OGHR9++feP666+vlOMD1GSukQ6QZZ9//nn885//jBkzZsR//ud/xoABA+Kss87KhOgREcOHD4/XXnstvv/978fcuXNjzZo1sXr16pg/f378+te//so1fOtb34pLL700hg4dGi1atIhDDjkkZs2aFVOnTq2RIfry5cujc+fOqXO+8Y1vxD333BMrVqyIzz77LBYsWBCnnnpqXHrppfHQQw8J0QEAyOjQoUP069cvBgwYEL/73e9i2bJlUVxcHLNnz44zzjgj3n///Uo/ZteuXeP222+PK664Ivbcc8/o2LFjPPDAA3HjjTeWC9EjIh577LEoKyuLnj17RosWLaJr167RoEGDmDFjRqWF6BFffI/Tiy++GOecc07861//ik8++SR69+4dDz/8cPzzn/8sF6JHRPzsZz+LX//615lQf/369VFSUhIzZswo931FALWBM9IBsuzmm2+OCy+8MJo1axaDBg2Ks88+O44++uit5s2bNy8uuuiimDdvXubLPhs2bBhnnXVW3HHHHZVSy7p162L58uXRqlWryM/Pr5R9VoWNGzfGkiVLyl3+5stWrlwZJ510UixYsCAiIurVqxd9+/aNG2+8Mbp3715dpQIAsJtYvXp1jBw5MqZOnRqrVq2KiC96yG9961sxderUSg2s/92GDRti2bJl0bx583KXSanIypUrY8WKFdG+ffvIzc2tknp21v333x/XXXddvPPOO5mx3NzcuPHGG+PMM8/MYmUAlUuQDpBlH3/8cWzatCny8vJ26LIta9asiffffz/q1asX7du3j2bNmlVDlbunJEnib3/7W2zYsCEOOOAAXy4KAMB2JUkSxcXFsWHDhmjTpo3v1dlBJSUlUVJSkvkHgUaNGmW7JIBKJUgHAAAAAIAUrpEOAAAAAAApBOkAAAAAAJBCkA4AAAAAACkE6QAAAAAAkEKQDgAAAAAAKQTpAAAAAACQQpAOAAAAAAAp/j9KCZSqXcOXEAAAAABJRU5ErkJggg==\n"},"metadata":{}},{"output_type":"stream","name":"stdout","text":["✅ تم حفظ جميع النتائج والتقارير!\n"]}]},{"cell_type":"code","source":["quick_search(\"غيث\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Z4htFutQPESt","executionInfo":{"status":"ok","timestamp":1748727670799,"user_tz":-180,"elapsed":1151,"user":{"displayName":"Allaa Sabboukh","userId":"15783130365351138779"}},"outputId":"270861d3-a93c-46f5-e91b-fcd5db305d20"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["🔍 البحث عن: 'غيث'\n","============================================================\n","❌ لم يتم العثور على منتجات مطابقة\n","\n"]}]},{"cell_type":"code","source":["quick_search(\"فريق\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"LYKLQTaJPPDO","executionInfo":{"status":"ok","timestamp":1748766998757,"user_tz":-180,"elapsed":897,"user":{"displayName":"Allaa Sabboukh","userId":"15783130365351138779"}},"outputId":"283715d8-77a2-4966-dcdb-42796f903c06"},"execution_count":9,"outputs":[{"output_type":"stream","name":"stdout","text":["🔍 البحث عن: 'فريق'\n","============================================================\n","✅ تم العثور على 2 منتج(ات):\n","\n"," 1. المنتج: فريق المحاسبين\n","     التصنيف: مصروفات عمومية - استشارات محاسبية\n","     التطابق: 1.00\n","     الثقة: 🟢 1.000\n","----------------------------------------\n"," 2. المنتج: فارمَرز أورجنز - كبسولات قهوة أفريقيا، أنبوب من 10 كبسولات،\n","     التصنيف: تكاليف مباشرة - تكلفة بضاعة مباعة\n","     التطابق: 0.00\n","     الثقة: 🔴 0.371\n","----------------------------------------\n","\n"]}]},{"cell_type":"code","source":[],"metadata":{"id":"-wZ8Dao1SL55"},"execution_count":null,"outputs":[]}]}