51 lines
5.8 KiB
Markdown
51 lines
5.8 KiB
Markdown
# 本地验收记录
|
||
|
||
- 生产构建:Next.js 16.4.5,TypeScript 检查及 6 个页面静态生成成功。
|
||
- API 会话测试:HttpOnly / SameSite Cookie、令牌不返回前端、带会话代理、401、跨站拒绝、非法 Origin、路径白名单、OAuth challenge 校验通过。
|
||
- 线上轻量检查:profile 401;空登录参数 400;Slack 与 Google 启动登录均返回 302,目标分别为 slack.com、accounts.google.com。未执行真人账户登录。
|
||
- 浏览器:登录/注册切换、演示画布创建、搜索无结果、打开画布、笔记保存、待办勾选,以及未登录访问 /dashboard 返回 /login。
|
||
- 1440px 首页和 390px 首页/工作台:页面宽度等于视口宽度,未发现横向溢出。首页图片全部加载。
|
||
- Figma:原为 DIRECT;已添加 figma.com、figmausercontent.com 代理规则并从实际连接确认 DomainSuffix 生效。验证时代理组当前节点为香港 Y03。
|
||
- 本机生产预览:http://localhost:17321(只监听本机)。
|
||
- 尚未完成:真人 OAuth / 邮箱验证完整回路、后端项目回调地址匹配、完整编辑器布局持久化、分享/收藏/Agent。
|
||
- 本项目仅本地创建,未新建 Gitea 远程仓库、未提交或推送。
|
||
|
||
|
||
后续性能检查与首次创建流程修复已完成,最终构建、API smoke、4 项流程回归与隔离浏览器验收通过。详见 PERFORMANCE.md。
|
||
|
||
## 真实账号创建验收
|
||
|
||
已在用户已登录的 Chrome 中打开 http://localhost:17321/dashboard。初始空间列表为空;使用新建画布流程提交用户原先填写的「周末的灵感」后,创建了「个人空间」和该画布。完整刷新页面后,侧栏和主列表仍显示该画布,确认读取到后端持久化记录。此项为真实账号验收,补充此前只完成隔离模拟测试的限制。
|
||
|
||
## App Router 迁移验收(2026-11-05)
|
||
|
||
- 全部页面迁入 `src/app`;根布局提供全局样式、`zh-CN`、标题及描述。工作台通过 `next/navigation` 读取演示参数,入口提供 Suspense 边界。
|
||
- 两个 API 改为 Route Handlers,保留会话 Cookie、Origin 校验、路径和查询参数白名单、15 秒超时、请求取消及 Server-Timing;显式保留 1 MiB 请求体限制。
|
||
- `npm run build -- --webpack`:通过,构建结果全部为 App Router 路由。
|
||
- 默认 `npm run build`:当前环境禁止 Turbopack CSS 工作进程绑定本地端口而失败;没有更改项目默认构建器。清理迁移前 `.next` 缓存后,Webpack 编译、类型检查和静态生成均通过。
|
||
- `npm run typecheck`:通过。
|
||
- `node --experimental-strip-types --test tests/workspace.test.mjs`:4 项通过。
|
||
- `node tests/api-smoke.mjs`:通过。覆盖首页、登录、登录回调、真实及演示工作台的 HTTP 响应、语言/标题/描述/viewport、404、Cookie 与令牌隔离、HTTPS Secure Cookie、登录态代理、跨站及非法 Origin、路径及查询白名单、请求方法、非法 JSON、超限请求体、Google/Slack 302、无效 challenge 和 204 退出清除 Cookie。
|
||
- 本次未重跑浏览器交互与响应式验收:浏览器连接不可用;未进行真人账户登录或部署验证。
|
||
- 迁移前 Pages Router 快照已先推送到现有仓库 main;本次迁移按用户明确授权直接更新 main,不创建 PR。
|
||
|
||
## 合并侧栏与新建图谱(2026-11-05)
|
||
|
||
- 移除最左侧独立 icon 栏,侧栏使用纵向 flex;顶部操作、搜索栏和底部账户按钮内部使用横向 flex。
|
||
- Lucide 图标按钮以 16×16px 图标、上下 4px / 左右 6px 内边距实现;收起后只保留左上角浮框,可恢复侧栏或新建页面。
|
||
- 账户弹出框使用原生 Popover,支持浏览器的外部点击及 Escape 关闭;菜单提供实际用户资料、空间切换和退出。
|
||
- 创建契约核对 Foundry Core 主线 `e8ed5e4` 的 materials/workspaces 实现:`kind=board`,后端生成 ID、workspace 归属、版本;前端提供默认名称“未命名图谱”,首次创建时可先建立“个人空间”。
|
||
- 类型检查通过;6 项 workspace 单元测试通过,包含默认名称、ID 和 workspace 保留、路由编码、首次建空间及失败重试。
|
||
- 在独立临时目录执行 `npm run build -- --webpack` 成功,未改写当前开发服务的构建缓存。
|
||
- 隔离生产构建的 API 冒烟测试通过,新增模拟 Foundry 的创建 201、会话转发、默认名称与 schema、按生成 ID 重新读取及图谱路由 200 检查。
|
||
- 按用户要求不访问浏览器,本次未验证实际界面交互或使用真实账户创建图谱;浏览器和线上验收由用户后续反馈。
|
||
|
||
## 侧栏动画、字体与 Google 头像(2026-11-06)
|
||
|
||
- 使用固定版本 Motion for React 14.9.1:侧栏宽度和位置以 240ms 缓动变化,浮框以 140ms 淡入淡出;系统减少动态效果偏好下立即切换。收起时侧栏设为 inert/aria-hidden,焦点转移到展开按钮。
|
||
- 侧栏主文字改为 14px、#37352f;列表内边距改为 4px 8px,行高 20px,最小高度 30px;个人空间等分组标题保持原来的 11px 浅灰色。
|
||
- 账户弹出框重新设置分区、工作空间图标、用户资料、头像、分隔线、边框和阴影,保留原生 Popover 的 Escape 与外部点击关闭;账户设置和新建工作空间接入实际 profile PATCH / workspaces POST。
|
||
- Foundry 主线已保存 OAuth picture 并通过 profile.avatar_url 返回,本次补齐前端类型和头像渲染,无需修改后端。图片失败或缺失时回退首字,图片使用 no-referrer。
|
||
- 类型检查与 6 项 workspace 测试通过;隔离临时目录的 Webpack 生产构建及 API 冒烟检查通过,新增头像 URL 透传、资料修改后保留头像的检查。
|
||
- 沿用用户“不访问浏览器,由用户试用反馈”的要求,未运行本次浏览器视觉、动画及真实 Google 头像加载验收;未修改真实账户资料。
|