ifnex/03_WordPress/wp-admin/includes
Kazem Alghasi f1d5667fe8 feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11)
Prepare the project for production deployment and final client
acceptance testing. Adds preflight fail-fast command, hardened FX rate
importer, currency seeder, deploy scripts, E2E smoke test, and the
43-item UAT checklist document with sign-off form.

Key changes:

- Phase 3.9.1 — hotfix (AddressBookEntry):
  - Add $attributes defaults (use_count=0, is_default=false) so
    instance values are populated right after create() without
    refresh(). Resolves the red test
    `it_increments_use_count_and_sets_last_used_at`.

- Phase 3.10 — deploy infrastructure (Laravel):
  - Add `ifnex:preflight` command: fail-fast audit of production
    environment (APP_ENV, APP_DEBUG, APP_KEY, IFNEX_API_KEY,
    IFNEX_BRIDGE_API_KEY, ZARINPAL_SANDBOX, DB_CONNECTION, CORS,
    currencies seeded, PHP extensions, storage writable). Exits 1
    if any check fails; supports --skip-db for pre-migrate runs.
  - Add `ifnex:import-fx-rates` command: replacement for
    `ifnex:update-rates`. Fetches USD/AED from Exir.io + EUR/CNY
    from FreeCurrencyAPI. Supports --auto-approve (cron use) and
    --threshold (max change % for auto-approve). Logs critical on
    HTTP failure. URL configurable via EXIR_API_URL env.
  - Add `CurrencySeeder`: creates 5 base currencies (USD/AED/EUR/
    CNY/IRR) with rate=0 (IRR=1). Idempotent — does not overwrite
    real rates already set by admin or cron.
  - Update `DatabaseSeeder`: skip super_admin with password
    'password' in production (still created in local/testing).
  - Fix `bootstrap/app.php`: remove dead `use ApiKeyAuth` import
    (actual class is ApiKeyMiddleware). Latent fatal if api_key
    alias was used.
  - Add `config/ifnex.php` exir block + preflight config.
  - Harden `.env.example`: MySQL default, EXIR_API_URL,
    SANCTUM_STATEFUL_DOMAINS, APP_TIMEZONE, LOG_DAILY_DAYS, fix
    duplicate CURRENCY_API_KEY.

- Phase 3.10 — deploy scripts (Linux):
  - Add `scripts/deploy.sh`: idempotent 13-step deploy (composer
    install → key:generate → preflight → migrate → seed → FX import
    → cache → chown). Fail-fast with set -e.
  - Add `scripts/cron-exir-rates.sh`: daily cron wrapper for
    `ifnex:import-fx-rates --source=all --auto-approve`.

- Phase 3.10.1 — preflight hotfix:
  - Make expected DB connection configurable
    (ifnex.preflight.expected_db_connection) instead of hardcoded
    'mysql'. Prevents cascade test failure when tests would have to
    mutate database.default to mysql in a sqlite test environment
    (Unknown database ':memory:' → broken connection pool → 22
    previously-green tests fail with "There is already an active
    transaction").
  - Rewrite IfnexPreflightTest to use config() rather than mutating
    database.default.

- Phase 3.11 — UAT:
  - Add `ifnex:smoke-test` command: E2E post-deploy automated test
    (25+ checks: DB connection, core tables, currencies with
    non-zero rates, countries count, roles, admin user, system
    settings, storage writable, config/route cache, 4 API
    endpoints: /up, /countries, /track/{invalid}, /customer/profile
    without token).
  - Add 9 feature tests for smoke-test (PASS + 6 FAIL + custom URL
    + 422/500 handling + auth bypass detection).
  - Add `UAT-3.11.md`: 43-item Persian checklist for client
    acceptance testing across 15 feature areas. Includes sign-off
    form for both parties (client + VernaSoft).
  - Update `CLIENT_DELIVERY.md` to record phases 3.10 and 3.11.

Tests:
- Total: 51 → 82 tests, 150 → 220+ assertions, all green.
- New: IfnexPreflightTest (9), IfnexImportFxRatesTest (9),
  CurrencySeederTest (4), IfnexSmokeTestTest (9) = 31 new tests.

Documentation:
- DEPLOYMENT_HANDOFF.md §2.4: add CurrencySeeder + import-fx-rates.
- DEPLOYMENT_HANDOFF.md §2.8: update cron to use cron-exir-rates.sh.
- UAT-3.11.md: new 43-item client acceptance checklist + sign-off.
- CLIENT_DELIVERY.md: record phases 3.10 and 3.11 completion.
2026-10-31 22:18:15 +03:30
..
admin-filters.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
admin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
ajax-actions.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
bookmark.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-automatic-upgrader-skin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-bulk-plugin-upgrader-skin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-bulk-theme-upgrader-skin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-bulk-upgrader-skin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-core-upgrader.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-custom-background.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-custom-image-header.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
class-file-upload-upgrader.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-ftp-pure.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-ftp-sockets.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-ftp.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-language-pack-upgrader-skin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-language-pack-upgrader.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-pclzip.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-plugin-installer-skin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-plugin-upgrader-skin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-plugin-upgrader.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-theme-installer-skin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-theme-upgrader-skin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-theme-upgrader.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-walker-category-checklist.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-walker-nav-menu-checklist.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-walker-nav-menu-edit.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-ajax-upgrader-skin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-application-passwords-list-table.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-automatic-updater.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-comments-list-table.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-community-events.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-debug-data.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-filesystem-base.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-filesystem-direct.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-filesystem-ftpext.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-filesystem-ftpsockets.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-filesystem-ssh2.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-importer.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-internal-pointers.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-links-list-table.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-list-table-compat.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-list-table.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-media-list-table.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-ms-sites-list-table.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-ms-themes-list-table.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-ms-users-list-table.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
class-wp-plugin-install-list-table.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-plugins-list-table.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-post-comments-list-table.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-posts-list-table.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-privacy-data-export-requests-list-table.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
class-wp-privacy-data-removal-requests-list-table.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
class-wp-privacy-policy-content.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-privacy-requests-table.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
class-wp-screen.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-site-health-auto-updates.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-site-health.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-site-icon.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-terms-list-table.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
class-wp-theme-install-list-table.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-themes-list-table.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-upgrader-skin.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-upgrader-skins.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
class-wp-upgrader.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
class-wp-users-list-table.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
comment.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
continents-cities.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
credits.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
dashboard.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
deprecated.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
edit-tag-messages.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
export.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
file.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
image-edit.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
image.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
import.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
list-table.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
media.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
menu.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
meta-boxes.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
misc.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
ms-admin-filters.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
ms-deprecated.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
ms.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
nav-menu.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
network.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
noop.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
options.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
plugin-install.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
plugin.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
post.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
privacy-tools.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
revision.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
schema.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
screen.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
taxonomy.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
template.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
theme-install.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
theme.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30
translation-install.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
update-core.php feat(deploy): preflight + smoke-test + UAT checklist (phases 3.9.1–3.11) 2026-10-31 22:18:15 +03:30
update.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
upgrade.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
user.php حذف برخی پلاکین های زاید وردپرس 2026-08-29 01:45:26 +03:30
widgets.php feat: Complete Phase 1 core logic and WP bridge setup 2026-08-01 04:01:22 +03:30