kin: KIN-ARCH-001 Добавить серверную валидацию ssh_host для operations-проектов
This commit is contained in:
parent
af554e15fa
commit
ba04e7ad84
3 changed files with 141 additions and 5 deletions
44
core/db.py
44
core/db.py
|
|
@ -13,7 +13,7 @@ SCHEMA = """
|
|||
CREATE TABLE IF NOT EXISTS projects (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
path TEXT NOT NULL,
|
||||
path TEXT CHECK (path IS NOT NULL OR project_type = 'operations'),
|
||||
tech_stack JSON,
|
||||
status TEXT DEFAULT 'active',
|
||||
priority INTEGER DEFAULT 5,
|
||||
|
|
@ -364,6 +364,48 @@ def _migrate(conn: sqlite3.Connection):
|
|||
""")
|
||||
conn.commit()
|
||||
|
||||
# Migrate projects.path from NOT NULL to nullable (KIN-ARCH-003)
|
||||
# SQLite doesn't support ALTER COLUMN, so we recreate the table.
|
||||
path_col_rows = conn.execute("PRAGMA table_info(projects)").fetchall()
|
||||
path_col = next((r for r in path_col_rows if r[1] == "path"), None)
|
||||
if path_col and path_col[3] == 1: # notnull == 1, migration needed
|
||||
conn.executescript("""
|
||||
PRAGMA foreign_keys=OFF;
|
||||
CREATE TABLE projects_new (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
path TEXT CHECK (path IS NOT NULL OR project_type = 'operations'),
|
||||
tech_stack JSON,
|
||||
status TEXT DEFAULT 'active',
|
||||
priority INTEGER DEFAULT 5,
|
||||
pm_prompt TEXT,
|
||||
claude_md_path TEXT,
|
||||
forgejo_repo TEXT,
|
||||
language TEXT DEFAULT 'ru',
|
||||
execution_mode TEXT NOT NULL DEFAULT 'review',
|
||||
deploy_command TEXT,
|
||||
project_type TEXT DEFAULT 'development',
|
||||
ssh_host TEXT,
|
||||
ssh_user TEXT,
|
||||
ssh_key_path TEXT,
|
||||
ssh_proxy_jump TEXT,
|
||||
description TEXT,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
autocommit_enabled INTEGER DEFAULT 0,
|
||||
obsidian_vault_path TEXT
|
||||
);
|
||||
INSERT INTO projects_new
|
||||
SELECT id, name, path, tech_stack, status, priority,
|
||||
pm_prompt, claude_md_path, forgejo_repo, language,
|
||||
execution_mode, deploy_command, project_type,
|
||||
ssh_host, ssh_user, ssh_key_path, ssh_proxy_jump,
|
||||
description, created_at, autocommit_enabled, obsidian_vault_path
|
||||
FROM projects;
|
||||
DROP TABLE projects;
|
||||
ALTER TABLE projects_new RENAME TO projects;
|
||||
PRAGMA foreign_keys=ON;
|
||||
""")
|
||||
|
||||
# Rename legacy 'auto' → 'auto_complete' (KIN-063)
|
||||
conn.execute(
|
||||
"UPDATE projects SET execution_mode = 'auto_complete' WHERE execution_mode = 'auto'"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue