← 返回 PWE Studio 首页 English

客户资料

发布依据

面向客户的记录:本次发布改了什么、生产部署确立了什么,以及哪些承诺仍未完成。

已发布 v10.20.0 · 归档包、生产部署与浏览器验收均已完成

v8.1.0 之后

以下内容均属于已发布的产品版本。每一条都是交付依据,不是路线图承诺。

请按时间顺序阅读:旧条目描述的是当时版本的边界,不覆盖最新状态。当前 Xero 边界为带门控单向传输的 Beta,不再是早期的 Preview-only。

v10.20.0 —— 安静一点的后台:一页一个主操作,一个数字只说一遍

后台安静了,每个数字只说一遍。学员卡片上的三个动作现在分了主次——打开档案在前,充值与排课在后——不再是一整列同等急迫的按钮;签到名单保留每行的签到键,因为人来一个按一个就是这件事本身,而会把所有人一起签掉的批量签到不再压着它们喊。「待上课」标签现在只在**不是**常态时才出现,于是签一个人进去,那一行看得见地变了,课时不足也成了名单里唯一的记号。今天的人数过去在工作台上印三遍、学员总数印两遍,现在各说一次;课表的列表标题也不再重复它正上方的日期。后台不再有任何小于 11px 的文字。课时徽章现在会告诉读屏软件它数的是什么。侧栏那个绿色「已连接」删掉了——它没有接任何状态,断线了照样说已连接;顶栏那个是真的,留着。平台控制台的租户表不再把与上方标签一模一样的订阅状态再印一遍。另外,客户发布说明页在手机上不再横向滚动。**不改任何数据,你这边无需操作。**

v10.19.0 —— 像样的错误页、一个联系邮箱、一个真能发出去的咨询表单

输错的地址现在给的是一页说明,不再是一行 JSON —— 用你的语言写清楚工作室的公开地址长什么样、怎么回去。隐私政策、服务条款与支持政策上的联系邮箱统一为 info@pwestudio.site;产品站的咨询表单现在真的会填上收件人——此前两个按钮打开的都是一封没有收件人的空邮件,中文内容稍长还会**什么都不弹**。工作室官网即使页面脚本出错也能读:在此之前,一处报错会让整页几乎全部不显示。无障碍方面:手册的步骤编号与搜索高亮、两个控制台的二十处状态文字与六处悬停状态、三处缺失的键盘焦点框、次级按钮的描边,现在都达到文字与控件的对比度标准;把系统设成「减少动态」的人,CMS 的「连接中」指示又能动了;所有毛玻璃界面在「降低透明度」下都有实底兜底。产品站的主按钮改为墨色,琥珀色只保留在收尾的联系区一处,推荐套餐终于带上了主按钮。定价页上的价格只来自套餐表。**不改任何数据,你这边无需操作。**

v10.18.0 —— 产品首页搬到 /studio,公司官网接管根地址

PWE Studio 现在是 PWE · 天域 旗下的一条产品线,公司自己的官网接管 pwestudio.online 的根地址。产品首页搬到 /studio(中文 /zh/studio/),规范地址、语言切换、站点地图与 llms.txt 全部指向它;产品的 llms.txt 同时在 /studio/llms.txt 提供。你收藏过的地址都不受影响:工作室官网、报名、CMS、Studio Admin、定价、手册与客户文档的地址不变。公司官网各栏目(productionworktoolslabsaboutservicescontactai)以及产品自己的页面(studiopricingmanual 等)不再能作为工作室网址标识,新工作室不会被分到一个永远打不开的地址。如果你把 CMS 或学员门户加到过手机主屏,它现在打开的是控制台或产品首页,而不是公司官网;已安装的应用会在下次打开时自动刷新。工作室官网与 CMS 的页脚改为「Powered by PWE」。本版只改文字,不改任何 Logo、图标或图片。

v10.17.0 —— 最后一个在浏览器里编译样式的页面,和一份终于画出图标的报告

学员注册页此前要先下载一个 451KB 的样式编译器、在访客浏览器里现场编译,然后才显示内容;现在是一份提前编译好的 17KB 样式表,外观逐像素不变 —— 比对了 166 个元素的 21 个计算属性。发给家长的成长报告终于画出了那五个图标(它们此前是一段浏览器渲染为空、还会把旁边按钮文字吞进去的标记),并且整份报告只说一种语言:四句本该跟着报告语言走的文案从来没接上,英文工作室发出去的报告夹着中文。侧栏与课程帮助卡里的状态标签此前被兑向了错误的一端,对比度只有 2.75:1,现在是 8.50:1。

v10.16.0 —— 两份审计的交叉核实,与它们都没找到的那一条

「安排补课」以前会用掉家长的补课额度、不排出任何一节课、还报告成功。现在这两件事是一个事务:排不出课就不扣额度。点「已联系」不再清空你设好的下次跟进时间;待处理成了一个可以按「今天需跟进」筛选的队列。「查看发票」会打开那张发票,而不是一个空账本。手机上重新可以编辑官网。CMS 出错时显示说明而不是白屏,登录过期不再丢掉你正在填的内容。经营月报按全部历史统计,而不是最近 500 条。后台首次打开跟随浏览器语言,涉及金额与不可撤销操作的提示补齐了英文,CMS 也不再需要先下载一个 451KB 的样式编译器。

v10.15.0 —— 后台不再层层堆叠,官网多了三层材质

工作台四条同类提醒条合并成一个「需要注意」区,722px 的「最近操作」改为一行入口:落地页桌面高度 −43%、手机 −46%。课程安排分成「今日签到 / 排课设置」,对老师可见按钮从 55 降到 26,并新增整月展开。375px 手机上设置页七个分区全部可见。官网深色带加了纸纹、课程卡片加了分类水印、长页面顶部加了阅读进度线。(本条于 v10.16.0 发布时补写:当时骨架未填。)

v10.14.0 —— 产品首页把四个界面讲成同一个工作室故事

PWE Studio 产品首页围绕 Living Studio System 重建:品牌门户、快速报名、运营 CMS 与品牌工作台现在是围绕同一个工作室核心相连的四个界面。页面仍以语义 HTML 为事实层,并提供浅色 / 深色静态海报、Canvas 退化层,以及在合适桌面浏览器中加载的自托管 Three.js 场景。移动端、减弱动效、省流与 WebGL 失败时仍保留完整内容和所有普通链接。

v10.13.0 —— 前台可以签到,Staff 改称助教并收窄权限,课程安排页先给你看名单

前台现在可以给学员签到并扣课时。前台本来就能充值和手工调整余额;退款权限仍只属于 Owner / Manager。把签到挡在外面,只会让柜台绕道去手工改数字,而手工调整比绑定考勤的扣课时更难查。另外,「Staff」改称「助教」,并收成老师的真子集:助教能做的每一件事老师都能做。它此前比老师权限还大——能改学员档案、能看能改课时余额、能审报名、能看账单。如果你把某人设成了 Staff 并指望他改学员档案或调课时,请按职责改设为经理或前台。课程安排页上,当天的学员名单现在紧跟日期与当日概览;添加学员、班组模板、一对一循环课与固定课表都移到名单之下。桌面首屏现在能看到五行学员,此前一行也看不到。同一版收紧了两处权限边界。「一对一循环课」里的请假规则(决定临时请假老师照不照付课酬、工作室停课家长照不照付费)改为 Owner / Manager 专属:它此前和普通排课共用同一把钥匙,而前台持有那把钥匙,只是没有任何一页能走到那张表单——这一版给了前台课程安排页,所以先把它拆开。另外,待处理约课请求的列表(含每个家庭的姓名与手机号)现在与「批准 / 婉拒」需要同一种权限;此前它只要求登录,因此老师和助教也能收到。同时修正:手工修改课时余额现在会在操作日志里显示操作人(账本一直记着,日志从来没读出来);复制的日报标题跟着你选的日期走;「保存当前为模板」不再漏掉固定课表排进来的学员;「转为每周班次」会自动展开并滚动到编辑器,不再像是没反应;手机上的「当日操作」菜单点完会关;在学员档案里手工改课时余额现在会记名并进操作日志,与签到扣课时一致;工作台的生日提醒不再漏掉跨年的那一周。

v10.12.3 —— 修复:CMS 登录与家长预约(自 v10.11.0 起)

v10.11.0 的一次内部代码整理改动了一个模块引用,两条路径因此失效。登录 Studio CMS 对**所有工作室**返回「找不到」—— 浏览器里还持有有效会话的不受影响,所以只有在需要重新登录时才会遇到;公开课程表上家长提交预约表单则会报服务器错误。两条均已修复。登录框此前只显示内部错误代码,现在显示可读说明。两条路径都补了自动检查,同类改动不会再无声通过。

v10.12.2 —— 记过结算的样板工作室可以重置了

样板演示工作室一旦真的记过一次结算(在「充值与退款」里把课时挂到某笔收款上),「重置演示租户」就会失败并回滚,而且此后每次都失败。原因是重置漏清了两张持有收款记录引用的表,现已补上。此项只影响样板演示工作室,不涉及任何真实工作室的数据。

v10.12.1 —— 签到不再悄悄扣课时,演示数据各归各家

三处修正都在会花掉学员课时的那条路径上。批量签到的确认框以前固定写「今日」,实际操作的却是你选中的任意日期 —— 一整批课时可能被扣在下周三,而屏幕上从头到尾没有出现过日期;现在日期写在第一句。为一节还没上的课签到,现在会当面确认一次;超出可签到范围的日期,按钮变灰并说明原因。另外,「谁已经签到了」以前是从最近活动的滚动窗口里读的 —— 对流水较多的工作室,六周以前的签到会掉出窗口、显示成「待上课」,再按一次批量签到就是第二次扣课时;现在直接读那一天的考勤记录。批量签到失败也会说明原因,而不只是列出姓名。另外两项:工作台的生日祝福(含一键发送的短信正文)此前写死了一句面向绘画教室的话术,现在取自你自己的消息模板;开票信息由 Owner 维护 —— 经理此前看到的是一张能填、但保存必被拒绝的表单,现在是只读视图。

v10.12.0 —— 音乐行业样板工作室,以及演示重置的按租户分化

现在有了第二间样板工作室:墨尔本 Glen Waverley 的知音音乐,钢琴、小提琴、声乐与古筝、二胡、琵琶并行。里面有 12 名学员、9 门课程、公开课程表、一个学期的账务与学期末学习报告——全部为虚构的合成数据——面向音乐培训机构演示时,看到的就是一间音乐教室,不必再拿绘画工作室去讲乐器教学。底层上,样板生成器不再知道自己在生成哪个行业:房间名、付款人、发票行、学习报告的措辞都归属各自的行业包,新增一个行业就是新增一个内容文件。绘画样板的输出逐字未变。同时修正两处:平台管理的「重置演示租户」按钮此前无论在哪个演示租户上按下都会重建绘画样板,而审计记录写的是被按下的那一个——现在由租户决定重建哪一份内容,没有内容包认领的租户一律拒绝,确认短语也各自点名自己的工作室;另外两间样板此前把交接凭据写进同一个文件,后重置的一间会覆盖先前那一间。

v10.11.1 —— 演示站点文案纠正、集成页 Beta 标记与运维加固

四个公开演示页的页脚一直写着「数据每晚重置」,但那个定时器从未存在——演示租户一直是运营手动重置的,而且这是刻意的决定:样板数据何时该回到基线,取决于上一场演示做了什么。文案已改为与实际一致。Xero 集成页在用一个完整结算月的真实账目验证期间标记为 Beta,并用工作室看得懂的话说明期间该做什么。两组双语字段标签的中英半边译法不一致,已统一。运维方面:控制台浏览器冒烟检查进入发布门禁(不再靠人记得跑),数据库备份口令不再经命令行传递(此前主机进程列表可见),线上 nginx 配置连同一处仓库此前毫无记录的站点片段一起收编进版本控制。

v10.11.0 —— 代码结构大重构:拆单体、合重复,行为零变化

一轮面向维护性的重构,对外行为零变化,全部机器验证:15,926 行的后端 API 单文件拆为 13 个业务域模块(191 条路由拆分前后逐条比对全等);CMS 前端拆出七个面板文件并用 48 张截图流水线逐屏验证;三个界面从此共用一个翻译引擎(词典各自维护,新增门禁——词典重复键直接构建失败,首跑清理 52 个存量重复);两份密码哈希实现合为一份且所有历史格式仍可验证;两个控制台约 4,200 行内联脚本外置为版本化资产,并由新增的真浏览器冒烟检查守护——冒烟首跑即抓出并修复一个真实缺陷(工作室管理台登录失败只有 3 秒气泡、无持久错误提示)。

v10.10.3 —— 同号冲突守卫:绝不覆盖账本里别人的单据

接入第一个真实账本时发现的锋利边缘:Xero 的创建接口按单号 upsert,推送 INV-0001 到已有同号发票的组织会更新那张现存(可能已付款)的发票。创建路径现在先按单号探测目标组织:号已存在且不属于本工作室的推送记录,立即死信并给出可操作原因(独立单号前缀,或专用组织)。任何单据都不会被静默改写。

v10.10.2 —— 多组织时连接选对组织(X4 前置)

同一个 Xero 用户可为不同工作室授权不同组织(演示账套与真实账套)。回调此前取 /connections 第一行——单组织恒正确,多组织则取决于排序。现在按本次授权事件精确匹配(access token 的 authentication_event_id ↔ 连接行的 authEventId):点了哪个组织的 Allow,连的就是哪个组织;无法匹配时回退到最新连接(最近一次人的决定),绝不静默取第一行。

v10.10.1 ——「开启推送」过闸修复

v10.10.0 生产验收走到向导最后一步时发现:合闸的 upsert 必然触发数据库门约束——PostgreSQL 会先对 INSERT 候选行(推送开、前置条件全空)评估 CHECK,即使实际会走更新分支。transport 关闭时代此路不可达,首次真实过闸即暴露。现改为对刚被 gate 校验过的那一行做纯 UPDATE;新增回归测试用真实向导流程对真约束验证。

v10.10.0 —— Xero 单向推送(X3):队列、对账与向导闭环

已开具的发票、贷记单与收款现在按队列推入工作室自己的 Xero 组织——金额按本地分值原样推送(不让 Xero 重算税)、以本地单号入账、收款按分配拆到对应发票。开关在走完向导前保持关闭:连接、会计确认科目映射、对 Demo Company 真实试跑(全部推送并逐张读回,0 差异才算过)、回答单一入口问题。严格单向:不从 Xero 回读或回改任何本地单据。

失败的推送带 Xero 原文原因列出,修好后一键重放且沿用同一幂等键——重试绝不会产生第二张单据。限流与故障自动退避;队列在服务器上每 5 分钟处理一次,集成页也可随时「立即推送」与「逐张对账」。

v10.9.4 —— Xero 首个成功连接:scope 终稿

v10.9.3 的 scope 集在 Xero 授权页仍被拒。线上逐组二分找到了两个元凶——app.connections 与 accounting.settings.read 虽在应用自己的配置清单里,authorize 端点却对本类应用不放行。终稿集(invoices、payments、contacts、身份、offline access)能到达授权页并完成连接,且一次授权覆盖后续单据推送全部所需。

已对 Xero Demo Company (AU) 实测验收:连接、取消分支、令牌自愈全部通过;已连接卡片上的组织名在没有 app.connections 的情况下取回,证明该 scope 本就不需要。

v10.9.3 —— Xero 授权按新版 scope 规范接入 + 界面语言纯净度

2026 年 3 月之后创建的 Xero 应用只接受新版细粒度 scope——旧的宽 scope 在授权页出现之前就会被拒。连接流程改为请求细粒度最小集(invoices、payments、contacts、settings 只读、connections),一次授权到位,后续单据推送阶段无需全体重新授权。连接本身仍不推送任何单据数据。

界面:英文 CMS 与两个管理控制台修复同源三类缺陷——短语整句渲染(不再出现「(12 )」碎片)、字典重复键互相覆盖、placeholder/提示只在首次载入翻译。报名表字段类型下拉恢复显示标签。套餐学员上限各环境对齐,在线手册 48 张截图按 v10.9.2 单一基线整套重拍。

开票章节的截图重新对上了产品(v10.9.2)

手册开票章节里有一张截图拍在了动画进行到一半——设置页停在屏幕中间。该章四张截图已全部重拍,截图工具现在会等页面完全静止再取景,这一类图不会再发出去。

另有一条图注把「谁能改开票信息」说宽了:Manager 看得到,但能保存的只有 Owner。手册现在写的就是这个边界。

v10.9.1 —— Xero 环境透传修复

v10.9.0 集成页在服务器凭据已写好的情况下仍显示「未配置」:容器环境块是 allow-list,四个 XERO 变量未透传。本版本只补这一处。

v10.9.0 —— Xero 连接(X2)

工作室可在「系统设置 → 集成」连接自己的 Xero 组织:OAuth2 授权码 + PKCE,令牌在服务器加密存储,访问令牌自动续期,刷新令牌失效时如实显示「已过期,需重新授权」;断开会同时向 Xero 撤销并清除本地令牌。连接本身不推送任何单据数据——推送仍在下一阶段的门后。建议先用 Demo Company 演练。

v10.8.0 —— 账务工作台、学员时间线与品牌/导航修复

财务:只读「学员时间线」把报名、课时、发票、收款、贷记与成长报告合成一条流水;付款方新增可打印「月结单」;发票可「记录提醒」(只入历史,不发送消息);工作台新增应收卡片与低课时一键续费;审批在建档前给出并入既有档案或新建的显式选择;开具发票前检查开票信息(名称、地址、ABN)完整。打印一次只出所选单据,发票、贷记单、月结单互不串印。

界面:公开页品牌区全站统一(有 logo 只显示 logo、无 logo 显示完整店名);语言切换后导航重新测量,宽屏不再整排省略号;锚点链接冷加载正确定位;CMS 与 Studio Admin 无权限时给出明确说明而非「连接失败」。租户隐私说明扩写为对齐澳大利亚隐私原则(APP)的十节详版。Xero 仍为 Preview。

发票打印正确性与 v10.7.1 修复发布

本次发布收口 v10.7.0 修复清单:退款来源关系、稳定税率快照、付款方复核、发票聚合草稿、会计导出和客户单据打印。浏览器打印 fallback 现在只打印已开具快照,并为所选发票设置 PDF 页眉标题,例如 Tax Invoice · INV-0007。Xero 仍为 Preview。

本版本已提交,SaaS 与 Edition 归档包已完成 checksum 验证,已部署生产并验收公开路由。最新 handoff 单独记录运行时 commit、归档 hash、备份和深度健康证据。

发票运营与明确的充值退款联动(v10.7.0)

源码候选把移动端课表溢出、付款方选择、已开具单据快照、统一 InvoiceDocument、可审计 CSV 导出,以及在没有可携带 PDF renderer 时诚实提供的打印/另存为 PDF 合并起来。充值可通过单一原子幂等路径创建发票和可选收款;退款必须明确选择原充值,并在同一事务中开具贷记单、登记付款退款,留下租户范围内的两账桥接。

已从 commit 913c6f1 发布。SaaS 与 Edition 归档包通过 checksum、BUILD_INFO、入口和排除规则门禁;pwestudio.online 已运行 v10.7.0,完成新 migration 且所有已存主题可读。Xero OAuth 与 transport 仍是后续 Preview/Beta 项目。

源码候选:钱款合同与诚实边界(v10.6.4)

这是基于 v10.6.3 准备的源码候选,尚未提交、打包、推送或部署;已验证的归档包与生产运行时仍为 v10.6.3。

候选版锁定付款账户与指定发票的分配,记录收款和退款的金额、余额及操作人,拒绝不支持的钱款字段;在真实 transport 存在前,Xero 明确为 Preview。候选版还加入干净检出与归档 smoke 门禁;没有新增或应用 migration。

更清楚的界面,和一份值得寄出的报告(v10.6.3)

输入框现在有看得见的边框了——之前那道线淡到很难看出框从哪里开始——在手机上点它也不会再把页面放大。iPad 上的保存条不再压住最后一排主题卡。

学员作品集里,颜色现在是有含义的。授权区块以前即使「未记录」也顶着一条绿色标题;现在它显示的是实际状态。功能相同的按钮长得也一样了。

发给家长的成长报告不再在页眉印出浏览器自带的文字,能装进一页,上课足迹图从学员入学那个月开始画,而不是从更早的几个空月份开始。自动生成的老师寄语去掉了:老师没写,报告就没有那一块——这比一段把上面数字重念一遍的话诚实。

作品管理、操作日志、学员档案用上了账单页早就有的那条筛选栏:一个搜索框、带计数的分类、常驻的结果条数,以及一个能清空全部条件的按钮。

官网菜单回到屏幕上(v10.5.0)

在电脑上,你的工作室官网会把整条菜单收进一个 ☰ 按钮里——任何屏幕尺寸都是,再大的屏也一样。其中四个菜单项点了还没有反应。两件事都修好了:现在桌面上菜单会横向展开,每一项都会去它写的地方。

如果你填过用于搜索引擎的自定义标题,它被存成了一种会在浏览器标签、Google 结果和别人分享你网站时的预览卡片里显示成一串程序文字的形式。没填过这个字段的工作室不受影响。现在标题会被正确保存,之前保存过的页面也能正常显示了。

页面加载也更快了:最大的几个文件之前是未压缩发送的,已经修正。首次打开运营后台的传输量降到原来的约三分之一。

你的数据,由数据库本身隔开(v10.3.1)

每家工作室的数据一直是分开的,我们每次发版都会验证这一点。在此之前,这种分离靠的是程序每次都问对问题。现在它落在数据库里:一条没有说明"属于哪家工作室"的查询,读到的是空,而不是依赖我们永远不写错。

同时,程序不再以管理员身份连接数据库。它现在只能读写记录,别的做不了——改不了数据库结构,也清不空任何一张表。这两项在界面上看不出任何变化,它们缩小的是"万一出错"的范围。

系统设置版面修复(v10.2.2)

v10.2.0 的系统设置画到了内容区旁边而不是里面,页面看起来是坏的。当天修复。已经保存过的内容不受影响——出问题的是画在哪儿,不是里面装了什么。

列表终于能筛了(v10.2.0)

账单与课酬两页现在共用同一条筛选栏:带「本月/上月」快捷档的日期区间、一个搜索框,以及带计数的状态片——「逾期 2」让你不点开就知道值不值得点。筛完的结果会进地址栏,于是「逾期的那几张」可以发给同事,「上个月的课酬」可以发给会计。在此之前这两件事都只能靠口述。

系统设置从盖住整个界面的面板变回一个普通页面,侧栏不会消失,也不再需要按「返回工作台」。里面的分区改成了真正的标签页:一次看一个,浏览器的后退键可以在它们之间走。

发票上写谁开的(v10.1.1)

澳洲的税务发票必须写明开票方的 ABN——没有它,家长的会计抵扣不了这笔 GST。之前系统里没有地方填,现在「系统设置 → 开票信息」有了:法定主体、经营名称、ABN、是否已注册 GST、地址,以及希望怎么收款。填好之前发票开不出去;如果一张发票收了 GST 而 ABN 是空的,我们直接拒绝,而不是发出一张客户还得回头找你重开的单据。

账单页也加了「新建发票」:选付款方、填明细、存成草稿。开具仍然是单独一下,因为那一刻才分配号码、定到期日,金额从此不能再改。

钱这一层长出界面,以及一对一循环课(v10.1.0)

下面那条里写的一切,在 v10.0.0 就已经做好了,但只有开发者用的接口能碰到。现在它有界面了。「账单」告诉你谁欠多少,并且可以在同一页开票、登记收款;「财务」告诉你教学的成本和它开出去的钱;Xero 现在只是预接入(Preview)准备页,可以查看映射和 gate 状态,但没有 provider transport,也不会向 Xero 发出数据。

成长报告在学员档案里写,就挨着它汇总自的出勤和课堂笔记;而「还有谁的没写」出现在你本来就会去看的待处理收件箱里。写报告和知道谁的报告晚了,是两个问题,所以给了两个位置。

还有,一对一课程终于不再是「只有一个座位的班课」。排一次,它每周自动出现,节假日和你设的暂停期会自动跳过。当一节课没上,记录这件事要回答三个各自独立的问题——这节还收不收家长的钱、老师这节还算不算课酬、要不要补一次课——因为它们的答案确实不一样。学员临上课一小时请假,通常照收钱、也照付老师;工作室因公共假期停课,不收钱、但照付老师。规则你用大白话设一次,系统按它执行,并把每次的判断结果当场告诉你。

发票、收款与老师课酬(v10.0.0)

在此之前,系统把课时记得很清楚,钱一分没记。现在它可以向付款方开票——一个家庭三个孩子合一张单,一所学校订演出是一个付款方、名下没有学生——记录收到的每一笔,并随时告诉你每个家庭欠多少、欠了多久。

已经开出的发票不能再被修改——任何人都不行,包括我们。这是刻意的:家长和会计都看过的单据,必须还是他们看过的那一张。改错走纸面上的老办法,用一张贷记单冲销,两份记录都留着。

Xero 目前是预接入边界,不是已经上线的连接。系统保留科目与税率映射、gate 状态、幂等键和 queue/replay 结构作为后续准备,但本版本没有 OAuth 或 provider transport,也不会发送发票或收款。任何正式账务集成都需要单独实施与验收。

老师能看到自己的课时和金额,并在期末确认。看不到别人的课时,也看不到家长欠费。我们算出金额、出清单;发钱仍由你们做工资的人负责——代扣税和养老金是会计的事,不是排课软件该碰的。

家长可以订阅一次孩子的课表,之后课程就长在他们自己的手机日历里,调课也会同步。这是免费的,替代掉你本来每周都要付钱发的提醒短信。但它替代不了当天的临时停课——手机日历按自己的节奏刷新,那类通知仍然走短信。

还有:你答应家长的成长报告,现在可以从系统里一直在记的东西自动汇总——出勤、课程笔记、曲目、考级进度——交给老师补完再发布。没有经过老师过目的报告,不会发到家长手里。

手册追上了产品(v9.9.6)

在线手册原本写着工作室网址「之后不可更改」。从 v9.9.0 起它是可以改的——现在手册写的是真话,常见问题里也直接回答了这一条:找我们更换,旧地址永久跳转,而且永远不会被分给另一间工作室。

手册里的每一张截图都在本次发布上重拍了一遍。有些图落后了两个版本,读者拿自己的屏幕去对,很容易以为是自己的工作室出了问题。从 v9.8.10 起就有独立网址的「工作室作品」页,现在在手册里也有了自己的图,而不只是一段文字。

v9.9.0 的两处修正(v9.9.5)

「工作室作品」的开关显示「还没有已发布的作品」,而你的官网正在展示作品。是编辑器向自己的记录问错了问题;网站一直是对的,上传区上方的计数也是对的——所以同一个界面才会自相矛盾。

过长的导航文字被截断了两次,服务端一次、浏览器又一次,于是出现省略号套省略号,行动按钮也顶到了自己的边框上。现在只由服务端决定;而那颗按钮空间最小、内边距最大,允许的字数也比其他条目更少。

导航不再跳走、店名跟着你走、网址可以更换(v9.9.0)

以前,只要访客带着地址后面的参数进站——选好的语言,或广告上的来源标记——点一下导航就会整页重新加载。现在是平滑滚动,访客的语言和他从哪个广告来的信息都不会丢。

四个公开页面现在提供同一组入口。以前「常见问题」只出现在首页页脚,课表页面还有一条自己关不掉的自链接。

改店名现在会同步到机器读的那些地方:浏览器标签页、别人把你的链接分享到微信或 WhatsApp 时出现的卡片、搜索结果里的名字。在此之前,这些一直是工作室创建当天的旧名字——尽管页面本身看起来是对的。

Studio Admin 里一件事只有一种说法。所有版块开关统一为「在官网上显示 XXX」,「发布」只留给真正把草稿推上线的那个按钮——一个叫「发布」却只是存草稿的开关,被误解并不奇怪。九个开关集中在一处,并且会说明你已经打开的版块为什么还没公开:显示「还没有学员同意公开作品」,而不是一串代码。主理人也有了自己的面板。

工作室现在可以更换公开网址。旧地址会永久保留并自动跳转到新地址,已经印出去的二维码和传单不需要重印;学员、课程、作品和排课完全不受影响。需要更换时告诉我们——每年一次,由平台侧操作。

中文后台是中文的。六十八条文案此前没有译文,其中包括发布仍在确认时显示的那一句。

服务端权威的公开外壳与真实发布状态(v9.8.10)

Studio Admin 现在以服务端发布账本为准,不再在浏览器里比较 websiteProfile 快照。写入成功与公开投影待确认保持分离,结构化双语状态码会说明应重试、补齐内容,还是等待验证。

官网、独立作品页、课表和报名页共用带版本的公开表面契约,并共享本地化标签、导航、Footer 与 CTA 操作。公开 Footer 不再放工作人员 CMS 和 Studio Admin 链接;运营工具只从需要认证的入口进入。

本版本继续使用现有 Vanilla HTML/CSS 运行时和租户数据模型。发布包与生产验证完成后,源码、发布包和生产证据会分别记录在最新 handoff 中。

真实可信的 Studio Admin 编辑器与统一公开入口契约(v9.8.9)

预览现在明确区分草稿与真实线上官网,并列出未发布改动和公开就绪状态;发布错误会留在页面上,能够返回需要处理的字段。首屏次要按钮可指向课程、工作室作品、公开课表、报名或经过校验的外部地址;明确选择但未就绪的入口会保持隐藏,不会静默改跳到别处。

「空间与体验」现在是独立编辑面板,用于场所、氛围、过程或线上体验。它保留六条亮点,支持六张可排序照片和中英文替代文字,公开页由访客点击缩略图换图,不自动轮播。官网、作品页、课表和报名页共用服务端权威的模块、导航、Footer 与行动按钮契约。

公开导航真实可用,发布验证不再误报(v9.8.8)

Studio Admin 现在把「写入成功」和「公开验证」分开处理。内容已经保存但公开投影仍在同步时,后台保持干净状态,显示「已发布,公开页面仍在确认」,并提供重试,不再误报发布失败;错误也改为结构化编码和双语文案。

官网、独立作品页、公开课表和快速报名页共用一套公开表面契约。导航与 Footer 必须同时满足「已开启 + 有真实公开内容」,后台预览会解释未就绪原因和下一步;亮色工作台用信息色突出当前导航,并保持 1.618 编辑器/预览比例。

已从 commit 4b436e1e2df0717b7efb01d5e7d4021a6cc23860 发布到 pwestudio.online。SaaS 与 Edition 包 SHA-256 分别为 1d6fc1760993864c681c8f9cb5e58eac303acdb65573ba98978181f226ee3da70a75bf66059da97dc91b450933bd2a44e48200b7dda17030b62baa22ec1cd3b6。生产 deep health 为 v9.8.8、db=ok、6 个可读租户且 themes.unreadable=0;切换前已生成数据库 dump 和卷归档,v9.8.7 仍可回滚。

可排序、可分享的工作室独立作品页与更轻的首页(v9.8.7)

Studio Admin 现在支持可选的工作室全局精选排序。数字越小越靠前,首页精选展示 6 件;留空则沿用原有顺序。完整作品集位于 /<slug>/showcase,沿用同一排序,支持分类独立 URL,每页加载 12 件符合条件的作品,并通过自动分页和「加载更多」兜底继续浏览。

套餐切换继续保证内容安全:精选排序和所有已保存作品都会在升级或降级后保留,套餐只控制 Active 作品的公开数量。公开作品页、课表、报名页和 footer 现在共享统一的跨页面入口。

已从 4e1894f 发布到 pwestudio.online。生产 deep health 为 appVersion=9.8.7db=ok、6 个可读租户且不可读主题为 0;0030_showcase_featured_rank.sql 迁移与切换前备份均已完成。

更清晰的公开课表与约课在线手册(v9.8.6)

双语在线手册现在为 /<slug>/timetable 的公开课表单独设章,说明公开班次需要同时打开的两个开关、1–4 周显示与约课窗口、字段显示、老师姓名授权,以及为什么约课申请不是占位。

新增四张中英文配对截图,展示 Studio Admin 设置页和手机端约课弹窗。截图使用合成展示租户,不写入客户数据。

操作上下文与套餐感知的工作室编辑(v9.8.5)

Platform Admin 的 Actions 列现在会打开高频工作室和套餐操作菜单。整行点击仍然是快速查看;右侧会解释选中的操作,并等待明确的下一步确认。

工作室编辑增加分区导航和保存前检查,明确展示变化的额度、保留的官网/品牌/作品内容、需要通知的工作室以及超出新额度的公开作品。API 同时提供 active、draft、archived 作品数量供检查使用。

已从 commit bcd4f1b 发布到 pwestudio.online。SaaS 与 Edition 发布包均通过 checksum 和包结构校验;生产 deep health 为 v9.8.5,db=ok、6 个租户且不可读主题为 0。最新 handoff 记录了备份、迁移、immutable 资源、媒体 ETag 和公网路由证据。

套餐切换保留工作室内容,并让 Platform Admin 操作更清晰(v9.8.4)

套餐升级与降级现在会先展示变化额度、保留内容、低额度下的超量使用情况以及需要通知的工作室。操作员必须确认检查结果,API 也会执行同样的双重校验后才接受变更。

工作室与套餐整行点击即可快速查看;编辑、支持、生命周期和删除操作统一放在中间的 Actions 控制中。套餐切换不会删除官网、品牌、作品、学员、课程、报名、媒体或审计数据。

作品公开数量跟随套餐并支持安全状态(v9.8.3)

公开作品现在跟随套餐额度:starter 公开 15 件 active 作品,studio 60 件,growth 150 件。每次加载 12 件只是分页大小,不再是套餐上限。

每件作品可以是 Active、Draft 或 Archived。降级会保留全部作品;超过 active 容量的新上传会进入 Draft,不会被拒绝或删除。Super Admin 编辑套餐时如果未提交作品额度,也会保留原额度。

套餐切换不再覆盖工作室内容,作品查看器正确适配(v9.8.2)

在 Platform Admin 切换工作室套餐时,现在会保留该工作室自行编辑的官网、主理人、首屏、常见问题和作品设置。更新会锁定租户行,并沿用请求中未包含的嵌套设置,不再用默认值覆盖。

公开作品灯箱现在会把横版或竖版图片完整居中限制在可用视口内;标题、说明和前后导航在桌面与手机上都保持独立且可操作。

全宽 Platform Admin 工作台与真正的中间区编辑(v9.8.1)

Platform Admin 更充分地使用可用画布:左侧导航定位工作区,中间负责当前流程,Inspector 持续显示状态、影响范围和安全下一步。工作室与套餐编辑现在进入中间工作区,并提供持续可见的保存条,不再依赖居中的大弹窗。

列表默认操作是查看;编辑与危险操作保留在当前上下文中。手机端使用可发现的工作区导航抽屉,页面不产生整页横向溢出,新增状态、待处理和编辑文案保持中英文对齐。本版本不新增在线支付、银行转账设置、Gmail/SMTP、AWS SES、SSE、WebSocket 或浏览器 Push。

本处记录候选版本范围;最终生产提交、发布包 hash 与公网验收将在部署后写入最新 handoff。

面向聚焦运营的三栏 Platform Admin 工作台(v9.8.0)

Platform Admin 现在采用清晰的工作台关系:左侧导航寻找已支持的工作区,中间完成主要流程,右侧 Inspector 承载选中的工作室、套餐或审计事件。Today 首先展示基于现有租户、订阅和使用量数据生成的「待处理」队列。

导航栏只呈现当前已有能力:工作台、工作室、套餐与价格、审计日志。Inspector 按「状态、风险、订阅/资源信息、安全操作」组织;支持模式单独放置,必须填写原因后才能进入现有审计流程。移动端将 Inspector 转为响应式抽屉,并避免横向溢出。

本版本不新增在线支付、银行转账配置、Gmail/SMTP、AWS SES、短信、SSE、WebSocket 或浏览器 Push,也不提前展示尚未存在的未来页面。

生产验收:v9.8.0 已从 commit 906d18549475ac35b2cabd24c31a7944b83cfc31 运行在 pwestudio.online。Deep health 返回 appVersion=9.8.0db=ok;关键路由、Platform Admin immutable asset 的 hash/缓存响应以及生产登录边界均已验证。

本版本的源码、发布包与生产证据,分别记录在最新 handoff 中。

面向工作室运营的 Platform Admin 工作台(v9.7.0)

Platform Admin 现在按「总览、工作室、套餐、审计日志」一次呈现一个工作区,同时保留 hash 直达链接;固定顶部栏不再遮挡当前工作区标题或主要操作。

工作区会持续显示刷新依据:载入、就绪、部分载入和重试状态彼此区分,并保留上次成功刷新时间。工作室详情和审计事件现在以响应式阅读抽屉打开;支持模式必须填写原因并获得字段级反馈;套餐表单在发出请求前显示字段级错误。

订阅生命周期状态统一表达为「订阅已逾期」;本版本不新增在线支付、银行转账配置、Gmail/SMTP、AWS SES、短信、SSE、WebSocket 或浏览器 Push。

本版本的源码、发布包与生产证据,分别记录在最新 handoff 中。

更宽、更协调的 Studio Admin 工作台(v9.6.1)

Studio Admin 现在像 CMS 一样利用桌面可用空间。左侧导航保持紧凑,编辑区与预览区维持平衡比例;平板在内容拥挤前自动改为上下布局,手机继续单列且不会横向溢出。

预览区默认跟随当前后台语言,让外壳、草稿提示和保存状态保持一致;预览区自己的语言按钮仍可用于明确的中英文独立对照。

本版本只做布局与语言对齐,不改变数据模型、权限、发布契约、支付、银行转账展示、持久化 CMS 通知或外部消息服务。

生产验收:v9.6.1 已从候选提交 e46a3e3f4a407e8b2ac34ce8e230165c37150ea1 运行在 pwestudio.online。deep health 显示 appVersion=9.6.1、数据库健康,六个已存储租户的主题均可读取。

更清晰的 Studio Admin 官网发布工作台(v9.6.0)

Studio Admin 现在按「品牌与官网、招生入口、发布中心、经营洞察」组织工作。报名表与公开课表统一放在「招生入口」下;家长话术仍留在 Studio Admin,并继续兼容 CMS 的复制使用流程。

时区、课表和家长话术修改现在都会触发未保存保护;报名入口和工作台视图支持直达链接;课表标签补齐中英文;预览区明确说明发布前只是私有草稿。

在线支付、银行转账配置、Gmail/SMTP、AWS SES、短信、SSE、WebSocket 和浏览器 Push 继续暂缓。

生产验收:v9.6.0 已从候选提交 f9007855dcaa10298bd522c82e7397d2afba0638 运行在 pwestudio.online。deep health 显示 appVersion=9.6.0、数据库健康,六个已存储租户的主题均可读取。

更清晰的 CMS 信息架构,服务日常运营(v9.5.0)

CMS 现在有稳定的顶部工具栏、分组导航、按角色定制的工作台和可直达的页面链接。「今日」「教学运营」「经营」「记录」让每项工作都有清晰入口;系统设置也改为完整页面,不再挤在大弹窗里。

课程、作品、学员、待处理事项以及充值与退款都有独立工作区,同时继续遵守现有角色边界。布局沿用 PWE Brand 设计令牌,保持导航栏与内容区的平衡比例,并保留移动端 44px 操作目标。

生产验收:v9.5.0 已从发布提交 9a976215bab9d5b32b9792f36851078a4111ff4b 运行在 pwestudio.online。公网 deep health 显示数据库健康,六个已存储租户的主题均可读取。

无需外部消息服务的持久化 CMS 通知(v9.2.0)

新的公开报名和约课申请现在会在同一数据库事务中生成 CMS 内的持久化通知。通知铃铛显示未读数量,每位运营人员拥有独立的已读状态;系统通过 30 秒刷新和新消息弹窗提示新工作,本版本没有加入 Gmail、SES、短信或浏览器推送基础设施。

在线支付和银行转账配置继续暂缓,先验证第一阶段通知工作流。

课程安排:名称更准确,操作顺序也更从容(v9.1.1)

CMS 原来的「每日排课」现在统一叫「课程安排」。日期与周导航、出勤摘要、时段分组和添加学员按一次完整排课任务从上到下排列。宽屏下每位学员保持紧凑的一行;手机上仍按清晰顺序展开,不会产生横向溢出。

三点菜单现在先显示学员、日期、时间与课时余额,并明确说明是否来自固定课表;课程状态、提醒、一对一、撤销和移出按用途分组。待上课与补课状态可直接保存并进入审计,不必先移除再重新添加学员。

更顺手的每日排课,以及更可靠的底层交付(v9.1.0)

每日排课现在是一张紧凑的工作台:日期与周导航、出勤摘要、时段分组、添加学员和批量操作,按前台实际使用顺序排列。每位学员只有一个清晰的「签到并扣课时」主操作;提醒、一对一标记、撤销和移除仍在近处,但不会争抢注意力。生日与固定课表仍完整保留,需要时再展开。

首页现在会明确列出哪些学员已准备好使用私人专区、缺少联系方式、私人内容受阻、可以公开作品,或仍缺公开授权;每个数字都能直接打开对应学员列表。公开课表的新约课申请只会在保存成功后通知工作室,重复点击不会发送两封提醒。

图片现在按手机、平板和大图生成隐私安全版本,小屏幕不再下载最大文件。已授权的私人图片可以安全复核缓存但不会变成公开资源;应用静态文件同时带内容哈希,浏览器不会再把旧 JavaScript 与新版本混用。

一套 Brand 契约,以及可安全延续的 CMS 迁移基线(v9.0.0)

产品现在只有一份 Brand 权威文档,运营界面统一使用一套双语系统字体,并通过明确的发布账本分别记录源码、发布包与线上生产状态。相同的版本号不再被当作「同一份代码已经打包并上线」的证明。

Front Desk 通过一项独立的后端权限审核约课请求,但不能修改课程、容量或排课。当前 CMS 的操作按钮仍只向 Owner 和 Manager 开放,因此这项权限不会悄悄扩大界面操作范围。

运营 CMS 同时完成了第一次刻意保持很小的组件迁移:修复损坏的触控与按钮状态选择器,并让 EmptyState 消费语义主题 token,未改变其数据、props 或回调。真实 Chromium 在 390px 下确认操作按钮达到 44px、键盘焦点清晰且没有横向溢出。

家长看得懂的课表,以及不用注册就能申请的位置(v8.9.0 – v8.10.3)

你的公开课程现在有了独立页面,从官网导航进入,也有自己的网址——可以单独转发给孩子的另一位家长,而不必转发整个网站。做成页面而不是首页上的又一个板块,是因为家长读课表时是在拿一行行时间对着日历比,那需要宽度,也需要一个能单独发出去的链接。

只有你逐条勾选过的班次才会出现在那里。「排了这节课」和「对外招这节课」是两个决定,而两者的差集恰好是最要紧的部分:一对一时段、内部补课、给某个家庭留的试听位。你可以选展示未来几周,以及每一行显示六项事实中的哪几项——老师、地点、适龄段、结束时间、剩余位置、价格;开关只是允许显示,真的有内容才会印出来,所以从不记录教室的工作室永远不会印出一个空的「地点」。

剩余位置用文字加颜色显示——「还有 3 位」「快满了」「已满 · 可加候补」——因为色觉障碍的访客、黑白打印和读屏软件都必须能读到同样的三种状态。满员的班次是灰色而不是红色:它卖完了,那是成绩;红色留给真正出错的事。

家长现在可以不开账号就申请一个位置:一个全名和一个手机号,没有密码。申请会出现在你的后台,在你批准之前**不占座位**,而容量是在你按下「批准」的那一刻复核,而不是家长点击的那一刻——所以两个家庭同时要最后一个位置这件事被诚实地处理,而不是悄悄超额。批准一位已经在读的学员,会把他排进那天的名单;批准一位新来的,会开一条普通的报名。两者从不混算,因为「本月新报名」正是你用来判断投放有没有效果的数字。

时间在我们这边按**你的工作室所在时区**换算,不在访客的浏览器里算——身在国外的家长看到的是你的周三,不是他的。你停课的那一周会被划掉并写明原因,而不是删掉:一节悄悄消失的课看起来像是网站坏了。

看得清的深色模式,以及知道由谁来上的班次(v8.8.0)

深色模式过暗,这是可以测量的,不是口味问题:页面的明度处在「任何参考标准所推荐的最暗值」之下,有几套配色比该标准更接近纯黑。现在它是一个看得见的表面,而不是一片虚空。变亮之后有三件事被迫重新求解——一个从来只按「按钮」检查、没按「链接」检查过的强调色;比所在页面几乎不多出任何颜色的状态芯片;以及会和状态芯片撞在一起的品牌芯片。它们本来就不对,只是更亮的页面让它们显了形。

每周课表的班次现在可以指定授课老师、地点和所属课程,也可以标记为「在公开课表上展示」——公开课表本身在下一个版本上线。展示默认关闭,且逐条勾选:「已经排的课」和「对外招生的课」是两批,差集恰好是最敏感的那部分——一对一时段、内部补课、给某个家庭留的试听位。

老师的姓名要不要出现在公开互联网上,由这位老师本人同意,不是由这节课决定。开关按人设置、默认关闭,并且可以填一个对外的职业称呼(例如「Lucy 老师」)而不是证件上的名字。关着的时候课表照常展示这个班次,只是不显示姓名。

另外,循环班次现在可以针对某一天停课,并写明原因给访客看。没有这一条,一份公开的课表就是一个收不回的承诺:公众假期停业那周,网站照旧写着周三 16:00,而一个家庭会为此白跑一趟。

随套餐增长的作品集,以及一个值得打开的查看器(v8.7.0)

工作室作品的展示件数现在跟着套餐走:Starter 15 件、Studio 60 件、Growth 150 件。这个数字管的是**官网展示几件,不是你能保留几件**:换到更小的套餐后,每一件都还在后台,照样能编辑、能排序,官网展示排在前面的那些——想换哪几件,调整顺序即可。升级回去,其余的立刻恢复,因为从来没有被删除过。

作品可以归入分类——最多八个,中英双语——有两个及以上时,访客会看到筛选按钮。删除分类不会删除作品,那些作品只会变成未分类。分类不受套餐限制:付费买的是展示的数量,不是整理的秩序。

上传方式变了。可以把一整个文件夹的照片拖进来,或一次选多张;每一张立刻出现,各有各的进度。照片现在会在你的浏览器里先压缩再上传——过去因为太大而被拒绝的手机照片,现在只有原来的一小部分大小,同样的存储额度也就能放下多得多的作品。竖拍照片的方向会正确保留。

点击作品现在会真正打开它:方向键或滑动翻页,Esc 或手机返回键关闭,关闭后回到你原来的位置。视频在这里全屏播放。返回键这一条比听起来重要——在此之前,点返回想退出一张照片,会把访客直接带离你的网站。

展示你自己的作品,而不只是学员的(v8.6.0)

在此之前,工作室官网能证明学员画了什么,却证明不了工作室自己的水平。主理人板块只有一张头像和一段自述——那是主张,不是证据;而对一位在两间工作室之间做选择的家长来说,决定他的正是证据。

现在有了「工作室作品」板块,并在 Studio Admin 里独立成一个标签页。最多十二件,每件可配照片与双语标题、说明。第一件会展示得比其余的大,因为作品集是有主次的,而一排等大的格子等于说每件都一样重要。它紧接在主理人之后,并与学员作品墙保持分开——两者回答的是不同的问题,不该共用一个标题。

视频是链接的,不是上传的:粘贴 YouTube、Vimeo 或哔哩哔哩的地址即可,只有封面图会占用你的存储额度。在访客真正按下播放之前,页面不会向这些网站发出任何请求——一个普通的嵌入在没人要求观看之前就要花掉几百 KB,而这笔钱是访客的手机在付,不是我们。

一次由我们造成的故障,以及现在拿什么防它再来(v8.5.4)

8 月 6 日至 7 日期间,六个工作室官网中有五个没有显示任何内容。页面本身能打开,但承载网站文字与图片的那个请求失败了——标题、主理人介绍、联系方式、照片,全都在这一个请求里。这期间访问的人看到的是一张空白页面。

原因在我们,而且很小:v8.5.2 重命名了「自定义」配色的一个内部标识,仍然存着旧名字的网站便读不出来了。没有任何工作室丢失过内容。期间每一个字、每一张图都完好地存在数据库里,没有被改动过,修复部署的那一刻就全部回来了。

更值得说的是我们为什么没有发现。我们的部署检查确认了服务在运行、数据库在应答——而这两项在整个期间都正确地通过了。它们问的都不是「这一版还读得出里面的工作室吗?」现在这项检查存在了,并且每次部署都会跑:只要有一个线上网站读不出来,这一版就会被拒绝并自动回滚,不会送到任何人面前。

本次同时发布:官网的「空间介绍」板块——小标题、标题、正文、最多六张照片与三条亮点,均为双语——这个板块网站本来就能显示,但工作室此前没有任何地方可以填写它,而且它的内容会在保存时被清空。如果你曾通过其他途径填过,请重新填一次。搜索引擎的两个字段(页面标题与描述)同理,现在在同一个标签页里可以编辑。

另外,官网的西文标题字体现在真的会加载了。它此前是从一个被我们自己的安全策略拦截的外部服务请求的,所以自那条策略上线起,所有网站都在悄悄回退到系统字体。现在改为由我们自己的服务器提供——这也意味着中国大陆的访客不必再等一个本来就不会完成的请求。

八套命名主题,以及一个只推荐、不重刷的行业预设(v8.5.0–v8.5.3)

v8.5.0 发现了一个从没有人量过的缺陷:因为每套主题的纸各自带着自己的色相,哪个状态色跟纸同色相,那个状态色就看不见了。绿色主题显示不出「已保存」,蓝色主题显示不出提示。七套浅色主题里有五套中招。修法是给每一块状态色芯片设一个「必须带多少颜色」的下限,与它所在的页面无关——于是成功、警示、危险、提示在任何一张纸上都认得出来。

品牌色不在这八套之内的工作室,可以选「自定义」卡片自己定一个,通常直接从 Logo 里取。系统**只取它的色相**,深浅与浓度由系统对着实测的对比度目标解算。荧光色的 Logo 会变成一支体面的深绿,而不是一个没人看得清的按钮;会被误读成状态色的颜色会被挪开,并明确告诉你挪了。行业模版会更换词汇、板块标题与报名问题——但不会重新粉刷网站。

对外官网也找回了它的形状。此前页面上每一个圆角不是 2 像素就是 4 像素,那读起来像一张表单;现在是五档柔和圆角与两级投影,首屏图片带一处手绘般的有机边缘。这没有改动任何颜色——它只是这个产品与它想要对标的画室网站之间,最大的一处视觉差距。

v8.5.1 回应了工作室的第一个反馈:颜色的选择不再像一个选择了。行业卡片不再带那条承诺配色的色带(它已经不再决定配色);首屏图片也可以选择方形、椭圆或艺术异形,而不是永远只有最后一种。

v8.5.2 修正了上一次的修正。真正的缺陷从来不是「有八套主题」,而是选择行业时会把该行业推荐的配色悄悄覆盖掉工作室已经选好的颜色。为修这个而删掉八套主题,等于连选择一起删掉了——第一位打开控制台的工作室主理人就指出了这一点。现在八套命名主题都回来了,每套都是完整配色(各有自己的纸、墨与强调色);行业只为其中一套加上「推荐」徽章;第九张「自定义」卡片则为品牌色不在这八套之内的工作室打开取色器。曾被归咎于「八套主题」的那个缺陷——绿色主题显示不出「已保存」——依然是修好的,因为它是在生成器里修的,而不是靠删掉暴露它的多样性:1080 条颜色断言在原来的八个色相上全部通过。

v8.5.3 修好了两个只接了一半的板块开关。关掉「课程」或「学员作品」只会把入口从网站菜单里移除,板块本身仍留在页面上——工作室看着它从导航里消失,理所当然地认为已经关掉了,而访客往下滚仍然看得到。现在两者都会连板块一起隐藏,包括那个掩盖了问题的情况:页面的内容与设置是两个各自独立的请求,此前谁后到谁说了算。

九套配色合并成一套,深色模式覆盖到配色管不到的地方(v8.4.0,v8.4.1 与 v8.4.2 扩展)

对外官网早已有八套解算出来的配色主题,产品的其余部分没有:工作室控制台自己声明了 45 个颜色,其中 33 个是框架默认色,压在为它们设计的暖色纸张上;平台控制台是另一套;设密码页与作品集分享页各是第三、第四套。一个产品里七套配色,共用八个在各处含义不同的 token 名。深色模式一直开不起来,原因就在这里——没有一个「它」可以开。现在全部由同一个生成器产出,每次构建校验 976 组颜色配对。

深色模式本身还在一些配色管不到的地方出错。滚动条、下拉列表、复选框与浏览器自动填充由浏览器绘制,不读任何颜色设置,深色官网上它们全是浅色。「回到顶部」按钮是固定的米色圆形,而其上的文字在深色下会变浅,所以八套深色主题里那个箭头都是看不见的。手机地址栏在近黑色页面上方仍是米色。均已修复,并已纳入检查。

工作室现在可以将官网设置为跟随访客设备,夜里打开报名页的家长会看到深色配色;开启后两套配色都会发布。另外,上传首屏照片现在真的会显示——此前上传只填好了地址,而另一个下拉框仍停在「柔和画板」,于是照片保存了、发布了,却从不显示。

v8.4.1 把同样的工作带到了运营 CMS —— 那里有一套手写的深色配色,卡片竟然比它下面的背景更暗;这正是官网主题在上个版本已修复的问题,因为这是另一套没人重新生成过的配色而一直留着。学员报名页还有属于它自己的第九套配色。两者现在都与其余部分使用同一套底色。深色下的卡片也比之前更明显地浮起来:原先的抬升数值在算术上正确,但看起来太小,现在按人眼的感知来度量,而不是按数字读数。

v8.4.2 找到了运营 CMS 一直修不好的原因。它由浏览器中即时生成的工具类构成,而此前的做法是用一层覆盖规则去追这些类——这层规则只盖到了其中一半多一点,而且每加一个组件就得再长一截。现在改为直接配置生成器,于是全部工具类都跟随工作室的配色。此前无法表达的那条规则是:灰阶必须在明暗之间翻转,因为浅灰在一种模式下是背景、在另一种下是文字;而红色按钮在两种模式下都是红色按钮。

可用的工作室控制台,以及排列正确的深色主题(v8.3.0,v8.3.1 修正)

「官网与品牌」控制台在显示第一个可操作控件之前,占掉了笔记本屏幕的一半以上:一条标题栏、一个重复它的版块标题、再加一块重复该标题的说明面板。在手机上,第一个可编辑字段位于一整屏之外,且滚动时没有任何东西固定——正在编辑的标签页没有,发布按钮也没有。其中两层已删除,第三层压缩为一行;手机端现在会固定标签栏与发布条。九十四个过小、难以准确点击的控件已全部调整到标准尺寸。

另外:八套深色主题的层次全部是反的。版块背后的间隔带比压在它上面的卡片还亮,卡片因此看起来像凹陷的洞。这些配色的每一项对比度都是达标的——这正是此前检查一直通过的原因:对比度只说明文字能否被读清,不说明哪个表面应该显得更靠前。八套配色已全部重新求解,每次构建运行的检查现在除对比度外也会校验层次排列。

行业预设:行业卡片上显示的文案与实际发布到官网的文案,此前是两段各自独立的文字,其中中文有五个行业已经出现分歧——卡片承诺的是一句标题,官网上线的却是另一句。现已合并为同一段文字。报名页的标题与引导语也一并重写,使中英文表达同一类内容,并在引导语中直接写明将会询问哪些问题。

上一版本的修正(v8.2.31)

v8.2.30 版本曾在平台控制台顶部短暂显示出一段程序代码,且该版本本应新增的日期校验实际并未生效。两者均已修正。未影响任何面向客户的页面,也不涉及任何数据。

工作室保存恢复正常,订阅日期开始有实际意义(v8.2.30)

编辑一间已配置管理员登录的工作室,自 7 月 10 日起一直失败:保存会报错,并且什么都没有改到,除非每次都重新输入一遍密码。此问题已修复。四个订阅日期现在会互相校验——试用结束早于订阅开始、取消日期早于它所取消的周期,都会被拒绝并明确指出是哪两个日期冲突,而不再被存进去。另外新增一个视图,列出所有已经越过某个日期的订阅:试用已结束、计费周期已过、取消日期已到。此前产品里没有任何代码读取过这些日期,一间工作室三项全都越过,控制台依然显示正常。该列表只做呈现——调整工作室状态是另一个需要明确执行的动作,而试用到期永远留给人来决定。

平台控制台:两处数据丢失,以及品牌统一(v8.2.29)

在平台控制台打开一间工作室、改动任何内容、点击保存,四个订阅日期会全部被清空。日期从接口传来是一种格式,页面按另一种读取,于是每个日期框都显示为空,保存时写回去的就是这个空值。另有一条独立路径,无论如何都会在每次保存时清掉试用结束日。两处均已修复,服务端现在会保留没有被要求修改的日期。控制台也终于用上了本该有的品牌视觉——暖色纸面、藏青文字、单一琥珀强调色,取代此前五种互不相关的颜色——工作室详情由一整面卡片墙(其中七个字段重复渲染了两次)改为五个分页。

可被检索,也可被机器读取(v8.2.28)

站点上所有 WebP 图片——包括用作链接预览的那张——此前都以「未知二进制」的文件类型发送。浏览器会自行猜测,所以看起来一切正常;社交平台不猜,于是分享出去的链接没有配图。已修复,同时修正了缓存:手册的截图此前每次访问都要重新下载,现在由浏览器保留。站点还新增了 sitemap、robots 文件,以及可被机器读取的 /pricing.md/llms.txt——当工作室主理人向 AI 助手询问该用什么系统时,它读的就是这些。服务 FAQ、服务条款、隐私政策与支持政策,现在各自拥有独立的中文网址,而不再是同一页面内的语言切换。

媒体上传修复(v8.2.6)

此前生产环境中所有图片上传(工作室 logo、首屏图、学员照片、作品集)均告失败。现已恢复,且服务器开销降至约八分之一:一张 2400 万像素的图片峰值内存由 139 MB 降至 17 MB。超过 3000 万像素的文件会被拒绝,而不是拖垮实例。

操作日志完整记录(v8.2.3)

工作室操作日志此前只显示签到与课时变动,归档、改名、排课、作品集编辑虽已执行却从未列出。现在每一项操作都会连同操作人一并记录。

主题配色作为整体求解(v8.2.7–v8.2.9)

对八套工作室主题进行了三轮处理。大面积区域不再被第二种近乎互补的色相劈开,而是保持在品牌自身的色系内;成功、警示、危险三色改为按主题求解,警示徽章不会再长得像普通按钮。全部 45 个状态色均按实测对比度目标重新推导。

工作室归档与删除(v8.2.10)

归档工作室此前返回服务器错误,在生产环境从未成功过,永久删除因此也无法进行。两者现均可用,且在移除任何内容之前都会写入完整快照:数据库记录、工作区与媒体文件。

数据保留(v8.2.19)

审计记录、分析事件、通知记录与访问会话此前没有任何有效期。现已按计划应用保留策略——审计记录保留两年、分析数据保留一年——服务不会无限累积。发布同意记录属于法律证据,明确豁免,永不删除。

手册的打印版已修正(v8.2.22–v8.2.23)

此前打印手册时,正文会压在页脚上,且 28 页的内容其实 18 页就装得下。两者均已修正:不再有文字重叠,打印件也短了三分之一。版本号与授权说明印在第一页,日期与页码由浏览器自身的打印设置提供。

用户手册(v8.2.21)

完整的用户手册已发布在 pwestudio.online/zh/manual/ ——官网上线、招生报名、排课签到、课时与退费、作品公开授权,以及团队里每个角色能做什么、不能做什么。英文版在 /manual/。可直接打印为 PDF,每一页都带版本号与打印日期,旧的打印件会自己说清自己是什么。

英文界面补全(v8.2.21)

运营 CMS 在英文模式下仍有 66 处中文——其中多数是读屏软件会念出来、但屏幕上看不见的按钮说明。现已全部翻译,并新增了一项覆盖所有页面的检查,避免同样的缺口再次悄悄出现。

定价直接取自套餐表(v8.2.19–v8.2.20)

公开定价页此前把套餐额度写成固定文本,而这些数字已经与产品实际执行的额度出现偏差。现在页面直接读取套餐表,页面上印出的数字就是系统承认的数字。套餐也不再因为存在就被公开:是否发布由运营人员开关控制,内部与测试套餐不会出现在公开页面上。

产品官网重做(v8.2.20)

首页按本工作室自有的设计系统重做,并跟随访问者系统的浅色 / 深色设置。中英文各有独立网址——pwestudio.online 与 pwestudio.online/zh/——不再同时渲染在同一页面上,无论对读者还是搜索引擎,每个地址都是单一语言的页面。

平台控制台(v8.2.4–v8.2.11)

控制台按运营人员的实际用途重新编排:需要今天处理的排在最前,存量数据居中,分析内容置底并折叠。计数器现在就是筛选器——点击即列出它所统计的工作室。手机端版式重做,租户表以卡片呈现,不再横向滚动。

v8.1.0 的改动

上一版仅按本地演示验收。本版将服务带入生产,并修复上线与一次完整可读性检查所暴露的问题。以下均非计划,全部已包含在本次发布中。

生产托管

服务于 2026 年 7 月 30 日迁至专属 AWS 实例,具备独立证书、每日数据库备份与已演练的恢复流程。此前用于邀请演示的隧道不再属于生产链路。

报名成功提示恢复可读

在七个深色工作室主题下,家长提交报名后看到的成功卡使用了固定浅色文字,而主题已把底色变浅——实测 1.06:1,几乎不可见。现在两种颜色都取自主题,而这一组颜色由调色生成器在全部十五个主题变体上校验,均不低于 4.5:1。

品牌配色贯通到 CMS

日常运营工作台此前只应用了工作室所选主题的一部分,又以固定灰色背景覆盖其上,导致所有工作室的 CMS 外观雷同。现在公开门户、报名页与 CMS 应用同一套完整主题,并有测试逐字段断言三者一致。

焦点与表单描边达标

产品主页的键盘焦点环对页面底色实测 1.70:1,低于非文本指示所需的 3:1;现为 4.52:1,而在合适的深色区块仍保留 9.70:1 的亮琥珀。深色区块的表单描边由 2.51:1 提升至 3.90:1。

套餐额度调整

月费不变。Starter 现含 1 个团队账号与 2 GB;Studio 含 5 个账号与 10 GB;Growth 含 1,000 名学员与 50 GB,团队账号仍为 20 个。超出额度只会拒绝新增,绝不会删除既有学员、账号或媒体。

已发布的政策文件

隐私政策与服务条款已实际发布而非仅作承诺,并载明运营主体与 ABN。两者均为待澳大利亚律师复核的草案,页面上已明确标注。

延续的客户可见成果

品牌化入口

统一使用 PWE 品牌的深蓝、琥珀与暖纸白,配合已批准的销售文案、清晰的角色入口与演示动作。

安全的演示环境

隔离的 Let’s Paint Studio 演示租户,使用虚构记录与合成作品,重置操作带有防误触保护。

相互连通的工作台

Studio Admin 负责网站与品牌,CMS 负责日常运营,两者之间可稳定切换。

家庭端闭环

课时余额、下次课、出勤、作品集,以及通过设备原生应用联系工作室。

排课

真实的循环班课排课,以及不含学员身份的隐私安全 ICS 日历下载。

商务交付

上线清单、常见问题、迁移模版、支持政策、定价、协议草案与安全披露。

生产部署(2026 年 7 月 30 日)

本页早前版本称「AWS 生产验收延后」,该表述已不再准确。下表记录已确立的事实,均从实例外部测量所得。

v8.1.0 本身(含调整后的套餐额度)此后已部署至同一实例,即当前对外提供服务的版本。每次部署都会先行备份,并在服务未能健康启动时自行回滚。

项目 已确立
公开服务 v8.1.0 由悉尼区域的 AWS Lightsail 实例提供服务
传输 TLS 在主机终止;HTTP 一跳 301 至 HTTPS;HSTS 一年;证书链验证通过;自动续期定时器已启用
暴露面 应用仅绑定本地回环;首页无绝对 http:// 引用,且内容策略限定同源,混合内容在结构上不可能出现
规范主机名 单一源站:www 经 TLS 永久跳转至主域
数据库 PostgreSQL 16,已应用 20 项迁移;运行时使用受限角色,owner 角色仅用于迁移
备份 每日逻辑备份加媒体卷归档;恢复演练已执行并通过
发布安全 部署会拒绝独立版制品、先行备份,并在深度健康检查失败时自动回滚
升级期间可用性 容器重启期间以带重试提示的品牌化维护页替代默认网关错误页

本次部署发现的四个缺陷

这四个缺陷从外部看都正常,若不排查将只会在事故中暴露。之所以列出,是因为只记录成功的发布记录不构成依据。

每日备份从未成功过

定时任务调用了镜像内错误路径下的备份脚本,且无人读取其输出。已修复,任务失败现在会显式报错。

备份文件无法写入

备份目录归属与容器运行用户不匹配,写入被拒绝。现在每次运行都会校验归属与权限,运维人员也无需提权即可列出备份。

恢复演练不可能通过

未固定版本的客户端包解析为 PostgreSQL 17,对 16 版服务端产生了其不接受的参数。客户端已固定为 16 版,由新版客户端产生的备份已删除,以免在事故中才发现不可用。

媒体卷为空

数据库引用的媒体资源与派生文件在卷中并不存在,导致所有品牌 logo 返回未找到。媒体目录已恢复,派生工具现在校验派生文件本身是否存在,而不只是校验数据库记录。

仍未完成

我们不作承诺的部分

最终版隐私政策、服务协议与数据处理附表仍需澳大利亚律师复核。已发布的隐私政策服务条款为草案,如实描述产品实际行为,但不构成法律意见。

验收关卡

关卡 所需依据 状态
后端 完整 PostgreSQL 验证通过 已通过
日历隐私 时区与循环规则有效;不含学员数据 已通过
演示重置 已验证防护拒绝,随后完成隔离环境重置 已通过
界面 375、768、1024、1440 px 浏览器检查 已通过
主题发布 门户、报名与运营工作台应用同一套完整主题;公开界面不得固定本应由主题决定的颜色 已通过
公开界面对比度 客户可见界面的文字与焦点指示在全部主题变体下均达标 已通过;运营工作台仍有上文列出的两项未完成
模版 CSV 与多工作表 Excel 已渲染并检查 已通过
发布包 SaaS 与独立版构建已检查;按形态断言内容差异 已通过
部署 公开 HTTPS、DNS、证书、跳转、深度健康与数据计数 2026 年 7 月 30 日通过
恢复 基于真实备份产物的数据库与媒体恢复演练 同机演练通过;异地副本未完成
特权账号 MFA 所有特权账号强制第二因素 未完成
监控与 SLA 运行与备份失败告警、值班名单、已签署可用性目标 未完成