feat: 去除构建时版控变量 + 窗口标题动态版控 + 退出登录保留缓存 (0.0.24)

版控体系重构(13 文件):
- 移除 build.mjs --personal/--enterprise 参数和 EDITION 环境变量
- 统一安装包文件名:船长-HeiXiu-{os}-{版本号}-Setup.{ext}
- 简化 package.json 构建脚本,移除 :enterprise 变体
- scripts/*.mjs 不再接受 edition 参数
- 移除 shared/constants/app.ts 的 parseEdition()

窗口标题动态版控:
- 新格式:船长-HeiXiu-{os}-{版本号}(登录前)/ ·{版控} 后缀(登录后)
- 链路:AppProvider(account_type) → useEffect → appRuntime IPC → main process
- 移除 updater.ts 更新检查 API 的 edition 查询参数

本地存储生命周期修正:
- 退出登录不再自动清空缓存(user_id 隔离,重新登录命中缓存)
- clearUserStorage 添加 isOpen() 竞态守卫
- 移除 closeDatabase() 避免退出→重新登录后数据库不可用
- 手动「清理缓存」按钮保留

文档:
- CHANGELOG.md 新增 0.0.24 条目
- TODO.md 新增已完成项
This commit is contained in:
2026-06-22 13:36:42 +08:00
parent e4d66a2ac0
commit 8b697e775d
95 changed files with 1158 additions and 1295 deletions

View File

@@ -0,0 +1,204 @@
// ============================================================
// 导航栏配置 —— 按版本(个人版 / 企业版)定义导航项
// 每个导航项的 iconSrc 指向 src/assets/header_actions/ 下的 SVG 图标
// ============================================================
import type { NavItemConfig } from './types';
// ---------- SVG 图标导入(?raw = 内联渲染,使 currentColor 生效)----------
import complianceAssetsSvg from '@/assets/header_actions/compliance_assets.svg?raw';
import announcementsSvg from '@/assets/header_actions/announcements.svg?raw';
import accountSvg from '@/assets/header_actions/account.svg?raw';
import membershipSvg from '@/assets/header_actions/membership.svg?raw';
import rechargeSvg from '@/assets/header_actions/recharge.svg?raw';
import billingSvg from '@/assets/header_actions/billing.svg?raw';
import orderDetailsSvg from '@/assets/header_actions/order_details.svg?raw';
import wechatWorkSvg from '@/assets/header_actions/wechat_work.svg?raw';
import settingsSvg from '@/assets/header_actions/settings.svg?raw';
import signOutSvg from '@/assets/header_actions/sign_out.svg?raw';
import projectManagementSvg from '@/assets/header_actions/project_management.svg?raw';
// ============================================================
// 个人版导航项
// ============================================================
/** 个人版 — 左侧 */
const personalLeft: NavItemConfig[] = [
{
key: 'compliance-assets',
label: '合规素材库',
iconSrc: complianceAssetsSvg,
action: 'page',
target: '/compliance-assets',
modalType: 'floating',
position: 'left',
},
];
/** 个人版 — 右侧(从左至右排列) */
const personalRight: NavItemConfig[] = [
{
key: 'announcements',
label: '公告',
iconSrc: announcementsSvg,
action: 'drawer',
position: 'right',
},
{
key: 'account',
label: '查帐户',
iconSrc: accountSvg,
action: 'page',
target: '/account',
modalType: 'floating',
position: 'right',
requireLogin: true,
},
{
key: 'vip-activate',
label: '开会员/激活',
iconSrc: membershipSvg,
action: 'page',
target: '/vip',
modalType: 'modal',
position: 'right',
},
{
key: 'recharge-points',
label: '充值',
iconSrc: rechargeSvg,
action: 'page',
target: '/recharge',
modalType: 'modal',
position: 'right',
requireLogin: true,
},
{
key: 'billing-history',
label: '消费记录',
iconSrc: billingSvg,
action: 'page',
target: '/billing',
modalType: 'floating',
position: 'right',
requireLogin: true,
},
{
key: 'order-details',
label: '订单明细',
iconSrc: orderDetailsSvg,
action: 'page',
target: '/orders',
modalType: 'floating',
position: 'right',
requireLogin: true,
},
{
key: 'wechat-work',
label: '企业微信',
iconSrc: wechatWorkSvg,
action: 'page',
target: '/wechat-work',
modalType: 'modal',
position: 'right',
},
{
key: 'settings',
label: '设置',
iconSrc: settingsSvg,
action: 'button',
position: 'right',
},
{
key: 'auth',
label: '登录/注册',
iconSrc: accountSvg,
action: 'button',
position: 'right',
requireGuest: true,
},
{
key: 'logout',
label: '退出登录',
iconSrc: signOutSvg,
action: 'button',
position: 'right',
requireLogin: true,
},
];
// ============================================================
// 企业版导航项
// ============================================================
/** 企业版 — 左侧 */
const enterpriseLeft: NavItemConfig[] = [
{
key: 'compliance-assets',
label: '合规素材库',
iconSrc: complianceAssetsSvg,
action: 'page',
target: '/compliance-assets',
modalType: 'floating',
position: 'left',
},
{
key: 'project-management',
label: '项目管理',
iconSrc: projectManagementSvg,
action: 'page',
target: '/projects',
modalType: 'floating',
position: 'left',
},
];
/** 企业版 — 右侧(从左至右排列) */
const enterpriseRight: NavItemConfig[] = [
{
key: 'announcements',
label: '公告',
iconSrc: announcementsSvg,
action: 'drawer',
position: 'right',
},
{
key: 'quota-check',
label: '查配额',
iconSrc: accountSvg,
action: 'page',
target: '/quota',
modalType: 'floating',
position: 'right',
requireLogin: false,
},
{
key: 'settings',
label: '设置',
iconSrc: settingsSvg,
action: 'button',
position: 'right',
},
{
key: 'auth',
label: '登录/注册',
iconSrc: accountSvg,
action: 'button',
position: 'right',
requireGuest: true,
},
{
key: 'logout',
label: '退出登录',
iconSrc: signOutSvg,
action: 'button',
position: 'right',
requireLogin: true,
},
];
// ============================================================
// 导出
// ============================================================
export { personalLeft, personalRight, enterpriseLeft, enterpriseRight };