2.5 KiB
2.5 KiB
全学校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测试。
- 添加并运行失败测试:研究生课表/考试清洗可重读、失败及HTTP可信页、认证剔除、缓存清理与研究生反馈提交。
- 扩展受限片段采集,在研究生解析前留存;更新选项文案。
- 运行针对性测试并核对旧本科行为。
Task 2: 服务端结构兼容
Files: server/feedback/feedback_service.py、tests/test_feedback.py、tests/fixtures;部署说明。
- 添加并运行失败测试:真实客户端生成的合成研究生附件可发送,活动内容与其他控件拒绝。
- 按准确ID和学期选项扩展白名单;保留旧客户端兼容。
- 运行反馈与更新服务完整回归。
Task 3: 发布0.7.8
Files: mobile/pubspec.yaml、mobile/lib/app/app_version.dart、mobile/lib/features/profile/profile_page.dart、docs及dist交付。
- 设置0.7.8+26及备案号,完整Flutter测试和静态分析通过。
- 构建正式APK,核对包名、版本、签名MD5、原证书和用户指定RSA公钥。
- 输出同签名APK、源码、反馈服务更新包和部署说明;核对密钥、旧APK及18项冻结软著文件。