kate522
9cb5e7bea3
feat(frontend): unify avatar shape, move VIP icon to badge row
...
Make --radius-avatar the single source of truth for frontend user avatar shape. A new primitive in components-ext.css (img.avatar / avatar-mini / avatar-md / avatar-lg / .avatar-img img) forces a circle on every avatar image, which covers the bare avatar-mini in the ban and report modals, the classless img inside the VIP modal's .avatar-img, and the post-card meta avatar that previously depended on post-card.css being enqueued. The user center header frame, the public user home hero and the friends page avatar switch to the same token because route CSS loads after the public bundle and would otherwise override the primitive.
The VIP icon no longer rides the avatar corner. The user card widget, the after-article author card and the sign-in modal stop opting into aksrt_get_avatar_box()'s corner badge, and the icon renders first in the badge/level row instead, since aksrt_get_user_name already orders name -> VIP -> auth -> medal -> level. The sign-in modal appends it after the display name and keeps the legacy precedence where a ban badge takes the VIP slot. The user card widget name row now shrinks its display name so the extra icon cannot overflow a narrow sidebar.
Verified with the new frontend-avatar-shape-contract test plus post-visual, user-card-runtime, circular-button-icon-margin, user-features and page-display contracts, and php -l on every changed PHP file. The public bundle was rebuilt with tools/build-public-assets.mjs.
2026-10-10 13:53:07 +08:00
kate522
16b57dcf1c
fix(after-sale): 前台售后不再展示「退款金额」字段
...
并非每次售后都真的退款——换货、补偿、仅作记录的情况都会把工单标成已完成,
此时退款金额要么是 0 要么没有实际意义,摆在前台只会让人误解钱已经退回去了。
两个前台入口都撤掉该字段:
- 售后详细弹窗:明细行只留「申请时间」,处理记录时间线不受影响
- 订单详情弹窗的售后记录卡片:撤掉退款金额后 meta 的 dl 会空壳,连同
dl 一起移除;卡片仍保留状态徽章 + 申请时间 + 原因 + 「查看详细」
连带清理死代码:aftersaleAmountText / afterSaleAmount 两个格式化助手各自
只剩这一处调用,orders.css 里 5 条 .aksrt-order-detail__after-sale-meta
规则也随之无人引用。后台售后页与订单明细页的退款金额列不动——那边是运营
核对账目的口径,需要看到金额。
验证:tests/widget-system/ 462 项、tests/admin/ 76 项通过;抽取
buildDetailHtml 跑样例载荷,确认退款金额不再出现、申请时间 / 处理记录 /
再次申请售后按钮都还在。未做浏览器视觉验收。
2026-10-10 13:04:37 +08:00
kate522
36b3ba6f45
fix(after-sale): 订单详情弹窗不再渲染售后状态节点进程
...
订单详情弹窗的「售后记录」卡片把整条处理时间线铺在了卡片里,和点开
「查看详细」后的售后详细弹窗重复,卡片本身也被拉得很长。改为只保留状态
徽章 + 申请时间、原因/申请理由、退款金额与「查看详细」入口;完整处理记录
由售后详细弹窗独占呈现,信息不缺、入口也还在。
- 删掉卡片里的 orderDetailHandlingLogHtml(item.handling_log) 调用
- 连带删除随之无人调用的 orderDetailHandlingLogHtml / handlingEntryTitle /
AFTER_SALE_STATUS_LABELS 三个助手
- recordPayload 仍带 handling_log,点开详情弹窗照旧能看到时间线
- modal-runtime.css 的时间线规则不动:售后详细弹窗还在用,无需重打包
验证:tests/widget-system/ 462 项、tests/admin/ 76 项通过;契约测试改为断言
订单详情弹窗不再出现 timeline 标记与三个助手,同时锁住「查看详细」载荷仍带
handling_log;node --check 通过。未做浏览器视觉验收。
2026-10-09 18:12:48 +08:00
kate522
039fa6d863
feat(after-sale): 处理记录时间线改为「节点 + 状态 + 时间」同一行
...
原实现把状态与时间竖排在节点右侧的 88px 固定列里,状态文字一长就折行、
时间被挤到第三行,和右侧备注也对不齐。改为节点独占一列,状态与时间包在
head 里紧随其后,处理备注另起一行:
- [节点][处理状态][时间] 一行,状态色仍按工单状态走 --as-accent
- 竖线改挂到条目的 ::before(原来是 aside 的),top 从 12px 调到 14px,
与加了 4px 上边距的节点底部对齐,绳子依旧穿过每个节且末项不收口
- head 用 flex + baseline + gap:8px,状态过长时时间自然换行而不重叠
- 售后详细弹窗与订单详情弹窗共用同一套标记,两侧同步改
验证:tests/widget-system/ 462 项、tests/admin/ 76 项通过;用 node 分别抽取
两个 JS 里的时间线构造函数跑样例载荷,确认输出为
[节点][状态][时间] + 另起一行的备注;重建 public.css / public.min.css,
diff 仅限时间线规则。未做浏览器视觉验收。
2026-10-09 18:01:16 +08:00
kate522
26ce9a5904
feat(after-sale): 售后处理记录改为每次提交留痕并新增时间线
...
工单行内新增 handling_log 列,用户申请、用户撤销与后台每次改状态都落一条
「状态 + 备注 + 来源 + 时间」,按时间正序存放、上限 50 条(对齐
MetaAssetService::MAX_RECORDS)。set_status 因此变成读-改-写,补上
GET_LOCK/RELEASE_LOCK 包裹,并在锁内重读工单快照——锁外取快照仍会被并发
追加覆盖。
三处界面由「只显示最后一条」改为回放整条处理链路:
- 后台订单明细「售后记录」按工单渲染头部(状态/金额/申请时间)+ 原因 +
完整处理记录
- 售后面板手风琴「处理备注」单独占整行并置于「申请说明」上方,删掉已无
意义的「审核时间」
- 前台售后详细弹窗与订单详情弹窗的售后记录改为时间线:左列绳结状态条
(节点 + 状态 + 时间),右列处理备注;样式只在 modal-runtime.css 定义
一份,两个弹窗共用
清理随之失效的死代码:工单的 admin_note / reviewed_at / completed_at,以及
全仓库无写入方的 gateway_request_id / gateway_refund_id / gateway_result;
连带删掉 gatewayResultText()、uninstall 里从未存在过的 aksrt_after_sale
表项,并把两处后台页面重复的状态标签数组收成 after_sale_status_labels()、
重复的 .aksrt-as-log 样式收成 after_sale_log_css()。
顺带修复 88669f69 重构退款流水线时误删 refund_amount()、却仍在 create()
里调用的问题——此前任何用户提交售后都会直接 fatal。
验证:tests/widget-system/ 462 项、tests/admin/ 76 项通过;新增
after-sale-log-harness.php 驱动真实 AfterSaleService,覆盖首条日志、空备注
也留痕、撤销记录、50 条上限与畸形行规范化;两个后台页面经 dev harness
渲染校验「处理备注」宽行位于「申请说明」之前;未做浏览器视觉验收。
2026-10-09 13:59:50 +08:00
kate522
3eb9cc739c
style(modal): 售后与订单弹窗底部按钮满幅化并优化悬停反馈
2026-10-07 10:18:48 +08:00
kate522
e9a1a75259
fix(styles): 还原弹窗 footer 相邻按钮分界线并补悬停阴影
...
被平铺规则的 border:0 抹掉的 legacy 分隔线按家族色还原,售后四弹窗与订单详情同款;更新构建产物与契约测试。
2026-10-07 09:53:10 +08:00
kate522
d69e1d33c3
fix(orders): 修复再次申请售后被 has_application 分流回售后详细的问题并对齐底部按钮观感
2026-10-07 09:43:22 +08:00
kate522
8023e2e472
feat(after-sale): 支持撤销售后工单并接入人机验证
2026-10-07 09:20:59 +08:00
kate522
918ca371be
chore(repo): 行尾规范化,恢复索引 LF 契约
...
远端 9 个文件以 CRLF 入库,违反 .gitattributes「索引一律 LF」声明,
在 autocrlf=true 的工作区产生永久假脏并阻塞合并。仅行尾变化,无内容改动。
2026-10-07 09:13:42 +08:00
kate522
6081e8dcc9
style(payment): 订单详情底部适配主题按钮网格;记录卡片新增样式
2026-10-06 23:50:31 +00:00
kate522
c801ff5047
feat(payment): 订单详情底部改用主题按钮样式;记录卡片加查看详细与原因/申请理由
2026-10-06 23:50:30 +00:00
kate522
8460132feb
feat(payment): 售后详细弹窗底部精简为单个主按钮,去掉阻断文案
2026-10-06 23:50:28 +00:00
kate522
732f615a09
style(payment): 炫彩标题区样式扩展到订单详情弹窗
2026-10-06 18:27:27 +00:00
kate522
738abe5102
style(payment): 订单详情弹窗 modal-mini 几何(400px)
2026-10-06 18:27:25 +00:00
kate522
915311dcb6
feat(payment): 订单详情弹窗统一为 modal-mini + 蓝色炫彩标题区
2026-10-06 18:27:23 +00:00
kate522
7b5dcf16a1
style(payment): 订单详情弹窗售后记录卡片样式
2026-10-06 18:08:06 +00:00
kate522
2db2414270
style(payment): 订单详情弹窗售后记录改为卡片式 UI
2026-10-06 18:08:04 +00:00
kate522
365b2eafe5
feat(payment): 售后详细弹窗申请表单分行展示(原因/申请资料/申请说明)
2026-10-06 18:08:02 +00:00
kate522
a0f59826fe
fix(payment): 售后弹窗滚动容器改用 no-scrollbar,消除弹窗边缘滚动栏
...
mini-scrollbar 是 3px 可见细滚动条(举报弹窗 600px 宽弹窗用的写法);
modal-mini 这类带炫彩横幅的表单弹窗,主题统一走禁封申诉/记录弹窗的口径:
scroll-y + no-scrollbar 完全隐藏滚动条(含细滚动条)+ 50vh 内层滚动。
申请与售后详细两个滚动容器一并切换,滚动行为不变、只是不再露出滚动栏。
2026-10-06 23:38:18 +08:00
kate522
e7e281f10c
fix(payment): 售后入口监听改为脚本加载即挂载,去掉 auto_fun 时序依赖
...
入口本就是 document 级委托、不需要 DOM 扫描,此前只挂在 auto_fun 上等于
多依赖一次全局重扫的触发时机;脚本加载时立即挂载(auto_fun 钩子保留作幂等
重扫),任何时刻的首次点击都能同步弹窗。
2026-10-06 23:32:19 +08:00
kate522
93579cbc9f
fix(payment): 售后弹窗改为按钮载荷同步弹出,修复首次点击无反馈
...
原实现是「点击 → 先请求 /orders/{n} → 再弹窗」,与项目里所有可用弹窗
(含举报链路 report.js)不同构:举报弹窗把数据放在按钮 data-* 属性里同步
弹出。前置请求会让首次点击在请求返回前毫无反应,体感就是"得二次点击"。
- 按钮 data-aksrt-after-sale-apply / -detail 携带订单与售后状态载荷
(PHP 模板与 order-center.js 的 actionHtml 同构生成),点击当拍即开
对应弹窗:申请表单 / 超时效提示 / 售后详细,零前置请求
- 「再次申请售后」同样使用已渲染载荷,不再重新拉取订单
- 提交与图片上传仍走 REST,服务端校验不变;列表刷新后载荷随之更新
- jsdom 多脚本环境实测:三种入口均在点击同一拍弹出且 fetch 计数为 0
2026-10-06 23:29:59 +08:00
kate522
1a9a2762f3
feat(payment): 新增「售后策略」配置与前台售后弹窗链路
...
- 后台「支付&付费 → 售后策略」:售后功能开关、申请时效、超时效提示(HTML)、
预置原因、申请售后说明、所需材料、申请说明占位文案、可上传图片开关;
PHP schema 与 SPA schema 1:1 对齐,group 字段支持拖拽排序
- PaymentRuntime 新增售后设置解析(缺键回退 schema 默认、HTML 走 kses、
中文原因稳定 slug)与 after_sale_expired 时效判定(支付时间起算)
- 售后工单支持举证图片(order_aftersale.images 列,最多 3 张,
复用评论图片上传校验)与上传路由;订单视图模型输出 after_sale 按钮状态
- 前台申请 / 超时效提示 / 售后详细三个独立弹窗(modal-mini + 蓝色炫彩头),
订单详情弹窗不再内嵌售后表单并清理相关死代码
- 新增 after-sale-policy 契约测试与运行时 harness,527 项契约测试通过
2026-10-06 22:21:47 +08:00
kate522
ef718042d2
feat(admin): 新增后台文章列表销售数据列与快捷编辑配置项
...
「所有文章」列表此前只有互动数据列,缺少销售数据表头;快捷/批量编辑
展开后也只有原生三项。本次对照参考主题补齐这两处,不含专题链路。
- 新增 PostListEnhance:统管 sale/stats 两列、付费类型筛选、
orderby=sales_volume 排序,以及四组快捷编辑字段的渲染与保存
- 新增 PostListEditFields:单独承载字段定义,主类职责保持单一
- 新增 admin-post-list.js:按 pay_type/pay_modo 勾选切换字段显隐
- 从 inc/core-hooks.php 迁出原有列实现(删 74 行),不再保留旧闭包
- 清理 admin-main.css 中确认无引用的 .aksrt-tab-pane 与 .aksrt-modal* 死块
- 新增 post-list-quick-edit-contract 测试,更新 stats/icon-picker 契约
快捷编辑锚点列用互动数据列而非参考主题的专题分类法列(本项目无专题)。
真实销量改为页面级批量查询,避免逐行查库。金额运算统一走 Ledger 的
「分」单位,不用裸浮点。保存走 edit_post 钩子,一次覆盖快捷与批量两条路径。
2026-10-06 15:54:47 +08:00
kate522
194280af72
feat(admin): 移除支付中心的“下载记录”子菜单页面
...
下载不做记录,支付中心下的“下载记录”页面及相关链路整体删除。
删除的内容:
- src/Admin/Native/PayDownloadLogs.php(页面渲染、批量删除、
令牌查询)整文件移除。
- PayMenus 中的 download_logs 子菜单注册(概览页快捷入口由同一
份 pages() 数组生成,随之消失)。
- functions.php 中的 PayDownloadLogs::init() 接线。
- 各入口跳转链接:付费文章列表的操作按钮、用户列表“积分分成”
列的操作链接、用户列表行操作。
- “保存用户下载记录(条) / 保存文章下载记录(条)”两个设置项及其
消费链:SchemaPayment.php、assets/admin 侧 knowledge.js 的字段
与默认值、PaymentRuntime.php 的 user_log / post_log。
- 前台下载中心登录提示里的“管理下载记录”文案(该处本就没有
可跳转的管理页面)。
未改动内容:
- aksrt_dl_token 数据表仍由 DBMigrator 创建、uninstall.php 仍会
删除:存量站点可能留有历史令牌行,属数据而非功能,迁移风险
高于收益。
- 独立下载页面开关(down_alone_page)与远程文件转本地等下载
行为配置保留。
- 资源下载量(_aksrt_res_download_count)仍是只读口径:下载走
普通外链,主题内没有写入方,本次不新增下载统计。
download-direct-contract.test.cjs 中原有“下载记录页面展示历史
令牌”用例反向改写为三项断言:页面与接线已删除、记录数设置项
已注销、下载仍不做记录。
验证:node --test "tests/*/*.test.cjs" 517 项全部通过;
php -l 全部改动文件无语法错误;重新构建 admin SPA,确认产物
中不含被移除的字段与菜单。
2026-10-06 14:35:14 +08:00
kate522
2595bb02db
fix(frontend): 统一计数缩写口径并将流水号改为订单号
...
前台各处评论、浏览、点赞、收藏、已售数量统一走
aksrt_format_number() 缩写(≥10000 → 1.2W+,≥1000 → 1.5K),
缩写后缀统一为大写 K,与既有 W+ 保持一致。PHP 渲染缩写文本的
同时保留 data-base-count 原始整数,JS 增量计算不受影响;
article.js / comment-ajax.js 内的 formatStatCount / formatCount
与 PHP 规则保持同一套,避免点赞收藏后文本回跳成全量数字。
文章详情页购买信息卡、用户中心创作者收益明细、后台分成与提现
管理页、支付设置页以及四封订单/提现邮件模板中,面向用户展示的
「流水号」字样统一改为「订单号」;代码注释、内部错误码与
WP_Error 文案保留原表述。
验证:node --test "tests/*/*.test.cjs" 508 项全部通过;
php -l 检查全部改动文件无语法错误;重新构建 admin SPA 与
前台 runtime bundle。
2026-10-06 14:13:51 +08:00
kate522
fe57022550
fix(frontend): remove duplicate select arrow and show the WordPress brand icon
2026-10-06 13:23:05 +08:00
kate522
6dbe1fe4c6
fix(frontend): align page-set hint bar and FA5 icons with the reference
...
- 齿轮提示横条改为参考主题的 .abs-right 垂直居中几何(top:50% +
right:.7em + translateY(-50%)),本站 legacy .abs-right 是 top:0/right:0
导致横条贴到按钮顶角
- 新增 front-page-admin-set.js:横条 2 秒后淡出 1 秒消失(对齐参考
主题 js/page-edit.js),开关关闭时不出队脚本
- 齿轮与弹窗内图标统一为 FA5 惯例 fa fas fa-*,并采用 FA5 的 glyph
重命名(sliders→sliders-h、pie-chart→chart-pie)
2026-10-06 12:50:20 +08:00
kate522
12f60897d9
fix(frontend): 修复前台页面编辑弹窗并 1:1 复刻参考主题
...
远端加载的弹窗在 admin-ajax 上下文里拿不到查询对象,enabled()
恒为假,直接返回 success:false;而 AksrtRequest.responseError
只读 message/data.message,读不到 msg,遂报「请求失败(HTTP 200)」。
改为参考主题原生架构:wp_footer 直出 #modal_admin_set,提交走
vendored main.js 的 aksrt_ajax 契约,不再有 AJAX 取 HTML。
对齐参考主题 zib-frontend-set.php:
- 弹窗补齐 aria-hidden=false、win-ajax-replace、role=document
- 隐藏字段改用 taxonomy + post_type
- 字段顺序与 is_page 分支(标题样式、widgets_register、容器位置)
- 多选 checkbox 改 name="id[]",描述允许富文本
- 模块布局指向定制器小工具面板
- term 保存使用 POST 的 taxonomy 字段
清理不再使用的 assets/js/page-admin-set.js。
新增 frontend-page-edit-harness.php 覆盖门禁、渲染与各保存分支。
2026-10-06 12:22:43 +08:00
kate522
b75bf197a3
feat(extensions): 新增系统工具页面与前台投稿分片上传
2026-10-06 11:09:05 +08:00
kate522
613b8a57a3
style(user-center): 优化手机号脱敏数字框与前缀后缀一体呈现
2026-10-06 09:41:11 +08:00
kate522
af72364078
feat(security): 新增网站安全扩展模块并支持修改手机脱敏验证
2026-10-06 09:26:55 +08:00
kate522
fc9bf27560
fix(profile): anchor verification code buttons
2026-10-06 02:07:13 +08:00
kate522
ce429e1caf
fix(profile): align account modal UI
2026-10-06 01:46:48 +08:00
kate522
248912f610
fix(profile): align account dialogs and contracts
2026-10-06 01:09:04 +08:00
kate522
0cf4639d95
fix(profile): match account submit buttons
2026-10-05 19:54:00 +08:00
kate522
0a52bf36f9
fix(profile): refine settings modal actions
2026-10-05 19:21:42 +08:00
kate522
346146b4fa
feat(profile): rebuild account settings page
2026-10-05 18:58:49 +08:00
kate522
7b55cfb190
feat(payment): rebuild order details and asset records
2026-10-05 16:42:25 +08:00
kate522
476e2f961d
fix(rewards): load and strengthen amount styles
2026-10-05 11:36:39 +08:00
kate522
979639342a
feat(rewards): add toast and captcha flow
2026-10-05 03:51:18 +08:00
kate522
356f7fe5bd
fix(frontend): align reward modal with shared runtime
2026-10-05 03:24:42 +08:00
kate522
6037ca184b
fix(sms): collapse provider settings by default
2026-10-05 02:29:42 +08:00
kate522
5091da6a60
feat(sms): align provider and verification flow
2026-10-05 02:13:52 +08:00
kate522
2ae2b2fd07
fix(identity): validate evidence by file content
2026-10-04 23:13:48 +08:00
kate522
90c1f7a62b
fix(identity): normalize bare li markers in apply intro
2026-10-04 22:54:58 +08:00
kate522
8fcb136d55
fix(identity): draw intro list markers inside list items
2026-10-04 22:51:21 +08:00
kate522
d6e3b377b4
fix(identity): apply safe list styles in modal runtime
2026-10-04 22:25:15 +08:00
kate522
2b3e325d63
fix(identity): keep modal list markers inside scroll area
2026-10-04 22:15:42 +08:00
kate522
4caf81c9e2
fix(identity): keep intro list markers visible
2026-10-04 22:10:18 +08:00