chore: release v1.0.24
Deploy / build-linux-web (push) Successful in 59s
Deploy / build-windows (push) Successful in 1m50s
Deploy / build-macos (push) Successful in 1m22s
Deploy / build-android (push) Successful in 1m26s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m39s

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-08 07:31:55 +08:00
parent 22f07ed805
commit 1ec1d4209a
13 changed files with 832 additions and 172 deletions
+139 -101
View File
@@ -101,9 +101,9 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<h1>酒库管理系统 — 项目 TODO</h1>
<div class="header-meta">生成于 2026-06-08 · 真相源 todo/todo.json</div>
<div class="stats">
<div class="stat-pill"><strong>13</strong>全部</div>
<div class="stat-pill"><strong>11</strong>未完成</div>
<div class="stat-pill"><strong>2</strong>已完成</div>
<div class="stat-pill"><strong>15</strong>全部</div>
<div class="stat-pill"><strong>7</strong>未完成</div>
<div class="stat-pill"><strong>8</strong>已完成</div>
</div>
</div>
</header>
@@ -126,13 +126,13 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="filter-sep"></div>
<div class="filter-group">
<span class="filter-label">平台 / 标签</span>
<button class="filter-chip" data-filter-tag="Android">Android</button><button class="filter-chip" data-filter-tag="Web">Web</button><button class="filter-chip" data-filter-tag="iOS">iOS</button><button class="filter-chip" data-filter-tag="前端">前端</button><button class="filter-chip" data-filter-tag="后端">后端</button>
<button class="filter-chip" data-filter-tag="Android">Android</button><button class="filter-chip" data-filter-tag="Web">Web</button><button class="filter-chip" data-filter-tag="iOS">iOS</button><button class="filter-chip" data-filter-tag="前端">前端</button><button class="filter-chip" data-filter-tag="后端">后端</button><button class="filter-chip" data-filter-tag="数据库">数据库</button>
</div>
</div>
<div class="wrap">
<div class="section-title">📋 未完成(11</div>
<div class="section-title">📋 未完成(7</div>
<ul class="todo-list" id="pendingList">
<li class="todo-card"
@@ -154,101 +154,6 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
</div>
</li>
<li class="todo-card"
data-id="8"
data-level="mid"
data-tags="前端,iOS,Android"
data-done="0">
<div class="card-header">
<span class="item-title">补全「查看本店其他商品」功能</span>
<span class="tag t-high">重要</span>
</div>
<div class="item-desc">PublicProductScreen _ShopCard 底部按钮 onPressed: () {} 为空,需实现跳转至该门店商品列表页。client/lib/screens/public/public_product_screen.dart:1240</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
</div>
</div>
</li>
<li class="todo-card"
data-id="9"
data-level="mid"
data-tags="前端,iOS,Android"
data-done="0">
<div class="card-header">
<span class="item-title">设计并实现添加门店微信功能</span>
<span class="tag t-high">重要</span>
</div>
<div class="item-desc">PublicProductScreen _ShopCard「添加门店微信」按钮 onPressed: () {} 为空。需设计方案:门店维护微信号字段 or 二维码图片,扫码页展示。涉及后端 shop model 扩展 + 前端展示。client/lib/screens/public/public_product_screen.dart:1255</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
</div>
</div>
</li>
<li class="todo-card"
data-id="10"
data-level="mid"
data-tags="前端,后端,iOS,Android"
data-done="0">
<div class="card-header">
<span class="item-title">公开商品 API 补充 sale_price 并在页面展示价格</span>
<span class="tag t-high">重要</span>
</div>
<div class="item-desc">product model 有 sale_price 字段但 public.go GetProduct 未返回。需:1) 后端 batchData/productData 加 sale_price2) Flutter _TitleBlock 或单独区块展示建议零售价。client: public_product_screen.dart, backend: handler/public.go</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="后端">后端</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
</div>
</div>
</li>
<li class="todo-card"
data-id="11"
data-level="mid"
data-tags="前端,iOS,Android"
data-done="0">
<div class="card-header">
<span class="item-title">清除 _ParamsCard 硬编码占位数据</span>
<span class="tag t-high">重要</span>
</div>
<div class="item-desc">public_product_screen.dart _ParamsCard 硬编码了「产地:贵州省仁怀市茅台镇」「生产日期:2024-01-01」「保质期:无限期(适饮)」「储存方式:阴凉干燥…」,非茅台商品显示错误信息。无数据时应不显示该行,或从 custom_fields 读取。line:1089-1092</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
</div>
</div>
</li>
<li class="todo-card"
data-id="12"
data-level="mid"
data-tags="前端,iOS,Android"
data-done="0">
<div class="card-header">
<span class="item-title">移除 _DescriptionSection 茅台 mock 文本</span>
<span class="tag t-high">重要</span>
</div>
<div class="item-desc">无商品描述时 fallback 显示飞天茅台硬编码文案和 mock 关键词,其他商品扫码看到茅台介绍。无描述时应隐藏该区块。public_product_screen.dart:819-825</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
</div>
</div>
</li>
<li class="todo-card"
data-id="3"
data-level="low"
@@ -343,13 +248,146 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
</div>
</div>
</li>
<li class="todo-card"
data-id="18"
data-level="low"
data-tags="前端,iOS,Android"
data-done="0">
<div class="card-header">
<span class="item-title">基础数据管理 UI 增加 4 个字典维护 Tab</span>
<span class="tag t-low">一般 / 优化</span>
</div>
<div class="item-desc">products_screen.dart 基础数据管理页增加产地/保质期/储存方式/描述文档 4 个维护 Tab,复用现有 option 维护组件(增删改查);描述文档 Tab 含 title+content 多行输入</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
</div>
</div>
</li>
</ul>
<div class="done-section">
<div class="section-title done-title">✅ 已完成(2</div>
<div class="section-title done-title">✅ 已完成(8</div>
<button class="done-toggle" id="doneToggle">▾ 展开已完成列表</button>
<ul class="todo-list hidden" id="doneList">
<li class="todo-card done"
data-id="10"
data-level="mid"
data-tags="前端,后端,iOS,Android"
data-done="1">
<div class="card-header">
<span class="item-title">公开商品 API 补充 sale_price 并在页面展示价格</span>
<span class="tag t-high">重要</span>
</div>
<div class="item-desc">product model 有 sale_price 字段但 public.go GetProduct 未返回。需:1) 后端 batchData/productData 加 sale_price2) Flutter _TitleBlock 或单独区块展示建议零售价。client: public_product_screen.dart, backend: handler/public.go</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="后端">后端</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
<span class="meta-date">✅ 完成 2026-06-08 · <span class="ver-badge">v1.0.23</span></span>
</div>
</div>
</li>
<li class="todo-card done"
data-id="9"
data-level="mid"
data-tags="前端,iOS,Android"
data-done="1">
<div class="card-header">
<span class="item-title">设计并实现添加门店微信功能</span>
<span class="tag t-high">重要</span>
</div>
<div class="item-desc">PublicProductScreen _ShopCard「添加门店微信」按钮 onPressed: () {} 为空。需设计方案:门店维护微信号字段 or 二维码图片,扫码页展示。涉及后端 shop model 扩展 + 前端展示。client/lib/screens/public/public_product_screen.dart:1255</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
<span class="meta-date">✅ 完成 2026-06-08 · <span class="ver-badge">v1.0.23</span></span>
</div>
</div>
</li>
<li class="todo-card done"
data-id="8"
data-level="mid"
data-tags="前端,iOS,Android"
data-done="1">
<div class="card-header">
<span class="item-title">补全「查看本店其他商品」功能</span>
<span class="tag t-high">重要</span>
</div>
<div class="item-desc">PublicProductScreen _ShopCard 底部按钮 onPressed: () {} 为空,需实现跳转至该门店商品列表页。client/lib/screens/public/public_product_screen.dart:1240</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
<span class="meta-date">✅ 完成 2026-06-08 · <span class="ver-badge">v1.0.23</span></span>
</div>
</div>
</li>
<li class="todo-card done"
data-id="17"
data-level="mid"
data-tags="前端,iOS,Android"
data-done="1">
<div class="card-header">
<span class="item-title">入库表单关联 4 个商品属性字典</span>
<span class="tag t-high">重要</span>
</div>
<div class="item-desc">stock_in_form_screen.dart 生产日期字段附近增加产地/保质期/储存方式/描述文档 4 个下拉选择(数据来自字典 List 接口);FindOrCreate/Update 接受并写入 4 个 id;前端新增对应 API client 方法</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
<span class="meta-date">✅ 完成 2026-06-08 · <span class="ver-badge">v1.0.23</span></span>
</div>
</div>
</li>
<li class="todo-card done"
data-id="16"
data-level="mid"
data-tags="后端,前端,iOS,Android"
data-done="1">
<div class="card-header">
<span class="item-title">public.go 返回产地/保质期/储存/介绍,公开页去硬编码</span>
<span class="tag t-high">重要</span>
</div>
<div class="item-desc">public.go GetProduct Preload 4 张新表 + 三级回退(描述文档→旧Description→通用中性兜底)+ 默认值常量(保质期/储存方式);Flutter public_product_screen.dart _ParamsCard/_DescriptionSection 改读真实数据,移除茅台 mock</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="后端">后端</span> <span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
<span class="meta-date">✅ 完成 2026-06-08 · <span class="ver-badge">v1.0.23</span></span>
</div>
</div>
</li>
<li class="todo-card done"
data-id="15"
data-level="mid"
data-tags="后端,数据库"
data-done="1">
<div class="card-header">
<span class="item-title">4 张商品属性字典表 + 后端 CRUD</span>
<span class="tag t-high">重要</span>
</div>
<div class="item-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 CRUD16 个方法);router.go 追加 4 组路由在 /product-options/ 下</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="后端">后端</span> <span class="tag t-tag" data-tag="数据库">数据库</span></div>
<div class="item-meta">
<span class="meta-date">🕐 2026-06-08</span>
<span class="meta-date">✅ 完成 2026-06-08 · <span class="ver-badge">v1.0.23</span></span>
</div>
</div>
</li>
<li class="todo-card done"
data-id="4"
data-level="low"
+71 -41
View File
@@ -1,9 +1,9 @@
{
"meta": {
"title": "酒库管理系统 — 项目 TODO",
"updated_at": "2026-06-07T18:12:50.300Z"
"updated_at": "2026-06-07T23:28:53.001Z"
},
"seq": 14,
"seq": 18,
"items": [
{
"id": 1,
@@ -99,9 +99,9 @@
"Android"
],
"created_at": "2026-06-07T18:08:24.432Z",
"done": false,
"completed_at": null,
"version": null
"done": true,
"completed_at": "2026-06-07T23:18:23.239Z",
"version": "v1.0.23"
},
{
"id": 9,
@@ -114,9 +114,9 @@
"Android"
],
"created_at": "2026-06-07T18:08:32.748Z",
"done": false,
"completed_at": null,
"version": null
"done": true,
"completed_at": "2026-06-07T23:28:52.932Z",
"version": "v1.0.23"
},
{
"id": 10,
@@ -130,39 +130,9 @@
"Android"
],
"created_at": "2026-06-07T18:12:21.217Z",
"done": false,
"completed_at": null,
"version": null
},
{
"id": 11,
"title": "清除 _ParamsCard 硬编码占位数据",
"desc": "public_product_screen.dart _ParamsCard 硬编码了「产地:贵州省仁怀市茅台镇」「生产日期:2024-01-01」「保质期:无限期(适饮)」「储存方式:阴凉干燥…」,非茅台商品显示错误信息。无数据时应不显示该行,或从 custom_fields 读取。line:1089-1092",
"level": "mid",
"tags": [
"前端",
"iOS",
"Android"
],
"created_at": "2026-06-07T18:12:28.829Z",
"done": false,
"completed_at": null,
"version": null
},
{
"id": 12,
"title": "移除 _DescriptionSection 茅台 mock 文本",
"desc": "无商品描述时 fallback 显示飞天茅台硬编码文案和 mock 关键词,其他商品扫码看到茅台介绍。无描述时应隐藏该区块。public_product_screen.dart:819-825",
"level": "mid",
"tags": [
"前端",
"iOS",
"Android"
],
"created_at": "2026-06-07T18:12:36.087Z",
"done": false,
"completed_at": null,
"version": null
"done": true,
"completed_at": "2026-06-07T23:28:53.001Z",
"version": "v1.0.23"
},
{
"id": 13,
@@ -193,6 +163,66 @@
"done": false,
"completed_at": null,
"version": null
},
{
"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 CRUD16 个方法);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"
},
{
"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"
},
{
"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"
},
{
"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": false,
"completed_at": null,
"version": null
}
]
}