src/docs/config-storage-history.md
STranslate/Core/Settings.cs
STranslate/Core/ServiceSettings.cs
STranslate/Core/StorageBase.cs
STranslate/Core/AppStorage.cs
SettingsDirectory/{TypeName}.json。STranslate/Core/PluginStorage.cs
PluginSettingsDirectory/{serviceId}.json。STranslate/Core/DataLocation.cs
STranslate/Core/SqlService.cs
AppStorage<T>.Load() 读取:Settings、HotkeySettings、ServiceSettings。SetStorage() 后,Settings.PropertyChanged 会自动触发:
StorageBase.Save() 采用临时文件 + 原子替换,降低写入中断导致损坏的风险。StorageBase.Load() 遇到 JSON 异常时回退 .bak,再失败则使用默认对象。DataLocation.PortableDataLocationInUse() 判断程序目录下是否存在便携目录。PortableDataPath。RoamingDataPath(%AppData%/STranslate)。CacheDirectory/history.db。SqlService.InitializeDB() 创建 History 表。InsertOrUpdateDataAsync(history, count):
(SourceText, SourceLang, TargetLang) 命中则更新,否则插入。HistoryModel.RawData 负责将 List<HistoryData> 与 JSON 字段互转。Settings
ServiceSettings
TranSvcDatas/OcrSvcDatas/TtsSvcDatas/VocabularySvcDatas。ReplaceSvcID/ImageTranslateSvcID/ImageTranslateOcrSvcID。ProxySettings 与 BackupSettings
HistoryModel / HistoryData
STranslate/Core/Settings.csSTranslate/Core/ServiceSettings.csSTranslate/Core/StorageBase.csSTranslate/Core/AppStorage.csSTranslate/Core/PluginStorage.csSTranslate/Core/DataLocation.csSTranslate/Core/SqlService.csSTranslate/Core/ProxySettings.csSTranslate/Core/BackupSettings.csSettings 或 ServiceSettings 增加属性。HandlePropertyChanged 分支。StorageBase,避免在业务层重复实现备份恢复。DataLocation,并验证升级流程中的 TmpConfigDirectory 回迁逻辑。HistoryData 时需确认 RawData 兼容旧版本 JSON。