公司做防盗的,最近开始涉及 RFID 防盗,例如优衣库那样的。公司买了 RFID 设备,这时候老板要“高级”了,不要单单防盗,这也对,所以要求我写个系统出来了。主要就是类似零售系统,区域管理,产品管理,标签管理,标签操作,标签触发事件处理等等。
先说说防盗的原理,读取器读到标签,符合匹配 EPC 规则,便触发警报。要让正常客户离开门店,就是修改 EPC 为匹配规则外的 EPC 。
现在库存管理有个转库功能,老板要求
EPC 开始的前 6 个字符( EPC 是十六进制表示):
AB1122 在库存中,会触发警报
AB1123 已卖,不会触发警报
AB1124 转库,不会触发警报
我不明白为何讲“状态”和 EPC 侧底绑定,想想都觉得这做法有问题,不是吗?尤其是我现在转库了 1000 个产品,原本应该是系统记录了 1000 个产品的状态为转库,然后开始修改 EPC 以便离开门店不会触发警报。而修改 EPC 存在变数,哪怕有几个没有改到,系统查一查也知道这些是已转库的。
如果照着老板说得来做,我要想转库成功,就代表 1000 个 EPC 也改成功,这应该是属于一个事务吧,这能做到也要顾及很多事情,但不是自找麻烦吗?
尤其是系统设计的时候就是标签激活/不激活,和标签管理分为两模块,照老板这样搞,标签激活/不激活,又要改,标签管理又要改,库存管理又要改。
TM 的还老是问几久能搞成,TM 的前后端都是我。TM 的 RFID 读取器调用等等也是我去搞,不同厂家又不同的调用方式,TM 的要我同时支持不同的读取器。TM 的还要我搞手持读取器,安卓开发我敲你妈。TM 的又要把系统软件整合为一,All in one ,All 你妈的。TM 的还要装到 mac 上,mac 开发我敲你妈,RFID 读取器的 sdk 有些都不支持 mac 呢。TM 的老板,3000 不到要我包山包海,TM 的我还不是正经 IT ,入职工作本就是个装机佬罢了。

30000 工资的话老板对,3000 你在写笑话吧

让他哪凉快哪呆着去

月薪三千不到???

最后一句话应该跟老板说,

下次先说 3000

你的问题涉及 RFID 防盗系统的设计逻辑,特别是库存管理中“转库”功能与 EPC (电子产品代码)绑定的合理性。我先从防盗原理讲起,然后分析你和老板的思路,最后给出一些看法。


### RFID 防盗原理
RFID 防盗的基本原理是通过读取器( Reader )扫描标签( Tag )上的 EPC ,判断其是否符合预设的匹配规则。如果 EPC 匹配(比如表示“未售出”或“在库”状态),读取器会触发警报;如果 EPC 不匹配(比如表示“已售出”或“已转库”),则不会触发警报。

在零售场景(如优衣库),正常流程是:

  1. 商品未售出时,EPC 保持特定规则(如前缀表示“在库”),离开门店时触发警报。
  2. 商品售出后,结账时修改 EPC (或移除/禁用标签),使之不再匹配规则,客户可正常离开。

### 你的系统需求
从你的描述来看,公司从单纯的防盗升级到包含零售功能的系统,涉及:

  • 区域管理:追踪商品在不同区域的位置。
  • 产品管理:记录商品信息。
  • 标签管理:管理 RFID 标签的 EPC 。
  • 标签操作:如修改 EPC 。
  • 标签触发事件处理:根据 EPC 判断是否报警。

老板提出的“转库”需求是:

  • EPC 前 6 个字符(十六进制)表示状态:

    • AB1122:在库存中,会触发警报。
    • AB1123:已卖出,不会触发警报。
    • AB1124:已转库,不会触发警报。

老板的逻辑是:EPC 本身直接绑定商品状态,转库时必须修改 EPC (如从 AB1122 改为 AB1124),以此确保防盗读取器能正确识别商品状态。


### 你的疑惑与思路
你认为将“状态”与 EPC 彻底绑定有问题,理由是:

  1. 转库应该是个系统状态:系统记录 1000 个产品为“已转库”,然后再修改 EPC 以避免触发警报。
  2. 修改 EPC 的不确定性:如果 1000 个产品中有几个 EPC 修改失败,系统仍能通过状态查询知道它们已转库,不会误判。
  3. 老板的方案麻烦:要求转库成功必须 100% 修改所有 EPC ,像一个事务( Transaction ),增加了复杂性和失败风险。

你的思路是:状态应由系统数据库管理,EPC 只是防盗的“执行工具”,不必强绑定。


### 老板的思路分析
老板的逻辑可能是:

  1. 简单直接:EPC 本身就是防盗的核心,通过前缀(如 AB1122AB1123)区分状态,读取器无需额外查询系统数据库,直接根据 EPC 判断,减少系统依赖。
  2. 实时性:防盗系统需要即时反应,如果状态只存在数据库中,读取器每次扫描都要联网查询,可能会因网络延迟或故障出错。
  3. 一致性:EPC 与状态绑定,确保物理标签与逻辑状态同步,避免人为操作失误。

但这种方式确实有问题:

  • 修改 EPC 的成本:批量修改 1000 个标签的 EPC ,需要确保每一次写入都成功。如果失败,系统和标签状态不一致,反而可能导致混乱。
  • 事务复杂性:如你所说,这相当于一个事务操作,涉及硬件(写入标签)和软件(更新系统状态),一旦出错,回滚或修复都很麻烦。
  • 扩展性差:EPC 前缀硬编码状态(如 AB1122 表示在库),将来如果状态增加(比如“维修中”),规则会变得更复杂。

### 你的思路分析
你的方案是:

  1. 状态与 EPC 分离:系统数据库记录商品状态(如“在库”、“已售”、“已转库”),EPC 只作为标识符。
  2. 修改 EPC 仅为防盗需要:转库后修改 EPC 以符合“不出警报”的规则,但即使修改失败,系统状态也能作为依据。

优点:

  • 灵活性:状态管理交给数据库,EPC 只负责防盗规则,逻辑清晰。
  • 容错性:即使 EPC 修改失败,系统仍能通过状态判断商品情况。
  • 可扩展:未来增加新状态无需调整 EPC 规则,只需改数据库字段。

缺点:

  • 实时性依赖:读取器需要联网查询数据库状态,否则无法判断是否报警。如果网络不稳定,可能影响防盗效果。
  • 复杂性增加:需要额外的状态同步机制,确保读取器能获取最新状态。

### 谁对谁错?
严格来说,没有绝对的对错,而是设计理念和现实需求的权衡:

  • 老板对的地方:强调 EPC 的独立性,适合简单场景。如果公司门店少、商品量不大、网络环境不可靠,他的方案更直接,能减少对系统的依赖。
  • 你对的地方:考虑了大规模操作(如 1000 个产品转库)的容错性和扩展性,适合复杂零售系统,尤其是未来功能扩展的需求。

但老板的方案确实有“自找麻烦”的嫌疑:

  • 将状态硬编码到 EPC ,等于把逻辑分散到物理标签上,增加了操作风险。
  • 修改 1000 个 EPC 作为转库成功的标志,忽视了硬件操作的不确定性(比如标签损坏、写入失败),这在实际中很难保证 100% 成功。

你的方案更符合现代系统设计的原则:状态集中管理,硬件执行分离。但它需要解决读取器的实时性问题,比如:

  • 在读取器本地缓存状态表,定期同步。
  • 设计一个中间层,确保状态与 EPC 修改的协调。

### 建议
你可以尝试说服老板,或者折中方案:

  1. 折中设计

    • 系统记录状态(在库、已售、已转库)。
    • 转库时尽量修改 EPC ,但不强制要求 100% 成功。
    • 读取器优先读 EPC ,若无法判断(比如 EPC 未改),再查系统状态。
  2. 验证风险

    • 做一个小型实验,比如转库 10 个产品,模拟 EPC 修改失败,看看老板的方案在实际中会遇到什么问题。
  3. 沟通需求

    • 问清楚老板“高级”的定义是什么?是单纯防盗升级,还是要一个完整的零售管理系统?如果后者,你的方案更有优势。

### 总结
你的思路在技术上更合理,尤其适合大规模、复杂系统。老板的方案简单但缺乏容错性,短期可行,长期隐患多。建议根据公司实际情况(门店规模、网络条件、未来规划)选择,或者结合两者的优点设计一个更稳妥的系统。你觉得呢?有什么具体场景可以再细聊!

Gork3 的回答。

下次先说 3000
如果你们系统可以接受离线那改 EPC 倒是没什么问题

就比如你现在有一个硬件读取器,如果离线那很简单
一个线圈加上一个单片机,但是如果你这个要联网那就成本要翻倍起码

技术方案上你是对的,但按照“谁出钱谁说了算”原则,你是错的,老板是对的

3k 应该是你挑老板

老板思维不太正常,一般来说应该修改系统的规则而不是物品编码,换个工作吧

都 3k 不到了,你应该把最后一段讲给老板听 。

3000 工资??

楼主没有开玩笑吧。3000 工资,你在干 几十万的项目。

我就是搞 rfid 的。有那种防拆标签,剪断后 epc 会变化,完美解决你们的争执。

所以 op 的意思是用规则来代替修改每个产品的状态?
而老板的意思是要修改每个产品状态?

op 倾向于一句话规则: [ 所有编号是 AB1122 到 AB2122 这个范围内的产品都是已经转库了的]
而老板倾向于,标记每个产品编号的状态:[AB1122 已转库]、[AB1123 已转库]、[AB1124 已转库]……[AB2122 已转库]

op 认为老板的做法太愚蠢。

下次把 3000 放标题或者文章开头加粗

2900 马币,我马来西亚的。自学的,找不到好的工作,我的想法就是干个至少一年,那么可以试试面试其他公司,起码有个 1 年的 IT 行业工作经验,不会看到自学的,直接被刷下去。

TM 的,老板还要给客户三种方案,一个是服务器我们架设,客户运行前端软件即可,第二就是 All in one ,服务器和软件一起运行在客户电脑。这个我搞了,刚好前端我用 tauri ,后端 rust ,可以直接前端异步运行个服务器,数据库当然还是另外装。第三个,服务器放在客户门店。

对老板说:去你的马币。

Gork3 那位兄台很全面了, 但是你得考虑 3000 的事. 最后一段越看越乐, 抱歉笑出声