feat: 小程序 AI 底栏与聊天页、出站推送调试与 tabbar 迁移

- 自定义 tabBar:AI 入口图标与样式,相关页面与审核门控调整

- API:MpTabbar、出站推送 Hook、后台设置与迁移 SQL(含 FAB 居中排序)

- 管理端:推送 Hook 面板、出站推送调试工具与生产环境注释说明

Made-with: Cursor
This commit is contained in:
Ghost
2026-04-20 15:29:10 +08:00
parent ce55c48c64
commit d07235b64c
26 changed files with 486 additions and 317 deletions

View File

@@ -31,6 +31,9 @@ Page({
if (cfg.reviewMode !== undefined) app.globalData.reviewMode = !!cfg.reviewMode
else if (cfg.maintenanceMode !== undefined) app.globalData.reviewMode = !!cfg.maintenanceMode
if (cfg.maintenanceMode !== undefined) app.globalData.maintenanceMode = !!cfg.maintenanceMode
try {
require('../../utils/miniprogramAuditGate.js').applyAuditUiOverride(app)
} catch (e) {}
if (cfg.textConfig) {
app.globalData.textConfig = cfg.textConfig
this.setData({

View File

@@ -46,19 +46,23 @@ Page({
if (cfg.maintenanceMode !== undefined) {
getApp().globalData.maintenanceMode = !!cfg.maintenanceMode
}
try {
require('../../utils/miniprogramAuditGate.js').applyAuditUiOverride(getApp())
} catch (e) {}
const rmEff = !!(getApp().globalData.reviewMode || getApp().globalData.maintenanceMode)
if (cfg.siteTitle) {
getApp().globalData.siteTitle = cfg.siteTitle
this.setData({ siteTitle: rm ? cfg.siteTitle.replace(/AI/gi, '') : cfg.siteTitle })
this.setData({ siteTitle: rmEff ? cfg.siteTitle.replace(/AI/gi, '') : cfg.siteTitle })
}
if (cfg.textConfig) {
getApp().globalData.textConfig = cfg.textConfig
this.setData({
startButtonText: rm ? '开始性格测试' : (cfg.textConfig.startButtonText || '30秒测出你的性格'),
aiAnalysisText: rm ? '分析' : (cfg.textConfig.aiAnalysisText || '分析')
startButtonText: rmEff ? '开始性格测试' : (cfg.textConfig.startButtonText || '30秒测出你的性格'),
aiAnalysisText: rmEff ? '分析' : (cfg.textConfig.aiAnalysisText || '分析')
})
}
const ep2 = getApp().globalData.enterprisePermissions
this.setData({ reviewMode: rm, permFace: !ep2 || ep2.face !== false })
this.setData({ reviewMode: rmEff, permFace: !ep2 || ep2.face !== false })
try {
const tb = typeof this.getTabBar === 'function' ? this.getTabBar() : null
if (tb && typeof tb.updateSelected === 'function') tb.updateSelected()