feat: extend optional HTML feedback to graduate imports in 0.7.8

This commit is contained in:
Codex
2026-10-24 15:15:29 +08:00
parent 9a198fe466
commit a946aa6ec0
24 changed files with 513 additions and 36 deletions
@@ -0,0 +1,49 @@
# 全学校HTML反馈 Implementation Plan
> **For agentic workers:** Use superpowers:executing-plans to implement this plan inline.
**Goal:** 本科和研究生均可将最近一次课表/考试页面作为可选反馈邮件附件。
**Architecture:** 共用SchoolPageDiagnostic,按学校收集已识别的表格与学期证据。扩展反馈服务的惰性HTML白名单,沿用原multipart和SMTP通道。
**Tech Stack:** Flutter/Dart、html、Android、Python/FastAPI。
**Spec:** ../specs/2026-10-24-all-school-html-feedback-design.md
## Global Constraints
- 0.7.8+26,com.tpschedule.app,原签名不变;备案号蜀ICP备2025169276号-5A。
- 默认关闭,日志+HTML独立同意,2MiB,10分钟内存留存。
- 不上传原始学生资料到仓库,不修改软著0.5.4备份。
## Review Focus
- 失败页面仍可排查,清洗后能重现原解析结果。
- 过期/学校切换/重认证/退出不能附带旧页面,离开导入页可反馈。
- 异步旧页面不能覆盖新页面证据。
- 服务端拒绝新的select/option标签中夹带事件、地址和无关字段。
- 版本与证书、公钥、备案信息和交付包一致。
### Task 1: 缓存、采集与反馈界面
Files: mobile/lib/services/school_page_diagnostic.dart、mobile/lib/features/school/school_session.dart、mobile/lib/features/feedback/feedback_page.dart;对应services、school_session_flow和feedback测试。
- [x] 添加并运行失败测试:研究生课表/考试清洗可重读、失败及HTTP可信页、认证剔除、缓存清理与研究生反馈提交。
- [x] 扩展受限片段采集,在研究生解析前留存;更新选项文案。
- [x] 运行针对性测试并核对旧本科行为。
### Task 2: 服务端结构兼容
Files: server/feedback/feedback_service.py、tests/test_feedback.py、tests/fixtures;部署说明。
- [x] 添加并运行失败测试:真实客户端生成的合成研究生附件可发送,活动内容与其他控件拒绝。
- [x] 按准确ID和学期选项扩展白名单;保留旧客户端兼容。
- [x] 运行反馈与更新服务完整回归。
### Task 3: 发布0.7.8
Files: mobile/pubspec.yaml、mobile/lib/app/app_version.dart、mobile/lib/features/profile/profile_page.dart、docs及dist交付。
- [x] 设置0.7.8+26及备案号,完整Flutter测试和静态分析通过。
- [x] 构建正式APK,核对包名、版本、签名MD5、原证书和用户指定RSA公钥。
- [ ] 输出同签名APK、源码、反馈服务更新包和部署说明;核对密钥、旧APK及18项冻结软著文件。