用 WorkBuddy,三天从 0 写出一个多租户城市站CMS
一个平台、多家企业、上百个城市分站。这篇记录我用 WorkBuddy 结对编程,三天完成数据层、门户、部署与子域名上线的全过程。
这是什么
城市站CMS 是我从 jamCMS 里抽出来的独立项目:一套多租户建站系统,每家企业一个独立后台,在省 / 市 / 区县三级里任选地区,批量生成 slug-hash 唯一地址的城市分站。
这篇不是教程,是一份工作日志——记录我和 WorkBuddy(AI 结对编程)怎么把这三天排满的。
Day 1:数据层与部署
第一天的目标很明确:先把线上跑起来,再谈功能。改动包括部门署结构重排(根目录部署:app / vendor / writable 在 Web 根之外,public 只放入口),加一版根目录 nginx 配置;数据侧调整 Geo 的路径剥离、联系表单跳转、后台链接模式。
当天最大的坑是部署方式:没有 SSH,只能在面板上传 zip、用带 token 的一次性 PHP 脚本解压和搬移。脚本用完即删,这条路径后来复用了三次。
Day 2:门户对齐
第二天做平台上层的行业门户:新增 Portal 控制器和整套视图,头部渐变、搜索条、焦点区、资讯三板块、侧栏地区导航 / 行业专题 / 热度排行、最新站点、四栏页脚。数据层加了行业专题表、阅读量字段和企业推荐位,另立了三家演示企业让「企业名录」不再只有一个品牌。
原则只有一条:复刻版式和信息架构,不搬运别人的文案、图片和内容。
Day 3:子域名与正式上线
第三天解决两件事:城市化址器和收录。城市站链接支持独立域名 > 子域名 > /s/ 路径 > 查询式四种模式,一条 env 配置切换;正式站统一去掉 noindex、robots 拦截和测试横幅,页脚带备案号。
排查清单也都真实发生过:泛解析对权威 DNS 查出来还是 NXDOMAIN(记录没保存成功)、宝塔强制 HTTPS 会把没有证书的泛域名 307 到打不开的 https、nginx 会优先命中静态 robots.txt 导致动态配置不生效。
和 WorkBuddy 结对的几点体会
- 指令比对话重要:给清文件路径、期望行为和验证命令,一轮就能落地;含糊的需求要靠来回追问补齐,反而更慢。
- 让它先写验证再写实现:PHPUnit、healthcheck、逐页 curl,改坏了当场就能发现。
- 大改动先在本地跑通再上线上,线上只做增量替换——三天里线上没有断过一次。
三天结束时的状态:各家租户内容齐备、门户 / 城市站 / 后台全部可访问。上线后又做了几轮调整:先把临时演示租户整体下线,随后按真实品牌重新上了四个租户(三家工业门 + 一家称重设备),再把地区库补到街道级、按省 / 市 / 区县 / 街道四级全量铺站——现在 4 家企业、179,344 个城市站、358,821 篇内容、16 款带图产品、12 个行业专题。