Pixahunt Master Database Architecture & Anti-Table-Duplication Guidelines (ডাটাবেজ টেবিল কম ব্যবহারের নিয়মাবলী)
# Pixahunt Master Database Architecture & Anti-Table-Duplication Guidelines
## (ডাটাবেজ টেবিল কম ব্যবহারের নিয়মাবলী ও সেন্ট্রাল ইনভেন্টরি)
> [!IMPORTANT]
> **গোল্ডেন রুল (Golden Rule):** ওয়েবসাইটে নতুন কোনো ফিচার তৈরি করার সময় কখনোই অপ্রয়োজনীয় নতুন টেবিল বানাবেন না। পিক্সাহান্টে ইতিমধ্যেই একটি অপ্টিমাইজড সেন্ট্রাল ডাটাবেজ আর্কিটেকচার রয়েছে যা রিইউজ (Reuse) এবং পলিমরফিক ফিল্ডের মাধ্যমে যেকোনো ফিচার সাপোর্ট করতে সক্ষম।
---
### ১. পিসি বিল্ড ও পাওয়ার ক্যালকুলেটর: `gadget_saas_user_pc`
- **টেবিলের উদ্দেশ্য:** ব্যবহারকারী বা AI কর্তৃক সংরক্ষিত সকল পিসি কনফিগারেশন, পাওয়ার ক্যালকুলেশন এবং বিল্ড হিস্ট্রি এখানে সংরক্ষিত হয়।
- **কখনোই করবেন না:** `psu_calculations` বা `user_pc_builds` নামে আলাদা টেবিল তৈরি করবেন না!
- **মূল ফিল্ডসমূহ:**
- `id`: Primary Auto-increment Key
- `uuid`: পাবলিক শেয়ারযোগ্য ইউনিক লিঙ্ক আইডেন্টিফায়ার (`/gadget/pc-builder?build={uuid}` অথবা `/gadget/power-supply-calculator?calc={uuid}`)
- `user_id`: রেজিস্টার্ড ইউজারের আইডি (গেস্ট হলে null)
- `ip_address`: ইউজারের আইপি অ্যাড্রেস
- `title`: বিল্ডের শিরোনাম (যেমন: `Intel Core i7 + RTX 4070 Super Gaming Build`)
- `build_type`: `'psu_calculator'` অথবা `'pc_builder'` (একই টেবিলে উভয় টুলের ডেটা পৃথক করার জন্য)
- `components`: JSON ফিল্ড — সকল হার্ডওয়্যার কম্পোনেন্টের তালিকা (CPU, GPU, RAM, Mobo, Storage, Cooler, ইত্যাদি)
- `power_specs`: JSON ফিল্ড — পিক ওয়াটেজ, রেকমেন্ডেড ওয়াটেজ, ATX 3.0 ফ্ল্যাগ, ট্রানজিয়েন্ট পিক লোড
- `total_price`: সর্বমোট আনুমানিক মূল্য
- `currency`: কারেন্সি কোড (ডিফল্ট: `'BDT'`)
- `is_public`: বুলিয়ান (true = পাবলিক শেয়ার লিঙ্ক সক্রিয়)
- `saved_by`: `'user'` (ইউজার সেভ করেছে) অথবা `'ai'` (টেকনিশিয়ান পরামর্শের পূর্বে অটো-সেভ হয়েছে)
- `ai_consulted`: বুলিয়ান (টেকনিশিয়ানের মতামত চাওয়া হয়েছে কিনা)
- `ai_feedback`: টেকনিশিয়ান ইঞ্জিনিয়ারের দেওয়া বিস্তারিত ফিডব্যাক ও পরামর্শ
- `ai_meta`: JSON ফিল্ড — ইউজারের মূল প্রশ্ন, শিফট ইঞ্জিনিয়ারের নাম ও টাইমস্ট্যাম্প
- `status`: `'draft'` অথবা `'published'`
---
### ২. কম্পিউটার হার্ডওয়্যার ক্যাটালগ: `gadget_products`
- **টেবিলের উদ্দেশ্য:** ওয়েবসাইটের সকল কম্পিউটার হার্ডওয়্যার কম্পোনেন্ট সেন্ট্রাল `gadget_products` টেবিলে থাকে।
- **কখনোই করবেন না:** প্রসেসরের জন্য `processors`, গ্রাফিক্স কার্ডের জন্য `graphics_cards`, বা মাদারবোর্ডের জন্য নতুন টেবিল তৈরি করবেন না!
- **ক্যাটাগরি আইডি ম্যাপিং (Category ID Mapping):**
- `category_id = 7`: প্রসেসর (CPUs - Intel & AMD)
- `category_id = 8`: গ্রাফিক্স কার্ড (GPUs - NVIDIA RTX, AMD Radeon, Intel Arc)
- `category_id = 9`: মাদারবোর্ড (Motherboards - LGA1700, AM5, ইত্যাদি)
- `category_id = 10`: র্যাম (RAM / Memory - DDR4, DDR5)
- `category_id = 11`: স্টোরেজ (Storage - M.2 NVMe, 2.5" SATA, 3.5" HDD)
- `category_id = 12`: পাওয়ার সাপ্লাই (PSUs - 80 PLUS Bronze, Gold, Platinum, ATX 3.0)
- `category_id = 13`: কুলার (Coolers - AIO Liquid Cooler, Air Tower Cooler)
- `category_id = 14`: কেসিং (PC Casings - Mid-Tower, Mini-ITX, Full Tower)
- `category_id = 15`: কেসিং ফ্যান ও আরজিবি (Fans & Lighting)
- **ব্র্যান্ড টেবিল:** `gadget_brands` (Intel, AMD, NVIDIA, Corsair, Asus, MSI, Gigabyte ইত্যাদি)।
---
### ৩. AI হার্ডওয়্যার টেকনিশিয়ান এজেন্ট: `users` টেবিল
- **টেবিলের উদ্দেশ্য:** টেকনিশিয়ান এজেন্ট আলাদা কোনো বট বা অবাস্তব সিস্টেমে নয়, মূল `users` টেবিলে একজন স্বাভাবিক সদস্য হিসেবে সংরক্ষিত।
- **কখনোই করবেন না:** `ai_agents` বা `technicians` নামে আলাদা কোনো টেবিল বানাবেন না!
- **ইউজার ম্যাপিং:**
- `id`: `9683`
- `username`: `'pixahunt_technician'`
- `is_ai`: `true`
- `ai_role`: `'technician'`
- `staff`: `0` (সাধারণ ইউজার হিসেবে রাখা হয়েছে যাতে এডমিন সহজে লগইন করে মেসেজ চেক করতে পারে)
- **শিফট সিস্টেম:** ২৪/৭ ল্যাব কভারেজের জন্য ৩টি রোটেটিং শিফট পারসোনা (মর্নিং: আরিফুল ইসলাম, ইভনিং: তানভীর আহমেদ, নাইট: ফাহিম চৌধুরী)।
- **মেসেঞ্জার স্টোরেজ:** `conversations` এবং `messages` টেবিল সরাসরি রিইউজ হয়।
---
### ৪. ইউনিভার্সাল কমিউনিটি ডিসকাশন: `discussions`, `discussion_categories`, `discussion_comments`
- **টেবিলের উদ্দেশ্য:** ওয়েবসাইটের যেকোনো পেজ (গ্যাজেট রিভিউ, ব্লগ, এসভিজি, টুলস, পিসি বিল্ড) পলিমরফিক ফিল্ডের মাধ্যমে সরাসরি ডিসকাশন ইঞ্জিনে সংযুক্ত।
- **কখনোই করবেন না:** প্রতি পেজের জন্য আলাদা আলাদা কমেন্ট টেবিল তৈরি করবেন না!
- **পলিমরফিক ফিল্ডসমূহ:**
- `entity_type`: `'gadget'`, `'tool'`, `'svg'`, `'blog'`, `'pc_builder'`, ইত্যাদি
- `entity_id`: সংশ্লিষ্ট এনটিটির প্রাইমারি আইডি
- `entity_name`: এনটিটির ডিসপ্লে টাইটেল
- `entity_url`: এনটিটির ওয়েব লিঙ্ক (ক্লিক করলে মূল পেজে চলে যায়)
- **সোশ্যাল ফ্রেন্ড-গেটেড মেনশন:** `user_friends` টেবিলে `status = 'accepted'` থাকা বন্ধুদের কেবল `@username` দিয়ে মেনশন করা যায়। তবে যেকোনো ইউজার যেকোনো সময় `@pixahunt_technician` মেনশন করে এক্সপার্ট অ্যাডভাইস চাইতে পারে।
- **নোটিফিকেশন:** `user_notifications` টেবিল রিইউজ করে মেনশন ও রিপ্লাই পাঠানো হয়।
---
### ৫. ইউজার ড্যাশবোর্ড, ডেভেলপার সাবস্ক্রিপশন ও ইনভয়েস
- **ইউজার এপিআই কি:** `user_api_keys` (`id, user_id, name, api_service, domain, api_key, status`)
- **ডেভেলপার সাবস্ক্রিপশন প্ল্যান:** `developer_subscriptions` (`id, name, price, annual_price, max_domains, max_requests_per_day, features`)
- **ইউজার সাবস্ক্রিপশন স্ট্যাটাস:** `user_developer_subscriptions` (`id, user_id, subscription_id, domains, status, expires_at`)
- **ইনভয়েস বিল্ডার:** `user_invoices` (`id, user_id, invoice_number, client_name, company_name, items (JSON), design_settings (JSON), subtotal, total`)
---
### ৬. এক্সটার্নাল ক্লাউড এপিআই ডিকাপলিং: `cloud_apis`
- **টেবিলের উদ্দেশ্য:** সার্ভারের `.env` ফাইলের উপর নির্ভরশীলতা দূর করে ডাটাবেজের মাধ্যমে এআই কি ম্যানেজমেন্ট।
- **সার্ভিস কি-সমূহ:**
- `chat_user`: লাইভ চ্যাট, মেসেঞ্জার ও ডিসকাশনের জন্য ডেডিকেটেড কি (OpenAI / Gemini সুইচেবল)
- `gemini`: কনটেন্ট ক্রিয়েশন ও সামারির জন্য
- `gemini_brand`: গ্যাজেট সিইও ও ব্রাঞ্চ জেনারেশনের জন্য
---
### ৭. ক্যানোনিকাল রুট গাইডলাইন
- **পাওয়ার সাপ্লাই ক্যালকুলেটর:** `/gadget/power-supply-calculator` (পূর্বে ছিল `/tools/power-supply-calculator`, যা এখন ৩০১ রিডাইরেক্ট করে)
- **পিসি বিল্ডার:** `/gadget/pc-builder` (পূর্বে ছিল `/tools/pc-builder`, যা এখন ৩০১ রিডাইরেক্ট করে)