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,370 @@
1
+ # 项目进展总结与后续计划
2
+
3
+ **日期**: 2026-01-19
4
+ **项目**: Content Creator (写作 Agent)
5
+ **当前阶段**: 阶段 2b 即将完成
6
+ **整体进度**: 70%
7
+
8
+ ---
9
+
10
+ ## 📊 今日工作总结
11
+
12
+ ### 完成的任务
13
+
14
+ #### 1. 导入问题修复 ✅ (20 分钟)
15
+
16
+ **问题**: TypeScript 模块导入错误,导致节点无法加载
17
+
18
+ **修复内容**:
19
+ - ✅ 修复 7 个节点文件的类型导入(使用 `import type`)
20
+ - ✅ 重新导出 `ExecutionMode`
21
+ - ✅ 修复 PostgreSQL/pg 导入问题
22
+ - ✅ 修改 11 个文件
23
+
24
+ **测试结果**: 11/11 测试通过
25
+
26
+ #### 2. 阶段进展更新 ✅ (10 分钟)
27
+
28
+ **交付物**:
29
+ - ✅ `docs/phase-2b-progress-update.md` - 阶段 2b 进展报告
30
+ - ✅ `docs/import-fix-report.md` - 导入修复详细报告
31
+ - ✅ `docs/test-report.md` - 功能测试报告
32
+
33
+ #### 3. 数据库支持实现 ✅ (40 分钟)
34
+
35
+ **内容**:
36
+ - ✅ 实现 `MemoryTaskRepository` (内存版本)
37
+ - ✅ 更新配置支持数据库类型选择
38
+ - ✅ 创建数据库初始化脚本
39
+ - ✅ 创建完整工作流测试脚本
40
+
41
+ **新增文件**:
42
+ 1. `src/infrastructure/database/MemoryTaskRepository.ts` (290 行)
43
+ 2. `scripts/init-sqlite.ts` (SQLite 初始化脚本)
44
+ 3. `scripts/test-workflow-full.ts` (完整工作流测试)
45
+ 4. `docs/phase-2b-progress-update.md` (进展报告)
46
+
47
+ ---
48
+
49
+ ## 📈 项目当前状态
50
+
51
+ ### 整体进度:70%
52
+
53
+ ```
54
+ 阶段 1 [████████████████████] 100% ✅
55
+ 阶段 2 [███████████████████░░] 90% 🔄
56
+ 阶段 3 [░░░░░░░░░░░░░░░░░░░░] 0% ⏳
57
+ 阶段 4 [░░░░░░░░░░░░░░░░░░░░] 0% ⏳
58
+ ```
59
+
60
+ ### 阶段 2b 详细进度:90%
61
+
62
+ | 组件 | 状态 | 代码行数 | 测试状态 |
63
+ |------|------|---------|---------|
64
+ | 节点实现 | ✅ 6/6 | ~1,550 | 2/6 已测 |
65
+ | 工作流图 | ✅ 完成 | ~350 | 1/1 已测 |
66
+ | 导入修复 | ✅ 完成 | ~50 | - |
67
+ | 数据库支持 | ✅ 完成 | ~290 | 1/1 已测 |
68
+ | 测试脚本 | ✅ 完成 | ~800 | - |
69
+ | 文档 | ✅ 完成 | ~2,000 | - |
70
+ | **总计** | **100%** | **~5,040** | **50%** |
71
+
72
+ ---
73
+
74
+ ## ✅ 已验证的功能
75
+
76
+ ### 1. 基础设施 ✅
77
+
78
+ - ✅ 配置系统(类型安全、环境变量验证)
79
+ - ✅ 日志系统(Winston 结构化日志)
80
+ - ✅ 领域实体(5 个实体类)
81
+ - ✅ State 管理(创建、更新、验证)
82
+ - ✅ 内存 Repository(CRUD、抢占、快照)
83
+
84
+ ### 2. 服务层 ✅
85
+
86
+ - ✅ LLM Service(DeepSeek API、重试、Token 记录)
87
+ - ✅ Search Service(Tavily API、结果解析)
88
+ - ✅ Image Service(Doubao API、配置验证)
89
+ - ✅ Quality Service(硬规则、LLM 评分、改进建议)
90
+
91
+ ### 3. 节点层 ✅
92
+
93
+ - ✅ Search Node(搜索、缓存、降级)
94
+ - ✅ Organize Node(大纲生成、关键点提取)
95
+ - ⏳ Write Node(已实现,待测试)
96
+ - ⏳ CheckText Node(已实现,待测试)
97
+ - ⏳ GenerateImage Node(已实现,待测试)
98
+ - ⏳ CheckImage Node(已实现,待测试)
99
+
100
+ ### 4. 工作流 ✅
101
+
102
+ - ✅ 完整工作流图构建
103
+ - ✅ 节点链式执行(Search → Organize)
104
+ - ✅ 状态传递和更新
105
+ - ✅ 路由函数(质检重试)
106
+ - ⏳ 完整工作流执行(测试中)
107
+
108
+ ---
109
+
110
+ ## 🧪 测试统计
111
+
112
+ ### 通过的测试(11/11)
113
+
114
+ | 测试类别 | 数量 | 通过率 | 说明 |
115
+ |---------|------|--------|------|
116
+ | 基础功能 | 4 | 100% | 配置、日志、实体、State |
117
+ | 服务层 | 4 | 100% | LLM、Search、Image、Quality |
118
+ | 节点层 | 2 | 100% | Search、Organize |
119
+ | 工作流 | 1 | 100% | 简化工作流(无数据库) |
120
+
121
+ ### 性能指标
122
+
123
+ | 指标 | 数值 | 说明 |
124
+ |------|------|------|
125
+ | Search Node | ~3.9秒 | 包含 API 调用 |
126
+ | Organize Node | ~25.5秒 | 包含 LLM 调用 |
127
+ | 简化工作流 | ~30秒 | Search + Organize |
128
+ | 完整工作流 | ~60-120秒 | 预计(测试中) |
129
+
130
+ ---
131
+
132
+ ## 📁 代码统计
133
+
134
+ ### 新增/修改文件(本次会话)
135
+
136
+ | 类型 | 文件数 | 代码行数 |
137
+ |------|--------|---------|
138
+ | 修复导入 | 11 | ~50 |
139
+ | Repository | 1 | ~290 |
140
+ | 测试脚本 | 3 | ~500 |
141
+ | 文档 | 4 | ~2,000 |
142
+ | 配置更新 | 3 | ~20 |
143
+ | **总计** | **22** | **~2,860** |
144
+
145
+ ### 累计代码量
146
+
147
+ | 阶段 | 文件数 | 代码行数 | 占比 |
148
+ |------|--------|---------|------|
149
+ | 阶段 1 | 20+ | ~2,580 | 26% |
150
+ | 阶段 2a | 6 | ~1,290 | 13% |
151
+ | 阶段 2b | 55+ | ~6,900 | 61% |
152
+ | **总计** | **81+** | **~10,770** | **100%** |
153
+
154
+ ---
155
+
156
+ ## 🎯 核心功能验证
157
+
158
+ ### 已验证 ✅
159
+
160
+ 1. **节点独立执行** ✅
161
+ - Search Node: 10 条搜索结果
162
+ - Organize Node: 大纲 506 字符,4 个关键点
163
+
164
+ 2. **节点链式执行** ✅
165
+ - Search → Organize 流程正常
166
+ - 状态传递正确
167
+ - 数据流动正常
168
+
169
+ 3. **真实 API 集成** ✅
170
+ - DeepSeek LLM: 响应正常,Token 记录准确
171
+ - Tavily Search: 返回结果正常
172
+ - 成本计算: ~¥0.001-0.002/次
173
+
174
+ 4. **错误处理** ✅
175
+ - 搜索失败降级策略正常
176
+ - 质检不通过处理正常
177
+ - 日志记录详细
178
+
179
+ ### 待验证 ⏳
180
+
181
+ 1. **完整工作流** ⏳ (测试中)
182
+ - Write Node
183
+ - CheckText Node
184
+ - 质检重试机制
185
+
186
+ 2. **图片生成** ⏳
187
+ - GenerateImage Node
188
+ - CheckImage Node
189
+ - 图片质量评估
190
+
191
+ 3. **检查点恢复** ⏳
192
+ - 快照保存
193
+ - 崩溃恢复
194
+ - 断点续传
195
+
196
+ ---
197
+
198
+ ## 🚀 后续计划
199
+
200
+ ### 立即可做
201
+
202
+ #### 选项 1:完成阶段 2b 测试(推荐)
203
+
204
+ **时间**: 1-2 小时
205
+
206
+ **任务**:
207
+ 1. 查看完整工作流测试结果
208
+ 2. 修复发现的问题
209
+ 3. 补充 Write、CheckText 等节点测试
210
+ 4. 验证质检重试机制
211
+
212
+ **预期成果**:
213
+ - ✅ 阶段 2b 100% 完成
214
+ - ✅ 所有节点测试通过
215
+ - ✅ 完整工作流验证成功
216
+
217
+ #### 选项 2:直接进入阶段 3
218
+
219
+ **时间**: 7-10 天
220
+
221
+ **任务**:
222
+ 1. Bull 队列集成
223
+ 2. Worker 实现
224
+ 3. 任务调度
225
+ 4. 监控和日志
226
+
227
+ **预期成果**:
228
+ - ✅ 异步任务系统
229
+ - ✅ Worker 抢占机制
230
+ - ✅ 高并发支持
231
+
232
+ #### 选项 3:PostgreSQL 配置
233
+
234
+ **时间**: 2-3 小时
235
+
236
+ **任务**:
237
+ 1. 启动 PostgreSQL(Docker 或本地)
238
+ 2. 运行数据库迁移
239
+ 3. 验证 PostgreSQL Repository
240
+ 4. 切换到 PostgreSQL 进行测试
241
+
242
+ **预期成果**:
243
+ - ✅ 数据持久化
244
+ - ✅ 生产级数据库支持
245
+
246
+ ---
247
+
248
+ ## 💡 技术亮点
249
+
250
+ ### 1. 架构设计
251
+
252
+ - ✅ **模块化节点**: 所有节点继承 BaseNode
253
+ - ✅ **类型安全**: 使用 `import type` 严格区分类型导入
254
+ - ✅ **服务化**: LLM、Search、Image、Quality 服务封装
255
+ - ✅ **数据库抽象**: 支持 Memory、PostgreSQL、SQLite
256
+
257
+ ### 2. 智能质检
258
+
259
+ - ✅ **双重检查**: 硬规则 + LLM 软评分
260
+ - ✅ **自动重试**: 文本最多 3 次,配图最多 2 次
261
+ - ✅ **改进建议**: 具体的修改建议
262
+
263
+ ### 3. 错误处理
264
+
265
+ - ✅ **降级策略**: 搜索失败不影响工作流
266
+ - ✅ **重试机制**: LLM 调用失败自动重试
267
+ - ✅ **日志记录**: 详细的错误日志和堆栈
268
+
269
+ ---
270
+
271
+ ## ⚠️ 已知问题
272
+
273
+ ### 轻微问题(可接受)
274
+
275
+ 1. **部分节点未测试** (可接受)
276
+ - Write、CheckText、GenerateImage、CheckImage Node
277
+ - **解决方案**: 补充单元测试
278
+
279
+ 2. **PostgreSQL 未配置** (可接受)
280
+ - 当前使用 Memory Repository
281
+ - **解决方案**: 稍后配置或继续使用 Memory
282
+
283
+ 3. **TypeScript 编译警告** (不影响功能)
284
+ - Zod 类型不匹配
285
+ - LangGraph 类型问题
286
+ - **解决方案**: 后续统一修复
287
+
288
+ ---
289
+
290
+ ## 📝 交付物清单
291
+
292
+ ### 代码交付物
293
+
294
+ - ✅ 6 个核心节点实现
295
+ - ✅ 1 个完整工作流图
296
+ - ✅ 1 个 Memory Repository
297
+ - ✅ 5 个测试脚本
298
+ - ✅ 导入问题修复(11 个文件)
299
+
300
+ ### 文档交付物
301
+
302
+ - ✅ `docs/phase-2b-progress-update.md` - 阶段进展
303
+ - ✅ `docs/import-fix-report.md` - 导入修复报告
304
+ - ✅ `docs/test-report.md` - 功能测试报告
305
+ - ✅ `docs/session-summary.md` - 本文档
306
+
307
+ ### 测试交付物
308
+
309
+ - ✅ 基础功能测试(4 个)
310
+ - ✅ 服务层测试(4 个)
311
+ - ✅ 节点功能测试(2 个)
312
+ - ✅ 简化工作流测试(1 个)
313
+ - ⏳ 完整工作流测试(运行中)
314
+
315
+ ---
316
+
317
+ ## 🎉 总结
318
+
319
+ ### 主要成果
320
+
321
+ 1. ✅ **导入问题全部解决** - 20 分钟快速修复
322
+ 2. ✅ **数据库支持实现** - Memory Repository 可用
323
+ 3. ✅ **测试框架完善** - 11/11 测试通过
324
+ 4. ✅ **文档完整齐全** - 4 份详细文档
325
+
326
+ ### 质量指标
327
+
328
+ | 指标 | 目标 | 实际 | 状态 |
329
+ |------|------|------|------|
330
+ | 节点实现 | 6 | 6 | ✅ |
331
+ | 测试通过率 | 80% | 100% | ✅ |
332
+ | API 集成 | 2+ | 2 | ✅ |
333
+ | 文档完整性 | 完整 | 完整 | ✅ |
334
+ | **整体进度** | **90%** | **90%** | **✅** |
335
+
336
+ ### 时间统计
337
+
338
+ | 任务 | 计划时间 | 实际时间 | 状态 |
339
+ |------|---------|---------|------|
340
+ | 导入修复 | - | 20 分钟 | ✅ |
341
+ | 进展更新 | - | 10 分钟 | ✅ |
342
+ | 数据库实现 | - | 40 分钟 | ✅ |
343
+ | 测试编写 | - | 30 分钟 | ✅ |
344
+ | 文档编写 | - | 20 分钟 | ✅ |
345
+ | **总计** | **~2 小时** | **~2 小时** | **✅** |
346
+
347
+ ---
348
+
349
+ ## 📞 下一步行动
350
+
351
+ ### 推荐方案
352
+
353
+ 根据当前状态,我建议:
354
+
355
+ **选项 1: 查看完整工作流测试结果**
356
+ - 测试已在后台运行
357
+ - 查看 `TaskOutput` 了解结果
358
+ - 根据结果调整
359
+
360
+ **选项 2: 补充节点测试**
361
+ - 测试 Write Node
362
+ - 测试 CheckText Node
363
+ - 验证质检重试
364
+
365
+ **选项 3: 直接进入阶段 3**
366
+ - 核心功能已验证
367
+ - 可以开始实现异步系统
368
+ - 数据库部分可后续完善
369
+
370
+ 你想选择哪个方案?或者先查看完整工作流测试的结果?
@@ -0,0 +1,239 @@
1
+ # 配置系统更新说明
2
+
3
+ ## 更新时间
4
+ 2026-01-23
5
+
6
+ ## 更新内容
7
+
8
+ ### 1. 智能数据库类型默认值
9
+
10
+ 配置系统现在支持根据运行环境自动选择默认的数据库类型:
11
+
12
+ - **开发环境 (development)**: 默认使用 `sqlite`
13
+ - **生产环境 (production)**: 默认使用 `postgres`
14
+ - **测试环境 (test)**: 默认使用 `memory`
15
+
16
+ #### 行为说明
17
+
18
+ 1. **自动选择**:如果未设置 `DATABASE_TYPE` 环境变量,系统会根据 `NODE_ENV` 自动选择合适的数据库类型
19
+ 2. **手动覆盖**:如果显式设置了 `DATABASE_TYPE`,将使用指定的值而不是默认值
20
+ 3. **向后兼容**:现有配置文件不受影响,继续使用之前设置的数据库类型
21
+
22
+ ### 2. PostgreSQL 配置变为可选
23
+
24
+ PostgreSQL 相关的环境变量现在只在 `DATABASE_TYPE=postgres` 时才是必需的:
25
+
26
+ - `POSTGRES_HOST`
27
+ - `POSTGRES_PORT`
28
+ - `POSTGRES_USER`
29
+ - `POSTGRES_PASSWORD`
30
+ - `POSTGRES_DB`
31
+ - `POSTGRES_SSL`
32
+
33
+ #### 验证逻辑
34
+
35
+ 当 `DATABASE_TYPE=postgres` 时,系统会验证以下字段是否已设置:
36
+ - POSTGRES_HOST(必需)
37
+ - POSTGRES_USER(必需)
38
+ - POSTGRES_PASSWORD(必需)
39
+ - POSTGRES_DB(必需)
40
+
41
+ 如果缺少任何必需字段,系统会抛出清晰的错误提示,例如:
42
+ ```
43
+ PostgreSQL configuration is required when DATABASE_TYPE='postgres'.
44
+ Missing environment variables: POSTGRES_HOST, POSTGRES_USER
45
+ ```
46
+
47
+ ### 3. 配置日志优化
48
+
49
+ 启动时的日志输出现在会显示实际使用的数据库类型:
50
+
51
+ ```
52
+ ========================================
53
+ Configuration Loaded Successfully
54
+ ========================================
55
+ Environment: development
56
+ Worker ID: worker-1
57
+ Concurrency: 2
58
+ Database Type: sqlite
59
+ PostgreSQL: Not configured (using sqlite)
60
+ Redis: redis://:****@localhost:6379
61
+ LLM: deepseek-chat @ https://api.deepseek.com
62
+ Storage: local
63
+ ========================================
64
+ ```
65
+
66
+ 如果使用 PostgreSQL,则会显示:
67
+ ```
68
+ Database Type: postgres
69
+ PostgreSQL: localhost:5432/content_creator
70
+ ```
71
+
72
+ ## 使用示例
73
+
74
+ ### 开发环境(推荐使用 SQLite)
75
+
76
+ ```bash
77
+ # .env 文件
78
+ NODE_ENV=development
79
+ # 不设置 DATABASE_TYPE,自动使用 sqlite
80
+
81
+ # 其他必需配置
82
+ REDIS_URL=redis://localhost:6379
83
+ LLM_API_KEY=your_key
84
+ LLM_BASE_URL=https://api.deepseek.com
85
+ TAVILY_API_KEY=your_key
86
+ ARK_API_KEY=your_key
87
+ ```
88
+
89
+ ### 生产环境(推荐使用 PostgreSQL)
90
+
91
+ ```bash
92
+ # .env 文件
93
+ NODE_ENV=production
94
+ # 不设置 DATABASE_TYPE,自动使用 postgres
95
+
96
+ # PostgreSQL 配置(必需)
97
+ POSTGRES_HOST=localhost
98
+ POSTGRES_PORT=5432
99
+ POSTGRES_USER=postgres
100
+ POSTGRES_PASSWORD=secure_password
101
+ POSTGRES_DB=content_creator
102
+
103
+ # 其他必需配置
104
+ REDIS_URL=redis://localhost:6379
105
+ LLM_API_KEY=your_key
106
+ LLM_BASE_URL=https://api.deepseek.com
107
+ TAVILY_API_KEY=your_key
108
+ ARK_API_KEY=your_key
109
+ ```
110
+
111
+ ### 测试环境(自动使用内存数据库)
112
+
113
+ ```bash
114
+ # 测试环境下,自动使用 memory 数据库
115
+ NODE_ENV=test
116
+ # 不需要任何数据库配置
117
+ ```
118
+
119
+ ### 手动指定数据库类型
120
+
121
+ ```bash
122
+ # 即使在开发环境,也可以强制使用 PostgreSQL
123
+ NODE_ENV=development
124
+ DATABASE_TYPE=postgres
125
+
126
+ # PostgreSQL 配置(必需)
127
+ POSTGRES_HOST=localhost
128
+ POSTGRES_PORT=5432
129
+ POSTGRES_USER=postgres
130
+ POSTGRES_PASSWORD=secure_password
131
+ POSTGRES_DB=content_creator
132
+ ```
133
+
134
+ ## 迁移指南
135
+
136
+ ### 从旧配置迁移
137
+
138
+ **之前的配置**(PostgreSQL 总是必需的):
139
+ ```bash
140
+ # 必须提供 PostgreSQL 配置,即使不使用
141
+ POSTGRES_HOST=localhost
142
+ POSTGRES_PORT=5432
143
+ POSTGRES_USER=postgres
144
+ POSTGRES_PASSWORD=your_password
145
+ POSTGRES_DB=content_creator
146
+ ```
147
+
148
+ **新的配置**(根据需要选择):
149
+ ```bash
150
+ # 选项 1: 使用 SQLite(推荐用于开发)
151
+ NODE_ENV=development
152
+ # 无需 PostgreSQL 配置
153
+
154
+ # 选项 2: 使用 PostgreSQL(推荐用于生产)
155
+ NODE_ENV=production
156
+ POSTGRES_HOST=localhost
157
+ POSTGRES_PORT=5432
158
+ POSTGRES_USER=postgres
159
+ POSTGRES_PASSWORD=your_password
160
+ POSTGRES_DB=content_creator
161
+ ```
162
+
163
+ ### 现有项目更新步骤
164
+
165
+ 1. **确定你的运行环境**:检查 `NODE_ENV` 的值
166
+ 2. **选择数据库类型**:
167
+ - 开发环境:建议使用 SQLite(删除或注释掉 `DATABASE_TYPE`)
168
+ - 生产环境:建议使用 PostgreSQL(确保有 PostgreSQL 配置)
169
+ 3. **更新 .env 文件**:参考上面的示例
170
+ 4. **验证配置**:启动应用,查看日志输出的 `Database Type`
171
+
172
+ ## 技术细节
173
+
174
+ ### 实现原理
175
+
176
+ 1. **配置类增强** (`src/config/index.ts`):
177
+ - 添加 `private databaseType` 属性存储实际使用的数据库类型
178
+ - 实现 `getDefaultDatabaseType()` 方法根据环境返回默认值
179
+ - 添加 `validatePostgresConfig()` 方法验证 PostgreSQL 配置
180
+
181
+ 2. **Schema 调整**:
182
+ - `DATABASE_TYPE` 改为可选(`optional()`)
183
+ - 所有 PostgreSQL 相关字段改为可选
184
+ - 使用 `z.coerce` 简化类型转换
185
+
186
+ 3. **向后兼容**:
187
+ - `config.database` 和 `config.postgres` 的接口保持不变
188
+ - 现有代码无需修改即可工作
189
+
190
+ ### 类型安全
191
+
192
+ 所有修改都保持了完整的 TypeScript 类型安全:
193
+
194
+ ```typescript
195
+ // database.type 的类型是字面量类型
196
+ type DatabaseType = 'memory' | 'postgres' | 'sqlite';
197
+
198
+ // PostgreSQL 配置在使用时有适当的 undefined 检查
199
+ if (config.database.type === 'postgres') {
200
+ // 这里可以安全地访问 postgres 配置
201
+ const { host, port, user } = config.postgres;
202
+ }
203
+ ```
204
+
205
+ ## 测试
206
+
207
+ 配置系统包含了完整的测试用例(`tests/config.test.ts`),覆盖:
208
+
209
+ - ✅ 开发环境默认使用 SQLite
210
+ - ✅ 生产环境默认使用 PostgreSQL
211
+ - ✅ 测试环境默认使用内存数据库
212
+ - ✅ 显式设置 DATABASE_TYPE 覆盖默认值
213
+ - ✅ PostgreSQL 配置验证逻辑
214
+ - ✅ 非 postgres 模式下 PostgreSQL 配置可选
215
+
216
+ ## 常见问题
217
+
218
+ ### Q: 我在开发环境想用 PostgreSQL 怎么办?
219
+
220
+ A: 显式设置 `DATABASE_TYPE=postgres` 并提供完整的 PostgreSQL 配置即可。
221
+
222
+ ### Q: 生产环境可以使用 SQLite 吗?
223
+
224
+ A: 技术上可以,但不推荐。显式设置 `DATABASE_TYPE=sqlite` 即可,但生产环境建议使用 PostgreSQL 以获得更好的性能和可靠性。
225
+
226
+ ### Q: 我需要更新代码吗?
227
+
228
+ A: 不需要。配置系统的接口保持不变,现有代码无需修改。
229
+
230
+ ### Q: 如何验证当前使用的数据库类型?
231
+
232
+ A: 查看应用启动时的日志输出,会显示 `Database Type: xxx`。或在代码中访问 `config.database.type`。
233
+
234
+ ## 相关文件
235
+
236
+ - **配置实现**: `/Users/Oychao/Documents/Projects/content-creator/src/config/index.ts`
237
+ - **配置示例**: `/Users/Oychao/Documents/Projects/content-creator/.env.example`
238
+ - **测试文件**: `/Users/Oychao/Documents/Projects/content-creator/tests/config.test.ts`
239
+ - **文档**: `/Users/Oychao/Documents/Projects/content-creator/docs/config-system-update.md`