feat: extend optional HTML feedback to graduate imports in 0.7.8
This commit is contained in:
@@ -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项冻结软著文件。
|
||||
@@ -0,0 +1,15 @@
|
||||
# 0.7.8:本科、研究生导入页面HTML反馈
|
||||
|
||||
用户要求反馈问题时两类学生均可选附带最近一次导入页面HTML;版本定为0.7.8,保留原签名,并展示备案号蜀ICP备2025169276号-5A。沿用现有反馈附件和邮件协议,不另建上传通道。
|
||||
|
||||
## 实现范围
|
||||
|
||||
- 使用现有共享SchoolPageDiagnostic内存缓存扩展研究生页面;研究生自动/手动读取课表、自动读取考试均在解析前留存已验证的页面片段,失败也可反馈。
|
||||
- 本科保持原流程。研究生只接受学校现有导航策略中的精确域名、端口和pyxx路径。登录页、密码字段和认证材料不进入附件。
|
||||
- 保留研究生课表/考试表格的受限ID、节次单元格ID、对应学期选择框;保留解析失败的内容以便排查。去除活动脚本、事件、表单和网络资源。服务端按同样的最小结构白名单校验。
|
||||
- 选项改为“附带最近一次学校导入页面HTML”,说明适用于本科/研究生;默认关闭,需勾选日志并同意个人信息提示。HTML独立附件、上限2MiB、有效期10分钟,成功发送后清除。切换学校/重新认证/开始新查询/退出清除,离开导入页前往反馈不清除。
|
||||
- APP版本0.7.8+26,包名com.tpschedule.app不变;证书MD5必须为78DE9119AD14727FA1C5E5E4E68145EE,RSA公钥与用户给出的十进制值核对。原密钥和0.5.4软著冻结文件不修改。
|
||||
|
||||
## 方案选择
|
||||
|
||||
共用现有HTML缓存和multipart字段diagnostic_html,扩展安全结构即可。另建研究生上传协议会重复客户端/服务端处理;把原始整页HTML加入普通日志会破坏既有隐私边界,因此均不采用。用户已明确要求直接修改,无额外审批步骤。
|
||||
Reference in New Issue
Block a user