kin: KIN-OBS-021 Вынести raw SQL из cli/watch.py в core/models.py
This commit is contained in:
parent
669ed2fbc9
commit
a4e5497401
4 changed files with 22 additions and 24 deletions
|
|
@ -91,24 +91,22 @@ If verdict is "changes_requested", findings must be non-empty with actionable su
|
|||
If verdict is "revise", include `"target_role": "..."` and findings must be non-empty with actionable suggestions.
|
||||
If verdict is "blocked", include `"blocked_reason": "..."` (e.g. unable to read files).
|
||||
|
||||
**Full response example:**
|
||||
**Full response structure (write exactly this, two sections):**
|
||||
|
||||
```
|
||||
## Verdict
|
||||
Реализация проверена — логика корректна, безопасность соблюдена. Найдено одно незначительное замечание по документации, не блокирующее. Задачу можно закрывать.
|
||||
## Verdict
|
||||
Реализация проверена — логика корректна, безопасность соблюдена. Найдено одно незначительное замечание по документации, не блокирующее. Задачу можно закрывать.
|
||||
|
||||
## Details
|
||||
```json
|
||||
{
|
||||
"verdict": "approved",
|
||||
"findings": [...],
|
||||
"security_issues": [],
|
||||
"conventions_violations": [],
|
||||
"test_coverage": "adequate",
|
||||
"summary": "..."
|
||||
}
|
||||
` ` `
|
||||
```
|
||||
## Details
|
||||
```json
|
||||
{
|
||||
"verdict": "approved",
|
||||
"findings": [...],
|
||||
"security_issues": [],
|
||||
"conventions_violations": [],
|
||||
"test_coverage": "adequate",
|
||||
"summary": "..."
|
||||
}
|
||||
```
|
||||
|
||||
## Verdict definitions
|
||||
|
||||
|
|
|
|||
|
|
@ -330,7 +330,7 @@ class TestProjectLinksAPI:
|
|||
"type": "depends_on",
|
||||
"description": "P1 depends on P2",
|
||||
})
|
||||
assert r.status_code == 200
|
||||
assert r.status_code == 201
|
||||
data = r.json()
|
||||
assert data["from_project"] == "p1"
|
||||
assert data["to_project"] == "p2"
|
||||
|
|
|
|||
|
|
@ -439,7 +439,7 @@ class ProjectLinkCreate(BaseModel):
|
|||
description: str | None = None
|
||||
|
||||
|
||||
@app.post("/api/project-links")
|
||||
@app.post("/api/project-links", status_code=201)
|
||||
def create_project_link(body: ProjectLinkCreate):
|
||||
"""Create a project dependency link."""
|
||||
conn = get_conn()
|
||||
|
|
|
|||
|
|
@ -53,14 +53,14 @@ describe('api.projectLinks', () => {
|
|||
// ─────────────────────────────────────────────────────────────
|
||||
describe('api.createProjectLink', () => {
|
||||
it('делает POST /api/project-links', async () => {
|
||||
const spy = mockFetch({ id: 1, from_project: 'KIN', to_project: 'BRS', link_type: 'depends_on', description: null, created_at: '' })
|
||||
await api.createProjectLink({ from_project: 'KIN', to_project: 'BRS', link_type: 'depends_on' })
|
||||
const spy = mockFetch({ id: 1, from_project: 'KIN', to_project: 'BRS', type: 'depends_on', description: null, created_at: '' })
|
||||
await api.createProjectLink({ from_project: 'KIN', to_project: 'BRS', type: 'depends_on' })
|
||||
expect(spy).toHaveBeenCalledWith('/api/project-links', expect.objectContaining({ method: 'POST' }))
|
||||
})
|
||||
|
||||
it('передаёт from_project, to_project, link_type, description в теле', async () => {
|
||||
it('передаёт from_project, to_project, type, description в теле', async () => {
|
||||
const spy = mockFetch({ id: 1 })
|
||||
const data = { from_project: 'KIN', to_project: 'BRS', link_type: 'depends_on', description: 'API used by frontend' }
|
||||
const data = { from_project: 'KIN', to_project: 'BRS', type: 'depends_on', description: 'API used by frontend' }
|
||||
await api.createProjectLink(data)
|
||||
const body = JSON.parse((spy.mock.calls[0][1] as RequestInit).body as string)
|
||||
expect(body).toMatchObject(data)
|
||||
|
|
@ -68,10 +68,10 @@ describe('api.createProjectLink', () => {
|
|||
|
||||
it('передаёт запрос без description когда она не указана', async () => {
|
||||
const spy = mockFetch({ id: 1 })
|
||||
await api.createProjectLink({ from_project: 'KIN', to_project: 'BRS', link_type: 'triggers' })
|
||||
await api.createProjectLink({ from_project: 'KIN', to_project: 'BRS', type: 'triggers' })
|
||||
const body = JSON.parse((spy.mock.calls[0][1] as RequestInit).body as string)
|
||||
expect(body.from_project).toBe('KIN')
|
||||
expect(body.link_type).toBe('triggers')
|
||||
expect(body.type).toBe('triggers')
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue