Files
jiu/web/dist/features/approval.html
T
wangjia aa7099ba94 feat(devops): 发版拆分为 client/site/server 三条独立流水线
将单一 CI/CD 流水线拆成三条互不影响的发布流水线,各有 tag 前缀、独立版本
序列与独立 CHANGELOG:

- client(client-v*):Flutter 全平台 + version.yaml 自更新清单
- site(site-v*):web/ Eleventy 营销站,不含 web 版 app
- server(server-v*):backend Go 服务 + 共享基建 nginx/systemd

新增 3 个 workflow(deploy-client/site/server.yml)替换 deploy.yml;CI 脚本
按 part 拆分为 compile-/release-/deploy-{client,site,server}.sh,抽出公共函数
lib-forgejo.sh;compile-{macos,android,ios,windows}.sh 改去 client-v 前缀;
manual.yml 按前缀路由回滚。

跨流水线解耦:version.yaml 归 client,后端每请求实时读取(不重启、不触发
server 流水线);官网下载页的版本徽章/下载链接/更新日志时间线运行时经
/api/v1/public/release 动态拉取(API 不可达回退构建时静态内容)。为此一次性
扩展后端 changelog 字段(version.go/public.go)与 download.njk 动态渲染。

CHANGELOG.md 重命名为 CHANGELOG-client.md,新增 CHANGELOG-site/server.md;
重写 /release 命令为 /release <part> [version];同步更新 CLAUDE.md 与部署文档。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 08:21:28 +08:00

720 lines
29 KiB
HTML
Raw 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" />
<meta name="color-scheme" content="light" />
<title>审核驱动业务流 · 岩美酒库管理系统</title>
<meta name="description" content="岩美酒库管理系统审核流功能:入库/出库/盘点单据全程审核,状态机驱动,多角色权限控制。" />
<link rel="stylesheet" href="/assets/color.css" />
<link rel="stylesheet" href="/assets/style.css" />
<link rel="stylesheet" href="/assets/features-approval.css" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
<script src="https://unpkg.com/lucide@0.469.0/dist/umd/lucide.min.js"></script>
</head>
<body>
<nav class="topnav">
<div class="topnav-inner">
<a href="/" class="topnav-brand">
<img src="/assets/logo-full.svg" alt="岩美" />
</a>
<div class="topnav-links">
<a href="/#modules">产品</a>
<a href="/features/inventory.html">库存</a>
<a href="/features/approval.html">审核流</a>
<a href="/#pricing">价格</a>
<a href="/download/">下载</a>
<a href="/docs/">文档</a>
<a href="/#faq">支持</a>
</div>
<div class="topnav-cta" id="nav-cta">
<a href="/register/" class="btn btn-primary btn-sm">注册门店</a>
</div>
<button class="nav-hamburger" id="nav-hamburger" aria-label="菜单" aria-expanded="false">
<span></span><span></span><span></span>
</button>
</div>
<div class="nav-mobile-menu" id="nav-mobile-menu">
<a href="/#modules">产品</a>
<a href="/features/inventory.html">库存管理</a>
<a href="/features/approval.html">审核流</a>
<a href="/#pricing">价格</a>
<a href="/download/">下载</a>
<a href="/docs/">文档</a>
<a href="/#faq">支持</a>
<div class="nav-mobile-cta" id="nav-mobile-cta">
<a href="/register/" class="btn btn-primary">注册门店</a>
</div>
</div>
</nav>
<!-- ============== HERO ============== -->
<section class="feat-hero">
<div class="container feat-hero-inner">
<div>
<div class="feat-breadcrumb">
<a href="/">首页</a>
<i data-lucide="chevron-right" class="icon"></i>
<a href="/#modules">产品功能</a>
<i data-lucide="chevron-right" class="icon"></i>
<span style="color: var(--gray-900); font-weight: 500;">审核驱动业务流</span>
</div>
<p class="eyebrow">功能详情 · 审核驱动业务流</p>
<h1>每一笔库存变动,<br/>都经过一次<em>签字</em></h1>
<p class="lead">
入库、出库、盘点 —— 统一状态机,统一审批界面。审批不仅是一个按钮,是一笔事务:库存动了,账款也跟着动,全程留痕。
</p>
<div class="actions">
<a href="#" class="btn btn-primary btn-lg">免费试用 30 天</a>
<a href="/docs/" class="btn btn-secondary btn-lg">
<i data-lucide="book-open" class="icon"></i>查看文档
</a>
</div>
<div class="quick-stats">
<div>
<div class="quick-stat-label">单据类型</div>
<div class="quick-stat-val">3 种</div>
</div>
<div>
<div class="quick-stat-label">操作留痕</div>
<div class="quick-stat-val">全程</div>
</div>
<div>
<div class="quick-stat-label">审批联动</div>
<div class="quick-stat-val">库存 + 账款</div>
</div>
</div>
</div>
<div class="hero-doc-stack">
<div class="hero-doc hero-doc-back-2"></div>
<div class="hero-doc hero-doc-back-1"></div>
<div class="hero-doc hero-doc-main">
<div class="hero-doc-head">
<div>
<div class="hero-doc-id">RK20260523000007</div>
<div class="hero-doc-meta">入库审核 · A 仓 · 茅台经销华东</div>
</div>
<div class="hero-doc-status">
<i data-lucide="check" class="icon"></i>已审批
</div>
</div>
<div class="hero-doc-row">
<div>茅台飞天 53° · 500ml×6</div><div>4</div><div>¥8,000</div>
</div>
<div class="hero-doc-row">
<div>五粮液第八代 52°</div><div>20</div><div>¥18,400</div>
</div>
<div class="hero-doc-row">
<div>剑南春水晶剑 52°</div><div>2</div><div>¥4,200</div>
</div>
<div class="hero-doc-row">
<div>拉菲传奇波尔多</div><div>10</div><div>¥17,800</div>
</div>
<div class="hero-doc-foot">
<div>合计</div><div>36</div><div>¥48,400</div>
</div>
<div style="margin-top: 20px; padding-top: 14px; border-top: 1px dashed var(--border-default); font-size: 11px; color: var(--fg-muted); font-family: var(--font-mono); letter-spacing: 0.02em;">
审批人 李建国 · 2026-05-23 14:32:08
</div>
</div>
<!-- Stamp -->
<div class="hero-stamp">
<svg class="ring" viewBox="0 0 130 130">
<defs>
<path id="stampRing" d="M 65, 65 m -50, 0 a 50,50 0 1,1 100,0 a 50,50 0 1,1 -100,0" />
</defs>
<text fontSize="8" fill="#8B2331" fontFamily="'Noto Sans SC', sans-serif" fontWeight="600" letterSpacing="3">
<textPath href="#stampRing" startOffset="2%">岩美 · 审批通过 · APPROVED · 岩美 ·</textPath>
</text>
</svg>
<div class="hero-stamp-core">
<div class="big">通过</div>
<div class="sub">APPROVED</div>
<div class="date">2026.05.23</div>
</div>
</div>
</div>
</div>
</section>
<!-- ============== BLOCK 1: State machine ============== -->
<section class="feat-block">
<div class="container feat-block-inner">
<div class="feat-text">
<div class="feat-tag"><i data-lucide="git-branch" class="icon"></i>统一状态机</div>
<h2>四种状态,<br/>覆盖所有业务单据</h2>
<p class="lead">
入库、出库、盘点 —— 全部走同一套状态:草稿 → 待审核 → 已审批 / 已拒绝。员工学一次,全员通用。
</p>
<ul class="feat-bullets">
<li>
<i data-lucide="lock" class="icon"></i>
<div>
<strong>提交后即锁定</strong>
从「草稿」进入「待审核」即不可编辑,避免审批人看到的与录入人提交的不一致。
</div>
</li>
<li>
<i data-lucide="zap" class="icon"></i>
<div>
<strong>状态机由后端事务驱动</strong>
状态变更与库存 / 账款变更在同一事务内,要么都成功,要么都回滚。
</div>
</li>
<li>
<i data-lucide="layers" class="icon"></i>
<div>
<strong>一套界面,三种单据复用</strong>
前端审批界面统一,节省培训成本,避免分模块状态差异。
</div>
</li>
</ul>
</div>
<div class="feat-visual">
<div class="state-machine">
<div class="state-machine-tabs">
<div class="state-tab active">入库单</div>
<div class="state-tab">出库单</div>
<div class="state-tab">盘点单</div>
</div>
<div class="state-machine-meta">stock_in_orders.status</div>
<div class="sm-diagram">
<div class="sm-node draft">
<div class="sm-bubble">
<i data-lucide="pencil" class="icon"></i>草稿
</div>
<small>draft</small>
</div>
<div class="sm-arrow">
<span class="sm-arrow-label">提交</span>
<svg viewBox="0 0 36 14"><line x1="0" y1="7" x2="30" y2="7" stroke="currentColor" strokeWidth="1.5"/><polyline points="26 3 32 7 26 11" fill="none" stroke="currentColor" strokeWidth="1.5"/></svg>
</div>
<div class="sm-node pending">
<div class="sm-bubble">
<i data-lucide="clock" class="icon"></i>待审核
</div>
<small>pending</small>
</div>
<div class="sm-arrow">
<span class="sm-arrow-label">审批</span>
<svg viewBox="0 0 36 14"><line x1="0" y1="7" x2="30" y2="7" stroke="currentColor" strokeWidth="1.5"/><polyline points="26 3 32 7 26 11" fill="none" stroke="currentColor" strokeWidth="1.5"/></svg>
</div>
<div class="sm-fork">
<div class="sm-node approved">
<div class="sm-bubble">
<i data-lucide="check" class="icon"></i>已审批
</div>
<small>approved</small>
</div>
<div class="sm-node rejected">
<div class="sm-bubble">
<i data-lucide="x" class="icon"></i>已拒绝
</div>
<small>rejected</small>
</div>
</div>
</div>
<div class="sm-applies">
<span>同一状态机适用于:</span>
<span class="sm-applies-pill"><i data-lucide="package-plus" class="icon"></i>入库单</span>
<span class="sm-applies-pill"><i data-lucide="package-minus" class="icon"></i>出库单</span>
<span class="sm-applies-pill"><i data-lucide="clipboard-check" class="icon"></i>盘点单</span>
</div>
</div>
</div>
</div>
</section>
<!-- ============== BLOCK 2: Auto-linking ============== -->
<section class="feat-block reverse">
<div class="container feat-block-inner">
<div class="feat-text">
<div class="feat-tag success"><i data-lucide="zap" class="icon"></i>自动联动</div>
<h2>按一次"通过"<br/>库存与账款都跟着动</h2>
<p class="lead">
审批通过不是一个"标记",而是一组真实的数据库写入。库存增减、应付应收、批次创建 —— 在同一事务内完成。
</p>
<ul class="feat-bullets">
<li>
<i data-lucide="database" class="icon"></i>
<div>
<strong>事务级一致性</strong>
底层用 <code style="font-family: var(--font-mono); font-size: 0.9em; background: var(--gray-100); padding: 1px 5px; border-radius: 3px;">FOR UPDATE</code> 锁住库存行,杜绝并发超卖。
</div>
</li>
<li>
<i data-lucide="link-2" class="icon"></i>
<div>
<strong>账款自动落地</strong>
入库审批 → 自动生成应付;出库审批 → 自动生成应收。挂在对应往来单位名下,可逐月对账。
</div>
</li>
<li>
<i data-lucide="git-merge" class="icon"></i>
<div>
<strong>批次自动建立</strong>
每笔入库审批通过即创建一个新批次,后续出库按 FIFO 自动扣减。
</div>
</li>
</ul>
</div>
<div class="feat-visual">
<div class="linking-visual">
<div class="linking-doc">
<div class="linking-doc-head">
<div>
<div class="linking-doc-id">RK20260523000007</div>
<div style="font-size: 11px; color: var(--fg-muted); margin-top: 2px; font-family: var(--font-mono);">36 瓶 · ¥48,400 · 待审核</div>
</div>
<button class="linking-doc-action">
<i data-lucide="check" class="icon"></i>审批通过
</button>
</div>
</div>
<div class="linking-arrow">
<span class="linking-arrow-label">
<i data-lucide="zap" class="icon"></i>事务内同步执行
</span>
</div>
<div class="linking-effects">
<div class="linking-effect">
<div class="linking-effect-label">
<i data-lucide="package" class="icon"></i>库存
</div>
<div class="linking-effect-num">+36 瓶</div>
<div class="linking-effect-from">A 仓 · 2,780 <span class="delta">→ 2,816</span></div>
</div>
<div class="linking-effect">
<div class="linking-effect-label">
<i data-lucide="wallet" class="icon"></i>应付账款
</div>
<div class="linking-effect-num">+¥48,400</div>
<div class="linking-effect-from">茅台经销华东 · 新增 1 笔</div>
</div>
<div class="linking-effect">
<div class="linking-effect-label">
<i data-lucide="layers" class="icon"></i>批次
</div>
<div class="linking-effect-num">+4 个</div>
<div class="linking-effect-from">L-2026-05-001 ~ L-2026-05-004</div>
</div>
<div class="linking-effect">
<div class="linking-effect-label">
<i data-lucide="scroll-text" class="icon"></i>库存流水
</div>
<div class="linking-effect-num">+4 条</div>
<div class="linking-effect-from">逐 SKU 写入 inventory_logs</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ============== BLOCK 3: Stock validation ============== -->
<section class="feat-block">
<div class="container feat-block-inner">
<div class="feat-text">
<div class="feat-tag danger"><i data-lucide="shield-alert" class="icon"></i>出库库存校验</div>
<h2>库存不足,<br/>审批直接被拦下</h2>
<p class="lead">
出库单审批前,系统按 SKU 实时核对库存。任一行不足,整单审批失败、库存与账款均不变。永远不会超卖。
</p>
<ul class="feat-bullets">
<li>
<i data-lucide="search-check" class="icon"></i>
<div>
<strong>逐行校验</strong>
按出库单每一行的 商品 × 仓库 × 数量 校验,失败明确指出是哪一行。
</div>
</li>
<li>
<i data-lucide="undo-2" class="icon"></i>
<div>
<strong>整单回滚</strong>
校验失败时单据状态回到「待审核」,无需重新录入。
</div>
</li>
</ul>
</div>
<div class="feat-visual">
<div class="validation-card">
<div class="validation-head">
<div class="validation-title">出库单 CK20260523000012 · 审批前校验</div>
<div class="validation-meta">客户 北辰大酒店 · B 仓</div>
</div>
<div class="validation-body">
<div class="validation-row head">
<div>商品</div><div>需出</div><div>库存</div><div>状态</div>
</div>
<div class="validation-row">
<div>茅台飞天 53° · 500ml×6</div>
<div class="qty-req">24</div>
<div class="qty-stock">148</div>
<div style="text-align: right;"><span style="background: var(--success-50); color: var(--success-700); font-size: 11px; padding: 2px 8px; border-radius: var(--radius-pill); font-weight: 500;">充足</span></div>
</div>
<div class="validation-row invalid">
<div>剑南春水晶剑 52°</div>
<div class="qty-req">20</div>
<div class="qty-stock">12</div>
<div style="text-align: right;"><span class="qty-shortage">短缺 8</span></div>
</div>
<div class="validation-row">
<div>拉菲传奇波尔多 · 750ml</div>
<div class="qty-req">6</div>
<div class="qty-stock">64</div>
<div style="text-align: right;"><span style="background: var(--success-50); color: var(--success-700); font-size: 11px; padding: 2px 8px; border-radius: var(--radius-pill); font-weight: 500;">充足</span></div>
</div>
<div class="error-toast">
<i data-lucide="x-circle" class="icon"></i>
<div>
<div class="error-toast-title">审批已拒绝 · 库存不足</div>
<div class="error-toast-body">
第 2 行「剑南春水晶剑」B 仓库存仅 12 瓶,本单需 20 瓶,短缺 8 瓶。请补足库存后重新提交,或修改出库数量。
</div>
</div>
</div>
<div class="api-response">
<span style="color: #888;">// HTTP/1.1 422 Unprocessable Entity</span><br/>
{<br/>
&nbsp;&nbsp;<span class="key">"ok"</span>: <span class="bool">false</span>,<br/>
&nbsp;&nbsp;<span class="key">"error"</span>: <span class="str">"insufficient_inventory"</span>,<br/>
&nbsp;&nbsp;<span class="key">"items"</span>: [<br/>
&nbsp;&nbsp;&nbsp;&nbsp;{ <span class="key">"sku"</span>: <span class="str">"XJ-330-024"</span>, <span class="key">"required"</span>: <span class="num">20</span>, <span class="key">"available"</span>: <span class="num">12</span> }<br/>
&nbsp;&nbsp;]<br/>
}
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ============== BLOCK 4: Audit log ============== -->
<section class="feat-block reverse">
<div class="container feat-block-inner">
<div class="feat-text">
<div class="feat-tag"><i data-lucide="file-clock" class="icon"></i>审计留痕</div>
<h2>每一步操作,<br/>都签着人名、贴着时间</h2>
<p class="lead">
从录入到结清,每一次状态变更都记录经办人、时间、决策、备注。是单据的完整生命周期,也是合规审计的完整证据。
</p>
<ul class="feat-bullets">
<li>
<i data-lucide="user-check" class="icon"></i>
<div>
<strong>谁动的、什么时候动的</strong>
14 个字段:actor / role / device / IP / 时间 / 备注 / 旧值 / 新值 / 原因 …
</div>
</li>
<li>
<i data-lucide="hard-drive" class="icon"></i>
<div>
<strong>永久保留</strong>
审计日志不会被任何角色(含超级管理员)删除或修改。
</div>
</li>
<li>
<i data-lucide="file-down" class="icon"></i>
<div>
<strong>可导出</strong>
按单据 / 时间段 / 经办人 任意组合筛选导出,应对税务、内审、合规检查。
</div>
</li>
</ul>
</div>
<div class="feat-visual">
<div class="audit-timeline">
<div class="audit-head">
<div class="audit-doc-id">RK20260523000007</div>
<div class="audit-doc-status">已审批</div>
</div>
<div class="audit-events">
<div class="audit-event create">
<div class="audit-event-marker"><i data-lucide="plus" class="icon"></i></div>
<div class="audit-event-body">
<div class="audit-event-action">创建草稿</div>
<div class="audit-event-meta">
<span><strong>王芳</strong> · 操作员</span>
<span class="time">2026-05-23 11:24:08</span>
<span>192.168.10.42 · 入库 PC</span>
</div>
</div>
</div>
<div class="audit-event create">
<div class="audit-event-marker"><i data-lucide="pencil" class="icon"></i></div>
<div class="audit-event-body">
<div class="audit-event-action">编辑明细</div>
<div class="audit-event-meta">
<span><strong>王芳</strong></span>
<span class="time">2026-05-23 13:02:51</span>
<span>修改 4 项 · 新增 1 项</span>
</div>
</div>
</div>
<div class="audit-event submit">
<div class="audit-event-marker"><i data-lucide="upload" class="icon"></i></div>
<div class="audit-event-body">
<div class="audit-event-action">提交审核</div>
<div class="audit-event-meta">
<span><strong>王芳</strong></span>
<span class="time">2026-05-23 13:15:22</span>
<span>状态 · 草稿 → 待审核</span>
</div>
</div>
</div>
<div class="audit-event approve">
<div class="audit-event-marker"><i data-lucide="check" class="icon"></i></div>
<div class="audit-event-body">
<div class="audit-event-action">审批通过</div>
<div class="audit-event-meta">
<span><strong>李建国</strong> · 管理员</span>
<span class="time">2026-05-23 14:32:08</span>
<span>库存 +36 · 应付 +¥48,400</span>
</div>
<div class="audit-event-comment">已核对数量与单价,可入库。</div>
</div>
</div>
<div class="audit-event settle">
<div class="audit-event-marker"><i data-lucide="wallet" class="icon"></i></div>
<div class="audit-event-body">
<div class="audit-event-action">应付结清</div>
<div class="audit-event-meta">
<span><strong>张磊</strong> · 财务</span>
<span class="time">2026-05-26 10:08:33</span>
<span>AP20260523000012 · 全额结清</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ============== BLOCK 6: Permission matrix ============== -->
<section class="feat-block reverse">
<div class="container feat-block-inner">
<div class="feat-text">
<div class="feat-tag"><i data-lucide="users" class="icon"></i>权限矩阵</div>
<h2>四级角色,<br/>各干各的事</h2>
<p class="lead">
系统内置四个角色,按岗位职责拆分审批权。最小权限原则 —— 不该看的看不到,不该签的签不了。
</p>
<ul class="feat-bullets">
<li>
<i data-lucide="user" class="icon"></i>
<div>
<strong>角色绑定门店</strong>
一个用户只属于一个门店(<code style="font-family: var(--font-mono); font-size: 0.9em; background: var(--gray-100); padding: 1px 5px; border-radius: 3px;">shop_id</code>),跨店访问数据天然隔离。
</div>
</li>
<li>
<i data-lucide="shield" class="icon"></i>
<div>
<strong>角色升降随时生效</strong>
管理员调整角色后,下一次请求即按新权限校验,无需重新登录。
</div>
</li>
<li>
<i data-lucide="eye" class="icon"></i>
<div>
<strong>只读角色可看不可改</strong>
适合财务、税务、内审岗位 —— 看见全部数据,但不能产生任何变更。
</div>
</li>
</ul>
</div>
<div class="feat-visual">
<div class="perm-matrix">
<div class="perm-row head">
<div>角色</div>
<div>查看</div>
<div>录入</div>
<div>审批</div>
<div>设置</div>
</div>
<div class="perm-row">
<div class="perm-role">超级管理员<small>superadmin · 系统最高</small></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
</div>
<div class="perm-row">
<div class="perm-role">管理员<small>admin · 门店负责人</small></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
</div>
<div class="perm-row">
<div class="perm-role">操作员<small>operator · 日常录入</small></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
<div class="perm-cell no"><i data-lucide="minus" class="icon"></i></div>
</div>
<div class="perm-row">
<div class="perm-role">只读<small>readonly · 财务 / 内审</small></div>
<div class="perm-cell yes"><i data-lucide="check" class="icon"></i></div>
<div class="perm-cell no"><i data-lucide="minus" class="icon"></i></div>
<div class="perm-cell no"><i data-lucide="minus" class="icon"></i></div>
<div class="perm-cell no"><i data-lucide="minus" class="icon"></i></div>
</div>
</div>
<div style="margin-top: 14px; font-size: 12px; color: var(--fg-muted); display: flex; gap: 14px; padding: 0 4px;">
<span style="display: flex; align-items: center; gap: 6px;">
<i data-lucide="check" style="width: 12px; height: 12px; color: var(--success-500);"></i>允许
</span>
<span style="display: flex; align-items: center; gap: 6px;">
<i data-lucide="minus" style="width: 12px; height: 12px; color: var(--gray-300);"></i>禁止
</span>
</div>
</div>
</div>
</section>
<!-- ============== Use cases ============== -->
<section class="section" style="background: var(--bg-surface); border-bottom: 1px solid var(--border-subtle);">
<div class="container">
<p class="eyebrow">典型场景</p>
<h2 style="font-size: 36px; font-weight: 600; color: var(--brand-900); margin: 0 0 12px; letter-spacing: var(--tracking-cn-display);">
审核驱动业务流,落到实际操作里是什么样
</h2>
<p style="font-size: var(--text-lg); color: var(--fg-muted); max-width: 640px; margin: 0;">
三个常见门店场景,看审核流如何把日常工作中的失误拦在事前。
</p>
<div class="usecases-grid">
<div class="usecase-card">
<i data-lucide="package-x" class="icon"></i>
<h4>避免超卖发不了货</h4>
<p>大客户来订 24 瓶飞天,操作员录了出库单。审批时系统提示某 SKU 库存只剩 12 瓶 —— 提前发现,先补货后出库。</p>
<div class="quote">"以前是发了货才发现没库存,半夜紧急调货。现在审批就拦下,省事多了。"</div>
</div>
<div class="usecase-card">
<i data-lucide="file-search" class="icon"></i>
<h4>财务来对账,3 秒定位</h4>
<p>财务问"这批拉菲是哪个供应商进的,谁审的",打开单据点击「审计链」,从草稿、提交、审批到结清的每一步都列得清清楚楚。</p>
<div class="quote">"以前要翻三个 Excel 表对照,现在一张图就讲完了。"</div>
</div>
<div class="usecase-card">
<i data-lucide="rotate-ccw" class="icon"></i>
<h4>录错了不慌</h4>
<p>审批通过的单据不可撤销,但可补录一张方向相反的修正单提交审核,两笔记录都完整保留在审计链中,库存与账款同步修正。</p>
<div class="quote">"原始数据保留,修正也留痕,内审完全不会有问题。"</div>
</div>
</div>
</div>
</section>
<!-- ============== Final CTA ============== -->
<section>
<div class="container" style="padding-top: 80px;">
<div class="cta-strip">
<div>
<h2>每一笔库存变动都有人负责,<br/>就从一次审批开始。</h2>
<p>30 天免费试用,无需绑定支付方式。所有审批与审计数据可随时导出。</p>
</div>
<div class="cta-strip-actions">
<a href="/register/" class="btn btn-primary btn-lg">
免费开通试用<i data-lucide="arrow-right" class="icon"></i>
</a>
<a href="/features/inventory.html" class="btn btn-secondary btn-lg">
← 上一个功能:库存管理
</a>
</div>
</div>
</div>
</section>
<footer>
<div class="container">
<div class="footer-grid">
<div class="footer-brand">
<img src="/assets/logo-full.svg" alt="岩美" />
<p>为酒行与酒店设计的库存、审核、财务一体化管理平台。</p>
<div class="footer-contact">
<div><a href="mailto:yammy2023@163.com">yammy2023@163.com</a></div>
</div>
</div>
<div class="footer-col">
<h5>产品</h5>
<ul>
<li><a href="/#modules">核心模块</a></li>
<li><a href="/#platforms">多端覆盖</a></li>
<li><a href="/#reports">数据洞察</a></li>
<li><a href="/#pricing">价格方案</a></li>
<li><a href="/download/">版本更新</a></li>
</ul>
</div>
<div class="footer-col">
<h5>资源</h5>
<ul>
<li><a href="/docs/">使用手册</a></li>
<li><a href="/download/">下载客户端</a></li>
</ul>
</div>
<div class="footer-col">
<h5>客户支持</h5>
<ul>
<li><a href="/#faq">常见问题</a></li>
<li><a href="mailto:yammy2023@163.com">联系我们</a></li>
</ul>
</div>
<div class="footer-col">
<h5>公司</h5>
<ul>
<li><a href="/register/">注册门店</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<div>© 2026 岩美科技 · 保留所有权利</div>
</div>
</div>
</footer>
<script src="/assets/nav.js"></script>
</body>
</html>