llm-content-creator 0.1.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 (438) hide show
  1. package/README.md +309 -0
  2. package/dist/application/workflow/SyncExecutor.d.ts +75 -0
  3. package/dist/application/workflow/SyncExecutor.d.ts.map +1 -0
  4. package/dist/application/workflow/SyncExecutor.js +370 -0
  5. package/dist/application/workflow/SyncExecutor.js.map +1 -0
  6. package/dist/application/workflow/types.d.ts +46 -0
  7. package/dist/application/workflow/types.d.ts.map +1 -0
  8. package/dist/application/workflow/types.js +7 -0
  9. package/dist/application/workflow/types.js.map +1 -0
  10. package/dist/config/index.d.ts +173 -0
  11. package/dist/config/index.d.ts.map +1 -0
  12. package/dist/config/index.js +288 -0
  13. package/dist/config/index.js.map +1 -0
  14. package/dist/domain/entities/QualityCheck.d.ts +181 -0
  15. package/dist/domain/entities/QualityCheck.d.ts.map +1 -0
  16. package/dist/domain/entities/QualityCheck.js +39 -0
  17. package/dist/domain/entities/QualityCheck.js.map +1 -0
  18. package/dist/domain/entities/Result.d.ts +103 -0
  19. package/dist/domain/entities/Result.d.ts.map +1 -0
  20. package/dist/domain/entities/Result.js +15 -0
  21. package/dist/domain/entities/Result.js.map +1 -0
  22. package/dist/domain/entities/Task.d.ts +130 -0
  23. package/dist/domain/entities/Task.d.ts.map +1 -0
  24. package/dist/domain/entities/Task.js +64 -0
  25. package/dist/domain/entities/Task.js.map +1 -0
  26. package/dist/domain/entities/TaskStep.d.ts +160 -0
  27. package/dist/domain/entities/TaskStep.d.ts.map +1 -0
  28. package/dist/domain/entities/TaskStep.js +30 -0
  29. package/dist/domain/entities/TaskStep.js.map +1 -0
  30. package/dist/domain/entities/TokenUsage.d.ts +70 -0
  31. package/dist/domain/entities/TokenUsage.d.ts.map +1 -0
  32. package/dist/domain/entities/TokenUsage.js +42 -0
  33. package/dist/domain/entities/TokenUsage.js.map +1 -0
  34. package/dist/domain/entities/index.d.ts +11 -0
  35. package/dist/domain/entities/index.d.ts.map +1 -0
  36. package/dist/domain/entities/index.js +16 -0
  37. package/dist/domain/entities/index.js.map +1 -0
  38. package/dist/domain/repositories/QualityCheckRepository.d.ts +49 -0
  39. package/dist/domain/repositories/QualityCheckRepository.d.ts.map +1 -0
  40. package/dist/domain/repositories/QualityCheckRepository.js +5 -0
  41. package/dist/domain/repositories/QualityCheckRepository.js.map +1 -0
  42. package/dist/domain/repositories/ResultRepository.d.ts +43 -0
  43. package/dist/domain/repositories/ResultRepository.d.ts.map +1 -0
  44. package/dist/domain/repositories/ResultRepository.js +5 -0
  45. package/dist/domain/repositories/ResultRepository.js.map +1 -0
  46. package/dist/domain/repositories/TaskRepository.d.ts +240 -0
  47. package/dist/domain/repositories/TaskRepository.d.ts.map +1 -0
  48. package/dist/domain/repositories/TaskRepository.js +7 -0
  49. package/dist/domain/repositories/TaskRepository.js.map +1 -0
  50. package/dist/domain/workflow/CheckpointManager.d.ts +94 -0
  51. package/dist/domain/workflow/CheckpointManager.d.ts.map +1 -0
  52. package/dist/domain/workflow/CheckpointManager.js +224 -0
  53. package/dist/domain/workflow/CheckpointManager.js.map +1 -0
  54. package/dist/domain/workflow/ContentCreatorGraph.d.ts +17 -0
  55. package/dist/domain/workflow/ContentCreatorGraph.d.ts.map +1 -0
  56. package/dist/domain/workflow/ContentCreatorGraph.js +381 -0
  57. package/dist/domain/workflow/ContentCreatorGraph.js.map +1 -0
  58. package/dist/domain/workflow/State.d.ts +172 -0
  59. package/dist/domain/workflow/State.d.ts.map +1 -0
  60. package/dist/domain/workflow/State.js +184 -0
  61. package/dist/domain/workflow/State.js.map +1 -0
  62. package/dist/domain/workflow/index.d.ts +11 -0
  63. package/dist/domain/workflow/index.d.ts.map +1 -0
  64. package/dist/domain/workflow/index.js +15 -0
  65. package/dist/domain/workflow/index.js.map +1 -0
  66. package/dist/domain/workflow/nodes/BaseNode.d.ts +134 -0
  67. package/dist/domain/workflow/nodes/BaseNode.d.ts.map +1 -0
  68. package/dist/domain/workflow/nodes/BaseNode.js +253 -0
  69. package/dist/domain/workflow/nodes/BaseNode.js.map +1 -0
  70. package/dist/domain/workflow/nodes/CheckImageNode.d.ts +43 -0
  71. package/dist/domain/workflow/nodes/CheckImageNode.d.ts.map +1 -0
  72. package/dist/domain/workflow/nodes/CheckImageNode.js +254 -0
  73. package/dist/domain/workflow/nodes/CheckImageNode.js.map +1 -0
  74. package/dist/domain/workflow/nodes/CheckTextNode.d.ts +66 -0
  75. package/dist/domain/workflow/nodes/CheckTextNode.d.ts.map +1 -0
  76. package/dist/domain/workflow/nodes/CheckTextNode.js +530 -0
  77. package/dist/domain/workflow/nodes/CheckTextNode.js.map +1 -0
  78. package/dist/domain/workflow/nodes/GenerateImageNode.d.ts +44 -0
  79. package/dist/domain/workflow/nodes/GenerateImageNode.d.ts.map +1 -0
  80. package/dist/domain/workflow/nodes/GenerateImageNode.js +272 -0
  81. package/dist/domain/workflow/nodes/GenerateImageNode.js.map +1 -0
  82. package/dist/domain/workflow/nodes/OrganizeNode.d.ts +49 -0
  83. package/dist/domain/workflow/nodes/OrganizeNode.d.ts.map +1 -0
  84. package/dist/domain/workflow/nodes/OrganizeNode.js +241 -0
  85. package/dist/domain/workflow/nodes/OrganizeNode.js.map +1 -0
  86. package/dist/domain/workflow/nodes/SearchNode.d.ts +48 -0
  87. package/dist/domain/workflow/nodes/SearchNode.d.ts.map +1 -0
  88. package/dist/domain/workflow/nodes/SearchNode.js +151 -0
  89. package/dist/domain/workflow/nodes/SearchNode.js.map +1 -0
  90. package/dist/domain/workflow/nodes/WriteNode.d.ts +68 -0
  91. package/dist/domain/workflow/nodes/WriteNode.d.ts.map +1 -0
  92. package/dist/domain/workflow/nodes/WriteNode.js +431 -0
  93. package/dist/domain/workflow/nodes/WriteNode.js.map +1 -0
  94. package/dist/domain/workflow/nodes/config/index.js +287 -0
  95. package/dist/domain/workflow/nodes/domain/entities/Task.js +68 -0
  96. package/dist/domain/workflow/nodes/domain/workflow/State.js +200 -0
  97. package/dist/domain/workflow/nodes/domain/workflow/nodes/BaseNode.js +328 -0
  98. package/dist/domain/workflow/nodes/domain/workflow/nodes/CheckTextNode.js +500 -0
  99. package/dist/domain/workflow/nodes/index.d.ts +13 -0
  100. package/dist/domain/workflow/nodes/index.d.ts.map +1 -0
  101. package/dist/domain/workflow/nodes/index.js +13 -0
  102. package/dist/domain/workflow/nodes/index.js.map +1 -0
  103. package/dist/domain/workflow/nodes/infrastructure/logging/logger.js +275 -0
  104. package/dist/domain/workflow/nodes/services/llm/EnhancedLLMService.js +559 -0
  105. package/dist/index.d.ts +24 -0
  106. package/dist/index.d.ts.map +1 -0
  107. package/dist/index.js +34 -0
  108. package/dist/index.js.map +1 -0
  109. package/dist/infrastructure/cache/CacheService.d.ts +139 -0
  110. package/dist/infrastructure/cache/CacheService.d.ts.map +1 -0
  111. package/dist/infrastructure/cache/CacheService.js +419 -0
  112. package/dist/infrastructure/cache/CacheService.js.map +1 -0
  113. package/dist/infrastructure/cache/index.d.ts +5 -0
  114. package/dist/infrastructure/cache/index.d.ts.map +1 -0
  115. package/dist/infrastructure/cache/index.js +6 -0
  116. package/dist/infrastructure/cache/index.js.map +1 -0
  117. package/dist/infrastructure/database/BaseRepository.d.ts +98 -0
  118. package/dist/infrastructure/database/BaseRepository.d.ts.map +1 -0
  119. package/dist/infrastructure/database/BaseRepository.js +178 -0
  120. package/dist/infrastructure/database/BaseRepository.js.map +1 -0
  121. package/dist/infrastructure/database/MemoryTaskRepository.d.ts +77 -0
  122. package/dist/infrastructure/database/MemoryTaskRepository.d.ts.map +1 -0
  123. package/dist/infrastructure/database/MemoryTaskRepository.js +309 -0
  124. package/dist/infrastructure/database/MemoryTaskRepository.js.map +1 -0
  125. package/dist/infrastructure/database/PostgresQualityCheckRepository.d.ts +36 -0
  126. package/dist/infrastructure/database/PostgresQualityCheckRepository.d.ts.map +1 -0
  127. package/dist/infrastructure/database/PostgresQualityCheckRepository.js +89 -0
  128. package/dist/infrastructure/database/PostgresQualityCheckRepository.js.map +1 -0
  129. package/dist/infrastructure/database/PostgresTaskRepository.d.ts +94 -0
  130. package/dist/infrastructure/database/PostgresTaskRepository.d.ts.map +1 -0
  131. package/dist/infrastructure/database/PostgresTaskRepository.js +364 -0
  132. package/dist/infrastructure/database/PostgresTaskRepository.js.map +1 -0
  133. package/dist/infrastructure/database/ResultRepository.d.ts +41 -0
  134. package/dist/infrastructure/database/ResultRepository.d.ts.map +1 -0
  135. package/dist/infrastructure/database/ResultRepository.js +86 -0
  136. package/dist/infrastructure/database/ResultRepository.js.map +1 -0
  137. package/dist/infrastructure/database/SQLiteTaskRepository.d.ts +101 -0
  138. package/dist/infrastructure/database/SQLiteTaskRepository.d.ts.map +1 -0
  139. package/dist/infrastructure/database/SQLiteTaskRepository.js +548 -0
  140. package/dist/infrastructure/database/SQLiteTaskRepository.js.map +1 -0
  141. package/dist/infrastructure/database/index.d.ts +32 -0
  142. package/dist/infrastructure/database/index.d.ts.map +1 -0
  143. package/dist/infrastructure/database/index.js +72 -0
  144. package/dist/infrastructure/database/index.js.map +1 -0
  145. package/dist/infrastructure/logging/logger.d.ts +69 -0
  146. package/dist/infrastructure/logging/logger.d.ts.map +1 -0
  147. package/dist/infrastructure/logging/logger.js +169 -0
  148. package/dist/infrastructure/logging/logger.js.map +1 -0
  149. package/dist/infrastructure/monitoring/LoggingService.d.ts +109 -0
  150. package/dist/infrastructure/monitoring/LoggingService.d.ts.map +1 -0
  151. package/dist/infrastructure/monitoring/LoggingService.js +198 -0
  152. package/dist/infrastructure/monitoring/LoggingService.js.map +1 -0
  153. package/dist/infrastructure/monitoring/MetricsService.d.ts +112 -0
  154. package/dist/infrastructure/monitoring/MetricsService.d.ts.map +1 -0
  155. package/dist/infrastructure/monitoring/MetricsService.js +362 -0
  156. package/dist/infrastructure/monitoring/MetricsService.js.map +1 -0
  157. package/dist/infrastructure/monitoring/SentryService.d.ts +108 -0
  158. package/dist/infrastructure/monitoring/SentryService.d.ts.map +1 -0
  159. package/dist/infrastructure/monitoring/SentryService.js +282 -0
  160. package/dist/infrastructure/monitoring/SentryService.js.map +1 -0
  161. package/dist/infrastructure/monitoring/index.d.ts +7 -0
  162. package/dist/infrastructure/monitoring/index.d.ts.map +1 -0
  163. package/dist/infrastructure/monitoring/index.js +10 -0
  164. package/dist/infrastructure/monitoring/index.js.map +1 -0
  165. package/dist/infrastructure/queue/TaskQueue.d.ts +110 -0
  166. package/dist/infrastructure/queue/TaskQueue.d.ts.map +1 -0
  167. package/dist/infrastructure/queue/TaskQueue.js +363 -0
  168. package/dist/infrastructure/queue/TaskQueue.js.map +1 -0
  169. package/dist/infrastructure/queue/index.d.ts +5 -0
  170. package/dist/infrastructure/queue/index.d.ts.map +1 -0
  171. package/dist/infrastructure/queue/index.js +5 -0
  172. package/dist/infrastructure/queue/index.js.map +1 -0
  173. package/dist/infrastructure/redis/connection.d.ts +61 -0
  174. package/dist/infrastructure/redis/connection.d.ts.map +1 -0
  175. package/dist/infrastructure/redis/connection.js +184 -0
  176. package/dist/infrastructure/redis/connection.js.map +1 -0
  177. package/dist/infrastructure/redis/index.d.ts +5 -0
  178. package/dist/infrastructure/redis/index.d.ts.map +1 -0
  179. package/dist/infrastructure/redis/index.js +5 -0
  180. package/dist/infrastructure/redis/index.js.map +1 -0
  181. package/dist/infrastructure/security/ApiKeyService.d.ts +103 -0
  182. package/dist/infrastructure/security/ApiKeyService.d.ts.map +1 -0
  183. package/dist/infrastructure/security/ApiKeyService.js +250 -0
  184. package/dist/infrastructure/security/ApiKeyService.js.map +1 -0
  185. package/dist/infrastructure/security/QuotaService.d.ts +87 -0
  186. package/dist/infrastructure/security/QuotaService.d.ts.map +1 -0
  187. package/dist/infrastructure/security/QuotaService.js +303 -0
  188. package/dist/infrastructure/security/QuotaService.js.map +1 -0
  189. package/dist/infrastructure/security/RateLimiter.d.ts +104 -0
  190. package/dist/infrastructure/security/RateLimiter.d.ts.map +1 -0
  191. package/dist/infrastructure/security/RateLimiter.js +331 -0
  192. package/dist/infrastructure/security/RateLimiter.js.map +1 -0
  193. package/dist/infrastructure/security/index.d.ts +7 -0
  194. package/dist/infrastructure/security/index.d.ts.map +1 -0
  195. package/dist/infrastructure/security/index.js +10 -0
  196. package/dist/infrastructure/security/index.js.map +1 -0
  197. package/dist/monitoring/index.d.ts +5 -0
  198. package/dist/monitoring/index.d.ts.map +1 -0
  199. package/dist/monitoring/index.js +5 -0
  200. package/dist/monitoring/index.js.map +1 -0
  201. package/dist/monitoring/server.d.ts +14 -0
  202. package/dist/monitoring/server.d.ts.map +1 -0
  203. package/dist/monitoring/server.js +99 -0
  204. package/dist/monitoring/server.js.map +1 -0
  205. package/dist/presentation/cli/commands/cancel.d.ts +8 -0
  206. package/dist/presentation/cli/commands/cancel.d.ts.map +1 -0
  207. package/dist/presentation/cli/commands/cancel.js +57 -0
  208. package/dist/presentation/cli/commands/cancel.js.map +1 -0
  209. package/dist/presentation/cli/commands/create.d.ts +8 -0
  210. package/dist/presentation/cli/commands/create.d.ts.map +1 -0
  211. package/dist/presentation/cli/commands/create.js +368 -0
  212. package/dist/presentation/cli/commands/create.js.map +1 -0
  213. package/dist/presentation/cli/commands/result.d.ts +8 -0
  214. package/dist/presentation/cli/commands/result.d.ts.map +1 -0
  215. package/dist/presentation/cli/commands/result.js +121 -0
  216. package/dist/presentation/cli/commands/result.js.map +1 -0
  217. package/dist/presentation/cli/commands/status.d.ts +8 -0
  218. package/dist/presentation/cli/commands/status.d.ts.map +1 -0
  219. package/dist/presentation/cli/commands/status.js +92 -0
  220. package/dist/presentation/cli/commands/status.js.map +1 -0
  221. package/dist/presentation/cli/index.d.ts +8 -0
  222. package/dist/presentation/cli/index.d.ts.map +1 -0
  223. package/dist/presentation/cli/index.js +32 -0
  224. package/dist/presentation/cli/index.js.map +1 -0
  225. package/dist/presentation/cli/utils/cleanup.d.ts +14 -0
  226. package/dist/presentation/cli/utils/cleanup.d.ts.map +1 -0
  227. package/dist/presentation/cli/utils/cleanup.js +62 -0
  228. package/dist/presentation/cli/utils/cleanup.js.map +1 -0
  229. package/dist/presentation/cli/utils/formatter.d.ts +28 -0
  230. package/dist/presentation/cli/utils/formatter.d.ts.map +1 -0
  231. package/dist/presentation/cli/utils/formatter.js +68 -0
  232. package/dist/presentation/cli/utils/formatter.js.map +1 -0
  233. package/dist/presentation/cli.d.ts +7 -0
  234. package/dist/presentation/cli.d.ts.map +1 -0
  235. package/dist/presentation/cli.js +8 -0
  236. package/dist/presentation/cli.js.map +1 -0
  237. package/dist/presentation/monitor-cli.d.ts +8 -0
  238. package/dist/presentation/monitor-cli.d.ts.map +1 -0
  239. package/dist/presentation/monitor-cli.js +44 -0
  240. package/dist/presentation/monitor-cli.js.map +1 -0
  241. package/dist/presentation/worker-cli.d.ts +8 -0
  242. package/dist/presentation/worker-cli.d.ts.map +1 -0
  243. package/dist/presentation/worker-cli.js +51 -0
  244. package/dist/presentation/worker-cli.js.map +1 -0
  245. package/dist/schedulers/TaskScheduler.d.ts +99 -0
  246. package/dist/schedulers/TaskScheduler.d.ts.map +1 -0
  247. package/dist/schedulers/TaskScheduler.js +233 -0
  248. package/dist/schedulers/TaskScheduler.js.map +1 -0
  249. package/dist/schedulers/index.d.ts +5 -0
  250. package/dist/schedulers/index.d.ts.map +1 -0
  251. package/dist/schedulers/index.js +5 -0
  252. package/dist/schedulers/index.js.map +1 -0
  253. package/dist/services/image/ImageService.d.ts +68 -0
  254. package/dist/services/image/ImageService.d.ts.map +1 -0
  255. package/dist/services/image/ImageService.js +166 -0
  256. package/dist/services/image/ImageService.js.map +1 -0
  257. package/dist/services/index.d.ts +8 -0
  258. package/dist/services/index.d.ts.map +1 -0
  259. package/dist/services/index.js +12 -0
  260. package/dist/services/index.js.map +1 -0
  261. package/dist/services/llm/EnhancedLLMService.d.ts +148 -0
  262. package/dist/services/llm/EnhancedLLMService.d.ts.map +1 -0
  263. package/dist/services/llm/EnhancedLLMService.js +425 -0
  264. package/dist/services/llm/EnhancedLLMService.js.map +1 -0
  265. package/dist/services/llm/LLMService.d.ts +103 -0
  266. package/dist/services/llm/LLMService.d.ts.map +1 -0
  267. package/dist/services/llm/LLMService.js +212 -0
  268. package/dist/services/llm/LLMService.js.map +1 -0
  269. package/dist/services/quality/HardRuleChecker.d.ts +143 -0
  270. package/dist/services/quality/HardRuleChecker.d.ts.map +1 -0
  271. package/dist/services/quality/HardRuleChecker.js +353 -0
  272. package/dist/services/quality/HardRuleChecker.js.map +1 -0
  273. package/dist/services/quality/LLMEvaluator.d.ts +105 -0
  274. package/dist/services/quality/LLMEvaluator.d.ts.map +1 -0
  275. package/dist/services/quality/LLMEvaluator.js +312 -0
  276. package/dist/services/quality/LLMEvaluator.js.map +1 -0
  277. package/dist/services/quality/QualityCheckService.d.ts +112 -0
  278. package/dist/services/quality/QualityCheckService.d.ts.map +1 -0
  279. package/dist/services/quality/QualityCheckService.js +342 -0
  280. package/dist/services/quality/QualityCheckService.js.map +1 -0
  281. package/dist/services/quality/QualityService.d.ts +75 -0
  282. package/dist/services/quality/QualityService.d.ts.map +1 -0
  283. package/dist/services/quality/QualityService.js +360 -0
  284. package/dist/services/quality/QualityService.js.map +1 -0
  285. package/dist/services/quality/index.d.ts +7 -0
  286. package/dist/services/quality/index.d.ts.map +1 -0
  287. package/dist/services/quality/index.js +10 -0
  288. package/dist/services/quality/index.js.map +1 -0
  289. package/dist/services/search/SearchService.d.ts +79 -0
  290. package/dist/services/search/SearchService.d.ts.map +1 -0
  291. package/dist/services/search/SearchService.js +193 -0
  292. package/dist/services/search/SearchService.js.map +1 -0
  293. package/dist/workers/TaskWorker.d.ts +61 -0
  294. package/dist/workers/TaskWorker.d.ts.map +1 -0
  295. package/dist/workers/TaskWorker.js +256 -0
  296. package/dist/workers/TaskWorker.js.map +1 -0
  297. package/dist/workers/index.d.ts +5 -0
  298. package/dist/workers/index.d.ts.map +1 -0
  299. package/dist/workers/index.js +5 -0
  300. package/dist/workers/index.js.map +1 -0
  301. package/docs/DOCUMENTATION-ANALYSIS.md +190 -0
  302. package/docs/README.md +145 -0
  303. package/docs/SOURCE-CODE-ANALYSIS.md +1107 -0
  304. package/docs/architecture-complete.md +5524 -0
  305. package/docs/archive/implementation/implementation-analysis/README.md +244 -0
  306. package/docs/archive/implementation/implementation-analysis/implementation-analysis-context.md +483 -0
  307. package/docs/archive/implementation/implementation-analysis/implementation-analysis-plan.md +1242 -0
  308. package/docs/archive/implementation/implementation-analysis/implementation-analysis-tasks.md +777 -0
  309. package/docs/archive/phases/phase-1/phase-1-completion-summary.md +284 -0
  310. package/docs/archive/phases/phase-1/phase-1-implementation-guide.md +1380 -0
  311. package/docs/archive/phases/phase-2/phase-2a/phase-2a-completion-summary.md +443 -0
  312. package/docs/archive/phases/phase-2/phase-2b/phase-2b-completion-report.md +430 -0
  313. package/docs/archive/phases/phase-2/phase-2b/phase-2b-completion-summary.md +592 -0
  314. package/docs/archive/phases/phase-2/phase-2b/phase-2b-final-summary.md +371 -0
  315. package/docs/archive/phases/phase-2/phase-2b/phase-2b-preparation-complete.md +343 -0
  316. package/docs/archive/phases/phase-2/phase-2b/phase-2b-preparation.md +945 -0
  317. package/docs/archive/phases/phase-2/phase-2b/phase-2b-progress-update.md +366 -0
  318. package/docs/archive/phases/phase-3/phase-3-completion-summary.md +354 -0
  319. package/docs/archive/phases/phase-3/phase-3-development-plan.md +878 -0
  320. package/docs/archive/phases/phase-3/phase-3-quick-start.md +324 -0
  321. package/docs/archive/phases/phase-4/phase-4-completion-summary.md +708 -0
  322. package/docs/archive/phases/phase-4/phase-4-development-plan.md +740 -0
  323. package/docs/archive/phases/phase-4/phase-4-quick-start.md +632 -0
  324. package/docs/archive/phases/phase-4/phase-4-session-3-security-testing.md +484 -0
  325. package/docs/archive/phases/phase-4/phase-4-session-4-unit-tests.md +550 -0
  326. package/docs/archive/phases/phase-4/phase-4-session-5-security-tests.md +564 -0
  327. package/docs/archive/phases/phase-4/phase-4-session-6-cache-integration.md +456 -0
  328. package/docs/archive/phases/phase-4/phase-4-session-7-test-fixes.md +348 -0
  329. package/docs/archive/phases/phase-4/phase-4-session-8-taskqueue-fixes.md +323 -0
  330. package/docs/archive/phases/phase-4/phase-4-session-summary-continued.md +373 -0
  331. package/docs/archive/phases/phase-4/phase-4-session-summary.md +595 -0
  332. package/docs/archive/reports/progress-reports/PHASE_0_PROGRESS.md +242 -0
  333. package/docs/archive/reports/progress-reports/PHASE_0_SUMMARY.md +262 -0
  334. package/docs/archive/reports/progress-reports/PHASE_1_2_ISSUES.md +399 -0
  335. package/docs/archive/reports/progress-reports/PHASE_1_PROGRESS.md +388 -0
  336. package/docs/archive/reports/progress-reports/PHASE_3_PREPARATION.md +574 -0
  337. package/docs/archive/reports/progress-reports/current-progress-update.md +294 -0
  338. package/docs/archive/reports/progress-reports/final-summary.md +215 -0
  339. package/docs/archive/reports/progress-reports/implementation-summary.md +287 -0
  340. package/docs/archive/reports/progress-reports/project-progress-report.md +440 -0
  341. package/docs/archive/reports/progress-reports/project-progress.md +386 -0
  342. package/docs/archive/reports/test-reports/TEST-COVERAGE-REPORT.md +441 -0
  343. package/docs/archive/reports/test-reports/e2e-test-report.md +293 -0
  344. package/docs/archive/reports/test-reports/final-test-report.md +367 -0
  345. package/docs/archive/reports/test-reports/real-env-test-report.md +391 -0
  346. package/docs/archive/reports/test-reports/test-completion-summary.md +356 -0
  347. package/docs/archive/reports/test-reports/test-report.md +371 -0
  348. package/docs/archive/sessions/session-2-summary.md +429 -0
  349. package/docs/archive/sessions/session-3-summary.md +395 -0
  350. package/docs/archive/sessions/session-summary.md +370 -0
  351. package/docs/config-system-update.md +239 -0
  352. package/docs/database-refactoring-PLAN.md +199 -0
  353. package/docs/database-refactoring-SUMMARY.md +384 -0
  354. package/docs/quality-check-architecture.md +1030 -0
  355. package/docs/quick-start.md +388 -0
  356. package/docs/references/bullmq-quick-reference.md +525 -0
  357. package/docs/references/monitoring-optimization-guide.md +871 -0
  358. package/docs/references/performance-optimization-guide.md +933 -0
  359. package/docs/storage-guide.md +612 -0
  360. package/docs/test-implementation-PLAN.md +223 -0
  361. package/docs/test-implementation-SUMMARY.md +194 -0
  362. package/docs/user-guide.md +719 -0
  363. package/docs/workflow-architecture.md +549 -0
  364. package/package.json +126 -0
  365. package/src/application/workflow/SyncExecutor.ts +444 -0
  366. package/src/application/workflow/types.ts +57 -0
  367. package/src/config/index.ts +352 -0
  368. package/src/domain/entities/QualityCheck.ts +202 -0
  369. package/src/domain/entities/Result.ts +130 -0
  370. package/src/domain/entities/Task.ts +178 -0
  371. package/src/domain/entities/TaskStep.ts +188 -0
  372. package/src/domain/entities/TokenUsage.ts +119 -0
  373. package/src/domain/entities/index.ts +20 -0
  374. package/src/domain/repositories/QualityCheckRepository.ts +52 -0
  375. package/src/domain/repositories/ResultRepository.ts +47 -0
  376. package/src/domain/repositories/TaskRepository.ts +271 -0
  377. package/src/domain/workflow/CheckpointManager.ts +283 -0
  378. package/src/domain/workflow/ContentCreatorGraph.ts +446 -0
  379. package/src/domain/workflow/State.ts +321 -0
  380. package/src/domain/workflow/index.ts +18 -0
  381. package/src/domain/workflow/nodes/BaseNode.ts +325 -0
  382. package/src/domain/workflow/nodes/CheckImageNode.ts +325 -0
  383. package/src/domain/workflow/nodes/CheckTextNode.ts +709 -0
  384. package/src/domain/workflow/nodes/GenerateImageNode.ts +342 -0
  385. package/src/domain/workflow/nodes/OrganizeNode.ts +304 -0
  386. package/src/domain/workflow/nodes/SearchNode.ts +192 -0
  387. package/src/domain/workflow/nodes/WriteNode.ts +505 -0
  388. package/src/domain/workflow/nodes/index.ts +13 -0
  389. package/src/index.ts +43 -0
  390. package/src/infrastructure/cache/CacheService.ts +483 -0
  391. package/src/infrastructure/cache/index.ts +6 -0
  392. package/src/infrastructure/database/BaseRepository.ts +214 -0
  393. package/src/infrastructure/database/MemoryTaskRepository.ts +377 -0
  394. package/src/infrastructure/database/PostgresQualityCheckRepository.ts +115 -0
  395. package/src/infrastructure/database/PostgresTaskRepository.ts +424 -0
  396. package/src/infrastructure/database/ResultRepository.ts +113 -0
  397. package/src/infrastructure/database/SQLiteTaskRepository.ts +651 -0
  398. package/src/infrastructure/database/index.ts +83 -0
  399. package/src/infrastructure/logging/logger.ts +231 -0
  400. package/src/infrastructure/monitoring/LoggingService.ts +292 -0
  401. package/src/infrastructure/monitoring/MetricsService.ts +468 -0
  402. package/src/infrastructure/monitoring/SentryService.ts +345 -0
  403. package/src/infrastructure/monitoring/index.ts +12 -0
  404. package/src/infrastructure/queue/TaskQueue.ts +429 -0
  405. package/src/infrastructure/queue/index.ts +5 -0
  406. package/src/infrastructure/redis/connection.ts +215 -0
  407. package/src/infrastructure/redis/index.ts +5 -0
  408. package/src/infrastructure/security/ApiKeyService.ts +340 -0
  409. package/src/infrastructure/security/QuotaService.ts +411 -0
  410. package/src/infrastructure/security/RateLimiter.ts +417 -0
  411. package/src/infrastructure/security/index.ts +12 -0
  412. package/src/monitoring/index.ts +5 -0
  413. package/src/monitoring/server.ts +109 -0
  414. package/src/presentation/cli/commands/cancel.ts +64 -0
  415. package/src/presentation/cli/commands/create.ts +400 -0
  416. package/src/presentation/cli/commands/result.ts +136 -0
  417. package/src/presentation/cli/commands/status.ts +102 -0
  418. package/src/presentation/cli/index.ts +39 -0
  419. package/src/presentation/cli/utils/cleanup.ts +65 -0
  420. package/src/presentation/cli/utils/formatter.ts +74 -0
  421. package/src/presentation/cli.ts +8 -0
  422. package/src/presentation/monitor-cli.ts +52 -0
  423. package/src/presentation/worker-cli.ts +62 -0
  424. package/src/schedulers/TaskScheduler.ts +314 -0
  425. package/src/schedulers/index.ts +11 -0
  426. package/src/services/image/ImageService.ts +221 -0
  427. package/src/services/index.ts +15 -0
  428. package/src/services/llm/EnhancedLLMService.ts +596 -0
  429. package/src/services/llm/LLMService.ts +310 -0
  430. package/src/services/quality/HardRuleChecker.ts +509 -0
  431. package/src/services/quality/LLMEvaluator.ts +400 -0
  432. package/src/services/quality/QualityCheckService.ts +473 -0
  433. package/src/services/quality/QualityService.ts +445 -0
  434. package/src/services/quality/index.ts +12 -0
  435. package/src/services/search/SearchService.ts +266 -0
  436. package/src/types/global.d.ts +17 -0
  437. package/src/workers/TaskWorker.ts +320 -0
  438. package/src/workers/index.ts +5 -0
@@ -0,0 +1,244 @@
1
+ # 实施分析总结
2
+
3
+ **分析完成时间**: 2025-01-18
4
+ **分析范围**: architecture-complete.md 设计文档深度分析
5
+
6
+ ---
7
+
8
+ ## 📊 已创建文档
9
+
10
+ 已成功创建 3 个核心文档,总计 **59KB** 的战略规划内容:
11
+
12
+ ### 1. 实施战略规划(31KB)
13
+ **文件**: `implementation-analysis-plan.md`
14
+
15
+ **内容概要**:
16
+ - ✅ 执行摘要(项目愿景、核心价值、投资回报)
17
+ - ✅ 现状分析(已完成、部分完成、未开始)
18
+ - ✅ SWOT 分析(优势、劣势、机会、威胁)
19
+ - ✅ 未来状态规划(系统架构蓝图)
20
+ - ✅ 4 个实施阶段详细规划
21
+ - ✅ 52 个具体任务分解(含优先级、工作量、依赖)
22
+ - ✅ 风险评估与缓解策略
23
+ - ✅ 成功指标定义
24
+ - ✅ 资源需求分析
25
+ - ✅ 时间线估算(甘特图)
26
+
27
+ **核心价值**:
28
+ - 提供完整的战略视角
29
+ - 识别 5 个高优先级风险
30
+ - 定义 13 个成功指标
31
+ - 预估总工期 15-24 天
32
+
33
+ ---
34
+
35
+ ### 2. 关键上下文文档(12KB)
36
+ **文件**: `implementation-analysis-context.md`
37
+
38
+ **内容概要**:
39
+ - ✅ 关键文件索引
40
+ - ✅ 5 个核心设计决策(含理由)
41
+ - ✅ 领域模型关系图(ERD)
42
+ - ✅ 核心工作流程图(同步/异步)
43
+ - ✅ 安全设计(API Key 加密、内容审核、Token 监控)
44
+ - ✅ 容量规划(5 Worker × 2 并发配置)
45
+ - ✅ 成本估算(月度 ¥550-900)
46
+ - ✅ 已识别风险清单
47
+ - ✅ 外部依赖清单
48
+ - ✅ 待决问题清单
49
+
50
+ **核心价值**:
51
+ - 快速查阅关键信息
52
+ - 理解设计决策背后的原因
53
+ - 了解技术权衡
54
+
55
+ ---
56
+
57
+ ### 3. 任务清单文档(16KB)
58
+ **文件**: `implementation-analysis-tasks.md`
59
+
60
+ **内容概要**:
61
+ - ✅ 总体进度追踪(可视化进度条)
62
+ - ✅ 阶段 0 任务(6 项)
63
+ - ✅ 阶段 1 任务(6 项)
64
+ - ✅ 阶段 2 任务(12 项)
65
+ - ✅ 阶段 3 任务(5 项)
66
+ - ✅ 阶段 4 任务(7 项)
67
+ - ✅ 5 个里程碑追踪
68
+ - ✅ 风险跟踪表
69
+ - ✅ 每日站会模板
70
+
71
+ **核心价值**:
72
+ - 可执行的任务列表
73
+ - 实时进度追踪
74
+ - 每个任务都有验收标准
75
+
76
+ ---
77
+
78
+ ## 🎯 核心发现
79
+
80
+ ### 架构亮点
81
+
82
+ 1. **高可用设计**
83
+ - 多 Worker 架构(5 × 2 并发 = 10 任务)
84
+ - 自动故障恢复
85
+ - 数据库主从复制
86
+
87
+ 2. **性能优化**
88
+ - 日处理能力:3000 任务/天
89
+ - 单任务延迟:< 5 分钟
90
+ - 支持 100 用户并发
91
+
92
+ 3. **成本优势**
93
+ - 月度运营成本:¥550-900
94
+ - 相比传统方式节省 95%+ 成本
95
+ - Token 监控防止超支
96
+
97
+ 4. **质量保证**
98
+ - 双层质检(硬规则 + LLM)
99
+ - 自动重试机制(最多 3 次)
100
+ - 内容审核集成(可选)
101
+
102
+ ### 关键风险
103
+
104
+ | 风险 | 概率 | 影响 | 缓解策略 |
105
+ |------|------|------|----------|
106
+ | LangGraph 学习曲线 | 高 | 中 | 预留学习时间 |
107
+ | 并发控制复杂 | 高 | 中 | 充分测试 + 乐观锁 |
108
+ | LLM API 不稳定 | 中 | 高 | 重试 + 熔断器 |
109
+ | Token 成本失控 | 中 | 高 | 监控 + 告警 |
110
+ | 内容合规风险 | 高 | 高 | 强制审核 |
111
+
112
+ ### 待决问题
113
+
114
+ 1. **用户管理**: 是否需要多租户支持?
115
+ 2. **Web 界面**: 是否需要 REST API + Web UI?
116
+ 3. **内容审核**: 是否强制所有内容过审?
117
+ 4. **版本控制**: 是否保留历史版本?
118
+
119
+ ---
120
+
121
+ ## 📅 实施路线图
122
+
123
+ ### 时间线概览
124
+
125
+ ```
126
+ Week 1: 阶段 0 + 阶段 1(环境 + 数据层)
127
+ Week 2: 阶段 2(工作流与服务)
128
+ Week 3: 阶段 3(异步系统)
129
+ Week 4: 阶段 4(监控优化)
130
+ ```
131
+
132
+ ### 关键里程碑
133
+
134
+ | 里程碑 | 目标 | 预计日期 |
135
+ |--------|------|----------|
136
+ | M1 | 环境准备完成 | Day 2 |
137
+ | M2 | 数据层完成 | Day 7 |
138
+ | M3 | 工作流完成 | Day 14 |
139
+ | M4 | 异步系统完成 | Day 19 |
140
+ | M5 | 监控优化完成 | Day 24 |
141
+
142
+ ---
143
+
144
+ ## 🛠️ 下一步行动
145
+
146
+ ### 立即可做(今天)
147
+
148
+ 1. **开始阶段 0**(30 分钟)
149
+ ```bash
150
+ cd /Users/Oychao/Documents/Projects/content-creator
151
+ pnpm install
152
+ pnpm run verify-env
153
+ ```
154
+
155
+ 2. **阅读关键文档**(1 小时)
156
+ - `implementation-analysis-plan.md`(战略规划)
157
+ - `implementation-analysis-context.md`(上下文)
158
+ - `implementation-analysis-tasks.md`(任务清单)
159
+
160
+ 3. **创建开发环境**(2 小时)
161
+ - 配置 TypeScript
162
+ - 创建目录结构
163
+ - 配置 ESLint/Prettier
164
+
165
+ ### 本周目标
166
+
167
+ - [ ] 完成阶段 0(环境准备)
168
+ - [ ] 启动阶段 1(数据层)
169
+ - [ ] 完成领域模型定义
170
+ - [ ] 完成数据库迁移脚本
171
+
172
+ ### 本月目标
173
+
174
+ - [ ] 完成阶段 0-2(环境、数据层、工作流)
175
+ - [ ] 实现端到端写作流程
176
+ - [ ] CLI 可用
177
+ - [ ] 单元测试覆盖率 > 80%
178
+
179
+ ---
180
+
181
+ ## 📖 文档使用指南
182
+
183
+ ### 战略规划会议
184
+ **阅读**: `implementation-analysis-plan.md`
185
+ **目的**:
186
+ - 了解项目愿景和目标
187
+ - 评估风险和资源需求
188
+ - 批准时间线和预算
189
+
190
+ ### 开发团队启动
191
+ **阅读**: `implementation-analysis-context.md`
192
+ **目的**:
193
+ - 理解技术架构
194
+ - 掌握设计决策
195
+ - 了解外部依赖
196
+
197
+ ### 日常开发追踪
198
+ **使用**: `implementation-analysis-tasks.md`
199
+ **目的**:
200
+ - 追踪任务进度
201
+ - 记录实际工时
202
+ - 每日站会更新
203
+
204
+ ---
205
+
206
+ ## 📞 联系与支持
207
+
208
+ **文档位置**: `dev/active/implementation-analysis/`
209
+
210
+ **文件结构**:
211
+ ```
212
+ dev/active/implementation-analysis/
213
+ ├── README.md (本文件)
214
+ ├── implementation-analysis-plan.md (战略规划)
215
+ ├── implementation-analysis-context.md (关键上下文)
216
+ └── implementation-analysis-tasks.md (任务清单)
217
+ ```
218
+
219
+ **维护说明**:
220
+ - 每个文件末尾包含"最后更新"日期
221
+ - 建议每阶段结束后评审更新
222
+ - 任务清单每日更新
223
+ - 战略规划阶段评审后更新
224
+
225
+ ---
226
+
227
+ ## ✅ 验收清单
228
+
229
+ 在开始开发前,确认:
230
+
231
+ - [ ] 已阅读 `implementation-analysis-plan.md`
232
+ - [ ] 已阅读 `implementation-analysis-context.md`
233
+ - [ ] 已阅读 `implementation-analysis-tasks.md`
234
+ - [ ] 理解 4 个阶段的划分
235
+ - [ ] 知晓 5 个关键风险
236
+ - [ ] 明确 13 个成功指标
237
+ - [ ] 确认资源需求(人力、基础设施、预算)
238
+ - [ ] 批准时间线(15-24 天)
239
+
240
+ ---
241
+
242
+ **分析完成时间**: 2025-01-18
243
+ **分析者**: Claude Code
244
+ **下次评审**: 阶段 1 完成后(约 1 周后)
@@ -0,0 +1,483 @@
1
+ # 实施分析 - 关键上下文
2
+
3
+ **项目**: Content Creator (写作 Agent)
4
+ **分析日期**: 2025-01-18
5
+ **文档版本**: 1.0
6
+
7
+ ---
8
+
9
+ ## 📁 关键文件
10
+
11
+ ### 架构设计文档
12
+ - **路径**: `docs/architecture-complete.md`
13
+ - **大小**: 5524 行
14
+ - **内容**: 完整的系统架构设计
15
+ - 16 个主要章节
16
+ - 5 个核心领域模型
17
+ - 完整的数据库表结构
18
+ - 详细的工作流设计
19
+
20
+ ### 实施计划
21
+ - **路径**: `docs/implementation-plan.md`
22
+ - **大小**: 1508 行
23
+ - **内容**: 渐进式实施计划
24
+ - 4 个开发阶段
25
+ - 每个阶段的详细任务
26
+ - 代码示例和验收标准
27
+
28
+ ### 阶段 0 指南
29
+ - **路径**: `docs/phase-0-setup-guide.md`
30
+ - **大小**: 700+ 行
31
+ - **内容**: 环境准备详细步骤
32
+
33
+ ### 环境配置
34
+ - **路径**: `.env`
35
+ - **内容**:
36
+ - PostgreSQL 连接(本地 Docker)
37
+ - Redis 连接(150.158.88.23)
38
+ - DeepSeek API Key
39
+ - Tavily API Key (MCP Search)
40
+ - Doubao API Key
41
+
42
+ ---
43
+
44
+ ## 🎯 核心设计决策
45
+
46
+ ### 1. 架构模式:分布式多 Worker
47
+
48
+ **选择理由**:
49
+ - ✅ 支持 100 用户并发
50
+ - ✅ 20 个任务同时执行
51
+ - ✅ Worker 故障自动恢复
52
+ - ✅ 可水平扩展
53
+
54
+ **技术栈**:
55
+ ```
56
+ PostgreSQL 14+ (必需,不用 SQLite)
57
+ ├── 理由: MVCC 并发、ACID 保证、分布式支持
58
+ Bull + Redis 7+
59
+ ├── 理由: 成熟稳定、功能丰富、支持重试
60
+ Node.js Workers (5 × 2 并发 = 10 任务)
61
+ ├── 理由: 单线程适合 I/O 密集型任务
62
+ ```
63
+
64
+ ### 2. 数据库:PostgreSQL vs SQLite
65
+
66
+ | 特性 | SQLite | PostgreSQL |
67
+ |------|--------|------------|
68
+ | 并发写入 | ❌ 写锁 | ✅ MVCC |
69
+ | 连接数 | ❌ 单连接 | ✅ 100+ |
70
+ | 分布式 | ❌ 不支持 | ✅ 支持 |
71
+ | 生产级 | ❌ 不推荐 | ✅ 是 |
72
+
73
+ **决策**: PostgreSQL
74
+
75
+ ### 3. 工作流引擎:LangGraph
76
+
77
+ **选择理由**:
78
+ - ✅ 状态管理优秀
79
+ - ✅ 可视化调试
80
+ - ✅ 支持循环和条件路由
81
+ - ✅ 断点续传(Checkpoint)
82
+
83
+ **核心概念**:
84
+ ```typescript
85
+ State: 工作流状态(不可变)
86
+ Node: 处理节点(Search, Write, Check...)
87
+ Graph: 有向图(节点 + 边)
88
+ Edge: 条件路由(if/else)
89
+ ```
90
+
91
+ ### 4. 质量检查:双层架构
92
+
93
+ **第一层:硬规则检查**
94
+ - 字数检查(minWords, maxWords)
95
+ - 关键词检查(keywords)
96
+ - 结构检查(标题、正文、结尾)
97
+
98
+ **第二层:LLM 评审**
99
+ - 相关性(relevance)
100
+ - 连贯性(coherence)
101
+ - 完整性(completeness)
102
+ - 可读性(readability)
103
+
104
+ **评分机制**:
105
+ ```
106
+ 硬规则不通过 → 0 分,立即重试
107
+ 硬规则通过 → LLM 评分(1-10 分)
108
+ ≥ 7 分 → 通过
109
+ < 7 分 → 不通过,返回建议重试
110
+ 最多重试 3 次
111
+ ```
112
+
113
+ ### 5. 存储策略
114
+
115
+ **文案(文本)**:
116
+ - 主存储:PostgreSQL(JSONB)
117
+ - 备份:S3(可选)
118
+ - 导出:本地文件(可选)
119
+
120
+ **图片(二进制)**:
121
+ - 开发:本地文件系统(`./data/images`)
122
+ - 生产:S3/OSS/MinIO
123
+ - 数据库:仅存储 URL/路径
124
+
125
+ **理由**:
126
+ - 文案需要检索和版本管理 → 数据库
127
+ - 图片不需要检索 → 对象存储
128
+ - 降低数据库存储压力
129
+
130
+ ---
131
+
132
+ ## 📊 领域模型关系
133
+
134
+ ```mermaid
135
+ erDiagram
136
+ User ||--o{ Task : creates
137
+ Task ||--o{ TaskStep : contains
138
+ Task ||--o{ QualityCheck : has
139
+ Task ||--o{ Result : produces
140
+ Task ||--o{ TokenUsage : tracks
141
+
142
+ Task {
143
+ string taskId PK
144
+ string userId FK
145
+ enum mode
146
+ string topic
147
+ enum status
148
+ string workerId
149
+ int version
150
+ timestamp createdAt
151
+ }
152
+
153
+ TaskStep {
154
+ int id PK
155
+ string taskId FK
156
+ enum stepName
157
+ enum status
158
+ int attempt
159
+ jsonb inputData
160
+ jsonb outputData
161
+ }
162
+
163
+ QualityCheck {
164
+ int id PK
165
+ string taskId FK
166
+ enum checkType
167
+ decimal score
168
+ boolean passed
169
+ jsonb details
170
+ }
171
+
172
+ Result {
173
+ int id PK
174
+ string taskId FK
175
+ enum resultType
176
+ text content
177
+ string filePath
178
+ }
179
+
180
+ TokenUsage {
181
+ int id PK
182
+ string taskId FK
183
+ string modelName
184
+ int promptTokens
185
+ int completionTokens
186
+ decimal cost
187
+ }
188
+ ```
189
+
190
+ ---
191
+
192
+ ## 🔄 核心工作流
193
+
194
+ ### 同步执行流程
195
+
196
+ ```
197
+ 用户请求
198
+
199
+ 创建任务(状态: pending)
200
+
201
+ Sync Executor.execute()
202
+
203
+ LangGraph Workflow.invoke()
204
+
205
+ ┌─────────────────────────────┐
206
+ │ Search Node │
207
+ │ ─────────────────────────── │
208
+ │ • 调用 MCP Search │
209
+ │ • 收集资料 │
210
+ └─────────────────────────────┘
211
+
212
+ ┌─────────────────────────────┐
213
+ │ Organize Node │
214
+ │ ─────────────────────────── │
215
+ │ • 整理资料 │
216
+ │ • 生成大纲 │
217
+ └─────────────────────────────┘
218
+
219
+ ┌─────────────────────────────┐
220
+ │ Write Node │
221
+ │ ─────────────────────────── │
222
+ │ • LLM 生成文章 │
223
+ │ • 保存 content │
224
+ └─────────────────────────────┘
225
+
226
+ ┌─────────────────────────────┐
227
+ │ Check Text Node │
228
+ │ ─────────────────────────── │
229
+ │ • 硬规则检查 │
230
+ │ • LLM 评审 │
231
+ │ • 评分 │
232
+ └─────────────────────────────┘
233
+
234
+ ├─≥ 7 分 → 继续
235
+ └─< 7 分 → 回到 Write(最多 3 次)
236
+
237
+ ┌─────────────────────────────┐
238
+ │ Generate Image Node │
239
+ │ ─────────────────────────── │
240
+ │ • 生成配图 │
241
+ │ • 保存 URL │
242
+ └─────────────────────────────┘
243
+
244
+ ┌─────────────────────────────┐
245
+ │ Check Image Node │
246
+ │ ─────────────────────────── │
247
+ │ • 相关性评分 │
248
+ │ • 美学评分 │
249
+ └─────────────────────────────┘
250
+
251
+ ├─通过 → 保存结果
252
+ └─失败 → 回到 GenImage(最多 3 次)
253
+
254
+ 更新任务状态(completed)
255
+
256
+ 返回结果给用户
257
+ ```
258
+
259
+ ### 异步执行流程(多 Worker)
260
+
261
+ ```
262
+ 用户请求
263
+
264
+ 创建任务(状态: pending)
265
+
266
+ Async Executor.submit()
267
+
268
+ 添加到 Bull Queue
269
+
270
+ 返回 taskId 给用户
271
+
272
+ 用户可以查询状态(轮询或 WebSocket)
273
+
274
+ ─────────────────────────────────
275
+
276
+ Worker 1 Worker 2 Worker 3
277
+ │ │ │
278
+ ├─ claimTask() ├─ claimTask() ├─ claimTask()
279
+ │ │ │
280
+ ├─ 执行工作流 ├─ 执行工作流 ├─ 执行工作流
281
+ │ │ │
282
+ └─ 保存结果 └─ 保存结果 └─ 保存结果
283
+ ↓ ↓ ↓
284
+ ```
285
+
286
+ ---
287
+
288
+ ## 🔐 安全设计
289
+
290
+ ### 1. API Key 管理
291
+
292
+ **加密存储**:
293
+ ```typescript
294
+ // 加密
295
+ const encrypted = crypto.encrypt('sk-xxx', key);
296
+ // 存储
297
+ await db.query('INSERT INTO api_keys (key) VALUES ($1)', [encrypted]);
298
+
299
+ // 解密(运行时)
300
+ const decrypted = crypto.decrypt(encrypted, key);
301
+ ```
302
+
303
+ **使用 AWS KMS**(推荐):
304
+ ```bash
305
+ # 加密 API Key
306
+ aws kms encrypt --key-id xxx --plaintext file://api_key.txt --output ciphertext.blob
307
+
308
+ # 存储加密后的 Base64
309
+ export DEEPSEEK_API_KEY_ENCRYPTED="AQICAHh..."
310
+
311
+ # 运行时解密
312
+ const decrypted = await kms.decrypt(ciphertext);
313
+ ```
314
+
315
+ ### 2. 内容审核
316
+
317
+ **集成阿里云内容安全**:
318
+ ```typescript
319
+ // 文本审核
320
+ const result = await aliyun.green.textScan(content);
321
+ if (result.riskLevel === 'high') {
322
+ throw new Error('Content rejected');
323
+ }
324
+
325
+ // 图片审核
326
+ const result = await aliyun.green.imageScan(imageUrl);
327
+ if (result.riskLevel === 'high') {
328
+ throw new Error('Image rejected');
329
+ }
330
+ ```
331
+
332
+ ### 3. Token 监控
333
+
334
+ **预算控制**:
335
+ ```typescript
336
+ class TokenMonitor {
337
+ private dailyLimit = 10_000_000; // 1000 万 tokens/天
338
+
339
+ record(usage: number) {
340
+ this.dailyUsage += usage;
341
+
342
+ // 80% 告警
343
+ if (this.dailyUsage >= this.dailyLimit * 0.8) {
344
+ this.sendAlert('Token usage at 80%');
345
+ }
346
+
347
+ // 100% 拒绝
348
+ if (this.dailyUsage >= this.dailyLimit) {
349
+ throw new Error('Token budget exceeded');
350
+ }
351
+ }
352
+ }
353
+ ```
354
+
355
+ ---
356
+
357
+ ## 📈 容量规划
358
+
359
+ ### 配置:5 Worker × 2 并发 = 10 并发任务
360
+
361
+ **吞吐量计算**:
362
+ ```
363
+ 单任务平均时间: 3 分钟
364
+ 单 Worker 吞吐量: 60/3 × 2 = 40 任务/小时
365
+ 5 Worker 吞吐量: 40 × 5 = 200 任务/小时
366
+ 日吞吐量: 200 × 24 = 4800 任务/天(理论值)
367
+ 实际吞吐量: 3000 任务/天(考虑效率系数)
368
+ ```
369
+
370
+ **并发用户支持**:
371
+ ```
372
+ 假设 20% 用户同时提交任务
373
+ 100 用户 × 20% = 20 个并发任务需求
374
+ 10 个并发任务处理能力
375
+ 余量系数: 5.76 ÷ 2 = 2.88 倍
376
+ ```
377
+
378
+ ### 成本估算(月度)
379
+
380
+ | 项目 | 计算 | 成本 |
381
+ |------|------|------|
382
+ | **DeepSeek API** | 3000 任务 × 3000 tokens × 30 天 × ¥1/100 万 | ¥270 |
383
+ | **Doubao API** | 3000 任务 × ¥0.02 × 30 天 | ¥180 |
384
+ | **内容审核** | 3000 × 2 × ¥0.001 × 30 天 | ¥7 |
385
+ | **PostgreSQL** | 云数据库 4 核 8GB | ¥100-200 |
386
+ | **Redis** | 云缓存 2 核 4GB | ¥50-100 |
387
+ | **S3 存储** | 100GB | ¥10-20 |
388
+ | **总计** | - | **¥550-900** |
389
+
390
+ ---
391
+
392
+ ## 🚨 已识别风险
393
+
394
+ ### 技术风险
395
+
396
+ 1. **LangGraph 学习曲线**
397
+ - 影响: 开发进度延迟
398
+ - 缓解: 预留学习时间,准备备选方案(直接使用 LangChain)
399
+
400
+ 2. **并发控制复杂**
401
+ - 影响: 任务重复执行或丢失
402
+ - 缓解: 乐观锁 + 充分测试
403
+
404
+ 3. **LLM API 不稳定**
405
+ - 影响: 任务失败率升高
406
+ - 缓解: 重试机制 + 熔断器
407
+
408
+ ### 业务风险
409
+
410
+ 1. **内容合规**
411
+ - 影响: 法律风险
412
+ - 缓解: 强制内容审核
413
+
414
+ 2. **成本失控**
415
+ - 影响: 运营成本激增
416
+ - 缓解: Token 监控 + 预算告警
417
+
418
+ ---
419
+
420
+ ## 🔗 外部依赖
421
+
422
+ ### 必需服务
423
+
424
+ | 服务 | 用途 | 重要性 | 备选方案 |
425
+ |------|------|--------|----------|
426
+ | **PostgreSQL** | 数据持久化 | 🔴 P0 | - |
427
+ | **Redis** | 缓存和队列 | 🔴 P0 | - |
428
+ | **DeepSeek API** | LLM | 🔴 P0 | OpenAI, Claude |
429
+ | **Doubao API** | 图片生成 | 🟡 P1 | Midjourney, DALL-E |
430
+ | **MCP Search** | 搜索 | 🟡 P1 | Google Search API |
431
+
432
+ ### 可选服务
433
+
434
+ | 服务 | 用途 | 重要性 |
435
+ |------|------|--------|
436
+ | **Sentry** | 错误追踪 | 🟢 P2 |
437
+ | **Prometheus** | 指标监控 | 🟢 P2 |
438
+ | **阿里云内容安全** | 内容审核 | 🟡 P1 |
439
+
440
+ ---
441
+
442
+ ## 📋 待决问题
443
+
444
+ 1. **是否需要用户管理系统?**
445
+ - 当前设计:无用户管理(单用户模式)
446
+ - 需求待确认:是否需要多租户?
447
+
448
+ 2. **是否需要 Web 界面?**
449
+ - 当前设计:仅 CLI
450
+ - 需求待确认:是否需要 REST API + Web UI?
451
+
452
+ 3. **内容审核是否强制?**
453
+ - 当前设计:可选
454
+ - 需求待确认:是否所有内容必须过审?
455
+
456
+ 4. **是否需要版本控制?**
457
+ - 当前设计:仅保存最新结果
458
+ - 需求待确认:是否需要保留历史版本?
459
+
460
+ ---
461
+
462
+ ## 📖 参考资料
463
+
464
+ ### 技术文档
465
+ - [LangGraph 官方文档](https://langchain-ai.github.io/langgraph/)
466
+ - [Bull 队列文档](https://docs.bullmq.io/)
467
+ - [PostgreSQL 14 文档](https://www.postgresql.org/docs/14/)
468
+
469
+ ### 设计模式
470
+ - 领域驱动设计 (DDD)
471
+ - 工作流模式 (Workflow Pattern)
472
+ - CQRS (命令查询职责分离)
473
+
474
+ ### 类似项目
475
+ - AutoGPT
476
+ - AgentGPT
477
+ - LangChain Agents
478
+
479
+ ---
480
+
481
+ **最后更新**: 2025-01-18
482
+ **维护者**: 开发团队
483
+ **下次评审**: 阶段 1 启动前