# অ্যাপ ইন্টিগ্রেশন গ্রহণযোগ্যতা

> অ্যাকাউন্ট-মোড প্রোব এখন স্বল্পমেয়াদি পরিচয় assertion পায়। নেতিবাচক Launch ক্রয় অবস্থা শুধু ক্রয়ের প্রমাণ, Licentivo রানটাইম প্রত্যাখ্যানের প্রমাণ নয়। রানটাইম প্রমাণে অফিসিয়াল SDK প্রোব প্রয়োজন; উৎপাদন ডিপ্লয় বা SDK প্রকাশ বোঝায় না। [অ্যাকাউন্ট সীমা](/bn/launch-documents/account-purchase-boundary/) দেখুন।

প্রমাণের দুটি পৃথক স্তর: নিয়ন্ত্রিত স্থানীয় স্বয়ংক্রিয় পরীক্ষা ও বাহ্যিক বিক্রেতা-sandbox প্রোব। টেস্ট ডাবল, সফল ক্যাটালগ পঠন, তৈরি কনফিগারেশন বা সফল স্বাস্থ্য পরীক্ষা বাস্তব পেমেন্ট, লাইসেন্স ইস্যু বা অ্যাক্টিভেশন প্রমাণ করে না। এই ডেভেলপমেন্ট পুনরাবৃত্তিতে বাহ্যিক পরিষেবা কনফিগারেশন স্পষ্টভাবে স্থগিত ছিল।

## স্থানীয় স্বয়ংক্রিয় পরীক্ষা

রিপোজিটরি রুট থেকে চালান:

```powershell
go test ./...
go vet ./...
node --check internal/httpapi/web/app.js
node --check internal/httpapi/web/integration.js
node --check internal/httpapi/web/integration-prompts.js
node --test scripts/integration-prompts.test.mjs scripts/integration-state.test.mjs
python scripts/test_acceptance.py
./scripts/test-mysql.ps1
```

MySQL সহায়ক `.cache`-এর মধ্যে নতুন বিচ্ছিন্ন সার্ভার ও ডেটাবেস তৈরি করে; এটি গ্রাহক ডেটাবেসে নির্দেশ করা যাবে না। সাধারণ `go test ./...` বিচ্ছিন্ন DSN না দিলে ডেটাবেস পরিস্থিতি বাদ দেয়। SDK/প্যাকেজ পরীক্ষা ও বিল্ড [integration-packages.md](/bn/launch-documents/integration-packages/)-এ বর্ণিত। রিলিজ রেকর্ডের সঙ্গে পরীক্ষার আউটপুট ও টুল সংস্করণ রাখুন।

স্থানীয় ম্যাট্রিক্সে প্রমাণীকরণ, শর্তসাপেক্ষ ইমেইল যাচাই, পণ্য/পরিবেশ মালিকানা, pending/expired/suspended অবস্থা, পেমেন্ট ইভেন্ট রিপ্লে, লাইসেন্সিং মিলন, নবায়ন/রিফান্ড, অ্যাকাউন্ট পরিবর্তন, সুরক্ষিত সেশন স্থায়িত্ব ও অফলাইন ফলব্যাক সিদ্ধান্ত আছে। জীবনচক্র পরীক্ষা নিয়ন্ত্রিত রানটাইম ব্যবহার করে; প্রকৃত ক্রিপ্টোগ্রাফিক রানটাইম যাচাই অফিসিয়াল SDK-এর দায়িত্ব এবং রিলিজের আগে পৃথকভাবে পরীক্ষা হয়।

**অপারেশন টুল → AI দ্রুত ইন্টিগ্রেশন**-এর জন্য নয়টি ভাষার পছন্দ, প্ল্যাটফর্ম/প্রকল্প/ফিচার নির্বাচন, অকনফিগার করা খসড়া ও যাচাইকৃত প্রকাশ্য কনফিগারেশন থেকে তৈরি প্রম্পট পরীক্ষা করুন। দৃশ্যমান প্রম্পটের সঙ্গে কপি ও ডাউনলোড মিলিয়ে দেখুন এবং পণ্য বা পরিবেশ বদলালে আগের যাচাইকৃত কনফিগারেশন যেন না থাকে নিশ্চিত করুন। প্রম্পটে সেশন, পাসওয়ার্ড, রানটাইম লাইসেন্স/ডিভাইস ক্রেডেনশিয়াল ও ব্যবস্থাপনা কী থাকবে না; প্রম্পট তৈরি বা কপিতে AI পরিষেবা কল হবে না। ওপরের সোর্স-বান্ডল Node পরীক্ষা কমান্ড বিশুদ্ধ জেনারেটর পরীক্ষা করে। তৈরি প্রম্পট বা পরে AI টুলে তৈরি কোডের জন্যও ভাষা পরীক্ষা ও নিচের বাহ্যিক গ্রহণযোগ্যতা ধাপ প্রয়োজন।

## বাহ্যিক sandbox গ্রহণযোগ্যতা প্রস্তুত করুন

1. প্রবেশযোগ্য HTTPS উৎস ও প্রদানকারীর ওয়েবহুকসহ নির্দিষ্ট Launch পরীক্ষা ইনস্ট্যান্স ডিপ্লয় করুন। live বিক্রয় অক্ষম রাখুন।
2. **একটি** পেমেন্ট প্রদানকারীর sandbox ক্রেডেনশিয়াল ও Licentivo রিড/রাইট সংযোগ কনফিগার করুন। পেমেন্ট sandbox রেকর্ড বিচ্ছিন্ন, কিন্তু কনফিগার করা Licentivo পরিষেবা ব্যবহার করে এবং বাস্তব পরীক্ষা লাইসেন্স/ডিভাইস রেকর্ড তৈরি করতে পারে। নির্দিষ্ট পরীক্ষা পণ্য/নীতি ও পরীক্ষা গ্রাহক ব্যবহার করুন।
3. sandbox প্ল্যান প্রকাশ করে **প্রোগ্রাম ইন্টিগ্রেশন** দিয়ে `launch-config.json` ও যাচাইকৃত `product.json` `.local/acceptance/`-এ এক্সপোর্ট করুন।
4. স্থানীয়ভাবে শুধু পর্যালোচিত Launch Python প্যাকেজ ইনস্টল করুন: `python -m pip install ./sdk/python`, অথবা তার wheel ইনস্টল করুন। ব্যক্তিগত SDK বাস্তবায়ন অন্তর্ভুক্ত।
5. `export`-এর মতো অমিটারড পরীক্ষার ফিচার ব্যবহার করুন। `--activate` অফিসিয়াল SDK শুরু করে, সিঙ্ক্রোনাসভাবে `refresh_online()` কল করে, সক্রিয় অনলাইন অবস্থা চায় এবং সুরক্ষিত কাজের API চালায়। শুধু ক্যাশ করা অফলাইন গ্রান্ট এই প্রোব পাস করতে পারে না; এই প্রোব মিটারিং পরীক্ষা করে না।

ক্রেডেনশিয়াল ইকো ছাড়া চাওয়া হয়। অটোমেশন ব্যক্তিগত প্রক্রিয়া পরিবেশে `LAUNCH_ACCEPTANCE_EMAIL` ও `LAUNCH_ACCEPTANCE_PASSWORD` দিতে পারে। পাসওয়ার্ড কমান্ড আর্গুমেন্ট, রিপোর্ট, স্ক্রিনশট বা কমিট ফাইলে রাখবেন না। টুল প্রতিটি প্রমাণীকৃত প্রোবের পরে অস্থায়ী ডেস্কটপ সেশন প্রত্যাহার করে, কিন্তু স্বাভাবিক প্রস্থানে ডিভাইস ডিঅ্যাক্টিভেট করে না।

```powershell
python scripts/acceptance.py preflight --config .local/acceptance/launch-config.json --report .local/acceptance/01-preflight.json
python scripts/acceptance.py verify --config .local/acceptance/launch-config.json --expect not_purchased --report .local/acceptance/02-no-purchase.json
```

টুল live পরিবেশ কনফিগারেশন, non-loopback HTTP, ক্রেডেনশিয়ালবাহী রিডাইরেক্ট, অমিল পণ্য ও রানটাইম গোপন মানসহ প্রকাশ্য কনফিগারেশন প্রত্যাখ্যান করে। অনুরোধের আগে `verify`-এর বাইরে অ্যাক্টিভেশন/অর্ডার assertion এবং `checkout`-এর বাইরে চেকআউট তৈরির বিকল্প প্রত্যাখ্যান করে। বিদ্যমান রিপোর্ট ওভাররাইট হয় না। রিপোর্টে অনুমতি-তালিকার প্রমাণ থাকে, কাঁচা প্রতিক্রিয়া, অ্যাক্সেস টোকেন বা লাইসেন্স কী নয়। সার্ভার বা SDK না থাকলে ব্যর্থ প্রোব তৈরি হয়, কৃত্রিম সাফল্য নয়।

স্থানীয় বিক্রেতা প্রোব `scope: local_sandbox_probe` ও `licensing_scope: not_called` ব্যবহার করে। `verify --activate` বিক্রেতা localhost-এ চললেও অফিসিয়াল বাহ্যিক লাইসেন্স পরিষেবায় যোগাযোগ করে; এ সংমিশ্রণ `local_merchant_external_licensing_probe` হিসেবে `licensing_scope: official_external_service` সহ রেকর্ড হয়।

## প্রথম পেমেন্ট ও অ্যাক্টিভেশন

বিক্রেতার ওয়েবসাইটে পরীক্ষা চেকআউট তৈরি করুন, অথবা স্থির কাজ UUID দিয়ে তৈরি করুন:

```powershell
$operation = [guid]::NewGuid().ToString()
python scripts/acceptance.py checkout --config .local/acceptance/launch-config.json --provider stripe --plan-version-id PLAN_VERSION_UUID --operation-id $operation --report .local/acceptance/03-checkout.json
```

প্রদানকারী ও প্ল্যান সংস্করণ আপনার প্রকাশিত sandbox প্ল্যান দিয়ে বদলান। অনিশ্চিত চেকআউট তৈরির পুনঃপ্রচেষ্টায় একই কাজ UUID রাখুন ও পুনর্ব্যবহার করুন। টুল অর্ডার ID প্রিন্ট করে। সেই নিজের অর্ডার বিক্রেতার অ্যাকাউন্ট কেন্দ্রে প্রদানকারীর অফিসিয়াল sandbox চেকআউট দিয়ে সম্পন্ন করুন। প্রোব ইচ্ছাকৃতভাবে প্রদানকারীর UI মিথস্ক্রিয়া অনুকরণ করে না।

প্রদানকারী পেমেন্ট নিশ্চিত করে ও ওয়েবহুক আসার পর:

```powershell
python scripts/acceptance.py verify --config .local/acceptance/launch-config.json --order-id ORDER_UUID --expect-order paid --expect active --activate --product-config .local/acceptance/product.json --feature export --report .local/acceptance/04-activation.json
```

এটি প্রমাণীকৃত অ্যাকাউন্ট, মালিকানাধীন sandbox অর্ডার, অধিকার, ক্রেডেনশিয়াল/পণ্যের মিল ও প্রকৃত অফিসিয়াল SDK সুরক্ষিত কাজ পরীক্ষা করে। অপেক্ষমাণ অনুমোদন সীমিত সময়ে সর্বাধিক পাঁচবার চেষ্টা হয় (ডিফল্ট 30 সেকেন্ড, সর্বাধিক 120), `Retry-After` মেনে। অপ্রত্যাশিত অনুমোদন ব্যর্থতা SDK-এর কাঁচা ত্রুটি পাঠ্য প্রকাশ না করে রেকর্ড হয়।

## জীবনচক্র গ্রহণযোগ্যতা ম্যাট্রিক্স

প্রতি প্রকাশিত ভাষা/OS জুটির জন্য সোর্স সংশোধন, Launch/client/SDK সংস্করণ, প্রদানকারী পরিবেশ, বেনামি গ্রাহক লেবেল, অর্ডার ID, প্রত্যাশিত ফল, পর্যবেক্ষিত ফল ও সংশ্লিষ্ট রিপোর্ট ফাইল নামসহ তারিখযুক্ত রেকর্ড রাখুন। না চালানো সারি **not run** চিহ্নিত করুন। প্রথম পেমেন্ট প্রোব দিয়ে পুরো ম্যাট্রিক্স পাস চিহ্নিত করবেন না।

| পরিস্থিতি | পদ্ধতি | প্রয়োজনীয় প্রমাণ |
| --- | --- | --- |
| নিবন্ধন / যাচাই | ক্রয় ছাড়া নিবন্ধন করুন; যাচাই সক্ষম ও অক্ষম অবস্থায় পুনরাবৃত্তি করুন | অক্ষম যাচাই আটকায় না; সক্ষম যাচাই সম্পন্ন না হওয়া পর্যন্ত `EMAIL_VERIFICATION_REQUIRED` দেয় |
| কোনো ক্রয় নেই | `verify --expect not_purchased` চালান | ক্রেডেনশিয়াল প্রত্যাখ্যাত; সুরক্ষিত কাজ চলে না |
| প্রথম ক্রয় | sandbox পেমেন্ট সম্পন্ন করে অ্যাক্টিভেশন প্রোব চালান | প্রদানকারী পেমেন্ট নিশ্চিত করে; একটি পরিশোধিত অধিকার, একটি সিঙ্ক করা লাইসেন্স, SDK কাজ সফল |
| পুনরারম্ভ | মনে রাখা লগইনসহ নির্বাচিত ভাষার উদাহরণ বন্ধ করুন, নতুন প্রক্রিয়া চালিয়ে পুনরুদ্ধার করুন | পাসওয়ার্ড প্রম্পট নেই; একই অ্যাকাউন্ট/পণ্য ক্যাশ ও বৈধ স্বাক্ষরিত গ্রান্ট |
| অফলাইন শুরু | সফল মনে রাখা অ্যাক্টিভেশনের পরে ওই পরীক্ষা প্রক্রিয়া/মেশিনের নেটওয়ার্ক বন্ধ করে পুনরারম্ভ করুন | স্বাক্ষরিত ক্যাশ গ্রান্ট শুধু নীতি-অনুমোদিত কাজ দেয়; no-offline/floating নীতি শুরু প্রত্যাখ্যান করে |
| অফলাইন মেয়াদ / ঘড়ি রোলব্যাক | স্বল্পমেয়াদি পরীক্ষা নীতি ও ডিসপোজেবল পরীক্ষা মেশিন ব্যবহার করুন | SDK মেয়াদোত্তীর্ণ/রোলব্যাক অবস্থা প্রত্যাখ্যান করে; ফিচার কলব্যাক চলে না |
| নবায়ন / আপগ্রেড | sandbox স্টোরফ্রন্টে নবায়ন বা কোট করা আপগ্রেড কিনুন | সঠিক অর্ডার/কভারেজ; সিঙ্ক ও SDK রিফ্রেশের পরে নতুন বৈধতা/ফিচার দৃশ্যমান |
| অর্থ ফেরত | সম্পূর্ণ sandbox রিফান্ড অনুরোধ/অনুমোদন করুন; প্রদানকারীর নিশ্চিতকরণ অপেক্ষা করুন | প্রদানকারীর রিফান্ড ও স্থানীয় কভারেজ মেলে; প্রযোজ্য অনুযায়ী `verify --expect suspended` বা `--expect expired`; অন্য পরিশোধিত কভারেজ ব্যবহারযোগ্য থাকে |
| লগআউট / অ্যাকাউন্ট বদল | A লগআউট করে ক্রয়হীন B হিসেবে সাইন ইন করুন; পুনরারম্ভ করে আচরণ দেখুন | A-এর সংরক্ষিত সেশন/ক্যাশ সরানো; B, A-এর লাইসেন্স, ডিভাইস বা ফিচার ব্যবহার করতে পারে না |
| পণ্য / পরিবেশ বিচ্ছিন্নতা | অন্য পণ্য ব্যবহার করুন এবং আলাদাভাবে sandbox/live কনফিগারেশন বদলান | ক্রেডেনশিয়াল ও ক্যাশ পরিচয় পরিসর অতিক্রম করতে পারে না; বাহ্যিক প্রোব নিজেই live প্রত্যাখ্যান করে |
| ডিভাইস পূর্ণ / রিলিজ | নীতির সর্বাধিক পৃথক পরীক্ষা ডিভাইসে অ্যাক্টিভেট করুন; আরও একটি চেষ্টা করে স্পষ্টভাবে একটি রিলিজ করুন | SDK অতিরিক্ত ডিভাইস প্রত্যাখ্যান করে ও নিশ্চিত রিলিজের পরে প্রতিস্থাপন অনুমোদন করে; সাধারণ বন্ধে রিলিজ কোটা খরচ হয় না |
| পুনরুদ্ধার | অপেক্ষমাণ ইস্যুর সময় Launch পুনরারম্ভ করুন, স্বাক্ষরিত sandbox ওয়েবহুক রিপ্লে করুন | একটি অর্ডার কভারেজ/লাইসেন্স, শেষ পর্যন্ত মিলন; ডুপ্লিকেট চেকআউট বা চার্জ নেই |

আগে ইস্যু করা অফলাইন গ্রান্টে রিফান্ড/স্থগিতের প্রভাব অফিসিয়াল SDK-এর স্বাক্ষরিত অফলাইন নীতিতে সীমিত। বিচ্ছিন্ন অবস্থায় তাৎক্ষণিক প্রত্যাহারের দাবি নেই। চুক্তি শেষের সময় দীর্ঘ Launch বিভ্রাট আপস্ট্রিম স্থগিত বিলম্ব করতে পারে; [চুক্তির সীমাবদ্ধতা](/bn/launch-documents/licentivo-contract/) দেখুন।

## সম্পূর্ণতা ও সংরক্ষিত প্রমাণ

প্রতিটি প্রোব রিপোর্ট ইচ্ছাকৃতভাবে `acceptance_complete: false` সেট করে: শুধু সেইবার বাস্তবে চালানো পরীক্ষা রেকর্ড করে। রিলিজ গ্রহণের আগে ম্যাট্রিক্স ও প্রদানকারীর রেকর্ড পর্যালোচনা করুন। বাহ্যিক পরিষেবা পরে কনফিগার করে ওপরের কমান্ড আবার চালান; অনুপস্থিত ফল পাস ফ্ল্যাগ দিয়ে বদলাবেন না বা শুধু স্থানীয় পরীক্ষা পাসে live বিক্রয় চালু করবেন না।
