Commit Graph
418 Commits
Author SHA1 Message Date
kate522 49c12b761f feat(users): merge promotion into revenue center 2026-08-03 15:38:17 +08:00
kate522 d138c05f77 feat(users): add inline promotion center 2026-08-03 13:40:54 +08:00
kate522 26d307056e feat(orders): redesign user order center 2026-08-03 12:54:58 +08:00
kate522 8c5b1555c9 refactor: flatten src/AKSRT → src (drop theme-identifier dir)
Move all domain folders from src/AKSRT/{Domain} to src/{Domain}; remap
Composer PSR-4 "AKSRT\\": "src/"; update audit script + README + ADR
paths; remove dead tools/build-psr4-map.php (scanned deleted inc/classes).
2026-08-02 22:06:06 +08:00
kate522 1d2505356e feat: remove shop feature (Phase 2)
Delete all shop domain classes, controllers, schema builders, templates,
JS/CSS, admin SPA pages, and shop-only payment classes (Shipping,
AfterSale, Discount). Remove shop-only DB table definitions (product_variant,
after_sale, order_shipping, card_key) from migrator and add their DROP
to uninstall.php. Clean up shared files:

- Remove aksrt_product CPT + taxonomies from Setup.php
- Remove shop rewrite rules/query vars/template redirect from SetupPart2.php
- Remove shop widget areas from SetupPart1.php
- Remove shop enqueues from ScriptsPart1b.php
- Remove sepakerator-aksrt-shop from SetupPart2.php
- Remove get_shop_settings facade (delete ForumShop.php, clean DomainGroups.php)
- Remove ORDER_PRODUCT_SHOP constant from DomainModel.php
- Remove Shop::class fallback branches from UserOrders.php, OrderCenterRest.php
- Remove shipping/after-sale branches from OrderRepositoryAdmin.php, PayMenus.php, PayOrders.php
- Remove shop product widgets from widgets-register.php
- Remove cart page from template-registry.php, routing.php, ScriptsPart2.php
- Remove cart UI from sidebar-nav.php, profile-orders.php, sidebar-orders.php
- Clean up order-center.js (remove rebuy/cartUrl/receipt/after-sale handlers)
- Remove aksrt_get_cart_page_url/product_page/product_edit from transactions.php
- Clean up aksrt_product_cat references in Coupon.php, PayCoupons.php

Shared payment/order/credits/content-pay stack fully retained.
2026-08-02 21:25:52 +08:00
kate522 2bbd7c01a3 feat: remove forum feature (Phase 1) 2026-08-02 20:02:44 +08:00
kate522andClaude Fable 5 b475263e76 feat: 后台身份认证记录支持删除
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:54:48 +08:00
kate522andClaude Fable 5 d8a1c35e9d fix: 识别阿里云 SubCode 通过状态
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:48:16 +08:00
kate522andClaude Fable 5 4332518c22 fix: 优化阿里云失败结果和操作显示
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:44:45 +08:00
kate522andClaude Fable 5 591902f680 fix: 记录阿里云空认证明细响应
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:41:42 +08:00
kate522andClaude Fable 5 c87ef77e8a fix: 解析阿里云查询结果对象
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:38:20 +08:00
kate522andClaude Fable 5 2e9d1d40ca fix: 保留阿里云认证会话 ID
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:35:33 +08:00
kate522andClaude Fable 5 f8985a70e5 fix: 阿里云未提交认证保持等待状态
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:28:03 +08:00
kate522andClaude Fable 5 5ca3638382 fix: 身份认证身份证号码校验
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:18:15 +08:00
kate522andClaude Fable 5 ea5269e0c6 fix: 阿里云 H5 认证提交 MetaInfo
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:13:29 +08:00
kate522andClaude Fable 5 70fc95ebe1 fix: 明确阿里云缺少核身链接错误
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:03:04 +08:00
kate522andClaude Fable 5 5731300056 fix: 增强阿里云认证响应调试
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 21:58:25 +08:00
kate522andClaude Fable 5 9bd63edfe6 fix: 移除阿里云无效认证链接类型参数
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 21:53:16 +08:00
kate522andClaude Fable 5 6c5837ea35 fix: 避免认证服务商默认值告警
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 21:47:28 +08:00
kate522andClaude Fable 5 93bf54500f fix: 本地环境跳过阿里云回调地址
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 21:38:36 +08:00
kate522andClaude Fable 5 333a7be64b fix: 认证失败后允许重新提交
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 21:34:02 +08:00
kate522andClaude Fable 5 63705dfde0 fix: 精简身份认证申请表单
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 19:15:01 +08:00
kate522 4de67311cc feat: 接入腾讯云与阿里云实人认证 2026-08-01 13:21:21 +08:00
kate522 92e445dbd4 feat: 添加身份认证服务商配置页 2026-08-01 12:06:55 +08:00
kate522 0fd5848884 重新设计用户/作者卡片小工具:消除多层卡片堆叠
- WidgetUserCard/WidgetAuthorCard 内层根节点去掉重复的 zib-widget widget 类
- 用户卡片补 classname=widget_aksrt_user_card 钩子
- widget-batch5.css 新增外层 .zib-widget 包裹层透明化规则(含首页侧栏覆盖)
- 内层 .aksrt-user-card/.aksrt-author-card margin-bottom 归零,间距由外层统一
- 删除 custom-amount.css 重复的 .aksrt-user-card* 段
- 删除 sidebar.css 失效的 .widget-user-card* 死代码
- author-actions.css .user-card.author.zib-widget → .user-card.author
2026-08-01 10:38:54 +08:00
kate522 3004310194 fix: 恢复认证图标悬浮文案 2026-07-31 11:48:57 +08:00
kate522 387b9e1929 fix: 修正后台等级图标与认证提示 2026-07-31 11:36:33 +08:00
kate522 06a03fd9cf fix: 始终展示已认证标识 2026-07-31 11:15:29 +08:00
kate522 ec63b446e8 feat: 固定个人与企业认证流程 2026-07-31 10:56:59 +08:00
kate522andClaude Fable 5 d1b44cbcd5 feat(forum/shop): phase 6 dynamic page sidebars + moderator fix
Phase 6 — forum/shop widget alignment + page-sidebar matrix + block
editor coverage:

- SetupPart1: add register_page_sidebars() replicating Zibll
  zib_page_register_sidebar() — registers page_{sidebar,top_fluid,
  top_content,bottom_content,bottom_fluid}_{ID} for pages opted in
  via the `widgets_register_container` postmeta (serialized area-key
  list), cached via wp_cache. page.php already consumes these via
  dynamic_sidebar. Assertion script
  $CLAUDE_JOB_DIR/tmp/assert-page-sidebars.php passes (opt-in
  mapping + page.php consumption + 63 registered widgets).
- WidgetForumPlateModerator: fix two fatal `obs_start()` typos
  (lines 75, 153) → ob_start() (was "call to undefined function"
  on the apply-modal and main payload paths).

Forum 9 + shop 3 widget business fields already align with Zibll
bbs/shop widget definitions (count/showposts/number, orderby
dims, style, plate filter, paginate, current_plate, tabs group);
REST routes forum-topics/forum-terms/forum-boards (WidgetAjax),
forum/frontend/widgets/topics (Forum.php),
shop/frontend/widgets/products (ShopController.php) all carry
permission_callback. WidgetProductOneline registered (line 127).
Block editor covers all 63 widgets via core/legacy-widget (WP 5.8+).
CLAUDE.md is gitignored (no in-repo inc/classes/widgets residue).

Acceptance: php -l clean; audit exit 0; SetupPart1=502 lines,
WidgetForumPlateModerator=248 lines. Phase 6 done-when marked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 21:38:36 +08:00
kate522andClaude Fable 5 cecc1a7b5e feat(widgets): phase 5 align marketing/decoration widgets with zibll
Align the 20 marketing/decoration widgets with Zibll field defs in
widget-produck.php / widget-more.php, focusing on the field-level
drift surfaced by the 1:1 audit:

- TagCloudWidget (widget_ui_tag_cloud): orderby → name/count/term_id
  (was count default), add order ASC/DESC, expand color palette to
  all 13 Zibll c-* keys (rand/c-hui/c-blue/-2/cyan/yellow/-2/green/
  -2/purple/-2/red/-2), number cap 100, default 20.
- WidgetBookmarkLinks (widget_ui_links_lists_2): add alignment
  (''/center/right) to form+update+render wrapper.
- FriendLinksWidget: expose orderby/order selects in form (already
  whitelisted) for bookmarks mode.
- ButtonsWidget (zib_widget_ui_buttons): whitelist pc_padding/
  m_padding/pc_width/m_width (were render-only), widen pc_gap/
  m_gap cap to 60 to match Zibll.
- RecentCommentsWidget (widget_ui_new_comment): count cap 50
  (was 20), whitelist outer_keywords.
- WidgetVideoPlayer (zib_widget_ui_dplayer): scale_height cap 200
  (was 100), whitelist muted + aspect_ratio.

Remaining 14 widgets (PricingPlans/Reviews/Faq/Stats/Highlights/
FeatureIntro/TiltCases/IconCards/IconCoverCards/CoverCards/
ComboInfo/PartnersScroll/TextTitle/Iframe) already match Zibll
field semantics (JSON/native group + obs_animation/palette/
pc_row·m_row/go_link); no drift to fix.

Acceptance: php -l clean on all changed files; audit exit 0;
all 21 widget files <=360 lines. Phase 5 done-when marked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 21:27:58 +08:00
kate522andClaude Fable 5 aa098fe870 feat(widgets): phase 4 align user/author/slider widgets 1:1 with zibll
Align the 5 user/author/slider widgets with Zibll CSF widget
definitions in widget-user.php / widget-slider.php and
options-module.php (add_slider / slide / zib_palette):

- WidgetUserCard (widget_ui_user): add Zibll button palettes
  (button_1_class/button_2_class via new palette_opts()/
  sanitize_palette() replicating CFS_Module::zib_palette c/b/jb)
  and button_2 type (home/center) → profile/center URL.
- WidgetAuthorCard (widget_ui_avatar): add show_button +
  button_1/button_2 (class/text/type) rendered only when the
  logged-in viewer is the author (zibll parity); expand orderby
  to modified/like/favorite.
- WidgetUserRanking (zib_widget_ui_user_ranking): rename field
  to Zibll `orderby` (default checkin_all_day) with the exact
  4 dims (checkin_all_day/checkin_continuous_day/points→credits
  /followed-user-count→followers) + `number` (was count); keep
  rank_by/count aliases for legacy instances; reword desc
  options to match Zibll labels.
- WidgetSlider (zib_widget_ui_slider): add direction/speed/
  spacebetween/scale_height+scale/autoplay to form+update+render,
  pass through to aksrt_render_slider (effect/loop/button/
  pagination/pc·m_height/interval already present); widen
  interval min to 0, height default to 400 (zibll pc_height).
- aksrt_user_card_query_posts: support like/favorite orderby
  (meta _aksrt_like_count / _aksrt_favorite_count) so the
  author/user-card more-posts strip honors the expanded orderby.

Acceptance: php -l clean on all changed files; audit exit 0;
all widget files <=383 lines. Phase 4 done-when marked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 21:16:55 +08:00
kate522andClaude Fable 5 3595ccbb44 feat(widgets): phase 3 align post widgets 1:1 with zibll fields
Align the 7 post/card widget business fields with the Zibll
CSF widget definitions in widget-posts.php:

- WidgetMainPosts/TabPostsWidget/WidgetOnelinePosts: add Zibll
  `order` (asc/desc) to build_query_args, form, update, REST
  payload and query strings; fix load_mode reading $instance in
  query_payload/widget().
- HotPostsWidget: add `target_blank` (form+update+REST+render
  href target), wire into query_payload base_qs.
- WidgetTermCards: expand range caps to match Zibll spinners —
  pc_row/m_row 1..12, height_scale 20..300, mask_opacity 0..90
  (form+update+render+REST).
- WidgetTermAggregation: add `order` (asc/desc) + `favorite`/
  `rand` orderby, expand count 1..20, fix `like` meta key to
  `_aksrt_like_count` (form+update+render+REST).
- WidgetAjax: propagate target_blank (hot-posts), order + caps
  (term-cards/term-aggregation) through REST instances.
- Fix WidgetMainPosts query_payload/widget() using $new_instance
  (undefined) instead of $instance for load_mode.

AKSRT pay_type (reading/download/gallery/video/vip/any) is the
semantic equivalent of Zibll zibpay_type (1/2/5/6).

Acceptance: php -l clean on all 7 files; audit-admin-contracts
exit 0; all files <=487 lines. Phase 3 done-when marked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 21:07:38 +08:00
Claude d975ff4ce6 feat(phase2): shared common-form layer + CommonWidgetFields trait for all widgets
- Extract Zibll CSF_Widget::params() common-field parity into
  inc/modules/widget-common.php (required by widgets-register.php to keep
  both files <1000 lines): subtitle, title_style(simple/big), title_highlight
  +color, title_link x3, title_link_style colors, sidebar_affix, show_type
  (all/only_pc/only_sm), show_id_type(show/hide), show_ids, animation_in,
  animation_repeat, layout_pin_pc/m, layout_bg(white/dark). Adds
  normalize_link/normalize_bg helpers, affix_attrs, common_wrapper_attr,
  render_title, animation_class. Back-compat normalizes legacy tokens
  (in_affix->sidebar_affix, pc/only_pc, include/exclude->show/hide).
- Add src/AKSRT/Widgets/Traits/CommonWidgetFields.php trait
  (render_common_form_section + update_common_fields).
- Wire all 57 widgets to use the trait; migrate the 16 hand-rolled in_affix
  implementations to shared sidebar_affix (fixes 6 latent bugs where
  in_affix was never persisted). SearchWidget intentionally skips the shared
  form section (its business show_type collides) but adopts the affix helper.
- widget_display_callback parity verified via tmp assertion script.

Refs .specs/plans/zibll-widgets-1to1.md Phase 2 (US1/US5)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 20:42:46 +08:00
kate522 d4946ee554 fix(user): close level parity gaps 2026-07-30 10:21:48 +08:00
kate522 a57b44bd61 fix(user): serialize level experience awards 2026-07-30 09:44:32 +08:00
kate522 20c19dfe31 feat(user): complete growth level chain 2026-07-30 09:38:45 +08:00
kate522 e94437ef60 feat(user): add local avatar management flow 2026-07-29 13:35:17 +08:00
kate522 7dbbb2cdda fix(identity): show certification in user admin 2026-07-29 12:46:44 +08:00
kate522 2dfaa10798 fix(identity): complete native certification review flow 2026-07-29 12:25:58 +08:00
kate522 815e83bac0 fix(user-center): complete certification and order flows
Fix modal scroll ownership and certification modal styling, store evidence as Media Library attachments, reconcile missed provider callbacks, validate currencies, and complete digital fulfillment only after durable entitlement delivery.
2026-07-29 10:29:59 +08:00
kate522 0a04c3e4cc fix(user-center): embed official certification panel 2026-07-28 15:22:09 +08:00
kate522 d3bf75fbea fix(user-center): connect certification workflow 2026-07-28 14:17:18 +08:00
kate522 a7f3caec59 feat(user-center): redesign sidebar and wallet tips 2026-07-28 13:41:00 +08:00
kate522 e47ee1b029 feat(user-center): deepen zibll parity and profile media 2026-07-28 12:22:52 +08:00
kate522 bcebd37807 fix(homepage): unify runtime rendering contract 2026-07-28 02:54:18 +08:00
kate522 59f5d5d98a fix(ip-geo): harden full-chain IP geolocation reliability
Capture real client IPs behind CDN, improve provider fallbacks and
negative cache, fix admin credential dependsOn for polling mode, and
map country labels to ISO codes for moderation GeoIP blocks.
2026-07-27 15:39:16 +08:00
kate522 ad40d9a7ca fix(orders): wire detail progress timeline and two-step cancel
Order progress was stuck on "订单创建" because timeline only read sparse
timestamp columns and status transitions didn't always stamp them.
Drive timeline from current status + related records, backfill lifecycle
timestamps on update_status, and replace window.confirm cancel with a
关闭订单 → 确认取消 button step in the detail modal.
2026-07-27 15:15:35 +08:00
kate522 a1e35a4499 feat(orders): order detail modal, list actions, use configured prefix
Wire admin payment_order_prefix into order number generation (with 32-char
cap for gateways), make 查看 open a full order-detail modal with
status-aware footer actions, keep type badge top-left only, and right-align
unpaid list actions with countdown on the left.
2026-07-27 12:39:21 +08:00
kate522andClaude Fable 5 abc3f1565f fix(payment): reject duplicate provider transactions
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 11:31:39 +08:00