kin: KIN-ARCH-007 Дочистить оставшиеся workaround path='' после KIN-ARCH-003
This commit is contained in:
parent
a28790d194
commit
e4566d51a6
3 changed files with 7 additions and 10 deletions
|
|
@ -1354,7 +1354,6 @@ def test_create_operations_project_with_ssh_fields(client):
|
||||||
r = client.post("/api/projects", json={
|
r = client.post("/api/projects", json={
|
||||||
"id": "srv1",
|
"id": "srv1",
|
||||||
"name": "My Server",
|
"name": "My Server",
|
||||||
"path": "",
|
|
||||||
"project_type": "operations",
|
"project_type": "operations",
|
||||||
"ssh_host": "10.0.0.1",
|
"ssh_host": "10.0.0.1",
|
||||||
"ssh_user": "root",
|
"ssh_user": "root",
|
||||||
|
|
@ -1364,6 +1363,7 @@ def test_create_operations_project_with_ssh_fields(client):
|
||||||
assert r.status_code == 200
|
assert r.status_code == 200
|
||||||
data = r.json()
|
data = r.json()
|
||||||
assert data["project_type"] == "operations"
|
assert data["project_type"] == "operations"
|
||||||
|
assert data["path"] is None
|
||||||
assert data["ssh_host"] == "10.0.0.1"
|
assert data["ssh_host"] == "10.0.0.1"
|
||||||
assert data["ssh_user"] == "root"
|
assert data["ssh_user"] == "root"
|
||||||
assert data["ssh_key_path"] == "~/.ssh/id_rsa"
|
assert data["ssh_key_path"] == "~/.ssh/id_rsa"
|
||||||
|
|
@ -1397,7 +1397,6 @@ def test_create_operations_project_without_ssh_host_allowed(client):
|
||||||
r = client.post("/api/projects", json={
|
r = client.post("/api/projects", json={
|
||||||
"id": "srv2",
|
"id": "srv2",
|
||||||
"name": "Server No SSH",
|
"name": "Server No SSH",
|
||||||
"path": "",
|
|
||||||
"project_type": "operations",
|
"project_type": "operations",
|
||||||
})
|
})
|
||||||
# Фикс KIN-ARCH-001: был 200, стал 422
|
# Фикс KIN-ARCH-001: был 200, стал 422
|
||||||
|
|
@ -1417,7 +1416,6 @@ def test_kin_arch_001_operations_without_ssh_host_returns_422(client):
|
||||||
r = client.post("/api/projects", json={
|
r = client.post("/api/projects", json={
|
||||||
"id": "ops_no_ssh",
|
"id": "ops_no_ssh",
|
||||||
"name": "Ops Without SSH",
|
"name": "Ops Without SSH",
|
||||||
"path": "",
|
|
||||||
"project_type": "operations",
|
"project_type": "operations",
|
||||||
})
|
})
|
||||||
assert r.status_code == 422
|
assert r.status_code == 422
|
||||||
|
|
@ -1429,7 +1427,6 @@ def test_kin_arch_001_operations_with_empty_ssh_host_returns_422(client):
|
||||||
r = client.post("/api/projects", json={
|
r = client.post("/api/projects", json={
|
||||||
"id": "ops_empty_ssh",
|
"id": "ops_empty_ssh",
|
||||||
"name": "Ops Empty SSH",
|
"name": "Ops Empty SSH",
|
||||||
"path": "",
|
|
||||||
"project_type": "operations",
|
"project_type": "operations",
|
||||||
"ssh_host": "",
|
"ssh_host": "",
|
||||||
})
|
})
|
||||||
|
|
@ -1442,13 +1439,13 @@ def test_kin_arch_001_operations_with_valid_ssh_host_returns_200(client):
|
||||||
r = client.post("/api/projects", json={
|
r = client.post("/api/projects", json={
|
||||||
"id": "ops_with_ssh",
|
"id": "ops_with_ssh",
|
||||||
"name": "Ops With SSH",
|
"name": "Ops With SSH",
|
||||||
"path": "",
|
|
||||||
"project_type": "operations",
|
"project_type": "operations",
|
||||||
"ssh_host": "10.0.0.42",
|
"ssh_host": "10.0.0.42",
|
||||||
})
|
})
|
||||||
assert r.status_code == 200
|
assert r.status_code == 200
|
||||||
data = r.json()
|
data = r.json()
|
||||||
assert data["project_type"] == "operations"
|
assert data["project_type"] == "operations"
|
||||||
|
assert data["path"] is None
|
||||||
assert data["ssh_host"] == "10.0.0.42"
|
assert data["ssh_host"] == "10.0.0.42"
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1484,7 +1481,6 @@ def test_kin_arch_001_422_error_message_mentions_ssh_host(client):
|
||||||
r = client.post("/api/projects", json={
|
r = client.post("/api/projects", json={
|
||||||
"id": "ops_err_msg",
|
"id": "ops_err_msg",
|
||||||
"name": "Check Error Message",
|
"name": "Check Error Message",
|
||||||
"path": "",
|
|
||||||
"project_type": "operations",
|
"project_type": "operations",
|
||||||
})
|
})
|
||||||
assert r.status_code == 422
|
assert r.status_code == 422
|
||||||
|
|
|
||||||
|
|
@ -84,10 +84,11 @@ def test_create_development_project_defaults(conn):
|
||||||
|
|
||||||
def test_update_project_ssh_fields(conn):
|
def test_update_project_ssh_fields(conn):
|
||||||
"""KIN-071: update_project can set SSH fields."""
|
"""KIN-071: update_project can set SSH fields."""
|
||||||
models.create_project(conn, "srv2", "Server 2", "", project_type="operations")
|
models.create_project(conn, "srv2", "Server 2", project_type="operations")
|
||||||
updated = models.update_project(conn, "srv2", ssh_host="192.168.1.1", ssh_user="pelmen")
|
updated = models.update_project(conn, "srv2", ssh_host="192.168.1.1", ssh_user="pelmen")
|
||||||
assert updated["ssh_host"] == "192.168.1.1"
|
assert updated["ssh_host"] == "192.168.1.1"
|
||||||
assert updated["ssh_user"] == "pelmen"
|
assert updated["ssh_user"] == "pelmen"
|
||||||
|
assert updated["path"] is None
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ const autoMode = ref(false)
|
||||||
function loadMode(t: typeof task.value) {
|
function loadMode(t: typeof task.value) {
|
||||||
if (!t) return
|
if (!t) return
|
||||||
if (t.execution_mode) {
|
if (t.execution_mode) {
|
||||||
autoMode.value = t.execution_mode === 'auto'
|
autoMode.value = t.execution_mode === 'auto_complete'
|
||||||
} else if (t.status === 'review') {
|
} else if (t.status === 'review') {
|
||||||
// Task is in review — always show Approve/Reject regardless of localStorage
|
// Task is in review — always show Approve/Reject regardless of localStorage
|
||||||
autoMode.value = false
|
autoMode.value = false
|
||||||
|
|
@ -52,7 +52,7 @@ async function toggleMode() {
|
||||||
autoMode.value = !autoMode.value
|
autoMode.value = !autoMode.value
|
||||||
localStorage.setItem(`kin-mode-${task.value.project_id}`, autoMode.value ? 'auto' : 'review')
|
localStorage.setItem(`kin-mode-${task.value.project_id}`, autoMode.value ? 'auto' : 'review')
|
||||||
try {
|
try {
|
||||||
const updated = await api.patchTask(props.id, { execution_mode: autoMode.value ? 'auto' : 'review' })
|
const updated = await api.patchTask(props.id, { execution_mode: autoMode.value ? 'auto_complete' : 'review' })
|
||||||
task.value = { ...task.value, ...updated }
|
task.value = { ...task.value, ...updated }
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
error.value = e.message
|
error.value = e.message
|
||||||
|
|
@ -343,7 +343,7 @@ async function saveEdit() {
|
||||||
<h1 class="text-xl font-bold text-gray-100">{{ task.id }}</h1>
|
<h1 class="text-xl font-bold text-gray-100">{{ task.id }}</h1>
|
||||||
<span class="text-gray-400">{{ task.title }}</span>
|
<span class="text-gray-400">{{ task.title }}</span>
|
||||||
<Badge :text="task.status" :color="statusColor(task.status)" />
|
<Badge :text="task.status" :color="statusColor(task.status)" />
|
||||||
<span v-if="task.execution_mode === 'auto'"
|
<span v-if="task.execution_mode === 'auto_complete'"
|
||||||
class="text-[10px] px-1.5 py-0.5 bg-yellow-900/40 text-yellow-400 border border-yellow-800 rounded"
|
class="text-[10px] px-1.5 py-0.5 bg-yellow-900/40 text-yellow-400 border border-yellow-800 rounded"
|
||||||
title="Auto mode: agents can write files">🔓 auto</span>
|
title="Auto mode: agents can write files">🔓 auto</span>
|
||||||
<select
|
<select
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue