@lemoncat7/dsh-partner 1.10.6 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +41 -0
  2. package/docs/architecture.md +14 -0
  3. package/lib/api/features/workspace-api.js +2 -2
  4. package/lib/api/features/workspace-api.js.map +1 -1
  5. package/lib/client-api.d.ts +8 -0
  6. package/lib/client-api.d.ts.map +1 -1
  7. package/lib/client-api.js.map +1 -1
  8. package/lib/client.js +1103 -917
  9. package/lib/client.js.map +4 -4
  10. package/lib/collaboration/composition.d.ts.map +1 -1
  11. package/lib/collaboration/composition.js +5 -3
  12. package/lib/collaboration/composition.js.map +1 -1
  13. package/lib/collaboration/domain.d.ts +2 -0
  14. package/lib/collaboration/domain.d.ts.map +1 -1
  15. package/lib/collaboration/domain.js.map +1 -1
  16. package/lib/collaboration/service.d.ts +1 -0
  17. package/lib/collaboration/service.d.ts.map +1 -1
  18. package/lib/collaboration/service.js +15 -4
  19. package/lib/collaboration/service.js.map +1 -1
  20. package/lib/domain.d.ts +1 -0
  21. package/lib/domain.d.ts.map +1 -1
  22. package/lib/domain.js.map +1 -1
  23. package/lib/pendant/card-image.d.ts +1 -1
  24. package/lib/pendant/card-image.d.ts.map +1 -1
  25. package/lib/pendant/card-image.js +16 -6
  26. package/lib/pendant/card-image.js.map +1 -1
  27. package/lib/pendant/physics.d.ts +1 -0
  28. package/lib/pendant/physics.d.ts.map +1 -1
  29. package/lib/pendant/physics.js +24 -2
  30. package/lib/pendant/physics.js.map +1 -1
  31. package/lib/pendant/renderer.d.ts.map +1 -1
  32. package/lib/pendant/renderer.js +21 -4
  33. package/lib/pendant/renderer.js.map +1 -1
  34. package/lib/pendant/settings-panel.d.ts.map +1 -1
  35. package/lib/pendant/settings-panel.js +5 -4
  36. package/lib/pendant/settings-panel.js.map +1 -1
  37. package/lib/pendant/settings.d.ts +5 -0
  38. package/lib/pendant/settings.d.ts.map +1 -1
  39. package/lib/pendant/settings.js +9 -3
  40. package/lib/pendant/settings.js.map +1 -1
  41. package/lib/pendant/strap-preview.d.ts +3 -1
  42. package/lib/pendant/strap-preview.d.ts.map +1 -1
  43. package/lib/pendant/strap-preview.js +6 -3
  44. package/lib/pendant/strap-preview.js.map +1 -1
  45. package/lib/pendant/strap-texture.d.ts +5 -0
  46. package/lib/pendant/strap-texture.d.ts.map +1 -0
  47. package/lib/pendant/strap-texture.js +9 -0
  48. package/lib/pendant/strap-texture.js.map +1 -0
  49. package/lib/pendant/strap.d.ts.map +1 -1
  50. package/lib/pendant/strap.js +39 -2
  51. package/lib/pendant/strap.js.map +1 -1
  52. package/lib/pendant-renderer.js +174 -174
  53. package/lib/requirements/draft.d.ts +3 -0
  54. package/lib/requirements/draft.d.ts.map +1 -0
  55. package/lib/requirements/draft.js +7 -0
  56. package/lib/requirements/draft.js.map +1 -0
  57. package/lib/requirements/plan-schema.d.ts +93 -0
  58. package/lib/requirements/plan-schema.d.ts.map +1 -0
  59. package/lib/requirements/plan-schema.js +16 -0
  60. package/lib/requirements/plan-schema.js.map +1 -0
  61. package/lib/requirements/plan.d.ts +30 -0
  62. package/lib/requirements/plan.d.ts.map +1 -0
  63. package/lib/requirements/plan.js +134 -0
  64. package/lib/requirements/plan.js.map +1 -0
  65. package/lib/requirements/service.d.ts +2 -1
  66. package/lib/requirements/service.d.ts.map +1 -1
  67. package/lib/requirements/service.js +4 -6
  68. package/lib/requirements/service.js.map +1 -1
  69. package/lib/requirements/tool.d.ts +1 -1
  70. package/lib/requirements/tool.d.ts.map +1 -1
  71. package/lib/requirements/tool.js +24 -3
  72. package/lib/requirements/tool.js.map +1 -1
  73. package/lib/skills/task-planning.d.ts +2 -2
  74. package/lib/skills/task-planning.d.ts.map +1 -1
  75. package/lib/skills/task-planning.js +10 -1
  76. package/lib/skills/task-planning.js.map +1 -1
  77. package/lib/store.js +2 -0
  78. package/lib/store.js.map +1 -1
  79. package/lib/tasks/context.d.ts.map +1 -1
  80. package/lib/tasks/context.js +9 -1
  81. package/lib/tasks/context.js.map +1 -1
  82. package/lib/tasks/contract.d.ts +63 -0
  83. package/lib/tasks/contract.d.ts.map +1 -0
  84. package/lib/tasks/contract.js +55 -0
  85. package/lib/tasks/contract.js.map +1 -0
  86. package/lib/tasks/domain.d.ts +6 -0
  87. package/lib/tasks/domain.d.ts.map +1 -1
  88. package/lib/tasks/draft.d.ts +7 -0
  89. package/lib/tasks/draft.d.ts.map +1 -0
  90. package/lib/tasks/draft.js +54 -0
  91. package/lib/tasks/draft.js.map +1 -0
  92. package/lib/tasks/result.d.ts +2 -0
  93. package/lib/tasks/result.d.ts.map +1 -1
  94. package/lib/tasks/result.js +17 -3
  95. package/lib/tasks/result.js.map +1 -1
  96. package/lib/tasks/scheduling.d.ts +15 -0
  97. package/lib/tasks/scheduling.d.ts.map +1 -0
  98. package/lib/tasks/scheduling.js +46 -0
  99. package/lib/tasks/scheduling.js.map +1 -0
  100. package/lib/tasks/service.d.ts +46 -3
  101. package/lib/tasks/service.d.ts.map +1 -1
  102. package/lib/tasks/service.js +55 -58
  103. package/lib/tasks/service.js.map +1 -1
  104. package/lib/ui/requirement-tasks-panel.d.ts.map +1 -1
  105. package/lib/ui/requirement-tasks-panel.js +18 -9
  106. package/lib/ui/requirement-tasks-panel.js.map +1 -1
  107. package/lib/ui/task-contract-panel.d.ts +10 -0
  108. package/lib/ui/task-contract-panel.d.ts.map +1 -0
  109. package/lib/ui/task-contract-panel.js +16 -0
  110. package/lib/ui/task-contract-panel.js.map +1 -0
  111. package/package.json +1 -1
@@ -5,11 +5,54 @@ export declare class TaskBoardService {
5
5
  private readonly store;
6
6
  private notifier?;
7
7
  private removalNotifier?;
8
+ private liveClaims;
9
+ setLiveClaims(provider: typeof this.liveClaims): void;
8
10
  constructor(store: PartnerStore);
9
11
  setRemovalNotifier(notifier: (ids: string[]) => void): void;
10
12
  setProgressNotifier(notifier: (task: BoardTask, previousStatus: BoardTask['status']) => Promise<void>): void;
11
13
  snapshot(): {
12
- tasks: BoardTask[];
14
+ tasks: {
15
+ scheduling: import("./scheduling.js").TaskScheduling;
16
+ id: string;
17
+ requirementId?: string;
18
+ title: string;
19
+ description: string;
20
+ status: import("./domain.js").TaskStatus;
21
+ priority: import("./domain.js").TaskPriority;
22
+ assigneeCompanionId?: string;
23
+ autoRun?: boolean;
24
+ reviewerCompanionId?: string;
25
+ createdBy: "user" | "companion" | "schedule";
26
+ creatorCompanionId?: string;
27
+ creatorSessionId?: string;
28
+ skillIds: string[];
29
+ dependencyTaskIds: string[];
30
+ acceptanceCriteria?: string[];
31
+ resourceKeys?: string[];
32
+ evidence?: import("./contract.js").TaskEvidence[];
33
+ reviewChecks?: import("./contract.js").TaskReviewCheck[];
34
+ resultAbstract?: string;
35
+ resultSummary?: string;
36
+ reviewHandoff?: string;
37
+ reviewSummary?: string;
38
+ workRevision?: number;
39
+ rejectionReason?: string;
40
+ rejectedAt?: number;
41
+ reworkCount?: number;
42
+ replanRequested?: boolean;
43
+ previousAttempt?: {
44
+ resultSummary?: string;
45
+ reviewSummary?: string;
46
+ reviewHandoff?: string;
47
+ evidence?: import("./contract.js").TaskEvidence[];
48
+ reviewChecks?: import("./contract.js").TaskReviewCheck[];
49
+ };
50
+ dueAt?: number;
51
+ revision: number;
52
+ createdAt: number;
53
+ updatedAt: number;
54
+ completedAt?: number;
55
+ }[];
13
56
  activities: TaskActivity[];
14
57
  requirements: import("../client-api.js").RequirementView[];
15
58
  };
@@ -21,8 +64,8 @@ export declare class TaskBoardService {
21
64
  completeExecution(taskId: string, result: string | TaskExecutionOutput, actor: TaskActor, workRevision?: number): Promise<BoardTask>;
22
65
  recordReview(taskId: string, result: string, actor: TaskActor, expectedRevision?: number): Promise<BoardTask>;
23
66
  failExecution(taskId: string, error: string, actor: TaskActor): Promise<BoardTask>;
24
- accept(taskId: string, actor: TaskActor, expectedRevision?: number): Promise<BoardTask>;
25
- reject(taskId: string, reason: string, actor: TaskActor, expectedRevision?: number, mode?: 'rework' | 'replan'): Promise<BoardTask>;
67
+ accept(taskId: string, actor: TaskActor, expectedRevision?: number, checks?: unknown): Promise<BoardTask>;
68
+ reject(taskId: string, reason: string, actor: TaskActor, expectedRevision?: number, mode?: 'rework' | 'replan', checks?: unknown): Promise<BoardTask>;
26
69
  /** Atomically relinquish a task before asking its owner to split or reassign it. */
27
70
  requestReplan(taskId: string, reason: string, actor: TaskActor, revision: number): Promise<BoardTask>;
28
71
  remove(taskId: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/tasks/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/tasks/service.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,22 @@ import { randomUUID } from 'node:crypto';
2
2
  import { appendBounded } from '../core/collections.js';
3
3
  import { oneOf, optionalBoolean, optionalText, record, requiredText, stringList } from '../core/validation.js';
4
4
  import { TASK_PRIORITIES, TASK_STATUSES } from './domain.js';
5
- import { requirementDraft } from '../requirements/service.js';
5
+ import { requirementDraft } from '../requirements/draft.js';
6
6
  import { removeTaskRecords, touchTaskRequirement } from './removal.js';
7
7
  import { invalidateTaskWork, preserveTaskAttempt } from './context.js';
8
8
  import { requireTaskRequirement } from './requirement-link.js';
9
9
  import { TaskWorkflowError } from './workflow-error.js';
10
+ import { taskDraft, assertTaskDependencies } from './draft.js';
11
+ import { acceptanceCriteria, resourceKeys, taskEvidence, reviewChecks } from './contract.js';
12
+ import { taskScheduling, executionWait } from './scheduling.js';
10
13
  const MAX_TASKS = 500;
11
14
  const MAX_ACTIVITIES = 2000;
12
15
  export class TaskBoardService {
13
16
  store;
14
17
  notifier;
15
18
  removalNotifier;
19
+ liveClaims = () => [];
20
+ setLiveClaims(provider) { this.liveClaims = provider; }
16
21
  constructor(store) {
17
22
  this.store = store;
18
23
  }
@@ -22,40 +27,23 @@ export class TaskBoardService {
22
27
  }
23
28
  snapshot() {
24
29
  const state = this.store.snapshot();
25
- return { tasks: state.tasks, activities: state.taskActivities, requirements: state.requirements ?? [] };
30
+ const active = this.liveClaims();
31
+ return { tasks: state.tasks.map(task => ({ ...task, scheduling: taskScheduling(state, task, active) })), activities: state.taskActivities, requirements: state.requirements ?? [] };
26
32
  }
27
33
  async create(value, actor, requireOwnership = false) {
28
34
  const input = record(value, 'task');
29
- const now = Date.now();
30
- const assigneeCompanionId = optionalText(input.assigneeCompanionId, 'assigneeCompanionId', 120);
31
- const autoRun = optionalBoolean(input.autoRun, false);
32
- if (autoRun && !assigneeCompanionId)
33
- throw new Error('提交执行需要指定负责人');
34
- const requestedReviewerCompanionId = optionalText(input.reviewerCompanionId, 'reviewerCompanionId', 120);
35
- const reviewerCompanionId = requestedReviewerCompanionId ?? actor.companionId;
36
- this.assertCompanion(assigneeCompanionId);
37
- this.assertCompanion(reviewerCompanionId);
38
- const dependencyTaskIds = stringList(input.dependencyTaskIds, 'dependencyTaskIds', 20, 120);
39
- if (requireOwnership)
40
- requireTaskRequirement(input.requirementId, dependencyTaskIds, this.store.snapshot().tasks);
41
- this.assertDependencies(undefined, dependencyTaskIds);
42
- const task = {
43
- id: `task-${randomUUID()}`, title: requiredText(input.title, 'title', 200), description: typeof input.description === 'string' ? input.description.trim().slice(0, 8000) : '',
44
- status: input.status === undefined ? autoRun ? 'ready' : 'backlog' : oneOf(input.status, TASK_STATUSES, 'status'),
45
- ...(autoRun ? { autoRun: true } : {}),
46
- priority: input.priority === undefined ? 'normal' : oneOf(input.priority, TASK_PRIORITIES, 'priority'),
47
- ...(assigneeCompanionId ? { assigneeCompanionId } : {}), createdBy: actor.kind,
48
- ...(reviewerCompanionId ? { reviewerCompanionId } : {}),
49
- ...(actor.companionId ? { creatorCompanionId: actor.companionId } : {}),
50
- ...(typeof input.creatorSessionId === 'string' && input.creatorSessionId.trim() ? { creatorSessionId: input.creatorSessionId.trim().slice(0, 180) } : {}),
51
- skillIds: stringList(input.skillIds, 'skillIds', 20, 120), dependencyTaskIds,
52
- ...(validTimestamp(input.dueAt) ? { dueAt: input.dueAt } : {}), revision: 1, createdAt: now, updatedAt: now,
53
- };
54
- if (autoRun && task.status !== 'ready')
55
- throw new Error('新提交的任务必须从待开始创建;收集箱请使用 autoRun=false,不能跳过执行和验收');
56
- if (started(task.status))
57
- this.assertDependenciesComplete(task, this.store.snapshot().tasks);
35
+ let task;
58
36
  await this.store.update(state => {
37
+ task = taskDraft(input, actor, state);
38
+ const dependencyTaskIds = task.dependencyTaskIds;
39
+ if (requireOwnership)
40
+ requireTaskRequirement(input.requirementId, dependencyTaskIds, state.tasks);
41
+ if (started(task.status))
42
+ this.assertDependenciesComplete(task, state.tasks);
43
+ if (task.status === 'done' && task.acceptanceCriteria?.length)
44
+ throw new Error('有验收清单的任务必须先执行并逐项验收,不能直接创建为已完成');
45
+ if (task.status === 'doing' && executionWait(state, task, this.liveClaims())?.code === 'resource_busy')
46
+ throw new Error('共享资源正被其他任务使用,请等待释放后启动');
59
47
  if (state.tasks.length >= MAX_TASKS)
60
48
  throw new Error(`Task board reached its ${MAX_TASKS} task limit; archive or delete completed tasks first`);
61
49
  this.assertDependencies(undefined, dependencyTaskIds, state.tasks);
@@ -79,7 +67,7 @@ export class TaskBoardService {
79
67
  }
80
68
  touchTaskRequirement(state, task.requirementId);
81
69
  state.tasks.push(task);
82
- appendActivity(state.taskActivities, task.id, actor, 'created', `创建任务:${task.title}`, now);
70
+ appendActivity(state.taskActivities, task.id, actor, 'created', `创建任务:${task.title}`, task.createdAt);
83
71
  });
84
72
  return task;
85
73
  }
@@ -97,12 +85,13 @@ export class TaskBoardService {
97
85
  if (!Number.isInteger(expected) || expected !== task.revision)
98
86
  throw new TaskConflictError(task);
99
87
  previousStatus = task.status;
88
+ const originalReviewer = task.reviewerCompanionId ?? task.creatorCompanionId;
100
89
  if (task.replanRequested) {
101
90
  const owner = state.requirements?.find(r => r.id === task.requirementId)?.ownerCompanionId ?? task.creatorCompanionId;
102
91
  if (actor.kind !== 'user' && actor.companionId !== owner)
103
92
  throw new Error('任务已暂停等待重规划,仅需求负责人或用户可以调整和恢复;不要重复执行');
104
93
  }
105
- const previousSpec = JSON.stringify([task.title, task.description, task.assigneeCompanionId, task.skillIds, task.dependencyTaskIds]);
94
+ const previousSpec = JSON.stringify([task.title, task.description, task.assigneeCompanionId, task.skillIds, task.dependencyTaskIds, task.acceptanceCriteria, task.resourceKeys]);
106
95
  if (input.title !== undefined)
107
96
  task.title = requiredText(input.title, 'title', 200);
108
97
  if (input.description !== undefined)
@@ -144,6 +133,10 @@ export class TaskBoardService {
144
133
  }
145
134
  if (input.skillIds !== undefined)
146
135
  task.skillIds = stringList(input.skillIds, 'skillIds', 20, 120);
136
+ if (input.acceptanceCriteria !== undefined)
137
+ task.acceptanceCriteria = acceptanceCriteria(input.acceptanceCriteria);
138
+ if (input.resourceKeys !== undefined)
139
+ task.resourceKeys = resourceKeys(input.resourceKeys);
147
140
  if (input.dependencyTaskIds !== undefined) {
148
141
  const dependencies = stringList(input.dependencyTaskIds, 'dependencyTaskIds', 20, 120);
149
142
  this.assertDependencies(task.id, dependencies, state.tasks);
@@ -155,7 +148,7 @@ export class TaskBoardService {
155
148
  else
156
149
  delete task.dueAt;
157
150
  }
158
- const specChanged = previousSpec !== JSON.stringify([task.title, task.description, task.assigneeCompanionId, task.skillIds, task.dependencyTaskIds]);
151
+ const specChanged = previousSpec !== JSON.stringify([task.title, task.description, task.assigneeCompanionId, task.skillIds, task.dependencyTaskIds, task.acceptanceCriteria, task.resourceKeys]);
159
152
  if (specChanged) {
160
153
  invalidateTaskWork(state, task, '任务要求或分配已更新,旧执行/验收失效');
161
154
  task.reworkCount = 0;
@@ -170,8 +163,15 @@ export class TaskBoardService {
170
163
  throw new Error('提交执行需要指定负责人');
171
164
  if (task.status === 'done' && previousStatus !== 'done' && previousStatus !== 'review')
172
165
  throw new Error('任务必须先进入待验收,才能标记为已完成');
166
+ if (task.status === 'done' && previousStatus !== 'done') {
167
+ if (actor.kind !== 'user' && originalReviewer && originalReviewer !== actor.companionId)
168
+ throw new Error('当前伙伴不是这个任务的验收者');
169
+ task.reviewChecks = reviewChecks(input.checks, task.acceptanceCriteria ?? [], true);
170
+ }
173
171
  if (started(task.status))
174
172
  this.assertDependenciesComplete(task, state.tasks);
173
+ if (task.status === 'doing' && previousStatus !== 'doing' && executionWait(state, task, this.liveClaims())?.code === 'resource_busy')
174
+ throw new Error('共享资源正被其他任务使用,请等待释放后启动');
175
175
  task.revision += 1;
176
176
  task.updatedAt = Date.now();
177
177
  touchTaskRequirement(state, task.requirementId, specChanged);
@@ -185,6 +185,8 @@ export class TaskBoardService {
185
185
  delete task.resultSummary;
186
186
  delete task.reviewHandoff;
187
187
  delete task.reviewSummary;
188
+ delete task.evidence;
189
+ delete task.reviewChecks;
188
190
  }
189
191
  const kind = task.status !== previousStatus ? (task.status === 'done' ? 'completed' : previousStatus === 'done' ? 'reopened' : 'moved') : 'updated';
190
192
  appendActivity(state.taskActivities, task.id, actor, kind, task.status !== previousStatus ? `${previousStatus} → ${task.status}` : '更新任务', task.updatedAt);
@@ -244,13 +246,23 @@ export class TaskBoardService {
244
246
  if (!task.reviewerCompanionId && task.creatorCompanionId)
245
247
  task.reviewerCompanionId = task.creatorCompanionId;
246
248
  const execution = typeof result === 'string' ? { deliverable: result } : result;
249
+ let evidenceWarning = execution.evidenceWarning;
250
+ try {
251
+ task.evidence = taskEvidence(execution.evidence, task.acceptanceCriteria ?? []);
252
+ }
253
+ catch {
254
+ task.evidence = [];
255
+ evidenceWarning = '证据结构或编号无效:交付已保留,验收者需实际核验或打回补证,不要重跑已完成的外部操作。';
256
+ }
257
+ delete task.reviewChecks;
247
258
  task.resultSummary = boundedText(execution.deliverable, 'result', 12_000);
248
259
  if (execution.summary?.trim())
249
260
  task.resultAbstract = execution.summary.trim().slice(0, 600);
250
261
  else
251
262
  delete task.resultAbstract;
252
- if (execution.reviewHandoff?.trim())
253
- task.reviewHandoff = execution.reviewHandoff.trim().slice(0, 4_000);
263
+ const handoff = [evidenceWarning, execution.reviewHandoff?.trim()].filter(Boolean).join('\n\n');
264
+ if (handoff)
265
+ task.reviewHandoff = handoff.slice(0, 4_000);
254
266
  else
255
267
  delete task.reviewHandoff;
256
268
  delete task.reviewSummary;
@@ -310,13 +322,13 @@ export class TaskBoardService {
310
322
  await this.notifyProgress(output, previousStatus);
311
323
  return output;
312
324
  }
313
- async accept(taskId, actor, expectedRevision) {
325
+ async accept(taskId, actor, expectedRevision, checks) {
314
326
  const current = this.require(taskId);
315
327
  if (current.status !== 'review')
316
328
  throw new Error('只有待验收任务可以通过验收');
317
- return this.update(taskId, { expectedRevision: expectedRevision ?? current.revision, status: 'done' }, actor);
329
+ return this.update(taskId, { expectedRevision: expectedRevision ?? current.revision, status: 'done', checks }, actor);
318
330
  }
319
- async reject(taskId, reason, actor, expectedRevision, mode = 'rework') {
331
+ async reject(taskId, reason, actor, expectedRevision, mode = 'rework', checks) {
320
332
  let output;
321
333
  await this.store.update(state => {
322
334
  const task = state.tasks.find(item => item.id === taskId);
@@ -327,6 +339,9 @@ export class TaskBoardService {
327
339
  if (expectedRevision !== undefined && expectedRevision !== task.revision)
328
340
  throw new TaskConflictError(task);
329
341
  const message = boundedText(reason, 'reason', 1200);
342
+ if (actor.kind !== 'user' && task.reviewerCompanionId && task.reviewerCompanionId !== actor.companionId)
343
+ throw new Error('当前伙伴不是这个任务的验收者');
344
+ task.reviewChecks = reviewChecks(checks, task.acceptanceCriteria ?? [], false);
330
345
  task.rejectionReason = message;
331
346
  task.rejectedAt = Date.now();
332
347
  task.reworkCount = (task.reworkCount ?? 0) + 1;
@@ -412,25 +427,7 @@ export class TaskBoardService {
412
427
  throw new Error('Assigned companion does not exist');
413
428
  }
414
429
  assertDependencies(taskId, ids, tasks = this.store.snapshot().tasks) {
415
- const byId = new Map(tasks.map(task => [task.id, task]));
416
- for (const id of ids) {
417
- if (id === taskId)
418
- throw new Error('任务不能依赖自己');
419
- if (!byId.has(id))
420
- throw new Error(`前置任务不存在:${id}`);
421
- }
422
- if (!taskId)
423
- return;
424
- const reaches = (currentId, visited) => {
425
- if (currentId === taskId)
426
- return true;
427
- if (visited.has(currentId))
428
- return false;
429
- visited.add(currentId);
430
- return (byId.get(currentId)?.dependencyTaskIds ?? []).some(id => reaches(id, visited));
431
- };
432
- if (ids.some(id => reaches(id, new Set())))
433
- throw new Error('任务依赖不能形成循环');
430
+ assertTaskDependencies(taskId, ids, tasks);
434
431
  }
435
432
  assertDependenciesComplete(task, tasks) {
436
433
  const byId = new Map(tasks.map(item => [item.id, item]));
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/tasks/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/tasks/service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"requirement-tasks-panel.d.ts","sourceRoot":"","sources":["../../src/ui/requirement-tasks-panel.tsx"],"names":[],"mappings":"AAcA,wBAAgB,qBAAqB,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,UAAkB,EAAE,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,GAAG,CAAC,OAAO,CA4HtQ"}
1
+ {"version":3,"file":"requirement-tasks-panel.d.ts","sourceRoot":"","sources":["../../src/ui/requirement-tasks-panel.tsx"],"names":[],"mappings":"AAgBA,wBAAgB,qBAAqB,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,UAAkB,EAAE,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,GAAG,CAAC,OAAO,CA4HtQ"}
@@ -6,6 +6,7 @@ import { CollectionSkeleton, WorkspaceDialog, WorkspaceHero, WorkspaceNotice, er
6
6
  import { TaskBoardStage } from './task-board-stage.js';
7
7
  import { useBoardRefresh } from './board-refresh.js';
8
8
  import { RequirementDetail, requirementStatus } from './requirement-dialog.js';
9
+ import { TaskContractPanel } from './task-contract-panel.js';
9
10
  const COLUMNS = [
10
11
  { id: 'backlog', label: '收集箱' }, { id: 'ready', label: '待开始' }, { id: 'doing', label: '进行中' },
11
12
  { id: 'review', label: '待验收' }, { id: 'blocked', label: '受阻' }, { id: 'done', label: '已完成' },
@@ -127,11 +128,11 @@ export function RequirementTasksPanel({ initialTaskId, openRequest, requirementI
127
128
  setBusy(undefined);
128
129
  }
129
130
  };
130
- const accept = async (task) => {
131
+ const accept = async (task, checks) => {
131
132
  setBusy(task.id);
132
133
  setError(undefined);
133
134
  try {
134
- await api(`/tasks/${task.id}/accept`, { method: 'POST', body: JSON.stringify({ expectedRevision: task.revision }) });
135
+ await api(`/tasks/${task.id}/accept`, { method: 'POST', body: JSON.stringify({ expectedRevision: task.revision, checks }) });
135
136
  await load();
136
137
  }
137
138
  catch (reason) {
@@ -141,13 +142,13 @@ export function RequirementTasksPanel({ initialTaskId, openRequest, requirementI
141
142
  setBusy(undefined);
142
143
  }
143
144
  };
144
- const reject = async (task, reason) => {
145
+ const reject = async (task, reason, checks) => {
145
146
  if (!reason)
146
147
  return;
147
148
  setBusy(task.id);
148
149
  setError(undefined);
149
150
  try {
150
- await api(`/tasks/${task.id}/reject`, { method: 'POST', body: JSON.stringify({ reason, expectedRevision: task.revision }) });
151
+ await api(`/tasks/${task.id}/reject`, { method: 'POST', body: JSON.stringify({ reason, expectedRevision: task.revision, checks }) });
151
152
  await load();
152
153
  }
153
154
  catch (cause) {
@@ -173,7 +174,7 @@ export function RequirementTasksPanel({ initialTaskId, openRequest, requirementI
173
174
  setBusy(undefined);
174
175
  }
175
176
  };
176
- return _jsxs("div", { className: "dsh-partner-feature-page is-board", children: [!detailOnly && _jsxs(_Fragment, { children: [back && _jsxs("nav", { className: "dsh-partner-requirement-breadcrumb", children: [_jsx("button", { type: "button", onClick: back, children: "\u9700\u6C42\u770B\u677F" }), _jsx(IconChevronRightOutline14, { size: 14 }), _jsx("span", { children: requirement?.title ?? '未归类旧任务' })] }), _jsx(WorkspaceHero, { eyebrow: requirement ? requirementStatus(requirement) : '旧任务', title: requirement?.title ?? '未归类旧任务', detail: requirement?.description || '任务按阶段展示,点击查看交付、依赖和执行状态。', actions: _jsxs(_Fragment, { children: [_jsxs("span", { className: "dsh-partner-board-live", title: syncedAt ? `最近同步 ${new Date(syncedAt).toLocaleTimeString()}` : '正在连接', children: [_jsx("i", {}), "\u5B9E\u65F6\u540C\u6B65"] }), requirement && _jsx("button", { type: "button", onClick: () => setRequirementDetail(true), children: "\u9700\u6C42\u8BE6\u60C5" }), requirement?.status === 'planning' && _jsxs("button", { type: "button", onClick: () => setCreating(true), children: [_jsx(IconPlusOutline16, { size: 15 }), "\u65B0\u4EFB\u52A1"] })] }) })] }), error && _jsx(WorkspaceNotice, { children: error }), requirementDetail && requirement && _jsx(WorkspaceDialog, { eyebrow: "\u9700\u6C42\u8BE6\u60C5", title: requirement.title, detail: requirementStatus(requirement), close: () => setRequirementDetail(false), width: "wide", children: _jsx(RequirementDetail, { item: requirement, tasks: requirementTasks, directory: directory, changed: load, close: () => setRequirementDetail(false) }, requirement.id) }), creating && requirement && _jsx(WorkspaceDialog, { title: "\u65B0\u5EFA\u5B50\u4EFB\u52A1", detail: `所属需求:${requirement.title}`, close: () => setCreating(false), width: "wide", children: _jsx(TaskForm, { requirementId: requirement.id, companions: directory, tasks: requirementTasks, close: () => setCreating(false), changed: load }) }), selectedTask && _jsxs(WorkspaceDialog, { eyebrow: "TASK DETAIL", title: selectedTask.title, detail: taskDialogSummary(selectedTask, directory), close: () => setSelectedTaskId(undefined), width: "wide", children: [_jsx(TaskDetail, { task: selectedTask, tasks: board.tasks, activities: board.activities.filter(item => item.taskId === selectedTask.id), directory: directory, execution: activeDelegationByTaskId.get(selectedTask.id), busy: busy === selectedTask.id, update: change => { void update(selectedTask, change); }, delegate: () => { void delegate(selectedTask); }, review: () => { void review(selectedTask); }, accept: () => { void accept(selectedTask); }, reject: reason => { void reject(selectedTask, reason); }, remove: () => { void remove(selectedTask); } }, selectedTask.id), error && _jsx(WorkspaceNotice, { children: error })] }), !detailOnly && (loading ? _jsx(CollectionSkeleton, { rows: 6 }) : _jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-partner-board-tools", children: [_jsxs("label", { className: "dsh-partner-board-search", children: [_jsx("span", { className: "sr-only", children: "\u641C\u7D22\u4EFB\u52A1" }), _jsx("span", { "aria-hidden": "true", children: _jsx(IconSearchOutline16, { size: 16 }) }), _jsx("input", { value: query, onChange: event => setQuery(event.target.value), placeholder: "\u641C\u7D22\u4EFB\u52A1\u3001\u8D1F\u8D23\u4EBA\u6216\u524D\u7F6E\u4EFB\u52A1" }), query && _jsx("button", { type: "button", onClick: () => setQuery(''), "aria-label": "\u6E05\u9664\u4EFB\u52A1\u641C\u7D22", children: _jsx(IconCloseOutline16, { size: 14 }) })] }), _jsxs("label", { className: "dsh-partner-board-assignee", children: [_jsx("span", { className: "sr-only", children: "\u6309\u8D1F\u8D23\u4EBA\u7B5B\u9009" }), _jsxs("select", { value: assigneeFilter, onChange: event => setAssigneeFilter(event.target.value), children: [_jsx("option", { value: "all", children: "\u5168\u90E8\u4F19\u4F34" }), _jsx("option", { value: "unassigned", children: "\u672A\u6307\u6D3E" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("label", { className: "dsh-partner-board-assignee is-mobile-stage", children: [_jsx("span", { className: "sr-only", children: "\u6309\u4EFB\u52A1\u9636\u6BB5\u7B5B\u9009" }), _jsxs("select", { value: statusFilter, onChange: event => setStatusFilter(event.target.value), children: [_jsxs("option", { value: "all", children: ["\u5168\u90E8\u9636\u6BB5 \u00B7 ", scopedTasks.length] }), COLUMNS.map(column => _jsxs("option", { value: column.id, children: [column.label, " \u00B7 ", statusCounts.get(column.id) ?? 0] }, column.id))] })] }), _jsxs("small", { "aria-live": "polite", children: ["\u663E\u793A ", visibleTaskCount, " / ", board.tasks.length] })] }), _jsxs("nav", { className: "dsh-partner-board-statuses", "aria-label": "\u6309\u4EFB\u52A1\u72B6\u6001\u7B5B\u9009", children: [_jsxs("button", { type: "button", className: statusFilter === 'all' ? 'is-active' : '', "aria-pressed": statusFilter === 'all', onClick: () => setStatusFilter('all'), children: [_jsx("span", { children: "\u5168\u90E8" }), _jsx("b", { children: scopedTasks.length })] }), COLUMNS.map(column => _jsxs("button", { type: "button", className: statusFilter === column.id ? 'is-active' : '', "aria-pressed": statusFilter === column.id, onClick: () => setStatusFilter(column.id), children: [_jsx("span", { children: column.label }), _jsx("b", { children: statusCounts.get(column.id) ?? 0 })] }, column.id))] }), _jsx("div", { className: "dsh-partner-board", "data-focused": statusFilter !== 'all', "aria-label": "\u4EFB\u52A1\u770B\u677F", children: visibleColumns.map(column => {
177
+ return _jsxs("div", { className: "dsh-partner-feature-page is-board", children: [!detailOnly && _jsxs(_Fragment, { children: [back && _jsxs("nav", { className: "dsh-partner-requirement-breadcrumb", children: [_jsx("button", { type: "button", onClick: back, children: "\u9700\u6C42\u770B\u677F" }), _jsx(IconChevronRightOutline14, { size: 14 }), _jsx("span", { children: requirement?.title ?? '未归类旧任务' })] }), _jsx(WorkspaceHero, { eyebrow: requirement ? requirementStatus(requirement) : '旧任务', title: requirement?.title ?? '未归类旧任务', detail: requirement?.description || '任务按阶段展示,点击查看交付、依赖和执行状态。', actions: _jsxs(_Fragment, { children: [_jsxs("span", { className: "dsh-partner-board-live", title: syncedAt ? `最近同步 ${new Date(syncedAt).toLocaleTimeString()}` : '正在连接', children: [_jsx("i", {}), "\u5B9E\u65F6\u540C\u6B65"] }), requirement && _jsx("button", { type: "button", onClick: () => setRequirementDetail(true), children: "\u9700\u6C42\u8BE6\u60C5" }), requirement?.status === 'planning' && _jsxs("button", { type: "button", onClick: () => setCreating(true), children: [_jsx(IconPlusOutline16, { size: 15 }), "\u65B0\u4EFB\u52A1"] })] }) })] }), error && _jsx(WorkspaceNotice, { children: error }), requirementDetail && requirement && _jsx(WorkspaceDialog, { eyebrow: "\u9700\u6C42\u8BE6\u60C5", title: requirement.title, detail: requirementStatus(requirement), close: () => setRequirementDetail(false), width: "wide", children: _jsx(RequirementDetail, { item: requirement, tasks: requirementTasks, directory: directory, changed: load, close: () => setRequirementDetail(false) }, requirement.id) }), creating && requirement && _jsx(WorkspaceDialog, { title: "\u65B0\u5EFA\u5B50\u4EFB\u52A1", detail: `所属需求:${requirement.title}`, close: () => setCreating(false), width: "wide", children: _jsx(TaskForm, { requirementId: requirement.id, companions: directory, tasks: requirementTasks, close: () => setCreating(false), changed: load }) }), selectedTask && _jsxs(WorkspaceDialog, { eyebrow: "TASK DETAIL", title: selectedTask.title, detail: taskDialogSummary(selectedTask, directory), close: () => setSelectedTaskId(undefined), width: "wide", children: [_jsx(TaskDetail, { task: selectedTask, tasks: board.tasks, activities: board.activities.filter(item => item.taskId === selectedTask.id), directory: directory, execution: activeDelegationByTaskId.get(selectedTask.id), busy: busy === selectedTask.id, update: change => { void update(selectedTask, change); }, delegate: () => { void delegate(selectedTask); }, review: () => { void review(selectedTask); }, accept: checks => { void accept(selectedTask, checks); }, reject: (reason, checks) => { void reject(selectedTask, reason, checks); }, remove: () => { void remove(selectedTask); } }, selectedTask.id), error && _jsx(WorkspaceNotice, { children: error })] }), !detailOnly && (loading ? _jsx(CollectionSkeleton, { rows: 6 }) : _jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-partner-board-tools", children: [_jsxs("label", { className: "dsh-partner-board-search", children: [_jsx("span", { className: "sr-only", children: "\u641C\u7D22\u4EFB\u52A1" }), _jsx("span", { "aria-hidden": "true", children: _jsx(IconSearchOutline16, { size: 16 }) }), _jsx("input", { value: query, onChange: event => setQuery(event.target.value), placeholder: "\u641C\u7D22\u4EFB\u52A1\u3001\u8D1F\u8D23\u4EBA\u6216\u524D\u7F6E\u4EFB\u52A1" }), query && _jsx("button", { type: "button", onClick: () => setQuery(''), "aria-label": "\u6E05\u9664\u4EFB\u52A1\u641C\u7D22", children: _jsx(IconCloseOutline16, { size: 14 }) })] }), _jsxs("label", { className: "dsh-partner-board-assignee", children: [_jsx("span", { className: "sr-only", children: "\u6309\u8D1F\u8D23\u4EBA\u7B5B\u9009" }), _jsxs("select", { value: assigneeFilter, onChange: event => setAssigneeFilter(event.target.value), children: [_jsx("option", { value: "all", children: "\u5168\u90E8\u4F19\u4F34" }), _jsx("option", { value: "unassigned", children: "\u672A\u6307\u6D3E" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("label", { className: "dsh-partner-board-assignee is-mobile-stage", children: [_jsx("span", { className: "sr-only", children: "\u6309\u4EFB\u52A1\u9636\u6BB5\u7B5B\u9009" }), _jsxs("select", { value: statusFilter, onChange: event => setStatusFilter(event.target.value), children: [_jsxs("option", { value: "all", children: ["\u5168\u90E8\u9636\u6BB5 \u00B7 ", scopedTasks.length] }), COLUMNS.map(column => _jsxs("option", { value: column.id, children: [column.label, " \u00B7 ", statusCounts.get(column.id) ?? 0] }, column.id))] })] }), _jsxs("small", { "aria-live": "polite", children: ["\u663E\u793A ", visibleTaskCount, " / ", board.tasks.length] })] }), _jsxs("nav", { className: "dsh-partner-board-statuses", "aria-label": "\u6309\u4EFB\u52A1\u72B6\u6001\u7B5B\u9009", children: [_jsxs("button", { type: "button", className: statusFilter === 'all' ? 'is-active' : '', "aria-pressed": statusFilter === 'all', onClick: () => setStatusFilter('all'), children: [_jsx("span", { children: "\u5168\u90E8" }), _jsx("b", { children: scopedTasks.length })] }), COLUMNS.map(column => _jsxs("button", { type: "button", className: statusFilter === column.id ? 'is-active' : '', "aria-pressed": statusFilter === column.id, onClick: () => setStatusFilter(column.id), children: [_jsx("span", { children: column.label }), _jsx("b", { children: statusCounts.get(column.id) ?? 0 })] }, column.id))] }), _jsx("div", { className: "dsh-partner-board", "data-focused": statusFilter !== 'all', "aria-label": "\u4EFB\u52A1\u770B\u677F", children: visibleColumns.map(column => {
177
178
  const tasks = tasksByStatus.get(column.id) ?? [];
178
179
  return _jsx(TaskBoardStage, { id: column.id, label: column.label, tasks: tasks, focused: statusFilter !== 'all', filtered: Boolean(query || assigneeFilter !== 'all'), renderTask: task => _jsx(TaskCard, { task: task, tasksById: tasksById, directoryById: directoryById, dependentCount: dependentsById.get(task.id) ?? 0, execution: activeDelegationByTaskId.get(task.id), open: () => setSelectedTaskId(task.id) }, task.id) }, column.id);
179
180
  }) }), !scopedTasks.length && _jsxs("div", { className: "dsh-partner-collection-empty", children: [_jsx("strong", { children: query || assigneeFilter !== 'all' ? '没有匹配的任务' : '还没有子任务' }), _jsx("p", { children: requirement?.status === 'planning' ? '添加子任务并安排负责人,完成分工后在需求详情中提交规划。' : '可返回需求看板查看其他需求。' })] })] }))] });
@@ -183,12 +184,18 @@ function TaskCard({ task, tasksById, directoryById, dependentCount, execution, o
183
184
  const blockers = dependencies.filter(item => item.status !== 'done');
184
185
  const completedDependencies = dependencies.length - blockers.length;
185
186
  const assignee = directoryById.get(task.assigneeCompanionId ?? '');
186
- const executionState = execution ? delegationState(execution, blockers.length) : task.autoRun && task.status === 'ready' ? { label: blockers.length ? '等待前置完成' : '等待调度' } : undefined;
187
+ const executionState = task.scheduling ? { label: task.scheduling.message } : execution ? delegationState(execution, blockers.length) : task.autoRun && task.status === 'ready' ? { label: blockers.length ? '等待前置完成' : '等待调度' } : undefined;
187
188
  return _jsx("article", { className: "dsh-partner-task-card", "data-blocked": blockers.length > 0, "data-priority": task.priority, children: _jsxs("button", { type: "button", className: "dsh-partner-task-summary", "aria-haspopup": "dialog", onClick: open, children: [_jsxs("span", { children: [_jsxs("span", { className: "dsh-partner-task-card-title", children: [_jsx("strong", { title: task.title, children: task.title }), _jsx("em", { children: priorityLabel(task.priority) })] }), _jsxs("small", { className: "dsh-partner-task-card-owner", children: [assignee ? `@${assignee.name}` : '未指派', task.resultSummary ? ' · 已有结果' : '', executionState ? ` · ${executionState.label}` : ''] }), (dependencies.length > 0 || dependentCount > 0) && _jsxs("span", { className: "dsh-partner-task-relations", children: [dependencies.length > 0 && _jsxs("small", { "data-blocked": blockers.length > 0, children: ["\u524D\u7F6E ", completedDependencies, "/", dependencies.length] }), dependentCount > 0 && _jsxs("small", { children: ["\u5B8C\u6210\u540E\u89E3\u9501 ", dependentCount] })] })] }), _jsx(IconChevronRightOutline14, { size: 14 })] }) });
188
189
  }
189
190
  function TaskDetail({ task, tasks, activities, directory, execution, busy, update, delegate, review, accept, reject, remove }) {
190
191
  const [rejecting, setRejecting] = useState(false);
192
+ const [checks, setChecks] = useState([]);
193
+ useEffect(() => { setChecks([]); }, [task.id, task.revision]);
191
194
  const [rejectReason, setRejectReason] = useState('');
195
+ useEffect(() => { if (task.status !== 'review') {
196
+ setRejecting(false);
197
+ setRejectReason('');
198
+ } }, [task.status]);
192
199
  const [confirmingDelete, setConfirmingDelete] = useState(false);
193
200
  const byId = useMemo(() => new Map(tasks.map(item => [item.id, item])), [tasks]);
194
201
  const dependencies = task.dependencyTaskIds.map(id => byId.get(id)).filter((item) => item !== undefined);
@@ -199,9 +206,9 @@ function TaskDetail({ task, tasks, activities, directory, execution, busy, updat
199
206
  const canExecute = Boolean(task.assigneeCompanionId) && !execution && !['doing', 'review', 'done'].includes(task.status);
200
207
  const recentActivities = [...activities].sort((left, right) => right.at - left.at).slice(0, 6);
201
208
  const executionState = execution ? delegationState(execution, blockers.length) : undefined;
202
- return _jsxs("div", { className: "dsh-partner-task-detail", children: [_jsxs("section", { className: "dsh-partner-task-description", children: [_jsx("strong", { children: "\u4EFB\u52A1\u8BF4\u660E" }), _jsx("p", { children: task.description || '没有补充说明' })] }), _jsxs("div", { className: "dsh-partner-task-fields", children: [_jsxs("label", { children: [_jsx("span", { children: "\u72B6\u6001" }), _jsx("select", { value: task.status, disabled: busy, onChange: event => update({ status: event.target.value }), children: COLUMNS.map(item => _jsx("option", { value: item.id, disabled: (item.id === 'doing' || item.id === 'review' || item.id === 'done') && blockers.length > 0 || item.id === 'done' && task.status !== 'review' && task.status !== 'done', children: item.label }, item.id)) })] }), _jsxs("label", { children: [_jsx("span", { children: "\u8D1F\u8D23\u4EBA" }), _jsxs("select", { value: task.assigneeCompanionId ?? '', disabled: busy || task.status === 'doing', onChange: event => update({ assigneeCompanionId: event.target.value }), children: [_jsx("option", { value: "", children: "\u672A\u6307\u6D3E" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name, " \u00B7 ", item.availability === 'busy' ? '忙碌' : '可用'] }, item.id))] })] }), _jsxs("label", { children: [_jsx("span", { children: "\u9A8C\u6536\u4F19\u4F34" }), _jsxs("select", { value: task.reviewerCompanionId ?? '', disabled: busy, onChange: event => update({ reviewerCompanionId: event.target.value }), children: [_jsx("option", { value: "", children: "\u7559\u7A7A \u00B7 \u4EBA\u5DE5\u9A8C\u6536" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] })] }), executionState && _jsxs("section", { className: "dsh-partner-task-execution", "data-state": execution?.status, children: [_jsx("i", {}), _jsxs("span", { children: [_jsx("strong", { children: executionState.title }), _jsx("small", { children: executionState.detail })] })] }), _jsxs("section", { className: "dsh-partner-task-dependency", children: [_jsxs("header", { children: [_jsx("strong", { children: "\u524D\u7F6E\u4EFB\u52A1" }), _jsx("small", { children: blockers.length ? `${blockers.length} 项未完成,当前任务不能启动` : dependencies.length ? '已全部完成,可以启动' : '没有前置依赖' })] }), dependencies.length > 0 && _jsx("div", { children: dependencies.map(item => _jsxs("span", { "data-done": item.status === 'done', children: [_jsx("i", { children: item.status === 'done' ? _jsx(IconCheckOutline16, { size: 12 }) : '' }), _jsx("b", { children: item.title }), _jsx("button", { type: "button", disabled: busy || ['doing', 'review', 'done'].includes(task.status), "aria-label": `移除前置任务 ${item.title}`, onClick: () => update({ dependencyTaskIds: task.dependencyTaskIds.filter(id => id !== item.id) }), children: "\u79FB\u9664" })] }, item.id)) }), dependencyCandidates.length > 0 && _jsxs("label", { children: [_jsx("span", { className: "sr-only", children: "\u589E\u52A0\u524D\u7F6E\u4EFB\u52A1" }), _jsxs("select", { defaultValue: "", disabled: busy || ['doing', 'review', 'done'].includes(task.status), onChange: event => { const id = event.currentTarget.value; if (id)
209
+ return _jsxs("div", { className: "dsh-partner-task-detail", children: [_jsxs("section", { className: "dsh-partner-task-description", children: [_jsx("strong", { children: "\u4EFB\u52A1\u8BF4\u660E" }), _jsx("p", { children: task.description || '没有补充说明' })] }), task.scheduling && task.status !== 'done' && _jsxs("section", { className: "dsh-partner-task-description", children: [_jsx("strong", { children: task.scheduling.message }), task.scheduling.taskIds?.length ? _jsx("p", { children: task.scheduling.taskIds.map(id => byId.get(id)?.title ?? '已删除任务').join('、') }) : null, task.scheduling.retryAt ? _jsxs("small", { children: ["\u4E0B\u6B21\u91CD\u8BD5\uFF1A", new Date(task.scheduling.retryAt).toLocaleString()] }) : null] }), _jsx(TaskContractPanel, { task: task, checks: checks, setChecks: setChecks, busy: busy }), _jsxs("div", { className: "dsh-partner-task-fields", children: [_jsxs("label", { children: [_jsx("span", { children: "\u72B6\u6001" }), _jsx("select", { value: task.status, disabled: busy, onChange: event => update({ status: event.target.value, ...(event.target.value === 'done' ? { checks } : {}) }), children: COLUMNS.map(item => _jsx("option", { value: item.id, disabled: (item.id === 'doing' || item.id === 'review' || item.id === 'done') && blockers.length > 0 || item.id === 'done' && task.status !== 'review' && task.status !== 'done', children: item.label }, item.id)) })] }), _jsxs("label", { children: [_jsx("span", { children: "\u8D1F\u8D23\u4EBA" }), _jsxs("select", { value: task.assigneeCompanionId ?? '', disabled: busy || task.status === 'doing', onChange: event => update({ assigneeCompanionId: event.target.value }), children: [_jsx("option", { value: "", children: "\u672A\u6307\u6D3E" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name, " \u00B7 ", item.availability === 'busy' ? '忙碌' : '可用'] }, item.id))] })] }), _jsxs("label", { children: [_jsx("span", { children: "\u9A8C\u6536\u4F19\u4F34" }), _jsxs("select", { value: task.reviewerCompanionId ?? '', disabled: busy, onChange: event => update({ reviewerCompanionId: event.target.value }), children: [_jsx("option", { value: "", children: "\u7559\u7A7A \u00B7 \u4EBA\u5DE5\u9A8C\u6536" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] })] }), executionState && _jsxs("section", { className: "dsh-partner-task-execution", "data-state": execution?.status, children: [_jsx("i", {}), _jsxs("span", { children: [_jsx("strong", { children: executionState.title }), _jsx("small", { children: executionState.detail })] })] }), _jsxs("section", { className: "dsh-partner-task-dependency", children: [_jsxs("header", { children: [_jsx("strong", { children: "\u524D\u7F6E\u4EFB\u52A1" }), _jsx("small", { children: blockers.length ? `${blockers.length} 项未完成,当前任务不能启动` : dependencies.length ? '已全部完成,可以启动' : '没有前置依赖' })] }), dependencies.length > 0 && _jsx("div", { children: dependencies.map(item => _jsxs("span", { "data-done": item.status === 'done', children: [_jsx("i", { children: item.status === 'done' ? _jsx(IconCheckOutline16, { size: 12 }) : '' }), _jsx("b", { children: item.title }), _jsx("button", { type: "button", disabled: busy || ['doing', 'review', 'done'].includes(task.status), "aria-label": `移除前置任务 ${item.title}`, onClick: () => update({ dependencyTaskIds: task.dependencyTaskIds.filter(id => id !== item.id) }), children: "\u79FB\u9664" })] }, item.id)) }), dependencyCandidates.length > 0 && _jsxs("label", { children: [_jsx("span", { className: "sr-only", children: "\u589E\u52A0\u524D\u7F6E\u4EFB\u52A1" }), _jsxs("select", { defaultValue: "", disabled: busy || ['doing', 'review', 'done'].includes(task.status), onChange: event => { const id = event.currentTarget.value; if (id)
203
210
  update({ dependencyTaskIds: [...task.dependencyTaskIds, id] }); event.currentTarget.value = ''; }, children: [_jsx("option", { value: "", children: "\u589E\u52A0\u524D\u7F6E\u4EFB\u52A1\u2026" }), dependencyCandidates.map(item => _jsxs("option", { value: item.id, children: [item.title, " \u00B7 ", statusLabel(item.status)] }, item.id))] })] })] }), task.resultSummary && _jsx(ResultBlock, { label: "\u6267\u884C\u7ED3\u679C", value: task.resultSummary }), task.reviewSummary && _jsx(ResultBlock, { label: `核验意见${reviewer ? ` · @${reviewer.name}` : ''}`, value: task.reviewSummary }), recentActivities.length > 0 && _jsxs("details", { className: "dsh-partner-task-activity dsh-partner-requirement-disclosure", children: [_jsxs("summary", { children: ["\u6700\u8FD1\u6D3B\u52A8 \u00B7 ", recentActivities.length] }), _jsx("ol", { children: recentActivities.map(item => _jsxs("li", { children: [_jsx("span", { children: item.message }), _jsx("time", { children: new Date(item.at).toLocaleString() })] }, item.id)) })] }), rejecting && _jsxs("form", { className: "dsh-partner-task-reject", onSubmit: event => { event.preventDefault(); const reason = rejectReason.trim(); if (!reason)
204
- return; reject(reason); setRejecting(false); setRejectReason(''); }, children: [_jsxs("label", { children: [_jsx("span", { children: "\u6253\u56DE\u539F\u56E0" }), _jsx("textarea", { autoFocus: true, value: rejectReason, onChange: event => setRejectReason(event.target.value), rows: 3, maxLength: 1200, placeholder: "\u8BF4\u660E\u9700\u8981\u91CD\u505A\u6216\u8865\u5145\u7684\u5185\u5BB9" })] }), _jsxs("div", { children: [_jsx("button", { type: "button", onClick: () => { setRejecting(false); setRejectReason(''); }, children: "\u53D6\u6D88" }), _jsx("button", { type: "submit", className: "is-primary", disabled: busy || !rejectReason.trim(), children: "\u786E\u8BA4\u6253\u56DE" })] })] }), confirmingDelete && _jsxs("div", { className: "dsh-partner-task-delete-confirm", role: "alert", children: [_jsx("span", { children: "\u5220\u9664\u4F1A\u53D6\u6D88\u5173\u8054\u6267\u884C\uFF0C\u4F9D\u8D56\u5B83\u7684\u672A\u5B8C\u6210\u4EFB\u52A1\u5C06\u6682\u505C\u3002\u9700\u6C42\u9700\u91CD\u65B0\u786E\u8BA4\u8303\u56F4\uFF1B\u4E0D\u80FD\u64A4\u9500\u3002" }), _jsxs("div", { children: [_jsx("button", { type: "button", onClick: () => setConfirmingDelete(false), children: "\u4FDD\u7559\u4EFB\u52A1" }), _jsx("button", { type: "button", className: "is-danger", disabled: busy, onClick: remove, children: "\u786E\u8BA4\u5220\u9664" })] })] }), _jsxs("footer", { className: "dsh-partner-task-actions", children: [_jsxs("small", { children: ["r", task.revision, " \u00B7 ", new Date(task.updatedAt).toLocaleString()] }), _jsxs("span", { children: [task.status === 'review' ? _jsxs(_Fragment, { children: [task.reviewerCompanionId && _jsx("button", { type: "button", disabled: busy, onClick: review, children: busy ? '核验中…' : `交给 @${reviewer?.name ?? '伙伴'} 核验` }), _jsx("button", { type: "button", disabled: busy, onClick: () => setRejecting(true), children: "\u6253\u56DE\u91CD\u505A" }), _jsx("button", { type: "button", className: "is-primary", disabled: busy, onClick: accept, children: "\u9A8C\u6536\u901A\u8FC7" })] }) : _jsx("button", { type: "button", disabled: busy || !canExecute, title: blockers.length ? '可提前排队,依赖通过验收后自动执行' : !task.assigneeCompanionId ? '请先选择负责人' : undefined, onClick: delegate, children: busy ? '执行中…' : execution?.status === 'queued' ? '已提交,等待执行' : task.status === 'doing' ? '正在执行' : task.status === 'done' ? '已经完成' : `交给 @${assignee?.name ?? '伙伴'}` }), _jsx("button", { type: "button", className: "is-icon", "aria-label": `删除 ${task.title}`, "aria-expanded": confirmingDelete, disabled: busy, onClick: () => setConfirmingDelete(true), children: _jsx(IconTrashOutline16, { size: 14 }) })] })] })] });
211
+ return; reject(reason, checks); }, children: [_jsxs("label", { children: [_jsx("span", { children: "\u6253\u56DE\u539F\u56E0" }), _jsx("textarea", { autoFocus: true, value: rejectReason, onChange: event => setRejectReason(event.target.value), rows: 3, maxLength: 1200, placeholder: "\u8BF4\u660E\u9700\u8981\u91CD\u505A\u6216\u8865\u5145\u7684\u5185\u5BB9" })] }), _jsxs("div", { children: [_jsx("button", { type: "button", onClick: () => { setRejecting(false); setRejectReason(''); }, children: "\u53D6\u6D88" }), _jsx("button", { type: "submit", className: "is-primary", disabled: busy || !rejectReason.trim(), children: "\u786E\u8BA4\u6253\u56DE" })] })] }), confirmingDelete && _jsxs("div", { className: "dsh-partner-task-delete-confirm", role: "alert", children: [_jsx("span", { children: "\u5220\u9664\u4F1A\u53D6\u6D88\u5173\u8054\u6267\u884C\uFF0C\u4F9D\u8D56\u5B83\u7684\u672A\u5B8C\u6210\u4EFB\u52A1\u5C06\u6682\u505C\u3002\u9700\u6C42\u9700\u91CD\u65B0\u786E\u8BA4\u8303\u56F4\uFF1B\u4E0D\u80FD\u64A4\u9500\u3002" }), _jsxs("div", { children: [_jsx("button", { type: "button", onClick: () => setConfirmingDelete(false), children: "\u4FDD\u7559\u4EFB\u52A1" }), _jsx("button", { type: "button", className: "is-danger", disabled: busy, onClick: remove, children: "\u786E\u8BA4\u5220\u9664" })] })] }), _jsxs("footer", { className: "dsh-partner-task-actions", children: [_jsxs("small", { children: ["r", task.revision, " \u00B7 ", new Date(task.updatedAt).toLocaleString()] }), _jsxs("span", { children: [task.status === 'review' ? _jsxs(_Fragment, { children: [task.reviewerCompanionId && _jsx("button", { type: "button", disabled: busy, onClick: review, children: busy ? '核验中…' : `交给 @${reviewer?.name ?? '伙伴'} 核验` }), _jsx("button", { type: "button", disabled: busy, onClick: () => setRejecting(true), children: "\u6253\u56DE\u91CD\u505A" }), _jsx("button", { type: "button", className: "is-primary", disabled: busy || Boolean(task.acceptanceCriteria?.length && (checks.length !== task.acceptanceCriteria.length || checks.some(c => c.verdict !== 'passed' || !c.evidence?.trim()))), onClick: () => accept(checks), children: "\u9A8C\u6536\u901A\u8FC7" })] }) : _jsx("button", { type: "button", disabled: busy || !canExecute, title: blockers.length ? '可提前排队,依赖通过验收后自动执行' : !task.assigneeCompanionId ? '请先选择负责人' : undefined, onClick: delegate, children: busy ? '执行中…' : execution?.status === 'queued' ? '已提交,等待执行' : task.status === 'doing' ? '正在执行' : task.status === 'done' ? '已经完成' : `交给 @${assignee?.name ?? '伙伴'}` }), _jsx("button", { type: "button", className: "is-icon", "aria-label": `删除 ${task.title}`, "aria-expanded": confirmingDelete, disabled: busy, onClick: () => setConfirmingDelete(true), children: _jsx(IconTrashOutline16, { size: 14 }) })] })] })] });
205
212
  }
206
213
  function ResultBlock({ label, value }) {
207
214
  return _jsxs("section", { className: "dsh-partner-task-result", children: [_jsx("strong", { children: label }), _jsx("p", { children: value })] });
@@ -222,6 +229,8 @@ function TaskForm({ requirementId, companions, tasks, close, changed }) {
222
229
  autoRun: data.get('submission') === 'run' && Boolean(data.get('assignee')),
223
230
  assigneeCompanionId: data.get('assignee') || undefined, reviewerCompanionId: data.get('reviewer') || undefined,
224
231
  dependencyTaskIds: data.getAll('dependencyTaskId'),
232
+ acceptanceCriteria: String(data.get('acceptanceCriteria') ?? '').split('\n').map(s => s.trim()).filter(Boolean),
233
+ resourceKeys: String(data.get('resourceKeys') ?? '').split('\n').map(s => s.trim()).filter(Boolean),
225
234
  }) });
226
235
  await changed();
227
236
  close();
@@ -233,7 +242,7 @@ function TaskForm({ requirementId, companions, tasks, close, changed }) {
233
242
  setBusy(false);
234
243
  }
235
244
  };
236
- return _jsxs("form", { className: "dsh-partner-task-form", "aria-busy": busy, onSubmit: event => { void submit(event); }, children: [_jsxs("label", { children: [_jsx("span", { children: "\u4EFB\u52A1\u540D\u79F0" }), _jsx("input", { name: "title", maxLength: 200, required: true, autoFocus: true, placeholder: "\u4E00\u53E5\u8BDD\u8BF4\u660E\u4EA4\u4ED8\u76EE\u6807" })] }), _jsxs("label", { children: [_jsx("span", { children: "\u8D1F\u8D23\u4EBA" }), _jsxs("select", { name: "assignee", defaultValue: "", children: [_jsx("option", { value: "", children: "\u672A\u6307\u6D3E" }), companions.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("label", { className: "is-wide", children: [_jsx("span", { children: "\u4EFB\u52A1\u8BF4\u660E" }), _jsx("textarea", { name: "description", maxLength: 8000, rows: 5, placeholder: "\u8865\u5145\u80CC\u666F\u3001\u4EA4\u4ED8\u7269\u548C\u5B8C\u6210\u6761\u4EF6" })] }), _jsxs("label", { children: [_jsx("span", { children: "\u4F18\u5148\u7EA7" }), _jsxs("select", { name: "priority", defaultValue: "normal", children: [_jsx("option", { value: "low", children: "\u4F4E" }), _jsx("option", { value: "normal", children: "\u666E\u901A" }), _jsx("option", { value: "high", children: "\u9AD8" }), _jsx("option", { value: "urgent", children: "\u7D27\u6025" })] })] }), _jsxs("label", { children: [_jsx("span", { children: "\u9A8C\u6536\u4F19\u4F34" }), _jsxs("select", { name: "reviewer", defaultValue: "", children: [_jsx("option", { value: "", children: "\u7559\u7A7A \u00B7 \u4EBA\u5DE5\u9A8C\u6536" }), companions.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("div", { className: "dsh-partner-task-form-dependencies is-wide", children: [_jsxs("span", { children: ["\u4F9D\u8D56\u4EFB\u52A1 ", _jsx("small", { children: "\u53EF\u9009" })] }), dependencyOptions.length > 0 ? _jsx("div", { children: dependencyOptions.map(item => _jsxs("label", { children: [_jsx("input", { type: "checkbox", name: "dependencyTaskId", value: item.id }), _jsx("i", {}), _jsx("span", { children: item.title }), _jsx("small", { children: statusLabel(item.status) })] }, item.id)) }) : _jsx("p", { children: "\u5F53\u524D\u6CA1\u6709\u53EF\u9009\u7684\u672A\u5B8C\u6210\u4EFB\u52A1" }), _jsx("small", { children: "\u53EF\u4EE5\u9009\u62E9\u591A\u4E2A\uFF1B\u7559\u7A7A\u8868\u793A\u8BE5\u4EFB\u52A1\u4E0D\u4F9D\u8D56\u5176\u4ED6\u4EFB\u52A1\u3002" })] }), _jsxs("label", { className: "is-wide", children: [_jsx("span", { children: "\u521B\u5EFA\u540E\u6267\u884C" }), _jsxs("select", { name: "submission", defaultValue: "run", children: [_jsx("option", { value: "run", children: "\u5DF2\u6307\u5B9A\u8D1F\u8D23\u4EBA\u5219\u81EA\u52A8\u6392\u961F\uFF0C\u7B49\u5F85\u4F9D\u8D56\u5B8C\u6210\u540E\u6267\u884C" }), _jsx("option", { value: "plan", children: "\u4EC5\u89C4\u5212\uFF0C\u7A0D\u540E\u624B\u52A8\u63D0\u4EA4" })] })] }), error && _jsx(WorkspaceNotice, { children: error }), _jsxs("footer", { children: [_jsx("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }), _jsxs("button", { type: "submit", className: "is-primary", disabled: busy, children: [_jsx(IconPlusOutline16, { size: 14 }), busy ? '创建中…' : '创建任务'] })] })] });
245
+ return _jsxs("form", { className: "dsh-partner-task-form", "aria-busy": busy, onSubmit: event => { void submit(event); }, children: [_jsxs("label", { children: [_jsx("span", { children: "\u4EFB\u52A1\u540D\u79F0" }), _jsx("input", { name: "title", maxLength: 200, required: true, autoFocus: true, placeholder: "\u4E00\u53E5\u8BDD\u8BF4\u660E\u4EA4\u4ED8\u76EE\u6807" })] }), _jsxs("label", { children: [_jsx("span", { children: "\u8D1F\u8D23\u4EBA" }), _jsxs("select", { name: "assignee", defaultValue: "", children: [_jsx("option", { value: "", children: "\u672A\u6307\u6D3E" }), companions.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("label", { className: "is-wide", children: [_jsx("span", { children: "\u4EFB\u52A1\u8BF4\u660E" }), _jsx("textarea", { name: "description", maxLength: 8000, rows: 5, placeholder: "\u8865\u5145\u80CC\u666F\u3001\u4EA4\u4ED8\u7269\u548C\u5B8C\u6210\u6761\u4EF6" })] }), _jsxs("label", { className: "is-wide", children: [_jsx("span", { children: "\u9A8C\u6536\u6E05\u5355 \u00B7 \u53EF\u9009" }), _jsx("textarea", { name: "acceptanceCriteria", rows: 3, maxLength: 10000, placeholder: "\u6BCF\u884C\u4E00\u9879\u53EF\u6838\u9A8C\u4EA4\u4ED8\uFF0C\u6700\u591A 20 \u9879" })] }), _jsxs("label", { className: "is-wide", children: [_jsx("span", { children: "\u72EC\u5360\u8D44\u6E90 \u00B7 \u53EF\u9009" }), _jsx("textarea", { name: "resourceKeys", rows: 2, maxLength: 2400, placeholder: "\u6BCF\u884C\u4E00\u4E2A\u4E00\u81F4\u7684\u8D44\u6E90\u6807\u8BC6\uFF0C\u4F8B\u5982 repo:team/api\uFF1B\u76F8\u540C\u8D44\u6E90\u4E0D\u4F1A\u540C\u65F6\u6267\u884C" })] }), _jsxs("label", { children: [_jsx("span", { children: "\u4F18\u5148\u7EA7" }), _jsxs("select", { name: "priority", defaultValue: "normal", children: [_jsx("option", { value: "low", children: "\u4F4E" }), _jsx("option", { value: "normal", children: "\u666E\u901A" }), _jsx("option", { value: "high", children: "\u9AD8" }), _jsx("option", { value: "urgent", children: "\u7D27\u6025" })] })] }), _jsxs("label", { children: [_jsx("span", { children: "\u9A8C\u6536\u4F19\u4F34" }), _jsxs("select", { name: "reviewer", defaultValue: "", children: [_jsx("option", { value: "", children: "\u7559\u7A7A \u00B7 \u4EBA\u5DE5\u9A8C\u6536" }), companions.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("div", { className: "dsh-partner-task-form-dependencies is-wide", children: [_jsxs("span", { children: ["\u4F9D\u8D56\u4EFB\u52A1 ", _jsx("small", { children: "\u53EF\u9009" })] }), dependencyOptions.length > 0 ? _jsx("div", { children: dependencyOptions.map(item => _jsxs("label", { children: [_jsx("input", { type: "checkbox", name: "dependencyTaskId", value: item.id }), _jsx("i", {}), _jsx("span", { children: item.title }), _jsx("small", { children: statusLabel(item.status) })] }, item.id)) }) : _jsx("p", { children: "\u5F53\u524D\u6CA1\u6709\u53EF\u9009\u7684\u672A\u5B8C\u6210\u4EFB\u52A1" }), _jsx("small", { children: "\u53EF\u4EE5\u9009\u62E9\u591A\u4E2A\uFF1B\u7559\u7A7A\u8868\u793A\u8BE5\u4EFB\u52A1\u4E0D\u4F9D\u8D56\u5176\u4ED6\u4EFB\u52A1\u3002" })] }), _jsxs("label", { className: "is-wide", children: [_jsx("span", { children: "\u521B\u5EFA\u540E\u6267\u884C" }), _jsxs("select", { name: "submission", defaultValue: "run", children: [_jsx("option", { value: "run", children: "\u5DF2\u6307\u5B9A\u8D1F\u8D23\u4EBA\u5219\u81EA\u52A8\u6392\u961F\uFF0C\u7B49\u5F85\u4F9D\u8D56\u5B8C\u6210\u540E\u6267\u884C" }), _jsx("option", { value: "plan", children: "\u4EC5\u89C4\u5212\uFF0C\u7A0D\u540E\u624B\u52A8\u63D0\u4EA4" })] })] }), error && _jsx(WorkspaceNotice, { children: error }), _jsxs("footer", { children: [_jsx("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }), _jsxs("button", { type: "submit", className: "is-primary", disabled: busy, children: [_jsx(IconPlusOutline16, { size: 14 }), busy ? '创建中…' : '创建任务'] })] })] });
237
246
  }
238
247
  function dependsOn(candidateId, targetId, tasks, visited = new Set()) {
239
248
  if (candidateId === targetId)