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.
Files changed (350) hide show
  1. package/README.md +136 -0
  2. package/dist/bin/team-manager.d.ts +6 -0
  3. package/dist/bin/team-manager.d.ts.map +1 -0
  4. package/dist/bin/team-manager.js +36 -0
  5. package/dist/bin/team-manager.js.map +1 -0
  6. package/dist/bin/team-setup.d.ts +7 -0
  7. package/dist/bin/team-setup.d.ts.map +1 -0
  8. package/dist/bin/team-setup.js +66 -0
  9. package/dist/bin/team-setup.js.map +1 -0
  10. package/dist/bin/team-uninstall.d.ts +6 -0
  11. package/dist/bin/team-uninstall.d.ts.map +1 -0
  12. package/dist/bin/team-uninstall.js +91 -0
  13. package/dist/bin/team-uninstall.js.map +1 -0
  14. package/dist/cli/commands/agent.command.d.ts +43 -0
  15. package/dist/cli/commands/agent.command.d.ts.map +1 -0
  16. package/dist/cli/commands/agent.command.js +223 -0
  17. package/dist/cli/commands/agent.command.js.map +1 -0
  18. package/dist/cli/commands/checklist.command.d.ts +35 -0
  19. package/dist/cli/commands/checklist.command.d.ts.map +1 -0
  20. package/dist/cli/commands/checklist.command.js +77 -0
  21. package/dist/cli/commands/checklist.command.js.map +1 -0
  22. package/dist/cli/commands/dept.command.d.ts +32 -0
  23. package/dist/cli/commands/dept.command.d.ts.map +1 -0
  24. package/dist/cli/commands/dept.command.js +92 -0
  25. package/dist/cli/commands/dept.command.js.map +1 -0
  26. package/dist/cli/commands/document.command.d.ts +37 -0
  27. package/dist/cli/commands/document.command.d.ts.map +1 -0
  28. package/dist/cli/commands/document.command.js +146 -0
  29. package/dist/cli/commands/document.command.js.map +1 -0
  30. package/dist/cli/commands/domain.command.d.ts +36 -0
  31. package/dist/cli/commands/domain.command.d.ts.map +1 -0
  32. package/dist/cli/commands/domain.command.js +97 -0
  33. package/dist/cli/commands/domain.command.js.map +1 -0
  34. package/dist/cli/commands/feishu.command.d.ts +63 -0
  35. package/dist/cli/commands/feishu.command.d.ts.map +1 -0
  36. package/dist/cli/commands/feishu.command.js +433 -0
  37. package/dist/cli/commands/feishu.command.js.map +1 -0
  38. package/dist/cli/commands/job.command.d.ts +39 -0
  39. package/dist/cli/commands/job.command.d.ts.map +1 -0
  40. package/dist/cli/commands/job.command.js +168 -0
  41. package/dist/cli/commands/job.command.js.map +1 -0
  42. package/dist/cli/commands/license.command.d.ts +22 -0
  43. package/dist/cli/commands/license.command.d.ts.map +1 -0
  44. package/dist/cli/commands/license.command.js +68 -0
  45. package/dist/cli/commands/license.command.js.map +1 -0
  46. package/dist/cli/commands/message-failure.command.d.ts +44 -0
  47. package/dist/cli/commands/message-failure.command.d.ts.map +1 -0
  48. package/dist/cli/commands/message-failure.command.js +137 -0
  49. package/dist/cli/commands/message-failure.command.js.map +1 -0
  50. package/dist/cli/commands/message.command.d.ts +47 -0
  51. package/dist/cli/commands/message.command.d.ts.map +1 -0
  52. package/dist/cli/commands/message.command.js +129 -0
  53. package/dist/cli/commands/message.command.js.map +1 -0
  54. package/dist/cli/commands/node.command.d.ts +76 -0
  55. package/dist/cli/commands/node.command.d.ts.map +1 -0
  56. package/dist/cli/commands/node.command.js +251 -0
  57. package/dist/cli/commands/node.command.js.map +1 -0
  58. package/dist/cli/commands/role-flow.command.d.ts +12 -0
  59. package/dist/cli/commands/role-flow.command.d.ts.map +1 -0
  60. package/dist/cli/commands/role-flow.command.js +54 -0
  61. package/dist/cli/commands/role-flow.command.js.map +1 -0
  62. package/dist/cli/commands/skill-pack.command.d.ts +41 -0
  63. package/dist/cli/commands/skill-pack.command.d.ts.map +1 -0
  64. package/dist/cli/commands/skill-pack.command.js +137 -0
  65. package/dist/cli/commands/skill-pack.command.js.map +1 -0
  66. package/dist/cli/commands/status.command.d.ts +8 -0
  67. package/dist/cli/commands/status.command.d.ts.map +1 -0
  68. package/dist/cli/commands/status.command.js +61 -0
  69. package/dist/cli/commands/status.command.js.map +1 -0
  70. package/dist/cli/commands/task.command.d.ts +105 -0
  71. package/dist/cli/commands/task.command.d.ts.map +1 -0
  72. package/dist/cli/commands/task.command.js +402 -0
  73. package/dist/cli/commands/task.command.js.map +1 -0
  74. package/dist/cli/commands/user.command.d.ts +43 -0
  75. package/dist/cli/commands/user.command.d.ts.map +1 -0
  76. package/dist/cli/commands/user.command.js +134 -0
  77. package/dist/cli/commands/user.command.js.map +1 -0
  78. package/dist/cli/index.d.ts +7 -0
  79. package/dist/cli/index.d.ts.map +1 -0
  80. package/dist/cli/index.js +863 -0
  81. package/dist/cli/index.js.map +1 -0
  82. package/dist/cli/tui/index.d.ts +45 -0
  83. package/dist/cli/tui/index.d.ts.map +1 -0
  84. package/dist/cli/tui/index.js +470 -0
  85. package/dist/cli/tui/index.js.map +1 -0
  86. package/dist/cli/tui/menus/agent-manage.menu.d.ts +8 -0
  87. package/dist/cli/tui/menus/agent-manage.menu.d.ts.map +1 -0
  88. package/dist/cli/tui/menus/agent-manage.menu.js +614 -0
  89. package/dist/cli/tui/menus/agent-manage.menu.js.map +1 -0
  90. package/dist/cli/tui/menus/dept-manage.menu.d.ts +8 -0
  91. package/dist/cli/tui/menus/dept-manage.menu.d.ts.map +1 -0
  92. package/dist/cli/tui/menus/dept-manage.menu.js +299 -0
  93. package/dist/cli/tui/menus/dept-manage.menu.js.map +1 -0
  94. package/dist/cli/tui/menus/domain-manage.menu.d.ts +8 -0
  95. package/dist/cli/tui/menus/domain-manage.menu.d.ts.map +1 -0
  96. package/dist/cli/tui/menus/domain-manage.menu.js +208 -0
  97. package/dist/cli/tui/menus/domain-manage.menu.js.map +1 -0
  98. package/dist/cli/tui/menus/feishu.menu.d.ts +8 -0
  99. package/dist/cli/tui/menus/feishu.menu.d.ts.map +1 -0
  100. package/dist/cli/tui/menus/feishu.menu.js +1727 -0
  101. package/dist/cli/tui/menus/feishu.menu.js.map +1 -0
  102. package/dist/cli/tui/menus/job-manage.menu.d.ts +16 -0
  103. package/dist/cli/tui/menus/job-manage.menu.d.ts.map +1 -0
  104. package/dist/cli/tui/menus/job-manage.menu.js +734 -0
  105. package/dist/cli/tui/menus/job-manage.menu.js.map +1 -0
  106. package/dist/cli/tui/menus/license.menu.d.ts +12 -0
  107. package/dist/cli/tui/menus/license.menu.d.ts.map +1 -0
  108. package/dist/cli/tui/menus/license.menu.js +164 -0
  109. package/dist/cli/tui/menus/license.menu.js.map +1 -0
  110. package/dist/cli/tui/menus/main.menu.d.ts +10 -0
  111. package/dist/cli/tui/menus/main.menu.d.ts.map +1 -0
  112. package/dist/cli/tui/menus/main.menu.js +94 -0
  113. package/dist/cli/tui/menus/main.menu.js.map +1 -0
  114. package/dist/cli/tui/menus/reset.menu.d.ts +10 -0
  115. package/dist/cli/tui/menus/reset.menu.d.ts.map +1 -0
  116. package/dist/cli/tui/menus/reset.menu.js +767 -0
  117. package/dist/cli/tui/menus/reset.menu.js.map +1 -0
  118. package/dist/cli/tui/menus/status.menu.d.ts +8 -0
  119. package/dist/cli/tui/menus/status.menu.d.ts.map +1 -0
  120. package/dist/cli/tui/menus/status.menu.js +123 -0
  121. package/dist/cli/tui/menus/status.menu.js.map +1 -0
  122. package/dist/cli/tui/menus/task-manage.menu.d.ts +11 -0
  123. package/dist/cli/tui/menus/task-manage.menu.d.ts.map +1 -0
  124. package/dist/cli/tui/menus/task-manage.menu.js +129 -0
  125. package/dist/cli/tui/menus/task-manage.menu.js.map +1 -0
  126. package/dist/cli/tui/menus/team-create.menu.d.ts +8 -0
  127. package/dist/cli/tui/menus/team-create.menu.d.ts.map +1 -0
  128. package/dist/cli/tui/menus/team-create.menu.js +353 -0
  129. package/dist/cli/tui/menus/team-create.menu.js.map +1 -0
  130. package/dist/config.d.ts +9 -0
  131. package/dist/config.d.ts.map +1 -0
  132. package/dist/config.js +74 -0
  133. package/dist/config.js.map +1 -0
  134. package/dist/core/auth/index.d.ts +6 -0
  135. package/dist/core/auth/index.d.ts.map +1 -0
  136. package/dist/core/auth/index.js +22 -0
  137. package/dist/core/auth/index.js.map +1 -0
  138. package/dist/core/auth/middleware.d.ts +73 -0
  139. package/dist/core/auth/middleware.d.ts.map +1 -0
  140. package/dist/core/auth/middleware.js +456 -0
  141. package/dist/core/auth/middleware.js.map +1 -0
  142. package/dist/core/auth/storage.d.ts +38 -0
  143. package/dist/core/auth/storage.d.ts.map +1 -0
  144. package/dist/core/auth/storage.js +280 -0
  145. package/dist/core/auth/storage.js.map +1 -0
  146. package/dist/core/keys/public.pem +9 -0
  147. package/dist/core/models/types.d.ts +426 -0
  148. package/dist/core/models/types.d.ts.map +1 -0
  149. package/dist/core/models/types.js +9 -0
  150. package/dist/core/models/types.js.map +1 -0
  151. package/dist/core/services/agent-template.service.d.ts +49 -0
  152. package/dist/core/services/agent-template.service.d.ts.map +1 -0
  153. package/dist/core/services/agent-template.service.js +88 -0
  154. package/dist/core/services/agent-template.service.js.map +1 -0
  155. package/dist/core/services/agent.service.d.ts +120 -0
  156. package/dist/core/services/agent.service.d.ts.map +1 -0
  157. package/dist/core/services/agent.service.js +381 -0
  158. package/dist/core/services/agent.service.js.map +1 -0
  159. package/dist/core/services/auth-profiles.service.d.ts +93 -0
  160. package/dist/core/services/auth-profiles.service.d.ts.map +1 -0
  161. package/dist/core/services/auth-profiles.service.js +220 -0
  162. package/dist/core/services/auth-profiles.service.js.map +1 -0
  163. package/dist/core/services/checklist.service.d.ts +58 -0
  164. package/dist/core/services/checklist.service.d.ts.map +1 -0
  165. package/dist/core/services/checklist.service.js +240 -0
  166. package/dist/core/services/checklist.service.js.map +1 -0
  167. package/dist/core/services/config-tracker.service.d.ts +119 -0
  168. package/dist/core/services/config-tracker.service.d.ts.map +1 -0
  169. package/dist/core/services/config-tracker.service.js +1093 -0
  170. package/dist/core/services/config-tracker.service.js.map +1 -0
  171. package/dist/core/services/crypto.service.d.ts +102 -0
  172. package/dist/core/services/crypto.service.d.ts.map +1 -0
  173. package/dist/core/services/crypto.service.js +377 -0
  174. package/dist/core/services/crypto.service.js.map +1 -0
  175. package/dist/core/services/dept.service.d.ts +92 -0
  176. package/dist/core/services/dept.service.d.ts.map +1 -0
  177. package/dist/core/services/dept.service.js +260 -0
  178. package/dist/core/services/dept.service.js.map +1 -0
  179. package/dist/core/services/document.service.d.ts +131 -0
  180. package/dist/core/services/document.service.d.ts.map +1 -0
  181. package/dist/core/services/document.service.js +368 -0
  182. package/dist/core/services/document.service.js.map +1 -0
  183. package/dist/core/services/domain.service.d.ts +50 -0
  184. package/dist/core/services/domain.service.d.ts.map +1 -0
  185. package/dist/core/services/domain.service.js +98 -0
  186. package/dist/core/services/domain.service.js.map +1 -0
  187. package/dist/core/services/feishu.service.d.ts +124 -0
  188. package/dist/core/services/feishu.service.d.ts.map +1 -0
  189. package/dist/core/services/feishu.service.js +165 -0
  190. package/dist/core/services/feishu.service.js.map +1 -0
  191. package/dist/core/services/index.d.ts +27 -0
  192. package/dist/core/services/index.d.ts.map +1 -0
  193. package/dist/core/services/index.js +89 -0
  194. package/dist/core/services/index.js.map +1 -0
  195. package/dist/core/services/job.service.d.ts +60 -0
  196. package/dist/core/services/job.service.d.ts.map +1 -0
  197. package/dist/core/services/job.service.js +190 -0
  198. package/dist/core/services/job.service.js.map +1 -0
  199. package/dist/core/services/log.service.d.ts +111 -0
  200. package/dist/core/services/log.service.d.ts.map +1 -0
  201. package/dist/core/services/log.service.js +237 -0
  202. package/dist/core/services/log.service.js.map +1 -0
  203. package/dist/core/services/message-failure.service.d.ts +65 -0
  204. package/dist/core/services/message-failure.service.d.ts.map +1 -0
  205. package/dist/core/services/message-failure.service.js +112 -0
  206. package/dist/core/services/message-failure.service.js.map +1 -0
  207. package/dist/core/services/message.service.d.ts +122 -0
  208. package/dist/core/services/message.service.d.ts.map +1 -0
  209. package/dist/core/services/message.service.js +374 -0
  210. package/dist/core/services/message.service.js.map +1 -0
  211. package/dist/core/services/node.service.d.ts +150 -0
  212. package/dist/core/services/node.service.d.ts.map +1 -0
  213. package/dist/core/services/node.service.js +257 -0
  214. package/dist/core/services/node.service.js.map +1 -0
  215. package/dist/core/services/openclaw-config.service.d.ts +187 -0
  216. package/dist/core/services/openclaw-config.service.d.ts.map +1 -0
  217. package/dist/core/services/openclaw-config.service.js +268 -0
  218. package/dist/core/services/openclaw-config.service.js.map +1 -0
  219. package/dist/core/services/preset-loader.service.d.ts +80 -0
  220. package/dist/core/services/preset-loader.service.d.ts.map +1 -0
  221. package/dist/core/services/preset-loader.service.js +379 -0
  222. package/dist/core/services/preset-loader.service.js.map +1 -0
  223. package/dist/core/services/role-flow.service.d.ts +21 -0
  224. package/dist/core/services/role-flow.service.d.ts.map +1 -0
  225. package/dist/core/services/role-flow.service.js +47 -0
  226. package/dist/core/services/role-flow.service.js.map +1 -0
  227. package/dist/core/services/setup.service.d.ts +46 -0
  228. package/dist/core/services/setup.service.d.ts.map +1 -0
  229. package/dist/core/services/setup.service.js +336 -0
  230. package/dist/core/services/setup.service.js.map +1 -0
  231. package/dist/core/services/skill-pack.service.d.ts +56 -0
  232. package/dist/core/services/skill-pack.service.d.ts.map +1 -0
  233. package/dist/core/services/skill-pack.service.js +113 -0
  234. package/dist/core/services/skill-pack.service.js.map +1 -0
  235. package/dist/core/services/task.service.d.ts +177 -0
  236. package/dist/core/services/task.service.d.ts.map +1 -0
  237. package/dist/core/services/task.service.js +397 -0
  238. package/dist/core/services/task.service.js.map +1 -0
  239. package/dist/core/services/template.service.d.ts +51 -0
  240. package/dist/core/services/template.service.d.ts.map +1 -0
  241. package/dist/core/services/template.service.js +88 -0
  242. package/dist/core/services/template.service.js.map +1 -0
  243. package/dist/core/services/user.service.d.ts +50 -0
  244. package/dist/core/services/user.service.d.ts.map +1 -0
  245. package/dist/core/services/user.service.js +111 -0
  246. package/dist/core/services/user.service.js.map +1 -0
  247. package/dist/core/utils/agent-guide-generator.d.ts +38 -0
  248. package/dist/core/utils/agent-guide-generator.d.ts.map +1 -0
  249. package/dist/core/utils/agent-guide-generator.js +187 -0
  250. package/dist/core/utils/agent-guide-generator.js.map +1 -0
  251. package/dist/core/utils/credentials-cleanup.d.ts +81 -0
  252. package/dist/core/utils/credentials-cleanup.d.ts.map +1 -0
  253. package/dist/core/utils/credentials-cleanup.js +256 -0
  254. package/dist/core/utils/credentials-cleanup.js.map +1 -0
  255. package/dist/core/utils/index.d.ts +215 -0
  256. package/dist/core/utils/index.d.ts.map +1 -0
  257. package/dist/core/utils/index.js +462 -0
  258. package/dist/core/utils/index.js.map +1 -0
  259. package/dist/core/utils/openclaw-helper.d.ts +250 -0
  260. package/dist/core/utils/openclaw-helper.d.ts.map +1 -0
  261. package/dist/core/utils/openclaw-helper.js +1629 -0
  262. package/dist/core/utils/openclaw-helper.js.map +1 -0
  263. package/dist/core/utils/template-generator.d.ts +67 -0
  264. package/dist/core/utils/template-generator.d.ts.map +1 -0
  265. package/dist/core/utils/template-generator.js +170 -0
  266. package/dist/core/utils/template-generator.js.map +1 -0
  267. package/dist/db/index.d.ts +54 -0
  268. package/dist/db/index.d.ts.map +1 -0
  269. package/dist/db/index.js +403 -0
  270. package/dist/db/index.js.map +1 -0
  271. package/dist/db/repositories/agent-template.repo.d.ts +47 -0
  272. package/dist/db/repositories/agent-template.repo.d.ts.map +1 -0
  273. package/dist/db/repositories/agent-template.repo.js +108 -0
  274. package/dist/db/repositories/agent-template.repo.js.map +1 -0
  275. package/dist/db/repositories/agent.repo.d.ts +64 -0
  276. package/dist/db/repositories/agent.repo.d.ts.map +1 -0
  277. package/dist/db/repositories/agent.repo.js +103 -0
  278. package/dist/db/repositories/agent.repo.js.map +1 -0
  279. package/dist/db/repositories/base.repository.d.ts +51 -0
  280. package/dist/db/repositories/base.repository.d.ts.map +1 -0
  281. package/dist/db/repositories/base.repository.js +107 -0
  282. package/dist/db/repositories/base.repository.js.map +1 -0
  283. package/dist/db/repositories/company.repo.d.ts +18 -0
  284. package/dist/db/repositories/company.repo.d.ts.map +1 -0
  285. package/dist/db/repositories/company.repo.js +33 -0
  286. package/dist/db/repositories/company.repo.js.map +1 -0
  287. package/dist/db/repositories/config-change.repo.d.ts +65 -0
  288. package/dist/db/repositories/config-change.repo.d.ts.map +1 -0
  289. package/dist/db/repositories/config-change.repo.js +119 -0
  290. package/dist/db/repositories/config-change.repo.js.map +1 -0
  291. package/dist/db/repositories/dept.repo.d.ts +37 -0
  292. package/dist/db/repositories/dept.repo.d.ts.map +1 -0
  293. package/dist/db/repositories/dept.repo.js +66 -0
  294. package/dist/db/repositories/dept.repo.js.map +1 -0
  295. package/dist/db/repositories/document.repo.d.ts +25 -0
  296. package/dist/db/repositories/document.repo.d.ts.map +1 -0
  297. package/dist/db/repositories/document.repo.js +51 -0
  298. package/dist/db/repositories/document.repo.js.map +1 -0
  299. package/dist/db/repositories/domain.repo.d.ts +42 -0
  300. package/dist/db/repositories/domain.repo.d.ts.map +1 -0
  301. package/dist/db/repositories/domain.repo.js +79 -0
  302. package/dist/db/repositories/domain.repo.js.map +1 -0
  303. package/dist/db/repositories/index.d.ts +24 -0
  304. package/dist/db/repositories/index.d.ts.map +1 -0
  305. package/dist/db/repositories/index.js +81 -0
  306. package/dist/db/repositories/index.js.map +1 -0
  307. package/dist/db/repositories/init-session.repo.d.ts +38 -0
  308. package/dist/db/repositories/init-session.repo.d.ts.map +1 -0
  309. package/dist/db/repositories/init-session.repo.js +112 -0
  310. package/dist/db/repositories/init-session.repo.js.map +1 -0
  311. package/dist/db/repositories/job.repo.d.ts +54 -0
  312. package/dist/db/repositories/job.repo.d.ts.map +1 -0
  313. package/dist/db/repositories/job.repo.js +119 -0
  314. package/dist/db/repositories/job.repo.js.map +1 -0
  315. package/dist/db/repositories/message-failure.repo.d.ts +92 -0
  316. package/dist/db/repositories/message-failure.repo.d.ts.map +1 -0
  317. package/dist/db/repositories/message-failure.repo.js +141 -0
  318. package/dist/db/repositories/message-failure.repo.js.map +1 -0
  319. package/dist/db/repositories/message-log.repo.d.ts +36 -0
  320. package/dist/db/repositories/message-log.repo.d.ts.map +1 -0
  321. package/dist/db/repositories/message-log.repo.js +64 -0
  322. package/dist/db/repositories/message-log.repo.js.map +1 -0
  323. package/dist/db/repositories/node.repo.d.ts +107 -0
  324. package/dist/db/repositories/node.repo.d.ts.map +1 -0
  325. package/dist/db/repositories/node.repo.js +276 -0
  326. package/dist/db/repositories/node.repo.js.map +1 -0
  327. package/dist/db/repositories/role-flow.repo.d.ts +43 -0
  328. package/dist/db/repositories/role-flow.repo.d.ts.map +1 -0
  329. package/dist/db/repositories/role-flow.repo.js +83 -0
  330. package/dist/db/repositories/role-flow.repo.js.map +1 -0
  331. package/dist/db/repositories/skill-pack.repo.d.ts +45 -0
  332. package/dist/db/repositories/skill-pack.repo.d.ts.map +1 -0
  333. package/dist/db/repositories/skill-pack.repo.js +149 -0
  334. package/dist/db/repositories/skill-pack.repo.js.map +1 -0
  335. package/dist/db/repositories/task.repo.d.ts +168 -0
  336. package/dist/db/repositories/task.repo.d.ts.map +1 -0
  337. package/dist/db/repositories/task.repo.js +381 -0
  338. package/dist/db/repositories/task.repo.js.map +1 -0
  339. package/dist/db/repositories/template.repo.d.ts +40 -0
  340. package/dist/db/repositories/template.repo.d.ts.map +1 -0
  341. package/dist/db/repositories/template.repo.js +66 -0
  342. package/dist/db/repositories/template.repo.js.map +1 -0
  343. package/dist/db/repositories/user.repo.d.ts +46 -0
  344. package/dist/db/repositories/user.repo.d.ts.map +1 -0
  345. package/dist/db/repositories/user.repo.js +75 -0
  346. package/dist/db/repositories/user.repo.js.map +1 -0
  347. package/dist/db/schema.sql +364 -0
  348. package/package.json +90 -0
  349. package/resources/preset-data-hash.enc +1 -0
  350. 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"}