P Pitchbar مستندات

معماری

مدل داده

خلاصه‌ای از ساختار پایگاه داده Postgres. هر جدولی که داده‌های فضای کاری را نگهداری می‌کند دارای یک ستون workspace_id است (به‌صورت مستقیم یا غیرمستقیم از طریق agent_id) و مدل مربوطه از BelongsToWorkspace یا BelongsToAgent استفاده می‌کند.

هویت

جدولتوضیحات
usersایمیل + رمز عبور (bcrypt). فیلدهای احراز هویت دو مرحله‌ای. role: customer یا super_admin (enum PlatformRole). default_workspace_id برای قفل کردن انتخابگر.
workspacesنام + شناسه‌های مشتری/اشتراک Stripe + plan_id. لغوهای سبک app_settings در ستون JSON settings ذخیره می‌شوند.
workspace_usersجدول اتصال. (user_id, workspace_id, role) که نقش می‌تواند owner/admin/member باشد.
invitationsایمیل + نقش + توکن + انقضای ۷ روزه. به یک فضای کاری تعلق دارد.

دستیاران فروش و تنظیمات آنها

جدولتوضیحات
agentsشخصیت، ظاهر، system_prompt، محافظ‌ها، پیام‌های شروع، دامنه‌های مجاز، آستانه اطمینان، language_default، auto_index_visited_pages، is_published، published_version_id.
agent_versionsتصاویر غیرقابل تغییری که در هر انتشار ایجاد می‌شوند. زمان اجرا از اینها می‌خواند، نه از ردیف دستیار فروش.
behavior_rules(agent_id, kind, conditions JSON, action JSON, enabled, priority).
cta_rulesقوانین رفتار تخصصی برای فراخوان‌های قابل کلیک.
curated_answers(agent_id, triggers[], answer_md, citation_url).
experimentsپیکربندی‌های A/B روی قوانین رفتار.

دانش

جدولتوضیحات
sources(agent_id, type, status, config JSON, credentials_encrypted TEXT AES-256-GCM, last_synced_at, error). type: url / sitemap / feed / text / notion / google_doc / google_sheet / sql / file / woocommerce_products / auto. credentials_encrypted اطلاعات میزبان/پورت/پایگاه‌داده/کاربر/رمز عبور را برای منابع SQL از طریق تبدیل encrypted:array لاراول ذخیره می‌کند — سایر نوع‌ها آن را تهی می‌گذارند.
documents(source_id, url, title, content, lang). یک ردیف به ازای هر صفحه خزش‌شده یا متن چسبانده‌شده.
chunks(document_id, idx, content, token_count). واحدی که به بردار تبدیل می‌شود.
integration_connections(workspace_id, provider, encrypted_token, scope). نوتین، گوگل درایو، اسلک.

داده‌های عددی حاصل از تکه‌ها فقط در ذخیره‌ساز جستجوی هوشمند (Vectorize / Qdrant) ذخیره می‌شوند — جدول chunks در Postgres متن + فراداده را نگهداری می‌کند، نه داده‌های عددی را. فراداده به‌عنوان برچسب روی داده‌های عددی ذخیره می‌شود تا بازیابی بتواند با agent_id فیلتر کند.

مکالمات و پیام‌ها

جدولتوضیحات
visitors(agent_id, anonymous_id, ip_hash, ua, first_seen_at, last_seen_at, visit_count). anon_id بارگذاری‌های مجدد ویجت را به همان ردیف متصل می‌کند.
conversations(agent_id, visitor_id, page_url, started_at, lang, claimed_by_user_id, claimed_at, cleared_at, is_playground).
messages(conversation_id, role, content, citations JSON, latency_ms, created_at). نقش‌ها: user / assistant / human-agent.
leads(agent_id, conversation_id, name, email, phone, fields JSON). منحصر به‌فرد روی (agent_id, email) برای حذف تکراری.
content_gaps(agent_id, sample_question, occurrence_count, sample_conversations[]). توسط DetectGapJob زمانی که اطمینان پایین علامت‌گذاری می‌شود، ایجاد می‌شود.

صورتحساب

جدولتوضیحات
plans(name, slug, monthly_conversations, price_cents, features JSON, is_active, stripe_product_id, stripe_price_id).
plan_subscriptionsآینه اشتراک کشیر. (workspace_id, stripe_subscription_id, stripe_status, ends_at).
usage_events(workspace_id, kind, quantity, occurred_at). برای درگاه سهمیه، به‌صورت ماهانه تجمیع می‌شود.
app_settingsردیف تکی. لغوهای Stripe / ایمیل / برند + پیکربندی هوش مصنوعی / جستجوی هوشمند / خزنده که در env نیستند. تبدیل‌های رمزگذاری‌شده روی هر کلید مخفی.

عملیات

جدولتوضیحات
audit_logs(actor_id, workspace_id, action, target_type, target_id, metadata, created_at). هر اقدام با مجوز.
jobs / failed_jobsجدول‌های استاندارد صف لاراول. failed_jobs صفحه /admin/jobs/failed را تغذیه می‌کند.
notificationsاعلان‌های استاندارد لاراول.

شاخص‌های مهم

  • conversations(agent_id, visitor_id, started_at desc) — جستجوی ادامه مکالمه بازدیدکننده در هر راه‌اندازی اجرا می‌شود.
  • messages(conversation_id, created_at) — دریافت تاریخچه چت.
  • chunks(document_id) — حذف سریع در زمان حذف منبع.
  • usage_events(workspace_id, occurred_at) — درگاه سهمیه.
  • leads(agent_id, email) — محدودیت حذف تکراری، منحصر به‌فرد.
  • workspace_users(user_id, workspace_id) — اتصال منحصر به‌فرد.

رمزگذاری در حالت استراحت

ستون‌های حساس از تبدیل encrypted لاراول استفاده می‌کنند: توکن‌های OAuth یکپارچه‌سازی، اسرار Stripe در app_settings، رمزهای عبور ایمیل، کلیدهای API سفارشی هوش مصنوعی. کلید رمزگذاری، APP_KEY استاندارد است — همانطور که از پایگاه داده پشتیبان‌گیری می‌کنید، از آن نیز پشتیبان‌گیری کنید.

حذف نرم

بیشتر جدول‌ها به‌صورت سخت و آبشاری حذف می‌شوند. استثناها:

  • plans — هرگز به‌صورت مخرب حذف نمی‌شوند (کلید خارجی از فضاهای کاری، کلید خارجی از فاکتورها). به‌صورت نرم از طریق is_active.
  • invitations — توسط یک وظیفه پاک‌سازی روزانه پس از انقضا حذف می‌شوند.

زبان خود را انتخاب کنید