3.4 KiB
店员后台交付报告
实现目录:perler-beads-webui。Vue 3 + TypeScript + Element Plus / icons + Pinia + Vue Router + Vite,CSS 原生样式,不含 Tailwind 或外部素材。森林绿与奶油色工作台,桌面侧栏与移动端折叠菜单。
已实现
- 管理员账号密码登录,不内置任何凭据。令牌存在 sessionStorage;每次受保护路由导航调用
/api/me确認身份、员工角色与 store-001 门店,禁止仅凭令牌存在放行。401 未授权、403 未登录从业务 envelope 识别。403 清除会话并退出。 - 店内服务列表、数量摘要、状态/服务类型/桌码备注筛选、明确空/载入/错误状态、pending→accepted→completed 操作。10 秒轮询可暂停,隐藏页面不轮询,路由卸载停止计时并 AbortController 取消未完成请求。
- 图纸列表与检索、JSON 导入、名称分类编辑、发布/下架。仅管理员访问;私有图纸仍由服务端鉴权。导入尺寸、格子、色板、门店匹配由服务端权威校验。
- 色板与物料位置编辑抽屉,添加色号、颜色名称、HEX、可用状态;更新整门店色板。桌位新增/编辑、启停;门店信息与双 HTTPS 服务地址编辑。所有配置以当前授权门店提交,无跨店选择假授权。
- 图纸库与有 patternId 的服务任务可下载实际尺寸 SVG,带 Bearer 鉴权;识别下载接口 JSON 错误,释放 Object URL。服务端限制最多 200×200,SVG 是有界文件,客户端采用 Blob 下载;实际打印由店员手动完成。
- 支付与储值始终禁用,没有假支付、假充值或余额。
- 中文页面语言、内部后台 noindex、语义 heading/main/nav、跳转主要内容链接、控件标签、文字状态、键盘焦点、减少动画偏好、移动端抽屉与可横向滚动表格。
- 页面按路由懒加载,Element Plus 按实际组件注册,减少首屏 JS;无第三方字体/图片网络请求。
启动
cd perler-beads-webui
npm ci --cache /tmp/perler-npm-cache
npm run dev
开发服务监听 127.0.0.1:5174,/api 相对地址代理 127.0.0.1:8080。生产构建 dist/,部署需将 /api 代理服务端,并将前端路由回退至 index.html。管理员用户名与密码配置于服务端环境,后台手动输入。
本次本机联调账号:用户名 admin,密码 local-integration-only,门店 store-001。仅适用于本次启动的演示服务;自行部署按 ADMIN_USERNAME / ADMIN_PASSWORD 配置。完整说明见 README 的本地管理员说明。
验证
先写 envelope 权限错误与任务状态序列测试,执行出现 contract.ts 尚不存在的预期失败,再实现。
已执行通过:npm test(3 项,含真实 client 模拟 Fetch / Bearer / 过期会话校验)、npm run build(vue-tsc 类型检查 + Vite 生产构建)。安装审计 0 vulnerabilities。官方 npm 元数据确认框架版本。TypeScript latest(7)与当前 vue-tsc 不兼容,固定使用 TypeScript 5.9.3。依赖版本及 package-lock 保存。
最终首屏 JS gzip 146.84 kB,CSS gzip 50.13 kB,额外路由 chunk 每份约 1.3–3.2 kB gzip。构建无超大 chunk 警告。
浏览器桌面/移动交互与真实 API 联调由根任务统一验证;此报告当前不声称已完成该核查。没有 PostgreSQL/Redis 启动时,后台正确呈现连接失败。微信凭据、生产 DNS/TLS 和打印机硬件未验证。