إصدار AppExchange
المرحلة 1: ما قبل الطيران (محلي)
Section titled “المرحلة 1: ما قبل الطيران (محلي)”قم بتشغيل هذه قبل لمس المؤسسة. أصلح كل ما يظهر.
1.1 Salesforce Code Analyzer v5 — مسح كامل
Section titled “1.1 Salesforce Code Analyzer v5 — مسح كامل”# التثبيت (مرة واحدة)sf plugins install @salesforce/plugin-code-analyzer
# تشغيل جميع القواعد (PMD، ESLint، RetireJS، Regex، Flow، CPD)sf code-analyzer run \ --workspace force-app \ --output-file docs/scan-results.html
# تشغيل قواعد AppExchange المحددةsf code-analyzer run \ --rule-selector AppExchange \ --workspace force-app \ --output-file docs/scan-appexchange.html
# تشغيل القواعد الموسومة بـ Security فقطsf code-analyzer run \ --rule-selector Security \ --workspace force-app \ --output-file docs/scan-security.html
# حد الشدة — فشل على High أو Critical (CI/CD)sf code-analyzer run \ --rule-selector AppExchange \ --workspace force-app \ --severity-threshold 2 \ --output-file docs/scan-appexchange.htmlعدم التسامح على: Critical (1) و High (2).
Medium (3) وأقل — وثّق كإيجابيات كاذبة في docs/FALSE-POSITIVES.md.
1.2 ESLint (LWC)
Section titled “1.2 ESLint (LWC)”npm run lint1.3 اختبارات LWC Jest
Section titled “1.3 اختبارات LWC Jest”npm run test:unitالمرحلة 2: اختبارات المؤسسة والتغطية
Section titled “المرحلة 2: اختبارات المؤسسة والتغطية”2.1 تشغيل جميع اختبارات Apex
Section titled “2.1 تشغيل جميع اختبارات Apex”sf apex run test \ --code-coverage \ --result-format human \ --wait 10 \ --target-org FlexiFREEمطلوب: >= 75% تغطية إجمالية، يجب أن يكون لكل trigger تغطية.
2.2 التحقق من تغطية كل فئة
Section titled “2.2 التحقق من تغطية كل فئة”sf apex run test \ --code-coverage \ --result-format json \ --wait 10 \ --target-org FlexiFREE \ | jq '.result.coverage.coverage[] | select(.coveredPercent < 75) | {name, coveredPercent}'المرحلة 3: بناء إصدار الحزمة (beta)
Section titled “المرحلة 3: بناء إصدار الحزمة (beta)”3.1 زيادة الإصدار في sfdx-project.json
Section titled “3.1 زيادة الإصدار في sfdx-project.json”"versionName": "ver 1.2.0","versionNumber": "1.2.0.NEXT"3.2 إنشاء إصدار حزمة beta
Section titled “3.2 إنشاء إصدار حزمة beta”sf package version create \ --package FlexibleTeamShare \ --definition-file config/package-scratch-def.json \ --installation-key-bypass \ --wait 30 \ --code-coverage \ --skip-ancestor-check3.3 التحقق من التغطية
Section titled “3.3 التحقق من التغطية”sf package version list --packages FlexibleTeamShare --order-by CreatedDate --verbosesf package version report --package 04tXXXXXXXXXXXXXXX --verboseالمرحلة 4: اختبار التثبيت
Section titled “المرحلة 4: اختبار التثبيت”4.1 التثبيت في مؤسسة scratch/sandbox نظيفة
Section titled “4.1 التثبيت في مؤسسة scratch/sandbox نظيفة”sf package install \ --package 04tXXXXXXXXXXXXXXX \ --target-org TestOrg \ --wait 104.2 اختبار سريع
Section titled “4.2 اختبار سريع”- تعيين Permission Sets
FTS_App_AccessوFTS_Data_Access - تكوين تكوين مشاركة عبر المعالج
- إضافة/تحرير/إزالة أعضاء الفريق على سجل
- التحقق من إنشاء/حذف سجلات المشاركة
- الاختبار كمستخدم غير مسؤول (FTS_Data_Access فقط)
المرحلة 5: الترويج للإصدار
Section titled “المرحلة 5: الترويج للإصدار”sf package version promote --package 04tXXXXXXXXXXXXXXXالمرحلة 6: Partner Security Portal — Source Scanner (Checkmarx)
Section titled “المرحلة 6: Partner Security Portal — Source Scanner (Checkmarx)”هذا إلزامي لأي تقديم يتضمن حزمة Salesforce.
- انتقل إلى Partner Security Portal باستخدام بيانات اعتماد DevHub/packaging org
- حدد إصدار الحزمة المروّج (released) الخاص بك
- انقر على Start Scan وانتظر النتائج (عادةً 15-30 دقيقة)
- قم بتنزيل التقرير
التعامل مع النتائج
Section titled “التعامل مع النتائج”- Critical/High — أصلح الكود، أعد البناء، أعد المسح
- إيجابيات كاذبة — وثّق في
docs/FALSE-POSITIVES.md، أرفق بالتقديم - Low/Info — وثّق المبرر، لا حاجة للإصلاح
المرحلة 7: مسح DAST (إن وجد)
Section titled “المرحلة 7: مسح DAST (إن وجد)”ليس لدى Flexible Team Share استدعاءات خارجية، لا واجهة مستخدم ويب، لا نقاط نهاية API — DAST غير قابل للتطبيق.
المرحلة 8: تحضير مواد التقديم
Section titled “المرحلة 8: تحضير مواد التقديم”المستندات المطلوبة
Section titled “المستندات المطلوبة”| المادة | الملف | ملاحظات |
|---|---|---|
| تقرير Code Analyzer (كامل) | docs/scan-results.html | من المرحلة 1 |
| تقرير Code Analyzer (AppExchange) | docs/scan-appexchange.html | من المرحلة 1 |
| تقرير Source Scanner | تم التنزيل من البوابة | من المرحلة 6 |
| وثيقة الإيجابيات الكاذبة | docs/FALSE-POSITIVES.md | اشرح كل نتيجة |
| وثائق المسؤول/المستخدم | docs/APPLICATION-OVERVIEW.md، docs/USE-CASES.md | المراجعون يختبرون تطبيقك |
| دليل التثبيت | docs/1. Installation Guide.md | خطوة بخطوة للإعداد |
إعداد مؤسسة المراجعة
Section titled “إعداد مؤسسة المراجعة”- ثبّت إصدار الحزمة المروّج
- عطّل MFA/2FA حتى يتمكن فريق المراجعة من تسجيل الدخول
- ثبّت فقط الحزم المتعلقة بهذه المراجعة
- أنشئ مستخدم اختبار مع وصول كامل لفريق المراجعة
- كوّن مسبقًا تكوين مشاركة واحد على الأقل يعمل مع بيانات نموذجية
المرحلة 9: التقديم
Section titled “المرحلة 9: التقديم”- انتقل إلى AppExchange Partner Console > Publishing > Security Review
- حدد حزمتك والإصدار المروّج
- ارفع جميع تقارير المسح
- قدّم بيانات اعتماد تسجيل الدخول للمؤسسة لفريق المراجعة
- ادفع رسوم $999 (للتطبيقات المدفوعة؛ التطبيقات المجانية — بدون رسوم)
- قدّم
الجدول الزمني: 4-6 أسابيع. معظم التطبيقات تنجح في المحاولة الثانية.
ملخص ترتيب التنفيذ
Section titled “ملخص ترتيب التنفيذ”المرحلة 1 Code Analyzer + ESLint + Jest ← إصلاح مشاكل الكودالمرحلة 2 اختبارات Apex في المؤسسة (>= 75%) ← إصلاح فجوات التغطيةالمرحلة 3 بناء إصدار حزمة beta ← إذا فشل البناء، ارجع للمرحلة 2المرحلة 4 التثبيت والاختبار السريع في مؤسسة نظيفة ← إذا كان معطلاً، أصلح وأعد البناءالمرحلة 5 الترويج للإصدار ← لا يمكن الرجوع عنهالمرحلة 6 Source Scanner (Checkmarx) ← فقط على الإصدار المروّجالمرحلة 7 مسح DAST (إن وجد) ← غير قابل للتطبيق لهذا التطبيقالمرحلة 8 تحضير الوثائق ومؤسسة المراجعة ← تغليف كل شيءالمرحلة 9 التقديم إلى AppExchange ← انتظر 4-6 أسابيع