feat: shared supervisor timeline, story assignment and time-spiral view
Each source version is extracted once for every review scope; events carry spans and projects from their sources, and attention density is counted from messages. After publication, events are assigned to project features and sub-threads (cross-project stories only when enabled), with user rename, merge, remove, move and undo. The story graph gains a lazily loaded Three.js time-spiral view. Includes the 3D concept demo, real-data DeepSeek check scripts and docs.
This commit is contained in:
@@ -88,6 +88,9 @@ it('supervision preserves result history and protected identities within scope t
|
||||
|
||||
const other = structuredClone(third)
|
||||
other.request.scope = { kind: 'projects', projectIds: [projects[1]!.id] }
|
||||
// Cross-project off: project B is never offered project A's entities, so it cannot claim them.
|
||||
other.candidates = db.listSupervisionCandidates(other.request, { projectId: projects[1]!.id, crossProject: false })
|
||||
expect(other.candidates).toEqual([])
|
||||
expect(() => db.saveSupervisionResult(other)).toThrow('本次范围')
|
||||
other.output.entities.forEach((entity) => { delete entity.persistedId })
|
||||
other.evidence = [{ ...first.evidence[0]!, sourceId: 'B', title: 'B source' }]
|
||||
|
||||
Reference in New Issue
Block a user