-- ai_skill：Skill 注册表（架构 §6）。
-- Skill = 针对重复任务的 playbook（如 新建报价 / 月度对账 / 库存盘点），用工具但不是工具。
-- 渐进披露：name + 何时用(sWhenToUse) 进 system prompt（便宜、常驻）；load_skill(name) 工具
-- 按需注入完整指令(sInstructions)。sSuggested = 建议用到的工具/表单（逗号分隔，仅提示）。
CREATE TABLE IF NOT EXISTS ai_skill (
  sId           varchar(64)  NOT NULL PRIMARY KEY,
  sName         varchar(64)  NOT NULL,                 -- Skill 名（load_skill 的入参）
  sWhenToUse    varchar(255) NOT NULL,                 -- 何时用（一句话，进 system prompt）
  sInstructions text         NOT NULL,                 -- 详细 playbook（load_skill 时注入）
  sSuggested    varchar(255) NULL,                     -- 建议工具/表单（逗号分隔）
  bEnabled      tinyint      NOT NULL DEFAULT 1,
  iOrder        int          NOT NULL DEFAULT 100,
  tCreateDate   datetime     NULL
);

INSERT INTO ai_skill (sId,sName,sWhenToUse,sInstructions,sSuggested,bEnabled,iOrder,tCreateDate) VALUES
('skill-new-quote','新建报价','用户要为某客户新建/录入一张报价单时',
 '新建报价的标准流程：\n1) 先用 findForms("报价") 定位报价主表单，拿到 formId/moduleId。\n2) 报价字段较多（客户、币种、含税、明细行等），用 collectForm(该 formId) 弹出表单让用户逐项填写，而不是逐个追问。\n3) 用户填完后，用 proposeCreate 生成待确认的新增提议；务必让用户在对话内点【确认】后才真正落单。\n4) 报价属于自动执行类写入（bAutoExecute），确认后 ERP 会自动生成正式报价单并回链接。',
 'findForms, collectForm, proposeCreate',1,10,NOW()),
('skill-monthly-ar','月度对账/超期应收催收','用户要做应收对账、查超期未收款、催收时',
 '应收对账/催收流程：\n1) 用 queryData 或 findForms("应收") 找到应收台账/收款单据。\n2) 按客户汇总未收金额，用 queryData 做“按客户分组 SUM(未收金额) 并按账龄排序”。\n3) 列出超期（如超过约定账期）客户与金额，提示用户重点催收。\n4) 只读分析，不做任何写操作。',
 'queryData, findForms, readFormData',1,20,NOW()),
('skill-inventory-check','库存查询/盘点','用户要查某物料/产品的库存、库存台账、进出明细时',
 '库存查询流程：\n1) 物料库存看 elematerialsstock 相关表单，产品库存看 productstock。\n2) 用 lookupRecord(物料/产品, 名称) 查单个；用 readFormData 看列表；用 queryData 做汇总。\n3) 严禁传 bUpdate 之类写参数（只读）。\n4) 需要出入库明细时找 *_inoutdetail 视图。',
 'lookupRecord, readFormData, queryData',1,30,NOW());
