Worker login device limit verification Changed branch/fields: - worker_sessions device_type bucket: pc and mobile each allow at most 3 active devices - tablet input and historical tablet rows normalize to mobile - SQL guard rejects modifications to tracked historical migration files - worker device APIs expose maxDevicesByType and deviceCounts - worker login/device-management UI states separate PC and phone quotas Artifacts: - MODIFIED_FILE: /Users/yml/codes/order_site/device-limit-artifacts/MODIFIED_FILE.ts - DIFF_FILE: /Users/yml/codes/order_site/device-limit-artifacts/DIFF_FILE.patch - VERIFICATION.txt: /Users/yml/codes/order_site/device-limit-artifacts/VERIFICATION.txt - ROLLBACK.sh: /Users/yml/codes/order_site/device-limit-artifacts/ROLLBACK.sh Source paths changed: - /Users/yml/codes/order_site/apps/backend/src/repositories/worker-platform/worker-session-repo.ts - /Users/yml/codes/order_site/apps/backend/src/services/worker-platform/worker-auth-policy.ts - /Users/yml/codes/order_site/apps/backend/src/services/worker-platform/worker-login-service.ts - /Users/yml/codes/order_site/apps/backend/src/services/worker-platform/worker-session-auth-service.ts - /Users/yml/codes/order_site/apps/backend/src/db/migrations/069_worker_session_device_type.sql - /Users/yml/codes/order_site/apps/backend/scripts/check-sql-guard.ts - /Users/yml/codes/order_site/apps/backend/src/services/worker-platform/worker-auth-policy.test.ts - /Users/yml/codes/order_site/apps/frontend/src/services/worker.ts - /Users/yml/codes/order_site/apps/frontend/src/pages/worker/WorkerLoginPage.tsx - /Users/yml/codes/order_site/apps/frontend/src/pages/worker/WorkerProfileAccountModals.tsx - /Users/yml/codes/order_site/apps/frontend/src/pages/worker/WorkerProfilePage.tsx BASELINE Command: npm test Working directory: /tmp/order_site_device_baseline_0830/apps/backend Input: detached HEAD ffb71f22 source before device-limit changes Literal result: tests 378; pass 376; fail 0; skipped 2; exit status 0 Command: npm test Working directory: /tmp/order_site_device_baseline_0830/apps/frontend Input: detached HEAD ffb71f22 source before device-limit changes Literal result: tests 15; pass 15; fail 0; skipped 0; exit status 0 Baseline worker-session-repo SHA-256: 9136d67c8f5cb3641979f8e5b577d9f4bd44f0b399862d2feaa69f2002d19ef1 MODIFIED Command: npm run check:sql Working directory: /Users/yml/codes/order_site/apps/backend Input: current tree with immutable historical migration guard enabled Literal result: [sql-guard] SQL 约束检查通过; exit status 0 Command: npm run format:check && npm run lint:check && npm run typecheck && npm test && npm run build Working directory: /Users/yml/codes/order_site/apps/backend Input: modified per-device session quota implementation and migration Literal result: format passed; lint passed; typecheck passed; tests 379; pass 377; fail 0; skipped 2; build completed; exit status 0 Command: npm run format:check && npm run lint:check && npm run typecheck && npm test && npm run build Working directory: /Users/yml/codes/order_site/apps/frontend Input: modified per-device quota API types and management UI Literal result: format passed; lint passed; typecheck passed; tests 15; pass 15; fail 0; skipped 0; build completed; exit status 0 Modified MODIFIED_FILE SHA-256: 33147b25bce759bc1af079f495d347196fda003e74f280dd41e1a194c75ff443 ROLLBACK Command: device-limit-artifacts/ROLLBACK.sh device-limit-artifacts/rollback-copy-0830 Input: independent copy containing modified backend/frontend files, migration, and regression test Literal result: restored device-limit baseline in device-limit-artifacts/rollback-copy-0830; worker-session-repo SHA-256 restored to 9136d67c8f5cb3641979f8e5b577d9f4bd44f0b399862d2feaa69f2002d19ef1; new migration and regression test removed; exit status 0 Restored behavior/status: rollback copy uses the original aggregate device-limit query and UI wording; working source and MODIFIED_FILE.ts remain changed.