feat(vscode): webhook 副作用按 assignee 门禁,适配多人协作

This commit is contained in:
2026-08-18 23:57:21 +08:00
parent c20bd86370
commit c370214d12
11 changed files with 450 additions and 22 deletions
+60
View File
@@ -0,0 +1,60 @@
import { describe, expect, it } from 'vitest'
import { decideEventOwnership } from './eventOwnership'
describe('decideEventOwnership', () => {
it('assignee 是我 → own', () => {
expect(decideEventOwnership({
assignees: ['cruldra'],
me: 'cruldra',
hasLocalSessionEvidence: false,
})).toBe('own')
})
it('assignee 是别人 → observe,即使本机有终端(重新指派会转移责任)', () => {
expect(decideEventOwnership({
assignees: ['chehongwei'],
me: 'cruldra',
hasLocalSessionEvidence: true,
})).toBe('observe')
})
it('多 assignee 含我 → own', () => {
expect(decideEventOwnership({
assignees: ['chehongwei', 'cruldra'],
me: 'cruldra',
hasLocalSessionEvidence: false,
})).toBe('own')
})
it('有 assignee 但身份未知 → observe(无法证明归属时不动作)', () => {
expect(decideEventOwnership({
assignees: ['cruldra'],
me: undefined,
hasLocalSessionEvidence: true,
})).toBe('observe')
})
it('无 assignee(存量工单)+ 本机有实施/测试终端 → own', () => {
expect(decideEventOwnership({
assignees: [],
me: 'cruldra',
hasLocalSessionEvidence: true,
})).toBe('own')
})
it('无 assignee + 无本地证据 → observe', () => {
expect(decideEventOwnership({
assignees: [],
me: 'cruldra',
hasLocalSessionEvidence: false,
})).toBe('observe')
})
it('无 assignee 时本地证据不依赖身份(token 失效也能兜底)', () => {
expect(decideEventOwnership({
assignees: [],
me: undefined,
hasLocalSessionEvidence: true,
})).toBe('own')
})
})