with one click
approval-engine
审批流程引擎,报价审批 + 异常处理
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
审批流程引擎,报价审批 + 异常处理
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
动态定价引擎,铜价/数量阶梯/客户等级/汇率计算
邮件智能回复系统,自动识别客户意图并生成个性化回复草稿
订单管理系统,状态跟踪 + 客户通知
生成专业收款通知,支持 HTML/PDF 格式,自动集成银行账户信息
Use when a sales workflow needs single-company customer background research, buyer/contact discovery, email verification, lead-fit scoring, source-backed outreach angles, or company dossier generation.
产品工程图纸结构化提取器 v5.0。pdftotext 优先 + Vision 兜底,支持软连字符清理/跨行关联/数据校验。专为 Your Company 线材产品图纸设计。
| name | approval-engine |
| description | 审批流程引擎,报价审批 + 异常处理 |
| metadata | {"openclaw":{"emoji":"✅","requires":{"anyBins":["node"]}}} |
审批流程引擎 + 异常处理系统。提供规则驱动的多级审批、实时异常检测、自动恢复策略(重试/降级/人工介入)和 Discord 通知集成。
/path/to/your/.openclaw/workspace/skills/approval-engine/
| 模块 | 用途 |
|---|---|
src/approval-engine.js | 核心审批引擎(创建、提交、超时、升级) |
src/rule-evaluator.js | 规则评估(触发条件、阈值、条件匹配) |
src/approval-store.js | 审批状态 CRUD(JSON 持久化) |
src/exception-detector.js | 异常检测(超时/错误/订单异常) |
src/alert-manager.js | 告警发送(Discord、限流、历史) |
src/exception-logger.js | 异常日志(记录、查询、解决标记) |
src/recovery-engine.js | 恢复引擎(策略选择与执行) |
src/retry-handler.js | 重试处理(指数退避、Jitter、统计) |
src/escalation-handler.js | 升级处理(创建、确认、解决升级单) |
src/discord-notifier.js | Discord 通知(消息/Embed/审批/告警) |
src/notification-router.js | 通知路由(规则匹配→渠道选择) |
src/notification-templates.js | 通知模板(审批/告警/升级/恢复) |
编辑 config/approval-rules.json 配置:
rules[] — 审批规则列表(触发条件、审批人、超时策略)thresholds — 数值阈值(报价金额上限等)auto_recovery — 自动恢复策略映射escalation_rules — 升级规则(升级时间、升级对象)notification_templates — Discord 消息模板所需环境变量:
DISCORD_BOT_TOKEN — Discord 机器人令牌DISCORD_APPROVALS_CHANNEL — 审批通知渠道 IDDISCORD_ALERTS_CHANNEL — 告警通知渠道 IDDISCORD_EXCEPTIONS_CHANNEL — 异常通知渠道 IDDISCORD_RECOVERY_CHANNEL — 恢复通知渠道 IDconst engine = require('/path/to/your/.openclaw/workspace/skills/approval-engine/src/approval-engine');
// 提交业务数据,引擎自动评估规则
const approvals = await engine.autoCreateApprovals({
quotation: { amount: 15000 },
sales: { owner: 'alice' }
});
// 返回:所有被触发规则创建的审批列表
const engine = require('./src/approval-engine');
// 创建审批
const approval = await engine.createApproval('quotation-approval', {
quotation: { amount: 15000, no: 'QT-2026-001' }
}, { submitter: 'alice' });
// 审批人决策
await engine.submitApproval(approval.id, 'wilson', 'approved', '金额合理,已审批');
// 查询状态
const status = await engine.getApprovalStatus(approval.id);
const detector = require('./src/exception-detector');
// 全量检测(返回新发现的异常列表)
const exceptions = await detector.detectAll();
// 定时周期检测(含告警推送 Discord)
await detector.runPeriodicCheck();
const recovery = require('./src/recovery-engine');
// 自动选择恢复策略并执行
const result = await recovery.recover({
type: 'api_error', // 异常类型
severity: 'medium', // 严重程度: low/medium/high/critical
data: { endpoint: '/api/orders', error: 'timeout' }
});
// result.strategy: 'retry' | 'degrade' | 'manual_intervention'
// result.success: true/false
const notifier = require('./src/discord-notifier');
// 发送审批请求(带按钮/Embed)
await notifier.sendApprovalRequest({
approvalId: 'APR-001',
rule: '报价超权限审批',
submitter: 'alice',
amount: 15000
});
// 发送告警
await notifier.sendAlert({ title: 'API 超时', message: '订单 API 无响应', severity: 'high' });
// 发送恢复通知
await notifier.sendRecoveryNotification({ type: 'retry', success: true, attempts: 2 });
const retry = require('./src/retry-handler');
// 带自动重试执行异步函数(指数退避 + Jitter)
const result = await retry.withRetry(
async () => await fetch('https://api.example.com/orders'),
{ maxAttempts: 3, baseDelayMs: 1000, maxDelayMs: 10000 }
);
const engine = require('./src/approval-engine');
// 检测超时审批并自动升级
const expired = await engine.checkTimeouts();
// expired[].action: 'escalate' | 'auto_approve' | 'auto_reject'
const engine = require('./src/approval-engine');
const detector = require('./src/exception-detector');
const recovery = require('./src/recovery-engine');
async function processQuotation(quotationData) {
// 1. 提交报价,自动触发审批规则
const approvals = await engine.autoCreateApprovals(quotationData);
if (approvals.length > 0) {
console.log(`已创建 ${approvals.length} 个审批请求,等待审批中...`);
// Discord 通知已在引擎内部自动发送
}
// 2. 运行异常检测
const exceptions = await detector.detectAll();
// 3. 对每个异常尝试自动恢复
for (const exc of exceptions) {
const result = await recovery.recover(exc);
if (!result.success) {
console.log(`异常 ${exc.type} 需要人工介入`);
}
}
}
# 每 15 分钟运行一次异常检测和超时处理
*/15 * * * * node -e "
const engine = require('/path/to/your/.openclaw/workspace/skills/approval-engine/src/approval-engine');
const detector = require('/path/to/your/.openclaw/workspace/skills/approval-engine/src/exception-detector');
Promise.all([engine.checkTimeouts(), detector.runPeriodicCheck()])
.then(() => process.exit(0))
.catch(e => { console.error(e); process.exit(1); });
" >> /tmp/approval-engine-cron.log 2>&1
# 运行冒烟测试
bash /path/to/your/.openclaw/workspace/skills/approval-engine/test/smoke-test.sh
quotation-workflow — 报价单工作流(可集成审批触发)imap-smtp-email — 邮件通知渠道(审批通知邮件发送)discord (OpenClaw built-in) — Discord 消息发送底层1.0.0 — 2026-03-24 (task-006, Phase 3, iteration 7)