architecturesqlitedatabasecppqt6 type: concept ๅˆ›ๅปบ: 2026-04-20 ๆ›ดๆ–ฐ: 2026-04-20

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: ๅ†…ๅญ˜็ผ“ๅญ˜๏ผŒๆ”ฏๆŒ TTL
  • TabSessionStore: ไฟๅญ˜ๆ ‡็ญพ้กต็Šถๆ€ (ๆปšๅŠจไฝ็ฝฎใ€้€‰ไธญ้กน็ญ‰)

Design Decisions

  1. SQLite over embedded DB: ้›ถไพ่ต–๏ผŒ่ทจๅนณๅฐ๏ผŒๆ”ฏๆŒๅฎŒๆ•ด SQL
  2. Repository pattern: ็ปŸไธ€ๆŽฅๅฃ๏ผŒๆ˜“ไบŽๆต‹่ฏ•ๅ’Œๆ›ฟๆขๅŽ็ซฏ
  3. Migration system: ๅฎ‰ๅ…จ็š„ schema ๆผ”่ฟ›
  4. Separate cache DB: ็ผ“ๅญ˜ๆ•ฐๆฎๅฏๅฎ‰ๅ…จๅˆ ้™ค๏ผŒไธๅฝฑๅ“ๆ ธๅฟƒๆ•ฐๆฎ
  5. Platform-native encryption: ไธ่‡ช่กŒๅฎž็ŽฐๅŠ ๅฏ†็ฎ—ๆณ•
  6. WAL mode: ๆ›ดๅฅฝ็š„ๅนถๅ‘ๆ€ง่ƒฝ

Related