南京师范大学校内自动售货机价格分布表Skill
Overview
本技能管理南京师范大学仙林校区自动售货机的位置、品类、价格、支付方式、可靠性(卡货)数据,并生成可筛选、可排序、含避雷榜和退款指南的交互式网页。
本包仅含两个文件:
- SKILL.md — 全部说明与模板内嵌(采集指南、数据规范、退款指南、CSV 模板与示例数据见文末附录);
- index.html — 交互网页模板(含 __VENDING_DATA__ / __MACHINE_DATA__ / __GENERATED_DATE__ 三个占位符)。
首要动作:触发即展示页面(必须先做)
被触发后的第一动作,按顺序判断:
- 若工作区中已存在本技能生成过的指南网页(命名形如
vending-guide-YYYYMMDD.html)→ 立即用 present_files 打开最新一版,再处理用户的具体问题。 - 若已有商品价格数据和机器台账但尚未生成网页 → 立即走「Step 3 生成交互网页」,先出页面再回答。
- 若完全没有数据 → 诚实告知数据尚未采集,展示「附录 A 实地采集指南」的采集方案,不要用示例数据冒充真实数据生成页面。
原则:先给页面,再答问题。页面本身就是答案的主体。
Workflow Decision Tree
- 用户问位置/品类/价格/支付/避雷 → 首要动作出页面,然后用数据直接回答(如"学正楼 1F 东侧走廊,农夫山泉 2 元,支持刷脸")。
- 用户没有数据,想采集 → 「Step 1 数据采集指导」。
- 用户提供了数据(CSV/Excel/文字/照片/同学反馈)→ 「Step 2 数据录入与维护」。
- 用户被吞钱了 → 先给出「附录 C 退款指南」的现场 3 步自救,再提供升级投诉渠道。
Step 1: 数据采集指导
- 按「附录 A 实地采集指南」的点位路线和采集规范指导用户。
- 提供两份 CSV 模板(内容见「附录 D」,落盘时保存为
data-template.csv与machine-info-template.csv,UTF-8 编码)。 - 每台机器拍 3 张照片:机身全景、价格屏幕、机身客服电话贴纸(退款时要打)。
- 台账必填项现场就能确认:位置、在售品类(水/饮料/泡面/面包/零食)、支付方式、能否刷脸;可靠性初期默认"正常",之后根据自己和同学的遭遇更新。
Step 2: 数据录入与维护
- 按「附录 B 数据规范」整理两份数据:商品价格表 + 机器台账,UTF-8 CSV。
- 常见清洗项:价格去掉 ¥ 符号、商品名统一"品牌+品名+规格"、品类按枚举归类(矿泉水归"水",茶/碳酸/果汁/咖啡归"饮料")、日期
YYYY-MM-DD。 - 可靠性更新规则:自己或同学遇到一次卡货/吞钱 →
偶尔卡货;两次以上或长期不出货 →经常卡货,并在 notes 写明具体表现。恢复正常后改回并更新 last_checked。 - 校验:同一
(machine_id, product_name)去重;台账中每个 machine_id 一行;价格表出现的 machine_id 台账中应有记录。 - 文件命名
vending-data-YYYYMMDD.csv、machine-info-YYYYMMDD.csv,存放于用户工作目录。
Step 3: 生成交互可视化网页
- 将两份 CSV 转为 JSON 数组。
- 复制本技能目录下的
index.html(与本 SKILL.md 同级,非工作目录下的同名文件)到输出目录,命名vending-guide-YYYYMMDD.html,替换三个占位符(替换含引号的整体;哨兵在全文仅出现一次,单次或全局替换均安全):
-"__VENDING_DATA__"(含两侧英文引号)→ 商品价格 JSON 数组字面量,如[{...},{...}]
-"__MACHINE_DATA__"(含两侧英文引号)→ 机器台账 JSON 数组字面量
-__GENERATED_DATE__→ 生成日期(如2026-09-01);此项本身不带引号,直接替换文本即可
注意:JSON 由 CSV 行对象组成,键名与「附录 B」列名一致;用 Pythonstr.replace或 JSreplaceAll,替换后文件中不应再残留任何__双下划线哨兵。
务必连同两侧引号一起换成裸 JSON 数组:若保留引号再填入未转义的 JSON(形如"[{"machine_id":"XL-JX-01"}]"),其内部双引号会提前终止 JS 字符串,直接导致SyntaxError、整页空白。确有需要保留字符串形式时,必须转义内部引号(即写入json.dumps(json.dumps(数组))的结果),模板会自行JSON.parse还原。 - 模板为单文件、无外部依赖,功能:总览卡片(机器数/刷脸/避雷数/均价/最低价,均随当前筛选联动)、按品类和楼宇筛选、售货机分布卡片(含刷脸标签与卡货红色警示,
经常卡货者置顶)、各点位均价条形图、明细表排序、全校最低价高亮、吞钱退款指南面板。占位符未替换时页面自动降级为空数据展示,不会报错;日期哨兵未替换时页头显示「未标注日期」。价格为空或含¥、元等杂字符的记录会被自动清洗,均价/最低价与条形图只统计有效价格,不会出现NaN。 - 生成后 立即用 present_files 打开,并附一句摘要(多少台机器、哪里最便宜、哪台要避雷)。
数据更新
用户补充新数据时:合并进最新 CSV(新记录覆盖旧记录,更新日期),重新生成新版网页并再次 present_files 打开。旧版网页保留供对比涨价。
附录 A:实地采集指南
采集范围
南京师范大学仙林校区。按功能分区覆盖,优先级从高到低:
- 教学楼区:学正楼、学海楼、学行楼(原 J1-J6 教学楼群)各楼层
- 图书馆区:敬文图书馆一至三层大厅、入口两侧
- 宿舍区:东区、西区、北区宿舍组团楼下及楼内一层大厅
- 体育区:体育中心(体育馆)、田径场周边
- 生活服务区:食堂(一食堂至四食堂)门口、大学生活动中心、校医院
- 其他:校门口、行政楼(厚生楼等)、道路沿线点位
建议路线(半天可完成主干)
校门口 → 敬文图书馆 → 学正楼 → 学海楼 → 学行楼 → 一食堂 → 二食堂 → 大学生活动中心 → 体育馆 → 西区宿舍 → 东区宿舍 → 北区宿舍
每台售货机需要记录的信息
- 机器编号:自定义格式
XL-<区域缩写>-<序号>,如XL-JX-01(教学楼 1 号机)。同一楼层多台机器用序号区分。 - 具体位置:楼宇 + 楼层 + 位置描述(如"学正楼 1F 东侧走廊")。
- 运营商:看机器机身标识,常见有友宝、农夫山泉、统一、乐家、中谷等。
- 支付方式:机身标注(微信/支付宝/云闪付/刷脸/投币)。
- 全部商品与价格:逐一记录商品名(含规格)、标价、是否有促销价(屏幕上跳动的折扣价)。
- 照片:每台机器拍 3 张——机身全景(含位置环境)、屏幕或价签特写、机身客服电话贴纸(吞钱退款时要打,见「附录 C」)。回来对照照片补录最省时。
采集规范
- 价格按屏幕实际显示记录,不按商品建议零售价;
- 促销活动价记入
promo_price,原价记入price,两列都填; - 同一台机器尽量一次性录完所有商品,不要漏掉下层便宜商品;
- 记录采集日期,后续复查涨价时能对比;
- 发现机器故障/空货道,在 notes 里注明"部分空货"。
注意事项
- 课间和午休时段人流大,采集尽量避开;
- 不要长时间堵在售货机前,可先拍照后补录;
- 数据仅用于个人比价参考,公开发布前注意不要包含他人肖像等隐私信息。
采集节奏建议
- 首轮:主干路线全覆盖,建立基础表;
- 之后:每学期开学初和期中各复查一次重点点位(教学楼下、图书馆),重点记录涨价/换商品;
- 新机器点位可随时补充。
附录 B:数据规范(商品价格表 + 机器台账)
本技能维护两份数据:商品价格表(每行一条商品价格)和机器台账(每行一台售货机的属性,含刷脸/卡货信息)。文件编码均为 UTF-8 CSV(如需用 Excel 直接打开,保存时建议加 UTF-8 BOM 头,避免中文乱码)。
一、商品价格表(vending-data)
| 列名 | 必填 | 类型 | 说明与示例 |
|---|---|---|---|
| machine_id | 是 | 文本 | 机器唯一编号:XL-<区域缩写>-<序号>,如 XL-JX-01、XL-TSG-02 |
| building | 是 | 文本 | 楼宇/区域名,如 学正楼、敬文图书馆、西区5栋 |
| floor | 否 | 文本 | 楼层,如 1F、B1 |
| location_detail | 否 | 文本 | 位置描述,如 东侧走廊、大厅入口左侧 |
| category | 是 | 枚举 | 水 / 饮料 / 泡面 / 面包 / 零食 / 其他 |
| product_name | 是 | 文本 | 品牌+品名+规格,如 可口可乐 500ml、康师傅红烧牛肉面 桶装 |
| price | 是 | 数字 | 标价,单位元,如 3.5(不加 ¥ 符号) |
| promo_price | 否 | 数字 | 促销价(元);无促销留空 |
| payment | 否 | 文本 | 支付方式,如 微信/支付宝 |
| operator | 否 | 文本 | 运营商,如 友宝、农夫山泉 |
| collected_date | 是 | 日期 | YYYY-MM-DD |
| notes | 否 | 文本 | 备注,如 部分空货 |
二、机器台账(machine-info)
每台售货机一行,machine_id 与商品价格表对应:
| 列名 | 必填 | 类型 | 说明与示例 |
|---|---|---|---|
| machine_id | 是 | 文本 | 同上,如 XL-JX-01 |
| building | 是 | 文本 | 楼宇/区域名 |
| floor | 否 | 文本 | 楼层 |
| location_detail | 否 | 文本 | 位置描述 |
| categories_sold | 是 | 文本 | 在售品类,多个用 / 分隔,如 水/饮料/零食、泡面/面包/饮料 |
| payment | 是 | 文本 | 支付方式,如 微信/支付宝/云闪付 |
| facepay | 是 | 枚举 | 是 / 否(是否支持刷脸支付) |
| reliability | 是 | 枚举 | 正常 / 偶尔卡货 / 经常卡货 |
| operator | 否 | 文本 | 运营商 |
| last_checked | 是 | 日期 | 最后确认状态日期 YYYY-MM-DD |
| notes | 否 | 文本 | 备注,如 货道7常卡、吞钱高发 |
校验规则
- 商品价格表中同一
(machine_id, product_name)只能出现一次;更新时新记录覆盖旧记录。 price合理区间:水/饮料 1~8 元,泡面/面包/零食 2~15 元,超出需人工确认。promo_price若填写,必须小于price。building名称前后必须一致(不要"学正楼"和"学正"混用),否则统计被拆成两个点位。- 机器台账中每个 machine_id 只能一行;商品价格表出现过的 machine_id 应在台账中有记录(缺失时提示补录)。
reliability为经常卡货的机器,notes 中尽量写明具体表现(哪条货道、什么商品)。- 商品价格表的
category取值必须属于枚举;水(矿泉水/纯净水)与饮料(茶/碳酸/果汁/咖啡)分开归类。
区域缩写约定(machine_id 用)
JX教学区(教学楼群)TSG敬文图书馆SS宿舍区TY体育区ST食堂/生活服务区XZ行政及其他
附录 C:被吞钱了怎么退款 · 投诉渠道指南
自动售货机吞钱(扣款不出货)是最高频问题。按以下顺序处理,多数情况 1~3 分钟内可自助解决。
一、立即自助处理(现场 3 步)
- 先等 30 秒:部分机器出货慢或卡在货道口,先检查取货口下方。
- 看机器屏幕/机身贴纸:绝大多数机器贴有 24 小时客服电话(400 开头)和机器编号,拨打后报机器编号 + 扣款时间 + 金额,客服可直接原路退款。
- 拍下证据:机器编号照片、扣款成功的支付凭证截图(后续投诉要用)。
二、按支付渠道申诉(客服电话打不通时)
微信支付:
- 支付凭证 → 联系商户(多数售货机商户会自动退)
- 或:微信 → 我 → 服务 → 钱包 → 账单 → 找到该笔 → 投诉 → "未收到商品"
- 微信支付客服 95017
支付宝:
- 账单 → 找到该笔 → 对此订单有疑问 → 我付款成功但未收到商品
- 支付宝客服 95188
云闪付: 账单 → 该笔交易 → 交易投诉;客服 95516
三、常见运营商客服电话
(以机身实际标注为准,以下为公开客服渠道,录入时按现场见闻核实更新)
| 运营商 | 客服渠道 |
|---|---|
| 友宝 | 机身贴 400 电话 / 友宝 App 内"客服中心" |
| 农夫山泉(自动售货) | 机身 400 电话 |
| 统一 / 乐家 / 中谷等 | 以机身贴纸电话为准 |
四、升级投诉(以上都无效)
- 12315:全国12315平台(www.12315.cn)或 12315 电话,对象写机器上的运营公司名称。
- 校内渠道:后勤服务热线 / 校园服务中心 / 数字校园报修平台登记,请学校施压运营商。
- 金额虽小,但"经常卡货"的机器值得多次投诉推动撤换——这也是本数据表记录
reliability的意义。
五、预防建议
- 优先使用
reliability = 经常卡货以外的机器; - 大额商品(泡面/大瓶装)尽量选扫码支付(有账单凭证可申诉),避免投币;
- 刷脸支付扣款不出货时同样走微信/支付宝账单申诉。
附录 D:CSV 模板与示例数据
以下内容供录入时参考。使用时将代码块内容保存为 UTF-8 CSV 文件(商品模板保存为 data-template.csv,台账模板保存为 machine-info-template.csv),示例数据仅用于演示格式、核对列名,不可冒充真实采集数据。
商品价格表模板(data-template.csv)
machine_id,building,floor,location_detail,category,product_name,price,promo_price,payment,operator,collected_date,notes
XL-JX-01,学正楼,1F,东侧走廊,水,农夫山泉 550ml,2.5,2.0,微信/支付宝,友宝,2026-09-01,示例行-录入时删除
XL-JX-01,学正楼,1F,东侧走廊,饮料,可口可乐 500ml,3.5,,微信/支付宝,友宝,2026-09-01,示例行-录入时删除
XL-JX-01,学正楼,1F,东侧走廊,泡面,康师傅红烧牛肉面 桶装,5.0,,微信/支付宝,友宝,2026-09-01,示例行-录入时删除
机器台账模板(machine-info-template.csv)
machine_id,building,floor,location_detail,categories_sold,payment,facepay,reliability,operator,last_checked,notes
XL-JX-01,学正楼,1F,东侧走廊,水/饮料/泡面/零食,微信/支付宝,是,正常,友宝,2026-09-01,示例行-录入时删除
XL-TSG-01,敬文图书馆,1F,大厅入口左侧,水/饮料,微信/刷脸,是,正常,农夫山泉,2026-09-01,示例行-录入时删除
XL-ST-01,一食堂,1F,门口东侧,泡面/面包/饮料,微信/支付宝/云闪付,否,经常卡货,乐家,2026-09-01,示例行-录入时删除(货道4吞钱高发)
商品价格表示例数据(example-data.csv,演示用)
machine_id,building,floor,location_detail,category,product_name,price,promo_price,payment,operator,collected_date,notes
XL-JX-01,学正楼,1F,东侧走廊,水,农夫山泉 550ml,2.5,2.0,微信/支付宝,友宝,2026-09-01,
XL-JX-01,学正楼,1F,东侧走廊,饮料,可口可乐 500ml,3.5,,微信/支付宝,友宝,2026-09-01,
XL-JX-01,学正楼,1F,东侧走廊,泡面,康师傅红烧牛肉面 桶装,5.0,,微信/支付宝,友宝,2026-09-01,
XL-JX-01,学正楼,1F,东侧走廊,零食,乐事薯片 原味 70g,6.5,,微信/支付宝,友宝,2026-09-01,
XL-JX-02,学海楼,2F,西侧连廊,水,怡宝纯净水 555ml,3.0,,微信/支付宝,友宝,2026-09-01,
XL-JX-02,学海楼,2F,西侧连廊,饮料,元气森林 白桃味 480ml,5.5,4.5,微信/支付宝,友宝,2026-09-01,
XL-JX-02,学海楼,2F,西侧连廊,面包,桃李醇熟吐司 320g,8.0,,微信/支付宝,友宝,2026-09-01,
XL-TSG-01,敬文图书馆,1F,大厅入口左侧,水,农夫山泉 550ml,3.0,,微信/刷脸,农夫山泉,2026-09-01,
XL-TSG-01,敬文图书馆,1F,大厅入口左侧,饮料,康师傅冰红茶 500ml,4.0,,微信/刷脸,农夫山泉,2026-09-01,
XL-TSG-01,敬文图书馆,1F,大厅入口左侧,饮料,雀巢咖啡丝滑拿铁 268ml,6.0,5.0,微信/刷脸,农夫山泉,2026-09-01,
XL-SS-01,西区5栋,1F,楼下大厅,饮料,可口可乐 500ml,3.0,,微信/支付宝,统一,2026-09-01,
XL-SS-01,西区5栋,1F,楼下大厅,泡面,统一老坛酸菜面 桶装,4.5,,微信/支付宝,统一,2026-09-01,
XL-SS-01,西区5栋,1F,楼下大厅,零食,奥利奥 夹心饼干 97g,5.0,4.0,微信/支付宝,统一,2026-09-01,
XL-ST-01,一食堂,1F,门口东侧,泡面,康师傅红烧牛肉面 桶装,5.5,,微信/支付宝/云闪付,乐家,2026-09-01,
XL-ST-01,一食堂,1F,门口东侧,面包,达利园法式软面包 340g,9.0,,微信/支付宝/云闪付,乐家,2026-09-01,
XL-ST-01,一食堂,1F,门口东侧,饮料,康师傅冰红茶 500ml,3.5,,微信/支付宝/云闪付,乐家,2026-09-01,
XL-TY-01,体育馆,1F,主入口右侧,水,农夫山泉 550ml,4.5,,微信/刷脸,农夫山泉,2026-09-01,
XL-TY-01,体育馆,1F,主入口右侧,饮料,尖叫 运动饮料 550ml,5.0,,微信/刷脸,农夫山泉,2026-09-01,
机器台账示例数据(example-machine-info.csv,演示用)
machine_id,building,floor,location_detail,categories_sold,payment,facepay,reliability,operator,last_checked,notes
XL-JX-01,学正楼,1F,东侧走廊,水/饮料/泡面/零食,微信/支付宝,是,正常,友宝,2026-09-01,
XL-JX-02,学海楼,2F,西侧连廊,水/饮料/面包,微信/支付宝,是,偶尔卡货,友宝,2026-09-01,下层货道偶尔不出货 等待30秒再拍机器
XL-TSG-01,敬文图书馆,1F,大厅入口左侧,水/饮料,微信/刷脸,是,正常,农夫山泉,2026-09-01,
XL-SS-01,西区5栋,1F,楼下大厅,饮料/泡面/零食,微信/支付宝,否,正常,统一,2026-09-01,
XL-ST-01,一食堂,1F,门口东侧,泡面/面包/饮料,微信/支付宝/云闪付,否,经常卡货,乐家,2026-09-01,货道4吞钱高发 优先去隔壁二食堂门口那台
XL-TY-01,体育馆,1F,主入口右侧,水/饮料,微信/刷脸,是,正常,农夫山泉,2026-09-01,
Resources
本包为精简自包含结构,仅两个文件:
- SKILL.md — 全部说明与内嵌模板(本文件)
- index.html — 交互指南网页模板(占位符:__VENDING_DATA__ / __MACHINE_DATA__ / __GENERATED_DATE__)
无其他依赖;网页模板为单文件、无外部资源引用,可离线运行。