本文件用于记录当前开发进度、已确认问题、以及上线前必须再次确认的生产事项。
优先级高于零散对话记录,和 README.md 平级维护。
- 当前主要开发目标仍然是
packages/vote。 - 当前已经在持续优化
vote模块中的“导出投票结果为图片”功能。 - 问卷提交链路本次只做了问题排查,没有保留临时鉴权调试逻辑。
- 问卷模块正在推进
v2数据结构与解析逻辑,但提交给后端的格式是否同步升级,目前仍是待确认事项。
- 首页入口相关文档已同步到
doc/ai-generated。 - 导出图片功能已支持角色、音乐、CP 三个模块。
- 导出图片的数据源逻辑已修正:
- 默认支持
local/graphql/auto - 导出组件现在会遵循全局数据源模式
- 开发环境下可通过控制台
testHelper.setDataSourceMode('local')强制使用本地测试数据
- 默认支持
- 导出图片的用户名不再写死,会读取当前登录用户名。
- 导出图片的预览
ObjectURL已增加释放逻辑,避免连续导出积累内存。 - 导出图片的分享能力已改为基于
navigator.share和navigator.canShare({ files })判断。 - 导出数据的 GraphQL 获取方式已从
useLazyQuery改为 Apollo Client 直接查询,避免在工具函数中触发 “Apollo client with id default not found”。
- 现象:
- 某些账号可以正常登录
/v11-be/user-token-status可以返回有效- 但问卷提交 GraphQL 会返回
INVALID_TOKEN
- 当前结论:
- 该问题不是前端保存 token 写反导致的
- 问题已定位到后端认证/用户数据库状态
- 需要后端修正后,才能继续做真实账号联调
- 当前处理策略:
- 前端不保留本次为排查临时加入的问卷提交前鉴权逻辑
- 真实账号测试暂时依赖后端修复
- 背景:
- 角色头像、音乐封面等图片多数来自外部资源地址,例如
asset.lilywhite.cc - 图片直接显示通常没有问题,但绘制到 canvas 时会因为跨域导致导出失败
- 角色头像、音乐封面等图片多数来自外部资源地址,例如
- 当前解决方式:
- 仅在开发环境下,导出组件会将远程图片 URL 改写为本地代理路径:
asset.lilywhite.cc->/th-assetsstatic.thwiki.cc->/thwiki-assets
- Vite 代理会转发到目标站,并额外补 CORS 响应头
html2canvas在生成图片时启用了useCORS: true
- 仅在开发环境下,导出组件会将远程图片 URL 改写为本地代理路径:
- 当前结论:
- 本地开发环境下,这个问题目前已经可用
- 这不等于生产环境天然安全
- 当前图片代理改写只在
import.meta.env.DEV下启用。 - 如果生产环境继续直接使用第三方图片地址,而目标站点没有返回适合 canvas 的 CORS 头,导出图片仍然可能失败。
- 上线前需要明确采用哪一种方案:
- 生产环境也走自有代理/CDN
- 或确认图片源站能稳定返回满足 canvas 使用的 CORS 响应头
- 重点验证:
- 登录
- 问卷提交
- 角色/音乐/CP/提名提交
- 导出图片时 GraphQL 数据源读取
- 只有后端修复后,这部分验证才有意义。
- 当前现状:
- 旧页面提交给后端的仍然是旧版
paperJson questionnaireV2只是新的前端问卷定义和解析基础
- 旧页面提交给后端的仍然是旧版
- 当前补充:
- 已新增过渡兼容层
packages/vote/src/questionnaire/lib/questionnaireV2PaperJson.ts - 可以把
v2的答案状态转成旧版paperJson
- 已新增过渡兼容层
- 当前不确定项:
- 后端是否会继续沿用旧版
paperJson - 后端是否愿意同步接受
v2的问题组结构
- 后端是否会继续沿用旧版
- 因此当前策略:
- 先保持
v2作为前端正确模型 - 暂不把“后端必须改成接收
v2”当成既定方案 - 在后端未定前,可先使用兼容层维持旧接口对接能力
- 等前后端确认后,再二选一推进:
- 前端增加
v2 -> 旧 paperJson转换层 - 或后端直接升级为接收
v2
- 前端增加
- 先保持
- 这个事项当前应视为带问号的设计决策,而不是开发已定稿内容。
- 继续完善导出图片模块逻辑。
- 继续推进问卷
v2的页面层和规则层实现,但先不要假设后端会同步改接口。 - 在问卷
v2接近可用时,再和后端确认最终提交格式。 - 等后端修复用户认证数据库后,再恢复真实账号联调。
- 在生产部署前,单独验证图片跨域与 canvas 导出链路。
README.mdagents.mddoc/ai-generated/vote-dev-notes.mddoc/ai-generated/questionnaire-v2-notes.mddoc/ai-generated/questionnaire-v2-migration-plan.mddoc/260215EXPORT_FEATURE_UPDATE.md