<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Claude Fable 5 on idiotfan</title><link>https://idiotfan.wang/tags/claude-fable-5/</link><description>Recent content in Claude Fable 5 on idiotfan</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 22 Aug 2026 18:00:00 +0800</lastBuildDate><atom:link href="https://idiotfan.wang/tags/claude-fable-5/index.xml" rel="self" type="application/rss+xml"/><item><title>小微餐饮用工合规改造：从 10 份冗余合同到「最小必要包」</title><link>https://idiotfan.wang/posts/damon-labor-contract-compliance/</link><pubDate>Sat, 22 Aug 2026 18:00:00 +0800</pubDate><guid>https://idiotfan.wang/posts/damon-labor-contract-compliance/</guid><description>面对律所模板给出的 10 套繁琐用工附件，小微餐吧根本无法落地。我是如何利用 Claude 梳理劳动法底线，将合同精简为全职 2 份、兼职 1 份的「最小必要合规包」。</description><content:encoded><![CDATA[<p>在十几个人的小微精酿餐吧做用工合规，是一件极具挑战的事情。</p>
<p>传统律所或大厂人事法务给出的方案，往往一上来就是一份主合同外加 10 个编号配套附件：</p>
<ul>
<li>配套 1：员工手册与规章制度</li>
<li>配套 2：岗位职责说明书</li>
<li>配套 3：绩效考核与试用期规定</li>
<li>配套 4：考勤与加班审批制度</li>
<li>配套 5：知识产权与账号归属条款</li>
<li>配套 6：专项保密协议</li>
<li>配套 7：非全日制（兼职）协议</li>
<li>配套 8：竞业限制协议</li>
<li>配套 9：专项培训服务期协议</li>
<li>配套 10：离职交接与保密交还确认书</li>
</ul>
<p>现实情况是：<strong>前厅服务员、调酒师和厨师根本不会耐着性子签完这十几份密密麻麻的文件，店长也根本没有精力去逐一归档管理</strong>。过于繁重的法务形式，最后的结果必然是全员流于形式、甚至干脆不签，导致法律风险反而完全敞口。</p>
<p>最近我们利用 <strong>Claude Fable 5</strong> 针对大梦的用工制度做了一次全面的合规梳理，核心目标是**「保底线、去冗余」<strong>，最终将整套体系精简为员工只需签 1~2 份文件的</strong>「最小必要合规包」**。</p>
<p>这篇文章记录这次梳理的核心逻辑与避坑要点。</p>
<hr>
<h2 id="一-警惕提示词污染死守真实的业务边界">一、 警惕「提示词污染」：死守真实的业务边界</h2>
<p>在利用 AI 协助起草和审查法务合规文件时，我们踩过一个非常典型的坑：<strong>通用模板的提示词污染</strong>。</p>
<p>在最初引入的一份标准用工合规指南中，某些通用示例提及了「私教课消」、「健身教练」等字眼。LLM 在随后的跨文件修订中，将这些术语自动扩散到了 8 份配套合同中，甚至把前厅主管的考核写成了「课消完成率」。</p>
<p><strong>核心经验</strong>：</p>
<ul>
<li>在让 AI 处理法律和人事文件前，必须在系统规则中建立<strong>铁一般的业务边界</strong>：本店属于<strong>精酿啤酒 + 餐饮 + 酒吧</strong>业态，岗位仅限侍酒师、调酒师、出品厨师、店长及前厅运营。</li>
<li>任何脱离真实业务场景的条款，不仅在仲裁时毫无说服力，还会让一线员工对制度产生荒谬感。</li>
</ul>
<hr>
<h2 id="二-实体餐饮的-4-大合规底线与设计策略">二、 实体餐饮的 4 大合规底线与设计策略</h2>
<p>针对小微餐饮的高频劳动争议点，我们在合同中重点固化了 4 个合法合规的落地方案：</p>
<h3 id="1-社保放弃与风险对冲">1. 社保放弃与风险对冲</h3>
<ul>
<li><strong>法律现实</strong>：根据最新劳动争议司法解释，员工自愿出具的「自愿放弃社保承诺书」在法律上均属无效，企业无法免除法定缴纳义务。</li>
<li><strong>降损设计</strong>：对于因个人原因确实无法在本地参保的员工，废弃原先直接违法的放弃承诺书，改设《社保代偿补贴暨不当得利返还协议》：
<ul>
<li>将公司发放的社保补贴在工资条上<strong>独立单列</strong>，严禁与基本工资混同。</li>
<li>明确约定该款项专款专用于员工社保代偿；若日后发生补缴诉求，已领取的代偿款应作为不当得利予以返还或在补缴款中依法抵扣。</li>
</ul>
</li>
</ul>
<h3 id="2-工作时间与-9-小时排班合规">2. 工作时间与 9 小时排班合规</h3>
<ul>
<li><strong>餐饮排班现状</strong>：餐饮晚班常见排班为 15:00~24:00，跨度共 9 小时。</li>
<li><strong>工时口径明确</strong>：合同明确约定每日包含 <strong>1 小时脱离工作岗位的自由就餐与休息时间（不计入有效工时）</strong>，实际日工时为标准 8 小时。</li>
<li><strong>排班红线</strong>：若每周出勤满 6 天（48 小时），超出 40 小时部分必须依法支付加班费或安排等额调休；或者向人社部门正式申报「综合计算工时制」。</li>
</ul>
<h3 id="3-非全日制用工兼职的合规红线">3. 非全日制用工（兼职）的合规红线</h3>
<p>对于高峰期的兼职打酒师与周末钟点工，必须严格遵循非全日制法律特征：</p>
<ul>
<li><strong>工时硬约束</strong>：同一用人单位每日不得超过 4 小时，每周累计不得超过 24 小时。</li>
<li><strong>法定最低时薪</strong>：严格执行当地最新非全日制小时最低工资标准。</li>
<li><strong>工伤先行投保</strong>：<strong>在兼职员工上岗第一天前，必须在人社系统完成单工伤险参保</strong>，杜绝工伤事故导致的赔偿风险。</li>
<li><strong>随时解聘</strong>：双方均可随时通知终止用工，企业依法无需支付经济补偿金。</li>
</ul>
<hr>
<h2 id="三-重构落地最小必要合规包">三、 重构落地：「最小必要合规包」</h2>
<p>为了让合规能够 100% 执行到位，我们通过多智能体审议，将原本散落的 10 个附件进行了物理级合并：</p>
<pre tabindex="0"><code>                    【历史冗余架构：10+ 份文件】
                                 │
                 ┌───────────────┴───────────────┐
                 ▼                               ▼
       [保密协议] 并入 主合同            [考勤加班制度] 并入 员工手册
                                 │
                                 ▼
                    【精简后：最小必要合规包】
 ┌─────────────────────────────────────────────────────────────┐
 │ 1. 《全日制劳动合同》（内嵌保密、知识产权与送达条款）        │
 │ 2. 《员工手册与规章制度》（内嵌严重违纪清单、考勤排班与公示）  │
 │ 3. 《非全日制用工协议》（针对小时工与兼职）                 │
 │ 4. 《社保代偿补贴与返还确认书》（特定未参保人员专用）          │
 └─────────────────────────────────────────────────────────────┘
</code></pre><h3 id="实际签署流">实际签署流：</h3>
<ol>
<li><strong>全职员工入职</strong>：只需签署 <strong>2 份文件</strong>（劳动合同 + 员工手册送达与签收表）。</li>
<li><strong>兼职人员入职</strong>：只需签署 <strong>1 份文件</strong>（非全日制协议）。</li>
<li><strong>特定情况</strong>：无法参保人员加签 1 份代偿确认书。</li>
</ol>
<hr>
<h2 id="结语">结语</h2>
<p>在商业世界里，<strong>真正高水平的合规，不是把文件写得无限冗长、把责任推卸得干干净净，而是找到法律底线与商业执行力之间的最大公约数</strong>。</p>
<p>把复杂的法务条款提炼为一线员工能看懂、店长能执行、仲裁能站得住脚的「最小必要包」，才是小微实体企业走向稳健经营最务实的第一步。</p>
<hr>
<h3 id="-项目环境与模型署名">🛠️ 项目环境与模型署名</h3>
<ul>
<li><strong>法务条款审议与精简模型</strong>：Anthropic <strong>Claude Fable 5</strong>（桌面端默认模型）</li>
<li><strong>审议工作流平台</strong>：<strong>Claude Desktop 桌面端</strong>（多智能体审议合并模式）</li>
<li><strong>交付成果</strong>：大梦用工合规《最小必要-规避风险》4 份核心文件包 + 劳动合同修订前后对照表</li>
</ul>
]]></content:encoded></item><item><title>用代码做商业餐饮海报：字体子集、GrabCut 抠图与无损导出避坑指南</title><link>https://idiotfan.wang/posts/maybelab-poster-web-export-pipeline/</link><pubDate>Sat, 22 Aug 2026 17:00:00 +0800</pubDate><guid>https://idiotfan.wang/posts/maybelab-poster-web-export-pipeline/</guid><description>丢掉 Photoshop，用纯 HTML/CSS 做商业级餐饮海报：从 html2canvas 到 Chrome Headless、字体子集化豆腐块排查、OpenCV GrabCut 菜盘智能抠图的全套踩坑实录。</description><content:encoded><![CDATA[<p>在给可能实验室（大梦餐饮）制作午市特惠、台风天畅饮、球赛之夜等一系列商业促销海报时，我做了一个决定：<strong>不打开 Photoshop，全部用纯 HTML + CSS + Python 脚本来做</strong>。</p>
<p>用 Web 技术做海报有极大的优势：布局可以用 Flexbox/Grid 极速调整、文案改动只需改一行字符串、多尺寸适配通过 CSS 变量瞬间完成，而且全套物料可以纳入 Git 版本管理。</p>
<p>但在真正借助 <strong>Claude Fable 5</strong> 与 <strong>Grok Imagine 图像模型</strong> 将网页无损导出为 300DPI 商业级印刷海报的过程中，我们踩遍了前端渲染、字体子集化、图像抠图与色彩空间的几乎所有暗坑。</p>
<p>这篇文章把这些工程细节与解决方案彻底拆解，给同样想用代码做设计的朋友一份避坑指南。</p>
<hr>
<h2 id="一-导出引擎的演进从-html2canvas-到-chrome-headless">一、 导出引擎的演进：从 html2canvas 到 Chrome Headless</h2>
<p>网页在浏览器里看着很美，但要导出一张像素完美（Pixel Perfect）的 1600×2400 高清大图，首先要选对渲染引擎。</p>
<h3 id="1-html2canvas-的翻车表现">1. html2canvas 的「翻车」表现</h3>
<p>最初我们尝试了老牌的 <code>html2canvas</code>，结果导出的图片与原页面差异巨大：</p>
<ul>
<li><code>filter: drop-shadow(...)</code> 阴影几乎全丢。</li>
<li>径向渐变（Radial Gradient）在 Canvas 绘制时变成了生硬的同心圆硬聚光。</li>
<li>精细的金边暗纹和半透明毛玻璃背景变得惨白模糊。</li>
</ul>
<h3 id="2-html-to-imagesvg-foreignobject-路线">2. html-to-image（SVG foreignObject 路线）</h3>
<p>随后我们切换到了 <code>html-to-image</code> 库。它利用浏览器的 <code>&lt;foreignObject&gt;</code> 将 DOM 结构直接转化为 SVG，再绘制成 PNG，真正做到了「浏览器里看什么，导出来就是什么」。</p>
<h3 id="3-最强终局方案chrome-headless-命令行直出">3. 最强终局方案：Chrome Headless 命令行直出</h3>
<p>在批量生成物料时，最稳健的做法甚至不需要在页面里挂载任何导出 JS，直接用本地 Google Chrome 的无头模式截图：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="s2">&#34;/Applications/Google Chrome.app/Contents/MacOS/Google Chrome&#34;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">  --headless<span class="o">=</span>new <span class="se">\
</span></span></span><span class="line"><span class="cl">  --screenshot<span class="o">=</span><span class="s2">&#34;海报_1600x2400.png&#34;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">  --window-size<span class="o">=</span>800,1200 <span class="se">\
</span></span></span><span class="line"><span class="cl">  --force-device-scale-factor<span class="o">=</span><span class="m">2</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">  --hide-scrollbars <span class="se">\
</span></span></span><span class="line"><span class="cl">  <span class="s2">&#34;file://</span><span class="nv">$PWD</span><span class="s2">/午餐套餐海报.html&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>通过 <code>--force-device-scale-factor=2</code>，浏览器会以 Retina 双倍像素密度渲染，零网络依赖，瞬间得到 1600×2400 的高保真图片。</p>
<hr>
<h2 id="二-字体子集化与豆腐块幽灵-bug">二、 字体子集化与「豆腐块□」幽灵 Bug</h2>
<p>为了保证海报在任何离线环境下打开都拥有精美的衬线字体（如 Noto Serif SC 与 Cormorant Garamond），我们将字体通过 Google Fonts <code>text=</code> API 抓取字形子集，转为 Base64 内嵌进 HTML。</p>
<p>但这里埋下了两个极其隐蔽的排版陷阱：</p>
<h3 id="1-改动文案后的豆腐块危机">1. 改动文案后的「豆腐块」危机</h3>
<p>当我们将菜名从原先的通用名改为「泰式打抛猪肉饭」、「夏威夷菠萝牛肉饭」后，网页在浏览器里渲染正常（触发了本地系统字体兜底），但<strong>导出的 PNG 却在「泰、式、夏、菠」等新字上全部显示为方块豆腐□</strong>！</p>
<p><strong>根因</strong>：内嵌的 Base64 字体子集只包含老版文案的文字。
<strong>解法</strong>：编写自动化脚本，每次修改文案后，自动提取 HTML 中全部可见汉字、英文字母与标点符号，利用 <code>fonttools</code> 和 <code>brotli</code> 重新生成最小化的 woff2 子集并热替换到 CSS 中。</p>
<h3 id="2-macos-宋体-900-缺失符号的渲染-bug">2. macOS 宋体 900 缺失「¥」符号的渲染 Bug</h3>
<p>在制作价格标签时，标题采用 <code>Songti SC</code>（宋体）搭配 <code>font-weight: 900</code>。我们发现页面上的价格符号 <code>¥</code> <strong>莫名其妙地消失了，变成了一片空白</strong>。</p>
<p><strong>排查发现</strong>：macOS 自带的宋体在字重为 900（Heavy）时，其字符映射表中标准半角人民币符号 <code>U+00A5 (¥)</code> 存在字形空白缺失的缺陷。
<strong>解决方案</strong>：文案中强制使用全角人民币符号 <code>U+FFE5 (￥)</code>，或在 CSS 中设置字体回退链优先使用 <code>PingFang SC</code> 渲染金额符号。</p>
<hr>
<h2 id="三-opencv-grabcut-菜盘抠图与等面积对齐">三、 OpenCV GrabCut 菜盘抠图与等面积对齐</h2>
<p>在午市套餐海报中，需要展示三款主食（打抛饭、番茄肉酱饭、菠萝牛肉饭）的高清盘装实拍图。</p>
<p>直接给实拍照片抠图并排版，会遇到一系列算法与视觉问题：</p>
<pre tabindex="0"><code>[实拍带背景菜品] ──► [OpenCV GrabCut 保留盘沿] ──► [几何均值面积等比缩放] ──► [统一暖白平衡调色] ──► [内嵌 WebP]
</code></pre><h3 id="1-为什么-ai-抠图模型rembg--birefnet会失效">1. 为什么 AI 抠图模型（rembg / BiRefNet）会失效？</h3>
<ul>
<li><code>rembg</code>（基于 u2net/isnet）：会将浅色/米白色的陶瓷盘子误判为背景，抠完只剩下一堆悬空的肉末和米饭，完全失去了餐饮出品的质感。</li>
<li><code>BiRefNet</code>：边缘识别精细，但在 CPU 上处理单张图耗时超过 12 分钟，无法进行快速迭代。</li>
</ul>
<h3 id="2-解决方案opencv-grabcut-智能保留整盘">2. 解决方案：OpenCV GrabCut 智能保留整盘</h3>
<p>我们改用 OpenCV 的 <strong>GrabCut 算法（矩形初始化，边框 Inset 3%）</strong>：</p>
<ul>
<li>对于盘子与阴影同色的疑难图片（如灰盘配灰色桌面），先对盘芯做腐蚀运算（Erosion），拟合出精确的椭圆轮廓（<code>cv2.fitEllipse</code>），再等比放大回盘沿，完美裁掉外部多余投影，完整保留陶瓷盘子的边缘光泽。</li>
</ul>
<h3 id="3-三张主食图的等面积对齐">3. 三张主食图的「等面积对齐」</h3>
<p>三张菜品如果简单地以正方形长轴缩放，扁平的椭圆盘子在视觉上会显得极其单薄瘦小。</p>
<p>我们计算了三张盘子的<strong>几何均值面积（$\text{Geomean} = \sqrt{W \times H}$）</strong>，按等面积缩放后贴入统一的 860×647 画布底部居中。这样在 CSS 中只需固定 <code>max-width: 206px</code>，三款主食在视觉体量上就达到了完美的平衡。</p>
<h3 id="4-颜色与方向标准化">4. 颜色与方向标准化</h3>
<ul>
<li><strong>白平衡校准</strong>：提取每张照片盘子的最高白点，通过色彩矩阵统一映射到暖白基准值 <code>(236, 232, 223)</code>，并统一增加 7% 对比度与自然饱和度。</li>
<li><strong>PIL EXIF 方向坑</strong>：手机拍摄的原图常带有 <code>Orientation: 6</code>（顺时针 90° 旋转），PIL 的 <code>Image.open</code> 默认不会自动应用 EXIF 旋转矩阵。处理前必须显式调用 <code>ImageOps.exif_transpose(im)</code>，否则抠出来的菜品全部是倒挂的。</li>
</ul>
<hr>
<h2 id="结语">结语</h2>
<p>从一行 HTML 标签，到一张可以直接送到印刷厂或挂在商场 LED 巨幕上的高清海报，中间横跨了排版引擎、字体编码、色彩校准与图像算法的诸多细节。</p>
<p>代码赋予设计的，不仅是像素级别的精准控制力，更是一种<strong>可复现、可自动化、可规模化交付的工程确定性</strong>。</p>
<hr>
<h3 id="-项目环境与模型署名">🛠️ 项目环境与模型署名</h3>
<ul>
<li><strong>主导架构与排版代码生成</strong>：Anthropic <strong>Claude Fable 5</strong>（桌面端默认模型）</li>
<li><strong>商业海报主题背景生成</strong>：xAI <strong>Grok Imagine</strong>（grok.com/imagine 网页版 + <code>grok-imagine-image-2.0</code> API）</li>
<li><strong>客户端环境</strong>：<strong>Claude Desktop 桌面端</strong></li>
<li><strong>图像与排版工具链</strong>：OpenCV 4 (<code>GrabCut</code>, <code>fitEllipse</code>) + Python Pillow (<code>ImageOps.exif_transpose</code>) + Google Fonts API (<code>fonttools</code>, <code>brotli</code>) + <code>html-to-image</code> + Chrome Headless 截图管线</li>
</ul>
]]></content:encoded></item><item><title>酒吧做工作日晚市畅吃：边际成本精算、AI 物料管线与腾讯文档在线协同</title><link>https://idiotfan.wang/posts/damon-buffet-night-marketing-and-math/</link><pubDate>Sat, 22 Aug 2026 16:00:00 +0800</pubDate><guid>https://idiotfan.wang/posts/damon-buffet-night-marketing-and-math/</guid><description>把一家精酿餐吧冷清的周日至周四晚市变成增量现金流：从打破 50% 毛利率死脑筋的四档阶梯定价，到调用 Grok/xAI 批量生成水牌与户外 6912 巨屏素材的全流程实操。</description><content:encoded><![CDATA[<p>实体餐饮经营最怕的是什么？<strong>固定成本在空转</strong>。</p>
<p>在大梦滨江店的总账分析中，我们发现了一个极其明显的规律：<strong>周五六「周末夜」的日均营业额，接近周日至周四「工作日」的两倍</strong>（具体金额已脱敏）。</p>
<p>然而，每月雷打不动的商场租金和晚班员工薪资，无论客人来不来都是按天硬性扣除的沉没成本。</p>
<p>为了把周日至周四 17:00–20:00 的晚市流量做起来，我们策划了「<strong>工作日晚餐畅吃 · 微醺社交夜</strong>」活动。这篇文章将复盘整个项目的核心推演：<strong>如何用 Claude Fable 5 建立精确的边际成本模型重构四档定价、如何通过腾讯文档 API 实时协同落地、以及如何调用 xAI Grok Imagine 自动化生成从手机海报到 6912 像素户外 LED 巨屏的全套视觉物料。</strong></p>
<hr>
<h2 id="一-算透边际成本打破全成本思维的四档阶梯定价">一、 算透边际成本：打破「全成本思维」的四档阶梯定价</h2>
<p>很多餐饮营销方案往往死在粗暴的「成本估算」上。在最初收到的活动方案草案中，存在两个严重逻辑误区：</p>
<ol>
<li><strong>盲目假定 50% 毛利率</strong>：草案认为精酿酒水均价 50 元，成本要占 25 元，于是设了一条「单客综合成本不可超过 45 元」的硬红线。</li>
<li><strong>忽视了真实采购价</strong>：没有把后厨批发的真实原料价代入计算。</li>
</ol>
<h3 id="1-真实原料成本反推">1. 真实原料成本反推</h3>
<p>我们调取了总账审计审定的各部门原料率，并结合实际销售牌价做了加权核算（具体数值属经营机密，此处只讲结论）：</p>
<ul>
<li>门店精酿的真实加权均价，<strong>远高于草案拍脑袋假设的均价</strong>。</li>
<li>按原料率反推，<strong>精酿与经典鸡尾酒的真实边际成本只有草案估计的一半以下</strong>。</li>
<li>这意味着：正价好酒完全可以放进套餐和互动奖品池，完全无需使用廉价工业啤酒冲量。</li>
</ul>
<h3 id="2-后厨真实采购单人均成本">2. 后厨真实采购单人均成本</h3>
<p>结合后厨当月真实进货台账逐项代入核算（采购单价属供应链机密，此处不展开）：</p>
<ul>
<li>在 8~10 个 SKU、主食大锅化、荤菜限量补给的操作纪律下，<strong>单人畅吃的餐食边际成本可以被稳定锁定在一个可控区间</strong>——这正是低价引流档仍有毛利空间的底气。</li>
</ul>
<h3 id="3-四档差异化定价体系">3. 四档差异化定价体系</h3>
<p>基于「增量收益」思维（房租和晚班人力已是沉没成本，每晚新增的活动增量支出只有小额奖品成本，<strong>多来两三位客人即可覆盖，之后每位都是净增量利润</strong>），我们重塑了四档阶梯价格（定价为对外公开物料口径；内部成本与毛利目标已脱敏）：</p>
<table>
	<thead>
			<tr>
					<th>档位</th>
					<th>定价（元）</th>
					<th>包含权益</th>
					<th>定位策略</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>A 档</strong></td>
					<td><strong>¥59</strong></td>
					<td>单人畅吃（不含酒）</td>
					<td>极低门槛引流下班干饭族</td>
			</tr>
			<tr>
					<td><strong>B 档</strong></td>
					<td><strong>¥79</strong></td>
					<td>单人畅吃 + 精酿 1 杯</td>
					<td><strong>全店主推爆款</strong>（微醺入门）</td>
			</tr>
			<tr>
					<td><strong>C 档</strong></td>
					<td><strong>¥99</strong></td>
					<td>单人畅吃 + 精酿 2 杯</td>
					<td>精酿爱好者性价比之选</td>
			</tr>
			<tr>
					<td><strong>D 档</strong></td>
					<td><strong>¥129</strong></td>
					<td>单人畅吃 + 精酿 1 杯 + 鸡尾酒 1 杯（微醺双饮）</td>
					<td>高客单双饮组合，主推二人桌</td>
			</tr>
	</tbody>
</table>
<p>考核口径也相应分档：低价档按「餐食综合成本红线」控制；两杯酒的高价档在数学上必然超线，<strong>改按每客绝对毛利考核</strong>。</p>
<hr>
<h2 id="二-腾讯文档-api-在线就地重构13-章数字化落地">二、 腾讯文档 API 在线就地重构：13 章数字化落地</h2>
<p>老板在审阅方案时提出了严格要求：<strong>「必须条理清晰、数字前置，并且不要反复新建文档破坏在线链接」</strong>。</p>
<p>为此，我们通过脚本调用腾讯文档 OpenAPI 对在线策划文档进行了原地结构重组：</p>
<h3 id="1-解决-doc-api-的硬约束">1. 解决 Doc API 的硬约束</h3>
<ul>
<li><strong>标题段落不可删</strong>：一级标题无法删除，只能通过 <code>replace_text</code> 原地替换标题文本。</li>
<li><strong>逆序重构法</strong>：为了防止前段内容增删导致后段字符偏移漂移，重构脚本从第 13 章向第 1 章<strong>从后往前</strong>逐章执行替换。</li>
<li><strong>章节重整</strong>：最终将文档梳理为《一页总览（毛利与回本测算前置）》、《四档套餐》、《成本红线》、《每晚时间表》、《复盘与续期》等 13 个标准化章节。</li>
</ul>
<h3 id="2-搭建-19-字段每日复盘智能表">2. 搭建 19 字段每日复盘智能表</h3>
<p>在腾讯文档 SmartSheet 中配置了每日复盘表，预填首期 4 周（周日至周四共 20 晚）的跟踪行：</p>
<ul>
<li>字段涵盖：当日四档售卖分布、总客流、增量新客数、复购券核销率、后厨备餐损耗率等。</li>
</ul>
<hr>
<h2 id="三-ai-视觉管线从-grok-生图到-6912-巨屏素材">三、 AI 视觉管线：从 Grok 生图到 6912 巨屏素材</h2>
<p>一家实体餐吧的活动物料需要覆盖多种物理媒介。如果全部依靠平面设计师逐一制图，耗时至少数天。</p>
<p>我们打通了一条以 <strong>AI 图像生成 + 代码排版 + Chrome Headless 矢量渲染</strong> 的自动化管线：</p>
<h3 id="1-钻通-grok-cli-凭据调用-xai-图像-api">1. 钻通 Grok CLI 凭据调用 xAI 图像 API</h3>
<p>通过解析 <code>~/.grok/auth.json</code> 中的 OIDC Access Token，编写了 <code>grok_imagine.py</code> 驱动：</p>
<ul>
<li>直连 <code>api.x.ai/v1/images/generations</code>，支持 <code>aspect_ratio</code>（2:3, 1:2, 2:1）与 2K 分辨率输出（1664×2496）。</li>
<li>实现 Refresh Token 自动轮换持久化，解决了 CLI 缺乏图像子命令但底层凭据通用的问题。</li>
</ul>
<h3 id="2-商业餐饮视觉的-prompt-调教经验">2. 商业餐饮视觉的 Prompt 调教经验</h3>
<p>在生成餐饮底图时，我们总结了几条极其关键的实战经验：</p>
<ul>
<li><strong>拒绝通用模版菜</strong>：Prompt 必须显式排除后厨不做的主题（如 <code>no skewers, no kebabs, no tacos</code>），加入真实的精酿酒头阵列与果盘组合。</li>
<li><strong>去除暗黑遮罩</strong>：餐饮海报忌讳大面积黑灰色，应采用深琥珀暖棕（<code>rgba(74,34,8)</code> 系）搭配奶油白卡片（<code>#FBF2DE</code>），烘托温暖诱人的食欲感。</li>
</ul>
<h3 id="3-多媒介物料全矩阵输出">3. 多媒介物料全矩阵输出</h3>
<pre tabindex="0"><code>                   ┌───► 手机海报 (1600×2400 PNG) ── 微信群发/朋友圈推广
                   │
[Grok 2K 底图] ────┼───► 门前水牌 (60×149cm PDF/PNG) ── 商场外街迎宾水牌
                   │
                   └───► 双向户外 LED 大屏 (6912×3456 PNG) ── 街角与下沉广场
</code></pre><ul>
<li><strong>手机海报（1600×2400）</strong>：双 Logo 36px 绝对等高对齐，纯黑阈值抠出微信收款码体，底端留白避开金属边框。</li>
<li><strong>门前立地水牌（60×149cm）</strong>：根据商场标准制作 <code>@page size 60cm 149cm</code> 矢量 PDF，底部融入商场铺位与外街动线导视。</li>
<li><strong>户外 LED 巨屏（6912×3456）</strong>：生成 2:1 超宽画幅底图（左侧 40% 留白，右侧 60% 出品），并自动生成正向与镜像双版本，完美适配连廊双向行人的视线流动。</li>
</ul>
<hr>
<h2 id="结语">结语</h2>
<p>实体店的营销从来不是靠拍脑袋定个低价就能成功。</p>
<p>从<strong>看清每一分原料成本的算账逻辑</strong>，到<strong>利用 AI 快速打通线上协作与全套线下视觉物料</strong>，技术在实体商业中的价值，正是帮助经营者在最短的时间内、用最低的试错成本，将一个商业想法转化为严密闭环的执行力。</p>
<hr>
<h3 id="-项目环境与模型署名">🛠️ 项目环境与模型署名</h3>
<ul>
<li><strong>主导策划与文档重构</strong>：Anthropic <strong>Claude Fable 5</strong>（桌面端默认模型）</li>
<li><strong>商业餐饮图像生成</strong>：xAI <strong>Grok Imagine</strong>（<code>grok-imagine-image-2.0</code> / <code>grok-imagine-image-quality</code>，复用 grok CLI 的 OIDC 凭据直连 <code>api.x.ai</code>）</li>
<li><strong>客户端与工作流支持</strong>：<strong>Claude Desktop 桌面端</strong>（定制 <code>grok-imagine</code> Skill + <code>tencent-docs</code> MCP）</li>
<li><strong>协同与排版工具链</strong>：腾讯文档 在线Doc/SmartSheet API (<code>mcporter</code>) + Python 3 (<code>grok_imagine.py</code>) + Chrome Headless 矢量打印引擎</li>
</ul>
]]></content:encoded></item><item><title>给精酿连锁店做自动化薪酬引擎：从手写考勤、多维营收聚合到 HTML 工资单</title><link>https://idiotfan.wang/posts/damon-salary-automation-system/</link><pubDate>Sat, 22 Aug 2026 15:00:00 +0800</pubDate><guid>https://idiotfan.wang/posts/damon-salary-automation-system/</guid><description>跨两家门店十余名员工、手写排班、多渠道POS、部门×班次复杂提成，我是如何用一套 Python + 腾讯文档 + HTML/Rails 8 体系实现月度一键结薪的。</description><content:encoded><![CDATA[<p>在中小餐饮连锁店，每个月最令人头疼的除了盘点，就是算工资。</p>
<p>在大梦（可能实验室），两家门店涵盖了侍酒师、调酒师、咖啡师、主厨、出品厨师和兼任店长等多种角色。看似人不多，背后的算薪逻辑却极其复杂：</p>
<ul>
<li><strong>考勤源散落各处</strong>：有人在群里发手写考勤表照片，有人交 <code>.xlsx</code>，店长交 <code>.xls</code> 评估表，西湖夜班员工在腾讯文档里打卡。</li>
<li><strong>提成与多维营收挂钩</strong>：薪酬不仅看基本工资，还挂钩<strong>部门业绩</strong>（精酿/调酒/咖啡/厨房）、<strong>班次业绩</strong>（白班/中班/晚班），甚至需要按<strong>部门 × 班次</strong>矩阵进行交叉剥离。</li>
<li><strong>新 SKU 归口漂移</strong>：每个月两家店都会上新酒水或新菜品，如果菜品库没有及时维护，POS 导出的几百条订单就会分错部门。</li>
<li><strong>输出要求高</strong>：算完不仅要在腾讯文档 43 列大表里逐行填平并标注店色，还要给每位员工生成带有公章、大写金额、社保代扣明细的精美工资单。</li>
</ul>
<p>这篇文章记录我如何通过一套组合拳（<strong>Claude Fable 5</strong> 驱动的 Python 管道 + 腾讯文档 API + 响应式 HTML 工资单 + Rails 8 HR 系统集成），将原本需要耗费一整天的结薪工作缩减为 10 分钟自动化流程。</p>
<hr>
<h2 id="一-考勤与数据清洗手写照片与多格式兼容">一、 考勤与数据清洗：手写照片与多格式兼容</h2>
<p>结薪的第一步是收集出勤、法定假日、加班与请假数据。</p>
<p>面对不同来源的考勤资料，我们建立了一条标准化的数据摄取流水线：</p>
<ol>
<li><strong>手写纸质排班表</strong>：通过多模态 Vision 模型直接识别出勤天数与请假备注（休、年假、调休）。</li>
<li><strong>员工个人提交的 xlsx/xls</strong>：使用 openpyxl 和 xlrd 脚本批量读取出勤字段。</li>
<li><strong>腾讯文档夜班表</strong>：调用腾讯文档 API 自动拉取最新的夜班排班记录。</li>
</ol>
<h3 id="考勤规则的程序化">考勤规则的程序化</h3>
<p>在计算出勤时，有几条必须严格执行的业务口径：</p>
<ul>
<li><strong>法定节假日</strong>：按国家法定假日天数计算双倍津贴（<code>基本工资 / 计薪基准 × 天数 × 2</code>）。</li>
<li><strong>加班是「存」还是「换钱」</strong>：员工备注若为「存」，则计入调休池，不折现发放；若为「换钱」，则按小时工资折算为加班费。</li>
<li><strong>月计薪基准的口径区分</strong>：国家劳动法标准的月计薪天数是 <code>21.75</code> 天，而门店按「月休 4 天」的排班体系内部约定了自己的计薪基准。两者绝不可混用——这是薪酬计算里最容易犯的低级错误之一。</li>
</ul>
<hr>
<h2 id="二-破解营收交叉难题伪菜品库与部门班次矩阵">二、 破解营收交叉难题：伪菜品库与部门×班次矩阵</h2>
<p>很多餐饮店算提成算不准，根源在于<strong>POS 订单数据无法自动归口到部门和班次</strong>。</p>
<h3 id="1-伪菜品库反向生成法100-覆盖新-sku">1. 「伪菜品库」反向生成法（100% 覆盖新 SKU）</h3>
<p>早先我们维护了一份静态的「菜品库.xlsx」，但每月一到结薪，发现上月新上的十几款精酿或特调都在库外，脚本只能靠关键词模糊匹配，导致大量调酒被误归入精酿。</p>
<p>为了彻底根治这个问题，我们从 6 月起设计了**「伪菜品库生成器」**（<code>make_menu_lib.py</code>）：</p>
<ul>
<li>直接读取美团/收钱吧 POS 导出的当月「<strong>菜品销售明细</strong>」（包含 POS 真实的「菜品大类」和「菜品小类」）。</li>
<li>脚本根据 POS 大类自动映射四部门，反向为两家门店各生成一份当月专用的全覆盖菜品库（数百个在售 SKU 全部自动归口）。</li>
<li>实测除扑克牌、雨伞等 2 笔杂物外，全部 SKU 100% 自动归口，彻底告别了人工维护。</li>
</ul>
<h3 id="2-部门--班次交叉聚合算法">2. 部门 × 班次交叉聚合算法</h3>
<p>有了准确的菜品归属后，流水线运行 <code>build_analysis.py</code> 进行多维交叉切片：</p>
<ul>
<li><strong>部门业绩</strong>：从全渠道订单中提取含团购套餐的实际到账金额。</li>
<li><strong>班次业绩</strong>：按结账时间（17:00 前为白班，17:00 后为晚班，特定时段为中班）切分。</li>
<li><strong>特殊规则硬编码</strong>：例如滨江后厨团队（主厨与出品厨师）只考核整体后厨部门业绩，班次业绩置 0；前厅运营无特定部门归属，部门业绩置 0。</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># build_analysis 核心交叉切片逻辑示意</span>
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">compute_cross_matrix</span><span class="p">(</span><span class="n">orders_df</span><span class="p">,</span> <span class="n">menu_lib</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 结合伪菜品库匹配部门</span>
</span></span><span class="line"><span class="cl">    <span class="n">merged</span> <span class="o">=</span> <span class="n">orders_df</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">menu_lib</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="s1">&#39;sku_id&#39;</span><span class="p">,</span> <span class="n">how</span><span class="o">=</span><span class="s1">&#39;left&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 结合结账时间戳划分班次</span>
</span></span><span class="line"><span class="cl">    <span class="n">merged</span><span class="p">[</span><span class="s1">&#39;shift&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">merged</span><span class="p">[</span><span class="s1">&#39;pay_time&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">classify_shift</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="c1"># 交叉透视表：店 x 部门 x 班次</span>
</span></span><span class="line"><span class="cl">    <span class="n">cross_pivot</span> <span class="o">=</span> <span class="n">merged</span><span class="o">.</span><span class="n">pivot_table</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">        <span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;store&#39;</span><span class="p">,</span> <span class="s1">&#39;department&#39;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="n">columns</span><span class="o">=</span><span class="s1">&#39;shift&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="n">values</span><span class="o">=</span><span class="s1">&#39;actual_amount&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="n">aggfunc</span><span class="o">=</span><span class="s1">&#39;sum&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="n">fill_value</span><span class="o">=</span><span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="n">calibrate_totals</span><span class="p">(</span><span class="n">cross_pivot</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>最终脚本自动输出包含 13 个分析页签的月度 Excel，并将部门起伏 MoM 根因下钻到具体 SKU（例如：精酿本月下滑主要由于哪几款酒头缺货）。</p>
<hr>
<h2 id="三-腾讯文档-v2-自动回写与店色渲染">三、 腾讯文档 V2 自动回写与店色渲染</h2>
<p>大梦团队日常使用腾讯文档「员工档案 V2」作为薪酬管理中枢。整个表结构多达 43 列。</p>
<p>算薪脚本在核算完成后，会调用腾讯文档开放接口完成自动化回填：</p>
<ol>
<li><strong>行号探测与防偏移</strong>：自动读取表格末行，锁定当月全员的起始写入行（与上月行段空一行隔开），写完后立即回读校验。</li>
<li><strong>写入动态计算字段</strong>：出勤天数、法假天数、部门业绩、班次业绩、基本工资、加班费、KPI 倍数、管理倍数、全勤行为规范奖、出品提成、社保个人代扣（在册员工按月代扣）、最终私账剩余应发。</li>
<li><strong>自动化店色美化</strong>：
<ul>
<li>西湖店：全行设置浅绿底色（<code>#FFE2EFDA</code>）</li>
<li>滨江店：全行设置浅蓝底色（<code>#FFDDEBF7</code>）</li>
</ul>
</li>
</ol>
<hr>
<h2 id="四-双轨工资单从-html-模板到-rails-8-系统集成">四、 双轨工资单：从 HTML 模板到 Rails 8 系统集成</h2>
<p>算完薪后，如何将工资条体面、私密、优雅地分发给每位员工？</p>
<p>我们采取了「双轨制」交付方案：</p>
<h3 id="1-独立-htmljs-工资单生成器">1. 独立 HTML/JS 工资单生成器</h3>
<p>在本地提供一个自包含的单页应用：</p>
<ul>
<li><strong>复古票据设计</strong>：两店分色边框、水印防伪印章、应发金额自动转换为中文大写（如「肆仟捌佰伍拾元整」）。</li>
<li><strong>智能字段收起</strong>：没有提成的员工自动隐藏提成明细行；加班小时选择「存」的员工自动将加班费显示为 0 并附带文字备注。</li>
<li><strong>一键导出 PNG</strong>：内置 <code>html2canvas</code> 引擎，右上角提供「EXPORT ALL」批量打包，单卡片下方支持单张保存。</li>
</ul>
<h3 id="2-水龙头-hr-系统rails-8--sqlite--tailwind">2. 水龙头 HR 系统（Rails 8 + SQLite + Tailwind）</h3>
<p>为了让店长和管理层具备更系统的历史查询与入职管理能力，我们将这套工资单生成逻辑无损移植进了内网 HR 系统 <code>shuilongtou</code>：</p>
<ul>
<li><strong>无损组件复用</strong>：将 HTML 模板的 CSS 与 JS 渲染核心原样封装为 Rails View Component。</li>
<li><strong>服务端数据注入</strong>：<code>SalarySlipBuilder</code> 服务从 SQLite 读取当月评定记录，构造成标准 JSON 挂载在前端 <code>window.SALARY_DATA</code> 上。</li>
<li><strong>批量与单人导出</strong>：在后台 <code>/salary-slips</code> 页面，店长可以按月份一键预览全员并导出高清图片分发微信。</li>
</ul>
<hr>
<h2 id="结语">结语</h2>
<p>在服务实体餐饮的过程中，我们往往容易走向两个极端：要么沉迷于引入庞大昂贵的全套 SaaS 软件，结果员工根本不会用；要么退回原始的手工复制粘贴，每个月重复踩坑。</p>
<p>这套以 <strong>Python 脚本打通数据流、腾讯文档作为协作底座、轻量 HTML/Rails 提供交互展示</strong>的架构，恰好找到了那个平衡点：低成本、极度灵活，并且能在业务规则演进时随手调整。</p>
<p>当技术真正落进日常的柴米油盐与账目明细里，解决真实世界的琐碎麻烦，那种踏实感才是最迷人的。</p>
<hr>
<h3 id="-项目环境与模型署名">🛠️ 项目环境与模型署名</h3>
<ul>
<li><strong>主导逻辑与代码构建</strong>：Anthropic <strong>Claude Fable 5</strong>（桌面端默认模型）</li>
<li><strong>多模态考勤识别</strong>：Claude Fable 5 视觉能力（手写纸质排班表与多源照片读取）</li>
<li><strong>客户端与执行环境</strong>：<strong>Claude Desktop 桌面端</strong>（定制 <code>dameng-salary</code> Skill + <code>tencent-docs</code> MCP）</li>
<li><strong>系统技术栈</strong>：Python 3 (<code>pandas</code>, <code>openpyxl</code>, <code>xlrd</code>) + 腾讯文档 OpenAPI + Rails 8 (<code>shuilongtou</code> 员工管理系统) + HTML/CSS 矢量打印模板</li>
</ul>
]]></content:encoded></item><item><title>当一家精酿餐吧要对账：大梦滨江店总账梳理与多 Agent 审计实战</title><link>https://idiotfan.wang/posts/damon-binjiang-ledger-audit/</link><pubDate>Sat, 22 Aug 2026 14:00:00 +0800</pubDate><guid>https://idiotfan.wang/posts/damon-binjiang-ledger-audit/</guid><description>面对十个月的银行流水、微信支付宝错账与物业方的模糊账单，我用 Claude 桌面端搭建了一套多 Agent 对抗式审计流，算清每一分钱的去向。文中敏感金额已全部脱敏。</description><content:encoded><![CDATA[<p>开一家精酿美式餐吧到底要花多少钱？经营大半年后到底是赚是亏？钱都流向了哪里？</p>
<p>这些问题听起来是基础会计常识，但当真正面对实体餐饮的一地鸡毛时&ndash;一整本扫描版银行流水、微信支付宝混合刷卡、物业方系统各期抵扣、股东实物入股、负责人个人信用卡垫付&ndash;账目会迅速变成一团乱麻。</p>
<p>最近我用 <strong>Claude 桌面端（主力模型 Claude Fable 5）</strong>，对大梦滨江店（DAMON BREWING / 可能实验室）从 2025 年建店到 2026 年 6 月全周期的账务做了一次彻底的总账梳理。最终输出了 12 页签的标准化 Excel 底账、一份 10 页的完整对账报告，以及一份面向全体股东的 3 页精简经营汇报。</p>
<p>这篇文章记录这次梳理的核心方法论、踩坑教训，以及如何利用<strong>多 Agent 对抗式审计</strong>把 20 多个核心财务指标做到分文不差。</p>
<blockquote>
<p>⚠️ <strong>脱敏声明</strong>：出于商业保密，本文不展示任何真实金额、比例与流水笔数，一律以定性描述代替，表格只保留指标间的推导结构。方法与流程是完整的，数字请自行代入自己的业务。</p>
</blockquote>
<hr>
<h2 id="一-为什么账会算不清实体餐饮的-5-大账面陷阱">一、 为什么账会算不清：实体餐饮的 5 大「账面陷阱」</h2>
<p>在动手拉表格之前，必须先理清业务现实。实体店的流水如果直接生搬硬套做汇总，一定会得出荒谬的结论：</p>
<ol>
<li><strong>混淆主体账户</strong>：滨江店以经营主账户为唯一现金账，但早期存在与西湖老店的店间结算和借调。如果直接抓商户名，西湖店的款项会混入。</li>
<li><strong>第三方支付的「全量汇总陷阱」</strong>：微信和支付宝账单里包含了大量个人日常消费。<strong>如果全量汇总，两条渠道会各自凭空多出一大笔与门店无关的「假收入」</strong>！正确做法是只能通过付款通道子串匹配，精确提取实际扣自经营主账户的对手方明细。</li>
<li><strong>团购的「双重计算」</strong>：美团到综团购的核销款，一方面已经反映在 POS 系统的「顾客实付」订单里，另一方面结算后又作为净款打入了银行卡。如果把团购单独列为一项收入加进来，营业额会被凭空重复计算一大块。</li>
<li><strong>房东账单的「名目倒腾」</strong>：商业物业方在系统里将早期缴纳的意向金与首批款项打散冲抵到租赁保证金、物业保证金、能源保证金、首期租金、装修保证金与装修管理费中。按银行流水摘要搜「租金」只能看到零散转账，必须顺着物业系统的逐笔扣费凭证回溯。</li>
<li><strong>信用卡垫付与公私倒挂</strong>：负责人个人信用卡替门店垫付了数万元房租与水电，但该卡同时存在个人日常消费，且经营主账户从未向该卡还款。如果把信用卡账单全量导入，会彻底污染负债端。</li>
</ol>
<hr>
<h2 id="二-6-条铁律不可违背的底账原则">二、 6 条铁律：不可违背的底账原则</h2>
<p>为了防止在多轮推演中产生数字漂移，我们在系统提示词与 Skill 中固化了 6 条铁律：</p>
<pre tabindex="0"><code>1. 经营主账户 = 滨江店完整现金账，西湖店往来款项一律剔除。
2. 支付宝/微信流水只取实际扣自经营主账户的行还原对手方，绝不全量汇总。
3. 团购已包含在 POS 顾客实付与银行到账两端，不可二次相加。
4. 工资按「私账应发 / 剩余应发」实发口径计算（扣除社保代扣）。
5. 一切以银行流水为根本凭证；在线智能表格等零散记录仅做辅助参考。
6. 绝不编造数字；历史口径变更必须明确标注「已作废」并保留审计轨迹。
</code></pre><p>基于这 6 条铁律，我们对全期银行流水做了逐笔穿透，流入、流出与期末余额三方闭合。</p>
<hr>
<h2 id="三-定案核心指标资金去向的推导结构">三、 定案核心指标：资金去向的推导结构</h2>
<p>经过多源独立交叉复核，最终定案的核心指标全部闭合（元级精度对平）。<strong>金额一律脱敏，只保留指标间的推导关系</strong>：</p>
<table>
	<thead>
			<tr>
					<th>指标</th>
					<th>推导关系（金额已脱敏）</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>开店总成本</strong></td>
					<td>建店硬支出（装修 + 设备 + 物料 + 首批进货 + 建店期工资等） + 三项保证金</td>
			</tr>
			<tr>
					<td><strong>资金总投入</strong></td>
					<td>股东实缴投资（现金 + 实物入股） + 负责人垫款（现金 + 信用卡代付，扣除已归还部分）</td>
			</tr>
			<tr>
					<td><strong>经营净亏损</strong></td>
					<td>经营主账户账面残差 + 账外个人卡代付的水电等费用</td>
			</tr>
			<tr>
					<td><strong>真实总亏损（押金若沉没）</strong></td>
					<td>经营净亏损 + 三项押金</td>
			</tr>
			<tr>
					<td><strong>营业额双口径</strong></td>
					<td>订单「顾客实付」毛额 vs 银行净到账，差额即支付渠道手续费（约 2%~3% 的行业常见水平）</td>
			</tr>
			<tr>
					<td><strong>物业方总付款</strong></td>
					<td>主账户支付 + 个人卡代付，与物业系统逐笔对清、无缺口</td>
			</tr>
			<tr>
					<td><strong>仓库附租</strong></td>
					<td>商场配套小仓库的押金与租金，逐笔对平</td>
			</tr>
	</tbody>
</table>
<h3 id="核心结论的商业叙事">核心结论的商业叙事</h3>
<p>这套账揭示了一个残酷的实体店常识：<strong>「股东凑的钱，几乎刚好只够把店建起来」</strong>。</p>
<p>股东原始投资与建店硬支出几乎分毫不差地对齐&ndash;店还没开业，账上的钱就已经见底。三项押金、首期租金和开业头几个月的营运周转缺口，全部依赖负责人个人后续垫款才把店开起来。这也是很多实体店「开业即负债」的真实写照。</p>
<hr>
<h2 id="四-多-agent-对抗式审计如何保证-0-幻觉">四、 多 Agent 对抗式审计：如何保证 0 幻觉？</h2>
<p>面对海量流水与多份 Excel，单个 LLM 上下文极其容易产生「看起来合理但实际加总不闭合」的幻觉。</p>
<p>我们设计了一套<strong>两阶段多 Agent 对抗审计工作流</strong>：</p>
<pre tabindex="0"><code>[原始数据源：银行流水PDF + 订单明细 + 合同 + 凭证]
                       │
       ┌───────────────┼───────────────┐
       ▼               ▼               ▼
【Agent A: 报告审计】 【Agent B: Excel核算】 【Agent C: 汇报互验】
 扫描未定义缩写/旧值   逐Sheet计算公式/闭合   SVG图表数据 vs MD文本
       │               │               │
       └───────────────┼───────────────┘
                       ▼
             【汇总 21 条差异清单】
                       │
                       ▼
           【Agent D: 独立对抗复核员】
        （专门负责证伪、亲自算底账、不采信转述）
                       │
             ┌─────────┴─────────┐
             ▼                   ▼
      【16 条确认修复】       【5 条误报驳回】
</code></pre><ol>
<li>
<p><strong>第一阶段：多路并行独立审计</strong></p>
<ul>
<li><strong>Agent 1（文档数字闭合）</strong>：逐行扫描报告 markdown 中的所有加总等式，检测是否存在早期作废数字残留（如已被推翻的「押金缺口」假说或「押二付三」等错误口径）。</li>
<li><strong>Agent 2（Excel 底账校验）</strong>：用 Python openpyxl 遍历 12 个 Sheet，提取每一个合计格的公式和实际值，验证横向与纵向交叉一致性。</li>
<li><strong>Agent 3（跨文件一致性）</strong>：比对 HTML 汇报源码中的 JS 数据数组与 PDF、Word 文本是否绝对吻合。</li>
<li><strong>Agent 4（完备性批评家）</strong>：站在挑剔股东的角度，寻找「别人一定会问但当前报告没解释」的逻辑跳跃。</li>
</ul>
</li>
<li>
<p><strong>第二阶段：对抗复核（Adversarial Verification）</strong>
对于第一阶段提出来的每一条「疑点」，派出一个不带上下文偏见的独立 Agent 专门去<strong>证伪</strong>。必须直接读取原始 PDF 流水计算，不采信前序 Agent 的自然语言转述。</p>
<ul>
<li><em>战果</em>：21 条初审疑点中，确认修复了 16 处（如某月日均营业额的尾数校正、人力率四舍五入口径统一、员工报销按银行残差精确重算等），果断驳回了 5 处假阳性误报。</li>
</ul>
</li>
</ol>
<hr>
<h2 id="五-excel-与汇报文档的工程化输出">五、 Excel 与汇报文档的工程化输出</h2>
<p>为了让专业财务人员和股东阅读时建立信任感，输出物的外观与结构必须具备专业水准。</p>
<h3 id="1-excel-12-页签标准化版式系统">1. Excel 12 页签标准化版式系统</h3>
<p>我们为 <code>大梦滨江总账.xlsx</code> 编写了统一的 openpyxl 格式化引擎：</p>
<ul>
<li><strong>配色系统</strong>：标题通栏采用墨蓝（<code>#16233B</code>）、小计行浅冷灰（<code>#EEF1F6</code>）、关键亏损浅红（<code>#FFFBEBE9</code> 搭配红字 <code>#B3261E</code>）。</li>
<li><strong>防 <code>###</code> 溢出检查</strong>：自动计算带千分位和括号的负数字符串长度，若 <code>len + 1 &gt; col_width</code> 则自动拓宽列宽，杜绝了 <code>(1,234,567)</code> 这类长数字变成 <code>###</code> 的尴尬。</li>
<li><strong>合并单元格换行</strong>：Excel 合并格默认会截断溢出文字，必须显式开启 <code>wrap_text=True</code> 并动态计算所需行高。</li>
</ul>
<h3 id="2-chrome-headless-打造-3-页股东汇报-pdf">2. Chrome Headless 打造 3 页股东汇报 PDF</h3>
<p>对外发放的汇报材料采用纯 HTML + 内联 SVG 图表编写，通过 Chrome Headless 直接渲染为矢量 PDF：</p>
<ul>
<li><strong>P1 现状</strong>：总投入拆解（股东权益 + 负责人垫款），直面经营亏损现状。</li>
<li><strong>P2 希望</strong>：亏损持续收窄（从开业期的高位收敛到近期的零头量级），并揭示<strong>周末夜（周五六）日均营业额约为工作日两倍</strong>的经营规律。</li>
<li><strong>P3 抉择</strong>：给出两条清晰的出路建议——<strong>路径一（保店留念想，剥离后厨转为纯吧）</strong> vs <strong>路径二（边做边转让，力保押金止损）</strong>。</li>
</ul>
<hr>
<h2 id="结语">结语</h2>
<p>在 AI 辅助财务对账的实践中，<strong>「模型能算数」只是最表层的一步，「建立不容置疑的事实锚点与多重约束」才是灵魂</strong>。</p>
<p>只有当每一笔银行流水都能在合同与凭证中找到呼应，每一个汇总等式都经过多 Agent 独立证伪，AI 输出的财务报告才能真正从「文字草稿」升级为「具备法律与商业决策效力的权威定案」。</p>
<hr>
<h3 id="-项目环境与模型署名">🛠️ 项目环境与模型署名</h3>
<ul>
<li><strong>主导推理与审计模型</strong>：Anthropic <strong>Claude Fable 5</strong>（桌面端默认模型，1M 上下文）</li>
<li><strong>客户端与工作流平台</strong>：<strong>Claude Desktop / Claude Code</strong>（Agent Workflow 并行子代理；期间子代理一度被重映射到火山方舟 ark-code-latest / kimi-k3，已修复）</li>
<li><strong>外部重活分担</strong>：DeepSeek V4 Pro（火山 Coding Plan，经 opencode serve 委托执行）</li>
<li><strong>核心数据工具链</strong>：Python 3 (<code>openpyxl</code>, <code>pdfplumber</code>, <code>markdown</code>) + Google Chrome Headless</li>
<li><strong>底账与凭证归档</strong>：<code>大梦滨江总账.xlsx</code> (12 Sheets) + <code>总账梳理报告.pdf</code> (10 Pages) + <code>大梦滨江店_经营汇报.pdf</code> (3 Pages)</li>
</ul>
]]></content:encoded></item></channel></rss>