Fix SMS batch apply dry-run env and add rollout tracker.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
|||||||
|
# Khanegi SMS sync — rollout tracker
|
||||||
|
|
||||||
|
Fill this after running inventory on SuperAdmin:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/superadmin/api
|
||||||
|
git pull
|
||||||
|
bash deploy/run-khanegi-sms-inventory.sh
|
||||||
|
# or: npm run prisma:inventory-khanegi-sms
|
||||||
|
```
|
||||||
|
|
||||||
|
Rule: one row = one sold version = one MySQL = one `.env` = one `SUPERADMIN_SMS_DOMAIN`.
|
||||||
|
|
||||||
|
| domain | serverHost | syncStatus | imported | remote_enabled | probe_ok | notes |
|
||||||
|
|--------|------------|------------|----------|----------------|----------|-------|
|
||||||
|
| | | | | | | |
|
||||||
|
|
||||||
|
## Pilot
|
||||||
|
|
||||||
|
- [ ] Choose low-risk domain (`pilot: true` in `prisma/khanegi-sms-targets.json`)
|
||||||
|
- [ ] Note local balance / price / block from Khanegi panel
|
||||||
|
- [ ] Dry-run import
|
||||||
|
- [ ] Apply import
|
||||||
|
- [ ] Match numbers in SuperAdmin UI
|
||||||
|
- [ ] Enable `SUPERADMIN_SMS_*` only on that version `.env`
|
||||||
|
- [ ] `php artisan sms:superadmin-probe`
|
||||||
|
- [ ] Parallel smoke (charge / price / send)
|
||||||
|
|
||||||
|
## Rollout
|
||||||
|
|
||||||
|
- [ ] Remaining targets dry-run
|
||||||
|
- [ ] Remaining targets apply
|
||||||
|
- [ ] Enable remote per install
|
||||||
|
- [ ] Skip `sms_panel=me` / missing wallet
|
||||||
@@ -101,17 +101,21 @@ function main() {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const childEnv = {
|
const childEnv: NodeJS.ProcessEnv = {
|
||||||
...process.env,
|
...process.env,
|
||||||
SMS_IMPORT_DOMAIN: target.domain,
|
SMS_IMPORT_DOMAIN: target.domain,
|
||||||
SMS_IMPORT_PRODUCT: product,
|
SMS_IMPORT_PRODUCT: product,
|
||||||
SMS_IMPORT_DRY_RUN: dryRun ? '1' : env('SMS_IMPORT_DRY_RUN'),
|
|
||||||
SMS_IMPORT_DB_HOST: String(db.host || '127.0.0.1'),
|
SMS_IMPORT_DB_HOST: String(db.host || '127.0.0.1'),
|
||||||
SMS_IMPORT_DB_PORT: String(db.port || 3306),
|
SMS_IMPORT_DB_PORT: String(db.port || 3306),
|
||||||
SMS_IMPORT_DB_USER: String(db.user || 'root'),
|
SMS_IMPORT_DB_USER: String(db.user || 'root'),
|
||||||
SMS_IMPORT_DB_PASSWORD: String(db.password ?? ''),
|
SMS_IMPORT_DB_PASSWORD: String(db.password ?? ''),
|
||||||
SMS_IMPORT_DB_DATABASE: String(db.database),
|
SMS_IMPORT_DB_DATABASE: String(db.database),
|
||||||
};
|
};
|
||||||
|
if (dryRun) {
|
||||||
|
childEnv.SMS_IMPORT_DRY_RUN = '1';
|
||||||
|
} else {
|
||||||
|
delete childEnv.SMS_IMPORT_DRY_RUN;
|
||||||
|
}
|
||||||
|
|
||||||
console.log(`\n=== ${dryRun ? 'DRY ' : ''}IMPORT ${target.domain} (${product}) ===`);
|
console.log(`\n=== ${dryRun ? 'DRY ' : ''}IMPORT ${target.domain} (${product}) ===`);
|
||||||
const result = spawnSync(
|
const result = spawnSync(
|
||||||
|
|||||||
Reference in New Issue
Block a user