fix(db_prompts): передача row_factory=True для корректного преобразования строк SQLite в словари
This commit is contained in:
@@ -18,7 +18,7 @@ logger = logging.getLogger("DB_PROMPTS")
|
|||||||
|
|
||||||
def init_prompt_nodes_table():
|
def init_prompt_nodes_table():
|
||||||
"""Создает реляционную таблицу узлов промпта и заполняет базовыми данными."""
|
"""Создает реляционную таблицу узлов промпта и заполняет базовыми данными."""
|
||||||
with get_db_connection() as conn:
|
with get_db_connection(row_factory=True) as conn:
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
CREATE TABLE IF NOT EXISTS system_prompt_nodes (
|
CREATE TABLE IF NOT EXISTS system_prompt_nodes (
|
||||||
@@ -73,7 +73,7 @@ def init_prompt_nodes_table():
|
|||||||
def db_get_active_system_prompt(prompt_name: str = "main_agent") -> str:
|
def db_get_active_system_prompt(prompt_name: str = "main_agent") -> str:
|
||||||
"""Собирает структурированный текст промпта из реляционной таблицы узлов."""
|
"""Собирает структурированный текст промпта из реляционной таблицы узлов."""
|
||||||
init_prompt_nodes_table()
|
init_prompt_nodes_table()
|
||||||
with get_db_connection() as conn:
|
with get_db_connection(row_factory=True) as conn:
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
SELECT section_id, item_id, content
|
SELECT section_id, item_id, content
|
||||||
@@ -104,7 +104,7 @@ def db_get_active_system_prompt(prompt_name: str = "main_agent") -> str:
|
|||||||
def db_apply_prompt_node_action(action: str, section_id: int, item_id: int, content: str = "", prompt_name: str = "main_agent"):
|
def db_apply_prompt_node_action(action: str, section_id: int, item_id: int, content: str = "", prompt_name: str = "main_agent"):
|
||||||
"""Прямое добавление, изменение или удаление узла в БД."""
|
"""Прямое добавление, изменение или удаление узла в БД."""
|
||||||
init_prompt_nodes_table()
|
init_prompt_nodes_table()
|
||||||
with get_db_connection() as conn:
|
with get_db_connection(row_factory=True) as conn:
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
action_clean = action.upper()
|
action_clean = action.upper()
|
||||||
if action_clean in ["ADD", "UPDATE"]:
|
if action_clean in ["ADD", "UPDATE"]:
|
||||||
@@ -125,7 +125,7 @@ def db_apply_prompt_node_action(action: str, section_id: int, item_id: int, cont
|
|||||||
|
|
||||||
|
|
||||||
def db_get_tool_action(tool_name: str) -> Optional[Dict[str, Any]]:
|
def db_get_tool_action(tool_name: str) -> Optional[Dict[str, Any]]:
|
||||||
conn = get_db_connection()
|
conn = get_db_connection(row_factory=True)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
SELECT tool_name, category, bypass_llm, success_template,
|
SELECT tool_name, category, bypass_llm, success_template,
|
||||||
@@ -144,7 +144,7 @@ def db_get_tool_action(tool_name: str) -> Optional[Dict[str, Any]]:
|
|||||||
|
|
||||||
|
|
||||||
def db_get_rules() -> List[Dict[str, Any]]:
|
def db_get_rules() -> List[Dict[str, Any]]:
|
||||||
conn = get_db_connection()
|
conn = get_db_connection(row_factory=True)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute("SELECT id, rule_text FROM ai_knowledge_base ORDER BY id ASC")
|
cursor.execute("SELECT id, rule_text FROM ai_knowledge_base ORDER BY id ASC")
|
||||||
rows = cursor.fetchall()
|
rows = cursor.fetchall()
|
||||||
@@ -154,7 +154,7 @@ def db_get_rules() -> List[Dict[str, Any]]:
|
|||||||
|
|
||||||
def db_set_session_state(session_id: str, state_type: str, data: Any) -> None:
|
def db_set_session_state(session_id: str, state_type: str, data: Any) -> None:
|
||||||
"""Сохраняет состояние сессии в SQLite."""
|
"""Сохраняет состояние сессии в SQLite."""
|
||||||
conn = get_db_connection()
|
conn = get_db_connection(row_factory=True)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
payload_str = json.dumps(data, ensure_ascii=False) if isinstance(data, (dict, list)) else (str(data) if data is not None else "")
|
payload_str = json.dumps(data, ensure_ascii=False) if isinstance(data, (dict, list)) else (str(data) if data is not None else "")
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
@@ -170,7 +170,7 @@ def db_set_session_state(session_id: str, state_type: str, data: Any) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def db_get_session_state(session_id: str) -> Optional[Dict[str, Any]]:
|
def db_get_session_state(session_id: str) -> Optional[Dict[str, Any]]:
|
||||||
conn = get_db_connection()
|
conn = get_db_connection(row_factory=True)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute("SELECT session_id, state_type, pending_data, updated_at FROM session_states WHERE session_id = ?", (session_id,))
|
cursor.execute("SELECT session_id, state_type, pending_data, updated_at FROM session_states WHERE session_id = ?", (session_id,))
|
||||||
row = cursor.fetchone()
|
row = cursor.fetchone()
|
||||||
@@ -187,7 +187,7 @@ def db_get_session_state(session_id: str) -> Optional[Dict[str, Any]]:
|
|||||||
|
|
||||||
|
|
||||||
def db_clear_session_state(session_id: str) -> None:
|
def db_clear_session_state(session_id: str) -> None:
|
||||||
conn = get_db_connection()
|
conn = get_db_connection(row_factory=True)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute("DELETE FROM session_states WHERE session_id = ?", (session_id,))
|
cursor.execute("DELETE FROM session_states WHERE session_id = ?", (session_id,))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
@@ -195,7 +195,7 @@ def db_clear_session_state(session_id: str) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def db_get_stats() -> Dict[str, Any]:
|
def db_get_stats() -> Dict[str, Any]:
|
||||||
conn = get_db_connection()
|
conn = get_db_connection(row_factory=True)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
tables = ['scud_logs', 'zup_staff', 'zup_absences', 'anomalies_history', 'ai_knowledge_base', 'system_prompt_nodes', 'session_states', 'tasks']
|
tables = ['scud_logs', 'zup_staff', 'zup_absences', 'anomalies_history', 'ai_knowledge_base', 'system_prompt_nodes', 'session_states', 'tasks']
|
||||||
stats = {}
|
stats = {}
|
||||||
@@ -210,7 +210,7 @@ def db_get_stats() -> Dict[str, Any]:
|
|||||||
|
|
||||||
|
|
||||||
def db_get_anomalies(limit: int = 100, date_str: Optional[str] = None) -> Dict[str, Any]:
|
def db_get_anomalies(limit: int = 100, date_str: Optional[str] = None) -> Dict[str, Any]:
|
||||||
conn = get_db_connection()
|
conn = get_db_connection(row_factory=True)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
query = "SELECT anomaly_date, fio, anomaly_type, details FROM anomalies_history"
|
query = "SELECT anomaly_date, fio, anomaly_type, details FROM anomalies_history"
|
||||||
params = []
|
params = []
|
||||||
@@ -226,7 +226,7 @@ def db_get_anomalies(limit: int = 100, date_str: Optional[str] = None) -> Dict[s
|
|||||||
|
|
||||||
|
|
||||||
def db_get_reference(category: Optional[str] = None) -> Dict[str, Any]:
|
def db_get_reference(category: Optional[str] = None) -> Dict[str, Any]:
|
||||||
conn = get_db_connection()
|
conn = get_db_connection(row_factory=True)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
query = "SELECT category, title, example_prompt, description FROM system_reference"
|
query = "SELECT category, title, example_prompt, description FROM system_reference"
|
||||||
params = []
|
params = []
|
||||||
|
|||||||
Reference in New Issue
Block a user