Files
TPSchedule/docs/superpowers/plans/2026-10-24-all-school-html-feedback.md

2.5 KiB
Raw Permalink Blame History

全学校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项冻结软著文件。