Files
jiu/todo/todo.html
T
2026-06-07 21:22:52 +08:00

329 lines
19 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>Web 站点问题清单 / TODO · 岩美</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0; padding: 0 0 80px;
font-family: "Noto Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
color: #1f2933; background: #f7f9fb; line-height: 1.6;
-webkit-font-smoothing: antialiased;
}
header {
background: linear-gradient(135deg, #0A1F3B 0%, #15407D 100%);
color: #fff; padding: 40px 32px 32px;
}
header h1 { margin: 0 0 8px; font-size: 26px; font-weight: 700; }
header p { margin: 0; color: #ADC9EA; font-size: 14px; }
.wrap { max-width: 1040px; margin: 0 auto; padding: 0 24px; }
.meta { margin-top: 16px; font-size: 13px; color: #8aa3c4; }
.legend { display: flex; flex-wrap: wrap; gap: 10px; margin: 24px auto 8px; max-width: 1040px; padding: 0 24px; }
.tag { display: inline-block; padding: 2px 9px; border-radius: 10px; font-size: 12px; font-weight: 600; white-space: nowrap; }
.t-block { background: #fde8e8; color: #b91c1c; } /* 阻断/必须改 */
.t-high { background: #fef0d8; color: #9a6700; } /* 重要 */
.t-low { background: #e6f0fb; color: #1d4ed8; } /* 一般/优化 */
.t-known { background: #ececec; color: #555; } /* 已知占位 */
.t-ver { background: #e3f5ea; color: #1f7a44; } /* 已核实 */
.t-done { background: #d1f0dc; color: #1f7a44; } /* 已完成 */
section { max-width: 1040px; margin: 28px auto 0; padding: 0 24px; }
h2 {
font-size: 18px; font-weight: 700; color: #0A1F3B;
border-left: 4px solid #2563AC; padding-left: 12px; margin: 0 0 14px;
}
ul.todo { list-style: none; margin: 0; padding: 0; }
ul.todo li {
background: #fff; border: 1px solid #e4e9ef; border-radius: 8px;
padding: 14px 16px; margin-bottom: 10px;
display: grid; grid-template-columns: 22px 1fr; gap: 12px; align-items: start;
}
ul.todo li:has(input:checked) { background: #f3faf5; border-color: #b7e4c7; opacity: 0.7; }
ul.todo li:has(input:checked) .item-title { color: #52606d; text-decoration: line-through; }
ul.todo li input[type=checkbox] { margin-top: 4px; width: 16px; height: 16px; }
.item-title { font-weight: 600; font-size: 15px; }
.item-title .tag { margin-left: 8px; vertical-align: middle; }
.item-desc { font-size: 13.5px; color: #52606d; margin-top: 4px; }
.item-desc code {
background: #f0f2f5; padding: 1px 5px; border-radius: 3px;
font-family: "JetBrains Mono", monospace; font-size: 12.5px; color: #b91c1c;
}
.file { font-family: "JetBrains Mono", monospace; font-size: 12px; color: #7b8794; }
.note { background: #fffbe9; border:1px solid #f0e3b0; border-radius:8px; padding:12px 16px; font-size:13px; color:#6b5b1d; margin-top:14px; }
</style>
</head>
<body>
<header>
<div class="wrap">
<h1>Web 营销站点 — 问题清单 / TODO</h1>
<p>检查范围:产品介绍(首页)· 功能详情页 · 价格 · 下载 · 文档 · 注册 · 页眉页脚</p>
<div class="meta">生成日期 2026-06-07 · 对照后端实现核对 · 代码版本 v1.0.20</div>
</div>
</header>
<div class="legend">
<span class="tag t-block">阻断 必须改</span>
<span class="tag t-high">重要</span>
<span class="tag t-low">一般/优化</span>
<span class="tag t-known">已知占位(暂留)</span>
<span class="tag t-ver">已核实代码</span>
<span class="tag t-done">已完成</span>
</div>
<!-- ============ 虚假/夸大宣传(最优先,已核实代码) ============ -->
<section>
<h2>一、功能宣传与实际实现不符(已对照后端代码核实)</h2>
<ul class="todo">
<li><input type="checkbox" checked />
<div>
<div class="item-title">「红冲入库 / 红冲出库」未实现 <span class="tag t-block">阻断</span><span class="tag t-ver">已核实</span></div>
<div class="item-desc">后端 <code>internal/</code> 全局无任何红冲 / reversal / 冲销逻辑,但首页 FAQ「审批通过后发现错误」与 <span class="file">features/approval.html</span> 第 5 块(红冲 / 净额演示)大篇幅宣传。属虚假宣传,需删除或落地功能。</div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">「调拨单」未实现 <span class="tag t-block">阻断</span><span class="tag t-ver">已核实</span></div>
<div class="item-desc">后端无 transfer / 调拨 任何实现。<span class="file">features/approval.html</span> 状态机把「调拨单」与入库/出库/盘点并列为四大单据。需移除调拨相关展示。</div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">「库存预警 / 阈值推送」严重夸大 <span class="tag t-block">阻断</span><span class="tag t-ver">已核实</span></div>
<div class="item-desc">后端仅有 <code>min_stock</code> 单一字段用于显示「偏低/告急」标记,<b>没有</b>任何告警、推送、按 SKU 多级阈值配置、按操作员分发的能力。但首页「库存预警实时提醒」与 <span class="file">features/inventory.html</span> 整块「预警阈值配置 / 推送给张磊 / 短信通知李建国」均为虚构界面。需大幅收敛文案。</div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">「短信通知 / 邮件提醒」未实现 <span class="tag t-high">重要</span><span class="tag t-ver">已核实</span></div>
<div class="item-desc">后端无 SMS / 邮件发送能力。inventory/approval 页多处「短信通知」「邮件提醒」需删除。</div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">「过期预警 / 保质期推算」未实现 <span class="tag t-high">重要</span><span class="tag t-ver">已核实</span></div>
<div class="item-desc">后端 expire 相关仅为「license 授权到期」,无商品保质期/过期预警。<span class="file">features/inventory.html</span> 批次块的「过期预警」与阈值卡「临近过期 30 天邮件提醒」为虚构。</div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">「智能补货建议 v1.7 Beta」「SSO 单点登录」未实现 <span class="tag t-low">一般</span><span class="tag t-ver">已核实</span></div>
<div class="item-desc">补货建议(inventory 页标 v1.7 Beta)、价格连锁版的「SSO 单点登录」后端均无。若作为路线图保留需明确标注「规划中」,否则移除。</div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">「允许超量出库」可配置开关 待核实 <span class="tag t-low">一般</span></div>
<div class="item-desc">approval 页声称系统设置可开启「允许超量出库」,后端未检索到 oversell/超量 配置项,需确认是否真有该设置。</div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">营销数据疑似杜撰 <span class="tag t-high">重要</span></div>
<div class="item-desc">首页 Trust 区「1,280+ 门店 / 8.4% 损耗下降 / 99.9% 可用性」无数据支撑;功能页「14 个审计字段」「审批延迟 ≤1s」等均需核实,否则改为中性表述。</div>
</div>
</li>
</ul>
<div class="note">✅ 已核实<b>确实存在</b>的功能(文案无需改):FIFO 批次扣减出库(<code>stock.go ApproveStockOut</code>)、多仓库(<code>warehouse</code>)、库存盘点、入库/出库审批联动库存+应付应收、商品 <code>min_stock</code> 状态标记、拼音搜索、扫码验真(scan.html)。</div>
</section>
<!-- ============ 版本/品牌一致性 ============ -->
<section>
<h2>二、版本号与品牌/域名一致性</h2>
<ul class="todo">
<li><input type="checkbox" checked />
<div>
<div class="item-title">首页 Hero 版本号造假 <span class="tag t-block">阻断</span></div>
<div class="item-desc">首页徽标硬编码「v1.6 · 新增多仓库联动盘点」,inventory 页又写「v1.6.2」,而真实版本为 <b>v1.0.20</b>(CHANGELOG)。需统一为真实版本,最好像下载页一样从 <code>changelog</code> 数据动态取。<span class="file">index.njk:180-183</span></div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">品牌域名三处不统一 <span class="tag t-high">重要</span></div>
<div class="item-desc">首页预览写 <code>yanmei.app/inventory</code>、客服邮箱 <code>support@yanmei.app</code>,而真实应用域名是 <code>jiu.51yanmei.com</code>。需统一域名口径。<span class="file">index.njk:201 · _data/site.json</span></div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">下载页 API 域名硬编码 <span class="tag t-low">一般</span></div>
<div class="item-desc"><code>https://jiu.51yanmei.com</code> 直接写死在 <span class="file">download.njk</span> 的 JS 里(释放接口、各端下载、Web 入口),应抽到 <code>_data/site.json</code> 统一管理,便于换域名/环境。</div>
</div>
</li>
</ul>
</section>
<!-- ============ 页眉 ============ -->
<section>
<h2>三、页眉(导航)</h2>
<ul class="todo">
<li><input type="checkbox" checked />
<div>
<div class="item-title">功能详情页死链:<code>/download.html</code> <span class="tag t-block">阻断</span></div>
<div class="item-desc">两个功能页(手写 HTML)导航和页脚都链向 <code>/download.html</code><code>/docs.html</code>,但 Eleventy 实际产出 pretty URL <code>/download/</code><code>/docs/</code>。dist 中无 <code>download.html</code> → 死链。统一改为 <code>/download/</code><code>/docs/</code><span class="file">features/inventory.html:660-661 · approval.html 同</span></div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">功能详情页未进主导航(孤岛页面) <span class="tag t-high">重要</span></div>
<div class="item-desc"><span class="file">features/inventory.html</span><span class="file">approval.html</span> 制作精良,但主站导航「产品」只跳首页锚点 <code>/#modules</code>,这两页仅能从页脚或彼此跳转进入。建议在导航或首页模块卡加「了解更多」入口。</div>
</div>
</li>
<li><input type="checkbox" />
<div>
<div class="item-title">两套 CSS / 设计令牌并存 <span class="tag t-high">重要</span></div>
<div class="item-desc">主站 njk 用 <code>color.css + style.css</code>,功能页用 <code>colors_and_type.css</code>,导航/页脚样式各写一份。维护分裂、易不一致,建议合并到一套并让功能页也走 base.njk 模板。</div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">注册入口不一致 <span class="tag t-low">一般</span></div>
<div class="item-desc">功能页 JS 未登录态指向 <code>/app/login</code><code>/app/register</code>Flutter 内路由),而 njk 站点有独立 web 注册页 <code>/register/</code>。两套注册入口口径不一,需统一。</div>
</div>
</li>
</ul>
</section>
<!-- ============ 页脚 ============ -->
<section>
<h2>四、页脚</h2>
<ul class="todo">
<li><input type="checkbox" checked />
<div>
<div class="item-title">大量占位死链 <code>href="#"</code> <span class="tag t-high">重要</span></div>
<div class="item-desc">页脚以下链接全部为空锚点,需逐一落地或移除:API 文档、视频教程、数据导入模板、提交工单、技术支持、服务等级、关于岩美、客户案例、招贤纳士、联系我们、版本更新。<span class="file">footer.njk · features/*.html</span></div>
</div>
</li>
<li><input type="checkbox" />
<div>
<div class="item-title">备案号为占位假值 <span class="tag t-known">已知占位</span></div>
<div class="item-desc">现为 <code>沪 ICP 备 2026000000 号 · 沪公网安备 31010000000000 号</code>(全 0)。按要求暂填,<b>上线前必须替换为真实备案号</b>(且 ICP 主体地需与实际服务器/主体一致,岩美若在沪外需核对)。<span class="file">_data/site.json:5</span></div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">客服邮箱/电话为占位 <span class="tag t-high">重要</span></div>
<div class="item-desc">邮箱 <code>support@yanmei.app</code>(与真实域名不符)、电话 <code>400-880-8888</code>(明显假号)。需换成真实联系方式。<span class="file">_data/site.json:7-8</span></div>
</div>
</li>
<li><input type="checkbox" />
<div>
<div class="item-title">页脚双份维护 <span class="tag t-low">一般</span></div>
<div class="item-desc">njk 站点用 <code>footer.njk</code>(读 site.json 变量),功能页则把页脚、备案、联系方式硬编码各写一份,改一处不同步。根因同「两套模板」,建议功能页接入 base.njk。</div>
</div>
</li>
</ul>
</section>
<!-- ============ 价格 ============ -->
<section>
<h2>五、价格</h2>
<ul class="todo">
<li><input type="checkbox" checked />
<div>
<div class="item-title">价格数字需确认是否真实对外 <span class="tag t-high">重要</span></div>
<div class="item-desc">单店版 <code>¥299/月</code>、年付 <code>¥2,988/年</code>、连锁版「定制」疑为占位。上线前需确认真实报价。</div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">「购买 / 联系销售 / 预约演示」按钮无对应流程 <span class="tag t-high">重要</span></div>
<div class="item-desc">价格卡「购买」「联系销售」、Hero「观看演示」、CTA「预约 1 对 1 演示」全部指向 <code>/app/</code>,但并无支付、销售联系、演示预约流程。按钮文案与去向不符。<span class="file">index.njk:554,568,188,622</span></div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">「试用版」与「单店版」文案口径混乱 <span class="tag t-low">一般</span></div>
<div class="item-desc">价格区把「试用版(¥0/30天)」与「单店版(¥299)」分列两卡,而 FAQ 又称「标准版提供 30 天免费试用」。试用 vs 标准 的口径需统一。</div>
</div>
</li>
</ul>
</section>
<!-- ============ 下载 ============ -->
<section>
<h2>六、下载页</h2>
<ul class="todo">
<li><input type="checkbox" checked />
<div>
<div class="item-title">下载按钮失败无降级 <span class="tag t-high">重要</span></div>
<div class="item-desc">Windows/macOS/Android 按钮初始 <code>href="#"</code>,依赖运行时 fetch <code>/api/v1/public/release</code> 回填真实下载地址;接口失败 / 无数据时点击无任何反应、也无提示。需加失败兜底(如提示「暂未就绪」或禁用态)。<span class="file">download.njk:500-543</span></div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">iOS 状态依赖接口字段 <span class="tag t-low">一般</span></div>
<div class="item-desc">iOS 卡片仅当接口返回 <code>download_urls.ios</code> 才从「敬请期待」切换为「TestFlight 安装」。需确认 TestFlight 公开链接是否已配到 release 接口,否则 iOS 永远显示敬请期待(与首页「五端就绪」矛盾)。</div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">首页「五端就绪」与下载页 iOS 状态矛盾 <span class="tag t-high">重要</span></div>
<div class="item-desc">首页平台区把 Web/Win/macOS/iOS/Android 全列为可用,下载页 iOS 仍是「敬请期待」。需对齐口径。</div>
</div>
</li>
</ul>
</section>
<!-- ============ 文档 ============ -->
<section>
<h2>七、文档页</h2>
<ul class="todo">
<li><input type="checkbox" checked />
<div>
<div class="item-title"><code>⌘K</code> 搜索快捷键是装饰 <span class="tag t-low">一般</span></div>
<div class="item-desc">文档顶栏显示 <code>⌘K</code> 徽标但未绑定键盘事件聚焦搜索框;搜索本身仅按整章显隐,无关键词高亮/定位。要么实现快捷键,要么去掉徽标。<span class="file">docs.njk</span></div>
</div>
</li>
<li><input type="checkbox" checked />
<div>
<div class="item-title">反馈接口路径不一致 / 待确认 <span class="tag t-low">一般</span></div>
<div class="item-desc">文档反馈用相对路径 <code>/api/v1/public/feedback</code>,下载页却用绝对域名。需确认该端点真实存在且同源可达。<span class="file">docs.njk:182</span></div>
</div>
</li>
</ul>
</section>
<!-- ============ 注册 ============ -->
<section>
<h2>八、注册页</h2>
<ul class="todo">
<li><input type="checkbox" />
<div>
<div class="item-title">注册接口同源依赖 <span class="tag t-low">一般</span></div>
<div class="item-desc"><code>window.location.origin + '/api/v1/public/register'</code>,要求静态站与后端同源部署;本地预览或分离部署时会指错。需确认部署形态(与下载页写死域名的做法也不统一)。<span class="file">register.njk:175</span></div>
</div>
</li>
<li><input type="checkbox" />
<div>
<div class="item-title">成功提示路径需核对 <span class="tag t-low">一般</span></div>
<div class="item-desc">提示「忘记门店编码可在『系统设置 → 关于』查看」,需与实际客户端菜单路径一致。</div>
</div>
</li>
</ul>
</section>
<!-- ============ 构建/工程 ============ -->
<section>
<h2>九、构建 / 工程结构</h2>
<ul class="todo">
<li><input type="checkbox" checked />
<div>
<div class="item-title">dist 残留旧产物 <code>docs.html</code> <span class="tag t-low">一般</span></div>
<div class="item-desc">dist 同时存在 <code>docs.html</code>(疑似旧构建残留)与 <code>docs/index.html</code>,造成同内容双 URL。建议清理 dist 后全量重建,避免历史残留。</div>
</div>
</li>
<li><input type="checkbox" />
<div>
<div class="item-title">scan.html / features 走 passthrough,不享模板 <span class="tag t-low">一般</span></div>
<div class="item-desc"><code>.eleventy.js</code> 把 features、scan.html 直接复制,不经 njk 模板,导致页脚、备案、域名、CSS 都得手动同步——是上面多个「双份维护」问题的工程根因。建议长期改造为模板化。</div>
</div>
</li>
</ul>
</section>
</body>
</html>