kin: KIN-020 UI для manual_task эскалации из auto_resolve_pending_actions
This commit is contained in:
parent
a0b0976d8d
commit
77ed68c2b5
3 changed files with 57 additions and 3 deletions
25
web/api.py
25
web/api.py
|
|
@ -138,12 +138,13 @@ class ProjectCreate(BaseModel):
|
|||
class ProjectPatch(BaseModel):
|
||||
execution_mode: str | None = None
|
||||
autocommit_enabled: bool | None = None
|
||||
obsidian_vault_path: str | None = None
|
||||
|
||||
|
||||
@app.patch("/api/projects/{project_id}")
|
||||
def patch_project(project_id: str, body: ProjectPatch):
|
||||
if body.execution_mode is None and body.autocommit_enabled is None:
|
||||
raise HTTPException(400, "Nothing to update. Provide execution_mode or autocommit_enabled.")
|
||||
if body.execution_mode is None and body.autocommit_enabled is None and body.obsidian_vault_path is None:
|
||||
raise HTTPException(400, "Nothing to update. Provide execution_mode, autocommit_enabled, or obsidian_vault_path.")
|
||||
if body.execution_mode is not None and body.execution_mode not in VALID_EXECUTION_MODES:
|
||||
raise HTTPException(400, f"Invalid execution_mode '{body.execution_mode}'. Must be one of: {', '.join(VALID_EXECUTION_MODES)}")
|
||||
conn = get_conn()
|
||||
|
|
@ -156,12 +157,32 @@ def patch_project(project_id: str, body: ProjectPatch):
|
|||
fields["execution_mode"] = body.execution_mode
|
||||
if body.autocommit_enabled is not None:
|
||||
fields["autocommit_enabled"] = int(body.autocommit_enabled)
|
||||
if body.obsidian_vault_path is not None:
|
||||
fields["obsidian_vault_path"] = body.obsidian_vault_path
|
||||
models.update_project(conn, project_id, **fields)
|
||||
p = models.get_project(conn, project_id)
|
||||
conn.close()
|
||||
return p
|
||||
|
||||
|
||||
@app.post("/api/projects/{project_id}/sync/obsidian")
|
||||
def sync_obsidian_endpoint(project_id: str):
|
||||
"""Запускает двусторонний Obsidian sync для проекта."""
|
||||
from core.obsidian_sync import sync_obsidian
|
||||
|
||||
conn = get_conn()
|
||||
p = models.get_project(conn, project_id)
|
||||
if not p:
|
||||
conn.close()
|
||||
raise HTTPException(404, f"Project '{project_id}' not found")
|
||||
if not p.get("obsidian_vault_path"):
|
||||
conn.close()
|
||||
raise HTTPException(400, "obsidian_vault_path not set for this project")
|
||||
result = sync_obsidian(conn, project_id)
|
||||
conn.close()
|
||||
return result
|
||||
|
||||
|
||||
@app.post("/api/projects")
|
||||
def create_project(body: ProjectCreate):
|
||||
conn = get_conn()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue