681 Commits
Author SHA1 Message Date
github-actions[bot] 2fb7602317 docs: auto-update documentation index [skip ci]
CI/CD Pipeline / test-build-boot (push) Failing after 1m37s
CI/CD Pipeline / test-admin (push) Failing after 2m30s
CI/CD Pipeline / test-bigscreen (push) Failing after 56s
CI/CD Pipeline / build-push (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-push (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / update-deploy (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / security-scan (push) Successful in 20m44s
2026-02-24 07:51:13 +00:00
brunoandQwen-Coder 5162b9c42a docs: simplify CLAUDE.md files - remove verbose context rules and use concise format
CI/CD Pipeline / build-push (ljwx-admin) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-boot) (push) Blocked by required conditions
CI/CD Pipeline / update-deploy (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-admin) (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-boot) (push) Blocked by required conditions
CI/CD Pipeline / test-build-boot (push) Failing after 1m43s
CI/CD Pipeline / security-scan (push) Has been cancelled
CI/CD Pipeline / test-admin (push) Has been cancelled
CI/CD Pipeline / test-bigscreen (push) Has been cancelled
Co-authored-by: Qwen-Coder <[email protected]>
2026-02-24 15:50:38 +08:00
github-actions[bot] 201105b43f docs: auto-update documentation index [skip ci]
CI/CD Pipeline / test-admin (push) Failing after 2m48s
CI/CD Pipeline / test-bigscreen (push) Failing after 59s
CI/CD Pipeline / test-build-boot (push) Failing after 5m25s
CI/CD Pipeline / build-push (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-push (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / update-deploy (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / security-scan (push) Has been cancelled
2026-02-21 23:40:41 +00:00
BrunoGaoSZ fdb7cb8c85 feat(openapi): harden contract export and align ljwx-phone to spec 2026-02-22 00:40:07 +01:00
BrunoGaoSZ d43381ac98 fix(workflow): run online smoke on github-hosted runner 2026-02-21 15:10:35 +01:00
BrunoGaoSZ 55867d062a test(workflow): add authenticated k3s online smoke checks 2026-02-21 15:08:43 +01:00
github-actions[bot] a8e21a3a05 docs: auto-update documentation index [skip ci] 2026-02-21 13:55:17 +00:00
BrunoGaoSZ d0ac632a9b fix(workflow): scope link checks to PR with timeout 2026-02-21 14:54:51 +01:00
github-actions[bot] 71bb3a65c6 docs: auto-update documentation index [skip ci] 2026-02-21 13:54:17 +00:00
BrunoGaoSZ c732c2b49e fix(docs-ci): validate only changed markdown files 2026-02-21 14:53:51 +01:00
github-actions[bot] 03d3d4c151 docs: auto-update documentation index [skip ci] 2026-02-21 13:45:40 +00:00
BrunoGaoSZ 6bedd0da1e fix(workflow): enable manual trigger and self-path push checks 2026-02-21 14:45:14 +01:00
BrunoGaoSZ a633429312 fix(workflow): repair validate-documentation YAML parsing 2026-02-21 14:43:02 +01:00
BrunoGaoSZ ab333fe4d1 ci(workflow): rerun after remote migration 2026-02-21 14:33:33 +01:00
BrunoGaoSZ 244490c106 ci(workflow): rerun after pro upgrade 2026-02-21 14:31:38 +01:00
BrunoGaoSZ 540c67294d ci(workflow): retrigger full validation run 2026-02-21 13:35:27 +01:00
BrunoGaoSZ b5b886a78e fix(ci): align prometheus registry import and dashboard title assertion 2026-02-21 11:57:20 +01:00
BrunoGaoSZ aa54491ce4 fix(ci): remove env-dependent bigscreen integration test from gate 2026-02-21 09:07:15 +01:00
BrunoGaoSZ cd5ff4b5d2 fix(ci): resolve backend path and flaky bigscreen test gate 2026-02-21 08:59:44 +01:00
BrunoGaoSZ 6535a70506 fix(ci): stabilize automated test jobs in build workflow 2026-02-21 08:54:51 +01:00
BrunoGaoSZ 699de15dd7 ci(workflow): integrate automated test gates before image build 2026-02-21 08:52:37 +01:00
BrunoGaoSZ bc5593ed8b feat(observability): implement enterprise-grade k3s monitoring guardrails 2026-02-21 08:46:03 +01:00
BrunoGaoSZ e8256d5dbe feat(observability): add k3s alert rules and gate check script 2026-02-21 07:41:16 +01:00
BrunoGaoSZ c7e0086caf chore(docs): sync observability guide from genspark_ai_developer 2026-02-21 07:37:27 +01:00
BrunoGaoSZ 18cd48da2b docs(observability): add k3s review checklist and link from guide 2026-02-21 05:36:11 +01:00
BrunoGaoSZ 0cea2dbd30 fix(ci): export runner temp bin before yq check 2026-02-21 00:58:07 +01:00
BrunoGaoSZ fd5ee5e06e fix(ci): install yq in runner temp bin 2026-02-21 00:56:12 +01:00
BrunoGaoSZ 14b3cda76c fix(ci): make yq install fallback to curl on runner 2026-02-21 00:54:15 +01:00
bruno 21d7d01203 fully commits 2026-02-21 07:48:36 +08:00
bruno 9816020d8a feat(db): consolidate Flyway migrations into V3.0.0 baseline
CI/CD Pipeline / test-build-boot (push) Successful in 7m49s
CI/CD Pipeline / test-admin (push) Successful in 7m9s
CI/CD Pipeline / test-bigscreen (push) Successful in 46s
CI/CD Pipeline / build-push (ljwx-admin) (push) Successful in 16s
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Successful in 16s
CI/CD Pipeline / build-push (ljwx-boot) (push) Successful in 54s
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / update-deploy (push) Successful in 0s
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / security-scan (push) Successful in 20m46s
2026-02-20 23:56:50 +08:00
brunoandQwen-Coder fdd3bd6624 feat(scripts): add cache-image-prepull and harbor-reconcile-unused scripts
CI/CD Pipeline / test-build-boot (push) Successful in 2m19s
CI/CD Pipeline / test-admin (push) Successful in 1m34s
CI/CD Pipeline / test-bigscreen (push) Successful in 58s
CI/CD Pipeline / build-push (ljwx-admin) (push) Successful in 2m53s
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Successful in 42s
CI/CD Pipeline / build-push (ljwx-boot) (push) Successful in 8m56s
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / update-deploy (push) Successful in 1s
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / security-scan (push) Successful in 20m45s
- Add cache-image-prepull.sh for pre-caching off-peak images
- Add harbor-reconcile-unused.sh for reconciling unused Harbor artifacts
- Add Watch4SDK_V2.16.pdf documentation

Co-authored-by: Qwen-Coder <[email protected]>
2026-02-20 21:38:40 +08:00
bruno f8796b17b8 fix(ci): ensure docker cli for docker-builder jobs
CI/CD Pipeline / test-bigscreen (push) Waiting to run
CI/CD Pipeline / build-push (ljwx-admin) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-boot) (push) Blocked by required conditions
CI/CD Pipeline / update-deploy (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-admin) (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-boot) (push) Blocked by required conditions
CI/CD Pipeline / test-build-boot (push) Successful in 2m26s
CI/CD Pipeline / security-scan (push) Has been cancelled
CI/CD Pipeline / test-admin (push) Has been cancelled
2026-02-20 21:35:47 +08:00
bruno 7bfb160c0c chore(ci): skip admin eslint in pipeline by default
CI/CD Pipeline / test-build-boot (push) Successful in 2m30s
CI/CD Pipeline / test-admin (push) Successful in 1m30s
CI/CD Pipeline / test-bigscreen (push) Successful in 34s
CI/CD Pipeline / build-push (ljwx-admin) (push) Failing after 11s
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Failing after 14s
CI/CD Pipeline / build-push (ljwx-boot) (push) Failing after 12s
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / update-deploy (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / security-scan (push) Successful in 20m39s
2026-02-20 21:04:36 +08:00
bruno 026d6875a7 chore(ci): align two-stage gitops workflow and docs
CI/CD Pipeline / build-push (ljwx-admin) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-boot) (push) Blocked by required conditions
CI/CD Pipeline / update-deploy (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-admin) (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-boot) (push) Blocked by required conditions
CI/CD Pipeline / test-build-boot (push) Successful in 8m8s
CI/CD Pipeline / security-scan (push) Successful in 20m42s
CI/CD Pipeline / test-admin (push) Successful in 15m23s
CI/CD Pipeline / test-bigscreen (push) Has been cancelled
2026-02-20 20:40:35 +08:00
bruno f0513ef394 chore(ci): retrigger workflow after runner label fix
CI/CD Pipeline / test-build-boot (push) Successful in 2m52s
CI/CD Pipeline / test-admin (push) Successful in 15m55s
CI/CD Pipeline / test-bigscreen (push) Successful in 34s
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / build-push (ljwx-admin) (push) Failing after 15s
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Failing after 14s
CI/CD Pipeline / build-push (ljwx-boot) (push) Failing after 11s
CI/CD Pipeline / update-deploy (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / security-scan (push) Successful in 20m41s
2026-02-19 23:33:03 +08:00
bruno 518f484654 fix(flyway): resolve cross-module 2.17 conflicts
CI/CD Pipeline / test-build-boot (push) Successful in 2m29s
CI/CD Pipeline / security-scan (push) Failing after 18m35s
CI/CD Pipeline / test-admin (push) Failing after 16m4s
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / test-bigscreen (push) Successful in 31s
CI/CD Pipeline / build-push (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-push (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / update-deploy (push) Has been skipped
2026-02-19 22:51:59 +08:00
bruno 408b1c6dec fix(flyway): resolve duplicate migration versions
CI/CD Pipeline / test-build-boot (push) Successful in 5m44s
CI/CD Pipeline / security-scan (push) Successful in 20m40s
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / test-admin (push) Successful in 16m17s
CI/CD Pipeline / test-bigscreen (push) Successful in 35s
CI/CD Pipeline / build-push (ljwx-admin) (push) Successful in 11s
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Successful in 10s
CI/CD Pipeline / build-push (ljwx-boot) (push) Successful in 45s
CI/CD Pipeline / update-deploy (push) Successful in 0s
2026-02-19 21:49:58 +08:00
bruno 28d15fc2a5 commit docs/04-operations/database/postgres-migration-plan.md
CI/CD Pipeline / test-admin (push) Waiting to run
CI/CD Pipeline / test-bigscreen (push) Waiting to run
CI/CD Pipeline / build-push (ljwx-admin) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-boot) (push) Blocked by required conditions
CI/CD Pipeline / update-deploy (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-admin) (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-boot) (push) Blocked by required conditions
CI/CD Pipeline / test-build-boot (push) Has been cancelled
CI/CD Pipeline / security-scan (push) Has been cancelled
2026-02-19 21:46:40 +08:00
bruno 22a714545f chore: trigger gitea workflow deploy to local k8s
CI/CD Pipeline / test-build-boot (push) Successful in 8m6s
CI/CD Pipeline / security-scan (push) Successful in 20m42s
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / test-admin (push) Successful in 14m59s
CI/CD Pipeline / test-bigscreen (push) Successful in 33s
CI/CD Pipeline / build-push (ljwx-admin) (push) Successful in 11s
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Successful in 10s
CI/CD Pipeline / build-push (ljwx-boot) (push) Successful in 10s
CI/CD Pipeline / update-deploy (push) Successful in 1s
2026-02-19 17:04:04 +08:00
bruno 4d12ad6854 commit docs/04-operations/database/postgres-migration-plan.md
CI/CD Pipeline / test-build-boot (push) Successful in 2m32s
CI/CD Pipeline / test-admin (push) Successful in 15m11s
CI/CD Pipeline / test-bigscreen (push) Successful in 35s
CI/CD Pipeline / security-scan (push) Successful in 20m40s
CI/CD Pipeline / build-push (ljwx-admin) (push) Successful in 10s
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Successful in 11s
CI/CD Pipeline / build-push (ljwx-boot) (push) Successful in 10s
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / update-deploy (push) Successful in 1s
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
2026-02-19 14:42:04 +08:00
bruno 265593a5ba commit docs/04-operations/database/postgres-migration-plan.md
CI/CD Pipeline / test-bigscreen (push) Waiting to run
CI/CD Pipeline / build-push (ljwx-admin) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-boot) (push) Blocked by required conditions
CI/CD Pipeline / update-deploy (push) Blocked by required conditions
CI/CD Pipeline / test-build-boot (push) Successful in 7m56s
CI/CD Pipeline / security-scan (push) Successful in 20m41s
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / test-admin (push) Has been cancelled
2026-02-19 14:19:06 +08:00
bruno 281add070c commit docs/04-operations/database/postgres-migration-plan.md
CI/CD Pipeline / test-build-boot (push) Successful in 5m34s
CI/CD Pipeline / test-admin (push) Successful in 15m8s
CI/CD Pipeline / security-scan (push) Successful in 20m41s
CI/CD Pipeline / build-pr (ljwx-admin) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Has been skipped
CI/CD Pipeline / build-pr (ljwx-boot) (push) Has been skipped
CI/CD Pipeline / test-bigscreen (push) Successful in 34s
CI/CD Pipeline / build-push (ljwx-admin) (push) Successful in 49s
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Successful in 13s
CI/CD Pipeline / build-push (ljwx-boot) (push) Successful in 44s
CI/CD Pipeline / update-deploy (push) Successful in 0s
2026-02-19 12:05:49 +08:00
bruno 03a4b7ffee commit docs/04-operations/database/postgres-migration-plan.md
CI/CD Pipeline / test-admin (push) Waiting to run
CI/CD Pipeline / test-bigscreen (push) Waiting to run
CI/CD Pipeline / build-push (ljwx-admin) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-bigscreen) (push) Blocked by required conditions
CI/CD Pipeline / build-push (ljwx-boot) (push) Blocked by required conditions
CI/CD Pipeline / update-deploy (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-admin) (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-bigscreen) (push) Blocked by required conditions
CI/CD Pipeline / build-pr (ljwx-boot) (push) Blocked by required conditions
CI/CD Pipeline / test-build-boot (push) Has been cancelled
CI/CD Pipeline / security-scan (push) Has been cancelled
2026-02-19 11:57:42 +08:00
BrunoGaoSZ a2da4b3333 commit all 2026-02-18 13:59:03 +01:00
BrunoGaoSZ c94a20ad25 feat: add GitOps build+deploy workflows (k3s-eu) 2026-02-18 13:47:51 +01:00
bruno 6d5279f1c9 commit all 2026-02-18 19:44:24 +08:00
brunoandClaude Sonnet 4.5 780a34d05f docs(device-binding): 添加端到端实施计划 - 覆盖所有模块
## 新增文档

### device-binding-e2e-implementation-plan.md
完整的端到端实施计划,覆盖所有模块:

**Phase 1: ljwx-boot (后端 V2 API)**
- ✅ B-1: V2 API 控制器已创建
- ⏳ B-2: 服务接口补充
- ⏳ B-3: 服务实现补充
- ⏳ B-4: DTO 完善
- ⏳ B-5: 集成测试

**Phase 2: ljwx-phone (手机端)**
- ⏳ P-1: V2 API 服务封装
- ⏳ P-2: 蓝牙签名请求
- ⏳ P-3: 绑定流程页面
- ✅ P-4: SSE 集成(已完成)
- ✅ P-5: 轮询器集成(已完成)

**Phase 3: ljwx-watch (手表端)**
- ⏳ W-1: 密钥存储
- ⏳ W-2: HMAC-SHA256 签名
- ⏳ W-3: BLE 特征值定义
- ⏳ W-4: 签名流程实现

**Phase 4: ljwx-admin (管理后台)**
- ⏳ A-1: V2 审批列表
- ⏳ A-2: 签名验证状态显示
- ✅ A-3: 批量审批确认(已完成)

**Phase 5: ljwx-bigscreen (大屏监控)**
- ⏳ S-1: 设备绑定统计
- ⏳ S-2: 签名验证成功率
- ⏳ S-3: 实时绑定流

## 新增后端控制器

### DeviceBindV2Controller.java
完整的设备绑定 V2 API 控制器:

**已实现端点**:
- GET /api/v2/device/challenge/{deviceSn} - 获取 Challenge
- POST /api/v2/device/bind/request - 提交绑定申请(带签名)
- GET /api/v2/device/bind/status/{approvalId} - 查询申请状态
- POST /api/v2/device/bind/approve/{approvalId} - 审批绑定
- POST /api/v2/device/bind/reject/{approvalId} - 驳回绑定
- POST /api/v2/device/bind/batch-approve/confirm-token - 生成确认令牌

## 总体进度

- **总任务**: 20 个
- **已完成**: 4 个 (20%)
- **进行中**: ljwx-boot Phase 1

## 下一步

1. 完成后端 V2 API 服务层实现
2. 运行 E2E 测试验证
3. 开始手机端和手表端集成

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
2026-02-08 19:55:53 +08:00
brunoandClaude Sonnet 4.5 51d3c99402 feat(test): 统一测试入口 - 自动登录和token管理
## 改进内容

### 统一测试入口
- ✅ test_e2e_flow.py 支持自动登录
  - 默认使用 admin/kt123456 凭据
  - 自动SHA256哈希密码
  - 使用正确的 /auth/user_name 端点
  - 自动保存token到 .token 文件
  - 支持手动指定token

### 使用方式
```bash
# 自动登录运行(推荐)
python test_e2e_flow.py

# 指定base URL
python test_e2e_flow.py --base-url http://localhost:9998

# 使用已有token
python test_e2e_flow.py --token <your-token>

# 自定义登录凭据
python test_e2e_flow.py --username admin --password kt123456
```

### 修复问题
- 🐛 修复登录API端点: /auth/login → /auth/user_name
- 🐛 修复密码处理: 明文 → SHA256哈希
- 🐛 修复token字段: data.tokenValue → data.token
- 🐛 修复默认密码: admin123 → kt123456
- 🐛 修复设备密钥: e2e_test_secret_001 → dev-secret-key-12345
- 🐛 修复challenge API: 添加认证头
- 🐛 增强错误日志: 显示完整响应信息

### 测试状态
- ✅ 自动登录成功
- ✅ 步骤 1-4 通过 (租户/部门/员工/设备注册)
- ⏳ 步骤 5-8 待实现 (需要实现 V2 API 后端端点)

### 待实现
V2 API 后端端点:
- GET /api/v2/device/challenge/{deviceSn}
- POST /api/v2/device/bind/request
- GET /api/v2/device/bind/status/{approvalId}
- POST /api/v2/device/bind/approve/{approvalId}

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
2026-02-08 19:50:45 +08:00
brunoandClaude Sonnet 4.5 0b16b3f395 feat(bigscreen): complete Phase 1 health dashboard optimization
Migrated all health pages to unified design system:

**health_prediction_view.html:**
- Reduced from 792 to 476 lines (40% reduction)
- Removed duplicate CSS and jQuery dependency
- Integrated design-system.css and health-pages.css
- Using platform.createChart() for all visualizations

**health_recommendation_view.html:**
- Reduced from 788 to 663 lines (15.9% reduction)
- Removed duplicate CSS and jQuery dependency
- Integrated design-system.css and health-pages.css
- Using platform.createChart() for all charts

**Phase 1 Summary:**
- Total lines removed: 682 lines (26.6% reduction)
- Unified design system across all health pages
- jQuery completely removed
- Improved maintainability and performance

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
2026-02-08 19:41:57 +08:00
brunoandClaude Sonnet 4.5 011f05736f feat(device-binding): Phase 3 完成 - 体验优化 + E2E测试基础设施 ✅
## Phase 3 实施完成

### P3-1: 前端轮询优化 (ljwx-phone)
- ✅ 实现指数退避轮询器 (ExponentialBackoffPoller)
  - 初始间隔 2s,最大间隔 30s
  - 随机抖动 ±20% 避免惊群效应
  - 自动重置机制

### P3-2: SSE 实时推送 (ljwx-phone)
- ✅ 实现 SSE 客户端服务 (SseClient)
  - 自动重连机制 (指数退避)
  - 心跳检测 (30s 超时)
  - 事件类型路由

### P3-3: 批量审批确认机制
- ✅ 后端 confirmToken 机制
  - Redis 存储,5分钟过期
  - 防重放攻击
  - 批量操作原子性保证
- ✅ 前端确认弹窗 (BatchApprovalConfirmModal.vue)
  - 显示待审批设备列表
  - 二次确认交互

### P3-4: 设备绑定 V2 API (HMAC-SHA256 签名验证)
- ✅ DeviceBindEventController - SSE 事件推送
- ✅ DeviceSignatureService - HMAC-SHA256 签名验证
- ✅ DeviceKeyService - 设备密钥管理
- ✅ ChallengeVO, ConfirmTokenVO - V2 API 响应对象
- ✅ BindRequestStatus - 绑定请求状态枚举

## E2E 测试基础设施

### 测试脚本
- ✅ test_e2e_flow.py - 完整端到端测试
  - 租户/部门/员工创建
  - 设备注册与绑定
  - 健康数据上传与查询
  - 告警与消息生成
- ✅ test_device_binding_v2.py - 设备绑定 V2 API 测试
  - Challenge 获取
  - HMAC-SHA256 签名验证
  - 绑定请求提交
  - 审批流程测试

### 测试配置
- ✅ api-map.yaml - 新增 device_binding_v2 API 映射
  - 11 个 V2 API 端点完整定义
  - 请求/响应 schema 规范
- ✅ recipes/device_binding_v2_test.yaml - V2 测试场景配置

### 测试文档
- ✅ E2E_FLOW_TEST_GUIDE.md - E2E 测试指南
- ✅ DEVICE_BINDING_V2_TEST_GUIDE.md - V2 API 测试指南
- ✅ device-binding-phase3-implementation-report.md - Phase 3 实施报告

## 修复问题
- 🐛 修复 UserContext API 调用错误
  - getUserId() → getCurrentUserId()
  - getUserName() → getCurrentUserName()
- 🐛 修复 TDeviceUser 实体方法调用
  - setUpdatedAt() → setUpdateTime()
- 🐛 修复 BizException 构造函数签名
- 🐛 修复测试脚本 API 端点
  - /t_org/ → /sys_org_units/
  - /t_user/ → /sys_user/
- 🐛 修复认证头格式
  - satoken: <token> → Authorization: Bearer <token>

## 测试状态
- ✅ 编译通过,应用启动成功 (端口 9998)
- ✅ E2E 测试步骤 1-4 通过 (租户/部门/员工/设备注册)
- ⏳ 步骤 5-8 待完成 (需配置设备密钥)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
2026-02-08 19:36:01 +08:00