diff --git a/.gitignore b/.gitignore index 40dc90a..37fd9b2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,6 @@ test-results/ .env .env.* !.env.example + +# 本地交接、审计报告和验收截图不随源码交付;README 保留项目使用说明。 +docs/ diff --git a/README.md b/README.md index c14fae2..629d62f 100644 --- a/README.md +++ b/README.md @@ -1,72 +1,145 @@ -# crashwork-console 完整前端工程(源码重建版) +# 破碎工坊云 · 会员中心前端 -这是根据当前 `20261025-kky-traffic-display` 发布包重建的独立工程,不是原始源码的逐字恢复。 -覆盖 52 个页面、104 个业务组件、4 套布局,包含现有图片、字体和样式。开发、构建和运行均不依赖旧发布目录。 -这里交付的是整个会员中心前端,不是仅含四个改写文件的示例。已只读核对服务器当前发布版本; -模块元数据及其 735 个构建资源与重建依据一致。范围、证据与边界见 [完整项目交接说明](docs/project-completeness.md)。 +面向云服务和 IDC 业务的用户控制台,提供账号管理、商品选购、服务器管理、订单支付与售后服务等页面。 +本仓库是可独立安装、开发和构建的前端工程,不包含后端服务、数据库或生产环境凭证。 -原工程的模板、注释和局部变量名已在编译时丢失。多数页面恢复为可编辑的 Vue 单文件组件及渲染函数, -部分局部变量仍为短名;请求/会话核心、应用入口、鉴权、主题和图表集成已重新编写。 -第二轮已将登录页、旧平台登录入口、SSH 密钥页和公共认证布局改为手写 ` diff --git a/docs/acceptance-assets/a-legacy-temporary-credential-is-stripped-and-reaches-the-verified-home.png b/docs/acceptance-assets/a-legacy-temporary-credential-is-stripped-and-reaches-the-verified-home.png deleted file mode 100644 index 0bae5b9..0000000 Binary files a/docs/acceptance-assets/a-legacy-temporary-credential-is-stripped-and-reaches-the-verified-home.png and /dev/null differ diff --git a/docs/acceptance-assets/a-rejected-legacy-credential-remains-removed-from-the-error-url.png b/docs/acceptance-assets/a-rejected-legacy-credential-remains-removed-from-the-error-url.png deleted file mode 100644 index 0ed8527..0000000 Binary files a/docs/acceptance-assets/a-rejected-legacy-credential-remains-removed-from-the-error-url.png and /dev/null differ diff --git a/docs/acceptance-assets/a-rejected-legacy-credential-stays-out-of-the-error-url-and-can-be-retried.png b/docs/acceptance-assets/a-rejected-legacy-credential-stays-out-of-the-error-url-and-can-be-retried.png deleted file mode 100644 index 0bae5b9..0000000 Binary files a/docs/acceptance-assets/a-rejected-legacy-credential-stays-out-of-the-error-url-and-can-be-retried.png and /dev/null differ diff --git a/docs/acceptance-assets/a-stalled-payment-status-request-cannot-swallow-the-payment-deadline.png b/docs/acceptance-assets/a-stalled-payment-status-request-cannot-swallow-the-payment-deadline.png deleted file mode 100644 index 7122171..0000000 Binary files a/docs/acceptance-assets/a-stalled-payment-status-request-cannot-swallow-the-payment-deadline.png and /dev/null differ diff --git a/docs/acceptance-assets/an-authoritative-empty-menu-does-not-expose-fallback-links.png b/docs/acceptance-assets/an-authoritative-empty-menu-does-not-expose-fallback-links.png deleted file mode 100644 index 18d0ed9..0000000 Binary files a/docs/acceptance-assets/an-authoritative-empty-menu-does-not-expose-fallback-links.png and /dev/null differ diff --git a/docs/acceptance-assets/an-envelope-401-clears-the-session-and-returns-to-login.png b/docs/acceptance-assets/an-envelope-401-clears-the-session-and-returns-to-login.png deleted file mode 100644 index 8149e66..0000000 Binary files a/docs/acceptance-assets/an-envelope-401-clears-the-session-and-returns-to-login.png and /dev/null differ diff --git a/docs/acceptance-assets/an-existing-session-entering-the-legacy-route-is-verified-again.png b/docs/acceptance-assets/an-existing-session-entering-the-legacy-route-is-verified-again.png deleted file mode 100644 index 0bae5b9..0000000 Binary files a/docs/acceptance-assets/an-existing-session-entering-the-legacy-route-is-verified-again.png and /dev/null differ diff --git a/docs/acceptance-assets/an-expired-identity-on-payment-confirmation-cannot-restart-payment-initialization.png b/docs/acceptance-assets/an-expired-identity-on-payment-confirmation-cannot-restart-payment-initialization.png deleted file mode 100644 index 8149e66..0000000 Binary files a/docs/acceptance-assets/an-expired-identity-on-payment-confirmation-cannot-restart-payment-initialization.png and /dev/null differ diff --git a/docs/acceptance-assets/auth-guard-preserves-the-protected-destination.png b/docs/acceptance-assets/auth-guard-preserves-the-protected-destination.png deleted file mode 100644 index 8149e66..0000000 Binary files a/docs/acceptance-assets/auth-guard-preserves-the-protected-destination.png and /dev/null differ diff --git a/docs/acceptance-assets/disabled-sms-login-cannot-override-the-available-password-method.png b/docs/acceptance-assets/disabled-sms-login-cannot-override-the-available-password-method.png deleted file mode 100644 index 3a6c56f..0000000 Binary files a/docs/acceptance-assets/disabled-sms-login-cannot-override-the-available-password-method.png and /dev/null differ diff --git a/docs/acceptance-assets/legacy-error-390.png b/docs/acceptance-assets/legacy-error-390.png deleted file mode 100644 index 02aa95b..0000000 Binary files a/docs/acceptance-assets/legacy-error-390.png and /dev/null differ diff --git a/docs/acceptance-assets/logging-out-of-an-open-payment-page-cannot-reinitialize-its-payment-data.png b/docs/acceptance-assets/logging-out-of-an-open-payment-page-cannot-reinitialize-its-payment-data.png deleted file mode 100644 index 8149e66..0000000 Binary files a/docs/acceptance-assets/logging-out-of-an-open-payment-page-cannot-reinitialize-its-payment-data.png and /dev/null differ diff --git a/docs/acceptance-assets/login-390.png b/docs/acceptance-assets/login-390.png deleted file mode 100644 index bd77510..0000000 Binary files a/docs/acceptance-assets/login-390.png and /dev/null differ diff --git a/docs/acceptance-assets/login-rejects-a-backslash-return-destination.png b/docs/acceptance-assets/login-rejects-a-backslash-return-destination.png deleted file mode 100644 index 0bae5b9..0000000 Binary files a/docs/acceptance-assets/login-rejects-a-backslash-return-destination.png and /dev/null differ diff --git a/docs/acceptance-assets/login-rejects-a-encoded-slash-return-destination.png b/docs/acceptance-assets/login-rejects-a-encoded-slash-return-destination.png deleted file mode 100644 index 0bae5b9..0000000 Binary files a/docs/acceptance-assets/login-rejects-a-encoded-slash-return-destination.png and /dev/null differ diff --git a/docs/acceptance-assets/login-rejects-a-protocol-relative-return-destination.png b/docs/acceptance-assets/login-rejects-a-protocol-relative-return-destination.png deleted file mode 100644 index 0bae5b9..0000000 Binary files a/docs/acceptance-assets/login-rejects-a-protocol-relative-return-destination.png and /dev/null differ diff --git a/docs/acceptance-assets/logout-clears-local-access-while-its-api-request-remains-pending.png b/docs/acceptance-assets/logout-clears-local-access-while-its-api-request-remains-pending.png deleted file mode 100644 index 8149e66..0000000 Binary files a/docs/acceptance-assets/logout-clears-local-access-while-its-api-request-remains-pending.png and /dev/null differ diff --git a/docs/acceptance-assets/logout-in-another-tab-revokes-both-visible-sessions.png b/docs/acceptance-assets/logout-in-another-tab-revokes-both-visible-sessions.png deleted file mode 100644 index 8149e66..0000000 Binary files a/docs/acceptance-assets/logout-in-another-tab-revokes-both-visible-sessions.png and /dev/null differ diff --git a/docs/acceptance-assets/password-login-uses-the-deployed-encrypted-field-contract.png b/docs/acceptance-assets/password-login-uses-the-deployed-encrypted-field-contract.png deleted file mode 100644 index 3a6c56f..0000000 Binary files a/docs/acceptance-assets/password-login-uses-the-deployed-encrypted-field-contract.png and /dev/null differ diff --git a/docs/acceptance-assets/payment-handles-the-deployed-top-level-paid-response.png b/docs/acceptance-assets/payment-handles-the-deployed-top-level-paid-response.png deleted file mode 100644 index 00f0a9b..0000000 Binary files a/docs/acceptance-assets/payment-handles-the-deployed-top-level-paid-response.png and /dev/null differ diff --git a/docs/acceptance-assets/sms-320.png b/docs/acceptance-assets/sms-320.png deleted file mode 100644 index b212659..0000000 Binary files a/docs/acceptance-assets/sms-320.png and /dev/null differ diff --git a/docs/acceptance-assets/sms-390.png b/docs/acceptance-assets/sms-390.png deleted file mode 100644 index 20ca217..0000000 Binary files a/docs/acceptance-assets/sms-390.png and /dev/null differ diff --git a/docs/acceptance-assets/sms-only-login-honors-site-settings-and-the-verification-countdown-contract.png b/docs/acceptance-assets/sms-only-login-honors-site-settings-and-the-verification-countdown-contract.png deleted file mode 100644 index 0693f8d..0000000 Binary files a/docs/acceptance-assets/sms-only-login-honors-site-settings-and-the-verification-countdown-contract.png and /dev/null differ diff --git a/docs/acceptance-assets/ssh-create-edit-and-delete-return-the-final-page-to-a-valid-page.png b/docs/acceptance-assets/ssh-create-edit-and-delete-return-the-final-page-to-a-valid-page.png deleted file mode 100644 index f1632fa..0000000 Binary files a/docs/acceptance-assets/ssh-create-edit-and-delete-return-the-final-page-to-a-valid-page.png and /dev/null differ diff --git a/docs/acceptance-assets/ssh-editor-390.png b/docs/acceptance-assets/ssh-editor-390.png deleted file mode 100644 index 981ad44..0000000 Binary files a/docs/acceptance-assets/ssh-editor-390.png and /dev/null differ diff --git a/docs/acceptance-assets/ssh-search-paginates-25-matches-without-repeating-all-rows.png b/docs/acceptance-assets/ssh-search-paginates-25-matches-without-repeating-all-rows.png deleted file mode 100644 index 0693f8d..0000000 Binary files a/docs/acceptance-assets/ssh-search-paginates-25-matches-without-repeating-all-rows.png and /dev/null differ diff --git a/docs/acceptance-assets/the-default-request-deadline-aborts-an-unfinished-json-body-and-allows-retry.png b/docs/acceptance-assets/the-default-request-deadline-aborts-an-unfinished-json-body-and-allows-retry.png deleted file mode 100644 index 682fde9..0000000 Binary files a/docs/acceptance-assets/the-default-request-deadline-aborts-an-unfinished-json-body-and-allows-retry.png and /dev/null differ diff --git a/docs/acceptance-requests.json b/docs/acceptance-requests.json deleted file mode 100644 index ac2c889..0000000 --- a/docs/acceptance-requests.json +++ /dev/null @@ -1,2408 +0,0 @@ -{ - "schemaVersion": 1, - "redaction": "Only request method/path, field names and authentication presence; no values or credentials", - "scenarios": { - "a-legacy-temporary-credential-is-stripped-and-reaches-the-verified-home.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/withdraw/rule/credit", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 14, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 15, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 16, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 17, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "a-rejected-legacy-credential-stays-out-of-the-error-url-and-can-be-retried.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/withdraw/rule/credit", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 14, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 15, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 16, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 17, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 18, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "a-stalled-payment-status-request-cannot-swallow-the-payment-deadline.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/order/42/transaction_record", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/order/42/transaction_record", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "GET", - "path": "/account", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 14, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 15, - "method": "GET", - "path": "/voucher/pay", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 16, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 17, - "method": "POST", - "path": "/pay", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 18, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 19, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 20, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 21, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 22, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 23, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 24, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 25, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 26, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 27, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 28, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 29, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 30, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 31, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 32, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 33, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 34, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 35, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 36, - "method": "GET", - "path": "/pay/42/status", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "an-authoritative-empty-menu-does-not-expose-fallback-links.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "an-envelope-401-clears-the-session-and-returns-to-login.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "an-existing-session-entering-the-legacy-route-is-verified-again.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/common", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/withdraw/rule/credit", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 14, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 15, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 16, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 17, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 18, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 19, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 20, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 21, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 22, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 23, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 24, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "an-expired-identity-on-payment-confirmation-cannot-restart-payment-initialization.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/order/42/transaction_record", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/order/42/transaction_record", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "GET", - "path": "/account", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 14, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 15, - "method": "GET", - "path": "/voucher/pay", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 16, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "auth-guard-preserves-the-protected-destination.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - } - ], - "disabled-sms-login-cannot-override-the-available-password-method.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "logging-out-of-an-open-payment-page-cannot-reinitialize-its-payment-data.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/order/42/transaction_record", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/order/42/transaction_record", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "GET", - "path": "/account", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 14, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 15, - "method": "GET", - "path": "/voucher/pay", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 16, - "method": "POST", - "path": "/logout", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "login-rejects-a-backslash-return-destination.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/withdraw/rule/credit", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 14, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 15, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 16, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 17, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 18, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "login-rejects-a-encoded-slash-return-destination.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/withdraw/rule/credit", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 14, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 15, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 16, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 17, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 18, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "login-rejects-a-protocol-relative-return-destination.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/withdraw/rule/credit", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/ticket", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 14, - "method": "GET", - "path": "/host", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 15, - "method": "GET", - "path": "/announcement", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 16, - "method": "GET", - "path": "/recommend/promoter", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 17, - "method": "GET", - "path": "/certification/info", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 18, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "logout-clears-local-access-while-its-api-request-remains-pending.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "POST", - "path": "/logout", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - } - ], - "logout-in-another-tab-revokes-both-visible-sessions.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/common", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "POST", - "path": "/logout", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "password-login-uses-the-deployed-encrypted-field-contract.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "payment-handles-the-deployed-top-level-paid-response.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/order/42/transaction_record", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/order/42/transaction_record", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "GET", - "path": "/account", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 14, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 15, - "method": "GET", - "path": "/voucher/pay", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 16, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 17, - "method": "POST", - "path": "/pay", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 18, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 19, - "method": "GET", - "path": "/gateway", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 20, - "method": "GET", - "path": "/order/42", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 21, - "method": "GET", - "path": "/order/42/transaction_record", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "sms-only-login-honors-site-settings-and-the-verification-countdown-contract.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/phone/code", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "ssh-create-edit-and-delete-return-the-final-page-to-a-valid-page.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "POST", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "PUT", - "path": "/ssh_key/12", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 13, - "method": "DELETE", - "path": "/ssh_key/12", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 14, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 15, - "method": "DELETE", - "path": "/ssh_key/11", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 16, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 17, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 18, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "ssh-search-paginates-25-matches-without-repeating-all-rows.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 9, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 10, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 11, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 12, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ], - "the-default-request-deadline-aborts-an-unfinished-json-body-and-allows-retry.requests.json": [ - { - "sequence": 1, - "method": "GET", - "path": "/common", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 2, - "method": "POST", - "path": "/login", - "authenticated": false, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 3, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 4, - "method": "GET", - "path": "/menu", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 5, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 6, - "method": "GET", - "path": "/index", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 7, - "method": "GET", - "path": "/client_care/mail", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - }, - { - "sequence": 8, - "method": "GET", - "path": "/ssh_key", - "authenticated": true, - "handled": true, - "invalidAuthorization": false - } - ] - } -} diff --git a/docs/acceptance.json b/docs/acceptance.json deleted file mode 100644 index 99cf437..0000000 --- a/docs/acceptance.json +++ /dev/null @@ -1,2057 +0,0 @@ -{ - "schemaVersion": 1, - "checkedOn": "2026-11-05", - "scope": "Second handwritten-template batch and rebuilt frontend; offline acceptance, not production", - "commands": ["npm run check", "npm run build", "npm test"], - "summary": { - "vueFilesParsed": 161, - "modulesParsed": 55, - "build": "passed", - "browserScenarios": 21, - "passed": 21, - "failed": 0, - "skipped": 0, - "browserErrors": 0, - "networkViolations": 0 - }, - "boundaries": { - "backend": "Out-of-process local HTTP fake via production NUXT_PUBLIC_API_BASE", - "browser": "Installed Google Chrome via Playwright", - "clock": "Browser clock controlled externally; no product-only test parameters", - "production": "Not contacted or modified" - }, - "limitations": [ - "Not every page or business branch has been exercised end to end", - "Real payment, CAPTCHA/OAuth, supplier and VNC integrations require staging verification", - "HTTP fake cannot guarantee real supplier response compatibility" - ], - "scenarios": [ - { - "name": "a legacy temporary credential is stripped and reaches the verified home", - "result": "passed", - "observed": { - "temporaryCredentialVerified": true, - "credentialRemovedFromVisibleUrl": true, - "referrerOmitted": true, - "homeReached": true - }, - "screenshot": "acceptance-assets/a-legacy-temporary-credential-is-stripped-and-reaches-the-verified-home.png", - "requests": [ - { - "method": "GET", - "path": "/announcement", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/certification/info", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "display_modules", - "limit", - "module", - "page", - "server_page" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "end_time", - "limit", - "orderby", - "page", - "sort", - "start_time" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/recommend/promoter", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ticket", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/withdraw/rule/credit", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "a rejected legacy credential stays out of the error URL and can be retried", - "result": "passed", - "observed": { - "rejectedCredentialNotPersisted": true, - "credentialRemovedFromErrorUrl": true, - "accountLoginAvailable": true, - "retryVerificationRecovers": true, - "recoveredWithoutNewLogin": true - }, - "screenshot": "acceptance-assets/a-rejected-legacy-credential-stays-out-of-the-error-url-and-can-be-retried.png", - "requests": [ - { - "method": "GET", - "path": "/announcement", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/certification/info", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "display_modules", - "limit", - "module", - "page", - "server_page" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "end_time", - "limit", - "orderby", - "page", - "sort", - "start_time" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/recommend/promoter", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ticket", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/withdraw/rule/credit", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "a stalled payment status request cannot swallow the payment deadline", - "result": "passed", - "observed": { - "independentDeadlineEnforced": true, - "noDuplicatePayment": true, - "sessionRetained": true - }, - "screenshot": "acceptance-assets/a-stalled-payment-status-request-cannot-swallow-the-payment-deadline.png", - "requests": [ - { - "method": "GET", - "path": "/account", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/gateway", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/order/42", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/order/42/transaction_record", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/pay/42/status", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/voucher/pay", - "queryKeys": ["order_id"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - }, - { - "method": "POST", - "path": "/pay", - "queryKeys": [], - "bodyKeys": ["gateway", "id"], - "authenticated": true - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "an authoritative empty menu does not expose fallback links", - "result": "passed", - "observed": { - "backendControlledLinksHidden": true, - "directPageUsable": true - }, - "screenshot": "acceptance-assets/an-authoritative-empty-menu-does-not-expose-fallback-links.png", - "requests": [ - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ssh_key", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "an envelope 401 clears the session and returns to login", - "result": "passed", - "observed": { - "businessStatus401Enforced": true, - "expiredSessionCleared": true - }, - "screenshot": "acceptance-assets/an-envelope-401-clears-the-session-and-returns-to-login.png", - "requests": [ - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/ssh_key", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "an existing session entering the legacy route is verified again", - "result": "passed", - "observed": { - "existingSessionReverified": true, - "noSecondPasswordLogin": true, - "homeReached": true - }, - "screenshot": "acceptance-assets/an-existing-session-entering-the-legacy-route-is-verified-again.png", - "requests": [ - { - "method": "GET", - "path": "/announcement", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/certification/info", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "display_modules", - "limit", - "module", - "page", - "server_page" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "end_time", - "limit", - "orderby", - "page", - "sort", - "start_time" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/recommend/promoter", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ssh_key", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ticket", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/withdraw/rule/credit", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "an expired identity on payment confirmation cannot restart payment initialization", - "result": "passed", - "observed": { - "expiredIdentityRevokesPaymentPage": true, - "noPaymentSubmitted": true, - "noPostExpiryPaymentInitialization": true - }, - "screenshot": "acceptance-assets/an-expired-identity-on-payment-confirmation-cannot-restart-payment-initialization.png", - "requests": [ - { - "method": "GET", - "path": "/account", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/gateway", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/order/42", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/order/42/transaction_record", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/voucher/pay", - "queryKeys": ["order_id"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "auth guard preserves the protected destination", - "result": "passed", - "observed": { - "destinationPreserved": true, - "protectedApiNotCalled": true - }, - "screenshot": "acceptance-assets/auth-guard-preserves-the-protected-destination.png", - "requests": [ - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "disabled SMS login cannot override the available password method", - "result": "passed", - "observed": { - "disabledSmsCannotBecomeInitialMode": true, - "passwordLoginAvailable": true, - "noSmsSent": true - }, - "screenshot": "acceptance-assets/disabled-sms-login-cannot-override-the-available-password-method.png", - "requests": [ - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ssh_key", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "logging out of an open payment page cannot reinitialize its payment data", - "result": "passed", - "observed": { - "logoutRevokesPaymentPage": true, - "noPostLogoutPaymentInitialization": true - }, - "screenshot": "acceptance-assets/logging-out-of-an-open-payment-page-cannot-reinitialize-its-payment-data.png", - "requests": [ - { - "method": "GET", - "path": "/account", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/gateway", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/order/42", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/order/42/transaction_record", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/voucher/pay", - "queryKeys": ["order_id"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - }, - { - "method": "POST", - "path": "/logout", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "login rejects a backslash return destination", - "result": "passed", - "observed": { - "unsafeDestinationRejected": true, - "localHomeReached": true - }, - "screenshot": "acceptance-assets/login-rejects-a-backslash-return-destination.png", - "requests": [ - { - "method": "GET", - "path": "/announcement", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/certification/info", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "display_modules", - "limit", - "module", - "page", - "server_page" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "end_time", - "limit", - "orderby", - "page", - "sort", - "start_time" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/recommend/promoter", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ticket", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/withdraw/rule/credit", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "login rejects a encoded slash return destination", - "result": "passed", - "observed": { - "unsafeDestinationRejected": true, - "localHomeReached": true - }, - "screenshot": "acceptance-assets/login-rejects-a-encoded-slash-return-destination.png", - "requests": [ - { - "method": "GET", - "path": "/announcement", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/certification/info", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "display_modules", - "limit", - "module", - "page", - "server_page" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "end_time", - "limit", - "orderby", - "page", - "sort", - "start_time" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/recommend/promoter", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ticket", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/withdraw/rule/credit", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "login rejects a protocol relative return destination", - "result": "passed", - "observed": { - "unsafeDestinationRejected": true, - "localHomeReached": true - }, - "screenshot": "acceptance-assets/login-rejects-a-protocol-relative-return-destination.png", - "requests": [ - { - "method": "GET", - "path": "/announcement", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/certification/info", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "display_modules", - "limit", - "module", - "page", - "server_page" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/host", - "queryKeys": [ - "end_time", - "limit", - "orderby", - "page", - "sort", - "start_time" - ], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/recommend/promoter", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ticket", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/withdraw/rule/credit", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "logout clears local access while its API request remains pending", - "result": "passed", - "observed": { - "localSessionClearedWithoutResponse": true, - "nextProtectedNavigationBlocked": true - }, - "screenshot": "acceptance-assets/logout-clears-local-access-while-its-api-request-remains-pending.png", - "requests": [ - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ssh_key", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - }, - { - "method": "POST", - "path": "/logout", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "logout in another tab revokes both visible sessions", - "result": "passed", - "observed": { - "sharedBrowserSessionRecognized": true, - "logoutRevokesBothTabs": true, - "noJwtPreseeding": true - }, - "screenshot": "acceptance-assets/logout-in-another-tab-revokes-both-visible-sessions.png", - "requests": [ - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ssh_key", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - }, - { - "method": "POST", - "path": "/logout", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "password login uses the deployed encrypted field contract", - "result": "passed", - "observed": { - "passwordMasked": true, - "encryptedContractValid": true, - "destinationPreserved": true - }, - "screenshot": "acceptance-assets/password-login-uses-the-deployed-encrypted-field-contract.png", - "requests": [ - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ssh_key", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "payment handles the deployed top level Paid response", - "result": "passed", - "observed": { - "paidEnvelopeAccepted": true, - "receiptReached": true, - "orderId": 42 - }, - "screenshot": "acceptance-assets/payment-handles-the-deployed-top-level-paid-response.png", - "requests": [ - { - "method": "GET", - "path": "/account", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/gateway", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/order/42", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/order/42/transaction_record", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/voucher/pay", - "queryKeys": ["order_id"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - }, - { - "method": "POST", - "path": "/pay", - "queryKeys": [], - "bodyKeys": ["gateway", "id"], - "authenticated": true - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "SMS only login honors site settings and the verification countdown contract", - "result": "passed", - "observed": { - "disabledPasswordModeRespected": true, - "emailCannotRequestSms": true, - "countdownSeconds": 60, - "countdownPreventsDuplicateSend": true, - "smsLoginContractValid": true - }, - "screenshot": "acceptance-assets/sms-only-login-honors-site-settings-and-the-verification-countdown-contract.png", - "requests": [ - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ssh_key", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "phone_code", - "remember_password", - "token", - "type" - ], - "authenticated": false - }, - { - "method": "POST", - "path": "/phone/code", - "queryKeys": [], - "bodyKeys": ["action", "captcha", "phone", "phone_code", "token"], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "SSH create edit and delete return the final page to a valid page", - "result": "passed", - "observed": { - "createPersisted": true, - "editPersisted": true, - "deletedRows": 2, - "emptyLastPageRecovered": true, - "finalVisibleRows": 10 - }, - "screenshot": "acceptance-assets/ssh-create-edit-and-delete-return-the-final-page-to-a-valid-page.png", - "requests": [ - { - "method": "DELETE", - "path": "/ssh_key/11", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "DELETE", - "path": "/ssh_key/12", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ssh_key", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - }, - { - "method": "POST", - "path": "/ssh_key", - "queryKeys": [], - "bodyKeys": ["name", "public_key"], - "authenticated": true - }, - { - "method": "PUT", - "path": "/ssh_key/12", - "queryKeys": [], - "bodyKeys": ["id", "name", "public_key"], - "authenticated": true - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "SSH search paginates 25 matches without repeating all rows", - "result": "passed", - "observed": { - "searchedRows": 25, - "pageSizes": [10, 10, 5], - "distinctRows": 25, - "ordinaryBackendPageCorrect": true, - "newSearchResetsPage": true, - "clearResetsPage": true, - "settledRowsEditable": true - }, - "screenshot": "acceptance-assets/ssh-search-paginates-25-matches-without-repeating-all-rows.png", - "requests": [ - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ssh_key", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - }, - { - "name": "the default request deadline aborts an unfinished JSON body and allows retry", - "result": "passed", - "observed": { - "headersReceived": true, - "unfinishedBodyBoundedByDefaultDeadline": true, - "loadingReleased": true, - "retryRecoveredRows": 10 - }, - "screenshot": "acceptance-assets/the-default-request-deadline-aborts-an-unfinished-json-body-and-allows-retry.png", - "requests": [ - { - "method": "GET", - "path": "/client_care/mail", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/common", - "queryKeys": [], - "bodyKeys": [], - "authenticated": false - }, - { - "method": "GET", - "path": "/index", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/menu", - "queryKeys": [], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "GET", - "path": "/ssh_key", - "queryKeys": ["limit", "page"], - "bodyKeys": [], - "authenticated": true - }, - { - "method": "POST", - "path": "/login", - "queryKeys": [], - "bodyKeys": [ - "account", - "captcha", - "code", - "password", - "remember_password", - "token", - "type" - ], - "authenticated": false - } - ], - "browserErrors": [], - "networkViolations": [] - } - ], - "standaloneArchiveCheck": { - "source": "git archive HEAD:frontend", - "cleanExtraction": true, - "commands": ["npm ci", "npm run check", "npm run build", "npm test"], - "install": "passed", - "sourceGate": "passed: 161 Vue files, 55 JS modules", - "build": "passed", - "browserTests": { - "passed": 18, - "failed": 0, - "skipped": 0 - }, - "note": "The archive was unpacked outside the repository; dependencies were freshly installed rather than reused by a symlink. Subsequent handoff edits are documentation-only." - }, - "supplementalVisualChecks": { - "scope": "Supplemental local Chrome checks, not additional automated test scenarios or pixel-identical acceptance", - "captures": [ - { - "scenario": "legacy login error and blank layout", - "screenshot": "acceptance-assets/legacy-error-390.png", - "geometry": { - "viewportWidth": 390, - "documentWidth": 390, - "card": { - "x": 14, - "y": 272, - "width": 362, - "height": 356, - "display": "block", - "gap": "normal" - }, - "captcha": null, - "codeRow": null, - "codeButton": null, - "dialog": null, - "editorForm": null, - "editorField": null - }, - "browserErrors": [], - "networkViolations": [] - }, - { - "scenario": "password login and blank layout", - "screenshot": "acceptance-assets/login-390.png", - "geometry": { - "viewportWidth": 390, - "documentWidth": 390, - "card": { - "x": 15, - "y": 94, - "width": 360, - "height": 711, - "display": "block", - "gap": "normal" - }, - "captcha": { - "x": 39, - "y": 564, - "width": 312, - "height": 78, - "display": "grid", - "gap": "normal" - }, - "codeRow": null, - "codeButton": null, - "dialog": null, - "editorForm": null, - "editorField": null - }, - "browserErrors": [], - "networkViolations": [] - }, - { - "scenario": "SMS login scoped code row", - "screenshot": "acceptance-assets/sms-320.png", - "geometry": { - "viewportWidth": 320, - "documentWidth": 320, - "card": { - "x": 15, - "y": 78, - "width": 290, - "height": 646, - "display": "block", - "gap": "normal" - }, - "captcha": { - "x": 35, - "y": 486, - "width": 250, - "height": 78, - "display": "grid", - "gap": "normal" - }, - "codeRow": { - "x": 35, - "y": 366, - "width": 250, - "height": 100, - "display": "flex", - "gap": "10px" - }, - "codeButton": { - "x": 35, - "y": 422, - "width": 250, - "height": 44, - "display": "flex", - "gap": "6.5px" - }, - "dialog": null, - "editorForm": null, - "editorField": null - }, - "browserErrors": [], - "networkViolations": [] - }, - { - "scenario": "SMS login scoped code row", - "screenshot": "acceptance-assets/sms-390.png", - "geometry": { - "viewportWidth": 390, - "documentWidth": 390, - "card": { - "x": 15, - "y": 150, - "width": 360, - "height": 600, - "display": "block", - "gap": "normal" - }, - "captcha": { - "x": 39, - "y": 508, - "width": 312, - "height": 78, - "display": "grid", - "gap": "normal" - }, - "codeRow": { - "x": 39, - "y": 442, - "width": 312, - "height": 46, - "display": "flex", - "gap": "10px" - }, - "codeButton": { - "x": 225, - "y": 442, - "width": 126, - "height": 46, - "display": "flex", - "gap": "6.5px" - }, - "dialog": null, - "editorForm": null, - "editorField": null - }, - "browserErrors": [], - "networkViolations": [] - }, - { - "scenario": "SSH editor scoped teleported fields", - "screenshot": "acceptance-assets/ssh-editor-390.png", - "geometry": { - "viewportWidth": 390, - "documentWidth": 390, - "card": null, - "captcha": null, - "codeRow": null, - "codeButton": null, - "dialog": { - "x": 12, - "y": 198, - "width": 366, - "height": 448, - "display": "flex", - "gap": "normal" - }, - "editorForm": { - "x": 29, - "y": 264, - "width": 332, - "height": 314, - "display": "flex", - "gap": "14px" - }, - "editorField": { - "x": 29, - "y": 264, - "width": 332, - "height": 83, - "display": "flex", - "gap": "7px" - } - }, - "browserErrors": [], - "networkViolations": [] - } - ], - "observed": [ - "Password visibility toggles both ways", - "Registration and password-reset hints visible", - "Register and forgot-password links preserve safe redirect", - "SSH editor prefilled values and cancel work" - ], - "knownDebt": "AUTH_THEME_CYCLE_LABEL; initial auto-to-light click is not a dark-mode test" - }, - "cleanArchiveValidation": { - "candidateCommit": "6c73598cbdb67b9aa7f67f6953d904f59a880c55b7888520835d9cec832d55d1", - "files": 686, - "commands": ["npm ci", "npm run check", "npm run build", "npm test"], - "result": "passed", - "browserScenarios": 21, - "passed": 21, - "failed": 0, - "browserErrors": 0, - "networkViolations": 0, - "normalizedScenarioOutcomes": "Identical to integrated run", - "finalChangesAfterValidation": "Documentation and ledgers only; product, lockfile and tests unchanged", - "excluded": [ - ".env", - ".git", - "node_modules", - ".nuxt", - ".output", - "releases", - "database backups" - ], - "dependencyWarnings": "12 existing findings: 6 low and 6 moderate; not resolved by this batch" - } -} diff --git a/docs/audit-coverage.json b/docs/audit-coverage.json deleted file mode 100644 index a8d952b..0000000 --- a/docs/audit-coverage.json +++ /dev/null @@ -1,9284 +0,0 @@ -{ - "schemaVersion": 1, - "checkedOn": "2026-11-05", - "scope": "Only standalone frontend/ delivery, not 130 historic releases, database backups or server services", - "conclusion": "Mechanical inventory reconciled for every delivered file. Human in-depth coverage is PARTIAL. Not a completed whole-repository or whole-feature audit.", - "counts": { - "files": 687, - "vueFiles": 161, - "appJsModules": 55, - "fullHumanCurrent": 36, - "fullHumanBeforeReformat": 12, - "remainingHumanReviewRequired": 611 - }, - "evidence": { - "static": "npm run check", - "build": "npm run build", - "browser": "acceptance.json", - "defects": "defect-ledger.json", - "dependencies": "dependency-audit.json", - "reviewNote": "Rows preserve actual read ranges. Prettier expanded generated CSS/render functions; earlier line ranges identify the reviewed snapshot. Unreviewed files are deliberately not promoted to reviewed by a passing compiler. Second-batch current full reads are recorded only for four rewritten SFCs, tests and named seams; other modules remain unreviewed.", - "serverSourceComparison": "project-completeness.md: read-only current release metadata and all 735 module assets match the reconstruction base" - }, - "requirements": [ - { - "id": "SOURCE_SCOPE", - "basis": "User requested a fresh source project from the current frontend", - "state": "in-sync", - "evidence": "module-inventory.json; 52 pages, 104 components, 4 layouts" - }, - { - "id": "INDEPENDENT_RUNTIME", - "basis": "Standalone development/build without old release imports or credentials", - "state": "in-sync", - "evidence": "AST gate, build, preview and local browser suite; no .env in handoff" - }, - { - "id": "EXISTING_PROTOCOL", - "basis": "Published route paths and restored API client field contract", - "state": "partially-verified", - "evidence": "AES login, session guard, SSH and payment envelope scenarios; remaining endpoints need staging" - }, - { - "id": "PRODUCTION_BUSINESS", - "basis": "Real backend, vendor, financial and VNC behavior", - "state": "unverified", - "evidence": "Not contacted; staging acceptance required" - }, - { - "id": "ORIGINAL_SOURCES", - "basis": "Original comments, templates and local variable names", - "state": "unrecoverable-from-available-input", - "evidence": "Only deployed compiled modules available; no verbatim restoration claimed" - }, - { - "id": "FULL_SPEC_SYNC", - "basis": "Original detailed business requirement documents", - "state": "unverified", - "evidence": "No complete authoritative original specification available; route/build parity is not a full spec-code audit" - }, - { - "id": "HANDWRITTEN_TEMPLATE_BATCH", - "basis": "Continue maintainable source rebuilding while preserving published routes, APIs and styling", - "state": "in-sync", - "evidence": "Four handwritten SFCs; cross-review and 21/21 local browser scenarios" - }, - { - "id": "LOGIN_MODES_SMS", - "basis": "Preserve enabled login modes, SMS fields and 60-second resend contract", - "state": "offline-verified", - "evidence": "SMS-only and disabled-SMS scenarios; real delivery unverified" - }, - { - "id": "SSH_MUTATIONS", - "basis": "Preserve key mutation fields and valid pagination after deleting the final page", - "state": "offline-verified", - "evidence": "Form interactions and external POST/PUT/DELETE/readback assertions" - }, - { - "id": "LEGACY_RETRY", - "basis": "Rejected credential remains out of URL and can be verified again without password login", - "state": "offline-verified", - "evidence": "Real retry /index verifies same pending credential without referrer" - } - ], - "routes": [ - { - "source": "pages/account/realname/company.vue", - "path": "/account/realname/company", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/account/realname/personal.vue", - "path": "/account/realname/personal", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/orders/order/paid.vue", - "path": "/orders/order/paid", - "build": "passed", - "browserCoverage": "partial-business-scenarios-see-acceptance" - }, - { - "source": "pages/orders/order/pay.vue", - "path": "/orders/order/pay", - "build": "passed", - "browserCoverage": "partial-business-scenarios-see-acceptance" - }, - { - "source": "pages/products/dedicated-server/customize.vue", - "path": "/products/dedicated-server/customize", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/account/api-keys.vue", - "path": "/account/api-keys", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/account/connections.vue", - "path": "/account/connections", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/account/realname/index.vue", - "path": "/account/realname", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/invoices/invoice.vue", - "path": "/invoices/invoice", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/invoices/request.vue", - "path": "/invoices/request", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/invoices/settings/index.vue", - "path": "/invoices/settings", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/oauth/bind.vue", - "path": "/oauth/bind", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/oauth/callback.vue", - "path": "/oauth/callback", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/orders/order/index.vue", - "path": "/orders/order", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/products/cloud-server.vue", - "path": "/products/cloud-server", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/products/dedicated-server/index.vue", - "path": "/products/dedicated-server", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/security/domains/index.vue", - "path": "/security/domains", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/security/groups/index.vue", - "path": "/security/groups", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/security/ssh-keys/index.vue", - "path": "/security/ssh-keys", - "build": "passed", - "browserCoverage": "partial-business-scenarios-see-acceptance" - }, - { - "source": "pages/servers/server.vue", - "path": "/servers/server", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/tickets/create.vue", - "path": "/tickets/create", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/tickets/ticket.vue", - "path": "/tickets/ticket", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/bills/[id].vue", - "path": "/bills/:id()", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/orders/[id].vue", - "path": "/orders/:id()", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/products/[id].vue", - "path": "/products/:id()", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/tickets/[id].vue", - "path": "/tickets/:id()", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/account/index.vue", - "path": "/account", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/bills/index.vue", - "path": "/bills", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/cart/index.vue", - "path": "/cart", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/cloud-servers/index.vue", - "path": "/cloud-servers", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/dedicated-servers/index.vue", - "path": "/dedicated-servers", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/finance/index.vue", - "path": "/finance", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/forgot-password.vue", - "path": "/forgot-password", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/help.vue", - "path": "/help", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/home.htm.vue", - "path": "/home.htm", - "build": "passed", - "browserCoverage": "partial-business-scenarios-see-acceptance" - }, - { - "source": "pages/invoices/index.vue", - "path": "/invoices", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/logbook/index.vue", - "path": "/logbook", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/login.vue", - "path": "/login", - "build": "passed", - "browserCoverage": "partial-business-scenarios-see-acceptance" - }, - { - "source": "pages/messages/index.vue", - "path": "/messages", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/news.vue", - "path": "/news", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/notices/index.vue", - "path": "/notices", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/official-site.vue", - "path": "/official-site", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/orders/index.vue", - "path": "/orders", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/products/index.vue", - "path": "/products", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/recommend/index.vue", - "path": "/recommend", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/register.vue", - "path": "/register", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/remote-console.vue", - "path": "/remote-console", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/resources.vue", - "path": "/resources", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/tickets/index.vue", - "path": "/tickets", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/transfer/index.vue", - "path": "/transfer", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/vouchers/index.vue", - "path": "/vouchers", - "build": "passed", - "browserCoverage": "not-executed-end-to-end" - }, - { - "source": "pages/index.vue", - "path": "/", - "build": "passed", - "browserCoverage": "partial-business-scenarios-see-acceptance" - } - ], - "files": [ - { - "path": ".env.example", - "lines": 3, - "bytes": 150, - "mechanical": ["file-inventory"], - "human": { - "status": "full", - "ranges": [[1, 3]], - "snapshot": "current formatted source" - } - }, - { - "path": ".gitignore", - "lines": 8, - "bytes": 77, - "mechanical": ["file-inventory"], - "human": { - "status": "full", - "ranges": [[1, 8]], - "snapshot": "current formatted source" - } - }, - { - "path": "app/app.vue", - "lines": 35, - "bytes": 1260, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 35]], - "snapshot": "current formatted source" - } - }, - { - "path": "app/assets/styles/_id_.C-0--Lx-.css", - "lines": 287, - "bytes": 6035, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "full", - "ranges": [[1, 287]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/assets/styles/_id_.CSXsMADH.css", - "lines": 59, - "bytes": 1176, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "full", - "ranges": [[1, 59]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/assets/styles/_id_.gjoJy9S8.css", - "lines": 431, - "bytes": 9874, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "full", - "ranges": [[1, 431]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/assets/styles/account.CTvLXxT_.css", - "lines": 198, - "bytes": 3907, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "full", - "ranges": [[1, 198]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/assets/styles/api-keys.Bq3Csr53.css", - "lines": 46, - "bytes": 903, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current", - "currentBatchReadRanges": [ - [80, 155], - [250, 345] - ] - } - }, - { - "path": "app/assets/styles/AuthProviders.CgAWouSf.css", - "lines": 211, - "bytes": 4546, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/BackendNavEntry.Bx6IPica.css", - "lines": 23, - "bytes": 496, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/BackendNavigation.CEj4LnzI.css", - "lines": 21, - "bytes": 458, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/bind.CFZQE2UH.css", - "lines": 73, - "bytes": 1540, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/blank.DOa3C9wi.css", - "lines": 268, - "bytes": 5253, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/BuildUpdateNotice.CuqdqvlF.css", - "lines": 31, - "bytes": 646, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/CaptchaField.BSN3ZbsD.css", - "lines": 37, - "bytes": 762, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/cart.CSS2vTmS.css", - "lines": 299, - "bytes": 6232, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ChartBox.CYP_mhat.css", - "lines": 9, - "bytes": 142, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ClientLevelDialog.DcYabp-W.css", - "lines": 52, - "bytes": 1088, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/cloud-server.CcwlOXJ0.css", - "lines": 15, - "bytes": 274, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/CloudAccessExtras.CnBJlFAZ.css", - "lines": 68, - "bytes": 1482, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/CloudProductPicker.CAm9rmUl.css", - "lines": 122, - "bytes": 2867, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/CommonConfig.Cfik-oMe.css", - "lines": 46, - "bytes": 936, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/CommonManage.qcc2l13i.css", - "lines": 85, - "bytes": 1798, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/CommonUpgrade.C8sZ-ExM.css", - "lines": 30, - "bytes": 698, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ConfigBandwidth.CWSH1WJZ.css", - "lines": 120, - "bytes": 2822, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ConfigDiskAdd.C92e9ZuF.css", - "lines": 45, - "bytes": 1045, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ConfigDiskCard.Dx9IqqQ_.css", - "lines": 152, - "bytes": 3624, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ConfigResourceOption.Dj4VopnA.css", - "lines": 23, - "bytes": 473, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ConsoleLegalFooter.DAYWmXIB.css", - "lines": 50, - "bytes": 1223, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/create.gX6gpD00.css", - "lines": 289, - "bytes": 5897, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/customize.Cc123Awf.css", - "lines": 45, - "bytes": 933, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/DcimActions.Da2op5wy.css", - "lines": 36, - "bytes": 666, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/DcimBilling.QV7PUjnH.css", - "lines": 78, - "bytes": 1650, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/DcimDefence.BYaQccXZ.css", - "lines": 72, - "bytes": 1507, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/DcimDomains.BT2s5hGW.css", - "lines": 26, - "bytes": 546, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/DcimManage.BlqFeSOi.css", - "lines": 425, - "bytes": 9052, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/DcimMonitor.CiStTCbZ.css", - "lines": 84, - "bytes": 1775, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/DcimReinstallStatus.CuXeXmZ3.css", - "lines": 20, - "bytes": 400, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/DcimUpgrade.DaLApYFa.css", - "lines": 17, - "bytes": 332, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/dedicated-server.CiJfMYtk.css", - "lines": 391, - "bytes": 8964, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/default.DFUVVR1i.css", - "lines": 516, - "bytes": 10523, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/domains.GiD6NSti.css", - "lines": 113, - "bytes": 2313, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/entry.Cs9kvuGi.css", - "lines": 2407, - "bytes": 42646, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/error-404.IMo4BvbT.css", - "lines": 131, - "bytes": 2871, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/error-500.CT6S2vcm.css", - "lines": 102, - "bytes": 2265, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/finance.BkxKMno0.css", - "lines": 286, - "bytes": 6392, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/FinanceConfig.CLwX1CC8.css", - "lines": 34, - "bytes": 772, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/FlowPacketPanel.-RJSx13z.css", - "lines": 143, - "bytes": 3051, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/GeetestField.DiieTibK.css", - "lines": 44, - "bytes": 1158, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/GenericOAuthProviders.Bv8oNwXP.css", - "lines": 22, - "bytes": 434, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/GlobalSearch.BQqObidy.css", - "lines": 104, - "bytes": 2421, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/groups.Buw8nwl1.css", - "lines": 289, - "bytes": 6061, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/help.BSOB30LE.css", - "lines": 292, - "bytes": 6354, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/home.DWX5YkpJ.css", - "lines": 30, - "bytes": 704, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/HomeConsumeTrend.DfrmEdD9.css", - "lines": 3, - "bytes": 57, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/HomeExpiringPanel.Ckflw2Hv.css", - "lines": 17, - "bytes": 400, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/HomeNoticePanel.e5-qgzAs.css", - "lines": 57, - "bytes": 1313, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/HomeReferralPanel.DsgN33ME.css", - "lines": 156, - "bytes": 3612, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/HomeServerPanel.Do7AgMDx.css", - "lines": 107, - "bytes": 2412, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/HomeTicketPanel.LxPesukM.css", - "lines": 21, - "bytes": 423, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/HomeTicketStat.C4kzybrY.css", - "lines": 30, - "bytes": 723, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/HomeWalletCard.C5SHzGlJ.css", - "lines": 35, - "bytes": 721, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/HostList.B3U15sJm.css", - "lines": 328, - "bytes": 7388, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceAccess.DIZBrksv.css", - "lines": 284, - "bytes": 5972, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceBilling.CvIGLT2J.css", - "lines": 143, - "bytes": 3008, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceDisks.Ca7NZxYd.css", - "lines": 98, - "bytes": 2048, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceLoadingShell.CwfiUwdU.css", - "lines": 80, - "bytes": 1815, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceManage.apzbBV1c.css", - "lines": 25, - "bytes": 531, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceMonitor.B0X15iQt.css", - "lines": 64, - "bytes": 1376, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css", - "lines": 44, - "bytes": 1011, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceNetwork.CyucZaZp.css", - "lines": 160, - "bytes": 3568, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceOnDemand.okGWwgIJ.css", - "lines": 25, - "bytes": 457, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceOverview.C9ExpxMB.css", - "lines": 241, - "bytes": 5061, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceRenewDialog.BHDAL6d3.css", - "lines": 81, - "bytes": 1690, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceServiceInfo.BftSVIeW.css", - "lines": 60, - "bytes": 1240, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceSmsCode.CsITfIEU.css", - "lines": 12, - "bytes": 196, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/InstanceTraffic.CyyEAXl3.css", - "lines": 93, - "bytes": 2202, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/invoice.B6sYFYlb.css", - "lines": 82, - "bytes": 1803, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/invoices.t1P1GXOx.css", - "lines": 169, - "bytes": 3739, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/JyCloudConfig.kGfttaHi.css", - "lines": 239, - "bytes": 6071, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/KkyEcsConfig.BFaAwQPZ.css", - "lines": 43, - "bytes": 965, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/KkyUpgrade.CkDmxFBM.css", - "lines": 229, - "bytes": 5152, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/LegacyDcimActions.DcIrQby6.css", - "lines": 34, - "bytes": 618, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/LegacyDcimManage.5YRq508t.css", - "lines": 236, - "bytes": 4945, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/LegacyProductUpgrade.dzWGwGgY.css", - "lines": 8, - "bytes": 159, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/logbook.Y7gm684m.css", - "lines": 71, - "bytes": 1465, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/login.Clyo2_3T.css", - "lines": 41, - "bytes": 1013, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/messages.asRdYcVu.css", - "lines": 193, - "bytes": 4099, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/MfCloudBackupPanel.BTlEe-fy.css", - "lines": 117, - "bytes": 2766, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/MfCloudConfig.DbgUu8qr.css", - "lines": 30, - "bytes": 640, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/MfCloudDefence.B2vl5Yip.css", - "lines": 19, - "bytes": 342, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/MfCloudIps.jhFnuvcs.css", - "lines": 65, - "bytes": 1349, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/MfCloudLogs.MTqtLGjA.css", - "lines": 63, - "bytes": 1288, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/MfCloudNat.C1uXa4fX.css", - "lines": 15, - "bytes": 280, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/MfCloudResourceUpgrade.bSwLWjPg.css", - "lines": 57, - "bytes": 1367, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/MfCloudUpgrade.N7TNG8F1.css", - "lines": 109, - "bytes": 2391, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/MfCloudVpc.CpOEbuWs.css", - "lines": 15, - "bytes": 280, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/MfDcimConfig.BhC_eZ0V.css", - "lines": 175, - "bytes": 3909, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/news.CbIzdrjt.css", - "lines": 198, - "bytes": 4218, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/notices.BXNGOj-Q.css", - "lines": 186, - "bytes": 4014, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/NotificationPreferences.DcH8Noxd.css", - "lines": 72, - "bytes": 1610, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/official-site.pBD-PXD7.css", - "lines": 1180, - "bytes": 24900, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/OperationToasts.DfA_b8om.css", - "lines": 71, - "bytes": 1556, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/orders.BflDlvVz.css", - "lines": 63, - "bytes": 1414, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/OsIcon.CAi4Iz2S.css", - "lines": 10, - "bytes": 217, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/PageInfoNotice._16xRFrB.css", - "lines": 31, - "bytes": 684, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/pages.DytekQXu.css", - "lines": 261, - "bytes": 5602, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/PageSteps.B5K7G9zF.css", - "lines": 66, - "bytes": 1594, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/PaymentDialog.BNFKQF1U.css", - "lines": 283, - "bytes": 6157, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/PhoneCodeField.CwyHXfML.css", - "lines": 33, - "bytes": 819, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ProductCategoryNotice.CwaR3eXN.css", - "lines": 115, - "bytes": 2954, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ProductConfigurationSummary.BqZns1LB.css", - "lines": 16, - "bytes": 346, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ProductCustomFields.B2QMnPil.css", - "lines": 12, - "bytes": 266, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ProductDescription.Ctb7jDuO.css", - "lines": 274, - "bytes": 6645, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ProductGroupLabel.B1kWpFA-.css", - "lines": 32, - "bytes": 759, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/products.CrccEo2m.css", - "lines": 435, - "bytes": 10058, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/PromoCodeField.qFEkB6Hm.css", - "lines": 35, - "bytes": 663, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/public-order.0RThfr7m.css", - "lines": 107, - "bytes": 2439, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/realname.BpRCvfXO.css", - "lines": 273, - "bytes": 5612, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/RechargeDialog.DpsMly4r.css", - "lines": 47, - "bytes": 1112, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/recommend.C1KCHBPJ.css", - "lines": 304, - "bytes": 6951, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/RemfUpgrade.4stQ5ASH.css", - "lines": 92, - "bytes": 2073, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/remote-console.zcxaOxxS.css", - "lines": 120, - "bytes": 2515, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/RemoteConsole.DLmX5UZu.css", - "lines": 233, - "bytes": 4688, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/resources._aUrMsvM.css", - "lines": 56, - "bytes": 1223, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/RichTextEditor.NkmgPT5m.css", - "lines": 48, - "bytes": 1139, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/RingProgress.CVwR7il5.css", - "lines": 27, - "bytes": 540, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/RoxyMascot.CDqPSf2d.css", - "lines": 471, - "bytes": 9281, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/SecurityVerificationDialog.skYFo4v7.css", - "lines": 32, - "bytes": 603, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/SensitiveValue.BSZlaRHT.css", - "lines": 35, - "bytes": 834, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/server.DGuhrprb.css", - "lines": 292, - "bytes": 5876, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/settings.zV3AWuRw.css", - "lines": 198, - "bytes": 4240, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/ssh-keys.WWTOf2zG.css", - "lines": 112, - "bytes": 2357, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/TicketAttachments.DtbJGLkE.css", - "lines": 150, - "bytes": 3375, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/tickets.Dz8JrDhQ.css", - "lines": 120, - "bytes": 2518, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/transfer.CAsJhVUW.css", - "lines": 278, - "bytes": 5837, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/UploadField.BbTCTv6C.css", - "lines": 44, - "bytes": 879, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/vouchers.5FV4ozrh.css", - "lines": 341, - "bytes": 7614, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/WechatConnection.DI5ko1xy.css", - "lines": 15, - "bytes": 304, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/assets/styles/WithdrawDialog.ks0wdKEK.css", - "lines": 97, - "bytes": 2062, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/AuthProviders.vue", - "lines": 726, - "bytes": 29860, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 726]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/components/BackendNavEntry.vue", - "lines": 433, - "bytes": 15841, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 433]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/components/BackendNavigation.vue", - "lines": 153, - "bytes": 5204, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 148]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers." - } - }, - { - "path": "app/components/BuildUpdateNotice.vue", - "lines": 177, - "bytes": 5837, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current", - "currentBatchReadRanges": [[1, 365]] - } - }, - { - "path": "app/components/CaptchaField.vue", - "lines": 230, - "bytes": 8255, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/ChartBox.vue", - "lines": 87, - "bytes": 2204, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 46]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers." - } - }, - { - "path": "app/components/ClientLevelDialog.vue", - "lines": 449, - "bytes": 20225, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/CloudProductPicker.vue", - "lines": 449, - "bytes": 18754, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/CommonConfig.vue", - "lines": 2478, - "bytes": 141450, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/ConfigBandwidth.vue", - "lines": 305, - "bytes": 10194, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/ConfigCheckout.vue", - "lines": 657, - "bytes": 22494, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/ConfigChoiceGrid.vue", - "lines": 140, - "bytes": 4296, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/ConfigDiskAdd.vue", - "lines": 66, - "bytes": 1788, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/ConfigDiskCard.vue", - "lines": 346, - "bytes": 12272, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/ConfigLoadingShell.vue", - "lines": 197, - "bytes": 6293, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/ConfigResourceOption.vue", - "lines": 233, - "bytes": 8102, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/FinanceConfig.vue", - "lines": 1861, - "bytes": 96691, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/JyCloudConfig.vue", - "lines": 2288, - "bytes": 104773, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/KkyEcsConfig.vue", - "lines": 1597, - "bytes": 60613, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/MfCloudConfig.vue", - "lines": 2806, - "bytes": 118715, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/MfDcimConfig.vue", - "lines": 2060, - "bytes": 90140, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/ProductCustomFields.vue", - "lines": 268, - "bytes": 10986, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/config/PromoCodeField.vue", - "lines": 193, - "bytes": 6326, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/ConsoleLegalFooter.vue", - "lines": 69, - "bytes": 1795, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/GeetestField.vue", - "lines": 372, - "bytes": 11095, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "partial", - "ranges": [[1, 210]], - "snapshot": "Ranges refer to pre-format review; no full file review claimed" - } - }, - { - "path": "app/components/GenericOAuthProviders.vue", - "lines": 162, - "bytes": 6047, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/GlobalSearch.vue", - "lines": 403, - "bytes": 16137, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/home/HomeConsumeTrend.vue", - "lines": 295, - "bytes": 9037, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/home/HomeExpiringPanel.vue", - "lines": 268, - "bytes": 9255, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/home/HomeNoticePanel.vue", - "lines": 440, - "bytes": 16082, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/home/HomeReferralPanel.vue", - "lines": 427, - "bytes": 16574, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/home/HomeServerPanel.vue", - "lines": 491, - "bytes": 19464, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/home/HomeTicketPanel.vue", - "lines": 394, - "bytes": 15577, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/home/HomeTicketStat.vue", - "lines": 197, - "bytes": 6531, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/home/HomeWalletCard.vue", - "lines": 206, - "bytes": 6678, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/home/RoxyMascot.vue", - "lines": 36, - "bytes": 3031, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/HostList.vue", - "lines": 3656, - "bytes": 159009, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/CloudAccessExtras.vue", - "lines": 172, - "bytes": 5878, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/CommonManage.vue", - "lines": 1583, - "bytes": 70438, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/CommonUpgrade.vue", - "lines": 1443, - "bytes": 54999, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/DcimActions.vue", - "lines": 838, - "bytes": 35109, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/DcimBilling.vue", - "lines": 989, - "bytes": 39087, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/DcimDefence.vue", - "lines": 636, - "bytes": 24571, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/DcimDomains.vue", - "lines": 356, - "bytes": 12607, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/DcimManage.vue", - "lines": 3320, - "bytes": 181153, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/DcimMonitor.vue", - "lines": 343, - "bytes": 11497, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/DcimReinstallStatus.vue", - "lines": 163, - "bytes": 5095, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/DcimUpgrade.vue", - "lines": 613, - "bytes": 24080, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/FlowPacketPanel.vue", - "lines": 681, - "bytes": 28346, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/ImagePurchaseDialog.vue", - "lines": 275, - "bytes": 9334, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceAccess.vue", - "lines": 2202, - "bytes": 90378, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceBilling.vue", - "lines": 1422, - "bytes": 55099, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceDisks.vue", - "lines": 1351, - "bytes": 55079, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceLoadingShell.vue", - "lines": 166, - "bytes": 5535, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceManage.vue", - "lines": 882, - "bytes": 38297, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceMonitor.vue", - "lines": 757, - "bytes": 26048, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceMonitorSkeleton.vue", - "lines": 147, - "bytes": 4548, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceNetwork.vue", - "lines": 926, - "bytes": 33295, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceOnDemand.vue", - "lines": 797, - "bytes": 29025, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceOverview.vue", - "lines": 1866, - "bytes": 73672, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceRenewDialog.vue", - "lines": 640, - "bytes": 26016, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceServiceInfo.vue", - "lines": 435, - "bytes": 16101, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceSmsCode.vue", - "lines": 223, - "bytes": 7286, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceStatusTag.vue", - "lines": 45, - "bytes": 1017, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/InstanceTraffic.vue", - "lines": 641, - "bytes": 26016, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/LegacyDcimActions.vue", - "lines": 870, - "bytes": 34434, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/LegacyDcimManage.vue", - "lines": 2112, - "bytes": 114740, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/LegacyProductUpgrade.vue", - "lines": 340, - "bytes": 11944, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/RemfUpgrade.vue", - "lines": 641, - "bytes": 26796, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/instance/RemoteConsole.vue", - "lines": 923, - "bytes": 34984, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 843]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers." - } - }, - { - "path": "app/components/kkyecs/KkyUpgrade.vue", - "lines": 1435, - "bytes": 73743, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/ListEmpty.vue", - "lines": 56, - "bytes": 1341, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/ListSegments.vue", - "lines": 74, - "bytes": 1892, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/mfcloud/MfCloudDefence.vue", - "lines": 511, - "bytes": 17409, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/mfcloud/MfCloudIps.vue", - "lines": 726, - "bytes": 25827, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/mfcloud/MfCloudLogs.vue", - "lines": 406, - "bytes": 14423, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/mfcloud/MfCloudNat.vue", - "lines": 744, - "bytes": 28019, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/mfcloud/MfCloudResourceUpgrade.vue", - "lines": 572, - "bytes": 23041, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/mfcloud/MfCloudUpgrade.vue", - "lines": 493, - "bytes": 17512, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/mfcloud/MfCloudVpc.vue", - "lines": 864, - "bytes": 31708, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/MfCloudBackupPanel.vue", - "lines": 1364, - "bytes": 50372, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/NotificationPreferences.vue", - "lines": 379, - "bytes": 13960, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/OperatePasswordGate.vue", - "lines": 36, - "bytes": 939, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/OperationNotice.vue", - "lines": 52, - "bytes": 1139, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/OperationToasts.vue", - "lines": 123, - "bytes": 3845, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 114]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers." - } - }, - { - "path": "app/components/OsIcon.vue", - "lines": 124, - "bytes": 3627, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/PageInfoNotice.vue", - "lines": 49, - "bytes": 1053, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/PageSteps.vue", - "lines": 100, - "bytes": 2890, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/PaymentDialog.vue", - "lines": 2030, - "bytes": 89755, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 1721]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers." - } - }, - { - "path": "app/components/PhoneCodeField.vue", - "lines": 173, - "bytes": 5133, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/ProductCategoryNotice.vue", - "lines": 91, - "bytes": 2938, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/ProductConfigurationSummary.vue", - "lines": 454, - "bytes": 14796, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/ProductDescription.vue", - "lines": 592, - "bytes": 17684, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/ProductGroupLabel.vue", - "lines": 77, - "bytes": 1859, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/RechargeDialog.vue", - "lines": 253, - "bytes": 9152, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/RichTextEditor.vue", - "lines": 248, - "bytes": 7611, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/RingProgress.vue", - "lines": 128, - "bytes": 3855, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/SecurityVerificationDialog.vue", - "lines": 635, - "bytes": 23320, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/SensitiveValue.vue", - "lines": 166, - "bytes": 4743, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/TicketAttachments.vue", - "lines": 457, - "bytes": 19196, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/TicketNotice.vue", - "lines": 119, - "bytes": 3471, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/UploadField.vue", - "lines": 191, - "bytes": 5769, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/WechatConnection.vue", - "lines": 296, - "bytes": 11511, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/components/WithdrawDialog.vue", - "lines": 965, - "bytes": 41098, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/config/locale.zh-CN.json", - "lines": 80, - "bytes": 1865, - "mechanical": ["json-parse"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/config/primevue.js", - "lines": 37, - "bytes": 1045, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/layouts/blank.vue", - "lines": 50, - "bytes": 1659, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 50]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/layouts/default.vue", - "lines": 1318, - "bytes": 58254, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "partial", - "ranges": [[80, 510]], - "snapshot": "Ranges refer to pre-format review; no full file review claimed" - } - }, - { - "path": "app/layouts/official-site.vue", - "lines": 587, - "bytes": 21748, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/layouts/public-order.vue", - "lines": 224, - "bytes": 7039, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/_plugin-vue_export-helper.js", - "lines": 6, - "bytes": 116, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/auth-redirect.js", - "lines": 29, - "bytes": 592, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 29]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/lib/auth.js", - "lines": 856, - "bytes": 24766, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 728]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers.", - "currentBatchReadRanges": [[630, 824]] - } - }, - { - "path": "app/lib/backend-menu.js", - "lines": 380, - "bytes": 10851, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/bandwidth-display.js", - "lines": 7, - "bytes": 174, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/cart-edit.js", - "lines": 104, - "bytes": 2715, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/cloud-instance-management.js", - "lines": 162, - "bytes": 4377, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/common-advanced-rules.js", - "lines": 261, - "bytes": 7601, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/complete-list.js", - "lines": 44, - "bytes": 1429, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 44]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/lib/composables-2.js", - "lines": 2, - "bytes": 38, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/configuration-display.js", - "lines": 100, - "bytes": 2960, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/content-route.js", - "lines": 25, - "bytes": 613, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/dict.js", - "lines": 127, - "bytes": 2605, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/finance-resource-chart.js", - "lines": 41, - "bytes": 1311, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/instance-data.js", - "lines": 250, - "bytes": 6747, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/instance-status.js", - "lines": 95, - "bytes": 2573, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/interval.js", - "lines": 2, - "bytes": 51, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/invoice.js", - "lines": 28, - "bytes": 946, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/modules.js", - "lines": 62, - "bytes": 1608, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/navigation-state.js", - "lines": 76, - "bytes": 1845, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 67]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers." - } - }, - { - "path": "app/lib/oauth.js", - "lines": 67, - "bytes": 1643, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/order-image-continuation.js", - "lines": 42, - "bytes": 1022, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/os-name.js", - "lines": 78, - "bytes": 2574, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/password-2.js", - "lines": 21, - "bytes": 542, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/product-description-data.js", - "lines": 26, - "bytes": 597, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/product-fields.js", - "lines": 214, - "bytes": 5418, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/product-name.js", - "lines": 17, - "bytes": 553, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/product-order-module.js", - "lines": 23, - "bytes": 843, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/purchase-limit-state.js", - "lines": 48, - "bytes": 1181, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/remote-console.js", - "lines": 21, - "bytes": 477, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 21]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers." - } - }, - { - "path": "app/lib/renewal-quote.js", - "lines": 34, - "bytes": 826, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/rolldown-runtime.js", - "lines": 72, - "bytes": 1790, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/sanitize.js", - "lines": 122, - "bytes": 3498, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/server-page.js", - "lines": 253, - "bytes": 6580, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/storage-capacity.js", - "lines": 466, - "bytes": 13016, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/ticketAttachments.js", - "lines": 86, - "bytes": 2217, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/useCaptcha.js", - "lines": 202, - "bytes": 5417, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 202]], - "snapshot": "current formatted source" - } - }, - { - "path": "app/lib/useListPage.js", - "lines": 176, - "bytes": 4177, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 154]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers." - } - }, - { - "path": "app/lib/useMailbox.js", - "lines": 48, - "bytes": 1131, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 42]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers." - } - }, - { - "path": "app/lib/useOAuth.js", - "lines": 42, - "bytes": 1067, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/useOfficialSiteContent.js", - "lines": 417, - "bytes": 10290, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/useSiteConfig.js", - "lines": 47, - "bytes": 1251, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 47]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/lib/useTheme.js", - "lines": 73, - "bytes": 1643, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 73]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/lib/useVerifyCode.js", - "lines": 83, - "bytes": 1943, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 83]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/lib/useWithdrawAvailability.js", - "lines": 50, - "bytes": 1350, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/lib/wechat-binding.js", - "lines": 35, - "bytes": 856, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/middleware/auth.global.js", - "lines": 53, - "bytes": 1825, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 53]], - "snapshot": "current formatted source" - } - }, - { - "path": "app/pages/account/api-keys.vue", - "lines": 927, - "bytes": 31490, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/account/connections.vue", - "lines": 407, - "bytes": 14121, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/account/index.vue", - "lines": 2899, - "bytes": 146341, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/account/realname/company.vue", - "lines": 23, - "bytes": 601, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/account/realname/index.vue", - "lines": 2577, - "bytes": 122998, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/account/realname/personal.vue", - "lines": 23, - "bytes": 601, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/bills/[id].vue", - "lines": 25, - "bytes": 603, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/bills/index.vue", - "lines": 38, - "bytes": 764, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/cart/index.vue", - "lines": 1372, - "bytes": 51127, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/cloud-servers/index.vue", - "lines": 92, - "bytes": 2606, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/dedicated-servers/index.vue", - "lines": 92, - "bytes": 2623, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/finance/index.vue", - "lines": 1909, - "bytes": 83004, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/forgot-password.vue", - "lines": 520, - "bytes": 16770, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/help.vue", - "lines": 741, - "bytes": 30288, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/home.htm.vue", - "lines": 105, - "bytes": 2812, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 105]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/pages/index.vue", - "lines": 675, - "bytes": 25705, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/invoices/index.vue", - "lines": 2379, - "bytes": 105202, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/invoices/invoice.vue", - "lines": 623, - "bytes": 25098, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/invoices/request.vue", - "lines": 17, - "bytes": 483, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/invoices/settings/index.vue", - "lines": 1392, - "bytes": 53418, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/logbook/index.vue", - "lines": 393, - "bytes": 13013, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/login.vue", - "lines": 568, - "bytes": 18270, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 568]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/pages/messages/index.vue", - "lines": 904, - "bytes": 32769, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/news.vue", - "lines": 576, - "bytes": 19772, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/notices/index.vue", - "lines": 543, - "bytes": 19049, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/oauth/bind.vue", - "lines": 614, - "bytes": 23018, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "partial", - "ranges": [[120, 175]], - "snapshot": "Ranges refer to pre-format review; no full file review claimed" - } - }, - { - "path": "app/pages/oauth/callback.vue", - "lines": 149, - "bytes": 4432, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "partial", - "ranges": [[35, 85]], - "snapshot": "Ranges refer to pre-format review; no full file review claimed" - } - }, - { - "path": "app/pages/official-site.vue", - "lines": 1088, - "bytes": 50915, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/orders/[id].vue", - "lines": 1578, - "bytes": 78723, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/orders/index.vue", - "lines": 1147, - "bytes": 38914, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/orders/order/index.vue", - "lines": 25, - "bytes": 604, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/orders/order/paid.vue", - "lines": 25, - "bytes": 603, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/orders/order/pay.vue", - "lines": 25, - "bytes": 602, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/products/[id].vue", - "lines": 460, - "bytes": 18608, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/products/cloud-server.vue", - "lines": 494, - "bytes": 18111, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/products/dedicated-server/customize.vue", - "lines": 255, - "bytes": 9083, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/products/dedicated-server/index.vue", - "lines": 1207, - "bytes": 52090, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/products/index.vue", - "lines": 1602, - "bytes": 65191, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "partial", - "ranges": [[205, 270]], - "snapshot": "Ranges refer to pre-format review; no full file review claimed" - } - }, - { - "path": "app/pages/recommend/index.vue", - "lines": 3438, - "bytes": 229617, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/register.vue", - "lines": 907, - "bytes": 31529, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/remote-console.vue", - "lines": 427, - "bytes": 17824, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 408]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers." - } - }, - { - "path": "app/pages/resources.vue", - "lines": 263, - "bytes": 8827, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/security/domains/index.vue", - "lines": 1160, - "bytes": 42622, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/security/groups/index.vue", - "lines": 2376, - "bytes": 94464, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/security/ssh-keys/index.vue", - "lines": 413, - "bytes": 11863, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 413]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "app/pages/servers/server.vue", - "lines": 2961, - "bytes": 119604, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/tickets/[id].vue", - "lines": 778, - "bytes": 32685, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/tickets/create.vue", - "lines": 675, - "bytes": 26174, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/tickets/index.vue", - "lines": 623, - "bytes": 22132, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/tickets/ticket.vue", - "lines": 17, - "bytes": 478, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/transfer/index.vue", - "lines": 1667, - "bytes": 64016, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/pages/vouchers/index.vue", - "lines": 1023, - "bytes": 48687, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/plugins/01-ui.client.js", - "lines": 21, - "bytes": 676, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 21]], - "snapshot": "current formatted source" - } - }, - { - "path": "app/plugins/02-bootstrap.client.js", - "lines": 17, - "bytes": 599, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 17]], - "snapshot": "current formatted source" - } - }, - { - "path": "app/plugins/03-session.client.js", - "lines": 37, - "bytes": 1273, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 37]], - "snapshot": "current formatted source" - } - }, - { - "path": "app/utils/access.js", - "lines": 31, - "bytes": 808, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full", - "ranges": [[1, 31]], - "snapshot": "current formatted source" - } - }, - { - "path": "app/utils/brand.js", - "lines": 1, - "bytes": 49, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/utils/crypto.js", - "lines": 4, - "bytes": 92, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "app/utils/load-module.js", - "lines": 3, - "bytes": 54, - "mechanical": [ - "parse", - "import-resolution", - "declared-dependencies", - "no-machine-release-path", - "production-build" - ], - "human": { - "status": "full-before-mechanical-reformat", - "ranges": [[1, 4]], - "snapshot": "Review before final Prettier reflow; semantic fixes independently checked in the subsequent round. Ranges refer to reviewed snapshot, not current line numbers." - } - }, - { - "path": "docs/acceptance-assets/a-legacy-temporary-credential-is-stripped-and-reaches-the-verified-home.png", - "lines": null, - "bytes": 138503, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/a-rejected-legacy-credential-remains-removed-from-the-error-url.png", - "lines": null, - "bytes": 39735, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/a-stalled-payment-status-request-cannot-swallow-the-payment-deadline.png", - "lines": null, - "bytes": 78628, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/an-authoritative-empty-menu-does-not-expose-fallback-links.png", - "lines": null, - "bytes": 154104, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/an-envelope-401-clears-the-session-and-returns-to-login.png", - "lines": null, - "bytes": 7611, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/an-existing-session-entering-the-legacy-route-is-verified-again.png", - "lines": null, - "bytes": 138503, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/an-expired-identity-on-payment-confirmation-cannot-restart-payment-initialization.png", - "lines": null, - "bytes": 7611, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/auth-guard-preserves-the-protected-destination.png", - "lines": null, - "bytes": 7611, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/logging-out-of-an-open-payment-page-cannot-reinitialize-its-payment-data.png", - "lines": null, - "bytes": 7611, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/login-rejects-a-backslash-return-destination.png", - "lines": null, - "bytes": 138503, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/login-rejects-a-encoded-slash-return-destination.png", - "lines": null, - "bytes": 138503, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/login-rejects-a-protocol-relative-return-destination.png", - "lines": null, - "bytes": 138503, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/logout-clears-local-access-while-its-api-request-remains-pending.png", - "lines": null, - "bytes": 7611, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/logout-in-another-tab-revokes-both-visible-sessions.png", - "lines": null, - "bytes": 7611, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/password-login-uses-the-deployed-encrypted-field-contract.png", - "lines": null, - "bytes": 156863, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "Updated browser artifact; prior screenshot review does not apply to the new capture" - } - }, - { - "path": "docs/acceptance-assets/payment-handles-the-deployed-top-level-paid-response.png", - "lines": null, - "bytes": 67535, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/ssh-search-paginates-25-matches-without-repeating-all-rows.png", - "lines": null, - "bytes": 156453, - "mechanical": ["file-inventory"], - "human": { - "status": "screenshot-viewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/the-default-request-deadline-aborts-an-unfinished-json-body-and-allows-retry.png", - "lines": null, - "bytes": 156456, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-requests.json", - "lines": 2408, - "bytes": 58109, - "mechanical": ["json-parse"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "docs/acceptance.json", - "lines": 2057, - "bytes": 52679, - "mechanical": ["json-parse"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "docs/audit-coverage.json", - "lines": null, - "bytes": null, - "mechanical": ["file-inventory", "json-parse"], - "human": { - "status": "generated-ledger", - "ranges": [], - "snapshot": "This file accounts for itself; no independent manual review claimed" - } - }, - { - "path": "docs/defect-ledger.json", - "lines": 147, - "bytes": 8636, - "mechanical": ["json-parse"], - "human": { - "status": "full", - "ranges": [[1, 147]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "docs/dependency-audit.json", - "lines": 246, - "bytes": 6882, - "mechanical": ["json-parse"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "docs/module-inventory.json", - "lines": 439, - "bytes": 13070, - "mechanical": ["json-parse"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "docs/reconstruction-plan.md", - "lines": 21, - "bytes": 2196, - "mechanical": ["file-inventory"], - "human": { - "status": "full", - "ranges": [[1, 21]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "docs/validation.md", - "lines": 96, - "bytes": 10170, - "mechanical": ["file-inventory"], - "human": { - "status": "full", - "ranges": [[1, 96]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "nuxt.config.ts", - "lines": 31, - "bytes": 959, - "mechanical": ["file-inventory"], - "human": { - "status": "full", - "ranges": [[1, 31]], - "snapshot": "current formatted source" - } - }, - { - "path": "package-lock.json", - "lines": 9022, - "bytes": 316771, - "mechanical": ["json-parse"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "package.json", - "lines": 44, - "bytes": 1154, - "mechanical": ["json-parse"], - "human": { - "status": "full", - "ranges": [[1, 44]], - "snapshot": "current formatted source" - } - }, - { - "path": "public/favicon.ico", - "lines": null, - "bytes": 36397, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/favicon.svg", - "lines": 1, - "bytes": 37138, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_00397b.woff2", - "lines": null, - "bytes": 61468, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_09158a.woff2", - "lines": null, - "bytes": 53128, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_09a9b3.woff2", - "lines": null, - "bytes": 68904, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_0ca5a9.woff2", - "lines": null, - "bytes": 51756, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_0cdc77.woff2", - "lines": null, - "bytes": 53400, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_0d19f4.woff2", - "lines": null, - "bytes": 59560, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_0d29b4.woff2", - "lines": null, - "bytes": 64392, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_0dbc27.woff2", - "lines": null, - "bytes": 58136, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_0e127a.woff2", - "lines": null, - "bytes": 58564, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_0f358f.woff2", - "lines": null, - "bytes": 57980, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_0ff13d.woff2", - "lines": null, - "bytes": 61156, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_135790.woff2", - "lines": null, - "bytes": 59280, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_138611.woff2", - "lines": null, - "bytes": 58720, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_16a8ba.woff2", - "lines": null, - "bytes": 63728, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_1c96d4.woff2", - "lines": null, - "bytes": 63084, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_22048b.woff2", - "lines": null, - "bytes": 60400, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_269445.woff2", - "lines": null, - "bytes": 50096, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_2c89c1.woff2", - "lines": null, - "bytes": 22084, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_2f7c7d.woff2", - "lines": null, - "bytes": 58236, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_2fefd6.woff2", - "lines": null, - "bytes": 60284, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_306bba.woff2", - "lines": null, - "bytes": 58048, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_3149e0.woff2", - "lines": null, - "bytes": 57236, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_35c17d.woff2", - "lines": null, - "bytes": 60320, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_36ad1b.woff2", - "lines": null, - "bytes": 65268, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_3b743f.woff2", - "lines": null, - "bytes": 66048, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_3c428d.woff2", - "lines": null, - "bytes": 59616, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_53d21e.woff2", - "lines": null, - "bytes": 57352, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_545620.woff2", - "lines": null, - "bytes": 62436, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_5825df.woff2", - "lines": null, - "bytes": 57652, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_5a8449.woff2", - "lines": null, - "bytes": 66396, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_5ae301.woff2", - "lines": null, - "bytes": 66548, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_5b1e0f.woff2", - "lines": null, - "bytes": 65256, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_666915.woff2", - "lines": null, - "bytes": 66192, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_6927bf.woff2", - "lines": null, - "bytes": 61216, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_6938ca.woff2", - "lines": null, - "bytes": 64160, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_6d65eb.woff2", - "lines": null, - "bytes": 63536, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_70874c.woff2", - "lines": null, - "bytes": 57496, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_71407d.woff2", - "lines": null, - "bytes": 59716, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_76f2de.woff2", - "lines": null, - "bytes": 58484, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_782503.woff2", - "lines": null, - "bytes": 61984, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_813dd1.woff2", - "lines": null, - "bytes": 56692, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_82438c.woff2", - "lines": null, - "bytes": 59720, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_87c494.woff2", - "lines": null, - "bytes": 67188, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_8867bc.woff2", - "lines": null, - "bytes": 66228, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_8a2aad.woff2", - "lines": null, - "bytes": 63624, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_8ea124.woff2", - "lines": null, - "bytes": 70992, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_8ea677.woff2", - "lines": null, - "bytes": 57568, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_971f00.woff2", - "lines": null, - "bytes": 63848, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_9ad5e8.woff2", - "lines": null, - "bytes": 60560, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_a04e21.woff2", - "lines": null, - "bytes": 66156, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_a0f240.woff2", - "lines": null, - "bytes": 54872, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_aacef2.woff2", - "lines": null, - "bytes": 60776, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_abac36.woff2", - "lines": null, - "bytes": 61608, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_b028be.woff2", - "lines": null, - "bytes": 58876, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_b1143d.woff2", - "lines": null, - "bytes": 68628, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_b8977e.woff2", - "lines": null, - "bytes": 59440, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_bba9bc.woff2", - "lines": null, - "bytes": 61048, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_bc06aa.woff2", - "lines": null, - "bytes": 62308, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_bee5fd.woff2", - "lines": null, - "bytes": 59316, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_bf7217.woff2", - "lines": null, - "bytes": 62940, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_c2b336.woff2", - "lines": null, - "bytes": 60896, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_c37197.woff2", - "lines": null, - "bytes": 56348, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_c614c1.woff2", - "lines": null, - "bytes": 11116, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_c728d8.woff2", - "lines": null, - "bytes": 63480, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_cd2170.woff2", - "lines": null, - "bytes": 62476, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_cf29b0.woff2", - "lines": null, - "bytes": 68388, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_d2da49.woff2", - "lines": null, - "bytes": 55768, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_d829f0.woff2", - "lines": null, - "bytes": 61548, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_d8e0ef.woff2", - "lines": null, - "bytes": 56996, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_d95e9e.woff2", - "lines": null, - "bytes": 60164, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_d9776c.woff2", - "lines": null, - "bytes": 58604, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_df3eef.woff2", - "lines": null, - "bytes": 67636, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_e7152d.woff2", - "lines": null, - "bytes": 58260, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_e7daea.woff2", - "lines": null, - "bytes": 64252, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_e8003a.woff2", - "lines": null, - "bytes": 56184, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_eac724.woff2", - "lines": null, - "bytes": 62516, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_ed0d20.woff2", - "lines": null, - "bytes": 58572, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_eeb3fd.woff2", - "lines": null, - "bytes": 56608, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_f7ca8a.woff2", - "lines": null, - "bytes": 62748, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_f9818b.woff2", - "lines": null, - "bytes": 63232, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_fdb231.woff2", - "lines": null, - "bytes": 26080, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold_fdc333.woff2", - "lines": null, - "bytes": 61296, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Bold.css", - "lines": 680, - "bytes": 133764, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/LICENSE.txt", - "lines": 35, - "bytes": 32768, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_00a682.woff2", - "lines": null, - "bytes": 67884, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_0f9ed6.woff2", - "lines": null, - "bytes": 60988, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_121ef3.woff2", - "lines": null, - "bytes": 63608, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_170a05.woff2", - "lines": null, - "bytes": 59512, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_17f172.woff2", - "lines": null, - "bytes": 58116, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_217dc2.woff2", - "lines": null, - "bytes": 65972, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_256855.woff2", - "lines": null, - "bytes": 67512, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_272cc0.woff2", - "lines": null, - "bytes": 58448, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_27c723.woff2", - "lines": null, - "bytes": 57148, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_28749b.woff2", - "lines": null, - "bytes": 58340, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_2b1dc1.woff2", - "lines": null, - "bytes": 56312, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_2dce0b.woff2", - "lines": null, - "bytes": 56448, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_3056fd.woff2", - "lines": null, - "bytes": 58156, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_312071.woff2", - "lines": null, - "bytes": 65576, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_375414.woff2", - "lines": null, - "bytes": 58320, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_39f71f.woff2", - "lines": null, - "bytes": 58760, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_3ef9bb.woff2", - "lines": null, - "bytes": 56864, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_3fc7ac.woff2", - "lines": null, - "bytes": 59628, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_409c84.woff2", - "lines": null, - "bytes": 65892, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_44123f.woff2", - "lines": null, - "bytes": 60424, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_449d8d.woff2", - "lines": null, - "bytes": 64100, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_45ef02.woff2", - "lines": null, - "bytes": 50488, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_47cfe5.woff2", - "lines": null, - "bytes": 54880, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_4d7a5e.woff2", - "lines": null, - "bytes": 62728, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_4fed1d.woff2", - "lines": null, - "bytes": 62176, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_533bb6.woff2", - "lines": null, - "bytes": 55216, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_68d530.woff2", - "lines": null, - "bytes": 67024, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_6acba8.woff2", - "lines": null, - "bytes": 23640, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_6cf07f.woff2", - "lines": null, - "bytes": 62924, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_6dd231.woff2", - "lines": null, - "bytes": 61684, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_6fde5a.woff2", - "lines": null, - "bytes": 62020, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_7058e1.woff2", - "lines": null, - "bytes": 58376, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_7a0ff1.woff2", - "lines": null, - "bytes": 56040, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_7c169d.woff2", - "lines": null, - "bytes": 51740, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_7ef7a1.woff2", - "lines": null, - "bytes": 57420, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_7f7d1c.woff2", - "lines": null, - "bytes": 68304, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_83d7dd.woff2", - "lines": null, - "bytes": 56852, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_84452c.woff2", - "lines": null, - "bytes": 57576, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_84f7ac.woff2", - "lines": null, - "bytes": 64412, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_86f2d2.woff2", - "lines": null, - "bytes": 55828, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_88d643.woff2", - "lines": null, - "bytes": 70588, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_8a3521.woff2", - "lines": null, - "bytes": 61924, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_8b2a9d.woff2", - "lines": null, - "bytes": 63336, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_8c54f5.woff2", - "lines": null, - "bytes": 55260, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_8ef126.woff2", - "lines": null, - "bytes": 63664, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_8fcd67.woff2", - "lines": null, - "bytes": 58840, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_92d092.woff2", - "lines": null, - "bytes": 58088, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_95b6b4.woff2", - "lines": null, - "bytes": 60708, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_96734e.woff2", - "lines": null, - "bytes": 57956, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_997d05.woff2", - "lines": null, - "bytes": 58676, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_9dbf33.woff2", - "lines": null, - "bytes": 60520, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_a2360c.woff2", - "lines": null, - "bytes": 58360, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_a3f550.woff2", - "lines": null, - "bytes": 61548, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_a4d91f.woff2", - "lines": null, - "bytes": 57412, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_a9cfd5.woff2", - "lines": null, - "bytes": 65716, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_a9e9db.woff2", - "lines": null, - "bytes": 63856, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_aab13d.woff2", - "lines": null, - "bytes": 58508, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_ac4458.woff2", - "lines": null, - "bytes": 61236, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_b00490.woff2", - "lines": null, - "bytes": 57964, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_b13597.woff2", - "lines": null, - "bytes": 58020, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_b2c226.woff2", - "lines": null, - "bytes": 65168, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_b2e109.woff2", - "lines": null, - "bytes": 61924, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_b62ca1.woff2", - "lines": null, - "bytes": 10696, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_c59db4.woff2", - "lines": null, - "bytes": 66192, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_cdc930.woff2", - "lines": null, - "bytes": 64200, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_d0a30d.woff2", - "lines": null, - "bytes": 52628, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_d605af.woff2", - "lines": null, - "bytes": 54008, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_d892dd.woff2", - "lines": null, - "bytes": 60228, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_d9b42a.woff2", - "lines": null, - "bytes": 53556, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_da4d56.woff2", - "lines": null, - "bytes": 62300, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_de2c82.woff2", - "lines": null, - "bytes": 56708, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_e17466.woff2", - "lines": null, - "bytes": 61108, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_e39c0d.woff2", - "lines": null, - "bytes": 59544, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_ea8896.woff2", - "lines": null, - "bytes": 23860, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_eccccb.woff2", - "lines": null, - "bytes": 59332, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_f07e53.woff2", - "lines": null, - "bytes": 59212, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_f61d6a.woff2", - "lines": null, - "bytes": 57940, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_f64fe5.woff2", - "lines": null, - "bytes": 51236, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_f796c7.woff2", - "lines": null, - "bytes": 64448, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_fda05f.woff2", - "lines": null, - "bytes": 62356, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_fe0341.woff2", - "lines": null, - "bytes": 60092, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular_fff490.woff2", - "lines": null, - "bytes": 63100, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Regular.css", - "lines": 680, - "bytes": 134237, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_035914.woff2", - "lines": null, - "bytes": 61292, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_0379f0.woff2", - "lines": null, - "bytes": 57932, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_03c22c.woff2", - "lines": null, - "bytes": 62848, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_0fa4e5.woff2", - "lines": null, - "bytes": 55744, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_162d10.woff2", - "lines": null, - "bytes": 57576, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_16edf9.woff2", - "lines": null, - "bytes": 61160, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_1ab105.woff2", - "lines": null, - "bytes": 60824, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_1b5db9.woff2", - "lines": null, - "bytes": 58020, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_1bf653.woff2", - "lines": null, - "bytes": 60304, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_205230.woff2", - "lines": null, - "bytes": 56260, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_2238a5.woff2", - "lines": null, - "bytes": 59372, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_249977.woff2", - "lines": null, - "bytes": 51560, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_2b266f.woff2", - "lines": null, - "bytes": 54172, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_2edd83.woff2", - "lines": null, - "bytes": 62724, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_33239d.woff2", - "lines": null, - "bytes": 58804, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_38d7af.woff2", - "lines": null, - "bytes": 60388, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_3d1b2a.woff2", - "lines": null, - "bytes": 70892, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_3e0e35.woff2", - "lines": null, - "bytes": 59468, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_3f7217.woff2", - "lines": null, - "bytes": 62176, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_48beb0.woff2", - "lines": null, - "bytes": 63356, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_4b11f9.woff2", - "lines": null, - "bytes": 54060, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_4bdb16.woff2", - "lines": null, - "bytes": 59352, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_5364ad.woff2", - "lines": null, - "bytes": 58744, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_5567e2.woff2", - "lines": null, - "bytes": 65976, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_585512.woff2", - "lines": null, - "bytes": 57560, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_592e5c.woff2", - "lines": null, - "bytes": 62328, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_59f2bf.woff2", - "lines": null, - "bytes": 62832, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_5ff619.woff2", - "lines": null, - "bytes": 56456, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_6308f6.woff2", - "lines": null, - "bytes": 61000, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_696098.woff2", - "lines": null, - "bytes": 63960, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_6a0a75.woff2", - "lines": null, - "bytes": 56096, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_6b489a.woff2", - "lines": null, - "bytes": 66724, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_6d6321.woff2", - "lines": null, - "bytes": 66424, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_7166d1.woff2", - "lines": null, - "bytes": 63824, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_746ab4.woff2", - "lines": null, - "bytes": 56940, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_798fe0.woff2", - "lines": null, - "bytes": 49176, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_8183f4.woff2", - "lines": null, - "bytes": 59200, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_85caa3.woff2", - "lines": null, - "bytes": 25924, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_87a0b0.woff2", - "lines": null, - "bytes": 64452, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_88c61b.woff2", - "lines": null, - "bytes": 57472, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_8d6f60.woff2", - "lines": null, - "bytes": 60220, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_93b52d.woff2", - "lines": null, - "bytes": 63988, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_9716a9.woff2", - "lines": null, - "bytes": 65888, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_98776b.woff2", - "lines": null, - "bytes": 61600, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_98aeda.woff2", - "lines": null, - "bytes": 63516, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_995738.woff2", - "lines": null, - "bytes": 11260, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_999ef3.woff2", - "lines": null, - "bytes": 63088, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_a0479f.woff2", - "lines": null, - "bytes": 58340, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_a2d1da.woff2", - "lines": null, - "bytes": 66024, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_a59330.woff2", - "lines": null, - "bytes": 65660, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_a66c95.woff2", - "lines": null, - "bytes": 66296, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_a8eb23.woff2", - "lines": null, - "bytes": 59364, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_ab0a44.woff2", - "lines": null, - "bytes": 66792, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_acb7e5.woff2", - "lines": null, - "bytes": 59728, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_b23485.woff2", - "lines": null, - "bytes": 61260, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_b30258.woff2", - "lines": null, - "bytes": 62128, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_b4367f.woff2", - "lines": null, - "bytes": 60976, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_b4e4f5.woff2", - "lines": null, - "bytes": 62624, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_b7823b.woff2", - "lines": null, - "bytes": 59600, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_b797d3.woff2", - "lines": null, - "bytes": 58328, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_bccf7a.woff2", - "lines": null, - "bytes": 52456, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_be8500.woff2", - "lines": null, - "bytes": 57844, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_c4b65c.woff2", - "lines": null, - "bytes": 58968, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_cf0ca5.woff2", - "lines": null, - "bytes": 55540, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_d42952.woff2", - "lines": null, - "bytes": 59876, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_d6f7b6.woff2", - "lines": null, - "bytes": 58204, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_db872c.woff2", - "lines": null, - "bytes": 64524, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_def583.woff2", - "lines": null, - "bytes": 58356, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_df300a.woff2", - "lines": null, - "bytes": 67680, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_dff643.woff2", - "lines": null, - "bytes": 57120, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_e2ddb8.woff2", - "lines": null, - "bytes": 65904, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_e3dbb9.woff2", - "lines": null, - "bytes": 58084, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_e58b2d.woff2", - "lines": null, - "bytes": 62620, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_e9183a.woff2", - "lines": null, - "bytes": 66548, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_ebd971.woff2", - "lines": null, - "bytes": 61244, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_ec2481.woff2", - "lines": null, - "bytes": 60508, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_ee8de8.woff2", - "lines": null, - "bytes": 67328, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_f8e3e1.woff2", - "lines": null, - "bytes": 58532, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_f9bc45.woff2", - "lines": null, - "bytes": 19216, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_fafd13.woff2", - "lines": null, - "bytes": 68836, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_fba4ed.woff2", - "lines": null, - "bytes": 61524, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold_fdfabc.woff2", - "lines": null, - "bytes": 64444, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/fonts/harmonyos-sans-sc/Semibold.css", - "lines": 680, - "bytes": 135178, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/icons/primeicons.C1oiW3xv.eot", - "lines": null, - "bytes": 89284, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/icons/primeicons.Cw7jw2u3.woff2", - "lines": null, - "bytes": 32652, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/icons/primeicons.DFbS0HxT.woff", - "lines": null, - "bytes": 89184, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/icons/primeicons.DI7WxhAS.svg", - "lines": 390, - "bytes": 347201, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/icons/primeicons.MNyB0pWW.ttf", - "lines": null, - "bytes": 89108, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/auth/roxy-idc-login-v2.jpg", - "lines": null, - "bytes": 516472, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/auth/roxy-idc-login-v2.png", - "lines": null, - "bytes": 2246625, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/auth/roxy-idc-login.png", - "lines": null, - "bytes": 2302973, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/brand/logo.png", - "lines": null, - "bytes": 9420, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/certification/alipay.svg", - "lines": 1, - "bytes": 818, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/certification/national-network-identity.png", - "lines": null, - "bytes": 10146, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/certification/wechat.svg", - "lines": 1, - "bytes": 1346, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/AlmaLinux.svg", - "lines": 12, - "bytes": 5532, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/ArchLinux.svg", - "lines": 1, - "bytes": 588, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/CentOS.svg", - "lines": 1, - "bytes": 2720, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/Debian.svg", - "lines": 1, - "bytes": 14486, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/ESXi.svg", - "lines": 1, - "bytes": 857, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/Fedora.svg", - "lines": 1, - "bytes": 2006, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/FreeBSD.svg", - "lines": 13, - "bytes": 941, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/Linux.svg", - "lines": 1, - "bytes": 2720, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/OpenClaw.svg", - "lines": 9, - "bytes": 3646, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/OpenEuler.svg", - "lines": 18, - "bytes": 5590, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/Other.svg", - "lines": 11, - "bytes": 738, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/RedHat.svg", - "lines": 5, - "bytes": 987, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/Rocky.svg", - "lines": 4, - "bytes": 516, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/TencentOS-Server.svg", - "lines": 3, - "bytes": 387, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/Ubuntu.svg", - "lines": 44, - "bytes": 3943, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/Windows.svg", - "lines": 1, - "bytes": 708, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/os/XenServer.svg", - "lines": 44, - "bytes": 15742, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/reference/cloud-server.png", - "lines": null, - "bytes": 17146, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/reference/console-preview.jpg", - "lines": null, - "bytes": 70898, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/images/reference/firewall.png", - "lines": null, - "bytes": 20769, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "public/robots.txt", - "lines": 2, - "bytes": 24, - "mechanical": ["file-inventory", "production-asset-bundling"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "README.md", - "lines": 72, - "bytes": 4519, - "mechanical": ["file-inventory"], - "human": { - "status": "full", - "ranges": [[1, 72]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "scripts/check-source.mjs", - "lines": 140, - "bytes": 4469, - "mechanical": ["file-inventory"], - "human": { - "status": "full", - "ranges": [[1, 140]], - "snapshot": "current formatted source" - } - }, - { - "path": "scripts/reconstruct.mjs", - "lines": 649, - "bytes": 21319, - "mechanical": ["file-inventory"], - "human": { - "status": "full", - "ranges": [[1, 649]], - "snapshot": "current formatted source" - } - }, - { - "path": "tests/.gitignore", - "lines": null, - "bytes": 15, - "mechanical": ["browser-suite-run"], - "human": { - "status": "not-line-reviewed", - "ranges": [], - "snapshot": "current" - } - }, - { - "path": "tests/console.e2e.test.mjs", - "lines": 1298, - "bytes": 43554, - "mechanical": ["browser-suite-run"], - "human": { - "status": "full", - "ranges": [[1, 1298]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "tests/fixtures/api-server.mjs", - "lines": 268, - "bytes": 8697, - "mechanical": ["browser-suite-run"], - "human": { - "status": "full", - "ranges": [[1, 268]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "tests/README.md", - "lines": 31, - "bytes": 2460, - "mechanical": ["browser-suite-run"], - "human": { - "status": "full", - "ranges": [[1, 31]], - "snapshot": "Current batch: complete line review by main or independent reviewer, not inferred from build" - } - }, - { - "path": "docs/acceptance-assets/a-rejected-legacy-credential-stays-out-of-the-error-url-and-can-be-retried.png", - "lines": null, - "bytes": 138503, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/disabled-sms-login-cannot-override-the-available-password-method.png", - "lines": null, - "bytes": 156863, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/legacy-error-390.png", - "lines": null, - "bytes": 31525, - "mechanical": ["file-inventory"], - "human": { - "status": "screenshot-viewed", - "ranges": [], - "snapshot": "Current local Chrome capture visually inspected; not whole-feature acceptance" - } - }, - { - "path": "docs/acceptance-assets/login-390.png", - "lines": null, - "bytes": 38957, - "mechanical": ["file-inventory"], - "human": { - "status": "screenshot-viewed", - "ranges": [], - "snapshot": "Current local Chrome capture visually inspected; not whole-feature acceptance" - } - }, - { - "path": "docs/acceptance-assets/sms-320.png", - "lines": null, - "bytes": 28863, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/sms-390.png", - "lines": null, - "bytes": 30134, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/sms-only-login-honors-site-settings-and-the-verification-countdown-contract.png", - "lines": null, - "bytes": 156453, - "mechanical": ["file-inventory"], - "human": { - "status": "not-visually-reviewed", - "ranges": [], - "snapshot": "saved browser artifact; not whole-page visual acceptance" - } - }, - { - "path": "docs/acceptance-assets/ssh-create-edit-and-delete-return-the-final-page-to-a-valid-page.png", - "lines": null, - "bytes": 155991, - "mechanical": ["file-inventory"], - "human": { - "status": "screenshot-viewed", - "ranges": [], - "snapshot": "Current local Chrome capture visually inspected; not whole-feature acceptance" - } - }, - { - "path": "docs/acceptance-assets/ssh-editor-390.png", - "lines": null, - "bytes": 78934, - "mechanical": ["file-inventory"], - "human": { - "status": "screenshot-viewed", - "ranges": [], - "snapshot": "Current local Chrome capture visually inspected; not whole-feature acceptance" - } - }, - { - "path": "docs/project-completeness.md", - "lines": 70, - "bytes": 4619, - "mechanical": ["file-inventory"], - "human": { - "status": "full", - "ranges": [[1, 70]], - "snapshot": "Complete project handoff scope and read-only server comparison reviewed in full" - } - } - ], - "latestBatch": { - "baseline": "5cd7210a1df33c97cba4c863e9633ace58e1472f963105ae93af46c607ce4f50", - "sourceCommit": "7f612c7e682a48d5e4b775b2ecb91234562f2b2c0cb9e9d063811d7ee18fb929", - "scope": "Four rewritten SFCs, changed tests/docs and explicitly read seams only", - "publicEntries": ["/login", "/home.htm", "/security/ssh-keys"], - "quality": "Full-dimension independent cross-review; no new confirmed regressions", - "retainedFinding": "AUTH_THEME_CYCLE_LABEL is a confirmed pre-existing label/cycle mismatch", - "specSync": "Restored contracts in sync for batch; complete original business specification unavailable", - "gateBlindSpots": "Supplemental local Chrome narrow-screen/CSS/interaction checks; real third-party services unverified", - "acceptance": "21/21 passed on integrated production build; see acceptance.json", - "lastRoundNewConfirmedDefects": 0, - "cleanArchiveValidation": "Candidate 6c73598: fresh npm ci, check, build and 21/21 browser scenarios passed; only docs changed afterwards" - }, - "latestHandoff": { - "scope": "Whole frontend project file/module/resource completeness; not whole-business manual review or real backend acceptance", - "serverReadOnly": true, - "currentRelease": "20261025-kky-traffic-display", - "metadataAnd735AssetsMatch": true, - "productChanges": 0, - "newSourceFiles": 0, - "documentationAdded": "project-completeness.md", - "remainingRecoveredRenderVueFiles": 155, - "repeatedGate": "check, build and 21/21 browser scenarios passed; stable outcomes identical to acceptance.json" - } -} diff --git a/docs/defect-ledger.json b/docs/defect-ledger.json deleted file mode 100644 index ea2abac..0000000 --- a/docs/defect-ledger.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "schemaVersion": 1, - "checkedOn": "2026-11-05", - "scope": "Rebuilt frontend and its integration boundaries; not a complete audit of the deployment archive", - "fixed": [ - { - "id": "REQUEST_DEADLINE", - "problem": "Requests could wait indefinitely, including while reading response bodies", - "resolution": "One request deadline covers preflight, fetch and body; 30s JSON / 120s transfer defaults", - "evidence": "acceptance.json: the default request deadline aborts an unfinished JSON body and allows retry" - }, - { - "id": "LOGOUT_PENDING", - "problem": "A pending logout response delayed local session revocation", - "resolution": "Capture old identity, clear local state immediately, revoke with a bounded background request", - "evidence": "acceptance.json: logout clears local access while its API request remains pending" - }, - { - "id": "PAYMENT_DEADLINE", - "problem": "A stalled status request could consume the payment session deadline", - "resolution": "One session owns polling, an independent 5 minute deadline and invalidation on close/order/identity changes", - "evidence": "acceptance.json: stalled status and top-level Paid scenarios" - }, - { - "id": "SSH_PAGINATION", - "problem": "Complete search results and server-paged results were sliced inconsistently", - "resolution": "Separate applied query from draft input and slice only complete search results", - "evidence": "acceptance.json: SSH search paginates 25 matches without repeating all rows" - }, - { - "id": "SESSION_TREE", - "problem": "Session changes could unmount a login in progress or keep expired protected components alive", - "resolution": "Stable public login entry identity; protected component tree belongs to one authenticated session", - "evidence": "acceptance.json: login, legacy login, payment logout and payment 401 scenarios" - }, - { - "id": "LEGACY_URL", - "problem": "Legacy credentials reappeared when router fullPath restored a query removed only from history", - "resolution": "Canonicalize both browser history and router location before mounting the legacy entry", - "evidence": "acceptance.json: a rejected legacy credential stays out of the error URL and can be retried" - }, - { - "id": "CROSS_TAB", - "problem": "Other tabs retained a stale visible authenticated session after logout", - "resolution": "Reconcile browser storage events into the same reactive identity used by requests and UI", - "evidence": "acceptance.json: logout in another tab revokes both visible sessions" - }, - { - "id": "VENDOR_LICENSE", - "problem": "The initially restored component-library version displayed an invalid commercial-license warning", - "resolution": "Use MIT PrimeVue 4 and MIT theme package; do not bypass license checks", - "evidence": "All browser scenarios reject visible Invalid PrimeUI License warnings" - }, - { - "id": "LOCAL_ASSETS_RUNTIME", - "problem": "Default icon lookup used the external Iconify provider; mismatched framework versions broke server startup", - "resolution": "Serve bundled Lucide icons locally and align Nuxt/Vue/Router versions", - "evidence": "Production build and all browser scenarios run without non-local requests" - }, - { - "id": "STATIC_GATE_TEMPLATES", - "problem": "Path checks missed template literals", - "resolution": "Inspect both literal strings and template elements in the lint-stage AST gate", - "evidence": "Negative gate smoke rejected string and template machine paths; final check passes" - } - ], - "boundedDebt": [ - { - "id": "AUTH_THEME_CYCLE_LABEL", - "state": "retained-ux-debt", - "what": "Blank auth layout labels the light-state button as switch to dark, while the existing theme cycle is auto -> light -> dark -> auto; with an initially light system, the first click stays light", - "whyDeferred": "Confirmed on both baseline and rewritten layout; this batch preserves existing theme behavior rather than changing the shared three-mode contract", - "blocks": "Claiming the theme button label accurately describes every next mode", - "nextStep": "Align the label with the three-mode theme cycle when the shared theme controls are revised" - }, - { - "id": "REAL_BACKEND_ACCEPTANCE", - "state": "unverified", - "what": "Real ordering, invoices, verification, CAPTCHA/OAuth, financial changes, payment and VNC", - "whyDeferred": "No production access or real financial operations authorized for this rebuild", - "blocks": "Production release approval", - "nextStep": "Run staging acceptance against the real backend and supplier adapters" - }, - { - "id": "REMOTE_GATEWAY_QUOTA", - "state": "known-out-of-scope", - "what": "Existing services/remote-console/gateway.mjs checks session quota before an await and registers later; two concurrent requests can both create a session at a limit of one", - "whyDeferred": "Independent server service, not frontend source rebuilding", - "blocks": "Claiming the remote-console stack has been fixed or production-validated", - "nextStep": "Separately authorize an atomic quota reservation fix and concurrent HTTP regression test" - }, - { - "id": "DEPENDENCY_AUDIT", - "state": "open", - "what": "12 propagated npm audit findings: 6 low / 6 moderate", - "whyDeferred": "Suggested automatic fix force-downgrades Nuxt; reachability and compatibility need review", - "blocks": "Zero-vulnerability or unrestricted production-readiness claims", - "nextStep": "Review dependency-audit.json and patched upstream versions before release" - }, - { - "id": "AUTH_PROTOCOL", - "state": "retained-contract", - "what": "Persistent browser JWT and discontinued CryptoJS AES login protocol remain", - "whyDeferred": "Changing the wire protocol requires coordinated backend changes", - "blocks": "Claiming an authentication-protocol security redesign", - "nextStep": "Plan session storage and login protocol migration with backend ownership" - }, - { - "id": "RECOVERED_READABILITY", - "state": "open", - "what": "Most business SFCs retain render functions and short local variable names", - "whyDeferred": "Original source, comments and templates were not present in supplied archives", - "blocks": "Claiming verbatim original source recovery or a full manual rewrite of every page", - "nextStep": "Login, legacy entry, SSH keys and the blank auth layout are now handwritten setup/templates; continue incrementally with the remaining business pages" - }, - { - "id": "AUDIT_DEPTH", - "state": "partial", - "what": "All delivered files are inventoried and all Vue/JS app modules are mechanically checked; only recorded security/lifecycle/payment/pagination boundaries received in-depth human review", - "whyDeferred": "Rebuilt business surface is large; static coverage is not manual or end-to-end coverage", - "blocks": "A 100% whole-project line-review or all-feature acceptance claim", - "nextStep": "Use audit-coverage.json to prioritize unreviewed pages and execute each remaining business entry in staging" - }, - { - "id": "REVERSE_PROXY", - "state": "deployment-required", - "what": "Same-origin /captcha/ and /remote-console/sessions including WebSockets need separate reverse proxies", - "whyDeferred": "Local code cannot configure the deployment's proxy or supplier gateway", - "blocks": "Image CAPTCHA and remote-console integration without proxy configuration", - "nextStep": "Configure and verify the documented routes in a test deployment" - }, - { - "id": "TRUSTED_IMPORTER", - "state": "documented-boundary", - "what": "One-time reconstruction script executes trusted build metadata and assumes its source paths are trusted", - "whyDeferred": "Retained as reconstruction provenance, not a generic or runtime importer; refuses an existing app/pages", - "blocks": "Using third-party/untrusted metadata as input", - "nextStep": "Do not run for normal development or builds; use only trusted owned release inputs" - } - ], - "latestBatchReview": { - "scope": "Only the four handwritten SFCs, their changed tests and documented integration seams", - "confirmedRegressions": 0, - "acceptance": "21/21 passed after serial integration; browserErrors=0; networkViolations=0", - "remainingDebt": "All boundedDebt entries remain; no real provider acceptance claimed" - } -} diff --git a/docs/dependency-audit.json b/docs/dependency-audit.json deleted file mode 100644 index a5414b9..0000000 --- a/docs/dependency-audit.json +++ /dev/null @@ -1,246 +0,0 @@ -{ - "checkedOn": "2026-11-05", - "command": "npm audit --json", - "exitCode": 1, - "interpretation": "12 dependency findings: 6 low, 6 moderate; no high/critical. Primarily propagated through Nuxt/Nitro build tooling. Not a zero-vulnerability claim; production reachability has not been exhaustively determined.", - "decision": "Retain current pinned Nuxt and lockfile. Do not apply the suggested force downgrade to Nuxt 4.1.3 without compatibility and security review. Reassess before external release.", - "auditReportVersion": 2, - "vulnerabilities": { - "@nuxt/nitro-server": { - "name": "@nuxt/nitro-server", - "severity": "low", - "isDirect": false, - "via": ["nitropack", "nuxt"], - "effects": ["nuxt"], - "range": ">=3.20.0", - "nodes": ["node_modules/@nuxt/nitro-server"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - }, - "@nuxt/vite-builder": { - "name": "@nuxt/vite-builder", - "severity": "low", - "isDirect": false, - "via": ["nuxt"], - "effects": ["nuxt"], - "range": "3.20.0 - 3.21.11 || >=4.2.0", - "nodes": ["node_modules/@nuxt/vite-builder"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - }, - "@nuxt/vite-server": { - "name": "@nuxt/vite-server", - "severity": "low", - "isDirect": false, - "via": ["nuxt"], - "effects": ["nuxt"], - "range": ">=4.6.0", - "nodes": ["node_modules/@nuxt/vite-server"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - }, - "@rollup/plugin-node-resolve": { - "name": "@rollup/plugin-node-resolve", - "severity": "low", - "isDirect": false, - "via": ["deepmerge"], - "effects": ["nitropack"], - "range": ">=8.0.0", - "nodes": ["node_modules/@rollup/plugin-node-resolve"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - }, - "@vercel/nft": { - "name": "@vercel/nft", - "severity": "moderate", - "isDirect": false, - "via": ["glob"], - "effects": ["nitropack"], - "range": ">=0.29.2", - "nodes": ["node_modules/@vercel/nft"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - }, - "archiver": { - "name": "archiver", - "severity": "moderate", - "isDirect": false, - "via": ["readdir-glob"], - "effects": ["nitropack"], - "range": ">=8.0.0", - "nodes": ["node_modules/archiver"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - }, - "deepmerge": { - "name": "deepmerge", - "severity": "low", - "isDirect": false, - "via": [ - { - "source": 1243505, - "name": "deepmerge", - "dependency": "deepmerge", - "title": "deepmerge mergeObject() allows prototype poisoning of returned objects", - "url": "https://github.com/advisories/GHSA-gcqx-w48m-w2h4", - "severity": "low", - "cwe": ["CWE-1321"], - "cvss": { - "score": 5.3, - "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N" - }, - "range": ">=4.2.0 <=4.3.1" - } - ], - "effects": ["@rollup/plugin-node-resolve"], - "range": ">=4.2.0", - "nodes": ["node_modules/deepmerge"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - }, - "glob": { - "name": "glob", - "severity": "moderate", - "isDirect": false, - "via": [ - { - "source": 1244013, - "name": "glob", - "dependency": "glob", - "title": "Glob: AbortSignal cancellation bypass allows post-timeout filesystem traversal", - "url": "https://github.com/advisories/GHSA-3g3m-2fjr-6pw4", - "severity": "moderate", - "cwe": ["CWE-400"], - "cvss": { - "score": 0, - "vectorString": null - }, - "range": ">=9.0.0 <=14.0.1" - }, - "minimatch" - ], - "effects": ["@vercel/nft"], - "range": "9.0.0 - 14.0.1", - "nodes": ["node_modules/glob"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - }, - "minimatch": { - "name": "minimatch", - "severity": "moderate", - "isDirect": false, - "via": [ - { - "source": 1244623, - "name": "minimatch", - "dependency": "minimatch", - "title": "minimatch has potential denial of service via globparts amplification", - "url": "https://github.com/advisories/GHSA-g3hv-75wg-m249", - "severity": "moderate", - "cwe": ["CWE-405"], - "cvss": { - "score": 0, - "vectorString": null - }, - "range": ">=7.0.0 <11.0.1" - } - ], - "effects": ["glob", "readdir-glob"], - "range": "7.0.0 - 11.0.0", - "nodes": ["node_modules/minimatch"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - }, - "nitropack": { - "name": "nitropack", - "severity": "moderate", - "isDirect": false, - "via": ["@rollup/plugin-node-resolve", "@vercel/nft", "archiver"], - "effects": ["@nuxt/nitro-server"], - "range": ">=0.1.0", - "nodes": ["node_modules/nitropack"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - }, - "nuxt": { - "name": "nuxt", - "severity": "low", - "isDirect": true, - "via": ["@nuxt/nitro-server", "@nuxt/vite-builder", "@nuxt/vite-server"], - "effects": [ - "@nuxt/nitro-server", - "@nuxt/vite-builder", - "@nuxt/vite-server" - ], - "range": "3.20.0 - 3.21.11 || >=4.2.0", - "nodes": ["node_modules/nuxt"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - }, - "readdir-glob": { - "name": "readdir-glob", - "severity": "moderate", - "isDirect": false, - "via": ["minimatch"], - "effects": ["archiver"], - "range": ">=2.0.0", - "nodes": ["node_modules/readdir-glob"], - "fixAvailable": { - "name": "nuxt", - "version": "4.1.3", - "isSemVerMajor": true - } - } - }, - "metadata": { - "vulnerabilities": { - "info": 0, - "low": 6, - "moderate": 6, - "high": 0, - "critical": 0, - "total": 12 - }, - "dependencies": { - "prod": 571, - "dev": 3, - "optional": 79, - "peer": 0, - "peerOptional": 0, - "total": 652 - } - } -} diff --git a/docs/module-inventory.json b/docs/module-inventory.json deleted file mode 100644 index 49d2317..0000000 --- a/docs/module-inventory.json +++ /dev/null @@ -1,439 +0,0 @@ -{ - "pages": [ - "pages/account/api-keys.vue", - "pages/account/connections.vue", - "pages/account/index.vue", - "pages/account/realname/company.vue", - "pages/account/realname/index.vue", - "pages/account/realname/personal.vue", - "pages/bills/[id].vue", - "pages/bills/index.vue", - "pages/cart/index.vue", - "pages/cloud-servers/index.vue", - "pages/dedicated-servers/index.vue", - "pages/finance/index.vue", - "pages/forgot-password.vue", - "pages/help.vue", - "pages/home.htm.vue", - "pages/index.vue", - "pages/invoices/index.vue", - "pages/invoices/invoice.vue", - "pages/invoices/request.vue", - "pages/invoices/settings/index.vue", - "pages/logbook/index.vue", - "pages/login.vue", - "pages/messages/index.vue", - "pages/news.vue", - "pages/notices/index.vue", - "pages/oauth/bind.vue", - "pages/oauth/callback.vue", - "pages/official-site.vue", - "pages/orders/[id].vue", - "pages/orders/index.vue", - "pages/orders/order/index.vue", - "pages/orders/order/paid.vue", - "pages/orders/order/pay.vue", - "pages/products/[id].vue", - "pages/products/cloud-server.vue", - "pages/products/dedicated-server/customize.vue", - "pages/products/dedicated-server/index.vue", - "pages/products/index.vue", - "pages/recommend/index.vue", - "pages/register.vue", - "pages/remote-console.vue", - "pages/resources.vue", - "pages/security/domains/index.vue", - "pages/security/groups/index.vue", - "pages/security/ssh-keys/index.vue", - "pages/servers/server.vue", - "pages/tickets/[id].vue", - "pages/tickets/create.vue", - "pages/tickets/index.vue", - "pages/tickets/ticket.vue", - "pages/transfer/index.vue", - "pages/vouchers/index.vue" - ], - "components": [ - "components/AuthProviders.vue", - "components/BackendNavEntry.vue", - "components/BackendNavigation.vue", - "components/BuildUpdateNotice.vue", - "components/CaptchaField.vue", - "components/ChartBox.vue", - "components/ClientLevelDialog.vue", - "components/ConsoleLegalFooter.vue", - "components/GeetestField.vue", - "components/GenericOAuthProviders.vue", - "components/GlobalSearch.vue", - "components/HostList.vue", - "components/ListEmpty.vue", - "components/ListSegments.vue", - "components/MfCloudBackupPanel.vue", - "components/NotificationPreferences.vue", - "components/OperatePasswordGate.vue", - "components/OperationNotice.vue", - "components/OperationToasts.vue", - "components/OsIcon.vue", - "components/PageInfoNotice.vue", - "components/PageSteps.vue", - "components/PaymentDialog.vue", - "components/PhoneCodeField.vue", - "components/ProductCategoryNotice.vue", - "components/ProductConfigurationSummary.vue", - "components/ProductDescription.vue", - "components/ProductGroupLabel.vue", - "components/RechargeDialog.vue", - "components/RichTextEditor.vue", - "components/RingProgress.vue", - "components/SecurityVerificationDialog.vue", - "components/SensitiveValue.vue", - "components/TicketAttachments.vue", - "components/TicketNotice.vue", - "components/UploadField.vue", - "components/WechatConnection.vue", - "components/WithdrawDialog.vue", - "components/config/CloudProductPicker.vue", - "components/config/CommonConfig.vue", - "components/config/ConfigBandwidth.vue", - "components/config/ConfigCheckout.vue", - "components/config/ConfigChoiceGrid.vue", - "components/config/ConfigDiskAdd.vue", - "components/config/ConfigDiskCard.vue", - "components/config/ConfigLoadingShell.vue", - "components/config/ConfigResourceOption.vue", - "components/config/FinanceConfig.vue", - "components/config/JyCloudConfig.vue", - "components/config/KkyEcsConfig.vue", - "components/config/MfCloudConfig.vue", - "components/config/MfDcimConfig.vue", - "components/config/ProductCustomFields.vue", - "components/config/PromoCodeField.vue", - "components/home/HomeConsumeTrend.vue", - "components/home/HomeExpiringPanel.vue", - "components/home/HomeNoticePanel.vue", - "components/home/HomeReferralPanel.vue", - "components/home/HomeServerPanel.vue", - "components/home/HomeTicketPanel.vue", - "components/home/HomeTicketStat.vue", - "components/home/HomeWalletCard.vue", - "components/home/RoxyMascot.vue", - "components/instance/CloudAccessExtras.vue", - "components/instance/CommonManage.vue", - "components/instance/CommonUpgrade.vue", - "components/instance/DcimActions.vue", - "components/instance/DcimBilling.vue", - "components/instance/DcimDefence.vue", - "components/instance/DcimDomains.vue", - "components/instance/DcimManage.vue", - "components/instance/DcimMonitor.vue", - "components/instance/DcimReinstallStatus.vue", - "components/instance/DcimUpgrade.vue", - "components/instance/FlowPacketPanel.vue", - "components/instance/ImagePurchaseDialog.vue", - "components/instance/InstanceAccess.vue", - "components/instance/InstanceBilling.vue", - "components/instance/InstanceDisks.vue", - "components/instance/InstanceLoadingShell.vue", - "components/instance/InstanceManage.vue", - "components/instance/InstanceMonitor.vue", - "components/instance/InstanceMonitorSkeleton.vue", - "components/instance/InstanceNetwork.vue", - "components/instance/InstanceOnDemand.vue", - "components/instance/InstanceOverview.vue", - "components/instance/InstanceRenewDialog.vue", - "components/instance/InstanceServiceInfo.vue", - "components/instance/InstanceSmsCode.vue", - "components/instance/InstanceStatusTag.vue", - "components/instance/InstanceTraffic.vue", - "components/instance/LegacyDcimActions.vue", - "components/instance/LegacyDcimManage.vue", - "components/instance/LegacyProductUpgrade.vue", - "components/instance/RemfUpgrade.vue", - "components/instance/RemoteConsole.vue", - "components/kkyecs/KkyUpgrade.vue", - "components/mfcloud/MfCloudDefence.vue", - "components/mfcloud/MfCloudIps.vue", - "components/mfcloud/MfCloudLogs.vue", - "components/mfcloud/MfCloudNat.vue", - "components/mfcloud/MfCloudResourceUpgrade.vue", - "components/mfcloud/MfCloudUpgrade.vue", - "components/mfcloud/MfCloudVpc.vue" - ], - "layouts": [ - "layouts/blank.vue", - "layouts/default.vue", - "layouts/official-site.vue", - "layouts/public-order.vue" - ], - "shared": [ - "app/lib/_plugin-vue_export-helper.js", - "app/lib/auth-redirect.js", - "app/lib/auth.js", - "app/lib/backend-menu.js", - "app/lib/bandwidth-display.js", - "app/lib/cart-edit.js", - "app/lib/cloud-instance-management.js", - "app/lib/common-advanced-rules.js", - "app/lib/complete-list.js", - "app/lib/composables-2.js", - "app/lib/configuration-display.js", - "app/lib/content-route.js", - "app/lib/dict.js", - "app/lib/finance-resource-chart.js", - "app/lib/instance-data.js", - "app/lib/instance-status.js", - "app/lib/interval.js", - "app/lib/invoice.js", - "app/lib/modules.js", - "app/lib/navigation-state.js", - "app/lib/oauth.js", - "app/lib/order-image-continuation.js", - "app/lib/os-name.js", - "app/lib/password-2.js", - "app/lib/product-description-data.js", - "app/lib/product-fields.js", - "app/lib/product-name.js", - "app/lib/product-order-module.js", - "app/lib/purchase-limit-state.js", - "app/lib/remote-console.js", - "app/lib/renewal-quote.js", - "app/lib/rolldown-runtime.js", - "app/lib/sanitize.js", - "app/lib/server-page.js", - "app/lib/storage-capacity.js", - "app/lib/ticketAttachments.js", - "app/lib/useCaptcha.js", - "app/lib/useListPage.js", - "app/lib/useMailbox.js", - "app/lib/useOAuth.js", - "app/lib/useOfficialSiteContent.js", - "app/lib/useSiteConfig.js", - "app/lib/useTheme.js", - "app/lib/useVerifyCode.js", - "app/lib/useWithdrawAvailability.js", - "app/lib/wechat-binding.js" - ], - "routes": [ - { - "source": "pages/account/realname/company.vue", - "path": "/account/realname/company" - }, - { - "source": "pages/account/realname/personal.vue", - "path": "/account/realname/personal" - }, - { - "source": "pages/orders/order/paid.vue", - "path": "/orders/order/paid" - }, - { - "source": "pages/orders/order/pay.vue", - "path": "/orders/order/pay" - }, - { - "source": "pages/products/dedicated-server/customize.vue", - "path": "/products/dedicated-server/customize" - }, - { - "source": "pages/account/api-keys.vue", - "path": "/account/api-keys" - }, - { - "source": "pages/account/connections.vue", - "path": "/account/connections" - }, - { - "source": "pages/account/realname/index.vue", - "path": "/account/realname" - }, - { - "source": "pages/invoices/invoice.vue", - "path": "/invoices/invoice" - }, - { - "source": "pages/invoices/request.vue", - "path": "/invoices/request" - }, - { - "source": "pages/invoices/settings/index.vue", - "path": "/invoices/settings" - }, - { - "source": "pages/oauth/bind.vue", - "path": "/oauth/bind" - }, - { - "source": "pages/oauth/callback.vue", - "path": "/oauth/callback" - }, - { - "source": "pages/orders/order/index.vue", - "path": "/orders/order" - }, - { - "source": "pages/products/cloud-server.vue", - "path": "/products/cloud-server" - }, - { - "source": "pages/products/dedicated-server/index.vue", - "path": "/products/dedicated-server" - }, - { - "source": "pages/security/domains/index.vue", - "path": "/security/domains" - }, - { - "source": "pages/security/groups/index.vue", - "path": "/security/groups" - }, - { - "source": "pages/security/ssh-keys/index.vue", - "path": "/security/ssh-keys" - }, - { - "source": "pages/servers/server.vue", - "path": "/servers/server" - }, - { - "source": "pages/tickets/create.vue", - "path": "/tickets/create" - }, - { - "source": "pages/tickets/ticket.vue", - "path": "/tickets/ticket" - }, - { - "source": "pages/bills/[id].vue", - "path": "/bills/:id()" - }, - { - "source": "pages/orders/[id].vue", - "path": "/orders/:id()" - }, - { - "source": "pages/products/[id].vue", - "path": "/products/:id()" - }, - { - "source": "pages/tickets/[id].vue", - "path": "/tickets/:id()" - }, - { - "source": "pages/account/index.vue", - "path": "/account" - }, - { - "source": "pages/bills/index.vue", - "path": "/bills" - }, - { - "source": "pages/cart/index.vue", - "path": "/cart" - }, - { - "source": "pages/cloud-servers/index.vue", - "path": "/cloud-servers" - }, - { - "source": "pages/dedicated-servers/index.vue", - "path": "/dedicated-servers" - }, - { - "source": "pages/finance/index.vue", - "path": "/finance" - }, - { - "source": "pages/forgot-password.vue", - "path": "/forgot-password" - }, - { - "source": "pages/help.vue", - "path": "/help" - }, - { - "source": "pages/home.htm.vue", - "path": "/home.htm" - }, - { - "source": "pages/invoices/index.vue", - "path": "/invoices" - }, - { - "source": "pages/logbook/index.vue", - "path": "/logbook" - }, - { - "source": "pages/login.vue", - "path": "/login" - }, - { - "source": "pages/messages/index.vue", - "path": "/messages" - }, - { - "source": "pages/news.vue", - "path": "/news" - }, - { - "source": "pages/notices/index.vue", - "path": "/notices" - }, - { - "source": "pages/official-site.vue", - "path": "/official-site" - }, - { - "source": "pages/orders/index.vue", - "path": "/orders" - }, - { - "source": "pages/products/index.vue", - "path": "/products" - }, - { - "source": "pages/recommend/index.vue", - "path": "/recommend" - }, - { - "source": "pages/register.vue", - "path": "/register" - }, - { - "source": "pages/remote-console.vue", - "path": "/remote-console" - }, - { - "source": "pages/resources.vue", - "path": "/resources" - }, - { - "source": "pages/tickets/index.vue", - "path": "/tickets" - }, - { - "source": "pages/transfer/index.vue", - "path": "/transfer" - }, - { - "source": "pages/vouchers/index.vue", - "path": "/vouchers" - }, - { - "source": "pages/index.vue", - "path": "/" - } - ], - "handwrittenTemplateBatch": { - "baseline": "5cd7210a1df33c97cba4c863e9633ace58e1472f963105ae93af46c607ce4f50", - "sourceCommit": "7f612c7e682a48d5e4b775b2ecb91234562f2b2c0cb9e9d063811d7ee18fb929", - "files": [ - "app/pages/login.vue", - "app/pages/home.htm.vue", - "app/pages/security/ssh-keys/index.vue", - "app/layouts/blank.vue" - ], - "productNetLines": -863, - "scope": "This batch only; other recovered business modules still contain render functions", - "acceptance": "21/21 offline browser scenarios; see acceptance.json" - } -} diff --git a/docs/project-completeness.md b/docs/project-completeness.md deleted file mode 100644 index 9e2f81f..0000000 --- a/docs/project-completeness.md +++ /dev/null @@ -1,70 +0,0 @@ -# 完整前端项目交接说明 - -核对日期:2026-11-05。 - -## 交付的是什么 - -交付的是整个会员中心的独立 Nuxt 前端工程,而不是仅含登录或 SSH 页面的小样例。 -“四个文件已手写重建”指第二轮的维护进度,不是压缩包中只有四个文件。 - -| 内容 | 数量与说明 | -| -------------- | ------------------------------------------------------------------------- | -| 页面 | 52 个,路由清单见 `module-inventory.json` | -| 业务组件 | 104 个 | -| 布局 | 4 套 | -| Vue 文件 | 161 个,含应用入口 | -| JS/TS 应用模块 | 55 个,含接口、会话、插件、路由保护与配置 | -| 样式文件 | 137 个 | -| public 资源 | 285 个,含图片、字体和站点资源 | -| 工程文件 | npm 依赖与锁文件、Nuxt 配置、示例环境配置、检查脚本、浏览器测试和验收记录 | - -完整性检查未发现丢失的本地依赖或资源:4,647 处应用模块导入、252 处 CSS 本地资源引用均可解析。 -上述数目说明文件覆盖,不等于所有业务分支都已经真实后端验收。 - -## 与服务器当前版本的关系 - -经用户授权,只读检查 `/www/wwwroot/crashwork-console`,没有修改文件、重启服务或部署。 -检查时 `.output` 指向 `releases/20261025-kky-traffic-display/.output`。 -当前发布目录仅含 `.output` 与发布指向记录;检查了 130 个发布目录中构建目录之外、深度不超过五层的源码候选, -未找到原始 `.vue`/`.tsx`/`.jsx` 页面或 Nuxt/Vite 工程配置。没有读取根 `.env` 或导入数据库备份。 - -服务器与本地重建依据的校验结果: - -- `server/chunks/virtual/precomputed.mjs` SHA-256 一致:`e9a8d0e2be5f7e2263961e9f128bb6e89955d42814e5a7a0c43ae85c5a6327e1`。 -- 元数据列出的 735 个唯一模块资源均存在,按文件名及内容 SHA-256 聚合后的摘要一致:`08144c47f9dda33a859105d5a746898feb288dd5b0c4ffb7464cf65fd704ed29`。 -- 这证明重建依据与检查时服务器的模块构建一致;不证明真实供应商接口、全部服务器文件或线上业务均已验收。 - -## 员工如何使用 - -在本工程根目录使用 Node.js 22.12+: - -```sh -npm ci -cp .env.example .env -npm run dev -``` - -配置 `NUXT_PUBLIC_API_BASE` 为后端 origin,不附加 `/console/v1`。 -留空时需要同源反向代理;`/captcha/`、`/remote-console/sessions` 及其 WebSocket 还需独立反代配置。 -后端服务不会随此前端工程自动启动。不要把生产 root 密码或其他秘密填入前端公开配置。 - -```sh -npm run check -npm run build -npm test -``` - -产物在本工程 `.output/`;运行方式及 Chrome 路径配置见根 README 和 `tests/README.md`。 -已有干净解压安装、构建及 21 项真实浏览器场景通过的记录,见 `validation.md` 和 `acceptance.json`。 -本次服务器版本核对后再次执行源码检查、生产构建及 21 项浏览器场景,全部通过,浏览器运行错误和外网请求均为零。 - -## 不能混淆的边界 - -- 这是完整可编辑、可构建的重建工程,不是原始源码的逐字恢复。49 个页面、103 个组件和 3 个布局仍使用恢复的渲染函数,合计 155 个 Vue 文件;并非文件缺失,也不能称为全站手写模板完成。 -- 原模板、完整变量名、注释和原始业务需求文档不在服务器发布包中;不承诺逆向恢复这些已丢失的信息。 -- 不包含后端、数据库、远控网关服务或生产反向代理配置;验证码、OAuth、支付、财务、供应商和 VNC 仍需测试环境联调。 -- 保留当前登录协议及已记录的技术债,包括依赖告警和认证页主题切换文案,见 `defect-ledger.json`。 -- 不含生产环境文件、登录凭证、Git 历史、`node_modules` 和构建产物;不要把根服务器目录或历史 releases 打包发给员工。 - -最小交付原则:在已可构建工程上补充核对证据,不增加产品字段、依赖、配置或另一套前端实现; -路由、资源和依赖由现有清单确定,不要求员工在历史发布目录中手工挑选版本。 diff --git a/docs/reconstruction-plan.md b/docs/reconstruction-plan.md deleted file mode 100644 index e68a5bb..0000000 --- a/docs/reconstruction-plan.md +++ /dev/null @@ -1,21 +0,0 @@ -# 前端源码重建方案 - -范围:当前 20261025 发布包的 52 个页面、4 个布局、104 个业务组件及其共享业务逻辑。新工程自包含,不引用历史发布目录,不替换线上发布指向。 - -最小设计检查: - -1. 结构:建立独立可构建源码工程,解决源码缺失,而非在压缩产物上继续打补丁。 -2. 调用负担:保持现有后端路径、请求字段及页面 URL,不要求后端新增协议。 -3. 可推导信息:路由和模块清单从当前有效构建清单提取,不让使用者手工选择旧版文件。 -4. 复杂度:沿用 Nuxt、Vue、PrimeVue;框架和组件库使用正式依赖,只恢复业务逻辑和现有样式。 -5. 适用范围:覆盖当前入口的完整模块图,不只复刻登录页或几个示例页面。 - -最小可行方案是保留已发布业务行为,将编译后的业务模块恢复为格式化、具有业务路径和显式依赖的 Vue 渲染函数源码,并重建应用入口、框架依赖、构建清单与测试。原始变量名、注释和模板排版已在构建中丢失,不能宣称逐字恢复原始工程。Vue 单文件组件允许使用 render/setup 返回的渲染函数;不把旧发布包作为运行时依赖。 - -缺陷类别:异步操作的等待没有统一的时间边界,界面生命周期被远端响应决定;通用规则是请求有明确截止时间,界面清理由本地状态所有者完成。另一类是完整搜索结果与当前页结果混用,规则是只由一处分页逻辑生成当前可见集合。 - -验证:构建新工程;使用本地 HTTP 后端替身验证登录、鉴权、SSH 搜索分页、注销、支付等待边界及页面路由加载。真实支付、供应商实例和生产反代不在离线替身中伪称验证通过。 - -第二轮按维护边界逐页改成手写 setup 与模板:登录、旧平台登录入口、SSH 密钥及公共认证布局。 -保持原协议与样式,不运行一次性导入器、不覆盖历史发布产物。四个产品文件净减少 863 行; -新增/扩展真实页面回归后为 21 场景。其余恢复模块仍按需逐页改写,不将这一批等同于全站重写。 diff --git a/docs/validation.md b/docs/validation.md deleted file mode 100644 index baf33d1..0000000 --- a/docs/validation.md +++ /dev/null @@ -1,96 +0,0 @@ -# 重建与验收记录 - -日期:2026-11-05。基准:当前 20261025 发布版本;没有读取 `.env`,没有连接生产服务器或使用生产凭证。 - -## 可确认的范围 - -清单包含 52 个页面、104 个组件、4 个布局;另重写应用入口。所有业务文件采用源码路径和显式模块依赖, -不从历史 `.output`、`releases` 或旧哈希 JS 加载代码。保留编译后的作用域样式,以维持现有视觉规则。 -原注释、模板排版、完整局部变量名不能逆向恢复;多数页面仍使用渲染函数,应逐步按实际维护需求重构。 - -源文件的解析/依赖门禁与生产构建覆盖全部 Vue 文件,但不等于所有业务交互都已验收。 -逐文件覆盖台账另见 `audit-coverage.json`;未逐行人工审查的业务文件明确标记为未审查。 - -## 修复记录 - -| 问题 | 原因和处理 | 验证方式 | -| ------------------------ | ------------------------------------------------------------------------ | ------------------------------------- | -| 请求永久等待 | JSON 默认 30 秒、上传/下载 120 秒;截止时间覆盖响应正文和购买前置校验 | 真实页面的挂起请求与超时场景 | -| 注销被网络拖住 | 先捕获旧 Bearer,立即清理本地会话,后台有限时撤销 | `/logout` 不返回时仍退出 | -| 支付截止被挂起轮询吞掉 | 一个轮询会话拥有独立五分钟截止与单请求超时,关闭/换单/换身份使旧响应失效 | 浏览器外部时钟推进、无重复支付 | -| SSH 搜索翻页重复 | 区分服务端分页和完整搜索集合,仅由可见行计算切片 | 普通分页、搜索 10/10/5、查询切换/清空 | -| 重建入口改变登录生命周期 | 登录及旧平台入口在认证过程中保持组件身份;保护页面随会话失效卸载 | 登录和旧入口场景 | -| 会话失效后重复初始化 | 菜单、支付初始化由当前登录身份控制 | 401 与退出场景 | -| 图标依赖外网 | 本地打包 Lucide,禁用外部回退 | 所有场景禁止访问外网 | -| 组件库许可提示 | 换用 MIT 版本,不修改许可校验;主题也引用 MIT 包 | 可见 UI 许可检查 | -| 框架运行时混用 | Vue、共享函数、Router 版本统一;替换旧私有注入标识 | 实际启动构建服务及浏览器验收 | -| 跨标签页会话不一致 | 请求与界面使用同一个响应式身份;监听存储变动使其他标签页同步退出 | 第二标签页退出后第一个标签页被保护 | -| 旧入口凭证回到地址栏 | 同时清理 history 与路由的规范地址,失败页面也不恢复敏感查询 | 旧凭证被拒绝后检查 URL 与 Referrer | - -首轮已在真实构建上重现 SSH、注销和支付三个缺陷;修复后基础 11 场景通过。 -第二轮最终生产构建通过,扩展 21 个浏览器场景全部通过,无浏览器运行错误和外网请求。 -结果见随本次交付保留的 `acceptance.json`、`acceptance-assets/` 截图和 `acceptance-requests.json` 脱敏请求顺序。 -已修复问题与剩余债务另见 `defect-ledger.json`;这不是整站逐行审查或生产业务验收完成的声明。 -首轮源码包曾在仓库之外的全新临时目录重新执行 `npm ci`、检查、构建与当时的 18 个浏览器场景,全部通过; -本轮 v2 包的独立验证记录见下文,不把首轮结果当作本轮验收。 - -## 第二轮:手写模板重建 - -本轮仅改写 `app/pages/login.vue`、`app/pages/home.htm.vue`、`app/pages/security/ssh-keys/index.vue` -和 `app/layouts/blank.vue`,从恢复的渲染函数改成可维护的 setup 与模板;不是在旧 render 外再包一层模板。 -登录保留密码/短信配置、60 秒验证码倒计时、CAPTCHA/安全验证续登、OAuth 组件和安全跳转; -旧入口保留凭证验证、地址脱敏、重试与卸载取消;SSH 保留服务端分页、完整集合搜索及增改删,清理卸载后的计时器和迟到结果。 -认证布局保留主题、站点配置、logo、redirect 和 slot。原样式的作用域接缝已逐项核对。 - -最小设计复核:以逐页等价替换解决可读性问题;不新增调用方字段或配置;路由与派生状态沿用已有来源; -不另建渲染/请求抽象或第二条实现路径;重写覆盖每个选定页面的完整模板,不为测试添加产品开关。 -净行数:产品 -863(登录 -390、旧入口 -80、SSH -293、布局 -100),测试 +348,增长用于三个真实页面行为场景及旧场景扩展;依赖/锁文件零变动。 - -合并后执行 `npm run check`、`npm run build`、`npm test`,161 个 Vue 文件和 55 个模块门禁通过,21/21 浏览器场景通过。 -新增覆盖:短信独占配置及倒计时、禁用短信时的默认登录方式、SSH 创建/编辑/删除末页恢复; -原旧入口失败场景扩展为真实点击重试,并检查不恢复 URL 凭证、不重新密码登录及无 Referrer。 -测试仍通过真实生产构建和独立 HTTP 假后端,不替换内部模块、不预置 JWT、不访问生产服务。 - -本轮交叉复核完整读取四个新文件及相关样式;登录组件、安全验证、会话和路由接缝按台账记录读取范围。 -最新质量复核未发现新增确认回退;详细原始业务规范并不存在,不能宣称全部原规范逐条一致。 -本轮已验证的公开入口为 `/login`、`/home.htm` 与 `/security/ssh-keys`,未因此提升其他页面的人工审查/功能覆盖状态。 -窄屏补查确认认证页和 SMS 表单在 320/390px 下不横向溢出,SSH 编辑弹窗在 390px 下宽 366px; -核对预填、取消、密码显示切换、注册/重置提示及 redirect 链接。截图证据随 `acceptance.json` 归档。 -另确认一个既有主题文案问题:浅色系统下默认 auto 首次循环到 light,按钮虽写“切换深色模式”却仍浅色; -基准版本行为相同,作为 `AUTH_THEME_CYCLE_LABEL` 有界债务保留,不把首次点击截图当作深色验收。 -门禁盲区:配置加载失败后重载、CAPTCHA/安全挑战/实名认证续登、真实 OAuth、SSH 剪贴板/失败响应/并发操作、 -旧入口卸载时取消等分支尚未被这 21 个场景完整覆盖;代码复核不代替这些分支的真实交互验证,也无证据将其判定为已坏。 - -v2 源码候选包已通过独立干净目录验收:从提交 `6c73598` 仅导出 `frontend/`,解压到仓库外, -重新执行 `npm ci`、源码检查、生产构建和 21 个浏览器场景,全部通过;稳定的场景结果与主工作树一致。 -导出包含 686 个文件,无符号链接,不含 `.env`、Git 历史、依赖目录、生成构建和数据库备份。 -此后仅补充文档与台账,没有改变已验收产品、依赖或测试。12 项低/中危传递依赖告警仍在债务清单中。 - -结构性修复扫描: - -```sh -rg -n 'fetch\(|AbortController|timeoutMs|logout|legacyLogin|useApi\(' app --glob '*.js' --glob '*.vue' -rg -n '/pay/.*status|setInterval\(|complete_list_n' app --glob '*.js' --glob '*.vue' -``` - -接口核心 JSON、上传、下载、旧平台身份验证共四个传输入口统一有限时;验证码刷新和 VNC 会话使用各自 -既有的交互生命周期,不宣称已完成全局网络子系统重写。支付状态只有一个共享轮询所有者,已修复。 -其余服务器刷新、验证码倒计时和实例查询不是同一个“支付绝对期限被吞掉”的缺陷,不在此改动中混改。 - -## 仍需联调 / 有界技术债 - -规模说明:原仓库没有 `frontend/`,新增的是已有业务的独立源码表达,不是同等数量的新功能。 -相对重建前基准,应用源码约 +123,394 行、现有样式展开后 +19,836 行、测试约 +1,250 行; -构建/锁文件/工具约 +9,964 行,静态资产文本约 +2,605 行,另保留二进制图片和字体。 -文档、截图与逐文件台账单独计量,不作为产品逻辑。较大体量主要来自恢复全部业务渲染函数和将压缩样式格式化; -没有为每个页面另造一套框架、请求系统或测试专用产品开关。不能因编译全绿就省略后续按业务逐页维护与联调。 - -- 真实下单、续费/升级、发票、财务、安全验证、短信/邮件、第三方 CAPTCHA/OAuth、真实支付、VNC 握手及生产反代:未使用生产环境验证。 -- `/captcha/` 及 `/remote-console/sessions` 为同源接口,必须在开发/测试部署另行配置反代,不能仅依赖 API origin。 -- 原远程控制网关属于独立服务。本工程保留客户端协议,但没有重写或部署该服务;此前审查发现的网关配额并发竞争仍需单独修复。 -- 浏览器回归采用外部 HTTP 假后端,不能代替供应商接口兼容性验收;52 个页面可构建不代表所有分支、每种响应字段都已人工核对。 -- 默认保留 JWT 持久化方式与登录 AES 协议,未进行会影响后端契约的身份协议升级;CryptoJS 已停止维护,应在前后端协同变更时迁移。 -- `npm audit` 的传递依赖低/中危告警仍保留,具体结果见 `dependency-audit.json`;没有盲目使用 `--force` 降级框架。对外上线前应复核受影响路径与补丁版本。 -- 大部分恢复页面仍含短局部变量和较长渲染函数,非逐字原始开发源码,也非每个页面都已重新手写模板。人工深度审查集中在入口、会话、支付、分页和远控边界。 - -旧服务器及数据库备份未导入新前端,没有覆盖原发布目录。新工程的所有变更仅限 `frontend/`。 diff --git a/nuxt.config.ts b/nuxt.config.ts index c87998c..34823b6 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,26 +1,34 @@ +/** 应用构建入口;所有运行时业务地址来自公开配置,不绑定历史服务器目录。 */ export default defineNuxtConfig({ compatibilityDate: "2026-10-25", + // 页面依赖浏览器存储、DOM 及远控能力,使用客户端 SPA,而非服务端渲染页面。 ssr: false, devtools: { enabled: false }, modules: ["@nuxt/icon"], icon: { + // 图标只读取本地打包的 Lucide 集合,不在缺失时向公共图标 API 发请求。 provider: "server", serverBundle: { collections: ["lucide"] }, fallbackToApi: false, }, + // 恢复的源码使用显式 import,避免自动扫描带来同名组件或隐式依赖。 components: false, imports: { autoImport: false }, css: [ + // 只放全站共享样式;各业务组件显式导入自己的带作用域样式。 "~/assets/styles/entry.Cs9kvuGi.css", "~/assets/styles/BuildUpdateNotice.CuqdqvlF.css", "~/assets/styles/OperationToasts.DfA_b8om.css", ], + // NUXT_PUBLIC_API_BASE 只填后端 origin,/console/v1 前缀由请求层追加。 + // public 会下发到浏览器,禁止在这里存放服务端密码或访问令牌。 runtimeConfig: { public: { apiBase: "" } }, app: { head: { htmlAttrs: { lang: "zh-CN" }, title: "破碎工坊云 - 会员中心", link: [ + // 字体和站点图标随 public/ 分发,离线测试和私有部署不依赖外部 CDN。 { rel: "stylesheet", href: "/fonts/harmonyos-sans-sc/Regular.css" }, { rel: "stylesheet", href: "/fonts/harmonyos-sans-sc/Semibold.css" }, { rel: "stylesheet", href: "/fonts/harmonyos-sans-sc/Bold.css" }, diff --git a/scripts/check-source.mjs b/scripts/check-source.mjs index e9c38d0..78d688d 100644 --- a/scripts/check-source.mjs +++ b/scripts/check-source.mjs @@ -1,3 +1,7 @@ +/** + * 静态源码门禁:解析应用的 JS/TS/Vue,检查显式导入和机器/旧部署路径依赖。 + * 这是构建前检查,不替代浏览器业务验收,也不会启动或修改生产服务。 + */ import fs from "node:fs"; import path from "node:path"; import { createRequire } from "node:module"; @@ -13,6 +17,7 @@ const require = createRequire(import.meta.url); const failures = []; const files = []; function walk(directory) { + // 仅递归 app/;不扫描 node_modules、构建产物或本地 docs 报告。 for (const entry of fs.readdirSync(directory, { withFileTypes: true })) { const file = path.join(directory, entry.name); if (entry.isDirectory()) walk(file); @@ -27,11 +32,13 @@ const dependencies = new Set( Object.keys({ ...manifest.dependencies, ...manifest.devDependencies }), ); function existsModule(file) { + // 与当前源码使用的简写导入形式对齐,允许目录下的 index.js / index.ts。 return ["", ".js", ".ts", ".json", ".vue", "/index.js", "/index.ts"].some( (extension) => fs.existsSync(file + extension), ); } function checkImport(source, owner) { + // # 开头的虚拟模块由 Nuxt 生成,本地文件与 npm 包则分别核对实际路径及依赖声明。 if (source.startsWith("#")) return; // Nuxt-generated public/virtual modules. if (source.startsWith("~/")) { if (!existsModule(path.join(root, "app", source.slice(2)))) @@ -53,6 +60,7 @@ function checkImport(source, owner) { } } function inspect(node, owner) { + // 按 AST 检查,不把注释中的历史说明误判成运行时路径依赖。 if (!node || typeof node !== "object") return; if ( [ @@ -64,6 +72,7 @@ function inspect(node, owner) { ) checkImport(node.source.value, owner); if (node.type === "CallExpression" && node.callee.type === "Import") { + // 静态字符串的懒加载同样要验证;动态计算的路径不在本门禁可证明范围内。 const value = node.arguments[0]; if (value.type === "StringLiteral") checkImport(value.value, owner); } @@ -81,6 +90,7 @@ function inspect(node, owner) { `${owner}:${node.loc?.start.line ?? 1}: runtime depends on deployment/machine path`, ); for (const [key, value] of Object.entries(node)) { + // 跳过位置和注释等元数据,仅递归语法节点,避免重复或无意义遍历。 if (["loc", "start", "end", "extra", "comments", "tokens"].includes(key)) continue; if (Array.isArray(value)) for (const item of value) inspect(item, owner); @@ -94,6 +104,7 @@ for (const file of files) { const source = fs.readFileSync(file, "utf8"); try { if (file.endsWith(".vue")) { + // script setup 先展开编译宏,再解析脚本;有 template 时另外检查模板编译错误。 components++; const { descriptor, errors } = parseVue(source, { filename: file }); if (errors.length) throw Error(errors.join("\n")); @@ -129,6 +140,7 @@ for (const file of files) { failures.push(`${file}: ${error.message}`); } } +// 一次报告全部失败并以非零状态退出,方便开发者和 CI 定位多个问题。 if (failures.length) { console.error( failures.map((failure) => failure.replaceAll(root + "/", "")).join("\n"), diff --git a/scripts/reconstruct.mjs b/scripts/reconstruct.mjs index 1dab657..c687f4a 100644 --- a/scripts/reconstruct.mjs +++ b/scripts/reconstruct.mjs @@ -1,4 +1,9 @@ /** One-time source reconstruction. Input is explicit; generated app has no runtime link to it. */ +/** + * 一次性重建留档,不参与日常开发、构建或发布。 + * 输入必须是可信的自有 Nuxt 发布目录:脚本会 import 其中的元数据,因此不是安全的第三方解包器。 + * 只在空工程执行;已有 app/pages 时直接拒绝,避免覆盖后续维护的源码和注释。 + */ import fs from "node:fs"; import path from "node:path"; import { pathToFileURL } from "node:url"; @@ -12,6 +17,7 @@ import { format } from "prettier"; const generate = generator.default; const traverse = traverser.default; const input = path.resolve(process.argv[2] || "MISSING_INPUT"); +// 所有输出定位到本工程;不向输入发布目录回写,也不改变生产发布软链接。 const root = path.resolve(import.meta.dirname, ".."); if (!fs.existsSync(path.join(input, "server/chunks/virtual/precomputed.mjs"))) throw Error("Pass the active .output directory"); @@ -19,6 +25,7 @@ if (fs.existsSync(path.join(root, "app/pages"))) throw Error( "Refusing to overwrite editable source; this importer is only for a new empty project", ); +// 这一步会执行输入模块,调用方必须先验证输入可信性。 const pc = ( await import( pathToFileURL(path.join(input, "server/chunks/virtual/precomputed.mjs")) @@ -26,6 +33,7 @@ const pc = ( ).default; const chunkDir = path.join(input, "public/_nuxt"); const asts = new Map(); +// 先解析元数据声明的脚本,再按导入图选择业务模块,不直接复制旧框架 bundle。 const files = [ ...new Set( Object.values(pc.modules) @@ -46,6 +54,7 @@ const textValue = (n) => ? n.quasis[0].value.cooked : n?.value; function resolve(file, exported, seen = new Set()) { + // 顺着重导出定位真正的定义;seen 检测循环,缺失导出则终止而非猜测模块归属。 if (seen.has(key(file, exported))) throw Error(`Cyclic export ${file}:${exported}`); seen.add(key(file, exported)); @@ -84,6 +93,7 @@ function resolve(file, exported, seen = new Set()) { const replacements = new Map(); const replace = (file, alias, source, imported) => replacements.set(key(file, alias), { source, imported }); +// 以下短名映射仅适用于本次可信发布版本,不是跨版本通用的编译器符号表。 const vue = { $: "watchSyncEffect", A: "nextTick", @@ -218,6 +228,7 @@ replace("DEP0rg1v.js", "t", "~/utils/brand.js", "logoUrl"); replace("ecKN0m8a.js", "r", "#internal/nuxt/paths", "publicAssetsURL"); const owners = new Map(); +// 页面、布局和业务组件一一对应源码路径,重复归属会报错,避免静默覆盖。 const own = Object.entries(pc.modules).filter(([p]) => /^(components|layouts|pages)\//.test(p), ); @@ -276,6 +287,7 @@ for (const file of files) { taken.add(output); } const authExports = { + // 为已核实的认证公共接口恢复业务名;未知模块导出仍保留原有绑定。 a: "loginErrorMessage", c: "ApiError", d: "apiCacheKey", @@ -296,6 +308,7 @@ const exportNames = new Map( Object.entries(authExports).map(([a, n]) => [key("BLvPXbVl.js", a), n]), ); function lookup(file, exported) { + // 优先使用官方包/手工适配映射,其余依赖落到当前 app/lib,而不是历史发布路径。 const direct = replacements.get(key(file, exported)); if (direct) return direct; const r = resolve(file, exported); @@ -312,6 +325,7 @@ const emitted = new Set(); const pending = [...owners.keys()].filter((f) => f !== chartOwner?.[0]); const patchFiles = []; async function add(file, code, parser) { + // 先收集格式化内容,所有代码文件最终通过 apply_patch 新增,失败即中止。 const formatted = await format(code, { parser: parser || @@ -360,6 +374,7 @@ for (const route of routes.elements) { route._meta = metaProps; } while (pending.length) { + // 从业务入口遍历依赖闭包;emitted 去重,以免循环依赖反复生成同一文件。 const file = pending.shift(); if (emitted.has(file)) continue; emitted.add(file); @@ -379,6 +394,7 @@ while (pending.length) { ); } if (file === "BLvPXbVl.js") { + // 针对此发布包剥离内嵌的 Pinia/密码库实现,保留业务逻辑并接回正式 npm 依赖。 // Business logic only; Pinia, file downloads and cryptography are npm dependencies. let keep = false; const body = []; @@ -442,6 +458,7 @@ while (pending.length) { }); traverse(ast, { Program(p) { + // 只重写被引用的导入绑定,同步改名所有引用以避免与当前作用域已有变量冲突。 p.scope.crawl(); for (const stmt of [...p.get("body")]) { if (!stmt.isImportDeclaration()) continue; @@ -510,6 +527,7 @@ while (pending.length) { }); for (const dep of dependencies) if (!emitted.has(dep)) pending.push(dep); if (owner) { + // 业务组件包装为可编辑 SFC,恢复路由元数据并显式导入原有作用域 CSS。 const defaultExport = ast.program.body.find((n) => t.isExportDefaultDeclaration(n), ); @@ -564,6 +582,7 @@ await add( ); await add( "docs/module-inventory.json", + // 此清单是本地重建记录;docs 已被 Git 忽略,不应作为产品运行依赖或强制加入版本库。 JSON.stringify( { pages: own.filter(([p]) => p.startsWith("pages/")).map(([p]) => p), @@ -584,6 +603,7 @@ await add( ), ); for (const { file, code } of patchFiles) { + // apply_patch 只新增目标;不使用整目录替换,也不清理已有文件。 const target = path.join(root, file); fs.mkdirSync(path.dirname(target), { recursive: true }); const patch = `*** Begin Patch\n*** Add File: ${target}\n${code @@ -598,6 +618,7 @@ for (const { file, code } of patchFiles) { } // Static binary assets retain their deployed paths; no JS bundle is copied. const cssFiles = [ + // 样式保留发布版 scope 选择器,避免在模板已丢失时重新分配作用域导致外观失配。 ...new Set( Object.values(pc.modules) .filter((v) => v.resourceType === "style") @@ -608,6 +629,7 @@ fs.mkdirSync(path.join(root, "app/assets/styles"), { recursive: true }); for (const file of cssFiles) { let css = fs.readFileSync(path.join(chunkDir, file), "utf8"); css = css.replace( + // 图标字体改用 public/icons 的稳定地址,脱离旧 _nuxt 输出目录。 /url\(([^)]*primeicons[^)]*)\)/g, (_, v) => `url(${v.replace(/^["']?|["']?$/g, "").replace(/^\.\//, "/icons/")})`, @@ -621,6 +643,7 @@ for (const file of cssFiles) { if (result.status !== 0) throw Error(result.stdout + result.stderr); } for (const name of fs.readdirSync(path.join(input, "public"))) + // public 的图片和字体保留原访问路径;不复制 _nuxt bundle 或构建版本目录。 if ( name !== "_nuxt" && !name.startsWith("._") && @@ -634,6 +657,7 @@ for (const name of fs.readdirSync(path.join(input, "public"))) }); } fs.mkdirSync(path.join(root, "public/icons"), { recursive: true }); +// PrimeIcons 字体单独归档,配合前面的 CSS URL 重写使用。 for (const name of fs.readdirSync(chunkDir)) if (name.startsWith("primeicons.") && !name.endsWith(".js")) fs.copyFileSync( diff --git a/tests/README.md b/tests/README.md index d8602e3..6df0aa6 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,6 +1,6 @@ # 浏览器端到端验收 -先在 `frontend` 安装项目依赖和 `playwright`,执行 `npm run build`,再执行 `npm test`。 +先在项目根目录执行 `npm ci` 安装锁定依赖,执行 `npm run build`,再执行 `npm test`。 测试使用 Node 自带的 `node:test`,直接操作实际构建后的页面,不替换项目内部模块。 测试会自动启动两个仅监听 `127.0.0.1` 的独立进程:构建后的 Nuxt 预览服务和 HTTP 假后端。 @@ -14,8 +14,8 @@ CHROME_PATH=/absolute/path/to/chrome npm test ``` -默认测试当前 `frontend/.output`。如需验证其他工作树中已经构建的前端,可设置 -`E2E_APP_ROOT=/absolute/path/to/frontend`;测试依赖仍从当前工作树解析。 +默认测试当前项目的 `.output`。如需验证其他工作树中已经构建的前端,可设置 +`E2E_APP_ROOT=/absolute/path/to/project`;测试依赖仍从当前工作树解析。 每次运行在 `tests/fixtures/runs/run-*` 下生成截图和 `manifest.json`。 清单只包含稳定的场景结果、行为观察、请求形状以及浏览器错误/网络越界;不包含随机端口、 diff --git a/tests/console.e2e.test.mjs b/tests/console.e2e.test.mjs index 53c440a..b98760d 100644 --- a/tests/console.e2e.test.mjs +++ b/tests/console.e2e.test.mjs @@ -1,3 +1,8 @@ +/** + * 通过浏览器验证实际生产构建,不替换内部模块、不预置 JWT。 + * 测试只连接独立本地 HTTP 假后端,覆盖页面行为和接口契约,不代表真实支付/供应商已验收。 + * 每个场景保存截图、脱敏请求形状及稳定结果,方便失败后复核。 + */ import assert from "node:assert/strict"; import { spawn } from "node:child_process"; import { createDecipheriv } from "node:crypto"; @@ -12,6 +17,7 @@ import { chromium } from "playwright"; const testDirectory = dirname(fileURLToPath(import.meta.url)); const appRoot = resolve(process.env.E2E_APP_ROOT || join(testDirectory, "..")); +// 默认复用系统 Chrome;CI/其他平台可指定可执行文件,不自动下载或修改用户浏览器。 const chromePath = process.env.CHROME_PATH || "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"; @@ -25,6 +31,7 @@ let browser; let runDirectory; async function eventually(read, accept, message, timeout = 10000) { + // 等待可观察结果稳定,而不是假设渲染/网络会在固定休眠后完成;失败信息过滤敏感字段。 const deadline = Date.now() + timeout; let value; do { @@ -41,6 +48,7 @@ async function eventually(read, accept, message, timeout = 10000) { } function startProcess(arguments_, options = {}) { + // 统一收集子进程日志和句柄,异常退出可诊断,after 钩子负责结束所有本地服务。 const child = spawn(process.execPath, arguments_, { ...options, stdio: ["ignore", "pipe", "pipe"], @@ -57,6 +65,7 @@ function startProcess(arguments_, options = {}) { } async function fixtureRequest(path, body) { + // 控制口只属于本地测试后端,调整外部响应,不给产品源码增加测试专用分支。 const response = await fetch(`${backendOrigin}/__control/${path}`, { method: body === undefined ? "GET" : "POST", headers: { "Content-Type": "application/json" }, @@ -68,6 +77,7 @@ async function fixtureRequest(path, body) { } async function freePort() { + // 让系统分配回环端口,降低并行运行多个验收进程时的固定端口冲突风险。 const server = createServer(); await new Promise((resolve_, reject) => { server.once("error", reject); @@ -80,6 +90,7 @@ async function freePort() { before( async () => { + // 必须先构建;此处运行 .output,而非开发服务器,确保测试走实际交付入口。 const runs = join(testDirectory, "fixtures", "runs"); await mkdir(runs, { recursive: true }); runDirectory = await mkdtemp(join(runs, "run-")); @@ -89,6 +100,7 @@ before( const api = startProcess([ join(testDirectory, "fixtures", "api-server.mjs"), ]); + // 假后端首行只报告监听地址,避免在启动协议中输出账号密码或请求内容。 backendOrigin = await new Promise((resolve_, reject) => { const lines = createInterface({ input: api.stdout }); const timer = setTimeout( @@ -117,6 +129,7 @@ before( { cwd: appRoot, env: { + // 使用生产已有的公开 API 配置接入外部边界,不读取或修改项目 .env。 ...process.env, NODE_ENV: "production", HOST: "127.0.0.1", @@ -155,6 +168,7 @@ before( ); after(async () => { + // 先关闭浏览器,再逆序结束服务;挂起接口也不能让验收进程永久留在后台。 await browser?.close(); for (const child of children.reverse()) { if (child.exitCode !== null) continue; @@ -178,6 +192,7 @@ after(async () => { }); function normalizeRequests(requests) { + // 只记录字段名和是否认证;去重、排序移除并发请求顺序等非业务差异,不保存凭证值。 const distinct = requests.map( ({ method, path, query, body, authorization }) => ({ method, @@ -197,6 +212,7 @@ function normalizeRequests(requests) { } async function scenario(t, options, exercise) { + // 每个场景重新初始化后端状态和浏览器上下文,账号与列表缓存不能污染下一场景。 await fixtureRequest("reset", options); const context = await browser.newContext({ viewport: { width: 1680, height: 1050 }, @@ -206,6 +222,7 @@ async function scenario(t, options, exercise) { const networkViolations = []; const allowedOrigins = new Set([appOrigin, backendOrigin]); await context.route("**/*", async (route) => { + // 只允许两个本地 origin;意外的生产/CDN访问会被阻断,并在场景结束时作为失败报告。 const url = new URL(route.request().url()); if ( !["http:", "https:"].includes(url.protocol) || @@ -234,6 +251,7 @@ async function scenario(t, options, exercise) { } catch (error) { failure = error; } finally { + // 即使业务断言失败,也尽量保存截图与请求诊断,不能只留下“超时”这一条错误。 try { assert.equal( await page @@ -257,6 +275,7 @@ async function scenario(t, options, exercise) { } await context.close(); requests = await fixtureRequest("requests"); + // 诊断附件保留先后顺序,但不落盘 body、Authorization 或 referrer 原文。 await writeFile( join(runDirectory, screenshot.replace(/\.png$/, ".requests.json")), `${JSON.stringify( @@ -301,6 +320,7 @@ async function scenario(t, options, exercise) { } catch (error) { failure ??= error; } + // 主清单保留稳定观察结果;失败文本另外替换随机 origin、测试密码和令牌。 manifest.scenarios.push({ name: t.name, result: failure ? "failed" : "passed", @@ -327,6 +347,7 @@ async function scenario(t, options, exercise) { } async function login(page, redirect = "/security/ssh-keys") { + // 所有普通场景经真实登录表单建立会话,顺带验证密码输入框没有退化成明文框。 await page.goto( `${appOrigin}/login?redirect=${encodeURIComponent(redirect)}`, ); @@ -339,6 +360,7 @@ async function login(page, redirect = "/security/ssh-keys") { } async function visibleKeyIds(page) { + // 从用户实际看到的表格读取 ID,而不是访问组件状态或请求客户端的内部缓存。 const rows = await page .getByRole("row") .filter({ hasText: /#\d+/ }) @@ -351,6 +373,7 @@ test( { timeout: 20000 }, (t) => scenario(t, {}, async (page) => { + // 访客导航保留查询串和锚点,但不能先发受保护的列表请求再跳转。 await page.goto(`${appOrigin}/security/ssh-keys?m=7#details`); await page.waitForURL((url) => url.pathname === "/login"); const url = new URL(page.url()); @@ -394,6 +417,7 @@ test( "Email accounts must not carry a phone prefix", ); assert.notEqual(loginRequest.body.password, loginPassword); + // 固定 AES 参数是既有接口协议;这里核对发送字段,不把它误当安全的密码存储方案。 const decipher = createDecipheriv( "aes-128-cbc", Buffer.from("idcsmart.finance"), @@ -422,6 +446,7 @@ test( { timeout: 30000 }, (t) => scenario(t, { loginMode: "sms-only" }, async (page) => { + // 外部浏览器时钟推进验证码倒计时,不向产品增加测试时间开关。 await page.clock.install(); await page.goto( `${appOrigin}/login?redirect=${encodeURIComponent("/security/ssh-keys")}`, @@ -629,6 +654,7 @@ test( ordinarySecond, Array.from({ length: 10 }, (_, index) => index + 11), ); + // 普通后端分页与前端搜索分页分别验证,防止二次切片或每页重复显示全部匹配项。 await page.getByRole("textbox", { name: "搜索 SSH 密钥" }).fill("audit"); await page.getByRole("button", { name: "搜索", exact: true }).click(); const first = await eventually( @@ -716,6 +742,7 @@ test( { timeout: 30000 }, (t) => scenario(t, { sshLastPageSingleRow: true }, async (page) => { + // 通过真实新增/编辑/删除制造末页消失,验证列表能回到合法页,而不只验证按钮关闭。 await login(page); await eventually( () => visibleKeyIds(page), @@ -848,6 +875,7 @@ test( { timeout: 25000 }, (t) => scenario(t, { hangSshBody: true }, async (page) => { + // HTTP 头已返回但 JSON 体挂起,证明请求截止时间覆盖了解码阶段而非只覆盖 fetch。 await page.clock.install(); const headers = page.waitForResponse( (response) => @@ -888,6 +916,7 @@ test( { timeout: 25000 }, (t) => scenario(t, { hangLogout: true }, async (page) => { + // 后端退出故意不返回;本地会话仍须立即撤销,不能把安全退出绑在网络成功上。 await login(page); await page.getByRole("button", { name: "用户菜单", exact: true }).click(); await page @@ -945,6 +974,7 @@ test( ); for (const [name, redirect] of [ + // 三种危险返回地址经真实登录入口验证,不能跳出本站 origin。 ["protocol relative", "//external.invalid/steal"], ["encoded slash", "/%2fexternal.invalid/steal"], ["backslash", "/\\external.invalid/steal"], @@ -987,6 +1017,7 @@ test( { timeout: 30000 }, (t) => scenario(t, { hangPaymentStatus: true }, async (page) => { + // 支付状态接口永久挂起时,独立五分钟期限仍应终止支付等待。 await login(page, "/orders/order/pay?id=42"); await page.clock.install(); await page.getByRole("button", { name: "确认支付", exact: true }).click(); @@ -1098,6 +1129,7 @@ test( { timeout: 25000 }, (t) => scenario(t, { expiredLegacy: true }, async (page) => { + // 临时凭证首次拒绝后仍留在内存供原页重试,但不得重新进入地址栏或持久化存储。 await page.goto(`${appOrigin}/home.htm?queryParam=e2e-session-token`); await page .getByRole("heading", { name: "暂时无法进入会员中心", exact: true }) @@ -1214,6 +1246,7 @@ test( "Payment initialization must settle before expiry", ); const baseline = (await fixtureRequest("requests")).length; + // 付款前预检发现401后,不应因响应式身份变更重新触发支付初始化。 await fixtureRequest("options", { expiredPayment: true }); await page.getByRole("button", { name: "确认支付", exact: true }).click(); await page.waitForURL((url) => url.pathname === "/login"); @@ -1256,6 +1289,7 @@ test( "The first tab must show an authenticated page", ); const secondTab = await page.context().newPage(); + // 使用同一浏览器真实 localStorage/storage 事件,不伪造跨标签页退出通知。 await secondTab.goto(`${appOrigin}/security/ssh-keys`); await eventually( () => visibleKeyIds(secondTab), diff --git a/tests/fixtures/api-server.mjs b/tests/fixtures/api-server.mjs index 3c5ef2a..ebeda05 100644 --- a/tests/fixtures/api-server.mjs +++ b/tests/fixtures/api-server.mjs @@ -1,3 +1,8 @@ +/** + * 独立进程的 HTTP 假后端,仅监听回环地址,按既有 /console/v1 信封响应。 + * 只模拟测试需要的外部接口,不是可部署的业务后端,也不执行真实付款或短信投递。 + * 控制口允许场景重置数据/制造挂起和失效;它不进入产品接口实现。 + */ import { createServer } from "node:http"; const token = "e2e-session-token"; @@ -8,6 +13,7 @@ const account = { credit: "100.00", }; const initialKeys = Array.from({ length: 28 }, (_, index) => ({ + // 25个audit匹配项 + 3个other项,覆盖搜索结果10/10/5分页与切换过滤条件。 id: index + 1, name: index < 25 @@ -23,11 +29,13 @@ let paid = false; let keys = initialKeys.map((key) => ({ ...key })); function reply(response, data = {}, extra = {}, httpStatus = 200) { + // HTTP状态与业务信封可以独立覆盖,确保前端同时处理传输401和信封401。 response.writeHead(httpStatus, { "Content-Type": "application/json" }); response.end(JSON.stringify({ status: httpStatus, msg: "", data, ...extra })); } const server = createServer(async (request, response) => { + // 预览服务和假后端端口不同,需要允许测试浏览器发送JSON与Bearer请求。 response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader( "Access-Control-Allow-Headers", @@ -51,6 +59,7 @@ const server = createServer(async (request, response) => { } if (url.pathname === "/__control/reset" && request.method === "POST") { + // 场景从全新列表和未付款状态开始;11行变体用于删除最后一页唯一记录。 options = body ?? {}; requests = []; paid = false; @@ -67,6 +76,7 @@ const server = createServer(async (request, response) => { const path = url.pathname.replace(/^\/console\/v1/, ""); const record = { + // 请求原文仅在测试进程内存供断言使用,测试输出端另做脱敏,不能直接导出此对象。 method: request.method, path, query: Object.fromEntries(url.searchParams), @@ -78,6 +88,7 @@ const server = createServer(async (request, response) => { requests.push(record); if (path === "/common" && request.method === "GET") { + // 模拟站点配置决定允许的登录方式;离线场景关闭外部CAPTCHA与OAuth。 return reply(response, { website_name: "本地前端验收", login_phone_password: options.loginMode === "sms-only" ? 0 : 1, @@ -99,6 +110,7 @@ const server = createServer(async (request, response) => { if (path === "/phone/code" && request.method === "POST") return reply(response); + // 公共配置和登录之后的接口必须携带实际登录得到的测试令牌。 if (request.headers.authorization !== `Bearer ${token}`) { record.invalidAuthorization = true; return reply(response, {}, { msg: "Missing fixture session" }, 401); @@ -138,6 +150,7 @@ const server = createServer(async (request, response) => { } if (path === "/ssh_key" && request.method === "GET") { if (options.hangSshBody) { + // 只发送响应头和不完整JSON,保持连接以复现“响应体解码永不结束”。 response.writeHead(200, { "Content-Type": "application/json" }); response.write('{"status":200,"msg":"","data":'); return; @@ -149,6 +162,7 @@ const server = createServer(async (request, response) => { { status: 401, msg: "Expired fixture session" }, ); const page = Math.max(1, Number(url.searchParams.get("page")) || 1); + // 列表接口仍走后端分页;搜索聚合/切片由真实前端路径负责。 const limit = Math.max(1, Number(url.searchParams.get("limit")) || 10); return reply(response, { list: keys.slice((page - 1) * limit, page * limit), @@ -172,6 +186,7 @@ const server = createServer(async (request, response) => { return reply(response); } if (path === "/order/42" && request.method === "GET") { + // 余额、订单与支付状态共享paid事实,支付成功后回读必须反映已付金额。 if (options.expiredPayment) return reply( response, @@ -216,6 +231,7 @@ const server = createServer(async (request, response) => { if (path === "/voucher/pay" && request.method === "GET") return reply(response, { list: [] }); if (path === "/pay" && request.method === "POST") { + // Paid是现有后端的顶层字段;挂起变体返回渠道HTML,随后状态查询不响应。 if (options.hangPaymentStatus) return reply(response, { html: '
本地支付渠道
' }); paid = true; @@ -247,6 +263,7 @@ const server = createServer(async (request, response) => { if (path === "/recommend/promoter" && request.method === "GET") return reply(response, { promoter: { permission: 0 } }); + // 未实现接口显式失败并留标记,防止新增产品请求被“统一成功”假后端掩盖。 record.handled = false; reply( response, @@ -257,12 +274,14 @@ const server = createServer(async (request, response) => { }); server.listen(0, "127.0.0.1", () => { + // 由系统选择空闲端口,首行JSON作为父测试进程的启动握手。 process.stdout.write( `${JSON.stringify({ origin: `http://127.0.0.1:${server.address().port}` })}\n`, ); }); process.on("SIGTERM", () => { + // 先关闭挂起连接,确保超时测试也能正常清理进程。 server.closeAllConnections(); server.close(() => process.exit(0)); });