Fincept Storage System (SQLite + Repository Pattern)
Overview
Fincept Terminal ไฝฟ็จ SQLite ไฝไธบๆฌๅฐๆไน ๅๅญๅจ๏ผ้็จ Repository ๆจกๅผ + Migration ็ณป็ป + Cache ๅฑ + SecureStorage ็ๅๅฑๆถๆใ~75 ไธชๆบๆไปถ่ฆ็ๅฎๆด็ๆฐๆฎ่ฎฟ้ฎๅฑใ
Architecture Layers
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ StorageManager โ โ ็ปไธๅ
ฅๅฃ๏ผๅๅงๅๆๆๅญ็ณป็ป
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Repositories (17+ ๅฎไฝไปๅบ) โ โ CRUD ๆไฝ๏ผไธๅกๆฐๆฎ
โ BaseRepository.h (ๆจกๆฟๅบ็ฑป) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ CacheManager + TabSessionStore โ โ ๅ
ๅญ็ผๅญ + ไผ่ฏ็ถๆ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Database + CacheDatabase (SQLite) โ โ ๅ็ SQLite ๅฐ่ฃ
โ MigrationRunner + v001~v018 โ โ ๆฐๆฎๅบ่ฟ็งป
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ SecureStorage โ โ ๆๆๆฐๆฎๅ ๅฏๅญๅจ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Database Layer
Database (ไธปๆฐๆฎๅบ)
Database::instance()โ ๅไพๆจกๅผ- ่ชๅจๅๅปบๆฐๆฎๅบ็ฎๅฝ
- ๆฏๆ WAL ๆจกๅผ (Write-Ahead Logging)
- ไบๅก็ฎก็ (
beginTransaction(),commit(),rollback())
CacheDatabase (็ผๅญๆฐๆฎๅบ)
- ็ฌ็ซไบไธปๆฐๆฎๅบ
- ็จไบ DataHub ็ๆไน ๅ็ผๅญ
- ๆฏๆ TTL ่ฟๆ่ชๅจๆธ ็
Migration System
18 ไธช่ฟ็งป็ๆฌ (v001_initial.cpp ๅฐ v018_widget_config):
| Version | Content |
|---|---|
| v001 | ๅๅง่กจ็ปๆ (accounts, settings, watchlists) |
| v002 | LLM ่ๅคฉ (chat_messages, llm_configs) |
| v003 | ๆฐๆฎๆบ + MCP + Agent ้ ็ฝฎ |
| v004 | ๆธ ็ๅบๅผ่กจ |
| v005 | Dashboard ๅธๅฑ |
| v006 | ๅค Portfolio ๆฏๆ |
| v007 | News ๅบ็บฟๆฐๆฎ |
| v008 | Workflows (ๅทฅไฝๆตๆไน ๅ) |
| v009 | Instruments (ไบคๆๅ็บฆ) |
| v010 | LLM Profiles |
| v011 | Custom Indices |
| v012 | ๆฐๆฎๆ ๅๅ้ ็ฝฎ |
| v013 | News articles |
| v014 | LLM tools ๅผๅ ณ |
| v015 | Screen state |
| v016 | Broker accounts |
| v017 | ๆง่ฝ็ดขๅผ |
| v018 | Widget config |
Repository Pattern
BaseRepository (ๆจกๆฟๅบ็ฑป)
template<typename T>
class BaseRepository {
virtual Result<T> by_id(int id);
virtual Result<QList<T>> all();
virtual Result<void> insert(const T& item);
virtual Result<void> update(const T& item);
virtual Result<void> remove(int id);
};
17+ Repositories
| Repository | Purpose |
|---|---|
AccountRepository |
็จๆท่ดฆๆท |
AgentConfigRepository |
AI Agent ้ ็ฝฎ |
ChatRepository |
LLM ่ๅคฉๅๅฒ |
ContextRecordingRepository |
ไธไธๆๅฝๅถ |
CustomIndexRepository |
่ชๅฎไนๆๆฐ |
DashboardLayoutRepository |
Dashboard ๅธๅฑ |
DataMappingRepository |
ๆฐๆฎๆ ๅฐ |
DataSourceRepository |
ๆฐๆฎๆบ่ฟๆฅ้ ็ฝฎ |
LlmConfigRepository |
LLM Provider ้ ็ฝฎ |
LlmProfileRepository |
LLM Profile |
McpServerRepository |
MCP Server ้ ็ฝฎ |
NewsArticleRepository |
ๆฐ้ปๆ็ซ |
NewsMonitorRepository |
ๆฐ้ป็ๆง |
NotesRepository |
็จๆท็ฌ่ฎฐ |
PaperTradingRepository |
ๆจกๆไบคๆ |
PortfolioHoldingsRepository |
Portfolio ๆไป |
PortfolioRepository |
Portfolio ๅฎไน |
ReportRepository |
ๆฅๅ |
SettingsRepository |
ๅบ็จ่ฎพ็ฝฎ |
WatchlistRepository |
ๅ ณๆณจๅ่กจ |
WorkflowRepository |
ๅทฅไฝๆตๅฎไน |
SecureStorage
- ๅ ๅฏๅญๅจๆๆๆฐๆฎ (API keys, credentials)
- ๅนณๅฐๅ็ๅ ๅฏ:
- Windows: DPAPI (CryptProtectData)
- macOS: Keychain
- Linux: libsecret / fallback
CacheManager + TabSessionStore
CacheManager: ๅ ๅญ็ผๅญ๏ผๆฏๆ TTLTabSessionStore: ไฟๅญๆ ็ญพ้กต็ถๆ (ๆปๅจไฝ็ฝฎใ้ไธญ้กน็ญ)
Design Decisions
- SQLite over embedded DB: ้ถไพ่ต๏ผ่ทจๅนณๅฐ๏ผๆฏๆๅฎๆด SQL
- Repository pattern: ็ปไธๆฅๅฃ๏ผๆไบๆต่ฏๅๆฟๆขๅ็ซฏ
- Migration system: ๅฎๅ จ็ schema ๆผ่ฟ
- Separate cache DB: ็ผๅญๆฐๆฎๅฏๅฎๅ จๅ ้ค๏ผไธๅฝฑๅๆ ธๅฟๆฐๆฎ
- Platform-native encryption: ไธ่ช่กๅฎ็ฐๅ ๅฏ็ฎๆณ
- WAL mode: ๆดๅฅฝ็ๅนถๅๆง่ฝ