kin: auto-commit after pipeline
This commit is contained in:
parent
e118b87a3e
commit
6ffe4ffb9f
2 changed files with 42 additions and 4 deletions
|
|
@ -43,7 +43,27 @@ For a specific test file: `python -m pytest tests/test_models.py -v`
|
||||||
|
|
||||||
## Output format
|
## Output format
|
||||||
|
|
||||||
Return ONLY valid JSON (no markdown, no explanation):
|
Return TWO sections in your response:
|
||||||
|
|
||||||
|
### Section 1 — `## Verdict` (human-readable, in Russian)
|
||||||
|
|
||||||
|
2-3 sentences in plain Russian for the project director: what was tested, did all tests pass, are there failures. No JSON, no code snippets, no technical details.
|
||||||
|
|
||||||
|
Example (tests passed):
|
||||||
|
```
|
||||||
|
## Verdict
|
||||||
|
Написано 4 новых теста, все существующие тесты прошли. Новая функциональность покрыта полностью. Всё в порядке.
|
||||||
|
```
|
||||||
|
|
||||||
|
Example (tests failed):
|
||||||
|
```
|
||||||
|
## Verdict
|
||||||
|
Тесты выявили проблему: 2 из 6 новых тестов упали из-за ошибки в функции обработки пустого ввода. Требуется исправление в backend.
|
||||||
|
```
|
||||||
|
|
||||||
|
### Section 2 — `## Details` (JSON block for agents)
|
||||||
|
|
||||||
|
The full technical output in JSON, wrapped in a ```json code fence:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
|
@ -68,6 +88,24 @@ Valid values for `status`: `"passed"`, `"failed"`, `"blocked"`.
|
||||||
If status is "failed", populate `"failures"` with `[{"test": "...", "error": "..."}]`.
|
If status is "failed", populate `"failures"` with `[{"test": "...", "error": "..."}]`.
|
||||||
If status is "blocked", include `"blocked_reason": "..."`.
|
If status is "blocked", include `"blocked_reason": "..."`.
|
||||||
|
|
||||||
|
**Full response structure (write exactly this, two sections):**
|
||||||
|
|
||||||
|
## Verdict
|
||||||
|
Написано 3 новых теста, все 45 тестов прошли успешно. Новые кейсы покрывают основные сценарии. Всё в порядке.
|
||||||
|
|
||||||
|
## Details
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "passed",
|
||||||
|
"tests_written": [...],
|
||||||
|
"tests_run": 45,
|
||||||
|
"tests_passed": 45,
|
||||||
|
"tests_failed": 0,
|
||||||
|
"failures": [],
|
||||||
|
"notes": "..."
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Blocked Protocol
|
## Blocked Protocol
|
||||||
|
|
||||||
If you cannot perform the task (no file access, ambiguous requirements, task outside your scope), return this JSON **instead of** the normal output:
|
If you cannot perform the task (no file access, ambiguous requirements, task outside your scope), return this JSON **instead of** the normal output:
|
||||||
|
|
|
||||||
|
|
@ -547,12 +547,12 @@ describe('ProjectView — Links таб', () => {
|
||||||
const fromInput = disabledInputs.find(i => (i.element as HTMLInputElement).value === 'KIN')
|
const fromInput = disabledInputs.find(i => (i.element as HTMLInputElement).value === 'KIN')
|
||||||
expect(fromInput).toBeDefined()
|
expect(fromInput).toBeDefined()
|
||||||
|
|
||||||
// to_project и link_type — select элементы
|
// to_project и type — select элементы
|
||||||
const selects = wrapper.findAll('select')
|
const selects = wrapper.findAll('select')
|
||||||
expect(selects.length).toBeGreaterThanOrEqual(1)
|
expect(selects.length).toBeGreaterThanOrEqual(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('форма link_type select содержит depends_on, triggers, related_to', async () => {
|
it('форма type select содержит depends_on, triggers, related_to', async () => {
|
||||||
const wrapper = await mountProjectView()
|
const wrapper = await mountProjectView()
|
||||||
await switchToLinksTab(wrapper)
|
await switchToLinksTab(wrapper)
|
||||||
const plusBtn = wrapper.findAll('button').find(b => b.text().includes('+') && b.text().includes('Link'))
|
const plusBtn = wrapper.findAll('button').find(b => b.text().includes('+') && b.text().includes('Link'))
|
||||||
|
|
@ -605,7 +605,7 @@ describe('ProjectView — Links таб', () => {
|
||||||
|
|
||||||
it('Delete вызывает api.deleteProjectLink с id связи', async () => {
|
it('Delete вызывает api.deleteProjectLink с id связи', async () => {
|
||||||
const links = [
|
const links = [
|
||||||
{ id: 7, from_project: 'KIN', to_project: 'BRS', link_type: 'depends_on', description: null, created_at: '2026-01-01' },
|
{ id: 7, from_project: 'KIN', to_project: 'BRS', type: 'depends_on', description: null, created_at: '2026-01-01' },
|
||||||
]
|
]
|
||||||
vi.mocked(api.projectLinks).mockResolvedValue(links as any)
|
vi.mocked(api.projectLinks).mockResolvedValue(links as any)
|
||||||
vi.spyOn(window, 'confirm').mockReturnValue(true)
|
vi.spyOn(window, 'confirm').mockReturnValue(true)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue