Files
Home-Care/hss-home-service/website/tests/homepage.spec.ts
comclib 01e1034cc1 feat: 全系统优化 — 并发控制 + 冗余清理 + 数据流修复 + 全面测试
核心修复:
- 状态机加 SELECT FOR UPDATE 行锁,消除并发竞态
- hss_md_staff 加 role 列,登录从数据库读取真实角色
- 申请重复校验排除自身,全流程 20 步闭环通过
- 派单 SQL 修复 + 支付状态机过渡 + 完成服务 plan_item_id 修复

并发控制新增:
- RedisLockService (SET NX PX + Lua 安全解锁)
- RateLimiterService (Redis 滑动窗口 + API 拦截器)
- TransactionIsolationConfig (SERIALIZABLE for 支付回调)
- MqttPublisher (异步队列 + JDK TCP 探测)
- ObjectStorageService (AWS SigV4 预签名, 纯 JDK)

冗余清理:
- 删除 6 个死代码文件 (~620 行)
- hutool-all → JDK MessageDigest, 去 MapStruct, 去 jsr310
- haversine 提取到 GeoUtil, count/round 提取到 JdbcUtil
- 创建 platform layout 组件

前端修复:
- 登录页移除角色选择器, 由后端 JWT 返回
- 移除 ClientOnly 包裹, 页面正常渲染
- SPA fallback Nginx 配置修复

Docker: 运行时镜像 eclipse-temurin:17-jre-jammy (缩小 ~300MB)

文档: 新增系统实现与修复报告.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 11:48:07 +08:00

55 lines
2.1 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { test, expect } from '@playwright/test'
test.describe('首页模块完整性', () => {
test.beforeEach(async ({ page }) => { await page.goto('/') })
test('Hero 首屏存在', async ({ page, viewport }) => {
await expect(page.locator('h1')).toBeVisible()
// CTA button is in collapsed menu on mobile/tablet
if (viewport && viewport.width && viewport.width >= 1024) {
await expect(page.getByText('预约演示').first()).toBeVisible()
}
})
test('行业痛点模块存在', async ({ page }) => {
await expect(page.getByText('居家上门服务,为什么这么难管?')).toBeVisible()
await expect(page.getByText('申请受理难')).toBeVisible()
await expect(page.getByText('派单调度难')).toBeVisible()
await expect(page.getByText('过程监管难')).toBeVisible()
})
test('服务闭环流程模块存在', async ({ page }) => {
await page.getByText('完整服务闭环').scrollIntoViewIfNeeded()
await page.waitForTimeout(500)
await expect(page.getByText('完整服务闭环')).toBeVisible()
})
test('核心能力模块存在', async ({ page }) => {
await expect(page.getByText('八大核心能力')).toBeVisible()
})
test('应用场景模块存在', async ({ page }) => {
await expect(page.getByText('覆盖五大应用场景')).toBeVisible()
await expect(page.getByText('政府监管')).toBeVisible()
await expect(page.getByText('医院延续护理')).toBeVisible()
})
test('数据看板模块存在', async ({ page }) => {
await expect(page.getByText('实时监管,数据驱动')).toBeVisible()
})
test('安全合规模块存在', async ({ page }) => {
await expect(page.getByText('医疗级安全合规')).toBeVisible()
})
test('CTA 区块存在', async ({ page }) => {
await expect(page.getByText('准备好提升居家服务管理效率了吗?')).toBeVisible()
})
test('SVG 图标渲染正常(非 emoji', async ({ page }) => {
const svgs = page.locator('svg')
const count = await svgs.count()
expect(count).toBeGreaterThan(5)
})
})