docs(README): 更新项目说明文档,完善架构与启动指南
- 调整 CLAUDE.md 内容,增加使用指导和架构概览 - 补充微服务启动说明及单服务启动命令 - 明确 Gateway 服务器四阶段启动流程和职责划分 - 细化后端目录结构说明,补充主要文件职责描述 - 新增系统分层结构图,优化整体架构理解 - 更新 .gitignore,添加 runs 目录忽略规则 - 同步 .omc 相关状态文件,更新项目状态跟踪信息
This commit is contained in:
@@ -9,7 +9,7 @@ import os
|
||||
import sqlite3
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
from typing import Any, Iterable
|
||||
from typing import Any, Iterable, Optional
|
||||
|
||||
|
||||
SCHEMA = """
|
||||
@@ -147,12 +147,30 @@ def _utc_timestamp() -> str:
|
||||
|
||||
|
||||
class MarketStore:
|
||||
"""SQLite-backed market research warehouse."""
|
||||
"""SQLite-backed market research warehouse. Use get_instance() for the singleton."""
|
||||
|
||||
_instance: Optional["MarketStore"] = None
|
||||
|
||||
def __new__(cls, db_path: Path | None = None) -> "MarketStore":
|
||||
if cls._instance is not None:
|
||||
if db_path is None or cls._instance.db_path == Path(db_path or get_market_db_path()):
|
||||
return cls._instance
|
||||
instance = super().__new__(cls)
|
||||
cls._instance = instance
|
||||
return instance
|
||||
|
||||
def __init__(self, db_path: Path | None = None):
|
||||
if getattr(self, "_initialized", False):
|
||||
return
|
||||
self.db_path = Path(db_path or get_market_db_path())
|
||||
self.db_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
self._init_db()
|
||||
self._initialized = True
|
||||
|
||||
@classmethod
|
||||
def get_instance(cls, db_path: Path | None = None) -> "MarketStore":
|
||||
"""Get the MarketStore singleton instance."""
|
||||
return cls(db_path)
|
||||
|
||||
def _connect(self) -> sqlite3.Connection:
|
||||
conn = sqlite3.connect(self.db_path)
|
||||
|
||||
Reference in New Issue
Block a user