انتقل إلى المقال
Aniq-UI

Ticketoryمتغيرات البيئة

متغيرات البيئة

ما يفعله كل إعداد في ملفات .env الخاصة بواجهة API والواجهتين الأماميتين، وأيها تحتاج إليه.

لحزمة الحزمة الكاملة

أين توجد الإعدادات

الملفيقرؤهيحتوي على أسرار
back-end/.envواجهة API، مع yarn dev وداخل Docker Composeنعم. لا تضفه إلى المستودع أبدًا.
storefront/.envالموقع: قيم NEXT_PUBLIC_* وقت البناء، وREVALIDATE_SECRET وAPI_INTERNAL_URL على خادمهREVALIDATE_SECRET فقط، وهو لا يصل إلى المتصفح أبدًا
admin-dashboard/.envلوحة المنظّم، وقت البناءلا. كل القيم عامة.
.env بجوار docker-compose.ymlDocker Compose للحزمة الكاملة، وحاوية واجهة API التي تقرؤه قبل back-end/.envREVALIDATE_SECRET على خادم مفتوح للإنترنت، وOWNER_PASSWORD عندما تضعه هناك

أنشئ ملف كل تطبيق من .env.example الموجود بجانبه، وهو يشرح كل متغير: cp .env.example .env. تعمل الأمثلة كما هي للتشغيل المحلي، ولا يحتاج تشغيل Docker Compose إلى أي ملف.

أين توجد الإعدادات

ملف واحد هو .env في مجلد الموقع. تُقرأ قيم NEXT_PUBLIC_* فيه عند بناء الموقع وهي عامة، فلا تضع فيها سرًا أبدًا. أما REVALIDATE_SECRET وAPI_INTERNAL_URL فيقرؤهما خادم الموقع نفسه وقت التشغيل ولا يصلان إلى المتصفح أبدًا. أنشئه من .env.example الذي يشير إلى واجهة API على http://localhost:8000: cp .env.example .env. مع Docker مرّر قيم NEXT_PUBLIC_* بـ --build-arg والمتغيرين الآخرين بـ -e.

أين توجد الإعدادات

ملف واحد هو .env في مجلد لوحة التحكم، يُقرأ عند بناء لوحة التحكم. كل قيمة فيه عامة، فلا يحوي سرًا أبدًا: مفاتيح المزودين في .env الخاص بواجهة API. أنشئه من .env.example الذي يشير إلى واجهة API على http://localhost:8000: cp .env.example .env. مع Docker مرّر القيم نفسها بـ --build-arg.

أين توجد الإعدادات

ملف واحد هو .env في مجلد واجهة API، تقرؤه واجهة API عند yarn dev، وتقرؤه الحاوية عندما تضيف --env-file .env -e NODE_ENV=production إلى docker run. يحوي أسرارًا: لا تضفه إلى المستودع أبدًا. أنشئه من .env.example الذي يشرح كل متغير ويعمل كما هو للتشغيل المحلي: cp .env.example .env.

تضبط صورة Docker قيمًا افتراضية خاصة بها، لذلك يعمل docker run من دون ملف: SQLite في /data/database.sqlite، والملفات المرفوعة في /data/uploads، وملفات CSV المصدّرة في /data/exports، وCORS_ORIGIN للتطبيقين الأماميين المحليين، وFRONTEND_URL=http://localhost:3031، وSTOREFRONT_URL=http://localhost:3030، وPUBLIC_API_URL=http://localhost:8000، وPUBLIC_MEDIA_URL=http://localhost:8000/media، وSEED_DEMO_DATA=false. وتستطيع تغيير أي منها بـ -e.

أساسيات واجهة API

تتحقق واجهة API من JWT_SECRET، ومن CORS_ORIGIN في الإنتاج، قبل أن تبدأ. إذا كان أحدهما ناقصًا أو غير صالح، تتوقف وتطبع سطرًا واحدًا يوضح ما يجب إصلاحه.

المتغيروظيفته
NODE_ENVdevelopment محليًا، وهو ينشئ الجداول ويحدّثها عند بدء التشغيل. وproduction على خادم مباشر، وهو لا يلمس الجداول أبدًا.
PORTمنفذ واجهة API، وهو 8000. تشير إليه الواجهتان الأماميتان.
DB_TYPEsqlite (القيمة الافتراضية عند عدم الضبط) أو mysql.
SQLITE_DATABASEمسار ملف SQLite، وهو ./database.sqlite في .env.example.
JWT_SECRETيوقّع كل تسجيل دخول، ورموز QR للتذاكر ما دام TICKET_SECRET غير مضبوط. مطلوب. تُقبل قيمة المثال خارج الإنتاج فقط.
JWT_EXPIRATIONمدة بقاء تسجيل الدخول، وهي 7d عند عدم الضبط.
CORS_ORIGINعنوانا الموقع ولوحة التحكم، مفصولان بفاصلة. إذا لم يُضبط فلا يُسمح إلا بـ http://localhost:3030 وhttp://localhost:3031، وليس بكل الأصول أبدًا؛ مطلوب في الإنتاج.
FRONTEND_URLعنوان اللوحة، وهو الأصل الوحيد الذي تقبله اتصالاتها المباشرة (الإشعارات وتغييرات الصلاحيات)، وقيمته http://localhost:3031 عند عدم الضبط.
STOREFRONT_URLعنوان الموقع: ترجع إليه صفحات الدفع المشترين، وتربط إليه رسائل التذاكر، وتحدّث واجهة API صفحات الموقع من خلاله.
PUBLIC_API_URLالعنوان العام لواجهة API نفسها، ويُستخدم في الروابط الموقّعة لملفات PDF للتذاكر وملفات التقويم وملفات CSV المصدّرة، وفي عنوان العودة من PayPal.
REVALIDATE_SECRETاختياري. القيمة نفسها لـ REVALIDATE_SECRET في .env الخاص بالموقع. بوجودها تخبر واجهة API الموقع بإعادة بناء صفحة فعالية أو مكان أو منظّم فور نشرها أو تعديلها أو إلغائها أو نفاد تذاكرها؛ ومن دونها تتحدث هذه الصفحات من تلقاء نفسها خلال ساعة.
STOREFRONT_INTERNAL_URLاختياري. المكان الذي تصل منه واجهة API إلى الموقع عندما يختلف عن STOREFRONT_URL، كما داخل Docker (http://storefront:3030).
TICKET_SECRETاختياري. يوقّع رمز QR لكل تذكرة وروابط التنزيل؛ وإن لم يُضبط يُستخدم JWT_SECRET. اضبطه مرة واحدة قبل أن تبيع: تغييره لاحقًا يُبطل كل رمز QR صدر.
EXPORT_DIRاختياري. المكان الذي تُكتب فيه ملفات CSV المصدّرة قبل تنزيلها، وهو ./exports عند عدم الضبط.
TRUST_PROXYاختياري. عدد الوسطاء العكسيين أمام واجهة API، حتى تحسب حدود تسجيل الدخول ونموذج التواصل ومسح الباب الزائر الحقيقي.
RATE_LIMIT_LOGINاختياري. عدد محاولات الدخول الفاشلة التي يمكن لعنوان واحد القيام بها خلال 15 دقيقة قبل 429، وهو 10 افتراضيًا.
SEED_DEMO_DATAتقرؤه صورة Docker فقط، على وحدة تخزين ليس فيها قاعدة بيانات بعد: true ينشئها بالمنظّمين التجريبيين الأربعة وحساباتهم، وfalse بالجداول فقط، وبعدها تنشئ واجهة API مساحة عملك الخاصة من متغيرات المالك أدناه.

ولّد JWT_SECRET خاصًا بك بالأمر:

الطرفية
node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"

كل ميزة اختيارية أدناه تبقى متوقفة ما دامت أسطرها في .env.example معلّقة كتعليقات.

مساحة عملك ومالكها

تُقرأ فقط في قاعدة بيانات ليس فيها حساب موظف ولا مساحة عمل (جداول yarn db:sync، أو وحدة تخزين Docker بدأت بـ SEED_DEMO_DATA=false). حينئذ ينشئ أول تشغيل لواجهة API منها الأدوار وإعدادات الموقع وأنواع الفعاليات ومساحة عمل واحدة ومالكها، مرة واحدة. وبمجرد وجود أي حساب موظف تُتجاهل.

ملف .env الخاص بواجهة API
OWNER_EMAIL=you@your-domain.com
OWNER_PASSWORD=a-long-password-of-your-own
OWNER_NAME=Your Name
WORKSPACE_NAME=Your organisation
المتغيروظيفته
OWNER_EMAILبريد تسجيل دخول المالك إلى اللوحة.
OWNER_PASSWORD10 أحرف على الأقل. مع NODE_ENV=production تُرفض قيمة المثال من .env.example وكلمة مرور الحسابات التجريبية. لا تُطبع أبدًا، ويمكن حذفها بأمان بعد وجود المالك.
OWNER_NAMEاختياري، وهو Owner عند عدم الضبط. يُغيَّر لاحقًا من الملف الشخصي للمالك.
WORKSPACE_NAMEاختياري، وهو Ticketory عند عدم الضبط. اسم مؤسستك، ويُغيَّر لاحقًا من الإعدادات ثم عام.

في Docker Compose للحزمة الكاملة يمكن وضعها في .env بجانب docker-compose.yml مع SEED_DEMO_DATA=false: يمرّر Compose ذلك الملف إلى واجهة API أولًا ثم back-end/.env، وتتقدم قيمة الأخير حيث يضبط الاثنان قيمة. وبدون هذه المتغيرات تبدأ واجهة API وتقول أيها يجب ضبطه.

المدفوعات

ينقل الدفع المشتري إلى صفحة Stripe أو PayPal نفسها، فلا تُكتب بيانات البطاقة على موقعك أبدًا. يُعرض كل مزوّد متى ضُبطت مفاتيحه. استخدم مفاتيح الاختبار أولًا: فهي لا تحرّك أي مال.

ملف .env الخاص بواجهة API
STRIPE_SECRET_KEY=sk_test_your_key
STRIPE_WEBHOOK_SECRET=whsec_your_secret
PAYPAL_CLIENT_ID=your-client-id
PAYPAL_CLIENT_SECRET=your-client-secret
PAYPAL_WEBHOOK_ID=your-webhook-id
PAYPAL_ENV=sandbox
المتغيروظيفته
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRETصفحة Checkout المستضافة من Stripe. المفتاح الذي يبدأ بـ sk_test_ أو rk_test_ هو وضع الاختبار. خطاف الويب هو https://<your-api>/api/webhooks/stripe، ويرسل checkout.session.completed وcheckout.session.async_payment_succeeded وcheckout.session.async_payment_failed وrefund.updated.
PAYPAL_CLIENT_ID, PAYPAL_CLIENT_SECRET, PAYPAL_WEBHOOK_IDPayPal. خطاف الويب هو https://<your-api>/api/webhooks/paypal (PAYMENT.CAPTURE.COMPLETED وPAYMENT.CAPTURE.DENIED وPAYMENT.CAPTURE.REFUNDED)، ويوضع معرّفه في PAYPAL_WEBHOOK_ID.
PAYPAL_ENVsandbox أو live. عدم الضبط يعني sandbox.
PAYMENTS_SIMULATORالدفع الاختباري، الذي يدفع الطلب من دون تحويل أي مال. auto (الافتراضي) يعرضه ما دام لا يوجد مفتاح حي، فتُبقيه مفاتيح الاختبار؛ وon أو off يتقدمان على ذلك.

التذاكر المجانية لا تحتاج إلى شيء من هذا: الطلب الذي لا شيء فيه للدفع يُؤكَّد عند الدفع، بمفاتيح أو بدونها. لا تفرض تيكيتوري أي ضريبة بنفسها، فأعدّ الضريبة لبلدك قبل استلام مدفوعات حقيقية.

البريد الإلكتروني

تُرسل التذاكر ورموز التسجيل وإعادة ضبط كلمة المرور وأخبار الاسترداد وتذكيرات الفعاليات عبر Resend متى ضُبط المتغيران. وإلى ذلك الحين يُكتب كل بريد في سجل واجهة API بدلًا من إرساله، وهناك يُقرأ رمز التسجيل في تثبيت جديد (مع Docker: docker compose logs api).

ملف .env الخاص بواجهة API
RESEND_API_KEY=re_your_key
MAIL_FROM=Ticketory <tickets@your-domain.com>
EVENT_REMINDER_HOURS=24

EVENT_REMINDER_HOURS هو المدة قبل الفعالية التي يخرج فيها تذكيرها: القيمة 24 عند عدم الضبط، وأقصاها 168 (أسبوع)، و0 يوقف التذكيرات. كل بريد عن طلب (التذاكر والاستردادات وإشعار الإلغاء والتذكير) يُكتب باللغة التي قُدّم بها الطلب.

استخدم MySQL بدلًا من SQLite

أنشئ قاعدة بيانات فارغة، ثم اضبط المشغّل والاتصال في ملف .env الخاص بواجهة API:

ملف .env الخاص بواجهة API
DB_TYPE=mysql
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=
DB_DATABASE=ticketory

ثم شغّل yarn seed للبيانات التجريبية، أو yarn db:sync للجداول بلا بيانات. لا تنشئ واجهة API العاملة الجداول ولا تحدّثها بنفسها إلا مع NODE_ENV=development، لذلك مع NODE_ENV=production يجب تشغيل أحد هذين الأمرين قبل أول تشغيل (yarn seed:prod أو yarn db:sync:prod بعد yarn build). تفعل صورة Docker ذلك بنفسها على SQLite فقط: وعلى MySQL شغّله مرة واحدة بنفسك.

الصور والملفات المرفوعة

تقدّم واجهة API الصور التجريبية بنفسها، من public/media/ticketory (رموز الأنواع والشعارات وشعار المساعد والصور التجريبية للاستوديو)، على /media/ticketory/…. أما الملفات المرفوعة من اللوحة (صور الأماكن الفارغة للاستوديو والصور المرفقة بسؤال للمساعد) والمفاهيم التي أنهاها الاستوديو فتُخزَّن على قرص واجهة API تحت MEDIA_UPLOAD_DIR وتُقدَّم على /media/uploads/…، ما لم تُضبط حاوية تخزين.

ملف .env الخاص بواجهة API
PUBLIC_MEDIA_URL=http://localhost:8000/media
MEDIA_UPLOAD_DIR=./public/media/uploads

PUBLIC_MEDIA_URL هو العنوان الذي يُصل به إلى /media من المتصفح. يُبنى منه كل عنوان صورة، وتنقل واجهة API المحفوظة منها إليه عند بدئها، فنقل واجهة API يُبقي كل صورة. على الخادم وجّه MEDIA_UPLOAD_DIR إلى تخزين دائم؛ ومع Docker يكون في وحدة تخزين البيانات.

لإرسال الملفات المرفوعة إلى Cloudflare R2 أو أي حاوية متوافقة مع S3، اضبط المتغيرات الخمسة كلها. وأعطِ التطبيقين الأماميين المضيف العام للحاوية عبر NEXT_PUBLIC_MEDIA_HOSTNAME (ومع Docker Compose عبر MEDIA_HOSTNAME) حتى يغيّر Next.js أحجام تلك الصور.

ملف .env الخاص بواجهة API
R2_ACCESS_KEY_ID=your-r2-access-key-id
R2_SECRET_ACCESS_KEY=your-r2-secret-access-key
R2_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com
R2_BUCKET_NAME=your-bucket-name
R2_PUBLIC_URL=https://your-public-url.r2.dev

تُحوَّل الصور إلى JPEG عند الرفع، بعرض لا يزيد على 1920 بكسل. وتُقبل مقاطع الفيديو بصيغ MP4 أو WebM أو MOV أو M4V، حتى 150 ميغابايت.

الموقع ولوحة المنظّم

تُضمَّن كل قيمة NEXT_PUBLIC_* في كود JavaScript الذي يحمّله المتصفح، ويستطيع أي شخص يفتح الصفحة قراءتها. لا تضع فيها سرًا أبدًا، وأعد البناء (أو أعد تشغيل yarn dev) بعد تغيير أي منها.

المتغيرالتطبيقوظيفته
NEXT_PUBLIC_API_BASE_URLكلاهماعنوان واجهة API مع /api، وهو http://localhost:8000/api افتراضيًا.
NEXT_PUBLIC_SITE_URLكلاهماالعنوان العام للموقع، وهو http://localhost:3030 افتراضيًا. في الموقع تُبنى منه العناوين الأساسية وبدائل اللغات وبطاقات المشاركة وrobots.txt وخريطة الموقع؛ وفي اللوحة رابط «عرض الموقع» ومعاينات الفعاليات.
NEXT_PUBLIC_DASHBOARD_URLكلاهماعنوان اللوحة. في الموقع، هو المكان الذي ترسل إليه «بِع التذاكر» وروابط المنظّم المنظِّمَ ليسجّل الدخول (http://localhost:3031). وفي اللوحة، هو أساس الصورة التي تظهر عند مشاركة رابط اللوحة؛ وإذا تُرك فارغًا يُستخدم domain.url في src/config/brand.config.ts.
NEXT_PUBLIC_MEDIA_HOSTNAMEكلاهمااختياري. مضيفو https الذين يقدّمون الصور، مفصولين بفواصل: المضيف العام لحاويتك، مثل pub-1234.r2.dev، أو نطاق واجهة API، أو الاثنان. تُغيَّر أحجام الصور عليها بواسطة Next.js؛ وأي صورة أخرى تُحمَّل كما هي. مضيفون فقط، من دون https://. اتركه فارغًا ما دامت واجهة API تعمل على localhost.
NEXT_PUBLIC_WEBSOCKET_BASE_URLلوحة التحكمعنوان واجهة API من دون /api، للإشعارات المباشرة.
NEXT_PUBLIC_MAP_STYLE_LIGHT, NEXT_PUBLIC_MAP_STYLE_DARKلوحة التحكمأنماط بلاطات الخرائط اختيارية. وعند عدم الضبط يرسم المظهر الفاتح نمط Positron من OpenFreeMap ويرسم المظهر الداكن نمط Dark منه، وكلاهما لا يحتاج إلى مفتاح.
NEXT_PUBLIC_PLACE_SEARCH_URLلوحة التحكمالبحث عن الأماكن في أداة اختيار الخريطة بمحرر الأماكن، وهو https://photon.komoot.io/api عند عدم الضبط. تصلح أي خدمة ترميز جغرافي تجيب بالشكل نفسه.
REVALIDATE_SECRETالموقعللخادم فقط، ويُقرأ وقت التشغيل. هو السر الذي ترسله واجهة API إلى POST /api/revalidate في الموقع بعد تغيّر فعالية؛ والقيمة نفسها كما في .env الخاص بواجهة API. وإذا كان فارغًا يرفض ذلك المسار كل استدعاء وتتحدث الصفحات خلال ساعة.
API_INTERNAL_URLالموقعاختياري، للخادم فقط، ويُقرأ وقت التشغيل. المكان الذي يصل منه خادم الموقع نفسه إلى واجهة API (عناوين صفحات الفعاليات، والعرض الأول لصفحات الفعاليات والأماكن، وخريطة الموقع) عندما لا يصلح عنوان المتصفح من داخله، كما في Docker (http://api:8000/api في Docker Compose). اتركه بلا ضبط في غير ذلك.
BUILD_STANDALONEكلاهماالقيمة true تجعل yarn build يُخرج خادمًا مستقلًا بذاته، وهي القيمة التي تضبطها ملفات Dockerfile. اتركه غير مضبوط في غير ذلك.

علامات التسويق في الموقع هي أيضًا قيم NEXT_PUBLIC_*: Google Tag Manager (NEXT_PUBLIC_GTM_ID) وGA4 (NEXT_PUBLIC_GA4_MEASUREMENT_ID) وMeta وTikTok وSnapchat وPinterest، يُفعَّل كل منها بمعرّف واحد؛ والمعرّف الفارغ لا يحمّل أي سكربت. وNEXT_PUBLIC_ANALYTICS_CURRENCY (USD افتراضيًا) هي العملة المرسلة مع أسعار التذاكر، وNEXT_PUBLIC_ANALYTICS_DEBUG=true يسجّل كل حدث متتبَّع في وحدة تحكم المتصفح.

خيارات Docker Compose

لا تحتاج إلى ضبط أي شيء للتشغيل المحلي. لتغيير شيء، ضعه في ملف .env بجوار docker-compose.yml وشغّل docker compose up --build مرة أخرى: تُضمِّن الواجهات الأمامية هذه القيم.

المتغيرالقيمة الافتراضيةوظيفته
SITE_PORT3030منفذ الموقع على جهازك.
ADMIN_PORT3031منفذ لوحة التحكم على جهازك.
API_PORT8000منفذ واجهة API على جهازك.
SITE_URL, ADMIN_URL, API_URLالعناوين المحلية على هذه المنافذالعنوان الذي يصل منه المتصفح إلى كل تطبيق. اضبط الثلاثة عند تشغيل التطبيقات على نطاقاتك الخاصة.
MEDIA_HOSTNAMEفارغمضيفو https الذين يقدّمون الصور، مفصولين بفواصل: المضيف العام لحاويتك (مع متغيرات R2_* في back-end/.env)، أو نطاق واجهة API نفسها، أو الاثنان.
REVALIDATE_SECRETقيمة محليةالسر الذي تتشاركه واجهة API والموقع، فيصل أي تغيير تجريه في اللوحة إلى صفحات الموقع فورًا. اضبط قيمتك العشوائية الطويلة على خادم مفتوح للإنترنت.
SEED_DEMO_DATAtruefalse يبدأ بجداول فارغة بدلًا من المنظّمين التجريبيين الأربعة، ومع ضبط متغيرات المالك تنشئ واجهة API مساحة عملك الخاصة ومالكها. وهو يهم فقط على وحدة تخزين جديدة.
OWNER_EMAIL, OWNER_PASSWORD, OWNER_NAME, WORKSPACE_NAMEفارغمالك مساحة عملك واسمها، ويُقرآن فقط في قاعدة بيانات ليس فيها حساب موظف: انظر «مساحة عملك ومالكها» أعلاه.
NEXT_PUBLIC_GTM_ID, NEXT_PUBLIC_GA4_MEASUREMENT_ID, NEXT_PUBLIC_META_PIXEL_ID, NEXT_PUBLIC_TIKTOK_PIXEL_ID, NEXT_PUBLIC_SNAPCHAT_PIXEL_ID, NEXT_PUBLIC_PINTEREST_TAG_IDفارغوسوم التسويق في الموقع، وكلها اختيارية.
NEXT_PUBLIC_ANALYTICS_CURRENCY, NEXT_PUBLIC_ANALYTICS_DEBUGUSD, falseالعملة المرسلة مع كل سعر يُتتبَّع، وتسجيل كل حدث في وحدة تحكم المتصفح.
NEXT_PUBLIC_MAP_STYLE_LIGHT, NEXT_PUBLIC_MAP_STYLE_DARK, NEXT_PUBLIC_PLACE_SEARCH_URLفارغبلاطات خريطة لوحة التحكم وبحث الأماكن؛ وإذا تُرك فارغًا استُخدم OpenFreeMap وPhoton.

غيّر منفذًا عندما يستخدمه برنامج آخر بالفعل، مثل ADMIN_PORT=3041. وكل من CORS_ORIGIN وFRONTEND_URL وSTOREFRONT_URL وPUBLIC_API_URL وPUBLIC_MEDIA_URL في واجهة API، وعناوين واجهة API والموقع واللوحة في التطبيقين الأماميين، تُبنى من المنافذ والعناوين الثلاثة، فتتبعها من تلقاء نفسها.

تقرأ حاوية واجهة API هذا .env أولًا ثم back-end/.env إن وُجد، وتتقدم قيمة الأخير حيث يضبط الاثنان قيمة، فتُضبط المفاتيح الاختيارية في مكان واحد لـ yarn dev ولـ Docker معًا. ويتقدم ملف compose في القيم التي تختلف داخل الحاوية: مسار قاعدة البيانات ومجلدا الرفع والتصدير والمنفذ وNODE_ENV=production والعناوين أعلاه. وقاعدة البيانات والملفات المرفوعة وملفات CSV المصدّرة موجودة في وحدة التخزين ticketory-data.

ميزات الذكاء الاصطناعي

مُضمَّن مع مشترياتك. سجّل الدخول لقراءته، أو افتحه في ملف التنزيل.

تشغيل مساعد الفعاليات بالذكاء الاصطناعي واستوديو الأماكن بالذكاء الاصطناعي: مفاتيح المزوّدين ونموذج الصور.

خادم MCP

مُضمَّن مع مشترياتك. سجّل الدخول لقراءته، أو افتحه في ملف التنزيل.

السماح لوكلاء البرمجة وعملاء MCP الآخرين باستخدام أدوات المساعد: المفتاح ونقطة النهاية.

وضع العرض التجريبي

مُضمَّن مع مشترياتك. سجّل الدخول لقراءته، أو افتحه في ملف التنزيل.

مفتاح العرض العام، ولماذا يبقى مغلقًا عند منظّم حقيقي.

توقفت عند خطوة؟

ابحث عن الحل قبل أن تبدأ من جديد.

حل المشكلات

تفضيلات ملفات تعريف الارتباط

نستخدم ملفات تعريف الارتباط لتعزيز تجربة التصفح الخاصة بك وتحليل حركة المرور على الموقع وتخصيص المحتوى. بالنقر على "قبول الكل"، فإنك توافق على استخدامنا لملفات تعريف الارتباط للتحليلات والإعلانات المخصصة.