chore: sync marketing pages, CMS extensions, tests and project docs

同步工作区剩余变更,主要包括:
- 营销页面组件与布局持续优化(about/news/services/solutions/team 等)
- 详情页四层叙事组件、布局组件、UI 组件调整
- CMS 数据模型、API 路由、权限、工作流、站内通知、媒体管理扩展
- 新增/补充单元测试与 E2E 测试(cms-workflow.spec.ts 等)
- ESLint 9 迁移、jest/tsconfig 配置更新、依赖调整
- 新增 ADR、CMS 评估文档、Release Review / Acceptance 报告
- 移除水墨装饰组件与大体积未使用字体文件
This commit is contained in:
张翔
2026-07-25 08:04:01 +08:00
parent e35090b914
commit 10404dbb36
208 changed files with 18107 additions and 8330 deletions
@@ -0,0 +1,33 @@
# 依赖漏洞修复决策记录
## 决策背景
用户选择 **C**:尝试全部修复依赖漏洞,包括将 `next` 升级到 16。
## 执行结果
1. `npm audit fix --force` 失败:
- `@lhci/cli` 被降级到 `0.1.0`,该版本尝试通过 `git+ssh://git@github.com/GoogleChrome/lighthouse.git` 拉取依赖。
- 当前环境无 GitHub SSH 访问权限,导致 `npm error code 128`
- `eslint-config-next@16.2.11` 要求 `eslint@>=9.0.0`,与当前 `eslint@8.57.1` 冲突。
2. 按执行计划回退策略:
- 恢复原始 `package-lock.json`
- 运行 `npm install` 回到原始依赖状态。
- 执行 `npm audit fix`(非 `--force`)修复可向后兼容的漏洞。
3. 回退后验证:
- `npm run build:clean` ✅ 通过
- `npm run type-check` ✅ 通过
- `npm run lint` ✅ 通过
## 当前状态
- 运行 `npm audit --audit-level moderate` 仍报告 **12 个漏洞**3 low / 3 moderate / 6 high)。
- 未修复的核心漏洞涉及 `next``postcss``@lhci/cli` 等,修复均需 breaking change。
- 由于封版阶段不适合引入 major version 升级与 @lhci/cli 的 git 依赖问题,决定将剩余漏洞记录为**已知遗留风险**,不在本次封版前强制修复。
## 建议后续行动
- 上线后安排专项升级:`next` → 16.x、`eslint` → 9.x、`@lhci/cli` → 兼容版本。
-`RELEASE_ACCEPTANCE_REPORT.md` 中明确列出未修复漏洞清单与风险等级。
@@ -0,0 +1,31 @@
# 视觉回归人工抽检记录
## 抽检时间
2026-07-22
## 抽检样本
`e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/` 中抽取 5 张关键全页截图:
| 序号 | 页面 | 文件名 |
|---|---|---|
| 1 | 首页 | `home-fullpage-visual-chromium-desktop.png` |
| 2 | 产品列表 | `products-fullpage-visual-chromium-desktop.png` |
| 3 | 产品详情-ERP | `product-erp-fullpage-visual-chromium-desktop.png` |
| 4 | 联系我们 | `contact-fullpage-visual-chromium-desktop.png` |
| 5 | 新闻详情 | `news-detail-fullpage-visual-chromium-desktop.png` |
## 抽检结论
| 页面 | 检查结果 | 说明 |
|---|---|---|
| 首页 | ✅ 通过 | Hero 区域、数据指标、服务模块、案例模块、CTA 区域布局正常;品牌红 `#C41E3A` 用于关键词、CTA 按钮等关键触达点,未出现大面积滥用。 |
| 产品列表 | ✅ 通过 | 企业套装与专业产品分类清晰,产品卡片排列整齐,推荐产品组合区域正常。 |
| 产品详情-ERP | ✅ 通过 | 核心功能、产品价值、实施流程、可衡量成果、客户案例、资质认证、CTA 等四层叙事结构完整,未发现文字截断或元素重叠。 |
| 联系我们 | ✅ 通过 | 联系信息与表单左右布局清晰,表单字段完整,提交按钮使用品牌红色,底部备案信息可见。 |
| 新闻详情 | ✅ 通过 | 标题、日期、分类、正文、配图、返回/CTA 按钮布局正常,无内容溢出。 |
## 总体结论
5 张关键页面截图均未发现布局错乱、文字截断、品牌色滥用或明显视觉异常。视觉回归基线更新可接受。
@@ -0,0 +1 @@
d2a4e702dac62d31791b611dc748485ab18f180e
@@ -0,0 +1,238 @@
M .env.example
M CONTEXT.md
M README.md
M config/test/jest.config.js
M e2e/playwright.config.ts
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/about-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/contact-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/footer-section-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/header-navigation-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/home-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/news-detail-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/news-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/product-erp-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/products-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/service-software-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/services-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/solution-manufacturing-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/solutions-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/team-fullpage-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/theme-dark-main-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-desktop/visual-regression.spec.ts/theme-light-main-visual-chromium-desktop.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/about-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/contact-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/footer-section-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/home-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/news-detail-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/news-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/product-erp-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/products-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/service-software-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/services-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/solution-manufacturing-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/solutions-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/team-fullpage-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/theme-dark-main-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-mobile/visual-regression.spec.ts/theme-light-main-visual-chromium-mobile.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/about-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/contact-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/footer-section-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/header-navigation-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/home-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/news-detail-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/news-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/product-erp-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/products-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/service-software-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/services-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/solution-manufacturing-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/solutions-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/team-fullpage-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/theme-dark-main-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-chromium-tablet/visual-regression.spec.ts/theme-light-main-visual-chromium-tablet.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/about-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/contact-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/footer-section-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/header-navigation-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/home-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/news-detail-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/news-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/product-erp-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/products-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/service-software-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/services-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/solution-manufacturing-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/solutions-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/team-fullpage-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/theme-dark-main-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-firefox-desktop/visual-regression.spec.ts/theme-light-main-visual-firefox-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/about-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/contact-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/footer-section-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/header-navigation-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/home-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/news-detail-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/news-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/product-erp-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/products-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/service-software-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/services-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/solution-manufacturing-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/solutions-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/team-fullpage-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/theme-dark-main-visual-webkit-desktop.png
M e2e/visual-snapshots/visual-webkit-desktop/visual-regression.spec.ts/theme-light-main-visual-webkit-desktop.png
M nginx-static-production.conf
M package-lock.json
M package.json
M prisma/schema.prisma
M prisma/seed.ts
M scripts/utils/check-heading-hierarchy.ts
M src/app/(marketing)/about/about-content-v2.tsx
M src/app/(marketing)/about/about-content-v3.tsx
M src/app/(marketing)/about/about-content-v4.tsx
M src/app/(marketing)/cases/[slug]/page.tsx
D src/app/(marketing)/cases/cases-content-v1.tsx
D src/app/(marketing)/cases/cases-content-v2.tsx
M src/app/(marketing)/cases/client.tsx
M src/app/(marketing)/cases/page.tsx
M src/app/(marketing)/contact/contact-content-v2.tsx
M src/app/(marketing)/home-content-v11.tsx
M src/app/(marketing)/home-content-v12.tsx
M src/app/(marketing)/home-content-v13.tsx
M src/app/(marketing)/news/[slug]/NewsDetailClient.tsx
M src/app/(marketing)/news/[slug]/page.tsx
M src/app/(marketing)/news/news-content-v3.tsx
M src/app/(marketing)/news/page.tsx
M src/app/(marketing)/page.tsx
M src/app/(marketing)/products/[id]/page.test.tsx
M src/app/(marketing)/products/[id]/page.tsx
M src/app/(marketing)/products/page.tsx
M src/app/(marketing)/products/product-detail-content-v3.tsx
M src/app/(marketing)/products/products-content-v3.tsx
M src/app/(marketing)/products/standalone/[id]/client.tsx
M src/app/(marketing)/products/standalone/[id]/page.tsx
M src/app/(marketing)/services/[id]/page.tsx
M src/app/(marketing)/services/page.tsx
M src/app/(marketing)/services/service-detail-content-v2.tsx
M src/app/(marketing)/services/service-detail-content-v4.tsx
M src/app/(marketing)/services/services-content-v3.tsx
M src/app/(marketing)/solutions/[id]/page.tsx
M src/app/(marketing)/solutions/page.tsx
M src/app/(marketing)/team/page.tsx
M src/app/(marketing)/team/team-content-v3.tsx
M src/app/api/admin/items/route.ts
M src/app/api/admin/media/route.ts
M src/app/api/admin/models/route.ts
M src/app/api/admin/zones/route.ts
M src/app/api/cms/revalidate/route.ts
M src/app/api/contact/route.ts
M src/app/globals.css
M src/app/privacy/page.test.tsx
M src/app/privacy/page.tsx
M src/app/terms/page.test.tsx
M src/app/terms/page.tsx
M src/components/admin/admin-layout.tsx
M src/components/content/sections.tsx
M src/components/detail/brand-elements.tsx
M src/components/detail/detail-cross-recommend.tsx
M src/components/detail/detail-cta-section.tsx
M src/components/detail/detail-hero.tsx
M src/components/detail/detail-product-value.tsx
M src/components/detail/detail-trust-section.tsx
M src/components/detail/detail.test.tsx
M src/components/detail/index.ts
M src/components/detail/micro-interactions.tsx
M src/components/detail/service-value.tsx
M src/components/detail/solution-value.tsx
M src/components/layout/footer.tsx
M src/components/layout/header.tsx
M src/components/layout/mega-dropdown.tsx
M src/components/sections/hero-section-v2.tsx
M src/components/sections/methodology-section.tsx
M src/components/sections/sections.test.tsx
M src/components/ui/challenge-card.tsx
D src/components/ui/hero-ink-background.tsx
M src/components/ui/index.ts
D src/components/ui/ink-glow-card.tsx
D src/components/ui/ink-wash/InkCard.tsx
D src/components/ui/ink-wash/InkWashBackground.tsx
D src/components/ui/ink-wash/index.ts
M src/components/ui/page-decoration.tsx
M src/components/ui/product-card.tsx
D src/hooks/use-focus-trap.test.ts
D src/hooks/use-mouse-glow.test.ts
D src/hooks/use-mouse-glow.ts
M src/hooks/use-reduced-motion.test.ts
M src/lib/admin-api.ts
M src/lib/animations.test.tsx
M src/lib/animations.tsx
M src/lib/auth.ts
M src/lib/cms/content-types.ts
M src/lib/cms/data-server.test.ts
M src/lib/cms/data-server.ts
M src/lib/cms/types.ts
M src/lib/constants.ts
M src/lib/constants/cases.test.ts
M src/lib/constants/cases.ts
M src/lib/constants/hero-themes.ts
M src/lib/constants/index.ts
M src/lib/constants/products.ts
M src/lib/constants/services.ts
M src/lib/constants/solutions.ts
M src/lib/constants/team.ts
M src/middleware.ts
M tailwind.config.js
M tsconfig.json
?? .lighthouseci/
?? RELEASE_REVIEW_REPORT.md
?? accessibility-report.json
?? docs/adr/0006-remove-ink-elements-pure-consulting.md
?? docs/adr/0007-hybrid-rendering-for-cms.md
?? docs/cms-evaluation.md
?? docs/superpowers/specs/2026-07-17-cms-implementation-prd.md
?? docs/superpowers/specs/2026-07-17-cms-implementation-tasks.md
?? e2e/cms-workflow.spec.ts
?? e2e/storageState.json
?? e2e/visual-regression.spec.ts-snapshots/
?? heading-hierarchy-report.json
?? prisma/migrations/20260717034113_add_locale_to_content_item/
?? prisma/migrations/20260717035951_add_rbac_models/
?? prisma/migrations/20260717041418_add_media_derivatives/
?? prisma/migrations/20260717044101_add_notification_model/
?? prisma/seeds/
?? release-acceptance-reports/
?? scripts/accessibility-test.js
?? src/app/(marketing)/about/brand/
?? src/app/(marketing)/cases/[slug]/page.test.tsx
?? src/app/(marketing)/cases/page.test.tsx
?? src/app/(marketing)/home-content-v14.tsx
?? src/app/(marketing)/news/[slug]/page.test.tsx
?? src/app/(marketing)/news/page.test.tsx
?? src/app/(marketing)/page.test.tsx
?? src/app/(marketing)/products/page.test.tsx
?? src/app/(marketing)/products/standalone/[id]/page.test.tsx
?? src/app/(marketing)/services/[id]/page.test.tsx
?? src/app/(marketing)/services/page.test.tsx
?? src/app/(marketing)/solutions/[id]/page.test.tsx
?? src/app/(marketing)/solutions/page.test.tsx
?? src/app/(marketing)/team/page.test.tsx
?? src/app/admin/roles/
?? src/app/api/admin/items/[id]/
?? src/app/api/admin/items/route.test.ts
?? src/app/api/admin/media/route.test.ts
?? src/app/api/admin/models/route.test.ts
?? src/app/api/admin/notifications/
?? src/app/api/admin/roles/
?? src/app/api/admin/zones/route.test.ts
?? src/app/api/cms/revalidate/route.test.ts
?? src/components/content/sections.test.tsx
?? src/components/content/testimonials.test.tsx
?? src/hooks/use-focus-trap.test.tsx
?? src/lib/cms/notifications.test.ts
?? src/lib/cms/notifications.ts
?? src/lib/cms/workflow.test.ts
?? src/lib/cms/workflow.ts
?? src/lib/media/
?? src/lib/permissions.test.ts
?? src/lib/permissions.ts
@@ -0,0 +1,258 @@
{
"root_group": {
"checks": [
{
"name": "status is 200",
"path": "::status is 200",
"id": "6210a8cd14cd70477eba5c5e4cb3fb5f",
"passes": 49965,
"fails": 0
},
{
"fails": 741,
"name": "response time < 500ms",
"path": "::response time < 500ms",
"id": "3e02485a995423a591645f4eee6c60eb",
"passes": 49224
}
],
"name": "",
"path": "",
"id": "d41d8cd98f00b204e9800998ecf8427e",
"groups": []
},
"options": {
"summaryTrendStats": [
"avg",
"min",
"med",
"max",
"p(90)",
"p(95)"
],
"summaryTimeUnit": "",
"noColor": false
},
"state": {
"isStdOutTTY": false,
"isStdErrTTY": false,
"testRunDurationMs": 962658.702
},
"metrics": {
"data_sent": {
"contains": "data",
"values": {
"count": 3764992,
"rate": 3911.035128210995
},
"type": "counter"
},
"iteration_duration": {
"type": "trend",
"contains": "time",
"values": {
"p(90)": 3722.7300336000003,
"p(95)": 3873.9589084,
"avg": 2527.2848934033836,
"min": 1001.968792,
"med": 2525.472625,
"max": 6837.841
}
},
"iterations": {
"values": {
"count": 49965,
"rate": 51.90313025394539
},
"type": "counter",
"contains": "default"
},
"http_reqs": {
"type": "counter",
"contains": "default",
"values": {
"count": 49965,
"rate": 51.90313025394539
}
},
"errors": {
"type": "rate",
"contains": "default",
"values": {
"rate": 0.01483038126688682,
"passes": 741,
"fails": 49224
},
"thresholds": {
"rate<0.01": {
"ok": false
}
}
},
"vus_max": {
"type": "gauge",
"contains": "default",
"values": {
"value": 200,
"min": 200,
"max": 200
}
},
"data_received": {
"type": "counter",
"contains": "data",
"values": {
"count": 3961756724,
"rate": 4115432.308220074
}
},
"checks": {
"type": "rate",
"contains": "default",
"values": {
"rate": 0.9925848093665566,
"passes": 99189,
"fails": 741
}
},
"http_req_duration{expected_response:true}": {
"type": "trend",
"contains": "time",
"values": {
"avg": 26.06650855598932,
"min": 0.753,
"med": 2.816,
"max": 2929.839,
"p(90)": 7.505200000000002,
"p(95)": 19.182799999999997
}
},
"http_req_connecting": {
"type": "trend",
"contains": "time",
"values": {
"avg": 0.002444411087761432,
"min": 0,
"med": 0,
"max": 39.483,
"p(90)": 0,
"p(95)": 0
}
},
"http_req_sending": {
"contains": "time",
"values": {
"p(90)": 0.038,
"p(95)": 0.054,
"avg": 0.38694616231355866,
"min": 0.002,
"med": 0.015,
"max": 2581.801
},
"type": "trend"
},
"http_req_tls_handshaking": {
"values": {
"avg": 0,
"min": 0,
"med": 0,
"max": 0,
"p(90)": 0,
"p(95)": 0
},
"type": "trend",
"contains": "time"
},
"http_req_blocked": {
"type": "trend",
"contains": "time",
"values": {
"avg": 0.040382988091649086,
"min": 0.001,
"med": 0.005,
"max": 164.793,
"p(90)": 0.012,
"p(95)": 0.018
}
},
"http_req_receiving": {
"type": "trend",
"contains": "time",
"values": {
"med": 0.097,
"max": 275.669,
"p(90)": 0.265,
"p(95)": 0.37,
"avg": 0.2240320224157011,
"min": 0.017
}
},
"response_time": {
"type": "trend",
"contains": "default",
"values": {
"avg": 26.06650855598932,
"min": 0.753,
"med": 2.816,
"max": 2929.839,
"p(90)": 7.505200000000002,
"p(95)": 19.182799999999997
}
},
"vus": {
"type": "gauge",
"contains": "default",
"values": {
"value": 2,
"min": 1,
"max": 200
}
},
"http_req_duration": {
"type": "trend",
"contains": "time",
"values": {
"med": 2.816,
"max": 2929.839,
"p(90)": 7.505200000000002,
"p(95)": 19.182799999999997,
"avg": 26.06650855598932,
"min": 0.753
},
"thresholds": {
"p(95)<500": {
"ok": true
},
"p(99)<1000": {
"ok": true
}
}
},
"http_req_waiting": {
"type": "trend",
"contains": "time",
"values": {
"med": 2.675,
"max": 2697.224,
"p(90)": 7.156600000000001,
"p(95)": 18.122599999999963,
"avg": 25.45553037125965,
"min": 0.724
}
},
"http_req_failed": {
"values": {
"rate": 0,
"passes": 0,
"fails": 49965
},
"thresholds": {
"rate<0.01": {
"ok": true
}
},
"type": "rate",
"contains": "default"
}
}
}
@@ -0,0 +1,258 @@
{
"metrics": {
"vus": {
"values": {
"value": 3,
"min": 1,
"max": 300
},
"type": "gauge",
"contains": "default"
},
"iteration_duration": {
"type": "trend",
"contains": "time",
"values": {
"avg": 1534.6807611100153,
"min": 501.543042,
"med": 1528.326104,
"max": 5473.78825,
"p(90)": 2333.1592920000003,
"p(95)": 2436.328104
}
},
"http_reqs": {
"type": "counter",
"contains": "default",
"values": {
"count": 90926,
"rate": 108.17247060304018
}
},
"errors": {
"type": "rate",
"contains": "default",
"values": {
"rate": 0.6675978268042144,
"passes": 60702,
"fails": 30224
},
"thresholds": {
"rate<0.05": {
"ok": false
}
}
},
"http_req_duration{expected_response:true}": {
"type": "trend",
"contains": "time",
"values": {
"max": 1539.616,
"p(90)": 18.2867,
"p(95)": 74.03604999999997,
"avg": 17.305976028303114,
"min": 1.626,
"med": 3.692
}
},
"http_req_tls_handshaking": {
"values": {
"avg": 0,
"min": 0,
"med": 0,
"max": 0,
"p(90)": 0,
"p(95)": 0
},
"type": "trend",
"contains": "time"
},
"vus_max": {
"type": "gauge",
"contains": "default",
"values": {
"max": 300,
"value": 300,
"min": 300
}
},
"data_received": {
"type": "counter",
"contains": "data",
"values": {
"rate": 5001557.828241273,
"count": 4204134791
}
},
"response_time": {
"type": "trend",
"contains": "default",
"values": {
"max": 3169.685,
"p(90)": 35.98750000000002,
"p(95)": 123.48124999999973,
"avg": 34.95255878406595,
"min": 0.234,
"med": 5.161
}
},
"http_req_blocked": {
"type": "trend",
"contains": "time",
"values": {
"med": 0.004,
"max": 122.794,
"p(90)": 0.011,
"p(95)": 0.016,
"avg": 0.015810527241928326,
"min": 0
}
},
"http_req_connecting": {
"values": {
"p(95)": 0,
"avg": 0.0013084156346919462,
"min": 0,
"med": 0,
"max": 21.333,
"p(90)": 0
},
"type": "trend",
"contains": "time"
},
"http_req_receiving": {
"type": "trend",
"contains": "time",
"values": {
"avg": 0.9055066207685241,
"min": 0.007,
"med": 0.125,
"max": 671.322,
"p(90)": 0.479,
"p(95)": 0.797
}
},
"data_sent": {
"contains": "data",
"values": {
"count": 11781549,
"rate": 14016.224873642055
},
"type": "counter"
},
"http_req_failed": {
"contains": "default",
"values": {
"rate": 0.6673778677166047,
"passes": 60682,
"fails": 30244
},
"thresholds": {
"rate<0.05": {
"ok": false
}
},
"type": "rate"
},
"http_req_duration": {
"type": "trend",
"contains": "time",
"values": {
"min": 0.234,
"med": 5.161,
"max": 3169.685,
"p(90)": 35.98750000000002,
"p(95)": 123.48124999999973,
"avg": 34.95255878406595
},
"thresholds": {
"p(95)<1000": {
"ok": true
},
"p(99)<2000": {
"ok": true
}
}
},
"iterations": {
"type": "counter",
"contains": "default",
"values": {
"rate": 108.17247060304018,
"count": 90926
}
},
"checks": {
"type": "rate",
"contains": "default",
"values": {
"passes": 120528,
"fails": 61324,
"rate": 0.6627807227855619
}
},
"http_req_waiting": {
"type": "trend",
"contains": "time",
"values": {
"p(90)": 35.302,
"p(95)": 122.24524999999988,
"avg": 34.01092915117785,
"min": 0.219,
"med": 4.974,
"max": 3166.458
}
},
"http_req_sending": {
"type": "trend",
"contains": "time",
"values": {
"avg": 0.03612301211974778,
"min": 0.002,
"med": 0.014,
"max": 117.522,
"p(90)": 0.038,
"p(95)": 0.053
}
}
},
"root_group": {
"name": "",
"path": "",
"id": "d41d8cd98f00b204e9800998ecf8427e",
"groups": [],
"checks": [
{
"name": "status is 200 or 201",
"path": "::status is 200 or 201",
"id": "84a4ddb4484a5d859d169f8c46a575bf",
"passes": 30244,
"fails": 60682
},
{
"path": "::response time < 1000ms",
"id": "20fb4e832cf064157637fa0f29b41aa6",
"passes": 90284,
"fails": 642,
"name": "response time < 1000ms"
}
]
},
"options": {
"summaryTrendStats": [
"avg",
"min",
"med",
"max",
"p(90)",
"p(95)"
],
"summaryTimeUnit": "",
"noColor": false
},
"state": {
"isStdOutTTY": false,
"isStdErrTTY": false,
"testRunDurationMs": 840565.067
}
}