Phase 4 开发进度追踪(截至 2026-04-23) #21

Open
opened 2026-04-23 04:36:55 +00:00 by sileya-ai · 0 comments

Phase 4 当前状态

已完成

模块 文件 状态 Commit
短码混淆算法 service/BaseService.php 完成(P0 bug已修复) acceedf6b
QR签名/验签 service/BaseService.php 完成 06d0382dd
出票链路 service/TicketService.php 完成 06d0382dd
QR缓存逻辑 service/TicketService.php 完成 969a66792
核销验证 service/TicketService.php 完成 06d0382dd
审计日志 service/AuditService.php 完成 06d0382dd
单元测试 tests/phase4_1_feistel_test.php 30/31 passed acceedf6b

🔧 进行中

模块 文件 状态
B端核销API admin/controller/Ticket.php 开发中
B端核销页 admin/view/ticket/verify.html 开发中

待建

模块 文件
C端票API api/controller/Ticket.php
C端票夹页面 index/Ticket.php
票夹HTML view/goods/ticket_wallet.html
票卡片段 view/goods/ticket_card.html
票夹服务 service/WalletService.php

重大变更记录

变更 #1:Feistel-8 → HMAC-XOR 算法替换(2026-04-23)🔴 已修复

问题:原 Feistel-8 方案 encode/decode 往返测试全部失败。

根因

  1. feistelRound() 用字符串拼接而非二进制 pack,与 encode 不对称
  2. Decode 逆向轮(7→0)使用错误变量(L 而非 R)作为 F 输入
  3. XOR 在掩码后丢失高位信息

修复:改用 HMAC-XOR(XOR 本身对合,encode=decode)

Commit: acceedf6b — fix(phase4.1): 修复 Feistel-8 往返失败 P0 bug


变更 #2:短码设计改为「明文 goods_id + 可变长度 ticket_id」(2026-04-22)

变更前:goods_id + ticket_id 拼接后整体混淆,解码需 goods_id_hint
变更后:goods_id 明文前4位,ticket_id 单独混淆,解码 O(1)

Commit: 4c1192d49 — fix(phase4.1): 修正短码为变长 ticket_id 设计


Plan 文档更新

所有变更已记录至 docs/PHASE_4_PLAN.md(Section 十三:重大变更记录)

## Phase 4 当前状态 ### ✅ 已完成 | 模块 | 文件 | 状态 | Commit | |------|------|------|--------| | 短码混淆算法 | service/BaseService.php | ✅ 完成(P0 bug已修复) | acceedf6b | | QR签名/验签 | service/BaseService.php | ✅ 完成 | 06d0382dd | | 出票链路 | service/TicketService.php | ✅ 完成 | 06d0382dd | | QR缓存逻辑 | service/TicketService.php | ✅ 完成 | 969a66792 | | 核销验证 | service/TicketService.php | ✅ 完成 | 06d0382dd | | 审计日志 | service/AuditService.php | ✅ 完成 | 06d0382dd | | 单元测试 | tests/phase4_1_feistel_test.php | ✅ 30/31 passed | acceedf6b | ### 🔧 进行中 | 模块 | 文件 | 状态 | |------|------|------| | B端核销API | admin/controller/Ticket.php | ⏳ 开发中 | | B端核销页 | admin/view/ticket/verify.html | ⏳ 开发中 | ### ❌ 待建 | 模块 | 文件 | |------|------| | C端票API | api/controller/Ticket.php | | C端票夹页面 | index/Ticket.php | | 票夹HTML | view/goods/ticket_wallet.html | | 票卡片段 | view/goods/ticket_card.html | | 票夹服务 | service/WalletService.php | --- ## 重大变更记录 ### 变更 #1:Feistel-8 → HMAC-XOR 算法替换(2026-04-23)🔴→✅ 已修复 **问题**:原 Feistel-8 方案 encode/decode 往返测试全部失败。 **根因**: 1. feistelRound() 用字符串拼接而非二进制 pack,与 encode 不对称 2. Decode 逆向轮(7→0)使用错误变量(L 而非 R)作为 F 输入 3. XOR 在掩码后丢失高位信息 **修复**:改用 HMAC-XOR(XOR 本身对合,encode=decode) **Commit**: acceedf6b — fix(phase4.1): 修复 Feistel-8 往返失败 P0 bug --- ### 变更 #2:短码设计改为「明文 goods_id + 可变长度 ticket_id」(2026-04-22) **变更前**:goods_id + ticket_id 拼接后整体混淆,解码需 goods_id_hint **变更后**:goods_id 明文前4位,ticket_id 单独混淆,解码 O(1) **Commit**: 4c1192d49 — fix(phase4.1): 修正短码为变长 ticket_id 设计 --- ## Plan 文档更新 所有变更已记录至 docs/PHASE_4_PLAN.md(Section 十三:重大变更记录)
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: sileya-ai/vr-shopxo-plugin#21
There is no content yet.