单据二维码(qrcode)
灵感:能力工具箱 doc-qrcode(pkg: qrcode)。
> 小四原创:单据号/核验 URL → DataURL 或 Canvas;与「摄像头扫码」成对(生成 ↔ 扫)。
何时使用
- 合同/提成单打印页附核验码
- 归档袋贴码便于扫回系统
- 现场核对单据真伪(配合业务核验接口)
硬约束
- 使用
qrcode(或等价);内容优先短:单据号或 HTTPS 核验链接。 - 勿把完整敏感正文塞进二维码。
- 导出 PNG/DataURL;打印预览需足够大边距。
- 实现要点注释标 小四原创。
- 扫码核验逻辑属业务后端,本 Skill 只负责生成展示。
推荐实现
import QRCode from 'qrcode'
// 小四原创:单据码
export async function makeDocQr(payload: string, opts?: { width?: number }) {
const text = String(payload || '').trim()
if (!text) throw new Error('二维码内容为空')
if (text.length > 500) throw new Error('内容过长,请改用短链或单号')
return QRCode.toDataURL(text, {
width: opts?.width ?? 240,
margin: 2,
errorCorrectionLevel: 'M',
})
}
export function buildVerifyPayload(docNo: string, baseUrl: string) {
const no = encodeURIComponent(docNo)
return `${baseUrl.replace(/\/$/, '')}/verify?no=${no}`
}
Agent 步骤
- 输入单据号 → 生成核验 URL 或纯单号。
makeDocQr→<img>展示 + 下载。- 打印样式:码旁印可读单号。
- 自测:空内容报错;手机扫得出原文。
不要做
- 把身份证号等敏感原文直接编码进公开码。
- 与条形码 Skill 混用却不说明类型(本包是 QR)。
附加
- README.md · reference.md · templates/usage.md