西北政法大学校园猫咪图鉴
概述
此技能用于生成西北政法大学(长安校区 + 雁塔校区)校园猫咪的互动式图鉴页面。产出一个独立的 HTML 文件,包含猫咪卡片展示、校区筛选、品种分类、性格标签、出没地图等功能,以可爱治愈的风格呈现西法大"猫学长们"的日常生活。
何时使用
- 用户询问"西法大有哪些猫""西北政法大学校园猫咪"
- 用户提到"猫学长""猫咪图鉴""校园撸猫攻略"
- 用户想看"天平楼的猫""图书馆的猫""操场的猫"
- 用户搜索"校园流浪猫""大学城猫咪""西安高校猫图鉴"
- 用户想了解西法大猫咪的名字、性格、出没地点
工作流程
第一步:加载猫咪数据
读取 references/campus-cats.md 获取完整的猫咪档案数据。该文件收录了长安校区已命名猫咪的名称、品种、毛色、性别、性格、常驻地点、出没时间、亲密度、投喂提示和背景故事。
如需补充最新猫咪信息(新出现的猫咪或更新状态),可使用 WebSearch 搜索"西北政法大学 校园猫咪 2025 2026"获取最新数据并追加。
第二步:生成猫咪图鉴 HTML
使用 generate_cat_guide.py 脚本生成(位于项目工作目录),或直接手动填充模板:
- 数据源:
references/campus-cats.md(猫咪档案)+generate_cat_guide.py内的CAT_DATA(最新 JSON 数据,两者需保持一致) - 模板:
assets/cat-guide-template.html,猫咪数据嵌入__CAT_DATA__占位符 - 生成:运行
generate_cat_guide.py,输出西北政法大学猫咪图鉴.html - 如需开启跨设备云同步,调用
generate(sb_url=..., sb_key=...)注入 Supabase 配置(SB_URL 需含 /rest/v1 后缀,SB_KEY 为 anon public key)
第三步:展示与交付
使用 present_files 工具展示生成的 HTML 文件,用户可在浏览器预览面板中交互浏览猫咪图鉴。如需上线,通过 CloudStudio 部署静态站点。
模板说明
assets/cat-guide-template.html 是一个完整的单页应用(v3),包含以下功能:
- 猫咪卡片网格:每只猫咪展示名字(带emoji)、真实照片头像、品种标签、毛色、性别、性格描述、常驻地点、出没时段、亲密度星级
- 品种筛选:橘猫、狸花猫、三花猫、奶牛猫、黑猫、橘白猫(按钮必须与实际 CAT_DATA 的 breed_key 一致,无对应猫的品种不显示)
- 性格标签筛选:亲人可撸、胆小谨慎、吃货属性、高冷傲娇(按钮必须与实际 CAT_DATA 性格匹配一致,无对应猫的性格不显示)
- 亲密度排序:五星满级 → 一星谨慎
- 地点分布地图:按教学楼、图书馆、操场、宿舍区、食堂等区域展示猫咪分布
- 撸猫攻略:投喂注意事项、安全撸猫指南、校园猫咪保护倡议
- 猫咪人气投票:排行榜 + 卡片投票按钮,爱心飘出动画
- 👀 目击猫咪系统:用户提交"在哪看到哪只猫"的表单 + 目击时间线
- ⚙️ 运营管理面板:密码保护(默认
cat2026),支持标记猫咪暂离/已离校、发布公告、清空投票 - 状态徽章:猫咪卡片显示"暂离/已离校"徽章
- 顶部公告条:运营者发布的公告滚动展示
- 视觉风格:暖色治愈系,hero 封面完整展示(cover.png,不裁切)
数据存储方案(重要)
存储层为 Supabase 云数据库 + localStorage 兜底,模板中实现了统一的 cloudRead / cloudWrite / mutateData 抽象:
- 配置变量:
SB_URL/SB_KEY(模板中为__SB_URL__/__SB_KEY__占位符,未配置时自动降级本地模式) - API 端点:
{SB_URL}/cat_data?id=eq.main(PostgREST REST,单行 JSON 文档存储) - 请求头:
apikey/Authorization: Bearer <anon key>(anon public key) - 写入方式:
POST /cat_data+Prefer: resolution=merge-duplicates(UPSERT,固定 id='main') - 表结构:
cat_data(id text PK, votes jsonb, sightings jsonb, cat_status jsonb, announcements jsonb) - 字段映射:JS 侧
catStatus⇄ 数据库列cat_status(normalizeData 双向兼容) - 降级策略:云端不可用时自动回退 localStorage,页面不崩
> ⚠️ 历史:jsonblob(24h 过期)已废弃;LeanCloud 国内版停止新注册、国际版 2026-01 起停注册(2027-01 关服);Bmob 域名 bmob.cn 被阿里云封禁、免费版需自备备案域名。最终选定 Supabase 国际版(免费额度 500MB / 2GB 月流量,邮箱注册无门槛)。
>
> 🔧 首次启用 Supabase 的步骤(用户操作):
> 1. 注册 https://supabase.com → New Project(区域选 Singapore 离国内近)
> 2. SQL Editor 执行建表脚本(见下方代码块)
> 3. Settings → API 复制 Project URL(含 /rest/v1)和 anon public key
> 4. 把 SB_URL / SB_KEY 发给助手,注入 generate() 重新生成并部署
数据维护
猫咪数据基于长安猫舍(西法大TNR小队·小红书)的一手记录整理,以一手数据为准。若用户反馈某猫咪已离校、新猫咪入住或信息有误,应更新 references/campus-cats.md 和 generate_cat_guide.py 中的 CAT_DATA。新增猫咪按现有 JSON 格式追加即可。运营中的状态变化(暂离/离校)通过页面运营面板标记,无需改代码。
注意事项
- 猫咪的状态(是否仍在校园)可能变化,运营面板可实时标记;页面底部注明数据整理时间
- 校园猫咪均为流浪/半流浪状态,页面需包含"文明撸猫、请勿伤害"的提示
- 投喂信息为经验性建议:统一推荐猫粮、冻干类,不推荐猫条等湿粮
- 猫咪头像使用真实照片(
dist/cat-avatars/,已压缩为最长边≤1000px、JPEG q80、渐进式,全部<110KB);卡片介绍下方展示同图大图(.cat-photo,高240px object-fit:cover),无照片的猫自动隐藏大图、头像回退 CSS 品种渐变 - 运营密码
cat2026是硬编码在前端的,只防普通同学误操作,如需更安全需自建后端