opclawtm 1.4.0
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.
- package/README.md +136 -0
- package/dist/bin/team-manager.d.ts +6 -0
- package/dist/bin/team-manager.d.ts.map +1 -0
- package/dist/bin/team-manager.js +36 -0
- package/dist/bin/team-manager.js.map +1 -0
- package/dist/bin/team-setup.d.ts +7 -0
- package/dist/bin/team-setup.d.ts.map +1 -0
- package/dist/bin/team-setup.js +66 -0
- package/dist/bin/team-setup.js.map +1 -0
- package/dist/bin/team-uninstall.d.ts +6 -0
- package/dist/bin/team-uninstall.d.ts.map +1 -0
- package/dist/bin/team-uninstall.js +91 -0
- package/dist/bin/team-uninstall.js.map +1 -0
- package/dist/cli/commands/agent.command.d.ts +43 -0
- package/dist/cli/commands/agent.command.d.ts.map +1 -0
- package/dist/cli/commands/agent.command.js +223 -0
- package/dist/cli/commands/agent.command.js.map +1 -0
- package/dist/cli/commands/checklist.command.d.ts +35 -0
- package/dist/cli/commands/checklist.command.d.ts.map +1 -0
- package/dist/cli/commands/checklist.command.js +77 -0
- package/dist/cli/commands/checklist.command.js.map +1 -0
- package/dist/cli/commands/dept.command.d.ts +32 -0
- package/dist/cli/commands/dept.command.d.ts.map +1 -0
- package/dist/cli/commands/dept.command.js +92 -0
- package/dist/cli/commands/dept.command.js.map +1 -0
- package/dist/cli/commands/document.command.d.ts +37 -0
- package/dist/cli/commands/document.command.d.ts.map +1 -0
- package/dist/cli/commands/document.command.js +146 -0
- package/dist/cli/commands/document.command.js.map +1 -0
- package/dist/cli/commands/domain.command.d.ts +36 -0
- package/dist/cli/commands/domain.command.d.ts.map +1 -0
- package/dist/cli/commands/domain.command.js +97 -0
- package/dist/cli/commands/domain.command.js.map +1 -0
- package/dist/cli/commands/feishu.command.d.ts +63 -0
- package/dist/cli/commands/feishu.command.d.ts.map +1 -0
- package/dist/cli/commands/feishu.command.js +433 -0
- package/dist/cli/commands/feishu.command.js.map +1 -0
- package/dist/cli/commands/job.command.d.ts +39 -0
- package/dist/cli/commands/job.command.d.ts.map +1 -0
- package/dist/cli/commands/job.command.js +168 -0
- package/dist/cli/commands/job.command.js.map +1 -0
- package/dist/cli/commands/license.command.d.ts +22 -0
- package/dist/cli/commands/license.command.d.ts.map +1 -0
- package/dist/cli/commands/license.command.js +68 -0
- package/dist/cli/commands/license.command.js.map +1 -0
- package/dist/cli/commands/message-failure.command.d.ts +44 -0
- package/dist/cli/commands/message-failure.command.d.ts.map +1 -0
- package/dist/cli/commands/message-failure.command.js +137 -0
- package/dist/cli/commands/message-failure.command.js.map +1 -0
- package/dist/cli/commands/message.command.d.ts +47 -0
- package/dist/cli/commands/message.command.d.ts.map +1 -0
- package/dist/cli/commands/message.command.js +129 -0
- package/dist/cli/commands/message.command.js.map +1 -0
- package/dist/cli/commands/node.command.d.ts +76 -0
- package/dist/cli/commands/node.command.d.ts.map +1 -0
- package/dist/cli/commands/node.command.js +251 -0
- package/dist/cli/commands/node.command.js.map +1 -0
- package/dist/cli/commands/role-flow.command.d.ts +12 -0
- package/dist/cli/commands/role-flow.command.d.ts.map +1 -0
- package/dist/cli/commands/role-flow.command.js +54 -0
- package/dist/cli/commands/role-flow.command.js.map +1 -0
- package/dist/cli/commands/skill-pack.command.d.ts +41 -0
- package/dist/cli/commands/skill-pack.command.d.ts.map +1 -0
- package/dist/cli/commands/skill-pack.command.js +137 -0
- package/dist/cli/commands/skill-pack.command.js.map +1 -0
- package/dist/cli/commands/status.command.d.ts +8 -0
- package/dist/cli/commands/status.command.d.ts.map +1 -0
- package/dist/cli/commands/status.command.js +61 -0
- package/dist/cli/commands/status.command.js.map +1 -0
- package/dist/cli/commands/task.command.d.ts +105 -0
- package/dist/cli/commands/task.command.d.ts.map +1 -0
- package/dist/cli/commands/task.command.js +402 -0
- package/dist/cli/commands/task.command.js.map +1 -0
- package/dist/cli/commands/user.command.d.ts +43 -0
- package/dist/cli/commands/user.command.d.ts.map +1 -0
- package/dist/cli/commands/user.command.js +134 -0
- package/dist/cli/commands/user.command.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +863 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/tui/index.d.ts +45 -0
- package/dist/cli/tui/index.d.ts.map +1 -0
- package/dist/cli/tui/index.js +470 -0
- package/dist/cli/tui/index.js.map +1 -0
- package/dist/cli/tui/menus/agent-manage.menu.d.ts +8 -0
- package/dist/cli/tui/menus/agent-manage.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/agent-manage.menu.js +614 -0
- package/dist/cli/tui/menus/agent-manage.menu.js.map +1 -0
- package/dist/cli/tui/menus/dept-manage.menu.d.ts +8 -0
- package/dist/cli/tui/menus/dept-manage.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/dept-manage.menu.js +299 -0
- package/dist/cli/tui/menus/dept-manage.menu.js.map +1 -0
- package/dist/cli/tui/menus/domain-manage.menu.d.ts +8 -0
- package/dist/cli/tui/menus/domain-manage.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/domain-manage.menu.js +208 -0
- package/dist/cli/tui/menus/domain-manage.menu.js.map +1 -0
- package/dist/cli/tui/menus/feishu.menu.d.ts +8 -0
- package/dist/cli/tui/menus/feishu.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/feishu.menu.js +1727 -0
- package/dist/cli/tui/menus/feishu.menu.js.map +1 -0
- package/dist/cli/tui/menus/job-manage.menu.d.ts +16 -0
- package/dist/cli/tui/menus/job-manage.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/job-manage.menu.js +734 -0
- package/dist/cli/tui/menus/job-manage.menu.js.map +1 -0
- package/dist/cli/tui/menus/license.menu.d.ts +12 -0
- package/dist/cli/tui/menus/license.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/license.menu.js +164 -0
- package/dist/cli/tui/menus/license.menu.js.map +1 -0
- package/dist/cli/tui/menus/main.menu.d.ts +10 -0
- package/dist/cli/tui/menus/main.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/main.menu.js +94 -0
- package/dist/cli/tui/menus/main.menu.js.map +1 -0
- package/dist/cli/tui/menus/reset.menu.d.ts +10 -0
- package/dist/cli/tui/menus/reset.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/reset.menu.js +767 -0
- package/dist/cli/tui/menus/reset.menu.js.map +1 -0
- package/dist/cli/tui/menus/status.menu.d.ts +8 -0
- package/dist/cli/tui/menus/status.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/status.menu.js +123 -0
- package/dist/cli/tui/menus/status.menu.js.map +1 -0
- package/dist/cli/tui/menus/task-manage.menu.d.ts +11 -0
- package/dist/cli/tui/menus/task-manage.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/task-manage.menu.js +129 -0
- package/dist/cli/tui/menus/task-manage.menu.js.map +1 -0
- package/dist/cli/tui/menus/team-create.menu.d.ts +8 -0
- package/dist/cli/tui/menus/team-create.menu.d.ts.map +1 -0
- package/dist/cli/tui/menus/team-create.menu.js +353 -0
- package/dist/cli/tui/menus/team-create.menu.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +74 -0
- package/dist/config.js.map +1 -0
- package/dist/core/auth/index.d.ts +6 -0
- package/dist/core/auth/index.d.ts.map +1 -0
- package/dist/core/auth/index.js +22 -0
- package/dist/core/auth/index.js.map +1 -0
- package/dist/core/auth/middleware.d.ts +73 -0
- package/dist/core/auth/middleware.d.ts.map +1 -0
- package/dist/core/auth/middleware.js +456 -0
- package/dist/core/auth/middleware.js.map +1 -0
- package/dist/core/auth/storage.d.ts +38 -0
- package/dist/core/auth/storage.d.ts.map +1 -0
- package/dist/core/auth/storage.js +280 -0
- package/dist/core/auth/storage.js.map +1 -0
- package/dist/core/keys/public.pem +9 -0
- package/dist/core/models/types.d.ts +426 -0
- package/dist/core/models/types.d.ts.map +1 -0
- package/dist/core/models/types.js +9 -0
- package/dist/core/models/types.js.map +1 -0
- package/dist/core/services/agent-template.service.d.ts +49 -0
- package/dist/core/services/agent-template.service.d.ts.map +1 -0
- package/dist/core/services/agent-template.service.js +88 -0
- package/dist/core/services/agent-template.service.js.map +1 -0
- package/dist/core/services/agent.service.d.ts +120 -0
- package/dist/core/services/agent.service.d.ts.map +1 -0
- package/dist/core/services/agent.service.js +381 -0
- package/dist/core/services/agent.service.js.map +1 -0
- package/dist/core/services/auth-profiles.service.d.ts +93 -0
- package/dist/core/services/auth-profiles.service.d.ts.map +1 -0
- package/dist/core/services/auth-profiles.service.js +220 -0
- package/dist/core/services/auth-profiles.service.js.map +1 -0
- package/dist/core/services/checklist.service.d.ts +58 -0
- package/dist/core/services/checklist.service.d.ts.map +1 -0
- package/dist/core/services/checklist.service.js +240 -0
- package/dist/core/services/checklist.service.js.map +1 -0
- package/dist/core/services/config-tracker.service.d.ts +119 -0
- package/dist/core/services/config-tracker.service.d.ts.map +1 -0
- package/dist/core/services/config-tracker.service.js +1093 -0
- package/dist/core/services/config-tracker.service.js.map +1 -0
- package/dist/core/services/crypto.service.d.ts +102 -0
- package/dist/core/services/crypto.service.d.ts.map +1 -0
- package/dist/core/services/crypto.service.js +377 -0
- package/dist/core/services/crypto.service.js.map +1 -0
- package/dist/core/services/dept.service.d.ts +92 -0
- package/dist/core/services/dept.service.d.ts.map +1 -0
- package/dist/core/services/dept.service.js +260 -0
- package/dist/core/services/dept.service.js.map +1 -0
- package/dist/core/services/document.service.d.ts +131 -0
- package/dist/core/services/document.service.d.ts.map +1 -0
- package/dist/core/services/document.service.js +368 -0
- package/dist/core/services/document.service.js.map +1 -0
- package/dist/core/services/domain.service.d.ts +50 -0
- package/dist/core/services/domain.service.d.ts.map +1 -0
- package/dist/core/services/domain.service.js +98 -0
- package/dist/core/services/domain.service.js.map +1 -0
- package/dist/core/services/feishu.service.d.ts +124 -0
- package/dist/core/services/feishu.service.d.ts.map +1 -0
- package/dist/core/services/feishu.service.js +165 -0
- package/dist/core/services/feishu.service.js.map +1 -0
- package/dist/core/services/index.d.ts +27 -0
- package/dist/core/services/index.d.ts.map +1 -0
- package/dist/core/services/index.js +89 -0
- package/dist/core/services/index.js.map +1 -0
- package/dist/core/services/job.service.d.ts +60 -0
- package/dist/core/services/job.service.d.ts.map +1 -0
- package/dist/core/services/job.service.js +190 -0
- package/dist/core/services/job.service.js.map +1 -0
- package/dist/core/services/log.service.d.ts +111 -0
- package/dist/core/services/log.service.d.ts.map +1 -0
- package/dist/core/services/log.service.js +237 -0
- package/dist/core/services/log.service.js.map +1 -0
- package/dist/core/services/message-failure.service.d.ts +65 -0
- package/dist/core/services/message-failure.service.d.ts.map +1 -0
- package/dist/core/services/message-failure.service.js +112 -0
- package/dist/core/services/message-failure.service.js.map +1 -0
- package/dist/core/services/message.service.d.ts +122 -0
- package/dist/core/services/message.service.d.ts.map +1 -0
- package/dist/core/services/message.service.js +374 -0
- package/dist/core/services/message.service.js.map +1 -0
- package/dist/core/services/node.service.d.ts +150 -0
- package/dist/core/services/node.service.d.ts.map +1 -0
- package/dist/core/services/node.service.js +257 -0
- package/dist/core/services/node.service.js.map +1 -0
- package/dist/core/services/openclaw-config.service.d.ts +187 -0
- package/dist/core/services/openclaw-config.service.d.ts.map +1 -0
- package/dist/core/services/openclaw-config.service.js +268 -0
- package/dist/core/services/openclaw-config.service.js.map +1 -0
- package/dist/core/services/preset-loader.service.d.ts +80 -0
- package/dist/core/services/preset-loader.service.d.ts.map +1 -0
- package/dist/core/services/preset-loader.service.js +379 -0
- package/dist/core/services/preset-loader.service.js.map +1 -0
- package/dist/core/services/role-flow.service.d.ts +21 -0
- package/dist/core/services/role-flow.service.d.ts.map +1 -0
- package/dist/core/services/role-flow.service.js +47 -0
- package/dist/core/services/role-flow.service.js.map +1 -0
- package/dist/core/services/setup.service.d.ts +46 -0
- package/dist/core/services/setup.service.d.ts.map +1 -0
- package/dist/core/services/setup.service.js +336 -0
- package/dist/core/services/setup.service.js.map +1 -0
- package/dist/core/services/skill-pack.service.d.ts +56 -0
- package/dist/core/services/skill-pack.service.d.ts.map +1 -0
- package/dist/core/services/skill-pack.service.js +113 -0
- package/dist/core/services/skill-pack.service.js.map +1 -0
- package/dist/core/services/task.service.d.ts +177 -0
- package/dist/core/services/task.service.d.ts.map +1 -0
- package/dist/core/services/task.service.js +397 -0
- package/dist/core/services/task.service.js.map +1 -0
- package/dist/core/services/template.service.d.ts +51 -0
- package/dist/core/services/template.service.d.ts.map +1 -0
- package/dist/core/services/template.service.js +88 -0
- package/dist/core/services/template.service.js.map +1 -0
- package/dist/core/services/user.service.d.ts +50 -0
- package/dist/core/services/user.service.d.ts.map +1 -0
- package/dist/core/services/user.service.js +111 -0
- package/dist/core/services/user.service.js.map +1 -0
- package/dist/core/utils/agent-guide-generator.d.ts +38 -0
- package/dist/core/utils/agent-guide-generator.d.ts.map +1 -0
- package/dist/core/utils/agent-guide-generator.js +187 -0
- package/dist/core/utils/agent-guide-generator.js.map +1 -0
- package/dist/core/utils/credentials-cleanup.d.ts +81 -0
- package/dist/core/utils/credentials-cleanup.d.ts.map +1 -0
- package/dist/core/utils/credentials-cleanup.js +256 -0
- package/dist/core/utils/credentials-cleanup.js.map +1 -0
- package/dist/core/utils/index.d.ts +215 -0
- package/dist/core/utils/index.d.ts.map +1 -0
- package/dist/core/utils/index.js +462 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/openclaw-helper.d.ts +250 -0
- package/dist/core/utils/openclaw-helper.d.ts.map +1 -0
- package/dist/core/utils/openclaw-helper.js +1629 -0
- package/dist/core/utils/openclaw-helper.js.map +1 -0
- package/dist/core/utils/template-generator.d.ts +67 -0
- package/dist/core/utils/template-generator.d.ts.map +1 -0
- package/dist/core/utils/template-generator.js +170 -0
- package/dist/core/utils/template-generator.js.map +1 -0
- package/dist/db/index.d.ts +54 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +403 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/repositories/agent-template.repo.d.ts +47 -0
- package/dist/db/repositories/agent-template.repo.d.ts.map +1 -0
- package/dist/db/repositories/agent-template.repo.js +108 -0
- package/dist/db/repositories/agent-template.repo.js.map +1 -0
- package/dist/db/repositories/agent.repo.d.ts +64 -0
- package/dist/db/repositories/agent.repo.d.ts.map +1 -0
- package/dist/db/repositories/agent.repo.js +103 -0
- package/dist/db/repositories/agent.repo.js.map +1 -0
- package/dist/db/repositories/base.repository.d.ts +51 -0
- package/dist/db/repositories/base.repository.d.ts.map +1 -0
- package/dist/db/repositories/base.repository.js +107 -0
- package/dist/db/repositories/base.repository.js.map +1 -0
- package/dist/db/repositories/company.repo.d.ts +18 -0
- package/dist/db/repositories/company.repo.d.ts.map +1 -0
- package/dist/db/repositories/company.repo.js +33 -0
- package/dist/db/repositories/company.repo.js.map +1 -0
- package/dist/db/repositories/config-change.repo.d.ts +65 -0
- package/dist/db/repositories/config-change.repo.d.ts.map +1 -0
- package/dist/db/repositories/config-change.repo.js +119 -0
- package/dist/db/repositories/config-change.repo.js.map +1 -0
- package/dist/db/repositories/dept.repo.d.ts +37 -0
- package/dist/db/repositories/dept.repo.d.ts.map +1 -0
- package/dist/db/repositories/dept.repo.js +66 -0
- package/dist/db/repositories/dept.repo.js.map +1 -0
- package/dist/db/repositories/document.repo.d.ts +25 -0
- package/dist/db/repositories/document.repo.d.ts.map +1 -0
- package/dist/db/repositories/document.repo.js +51 -0
- package/dist/db/repositories/document.repo.js.map +1 -0
- package/dist/db/repositories/domain.repo.d.ts +42 -0
- package/dist/db/repositories/domain.repo.d.ts.map +1 -0
- package/dist/db/repositories/domain.repo.js +79 -0
- package/dist/db/repositories/domain.repo.js.map +1 -0
- package/dist/db/repositories/index.d.ts +24 -0
- package/dist/db/repositories/index.d.ts.map +1 -0
- package/dist/db/repositories/index.js +81 -0
- package/dist/db/repositories/index.js.map +1 -0
- package/dist/db/repositories/init-session.repo.d.ts +38 -0
- package/dist/db/repositories/init-session.repo.d.ts.map +1 -0
- package/dist/db/repositories/init-session.repo.js +112 -0
- package/dist/db/repositories/init-session.repo.js.map +1 -0
- package/dist/db/repositories/job.repo.d.ts +54 -0
- package/dist/db/repositories/job.repo.d.ts.map +1 -0
- package/dist/db/repositories/job.repo.js +119 -0
- package/dist/db/repositories/job.repo.js.map +1 -0
- package/dist/db/repositories/message-failure.repo.d.ts +92 -0
- package/dist/db/repositories/message-failure.repo.d.ts.map +1 -0
- package/dist/db/repositories/message-failure.repo.js +141 -0
- package/dist/db/repositories/message-failure.repo.js.map +1 -0
- package/dist/db/repositories/message-log.repo.d.ts +36 -0
- package/dist/db/repositories/message-log.repo.d.ts.map +1 -0
- package/dist/db/repositories/message-log.repo.js +64 -0
- package/dist/db/repositories/message-log.repo.js.map +1 -0
- package/dist/db/repositories/node.repo.d.ts +107 -0
- package/dist/db/repositories/node.repo.d.ts.map +1 -0
- package/dist/db/repositories/node.repo.js +276 -0
- package/dist/db/repositories/node.repo.js.map +1 -0
- package/dist/db/repositories/role-flow.repo.d.ts +43 -0
- package/dist/db/repositories/role-flow.repo.d.ts.map +1 -0
- package/dist/db/repositories/role-flow.repo.js +83 -0
- package/dist/db/repositories/role-flow.repo.js.map +1 -0
- package/dist/db/repositories/skill-pack.repo.d.ts +45 -0
- package/dist/db/repositories/skill-pack.repo.d.ts.map +1 -0
- package/dist/db/repositories/skill-pack.repo.js +149 -0
- package/dist/db/repositories/skill-pack.repo.js.map +1 -0
- package/dist/db/repositories/task.repo.d.ts +168 -0
- package/dist/db/repositories/task.repo.d.ts.map +1 -0
- package/dist/db/repositories/task.repo.js +381 -0
- package/dist/db/repositories/task.repo.js.map +1 -0
- package/dist/db/repositories/template.repo.d.ts +40 -0
- package/dist/db/repositories/template.repo.d.ts.map +1 -0
- package/dist/db/repositories/template.repo.js +66 -0
- package/dist/db/repositories/template.repo.js.map +1 -0
- package/dist/db/repositories/user.repo.d.ts +46 -0
- package/dist/db/repositories/user.repo.d.ts.map +1 -0
- package/dist/db/repositories/user.repo.js +75 -0
- package/dist/db/repositories/user.repo.js.map +1 -0
- package/dist/db/schema.sql +364 -0
- package/package.json +90 -0
- package/resources/preset-data-hash.enc +1 -0
- package/resources/preset-data.enc +1 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Repository
|
|
3
|
+
*
|
|
4
|
+
* v1.1.7: 新增阶段管理方法
|
|
5
|
+
*/
|
|
6
|
+
import { BaseRepository } from './base.repository';
|
|
7
|
+
import { Task, TaskStatus, TaskStage, StageStatus } from '../../core/models/types';
|
|
8
|
+
export declare class TaskRepository extends BaseRepository<Task> {
|
|
9
|
+
constructor();
|
|
10
|
+
/**
|
|
11
|
+
* Create task
|
|
12
|
+
*/
|
|
13
|
+
create(data: {
|
|
14
|
+
id: string;
|
|
15
|
+
title: string;
|
|
16
|
+
description: string;
|
|
17
|
+
user_id: string;
|
|
18
|
+
department_id: string;
|
|
19
|
+
manager_id: string;
|
|
20
|
+
parent_task_id?: string;
|
|
21
|
+
base_task_id?: string;
|
|
22
|
+
is_increment?: number;
|
|
23
|
+
}): Task;
|
|
24
|
+
/**
|
|
25
|
+
* Update task status
|
|
26
|
+
*/
|
|
27
|
+
updateStatus(id: string, status: TaskStatus): void;
|
|
28
|
+
/**
|
|
29
|
+
* Find by department
|
|
30
|
+
*/
|
|
31
|
+
findByDepartment(departmentId: string): Task[];
|
|
32
|
+
/**
|
|
33
|
+
* Find by status
|
|
34
|
+
*/
|
|
35
|
+
findByStatus(status: TaskStatus): Task[];
|
|
36
|
+
/**
|
|
37
|
+
* Find by manager
|
|
38
|
+
*/
|
|
39
|
+
findByManager(managerId: string): Task[];
|
|
40
|
+
/**
|
|
41
|
+
* Find by parent task (rework tasks)
|
|
42
|
+
*/
|
|
43
|
+
findByParentTask(parentTaskId: string): Task[];
|
|
44
|
+
/**
|
|
45
|
+
* Check if has running task (single task constraint)
|
|
46
|
+
* pending, in_progress, pending_acceptance status are considered running
|
|
47
|
+
*/
|
|
48
|
+
hasRunningTask(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Get current running task
|
|
51
|
+
*/
|
|
52
|
+
getRunningTask(): Task | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Get all agents involved in task
|
|
55
|
+
* Includes: executors, reviewers, task manager, and stage managers
|
|
56
|
+
*/
|
|
57
|
+
getTaskAgents(taskId: string): string[];
|
|
58
|
+
/**
|
|
59
|
+
* Update manager's heartbeat
|
|
60
|
+
* Called when manager is actively working on a task
|
|
61
|
+
*/
|
|
62
|
+
updateManagerHeartbeat(taskId: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* Find stalled tasks (manager timeout)
|
|
65
|
+
* Returns tasks where manager hasn't updated heartbeat for a while
|
|
66
|
+
* @param timeoutMinutes - Timeout threshold in minutes (default: 10)
|
|
67
|
+
*/
|
|
68
|
+
findStalledTasks(timeoutMinutes?: number): Task[];
|
|
69
|
+
/**
|
|
70
|
+
* Get tasks with manager activity status
|
|
71
|
+
* For debugging and monitoring
|
|
72
|
+
*/
|
|
73
|
+
getTasksWithHeartbeatStatus(): Array<Task & {
|
|
74
|
+
heartbeat_age_minutes: number | null;
|
|
75
|
+
}>;
|
|
76
|
+
/**
|
|
77
|
+
* Get increment task count for a base task
|
|
78
|
+
* Returns the number of increment tasks created for a base task
|
|
79
|
+
*/
|
|
80
|
+
getIncrementTaskCount(baseTaskId: string): number;
|
|
81
|
+
/**
|
|
82
|
+
* Get next increment index for a base task
|
|
83
|
+
* Returns the next increment index (1, 2, 3...)
|
|
84
|
+
*/
|
|
85
|
+
getNextIncrementIndex(baseTaskId: string): number;
|
|
86
|
+
/**
|
|
87
|
+
* Find all increment tasks for a base task
|
|
88
|
+
* Returns all tasks that are increments of the given base task
|
|
89
|
+
*/
|
|
90
|
+
findIncrementTasks(baseTaskId: string): Task[];
|
|
91
|
+
/**
|
|
92
|
+
* Find base task (original task without base_task_id)
|
|
93
|
+
* Returns the original task that this increment task is based on
|
|
94
|
+
*/
|
|
95
|
+
findBaseTask(taskId: string): Task | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* Get task chain (from original to latest increment)
|
|
98
|
+
* Returns the full chain of tasks from the original to the given task
|
|
99
|
+
*/
|
|
100
|
+
getTaskChain(taskId: string): Task[];
|
|
101
|
+
/**
|
|
102
|
+
* 获取当前忙碌的部门列表
|
|
103
|
+
* 忙碌定义:有 running 状态的任务正在执行
|
|
104
|
+
* Running status: pending, in_progress, stage_completed, pending_acceptance
|
|
105
|
+
*/
|
|
106
|
+
getBusyDepartments(): string[];
|
|
107
|
+
/**
|
|
108
|
+
* 检查部门是否忙碌
|
|
109
|
+
*/
|
|
110
|
+
isDepartmentBusy(departmentId: string): boolean;
|
|
111
|
+
/**
|
|
112
|
+
* 获取部门当前运行中的任务
|
|
113
|
+
*/
|
|
114
|
+
getRunningTasksByDepartment(departmentId: string): Task[];
|
|
115
|
+
/**
|
|
116
|
+
* 获取所有运行中的任务(v1.1.7 修改)
|
|
117
|
+
*/
|
|
118
|
+
getAllRunningTasks(): Task[];
|
|
119
|
+
/**
|
|
120
|
+
* 创建阶段记录
|
|
121
|
+
*/
|
|
122
|
+
createStage(data: {
|
|
123
|
+
id: string;
|
|
124
|
+
task_id: string;
|
|
125
|
+
stage_name: string;
|
|
126
|
+
department_id: string;
|
|
127
|
+
manager_id: string;
|
|
128
|
+
sequence: number;
|
|
129
|
+
}): TaskStage;
|
|
130
|
+
/**
|
|
131
|
+
* 获取阶段记录
|
|
132
|
+
*/
|
|
133
|
+
getStageById(id: string): TaskStage | undefined;
|
|
134
|
+
/**
|
|
135
|
+
* 获取任务的所有阶段
|
|
136
|
+
*/
|
|
137
|
+
getStagesByTask(taskId: string): TaskStage[];
|
|
138
|
+
/**
|
|
139
|
+
* 获取当前执行阶段
|
|
140
|
+
*/
|
|
141
|
+
getCurrentStage(taskId: string): TaskStage | undefined;
|
|
142
|
+
/**
|
|
143
|
+
* 获取下一阶段
|
|
144
|
+
*/
|
|
145
|
+
getNextStage(taskId: string): TaskStage | undefined;
|
|
146
|
+
/**
|
|
147
|
+
* 更新阶段状态
|
|
148
|
+
*/
|
|
149
|
+
updateStageStatus(id: string, status: StageStatus): void;
|
|
150
|
+
/**
|
|
151
|
+
* 完成阶段(更新状态和成果)
|
|
152
|
+
*/
|
|
153
|
+
completeStage(id: string, outputSummary: string, handoverNote?: string): void;
|
|
154
|
+
/**
|
|
155
|
+
* 获取上一阶段
|
|
156
|
+
*/
|
|
157
|
+
getPreviousStage(taskId: string, currentSequence: number): TaskStage | undefined;
|
|
158
|
+
/**
|
|
159
|
+
* 检查所有阶段是否完成
|
|
160
|
+
*/
|
|
161
|
+
areAllStagesCompleted(taskId: string): boolean;
|
|
162
|
+
/**
|
|
163
|
+
* 获取阶段数量
|
|
164
|
+
*/
|
|
165
|
+
getStageCount(taskId: string): number;
|
|
166
|
+
}
|
|
167
|
+
export declare const taskRepository: TaskRepository;
|
|
168
|
+
//# sourceMappingURL=task.repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.repo.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/task.repo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Task Repository
|
|
4
|
+
*
|
|
5
|
+
* v1.1.7: 新增阶段管理方法
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.taskRepository = exports.TaskRepository = void 0;
|
|
9
|
+
const base_repository_1 = require("./base.repository");
|
|
10
|
+
class TaskRepository extends base_repository_1.BaseRepository {
|
|
11
|
+
constructor() {
|
|
12
|
+
super('tasks', 'id');
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create task
|
|
16
|
+
*/
|
|
17
|
+
create(data) {
|
|
18
|
+
const now = new Date().toISOString();
|
|
19
|
+
this.insert({
|
|
20
|
+
id: data.id,
|
|
21
|
+
title: data.title,
|
|
22
|
+
description: data.description,
|
|
23
|
+
status: 'pending',
|
|
24
|
+
department_id: data.department_id,
|
|
25
|
+
manager_id: data.manager_id,
|
|
26
|
+
user_id: data.user_id,
|
|
27
|
+
base_task_id: data.base_task_id || null,
|
|
28
|
+
is_increment: data.is_increment || 0,
|
|
29
|
+
parent_task_id: data.parent_task_id || null,
|
|
30
|
+
created_at: now,
|
|
31
|
+
finalized_at: null
|
|
32
|
+
});
|
|
33
|
+
return this.findById(data.id);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Update task status
|
|
37
|
+
*/
|
|
38
|
+
updateStatus(id, status) {
|
|
39
|
+
const updateData = { status };
|
|
40
|
+
if (status === 'finalized') {
|
|
41
|
+
updateData.finalized_at = new Date().toISOString();
|
|
42
|
+
}
|
|
43
|
+
this.update(id, updateData);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Find by department
|
|
47
|
+
*/
|
|
48
|
+
findByDepartment(departmentId) {
|
|
49
|
+
return this.findWhere({ department_id: departmentId });
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Find by status
|
|
53
|
+
*/
|
|
54
|
+
findByStatus(status) {
|
|
55
|
+
return this.findWhere({ status });
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Find by manager
|
|
59
|
+
*/
|
|
60
|
+
findByManager(managerId) {
|
|
61
|
+
return this.findWhere({ manager_id: managerId });
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Find by parent task (rework tasks)
|
|
65
|
+
*/
|
|
66
|
+
findByParentTask(parentTaskId) {
|
|
67
|
+
return this.findWhere({ parent_task_id: parentTaskId });
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check if has running task (single task constraint)
|
|
71
|
+
* pending, in_progress, pending_acceptance status are considered running
|
|
72
|
+
*/
|
|
73
|
+
hasRunningTask() {
|
|
74
|
+
const sql = `SELECT COUNT(*) as count FROM tasks WHERE status IN ('pending', 'in_progress', 'pending_acceptance')`;
|
|
75
|
+
const result = this.db.prepare(sql).get();
|
|
76
|
+
return result.count > 0;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get current running task
|
|
80
|
+
*/
|
|
81
|
+
getRunningTask() {
|
|
82
|
+
const sql = `SELECT * FROM tasks WHERE status IN ('pending', 'in_progress', 'pending_acceptance') LIMIT 1`;
|
|
83
|
+
return this.db.prepare(sql).get();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get all agents involved in task
|
|
87
|
+
* Includes: executors, reviewers, task manager, and stage managers
|
|
88
|
+
*/
|
|
89
|
+
getTaskAgents(taskId) {
|
|
90
|
+
const sql = `
|
|
91
|
+
-- Executors
|
|
92
|
+
SELECT DISTINCT agent_id FROM task_nodes WHERE task_id = ? AND agent_id IS NOT NULL
|
|
93
|
+
UNION
|
|
94
|
+
-- Reviewers (v1.1.8)
|
|
95
|
+
SELECT DISTINCT reviewer_id FROM task_nodes WHERE task_id = ? AND reviewer_id IS NOT NULL
|
|
96
|
+
UNION
|
|
97
|
+
-- Task manager
|
|
98
|
+
SELECT manager_id FROM tasks WHERE id = ? AND manager_id IS NOT NULL
|
|
99
|
+
UNION
|
|
100
|
+
-- Stage managers (v1.1.8 - for multi-stage tasks)
|
|
101
|
+
SELECT DISTINCT manager_id FROM task_stages WHERE task_id = ? AND manager_id IS NOT NULL
|
|
102
|
+
`;
|
|
103
|
+
const results = this.db.prepare(sql).all(taskId, taskId, taskId, taskId);
|
|
104
|
+
return results.map(r => r.agent_id);
|
|
105
|
+
}
|
|
106
|
+
// ============================================
|
|
107
|
+
// Heartbeat Methods (v1.1.1)
|
|
108
|
+
// ============================================
|
|
109
|
+
/**
|
|
110
|
+
* Update manager's heartbeat
|
|
111
|
+
* Called when manager is actively working on a task
|
|
112
|
+
*/
|
|
113
|
+
updateManagerHeartbeat(taskId) {
|
|
114
|
+
const sql = `UPDATE tasks SET last_manager_heartbeat_at = ? WHERE id = ?`;
|
|
115
|
+
this.db.prepare(sql).run(new Date().toISOString(), taskId);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Find stalled tasks (manager timeout)
|
|
119
|
+
* Returns tasks where manager hasn't updated heartbeat for a while
|
|
120
|
+
* @param timeoutMinutes - Timeout threshold in minutes (default: 10)
|
|
121
|
+
*/
|
|
122
|
+
findStalledTasks(timeoutMinutes = 10) {
|
|
123
|
+
const sql = `
|
|
124
|
+
SELECT * FROM tasks
|
|
125
|
+
WHERE status = 'in_progress'
|
|
126
|
+
AND last_manager_heartbeat_at IS NOT NULL
|
|
127
|
+
AND datetime(last_manager_heartbeat_at) < datetime('now', '-' || ? || ' minutes')
|
|
128
|
+
ORDER BY last_manager_heartbeat_at ASC
|
|
129
|
+
`;
|
|
130
|
+
return this.db.prepare(sql).all(timeoutMinutes);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get tasks with manager activity status
|
|
134
|
+
* For debugging and monitoring
|
|
135
|
+
*/
|
|
136
|
+
getTasksWithHeartbeatStatus() {
|
|
137
|
+
const sql = `
|
|
138
|
+
SELECT
|
|
139
|
+
*,
|
|
140
|
+
CASE
|
|
141
|
+
WHEN last_manager_heartbeat_at IS NOT NULL
|
|
142
|
+
THEN CAST((julianday('now') - julianday(last_manager_heartbeat_at)) * 24 * 60 AS INTEGER)
|
|
143
|
+
ELSE NULL
|
|
144
|
+
END as heartbeat_age_minutes
|
|
145
|
+
FROM tasks
|
|
146
|
+
WHERE status IN ('pending', 'in_progress')
|
|
147
|
+
ORDER BY created_at DESC
|
|
148
|
+
`;
|
|
149
|
+
return this.db.prepare(sql).all();
|
|
150
|
+
}
|
|
151
|
+
// ============================================
|
|
152
|
+
// Increment Task Methods (v1.1.3)
|
|
153
|
+
// ============================================
|
|
154
|
+
/**
|
|
155
|
+
* Get increment task count for a base task
|
|
156
|
+
* Returns the number of increment tasks created for a base task
|
|
157
|
+
*/
|
|
158
|
+
getIncrementTaskCount(baseTaskId) {
|
|
159
|
+
const sql = `SELECT COUNT(*) as count FROM tasks WHERE base_task_id = ?`;
|
|
160
|
+
const result = this.db.prepare(sql).get(baseTaskId);
|
|
161
|
+
return result.count;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get next increment index for a base task
|
|
165
|
+
* Returns the next increment index (1, 2, 3...)
|
|
166
|
+
*/
|
|
167
|
+
getNextIncrementIndex(baseTaskId) {
|
|
168
|
+
return this.getIncrementTaskCount(baseTaskId) + 1;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Find all increment tasks for a base task
|
|
172
|
+
* Returns all tasks that are increments of the given base task
|
|
173
|
+
*/
|
|
174
|
+
findIncrementTasks(baseTaskId) {
|
|
175
|
+
return this.findWhere({ base_task_id: baseTaskId });
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Find base task (original task without base_task_id)
|
|
179
|
+
* Returns the original task that this increment task is based on
|
|
180
|
+
*/
|
|
181
|
+
findBaseTask(taskId) {
|
|
182
|
+
const task = this.findById(taskId);
|
|
183
|
+
if (!task)
|
|
184
|
+
return undefined;
|
|
185
|
+
if (task.base_task_id) {
|
|
186
|
+
return this.findById(task.base_task_id);
|
|
187
|
+
}
|
|
188
|
+
return task;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get task chain (from original to latest increment)
|
|
192
|
+
* Returns the full chain of tasks from the original to the given task
|
|
193
|
+
*/
|
|
194
|
+
getTaskChain(taskId) {
|
|
195
|
+
const chain = [];
|
|
196
|
+
let currentTask = this.findById(taskId);
|
|
197
|
+
// First, go back to the original task
|
|
198
|
+
const ancestors = [];
|
|
199
|
+
while (currentTask && currentTask.base_task_id) {
|
|
200
|
+
ancestors.unshift(currentTask);
|
|
201
|
+
currentTask = this.findById(currentTask.base_task_id);
|
|
202
|
+
}
|
|
203
|
+
if (currentTask) {
|
|
204
|
+
ancestors.unshift(currentTask);
|
|
205
|
+
}
|
|
206
|
+
return ancestors;
|
|
207
|
+
}
|
|
208
|
+
// ============================================
|
|
209
|
+
// v1.1.7: Multi-Department Collaboration Methods
|
|
210
|
+
// ============================================
|
|
211
|
+
/**
|
|
212
|
+
* 获取当前忙碌的部门列表
|
|
213
|
+
* 忙碌定义:有 running 状态的任务正在执行
|
|
214
|
+
* Running status: pending, in_progress, stage_completed, pending_acceptance
|
|
215
|
+
*/
|
|
216
|
+
getBusyDepartments() {
|
|
217
|
+
const sql = `
|
|
218
|
+
SELECT DISTINCT department_id
|
|
219
|
+
FROM tasks
|
|
220
|
+
WHERE status IN ('pending', 'in_progress', 'stage_completed', 'pending_acceptance')
|
|
221
|
+
AND department_id IS NOT NULL
|
|
222
|
+
`;
|
|
223
|
+
const results = this.db.prepare(sql).all();
|
|
224
|
+
return results.map(r => r.department_id);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* 检查部门是否忙碌
|
|
228
|
+
*/
|
|
229
|
+
isDepartmentBusy(departmentId) {
|
|
230
|
+
const sql = `
|
|
231
|
+
SELECT COUNT(*) as count
|
|
232
|
+
FROM tasks
|
|
233
|
+
WHERE status IN ('pending', 'in_progress', 'stage_completed', 'pending_acceptance')
|
|
234
|
+
AND department_id = ?
|
|
235
|
+
`;
|
|
236
|
+
const result = this.db.prepare(sql).get(departmentId);
|
|
237
|
+
return result.count > 0;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* 获取部门当前运行中的任务
|
|
241
|
+
*/
|
|
242
|
+
getRunningTasksByDepartment(departmentId) {
|
|
243
|
+
const sql = `
|
|
244
|
+
SELECT * FROM tasks
|
|
245
|
+
WHERE status IN ('pending', 'in_progress', 'stage_completed', 'pending_acceptance')
|
|
246
|
+
AND department_id = ?
|
|
247
|
+
ORDER BY created_at ASC
|
|
248
|
+
`;
|
|
249
|
+
return this.db.prepare(sql).all(departmentId);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* 获取所有运行中的任务(v1.1.7 修改)
|
|
253
|
+
*/
|
|
254
|
+
getAllRunningTasks() {
|
|
255
|
+
const sql = `
|
|
256
|
+
SELECT * FROM tasks
|
|
257
|
+
WHERE status IN ('pending', 'in_progress', 'stage_completed', 'pending_acceptance')
|
|
258
|
+
ORDER BY created_at ASC
|
|
259
|
+
`;
|
|
260
|
+
return this.db.prepare(sql).all();
|
|
261
|
+
}
|
|
262
|
+
// ============================================
|
|
263
|
+
// v1.1.7: Task Stage Methods
|
|
264
|
+
// ============================================
|
|
265
|
+
/**
|
|
266
|
+
* 创建阶段记录
|
|
267
|
+
*/
|
|
268
|
+
createStage(data) {
|
|
269
|
+
const now = new Date().toISOString();
|
|
270
|
+
this.db.prepare(`
|
|
271
|
+
INSERT INTO task_stages (id, task_id, stage_name, department_id, manager_id, status, sequence, created_at)
|
|
272
|
+
VALUES (?, ?, ?, ?, ?, 'pending', ?, ?)
|
|
273
|
+
`).run(data.id, data.task_id, data.stage_name, data.department_id, data.manager_id, data.sequence, now);
|
|
274
|
+
return this.getStageById(data.id);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* 获取阶段记录
|
|
278
|
+
*/
|
|
279
|
+
getStageById(id) {
|
|
280
|
+
return this.db.prepare('SELECT * FROM task_stages WHERE id = ?').get(id);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* 获取任务的所有阶段
|
|
284
|
+
*/
|
|
285
|
+
getStagesByTask(taskId) {
|
|
286
|
+
return this.db.prepare('SELECT * FROM task_stages WHERE task_id = ? ORDER BY sequence ASC').all(taskId);
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* 获取当前执行阶段
|
|
290
|
+
*/
|
|
291
|
+
getCurrentStage(taskId) {
|
|
292
|
+
return this.db.prepare(`
|
|
293
|
+
SELECT * FROM task_stages
|
|
294
|
+
WHERE task_id = ? AND status = 'in_progress'
|
|
295
|
+
ORDER BY sequence ASC
|
|
296
|
+
LIMIT 1
|
|
297
|
+
`).get(taskId);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* 获取下一阶段
|
|
301
|
+
*/
|
|
302
|
+
getNextStage(taskId) {
|
|
303
|
+
// 找到第一个 pending 状态的阶段
|
|
304
|
+
return this.db.prepare(`
|
|
305
|
+
SELECT * FROM task_stages
|
|
306
|
+
WHERE task_id = ? AND status = 'pending'
|
|
307
|
+
ORDER BY sequence ASC
|
|
308
|
+
LIMIT 1
|
|
309
|
+
`).get(taskId);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* 更新阶段状态
|
|
313
|
+
*/
|
|
314
|
+
updateStageStatus(id, status) {
|
|
315
|
+
const now = new Date().toISOString();
|
|
316
|
+
if (status === 'in_progress') {
|
|
317
|
+
this.db.prepare(`
|
|
318
|
+
UPDATE task_stages SET status = ?, started_at = ? WHERE id = ?
|
|
319
|
+
`).run(status, now, id);
|
|
320
|
+
}
|
|
321
|
+
else if (status === 'completed') {
|
|
322
|
+
this.db.prepare(`
|
|
323
|
+
UPDATE task_stages SET status = ?, completed_at = ? WHERE id = ?
|
|
324
|
+
`).run(status, now, id);
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
this.db.prepare('UPDATE task_stages SET status = ? WHERE id = ?').run(status, id);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* 完成阶段(更新状态和成果)
|
|
332
|
+
*/
|
|
333
|
+
completeStage(id, outputSummary, handoverNote) {
|
|
334
|
+
const now = new Date().toISOString();
|
|
335
|
+
if (handoverNote) {
|
|
336
|
+
this.db.prepare(`
|
|
337
|
+
UPDATE task_stages
|
|
338
|
+
SET status = 'completed', output_summary = ?, handover_note = ?, completed_at = ?
|
|
339
|
+
WHERE id = ?
|
|
340
|
+
`).run(outputSummary, handoverNote, now, id);
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
this.db.prepare(`
|
|
344
|
+
UPDATE task_stages
|
|
345
|
+
SET status = 'completed', output_summary = ?, completed_at = ?
|
|
346
|
+
WHERE id = ?
|
|
347
|
+
`).run(outputSummary, now, id);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* 获取上一阶段
|
|
352
|
+
*/
|
|
353
|
+
getPreviousStage(taskId, currentSequence) {
|
|
354
|
+
return this.db.prepare(`
|
|
355
|
+
SELECT * FROM task_stages
|
|
356
|
+
WHERE task_id = ? AND sequence < ?
|
|
357
|
+
ORDER BY sequence DESC
|
|
358
|
+
LIMIT 1
|
|
359
|
+
`).get(taskId, currentSequence);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* 检查所有阶段是否完成
|
|
363
|
+
*/
|
|
364
|
+
areAllStagesCompleted(taskId) {
|
|
365
|
+
const result = this.db.prepare(`
|
|
366
|
+
SELECT COUNT(*) as count FROM task_stages
|
|
367
|
+
WHERE task_id = ? AND status != 'completed'
|
|
368
|
+
`).get(taskId);
|
|
369
|
+
return result.count === 0;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* 获取阶段数量
|
|
373
|
+
*/
|
|
374
|
+
getStageCount(taskId) {
|
|
375
|
+
const result = this.db.prepare('SELECT COUNT(*) as count FROM task_stages WHERE task_id = ?').get(taskId);
|
|
376
|
+
return result.count;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
exports.TaskRepository = TaskRepository;
|
|
380
|
+
exports.taskRepository = new TaskRepository();
|
|
381
|
+
//# sourceMappingURL=task.repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.repo.js","sourceRoot":"","sources":["../../../src/db/repositories/task.repo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 模板 Repository
|
|
3
|
+
*/
|
|
4
|
+
import { BaseRepository } from './base.repository';
|
|
5
|
+
import { Template, TemplateType } from '../../core/models/types';
|
|
6
|
+
export declare class TemplateRepository extends BaseRepository<Template> {
|
|
7
|
+
constructor();
|
|
8
|
+
/**
|
|
9
|
+
* 创建模板
|
|
10
|
+
*/
|
|
11
|
+
createTemplate(data: {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
type: TemplateType;
|
|
15
|
+
content: string;
|
|
16
|
+
is_preset?: number;
|
|
17
|
+
}): Template;
|
|
18
|
+
/**
|
|
19
|
+
* 更新模板
|
|
20
|
+
*/
|
|
21
|
+
updateTemplate(id: string, data: {
|
|
22
|
+
name?: string;
|
|
23
|
+
type?: TemplateType;
|
|
24
|
+
content?: string;
|
|
25
|
+
}): void;
|
|
26
|
+
/**
|
|
27
|
+
* 按类型获取模板
|
|
28
|
+
*/
|
|
29
|
+
findByType(type: TemplateType): Template[];
|
|
30
|
+
/**
|
|
31
|
+
* 获取所有预置模板
|
|
32
|
+
*/
|
|
33
|
+
findPreset(): Template[];
|
|
34
|
+
/**
|
|
35
|
+
* 检查是否为预置数据
|
|
36
|
+
*/
|
|
37
|
+
isPreset(id: string): boolean;
|
|
38
|
+
}
|
|
39
|
+
export declare const templateRepository: TemplateRepository;
|
|
40
|
+
//# sourceMappingURL=template.repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.repo.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/template.repo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEjE,qBAAa,kBAAmB,SAAQ,cAAc,CAAC,QAAQ,CAAC;;IAK9D;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,YAAY,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,QAAQ;IAgBZ;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,YAAY,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI;IAYR;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,EAAE;IAI1C;;OAEG;IACH,UAAU,IAAI,QAAQ,EAAE;IAIxB;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAI9B;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 模板 Repository
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.templateRepository = exports.TemplateRepository = void 0;
|
|
7
|
+
const base_repository_1 = require("./base.repository");
|
|
8
|
+
class TemplateRepository extends base_repository_1.BaseRepository {
|
|
9
|
+
constructor() {
|
|
10
|
+
super('templates', 'id');
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 创建模板
|
|
14
|
+
*/
|
|
15
|
+
createTemplate(data) {
|
|
16
|
+
const now = new Date().toISOString();
|
|
17
|
+
this.insert({
|
|
18
|
+
id: data.id,
|
|
19
|
+
name: data.name,
|
|
20
|
+
type: data.type,
|
|
21
|
+
content: data.content,
|
|
22
|
+
is_preset: data.is_preset ?? 1,
|
|
23
|
+
created_at: now,
|
|
24
|
+
updated_at: now
|
|
25
|
+
});
|
|
26
|
+
return this.findById(data.id);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 更新模板
|
|
30
|
+
*/
|
|
31
|
+
updateTemplate(id, data) {
|
|
32
|
+
const updateData = {};
|
|
33
|
+
if (data.name !== undefined)
|
|
34
|
+
updateData.name = data.name;
|
|
35
|
+
if (data.type !== undefined)
|
|
36
|
+
updateData.type = data.type;
|
|
37
|
+
if (data.content !== undefined)
|
|
38
|
+
updateData.content = data.content;
|
|
39
|
+
if (Object.keys(updateData).length > 0) {
|
|
40
|
+
updateData.updated_at = new Date().toISOString();
|
|
41
|
+
this.update(id, updateData);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 按类型获取模板
|
|
46
|
+
*/
|
|
47
|
+
findByType(type) {
|
|
48
|
+
return this.findWhere({ type });
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 获取所有预置模板
|
|
52
|
+
*/
|
|
53
|
+
findPreset() {
|
|
54
|
+
return this.findWhere({ is_preset: 1 });
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 检查是否为预置数据
|
|
58
|
+
*/
|
|
59
|
+
isPreset(id) {
|
|
60
|
+
const template = this.findById(id);
|
|
61
|
+
return template ? template.is_preset === 1 : false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.TemplateRepository = TemplateRepository;
|
|
65
|
+
exports.templateRepository = new TemplateRepository();
|
|
66
|
+
//# sourceMappingURL=template.repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.repo.js","sourceRoot":"","sources":["../../../src/db/repositories/template.repo.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uDAAmD;AAGnD,MAAa,kBAAmB,SAAQ,gCAAwB;IAC9D;QACE,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAMd;QACC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC;YACV,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;YAC9B,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,EAAU,EAAE,IAI1B;QACC,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAElE,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,UAAU,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAkB;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,EAAU;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,CAAC;CACF;AAtED,gDAsEC;AAEY,QAAA,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
|