Files
ledgerly/frontend/src/utils/storageKeys.ts
T
rosercode 24074aeea2 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
2026-09-23 17:33:59 +08:00

66 lines
2.6 KiB
TypeScript

// 本地存储键常量:界面/用户偏好统一以 ledgerly. 前缀命名,作为唯一来源供路由与各页面复用
import { migrateKey } from './storage'
/** 当前使用的本地存储键 */
export const STORAGE_KEYS = {
// 语言偏好
locale: 'ledgerly.locale',
// 邮箱账单页标签页
emailBillTab: 'ledgerly.emailBill.tab',
// 系统日志页标签页
logsTab: 'ledgerly.logs.tab',
// 账单导入的账单类型
billImportBillType: 'ledgerly.billImport.billType',
// 统计面板偏好
dashboardPrefs: 'ledgerly.dashboard.prefs',
// 统计面板 AI 查询历史
dashboardAiSearchHistory: 'ledgerly.dashboard.aiSearchHistory',
// 统计面板 AI 查询浮窗位置尺寸
dashboardAiQueryWindow: 'ledgerly.dashboard.aiQueryWindow',
// 收支记录 AI 建议范围
transactionAiScope: 'ledgerly.transaction.aiScope',
// 收支记录 AI 记账方式
transactionAiRecordTab: 'ledgerly.transaction.aiRecordTab',
// 收支记录备注关键词历史
transactionRemarkHistory: 'ledgerly.transaction.remarkHistory',
// 收支记录筛选偏好(收支记录页与统计面板共用)
transactionFilterPrefs: 'ledgerly.transaction.filterPrefs',
// 各表格每页大小偏好(聚合 JSON,按表格键区分,本机记忆)
paginationTablePageSizes: 'ledgerly.pagination.tablePageSizes',
// 账单关系类型
transactionRelationType: 'ledgerly.transaction.relationType',
// 收支记录 AI 查询历史
transactionAiQueryHistory: 'ledgerly.transaction.aiQueryHistory',
// 收支记录 AI 查询浮窗位置尺寸
transactionAiQueryWindow: 'ledgerly.transaction.aiQueryWindow',
// 内容区滚动位置(sessionStorage,按路由拼接后缀)
scrollPrefix: 'ledgerly.scroll.',
} as const
/** 历史遗留的存储键(未带前缀),首次读取时迁移到新键 */
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}`
}