refactor: 品牌改名为汇账 Ledgerly,包名与工程标识统一为 ledgerly
- Java 包名由 cn.rosercode.finance 改为 cn.rosercode.ledgerly,主类 FinanceApplication 更名为 LedgerlyApplication - Gradle 项目名、spring.application.name 与日志文件名统一为 ledgerly - 前端界面文案、页面标题、登录注册标题、README 与 Knife4j 标题更新为汇账 / Ledgerly - 前端本地存储键前缀由 finance. 改为 ledgerly.,并新增旧键自动迁移避免老用户偏好丢失 - 运行目录系统属性与环境变量改为 ledgerly.home / LEDGERLY_HOME - 部署编排、启动脚本、容器名、SQLite 默认路径与构建产物名同步改为 ledgerly
This commit is contained in:
@@ -1,48 +1,64 @@
|
||||
// 本地存储键常量:界面/用户偏好统一以 finance. 前缀命名,作为唯一来源供路由与各页面复用
|
||||
// 本地存储键常量:界面/用户偏好统一以 ledgerly. 前缀命名,作为唯一来源供路由与各页面复用
|
||||
import { migrateKey } from './storage'
|
||||
|
||||
/** 当前使用的本地存储键 */
|
||||
export const STORAGE_KEYS = {
|
||||
// 语言偏好
|
||||
locale: 'finance.locale',
|
||||
locale: 'ledgerly.locale',
|
||||
// 邮箱账单页标签页
|
||||
emailBillTab: 'finance.emailBill.tab',
|
||||
emailBillTab: 'ledgerly.emailBill.tab',
|
||||
// 系统日志页标签页
|
||||
logsTab: 'finance.logs.tab',
|
||||
logsTab: 'ledgerly.logs.tab',
|
||||
// 账单导入的账单类型
|
||||
billImportBillType: 'finance.billImport.billType',
|
||||
billImportBillType: 'ledgerly.billImport.billType',
|
||||
// 统计面板偏好
|
||||
dashboardPrefs: 'finance.dashboard.prefs',
|
||||
dashboardPrefs: 'ledgerly.dashboard.prefs',
|
||||
// 统计面板 AI 查询历史
|
||||
dashboardAiSearchHistory: 'finance.dashboard.aiSearchHistory',
|
||||
dashboardAiSearchHistory: 'ledgerly.dashboard.aiSearchHistory',
|
||||
// 统计面板 AI 查询浮窗位置尺寸
|
||||
dashboardAiQueryWindow: 'finance.dashboard.aiQueryWindow',
|
||||
dashboardAiQueryWindow: 'ledgerly.dashboard.aiQueryWindow',
|
||||
// 收支记录 AI 建议范围
|
||||
transactionAiScope: 'finance.transaction.aiScope',
|
||||
transactionAiScope: 'ledgerly.transaction.aiScope',
|
||||
// 收支记录 AI 记账方式
|
||||
transactionAiRecordTab: 'finance.transaction.aiRecordTab',
|
||||
transactionAiRecordTab: 'ledgerly.transaction.aiRecordTab',
|
||||
// 收支记录备注关键词历史
|
||||
transactionRemarkHistory: 'finance.transaction.remarkHistory',
|
||||
transactionRemarkHistory: 'ledgerly.transaction.remarkHistory',
|
||||
// 收支记录筛选偏好(收支记录页与统计面板共用)
|
||||
transactionFilterPrefs: 'finance.transaction.filterPrefs',
|
||||
transactionFilterPrefs: 'ledgerly.transaction.filterPrefs',
|
||||
// 各表格每页大小偏好(聚合 JSON,按表格键区分,本机记忆)
|
||||
paginationTablePageSizes: 'finance.pagination.tablePageSizes',
|
||||
paginationTablePageSizes: 'ledgerly.pagination.tablePageSizes',
|
||||
// 账单关系类型
|
||||
transactionRelationType: 'finance.transaction.relationType',
|
||||
transactionRelationType: 'ledgerly.transaction.relationType',
|
||||
// 收支记录 AI 查询历史
|
||||
transactionAiQueryHistory: 'finance.transaction.aiQueryHistory',
|
||||
transactionAiQueryHistory: 'ledgerly.transaction.aiQueryHistory',
|
||||
// 收支记录 AI 查询浮窗位置尺寸
|
||||
transactionAiQueryWindow: 'finance.transaction.aiQueryWindow',
|
||||
transactionAiQueryWindow: 'ledgerly.transaction.aiQueryWindow',
|
||||
// 内容区滚动位置(sessionStorage,按路由拼接后缀)
|
||||
scrollPrefix: 'finance.scroll.',
|
||||
scrollPrefix: 'ledgerly.scroll.',
|
||||
} as const
|
||||
|
||||
/** 历史遗留的存储键(未带 finance. 前缀),首次读取时迁移到新键 */
|
||||
/** 历史遗留的存储键(未带前缀),首次读取时迁移到新键 */
|
||||
export const LEGACY_STORAGE_KEYS = {
|
||||
locale: 'locale',
|
||||
emailBillTab: 'emailBill.tab',
|
||||
logsTab: 'logs.tab',
|
||||
} as const
|
||||
|
||||
/** 当前存储键前缀 */
|
||||
const CURRENT_PREFIX = 'ledgerly.'
|
||||
/** 上一代存储键前缀(品牌改名前的 finance.) */
|
||||
const LEGACY_PREFIX = 'finance.'
|
||||
|
||||
/** 模块加载时迁移上一代 finance.* 偏好键到 ledgerly.*,保证老用户偏好不丢失 */
|
||||
function migrateLegacyPrefixedKeys(): void {
|
||||
Object.values(STORAGE_KEYS).forEach((key) => {
|
||||
if (!key.startsWith(CURRENT_PREFIX)) return
|
||||
migrateKey(LEGACY_PREFIX + key.slice(CURRENT_PREFIX.length), key)
|
||||
})
|
||||
}
|
||||
|
||||
migrateLegacyPrefixedKeys()
|
||||
|
||||
/** 生成指定路由的滚动位置存储键 */
|
||||
export function scrollKey(path: string): string {
|
||||
return `${STORAGE_KEYS.scrollPrefix}${path}`
|
||||
|
||||
Reference in New Issue
Block a user