Sengliy Engineering — AutoCount Portal 单向同步 Plugin
技术范围写得好,商务条款不能这样发。
三个 blocker 必须改 ——
① 报价编号跳号(PQ-260226 跳过了 PQ-260225)·
② 模板三缺陷未修(缺 -R0、有效期非硬日期、签署人占位)·
③ 签署人是 Dhai 不是董事。
另有两个价格问题需要 Jay 拍板。好消息是报价还没发给客户 ——
客户群最后一条是 08-25 15:46「pls use sengliy Engineering」,现在改零成本。
时间压力:08-24 已向客户书面承诺「quotation within this week」,今天周二,剩 3 个工作日。
范围变更以下 8 条是 Jay 本轮下达的修订指示,优先于本页原有建议。 Dhai 修订时以本段为准。
| # | Jay 的指示 | 对报价的具体动作 | 影响 |
|---|---|---|---|
| 1 | 本页没有交代报价编号最终用哪个 | 本轮修订出的版本定为 PQ-260226-R1;编号方案见下方决议框 |
编号 |
| 2 | 客户还要一个界面,能设定一天可以触发几次同步 —— 现在是每天一次,将来可能要更频繁 | Core Module 明写「可配置同步频率 / 每日触发次数」,不只是「Settings from UI」 | 范围 ↑ |
| 3 | Document Lock 提到 RM 2,000 | 可选模块单价 RM 1,000 → RM 2,000 | +RM 1,000 |
| 4 | 新增 Audit Module —— 比对 Portal 与 AutoCount 两边已同步单据的一致性,方便客户日后除错 | 新增可选模块 RM 3,000 | +RM 3,000 |
| 5 | Portal 上已同步单据被修改后要重新同步,让 AutoCount 反映最新数据。问 Dhai 知不知道这块 —— 会加复杂度,且依赖客户程序员的 API,他们的 bug 会影响我们。要做 audit trail 降低我们的责任 | Core Module 明写 re-sync on edit + 同步 audit trail;条款加一句「Portal API 缺陷导致的同步失败不属我方责任」 | 范围 ↑ |
| 6 | 客户不要年费。On-site 培训可另外收费,线上培训不另外收 | AMC 改为 optional 一行(不主推);培训条款拆成 on-site 收费 / online 免费 | 条款 |
| 7 | AutoCount 升级如果需要我们改代码,另开报价 | 🔴 删掉现稿「6 个月免费维护含 AutoCount 版本升级导致的错误」,改为明确排除 | 风险 ↓↓ |
| 8 | 维护合约放 optional;若错误是客户端自身问题造成,收 RM 350/次 | AMC 段照此改写 | 条款 |
| 9 | 交期「within 4 weeks from kickoff」要写清楚 | kickoff 定义为「收到订金」与「客户交付 Portal API 文档」两者中较晚者 | 条款 |
仍待 JayCore Module 的最终价格还没定。 本页建议 RM 12,500(守 RM 10,000)。第 2、5 两条指示又把 Core 的范围往上加了 (可配置触发频率 + 编辑后重新同步 + audit trail),RM 8,500 更站不住。
编号决议建议:Sengliy 保留 PQ-260226,把
PQ-260225 锁给逾期未出的 PSVS R2。
理由:不留永久空号,也不必重做已经切图上线的文件。登记册 Open item #3 本来就欠一个 PSVS R2 号 (R1 带着已知缺陷在外面),260225 正好填进去。
本轮修订产出的版本号:PQ-260226-R1
(原稿 PQ-260226 无 revision 后缀,视为 R0,从未发出)。
⚠️ 连带修正:登记册 Open item #3 现写「PSVS R2 用 PQ-260224」—— 该条已过期,PQ-260224 已在 08-19 被 Yoongmei 消耗。
修订后金额按 Jay 指示重算(Core 取建议价 RM 12,500):
| 项 | 原稿 | 修订后 |
|---|---|---|
| Core Module(含新增两项范围) | RM 8,500 | RM 12,500 待 Jay 确认 |
| Master Data Sync(可选) | RM 2,600 | RM 2,600 |
| Document Lock(可选) | RM 1,000 | RM 2,000 |
| Audit Module(可选,新增) | — | RM 3,000 |
| 其他 add-on(单据类型 / 第 2 个 DB / 双向同步 / on-site 培训) | — | 见第 4 段 |
| 可选模块池 | RM 3,600 | RM 7,600 + |
前提更正Sengliy 不是新客户 —— 关系已经九个月。
证据在 WA 群 SengLiy x VSTECS KU(120363402423833016@g.us,5 人:
WeiKeng、Justin Koh (VSTECS)、Jay、Jas、Tenzo AWS Cloud)。2025-12 起就在一起做
AWS Bedrock POC,Prisma 在中间协调 VSTECS 与 AWS 处理 Bedrock quota 问题。
payment-to-sengliy-rm7000 对应的是那条线上的 reimbursement
——2026-05-06 WeiKeng 追问 「any update on the reimbursement? It is already May now 😅」,
即钱是往 Sengliy 方向走的。
三点直接影响这份报价:
⚠️ 一个关系上的疙瘩:那笔 reimbursement 曾拖到客户主动 追问。这不是降价的理由,但确实是别再让他觉得吃亏的理由 —— 该给的条款要清楚, 该收的钱要收。
BLOCKER 1报价编号跳号。
登记册记载下一个可用号是 PQ-260225(最高已发 PQ-260224 = Yoongmei),
Dhai 直接用了 PQ-260226,跳过 260225 留下永久空号。登记册规则明确写着
「Never reuse a number」,但也没有留空号的机制 —— 空号会在日后审计时变成「有一份报价不知去向」。
两条路:① 保留 260226 给 Sengliy,把 260225 锁给逾期未出的 PSVS R2(推荐,正好填坑); ② 把 Sengliy 降到 260225。因为还没发客户,两条都免费。
BLOCKER 2编号缺 -R0 后缀。
登记册 Open item #7 是点名给 Dhai 的模板整改,要求编号栏写成
PQ-YYNNNN-Rn。这份仍然只有 PQ-260226。同一整改项里的另外两条(硬日期、
签署人)也全部没改 —— 详见第 8、9 段。
核对抬头写的是
SENG LIY ENGINEERING (M) SDN BHD + 8, Jalan Tiram 14, Taman Perindustrian Tiram,
81800 Ulu Tiram, Johor + TEL +65 8161 9788。
客户 08-25 15:46 只说了六个字「pls use sengliy Engineering」。完整注册名和整个 Johor 地址不在那句话里。既然是老客户,正确做法是从上一单的单据里调出来核对,而不是重新拼。 发出前确认一次 —— 抬头错的报价在客户内部采购走不通。
马来西亚地址配新加坡电话本身不矛盾(本地实体 + SG 联系人 WeiKeng),不必当成错误。
整份报价只有一个 line item。结构上没问题(可选模块另列),但 RM 8,500 这个数字有问题。
| 项目 | 内容 | 价格 | 状态 |
|---|---|---|---|
| Melody WMS PQ-260203 |
AutoCount ↔ QianYi WMS 同步 plugin,含 6 个月支持 | RM 13,900 | ✅ 已签、已上线 |
| IOFiz PQ-260223 |
AutoCount API 集成 3 模块 | RM 7,000–9,000 + RM700/年 |
已发,无回应 |
| Sengliy PQ-260226 |
Portal → AutoCount 同步 plugin,含 6 个月维护 | RM 8,500 无 recurring |
草稿 |
价格 1报的是 Melody 的 61%,而功能面并不更简单。
Sengliy 比 Melody 多出来的部分:JWT token 自动刷新与重试、UI 设置面板、桌面弹窗 + 邮件双通道告警、 按 DocNo 的日志与失败重跑。这些都是真工作量。
更关键:客户从来没有嫌贵。
这个降价完全来自内部,不是客户压出来的。原本的 RM10k 没有任何一方反对过。 加上 Sengliy 是老客户 —— 老客户是议价筹码,不是降价理由。
建议 Core Module 报 RM 12,500,理由随手可给(Melody 同类 13,900、本单多出告警/UI/日志重跑)。 若想快签,最低守 RM 10,000,别低于 Melody 的 70%。
决定性证据这个客户每年在 AWS 上花 RM 31,000。
Notion 页 SengLiy Agentic AI Platform Development(2025-10)里有他们自己的基础设施预算:
| 项 | 金额 |
|---|---|
| AWS 月度成本 | USD 581.12 ≈ RM 2,580 |
| AWS 年度成本 | USD 6,973.44 ≈ RM 31,000 |
RM 8,500 → RM 12,500 的差价是 RM 4,000 —— 还不到他们两个月的云账单。 一个自建 agentic AI 平台、年付 RM31k 基础设施的客户,不会因为这 RM4,000 走掉。
而且他们敏感的不是总价,是计价方式。同一份 Notion 记录写着:Google 方案 「expensive per-user」、Amazon Q 「too costly per-user basis」,他们明确要 usage-based pricing。→ 谈价要按价值和用量讲,不是压总价。
锚定风险这是第一笔付费单,会给后面所有单定价格锚。
同一份 Notion 页记录了一个还敞开着的更大机会:Prisma 的 AI-LiveChat 平台与 Sengliy 需求高度契合(AWS 托管、usage-based 计价、 多渠道、RAG 架构),列了三种合作模式 —— white-label / joint development / referral partnership。
2025-09-04 会议的 action item「Jay/Prisma: Discuss AI-LiveChat collaboration potential」 至今从未关闭。
AutoCount 这单把价格锚在 RM8,500,AI-LiveChat 的报价空间会被自己压低。 这是比 RM4,000 差价大得多的代价。
要价的点Notion 记录 Sengliy 「no dedicated cloud engineer available」, 所以架构选型一路偏向托管服务。这条对本项目同样成立 —— 报价里的 Settings from UI · Fail alert · Log by DocNo + retry 正是 替客户省掉运维人力的功能,对一个没有专职工程师的团队价值极高。 这些是该要价的点,不是该砍的点。
写得好这是整份报价最强的部分,六条每一条都指向一个真实的失败模式:
这几条读起来是懂 AutoCount 集成的人写的,技术可信度高,原样保留。
Jay 指示 2补一条:同步频率 / 每日触发次数要能在界面上设定。
客户现在的需求是「每天自动同步一次」,但将来可能要更频繁。现稿的 「Settings from UI」写得太笼统,客户读不出这一层。改成明确的一条:
这一条对客户价值很高(他们没有专职工程师,改频率要能自己动手), 而且写清楚等于把「以后想改频率」这件事从未来的免费支持请求变成今天就交付的功能。 是加价理由,不是白送。
Jay 指示 5 · 要问 DhaiPortal 上已同步的单据被改了,要能重新同步。
客户 08-24 的书面需求第 5 条其实已经包含这个意思 (「If exists, perform update/cancel. Otherwise, insert as new record」)—— 所以这不是新增范围,是已经承诺了的范围。问题在于复杂度被低估了:
两个动作:
① 问 Dhai:这一块你知道吗?评估过工时吗?如果他报 RM 8,500 时没把 「edit → re-sync」的比对逻辑算进去,那这个价更加不能发。
② 加同步 audit trail 降低我方责任 —— 每一笔写进 AutoCount 的动作都留痕: 时间、DocNo、动作(insert/update/cancel)、来源 payload、结果。出事时能立刻指出 「我们收到的就是这个」。配套条款:
💡 这条 audit trail 是内建在 Core 的责任护栏, 与第 4 段那个可选的 Audit Module(RM 3,000)不是同一件事 —— 后者是给客户自己比对两边一致性用的工具。两者都要,别混为一谈。
议价材料反过来看 —— 这六条就是 RM8,500 太便宜的证据。 把它们摊开谈,RM12,500 完全站得住:单是 UI 设置面板 + 双通道告警 + DocNo 级日志重跑, 就已经超出「一个同步脚本」的范畴了。加上 Jay 新指示的可配置触发频率、编辑后重新同步、 同步 audit trail 三项,Core 的工作量比原稿定价时又多了一截。 谈价时把这段念给客户听。
价格 3Jay 要的是「a lot of optional add-on」,这里只有两个。
08-25 15:52 Jay 的原话是 「Put a lot of optional add-on for them」。现有两项合计 RM 3,600,锚定作用太弱 —— 客户看完只会觉得「主菜 8,500,加菜 3,600」,总盘子还是小。
修订后的完整可选模块池(含 Jay 指示 3、4):
| Add-on | 价格 | 来源 |
|---|---|---|
| Master Data Sync(Stock Item / Debtor / Creditor) | RM 2,600 | 原稿 |
| Document Lock(AC Scripting,Portal 保持 single source of truth) | RM 1,000 → RM 2,000 | Jay 指示 3 |
| Audit Module — 比对 Portal 与 AutoCount 已同步单据的一致性, 出差异出报表,供客户日后自行除错 | RM 3,000 | Jay 指示 4(新增) |
| 追加单据类型(Invoice / PO / Sales Order),每类 | RM 1,800 | 建议 |
| 第 2 个 company database | RM 2,200 | 建议 |
| 双向同步(AutoCount → Portal 回写状态) | RM 6,500 | 建议 |
| On-site 部署 + 用户培训(半天,JB 区) 线上培训不另收费 — Jay 指示 6 |
RM 1,200 | 建议 |
| Annual Maintenance Contract(optional,第 7 个月起) 客户不要年费 → 放着锚定,不主推 — Jay 指示 6、8 |
RM 2,400/年 | 建议 |
Add-on 池做到 RM15k+,RM12,500 的 core 看起来才合理。这是定价心理,不是灌水。
Jay 指示 4Audit Module 是这轮加得最好的一个 add-on —— RM 3,000。
它做的事:定期(或按需)把 Portal 与 AutoCount 两边已同步单据逐笔比对, 列出只存在于一边、金额/数量对不上、状态不一致的记录,出一份差异报表。
为什么它好卖:
⚠️ 写进报价时要和 Core 里的 sync audit trail 明确区分:Core 的 trail 记录我们做了什么;Audit Module 检查两边现在一不一致。 否则客户会问「我不是已经有 audit 了吗,为什么还要付 RM3,000」。
用词「Adhoc Module」这个命名会造成混淆。
同一份文件里,第 3 段已经用 adhoc trigger 表示「用户手动触发同步」。
一个词两个意思,客户读到「Adhoc Module」会以为是跟手动触发相关的东西。
改成「Optional Add-on Modules」。
写得好Document Lock 那条的论证方式值得保留 —— 它不是罗列功能,而是给了一个理由:「so the Portal stays the single source of truth」。 这是卖点写法。而且顺手把 AC Scripting licence 的成本推给客户,干净。
Jay 指示 7 · 最重要的一处改动 🔴 删掉「6 个月免费维护含 AutoCount 版本升级导致的错误」。
现稿这句话等于:AutoCount 每年升级一次,我们免费承担一整个升级周期的适配工作, 而且没有上限。Jay 的指示是明确的 —— AutoCount 升级如果需要我们改代码,另开一份报价。
改成:
这一条单独就值这份 review。原稿把一个开放式、逐年重复、金额不可预估的风险 白送了出去;客户从来没要求过这个。
Jay 指示 6 + 8年费改成 optional,客户端自身问题按次收费。
Jay 的判断是客户不会要年费,所以 AMC 不主推 —— 但仍然写上去, 作用是锚定价格:第 7 个月起支持是有价的,不是默认免费。
「客户端自身问题按次收费」这半句是关键。没有它,客户端 PC 关机、 网络断掉、他们程序员改坏了 API —— 每一次我们都要免费去查。 Melody WMS 此刻就在替我们演示这个后果。
Jay 指示 6培训拆成两档:线上免费,on-site 收费。
这样写对双方都干净:客户拿到「有培训」的安心(而且线上培训我们成本极低), 真要人跑一趟 JB 时我们收得到钱。比笼统写「培训另议」好谈得多。
Jay 指示 9「within 4 weeks from kickoff」—— kickoff 写死定义。
是收到订金那天?还是客户交出 Portal API 文档那天?Jay 确认要写清楚, 定义成两者中较晚者:
没有这个定义,客户拖三周才给 API 文档,逾期的却是我们。
写得好「always-on Windows PC」这一条是有前车之鉴的。 Melody WMS 此刻就卡在这上面 —— 客户端 PC Offline,我们干等了 5 天。把它写进客户责任是对的。
缺口写了要求,没写不给的后果。 这一条现在只是一句愿望。补上:
没有这句,客户端拖延时我们既交不了货、又收不到钱 —— 正是 Melody 现在的处境。
写得好这段是整份报价第二强的部分:
缺口没有 SST / 服务税声明。
RM 8,500 是含税还是不含税?Prisma 若已注册 SST,这一栏空着会在开票时变成争议。
加一行 All prices exclude SST where applicable.(或按实际情况写明含税)。
条款漏洞UAT 无时限 → 尾款可以无限期悬空。
现在写的是「50% signing, 50% UAT」,但没有规定 UAT 必须在什么时候完成。 客户只要不做验收,我们的 RM4,250 就永远收不到,而且没有违约可言。
这不是假设 —— Melody WMS 此刻就在这个坑里。补上:
BLOCKER 2(续)「Valid 30 days」不是硬日期。
登记册 Open item #7 明确要求 Valid until 必须写死日期。相对天数的问题在
Lima Bintang 那份已经栽过一次 —— 从哪天起算、客户和我们各算各的,到期时无法主张。
改成 Valid until: 24/09/2026。
BLOCKER 3对外报价的 Authorised Signature 是 Dhai。
Dhai 是 lead dev,不是董事。这已经是第二次 —— PQ-260224(Yoongmei,RM15,000) 也是他签的。是模式,不是意外。
金额争议或走法律程序时,非董事签署的报价,其签署权限会被对方质疑。 Sengliy 是老客户且有跨境成分(SG 联系人),更不该在这里留口子。
改成 Jay 或 Kae Shyong 签署。Dhai 可以留在 Prepared by 一栏。
留意「20% cancellation fee」这条是从货品模板继承来的。 原文写的是 「Goods sold are neither returnable nor refundable」 —— 这是卖货的措辞, 软件开发项目套用会显得模板化,而且真要主张 20% 违约金时,「goods」的定义会成为争点。 建议改写成按已完成阶段计费的措辞。
给 Dhai 的一句话下面 13 项做完 = R1 定稿。第 1 项要 Jay 先给数字, 第 5 项要你先回答「知不知道 / 算没算工时」。其余可以直接动。
| # | 动作 | 谁 | 时限 |
|---|---|---|---|
| 1 | 定 Core Module 价格 —— 建议 RM 12,500(守 RM 10,000)。 Jay 指示 2、5 又加了范围,RM 8,500 更站不住 | Jay | 今天 |
| 2 | 编号:Sengliy 保留 PQ-260226,PQ-260225 锁给 PSVS R2;
本轮版本号 PQ-260226-R1 | Jay 确认 | 今天 |
| 3 | 🔴 回答:「Portal 单据编辑后重新同步」这块你评估过吗?工时算进 RM 8,500 了吗? (Jay 指示 5) | Dhai | 今天 |
| 4 | Core 加写「可配置同步频率 / 每日触发次数」(Jay 指示 2) | Dhai | 明天 |
| 5 | Core 加写「Portal 单据编辑后 re-sync」+ 同步 audit trail + Portal API 缺陷免责条款(Jay 指示 5) | Dhai | 明天 |
| 6 | Document Lock RM 1,000 → RM 2,000(Jay 指示 3) | Dhai | 明天 |
| 7 | 新增 Audit Module RM 3,000(Jay 指示 4) | Dhai | 明天 |
| 8 | 🔴 删掉「6 个月免费维护含 AutoCount 升级导致的错误」, 改为「升级需改码 → 另开报价」(Jay 指示 7) | Dhai | 明天 |
| 9 | AMC 改 optional RM 2,400/年;无 AMC 或客户端自身问题 → RM 350/次 (Jay 指示 6、8) | Dhai | 明天 |
| 10 | 培训拆档:线上免费 / on-site RM 1,200(Jay 指示 6) | Dhai | 明天 |
| 11 | kickoff 定义 = 订金到账 与 客户交 API 文档 两者中较晚者(Jay 指示 9) | Dhai | 明天 |
| 12 | 改 PQ-260226-R1 编号格式、Valid until 24/09/2026、
签署人换董事(Jay 或 Kae Shyong) | Dhai | 明天 |
| 13 | 补 UAT 14 天条款 + 客户端延误 day-for-day 条款 + SST 声明; 「Adhoc Module」改名「Optional Add-on Modules」 | Dhai | 明天 |
| 14 | 从上一单单据(2026-05 Sengliy 开给 Prisma 的 RM 7,000 invoice)核对完整注册名与地址 | Dhai | 明天 |
| 15 | 改好后登记进 quotation-register + CRM,再发客户 | — | 发出前 |
时间线08-24 已承诺「quotation within this week」。今天是周二, 剩 3 个工作日,而且 Dhai 周六日休息 —— 周末不是缓冲。 第 1、2、3 项今天定,Dhai 明天一天能改完,周四发出仍在承诺内。
仍然欠着Chang 的三方案成本对比(SDK dll / Web API / plugin) 从 08-24 到现在没交,而这份报价已经按 plugin 定稿定价。 若对比结论指向另外两个方案,整份报价重做。 客户 08-07 一开口要的就是这个对比 —— 我们等于跳过了他的问题直接给答案。