Files
jiu/docs/plans/mobile-screens-implementation.html
wangjia 5b9262a166 docs(design): 移动端落地收尾——CONTRACT 台账入表 + 实现计划 HTML 阅读版登记
- CONTRACT 块4:移动壳/我的/授权/盘点入验收表(同步·golden);通知两屏登记二期、
  建单两屏登记拍板不落地;「移动愿景原型」小节改记 2026-07-04 已落地;
  授权面板代码先行行更新为公共 license_panel.dart
- docs/plans/mobile-screens-implementation.html:实现计划阅读版(Stage0/四包/合流验收),
  登记 docs/index.html「实现计划」分类

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 12:23:27 +08:00

91 lines
7.8 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>移动端全屏落地实现计划 — 酒库管理系统</title>
<style>
:root{
--primary:#2563AC; --primary-dark:#154072; --accent:#8B2331;
--ink:#232934; --muted:#6E7888; --border:#DCE2EB; --paper:#F5F7FA; --head:#F0F4FF;
--ok:#1F8A4C; --warn:#B7791F;
}
*{box-sizing:border-box;font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;}
body{margin:0;background:var(--paper);color:var(--ink);padding:28px;line-height:1.7;max-width:1000px;margin:0 auto;}
h1{font-size:22px;margin:0 0 4px;}
.sub{color:var(--muted);font-size:13px;margin-bottom:22px;}
h2{font-size:16px;margin:28px 0 10px;color:var(--primary-dark);border-bottom:2px solid var(--head);padding-bottom:6px;}
h3{font-size:14px;margin:18px 0 6px;}
.card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:16px 20px;margin:12px 0;}
.lead{font-size:14px;}
table{border-collapse:collapse;width:100%;font-size:13px;margin:10px 0;}
th,td{border:1px solid var(--border);padding:7px 10px;text-align:left;vertical-align:top;}
th{background:var(--head);color:var(--primary-dark);}
code{background:#EEF2F8;padding:1px 5px;border-radius:4px;font-family:"JetBrains Mono",Menlo,monospace;font-size:12px;}
ul{margin:6px 0;padding-left:20px;}
li{margin:5px 0;font-size:13.5px;}
.tag{display:inline-block;font-size:11px;padding:1px 8px;border-radius:9px;background:#EEF2F8;color:var(--muted);margin-left:6px;}
.tag.done{background:#E4F3EA;color:var(--ok);}
.hint{color:var(--muted);font-size:12px;}
</style>
</head>
<body>
<h1>移动端全屏落地实现计划 <span class="tag done">已执行 · 2026-07-04</span></h1>
<div class="sub">m-* 原型 → Flutter 实现:底部 tab + 我的 hub + 底部 sheet 交互范式。执行真相源为 plan .md(checkbox 版),本页为阅读版。</div>
<div class="card lead">
<b>背景</b>:移动原型体系(19 个 m-*.html)设计评审通过后整体落成 Flutter。核心差距是 Flutter 窄屏原为「桌面响应式复用」(Drawer 汉堡导航、右滑抽屉详情、弹窗筛选),移动愿景是「底部 5 tab + 我的 hub、一切弹层走底部 sheet、2×2 可点 KPI + 搜索行 + 图标徽章卡片流」。<b>桌面形态全程零改动</b>,所有改动走 <code>context.isMobile</code> 分支。
<br><br>
<b>已拍板边界(不做)</b>:移动端无建单入口(m-stock-in/m-stock-out 建单表单屏不落地);移动端无打印动作;通知中心为二期(后端无通知模块,m-notifications 两屏跳过);登录/注册已自适应不入包。
</div>
<h2>执行模式</h2>
<p>Stage 0 共享基建由主会话串行完成(router / shell / widgets 属冻结区),随后 <b>4 个 flutter-coder agent 并行</b>跑 4 个文件不相交的屏工作包,最后主会话合流验收。</p>
<h2>Stage 0 · 基建(commit <code>be9afcf</code></h2>
<div class="card">
<ul>
<li><b>统一移动 sheet</b><code>widgets/ds/m_sheet.dart</code><code>showMSheet</code>grip/标题/X/86vh/键盘避让/SelectionArea+ <code>showAdaptiveSheet</code>(窄屏 sheet / 宽屏 dialog</li>
<li><b>状态图标映射</b><code>widgets/ds/status_icon_map.dart</code> — 原型 icons.js BADGE_ICON 28 词逐词转录为 LucideIcons</li>
<li><b>图标徽章</b>DsBadge / StatusPill / StatusBadge 加 icon 变体(默认圆点,桌面 golden 零漂移)</li>
<li><b>移动组件</b><code>m_kpi_grid.dart</code>2×2 可点 KPI)· <code>m_search_row.dart</code>(搜索框+状态钮+详搜钮)· <code>m_hub.dart</code>hub 入口组)· <code>m_tab_bar.dart</code>(底部 tab)· <code>theme_sheet.dart</code>(主题外观 sheet</li>
<li><b>路由</b>branch 9 <code>/me</code>MeScreen+ <code>/me/license</code>LicenseScreen);location 透传壳</li>
<li><b>壳改造</b>:窄屏 tab 根白名单出底部 5 tab(库存/入库/出库/财务/我的 ↔ branch 2/0/1/3/9);二级屏隐藏 tabbar + 顶栏返回箭头 + PopScope 拦系统返回键;删 Drawer/汉堡;窄屏顶栏对齐 m-top(标题+主题/铃/头像);授权跳转窄屏分叉 <code>/me/license</code></li>
<li><b>授权抽取</b>_LicensePanel/_SettingsCard → 公共 <code>license_panel.dart</code> / <code>settings_card.dart</code>(桌面设置 tab 与移动独立屏同源)</li>
<li><b>六个共享弹层</b>窄屏自动 sheet 化:订单详情/往来详情/财务往来/商品编辑抽屉 + 退单/登记收支 dialogasSheet 形态)</li>
<li><b>golden</b>app_shell_mobile + me 各三主题(390×844@2x</li>
</ul>
</div>
<h2>Stage 1 · 四个并行工作包</h2>
<table>
<tr><th></th><th></th><th>对照原型</th><th>要点</th><th>commit</th></tr>
<tr><td><b>P1 单据域</b></td><td>入库列表 / 出库列表</td><td>m-stock-in-list / m-stock-out-list</td><td>KPI 2×2 可点筛选、MSearchRow、状态/详搜 sheet(字段与桌面同集)、图标徽章卡片流、确认进价/售价 sheet 化、窄屏无建单无打印、成本利润权限隐藏保持</td><td><code>ff7b419</code></td></tr>
<tr><td><b>P2 库存+财务域</b></td><td>库存列表 / 库存盘点 / 财务</td><td>m-inventory / m-inventory-check / m-finance</td><td>库存 KPI 2×2+详搜 sheet;盘点卡片流+详情 sheet(按原型桩粒度);财务 KPI 2×2+三分段卡片流+收付款图标徽章</td><td><code>dde87a3</code></td></tr>
<tr><td><b>P3 经营数据域</b></td><td>往来单位 / 基础数据 / 商品详情</td><td>m-partners / m-products</td><td>类型 chips+图标徽章卡片流;五分段横滚+字典 sheet 表单;商品详情单列化+图片横滚防溢出</td><td><code>4287f5a</code></td></tr>
<tr><td><b>P4 系统域</b></td><td>系统设置 / 用户管理 / 设备管理 / 关于我们</td><td>m-settings / m-users / m-devices / m-about</td><td>设置窄屏 hub 化(门店信息/编号规则/默认仓库 sheet);用户卡片流+详情 sheet+FAB;设备会话/外设卡流+强制下线+添加设备 sheet+无打印模板;关于 hero+hub 链接+时间线+反馈 sheet</td><td><code>9445042</code></td></tr>
</table>
<p class="hint">统一约束:只改本包屏文件 + 新建本包 golden;禁改 widgets/ core/ router/ shell;桌面(!isMobile)零改动;颜色全走 token;窄屏隐藏建单/打印入口。</p>
<h2>Stage 2 · 合流验收(全部通过)</h2>
<div class="card">
<ul>
<li>✅ 交叉冲突检查:四包 commit 文件清单互不相交,共享文件(widgets/core/shell/router)零越界</li>
<li><code>flutter analyze</code> 0 error / 0 warning</li>
<li><code>flutter test</code> 全量 283 用例全绿(既有 16 组桌面 golden 零漂移)</li>
<li><code>node tool/check_ds_code.mjs --strict</code> 违规 0<code>node tools/check-l1-sync.mjs</code> L1 同源过</li>
<li>✅ design/CONTRACT.md 块 4 台账:移动壳/我的/授权/盘点入表(同步·golden 验证);通知两屏登记「二期」;建单两屏登记「拍板不落地」;移动屏以 golden 自比为准不入 fidelity 闸</li>
</ul>
</div>
<h2>验证方式</h2>
<ul>
<li>每屏移动 golden<code>pumpGolden(logical: Size(390,844), dpr: 2)</code> × A/B/C 三主题</li>
<li>桌面回归:既有 golden 全绿零漂移(所有改动限 isMobile 分支 + 徽章 icon 默认 null</li>
<li>用户验收:真机(iPhone USB)或 macOS debug 窄窗目检;<b>不自动发版</b></li>
</ul>
<p class="hint">执行真相源:~/.claude/plans/purrfect-tumbling-salamander.mdcheckbox 版)。相关:design/CONTRACT.md「移动愿景原型」小节、CLAUDE.md「设计真相源分层」。</p>
</body>
</html>