0ec609255c
Deploy / build-linux-web (push) Failing after 10m44s
Deploy / build-windows (push) Failing after 10m45s
Deploy / build-macos (push) Has been skipped
Deploy / build-android (push) Has been skipped
Deploy / build-ios (push) Has been skipped
Deploy / release-deploy (push) Has been skipped
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
388 lines
14 KiB
JSON
388 lines
14 KiB
JSON
{
|
||
"meta": {
|
||
"title": "酒库管理系统 — 项目 TODO",
|
||
"updated_at": "2026-06-09T04:11:47.912Z"
|
||
},
|
||
"seq": 27,
|
||
"items": [
|
||
{
|
||
"id": 1,
|
||
"title": "两套 CSS / 设计令牌并存",
|
||
"desc": "主站 njk 用 color.css+style.css,功能页用 colors_and_type.css,导航/页脚各写一份,维护分裂。建议合并到一套,功能页走 base.njk 模板。",
|
||
"level": "mid",
|
||
"tags": [
|
||
"前端",
|
||
"Web"
|
||
],
|
||
"created_at": "2026-06-07T17:30:32.138Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-07T17:48:38.554Z",
|
||
"version": "v1.0.23",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 2,
|
||
"title": "备案号为占位假值",
|
||
"desc": "现为沪ICP备2026000000号(全0),上线前必须替换真实备案号。",
|
||
"level": "high",
|
||
"tags": [
|
||
"Web"
|
||
],
|
||
"created_at": "2026-06-07T17:30:32.188Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"status": "open"
|
||
},
|
||
{
|
||
"id": 3,
|
||
"title": "注册接口同源依赖问题",
|
||
"desc": "用 window.location.origin+'/api/v1/public/register',要求同源部署;分离部署时指错。需确认部署形态。",
|
||
"level": "low",
|
||
"tags": [
|
||
"前端",
|
||
"Web"
|
||
],
|
||
"created_at": "2026-06-07T17:30:32.237Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-08T14:33:22.523Z",
|
||
"version": "v1.0.25",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 4,
|
||
"title": "scan.html / features 走 passthrough 不享模板",
|
||
"desc": "features/scan.html 直接复制,不经 njk 模板,页脚/备案/CSS 都得手动同步。建议长期改造为模板化。",
|
||
"level": "low",
|
||
"tags": [
|
||
"前端",
|
||
"Web"
|
||
],
|
||
"created_at": "2026-06-07T17:30:32.287Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-07T18:07:13.211Z",
|
||
"version": "v1.0.23",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 5,
|
||
"title": "页脚双份维护",
|
||
"desc": "njk 站点用 footer.njk 读变量,功能页把页脚硬编码各写一份,改一处不同步。根因同「两套模板」。",
|
||
"level": "low",
|
||
"tags": [
|
||
"前端",
|
||
"Web"
|
||
],
|
||
"created_at": "2026-06-07T17:30:32.334Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-08T14:33:22.584Z",
|
||
"version": "v1.0.25",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 6,
|
||
"title": "注册成功提示路径需核对",
|
||
"desc": "提示「忘记门店编码可在「系统设置→关于」查看」,需与实际客户端菜单路径一致。",
|
||
"level": "low",
|
||
"tags": [
|
||
"前端",
|
||
"Web"
|
||
],
|
||
"created_at": "2026-06-07T17:30:32.381Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-08T14:33:22.648Z",
|
||
"version": "v1.0.25",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 8,
|
||
"title": "补全「查看本店其他商品」功能",
|
||
"desc": "PublicProductScreen _ShopCard 底部按钮 onPressed: () {} 为空,需实现跳转至该门店商品列表页。client/lib/screens/public/public_product_screen.dart:1240",
|
||
"level": "mid",
|
||
"tags": [
|
||
"前端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-07T18:08:24.432Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-07T23:18:23.239Z",
|
||
"version": "v1.0.23",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 9,
|
||
"title": "设计并实现添加门店微信功能",
|
||
"desc": "PublicProductScreen _ShopCard「添加门店微信」按钮 onPressed: () {} 为空。需设计方案:门店维护微信号字段 or 二维码图片,扫码页展示。涉及后端 shop model 扩展 + 前端展示。client/lib/screens/public/public_product_screen.dart:1255",
|
||
"level": "mid",
|
||
"tags": [
|
||
"前端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-07T18:08:32.748Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-07T23:28:52.932Z",
|
||
"version": "v1.0.23",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 10,
|
||
"title": "公开商品 API 补充 sale_price 并在页面展示价格",
|
||
"desc": "product model 有 sale_price 字段但 public.go GetProduct 未返回。需:1) 后端 batchData/productData 加 sale_price;2) Flutter _TitleBlock 或单独区块展示建议零售价。client: public_product_screen.dart, backend: handler/public.go",
|
||
"level": "mid",
|
||
"tags": [
|
||
"前端",
|
||
"后端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-07T18:12:21.217Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-07T23:28:53.001Z",
|
||
"version": "v1.0.23",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 13,
|
||
"title": "公开商品 API 补充 batch.quantity 和 product code/barcode",
|
||
"desc": "Flutter _AuthenticityCard 读取 batch['quantity'] 但后端 public.go batchData 未返回 quantity。另 product code/barcode 未暴露,参数卡无法显示商品编码。handler/public.go GetProduct",
|
||
"level": "low",
|
||
"tags": [
|
||
"后端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-07T18:12:43.136Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-08T14:40:04.464Z",
|
||
"version": "v1.0.25",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 14,
|
||
"title": "Footer「商品报错」「意见反馈」补充实际功能",
|
||
"desc": "public_product_screen.dart _Footer 底部两个链接无 url/action,点击静默。需设计方案:跳转反馈表单、弹出联系方式、或发邮件。line:1353-1355",
|
||
"level": "low",
|
||
"tags": [
|
||
"前端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-07T18:12:50.299Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-08T00:06:15.299Z",
|
||
"version": "v1.0.24",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 15,
|
||
"title": "4 张商品属性字典表 + 后端 CRUD",
|
||
"desc": "新增 product_origin_options/product_shelf_life_options/product_storage_options/product_description_docs 4 张字典表(TenantBase+shop_id 隔离);Product 增加 4 个可空外键;AutoMigrate 注册;handler/product_attr.go CRUD(16 个方法);router.go 追加 4 组路由在 /product-options/ 下",
|
||
"level": "mid",
|
||
"tags": [
|
||
"后端",
|
||
"数据库"
|
||
],
|
||
"created_at": "2026-06-07T22:51:51.881Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-07T22:56:24.807Z",
|
||
"version": "v1.0.23",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 16,
|
||
"title": "public.go 返回产地/保质期/储存/介绍,公开页去硬编码",
|
||
"desc": "public.go GetProduct Preload 4 张新表 + 三级回退(描述文档→旧Description→通用中性兜底)+ 默认值常量(保质期/储存方式);Flutter public_product_screen.dart _ParamsCard/_DescriptionSection 改读真实数据,移除茅台 mock",
|
||
"level": "mid",
|
||
"tags": [
|
||
"后端",
|
||
"前端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-07T22:51:59.988Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-07T22:58:32.882Z",
|
||
"version": "v1.0.23",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 17,
|
||
"title": "入库表单关联 4 个商品属性字典",
|
||
"desc": "stock_in_form_screen.dart 生产日期字段附近增加产地/保质期/储存方式/描述文档 4 个下拉选择(数据来自字典 List 接口);FindOrCreate/Update 接受并写入 4 个 id;前端新增对应 API client 方法",
|
||
"level": "mid",
|
||
"tags": [
|
||
"前端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-07T22:52:07.331Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-07T23:03:13.631Z",
|
||
"version": "v1.0.23",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 18,
|
||
"title": "基础数据管理 UI 增加 4 个字典维护 Tab",
|
||
"desc": "products_screen.dart 基础数据管理页增加产地/保质期/储存方式/描述文档 4 个维护 Tab,复用现有 option 维护组件(增删改查);描述文档 Tab 含 title+content 多行输入",
|
||
"level": "low",
|
||
"tags": [
|
||
"前端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-07T22:52:13.283Z",
|
||
"done": true,
|
||
"completed_at": "2026-06-08T00:06:15.371Z",
|
||
"version": "v1.0.24",
|
||
"status": "accepted"
|
||
},
|
||
{
|
||
"id": 19,
|
||
"title": "入库单新建表单增加产地/保质期/储存方式,选填项默认折叠",
|
||
"desc": "新建入库单的商品行增加产地、保质期、储存方式三个字典下拉选项(已有字典数据)。必填项(商品名、数量等)正常显示;选填项默认隐藏,点击展开按钮后在下一行展示。",
|
||
"level": "high",
|
||
"tags": [
|
||
"前端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-08T14:56:32.850Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"status": "done",
|
||
"reject_reason": null,
|
||
"rejected_at": null
|
||
},
|
||
{
|
||
"id": 20,
|
||
"title": "商品详情页重设计:展示所有字段,内容为公开页超集",
|
||
"desc": "当前 product_detail_screen.dart 显示内容过于简单。需先做页面设计(UI 方案),内容要求是公开扫码页的超集:包含商品基本信息、参数(产地/保质期/储存方式)、价格、描述文档、图片、库存批次、入库记录等管理侧专属字段。另:商品公开链接展示为可点击超链接(点击可跳转公开扫码页)。",
|
||
"level": "mid",
|
||
"tags": [
|
||
"前端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-08T14:59:08.342Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"status": "open"
|
||
},
|
||
{
|
||
"id": 21,
|
||
"title": "授权信息功能方案设计",
|
||
"desc": "完整方案设计,涵盖:界面设计与交互、前端实现方案、后端接口与数据模型、安全策略(防盗用、防滥用、授权校验)等。需产出设计文档后再进入开发阶段。",
|
||
"level": "mid",
|
||
"tags": [
|
||
"前端",
|
||
"后端",
|
||
"安全",
|
||
"文档"
|
||
],
|
||
"created_at": "2026-06-08T15:02:58.896Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"status": "open"
|
||
},
|
||
{
|
||
"id": 22,
|
||
"title": "关于我们页文档/更新日志链接更新,Web 新增版本历史页",
|
||
"desc": "1. 客户端「关于我们」页面的「打开文档」「更新日志」链接指向需更新为正确地址。2. Web 营销站新增版本更新页面(/changelog 或 /download/),从 CHANGELOG.md 自动渲染,展示所有历史版本更新记录。",
|
||
"level": "low",
|
||
"tags": [
|
||
"前端",
|
||
"Web",
|
||
"文档"
|
||
],
|
||
"created_at": "2026-06-08T15:05:00.447Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"status": "open"
|
||
},
|
||
{
|
||
"id": 23,
|
||
"title": "注册/联系入口「发邮件」升级为「加客服微信」并优化文案",
|
||
"desc": "当前注册成功页和网站联系支持入口引导用户「发邮件」,体验较弱。升级为扫码加客服微信,同时梳理相关文案措辞,使表达更专业、有亲和力。",
|
||
"level": "low",
|
||
"tags": [
|
||
"前端",
|
||
"Web"
|
||
],
|
||
"created_at": "2026-06-08T15:06:00.175Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"status": "open"
|
||
},
|
||
{
|
||
"id": 24,
|
||
"title": "服务条款与隐私政策页面",
|
||
"desc": "在营销网站(jiu.51yanmei.com)补充服务条款(Terms of Service)和隐私政策(Privacy Policy)页面,注册页底部添加链接。最低优先级,待其他功能稳定后处理。",
|
||
"level": "low",
|
||
"tags": [
|
||
"Web",
|
||
"文档"
|
||
],
|
||
"created_at": "2026-06-08T15:06:26.383Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"status": "open"
|
||
},
|
||
{
|
||
"id": 25,
|
||
"title": "移动端左侧抽屉菜单支持手势侧滑唤出",
|
||
"desc": "窄屏(手机)模式下,导航 Drawer 当前需点击汉堡按钮打开,需支持从屏幕左边缘向右滑动手势唤出菜单,符合移动端操作习惯。涉及 app_shell.dart 的 Drawer 配置。",
|
||
"level": "low",
|
||
"tags": [
|
||
"前端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-08T15:09:27.652Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"status": "done"
|
||
},
|
||
{
|
||
"id": 26,
|
||
"title": "入库单详情商品明细改为卡片式竖排布局",
|
||
"desc": "当前入库单详情的商品明细以横向表格展示,字段多时在窄屏上挤压严重。改为每件商品独占一个卡片区块,字段竖向排列(商品名、规格、数量、单价、产地、保质期等各占一行),信息层次清晰,移动端阅读体验更好。宽屏可保持表格,窄屏自动切换为卡片流(复用 MobileListCard 模式)。",
|
||
"level": "low",
|
||
"tags": [
|
||
"前端",
|
||
"iOS",
|
||
"Android"
|
||
],
|
||
"created_at": "2026-06-08T15:11:09.971Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null,
|
||
"status": "done"
|
||
},
|
||
{
|
||
"id": 27,
|
||
"title": "桌面客户端单实例限制,禁止同时运行多个进程",
|
||
"desc": "Windows 和 macOS 客户端启动时检测是否已有实例运行;若有,则激活已有窗口并退出新进程。Flutter desktop 可通过 window_single_instance 或 dart:io 锁文件实现。",
|
||
"level": "mid",
|
||
"tags": [
|
||
"Windows",
|
||
"mac"
|
||
],
|
||
"status": "done",
|
||
"created_at": "2026-06-08T15:58:11.759Z",
|
||
"done": false,
|
||
"completed_at": null,
|
||
"version": null
|
||
}
|
||
]
|
||
}
|