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.
- package/README.md +309 -0
- package/dist/application/workflow/SyncExecutor.d.ts +75 -0
- package/dist/application/workflow/SyncExecutor.d.ts.map +1 -0
- package/dist/application/workflow/SyncExecutor.js +370 -0
- package/dist/application/workflow/SyncExecutor.js.map +1 -0
- package/dist/application/workflow/types.d.ts +46 -0
- package/dist/application/workflow/types.d.ts.map +1 -0
- package/dist/application/workflow/types.js +7 -0
- package/dist/application/workflow/types.js.map +1 -0
- package/dist/config/index.d.ts +173 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +288 -0
- package/dist/config/index.js.map +1 -0
- package/dist/domain/entities/QualityCheck.d.ts +181 -0
- package/dist/domain/entities/QualityCheck.d.ts.map +1 -0
- package/dist/domain/entities/QualityCheck.js +39 -0
- package/dist/domain/entities/QualityCheck.js.map +1 -0
- package/dist/domain/entities/Result.d.ts +103 -0
- package/dist/domain/entities/Result.d.ts.map +1 -0
- package/dist/domain/entities/Result.js +15 -0
- package/dist/domain/entities/Result.js.map +1 -0
- package/dist/domain/entities/Task.d.ts +130 -0
- package/dist/domain/entities/Task.d.ts.map +1 -0
- package/dist/domain/entities/Task.js +64 -0
- package/dist/domain/entities/Task.js.map +1 -0
- package/dist/domain/entities/TaskStep.d.ts +160 -0
- package/dist/domain/entities/TaskStep.d.ts.map +1 -0
- package/dist/domain/entities/TaskStep.js +30 -0
- package/dist/domain/entities/TaskStep.js.map +1 -0
- package/dist/domain/entities/TokenUsage.d.ts +70 -0
- package/dist/domain/entities/TokenUsage.d.ts.map +1 -0
- package/dist/domain/entities/TokenUsage.js +42 -0
- package/dist/domain/entities/TokenUsage.js.map +1 -0
- package/dist/domain/entities/index.d.ts +11 -0
- package/dist/domain/entities/index.d.ts.map +1 -0
- package/dist/domain/entities/index.js +16 -0
- package/dist/domain/entities/index.js.map +1 -0
- package/dist/domain/repositories/QualityCheckRepository.d.ts +49 -0
- package/dist/domain/repositories/QualityCheckRepository.d.ts.map +1 -0
- package/dist/domain/repositories/QualityCheckRepository.js +5 -0
- package/dist/domain/repositories/QualityCheckRepository.js.map +1 -0
- package/dist/domain/repositories/ResultRepository.d.ts +43 -0
- package/dist/domain/repositories/ResultRepository.d.ts.map +1 -0
- package/dist/domain/repositories/ResultRepository.js +5 -0
- package/dist/domain/repositories/ResultRepository.js.map +1 -0
- package/dist/domain/repositories/TaskRepository.d.ts +240 -0
- package/dist/domain/repositories/TaskRepository.d.ts.map +1 -0
- package/dist/domain/repositories/TaskRepository.js +7 -0
- package/dist/domain/repositories/TaskRepository.js.map +1 -0
- package/dist/domain/workflow/CheckpointManager.d.ts +94 -0
- package/dist/domain/workflow/CheckpointManager.d.ts.map +1 -0
- package/dist/domain/workflow/CheckpointManager.js +224 -0
- package/dist/domain/workflow/CheckpointManager.js.map +1 -0
- package/dist/domain/workflow/ContentCreatorGraph.d.ts +17 -0
- package/dist/domain/workflow/ContentCreatorGraph.d.ts.map +1 -0
- package/dist/domain/workflow/ContentCreatorGraph.js +381 -0
- package/dist/domain/workflow/ContentCreatorGraph.js.map +1 -0
- package/dist/domain/workflow/State.d.ts +172 -0
- package/dist/domain/workflow/State.d.ts.map +1 -0
- package/dist/domain/workflow/State.js +184 -0
- package/dist/domain/workflow/State.js.map +1 -0
- package/dist/domain/workflow/index.d.ts +11 -0
- package/dist/domain/workflow/index.d.ts.map +1 -0
- package/dist/domain/workflow/index.js +15 -0
- package/dist/domain/workflow/index.js.map +1 -0
- package/dist/domain/workflow/nodes/BaseNode.d.ts +134 -0
- package/dist/domain/workflow/nodes/BaseNode.d.ts.map +1 -0
- package/dist/domain/workflow/nodes/BaseNode.js +253 -0
- package/dist/domain/workflow/nodes/BaseNode.js.map +1 -0
- package/dist/domain/workflow/nodes/CheckImageNode.d.ts +43 -0
- package/dist/domain/workflow/nodes/CheckImageNode.d.ts.map +1 -0
- package/dist/domain/workflow/nodes/CheckImageNode.js +254 -0
- package/dist/domain/workflow/nodes/CheckImageNode.js.map +1 -0
- package/dist/domain/workflow/nodes/CheckTextNode.d.ts +66 -0
- package/dist/domain/workflow/nodes/CheckTextNode.d.ts.map +1 -0
- package/dist/domain/workflow/nodes/CheckTextNode.js +530 -0
- package/dist/domain/workflow/nodes/CheckTextNode.js.map +1 -0
- package/dist/domain/workflow/nodes/GenerateImageNode.d.ts +44 -0
- package/dist/domain/workflow/nodes/GenerateImageNode.d.ts.map +1 -0
- package/dist/domain/workflow/nodes/GenerateImageNode.js +272 -0
- package/dist/domain/workflow/nodes/GenerateImageNode.js.map +1 -0
- package/dist/domain/workflow/nodes/OrganizeNode.d.ts +49 -0
- package/dist/domain/workflow/nodes/OrganizeNode.d.ts.map +1 -0
- package/dist/domain/workflow/nodes/OrganizeNode.js +241 -0
- package/dist/domain/workflow/nodes/OrganizeNode.js.map +1 -0
- package/dist/domain/workflow/nodes/SearchNode.d.ts +48 -0
- package/dist/domain/workflow/nodes/SearchNode.d.ts.map +1 -0
- package/dist/domain/workflow/nodes/SearchNode.js +151 -0
- package/dist/domain/workflow/nodes/SearchNode.js.map +1 -0
- package/dist/domain/workflow/nodes/WriteNode.d.ts +68 -0
- package/dist/domain/workflow/nodes/WriteNode.d.ts.map +1 -0
- package/dist/domain/workflow/nodes/WriteNode.js +431 -0
- package/dist/domain/workflow/nodes/WriteNode.js.map +1 -0
- package/dist/domain/workflow/nodes/config/index.js +287 -0
- package/dist/domain/workflow/nodes/domain/entities/Task.js +68 -0
- package/dist/domain/workflow/nodes/domain/workflow/State.js +200 -0
- package/dist/domain/workflow/nodes/domain/workflow/nodes/BaseNode.js +328 -0
- package/dist/domain/workflow/nodes/domain/workflow/nodes/CheckTextNode.js +500 -0
- package/dist/domain/workflow/nodes/index.d.ts +13 -0
- package/dist/domain/workflow/nodes/index.d.ts.map +1 -0
- package/dist/domain/workflow/nodes/index.js +13 -0
- package/dist/domain/workflow/nodes/index.js.map +1 -0
- package/dist/domain/workflow/nodes/infrastructure/logging/logger.js +275 -0
- package/dist/domain/workflow/nodes/services/llm/EnhancedLLMService.js +559 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/cache/CacheService.d.ts +139 -0
- package/dist/infrastructure/cache/CacheService.d.ts.map +1 -0
- package/dist/infrastructure/cache/CacheService.js +419 -0
- package/dist/infrastructure/cache/CacheService.js.map +1 -0
- package/dist/infrastructure/cache/index.d.ts +5 -0
- package/dist/infrastructure/cache/index.d.ts.map +1 -0
- package/dist/infrastructure/cache/index.js +6 -0
- package/dist/infrastructure/cache/index.js.map +1 -0
- package/dist/infrastructure/database/BaseRepository.d.ts +98 -0
- package/dist/infrastructure/database/BaseRepository.d.ts.map +1 -0
- package/dist/infrastructure/database/BaseRepository.js +178 -0
- package/dist/infrastructure/database/BaseRepository.js.map +1 -0
- package/dist/infrastructure/database/MemoryTaskRepository.d.ts +77 -0
- package/dist/infrastructure/database/MemoryTaskRepository.d.ts.map +1 -0
- package/dist/infrastructure/database/MemoryTaskRepository.js +309 -0
- package/dist/infrastructure/database/MemoryTaskRepository.js.map +1 -0
- package/dist/infrastructure/database/PostgresQualityCheckRepository.d.ts +36 -0
- package/dist/infrastructure/database/PostgresQualityCheckRepository.d.ts.map +1 -0
- package/dist/infrastructure/database/PostgresQualityCheckRepository.js +89 -0
- package/dist/infrastructure/database/PostgresQualityCheckRepository.js.map +1 -0
- package/dist/infrastructure/database/PostgresTaskRepository.d.ts +94 -0
- package/dist/infrastructure/database/PostgresTaskRepository.d.ts.map +1 -0
- package/dist/infrastructure/database/PostgresTaskRepository.js +364 -0
- package/dist/infrastructure/database/PostgresTaskRepository.js.map +1 -0
- package/dist/infrastructure/database/ResultRepository.d.ts +41 -0
- package/dist/infrastructure/database/ResultRepository.d.ts.map +1 -0
- package/dist/infrastructure/database/ResultRepository.js +86 -0
- package/dist/infrastructure/database/ResultRepository.js.map +1 -0
- package/dist/infrastructure/database/SQLiteTaskRepository.d.ts +101 -0
- package/dist/infrastructure/database/SQLiteTaskRepository.d.ts.map +1 -0
- package/dist/infrastructure/database/SQLiteTaskRepository.js +548 -0
- package/dist/infrastructure/database/SQLiteTaskRepository.js.map +1 -0
- package/dist/infrastructure/database/index.d.ts +32 -0
- package/dist/infrastructure/database/index.d.ts.map +1 -0
- package/dist/infrastructure/database/index.js +72 -0
- package/dist/infrastructure/database/index.js.map +1 -0
- package/dist/infrastructure/logging/logger.d.ts +69 -0
- package/dist/infrastructure/logging/logger.d.ts.map +1 -0
- package/dist/infrastructure/logging/logger.js +169 -0
- package/dist/infrastructure/logging/logger.js.map +1 -0
- package/dist/infrastructure/monitoring/LoggingService.d.ts +109 -0
- package/dist/infrastructure/monitoring/LoggingService.d.ts.map +1 -0
- package/dist/infrastructure/monitoring/LoggingService.js +198 -0
- package/dist/infrastructure/monitoring/LoggingService.js.map +1 -0
- package/dist/infrastructure/monitoring/MetricsService.d.ts +112 -0
- package/dist/infrastructure/monitoring/MetricsService.d.ts.map +1 -0
- package/dist/infrastructure/monitoring/MetricsService.js +362 -0
- package/dist/infrastructure/monitoring/MetricsService.js.map +1 -0
- package/dist/infrastructure/monitoring/SentryService.d.ts +108 -0
- package/dist/infrastructure/monitoring/SentryService.d.ts.map +1 -0
- package/dist/infrastructure/monitoring/SentryService.js +282 -0
- package/dist/infrastructure/monitoring/SentryService.js.map +1 -0
- package/dist/infrastructure/monitoring/index.d.ts +7 -0
- package/dist/infrastructure/monitoring/index.d.ts.map +1 -0
- package/dist/infrastructure/monitoring/index.js +10 -0
- package/dist/infrastructure/monitoring/index.js.map +1 -0
- package/dist/infrastructure/queue/TaskQueue.d.ts +110 -0
- package/dist/infrastructure/queue/TaskQueue.d.ts.map +1 -0
- package/dist/infrastructure/queue/TaskQueue.js +363 -0
- package/dist/infrastructure/queue/TaskQueue.js.map +1 -0
- package/dist/infrastructure/queue/index.d.ts +5 -0
- package/dist/infrastructure/queue/index.d.ts.map +1 -0
- package/dist/infrastructure/queue/index.js +5 -0
- package/dist/infrastructure/queue/index.js.map +1 -0
- package/dist/infrastructure/redis/connection.d.ts +61 -0
- package/dist/infrastructure/redis/connection.d.ts.map +1 -0
- package/dist/infrastructure/redis/connection.js +184 -0
- package/dist/infrastructure/redis/connection.js.map +1 -0
- package/dist/infrastructure/redis/index.d.ts +5 -0
- package/dist/infrastructure/redis/index.d.ts.map +1 -0
- package/dist/infrastructure/redis/index.js +5 -0
- package/dist/infrastructure/redis/index.js.map +1 -0
- package/dist/infrastructure/security/ApiKeyService.d.ts +103 -0
- package/dist/infrastructure/security/ApiKeyService.d.ts.map +1 -0
- package/dist/infrastructure/security/ApiKeyService.js +250 -0
- package/dist/infrastructure/security/ApiKeyService.js.map +1 -0
- package/dist/infrastructure/security/QuotaService.d.ts +87 -0
- package/dist/infrastructure/security/QuotaService.d.ts.map +1 -0
- package/dist/infrastructure/security/QuotaService.js +303 -0
- package/dist/infrastructure/security/QuotaService.js.map +1 -0
- package/dist/infrastructure/security/RateLimiter.d.ts +104 -0
- package/dist/infrastructure/security/RateLimiter.d.ts.map +1 -0
- package/dist/infrastructure/security/RateLimiter.js +331 -0
- package/dist/infrastructure/security/RateLimiter.js.map +1 -0
- package/dist/infrastructure/security/index.d.ts +7 -0
- package/dist/infrastructure/security/index.d.ts.map +1 -0
- package/dist/infrastructure/security/index.js +10 -0
- package/dist/infrastructure/security/index.js.map +1 -0
- package/dist/monitoring/index.d.ts +5 -0
- package/dist/monitoring/index.d.ts.map +1 -0
- package/dist/monitoring/index.js +5 -0
- package/dist/monitoring/index.js.map +1 -0
- package/dist/monitoring/server.d.ts +14 -0
- package/dist/monitoring/server.d.ts.map +1 -0
- package/dist/monitoring/server.js +99 -0
- package/dist/monitoring/server.js.map +1 -0
- package/dist/presentation/cli/commands/cancel.d.ts +8 -0
- package/dist/presentation/cli/commands/cancel.d.ts.map +1 -0
- package/dist/presentation/cli/commands/cancel.js +57 -0
- package/dist/presentation/cli/commands/cancel.js.map +1 -0
- package/dist/presentation/cli/commands/create.d.ts +8 -0
- package/dist/presentation/cli/commands/create.d.ts.map +1 -0
- package/dist/presentation/cli/commands/create.js +368 -0
- package/dist/presentation/cli/commands/create.js.map +1 -0
- package/dist/presentation/cli/commands/result.d.ts +8 -0
- package/dist/presentation/cli/commands/result.d.ts.map +1 -0
- package/dist/presentation/cli/commands/result.js +121 -0
- package/dist/presentation/cli/commands/result.js.map +1 -0
- package/dist/presentation/cli/commands/status.d.ts +8 -0
- package/dist/presentation/cli/commands/status.d.ts.map +1 -0
- package/dist/presentation/cli/commands/status.js +92 -0
- package/dist/presentation/cli/commands/status.js.map +1 -0
- package/dist/presentation/cli/index.d.ts +8 -0
- package/dist/presentation/cli/index.d.ts.map +1 -0
- package/dist/presentation/cli/index.js +32 -0
- package/dist/presentation/cli/index.js.map +1 -0
- package/dist/presentation/cli/utils/cleanup.d.ts +14 -0
- package/dist/presentation/cli/utils/cleanup.d.ts.map +1 -0
- package/dist/presentation/cli/utils/cleanup.js +62 -0
- package/dist/presentation/cli/utils/cleanup.js.map +1 -0
- package/dist/presentation/cli/utils/formatter.d.ts +28 -0
- package/dist/presentation/cli/utils/formatter.d.ts.map +1 -0
- package/dist/presentation/cli/utils/formatter.js +68 -0
- package/dist/presentation/cli/utils/formatter.js.map +1 -0
- package/dist/presentation/cli.d.ts +7 -0
- package/dist/presentation/cli.d.ts.map +1 -0
- package/dist/presentation/cli.js +8 -0
- package/dist/presentation/cli.js.map +1 -0
- package/dist/presentation/monitor-cli.d.ts +8 -0
- package/dist/presentation/monitor-cli.d.ts.map +1 -0
- package/dist/presentation/monitor-cli.js +44 -0
- package/dist/presentation/monitor-cli.js.map +1 -0
- package/dist/presentation/worker-cli.d.ts +8 -0
- package/dist/presentation/worker-cli.d.ts.map +1 -0
- package/dist/presentation/worker-cli.js +51 -0
- package/dist/presentation/worker-cli.js.map +1 -0
- package/dist/schedulers/TaskScheduler.d.ts +99 -0
- package/dist/schedulers/TaskScheduler.d.ts.map +1 -0
- package/dist/schedulers/TaskScheduler.js +233 -0
- package/dist/schedulers/TaskScheduler.js.map +1 -0
- package/dist/schedulers/index.d.ts +5 -0
- package/dist/schedulers/index.d.ts.map +1 -0
- package/dist/schedulers/index.js +5 -0
- package/dist/schedulers/index.js.map +1 -0
- package/dist/services/image/ImageService.d.ts +68 -0
- package/dist/services/image/ImageService.d.ts.map +1 -0
- package/dist/services/image/ImageService.js +166 -0
- package/dist/services/image/ImageService.js.map +1 -0
- package/dist/services/index.d.ts +8 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +12 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/llm/EnhancedLLMService.d.ts +148 -0
- package/dist/services/llm/EnhancedLLMService.d.ts.map +1 -0
- package/dist/services/llm/EnhancedLLMService.js +425 -0
- package/dist/services/llm/EnhancedLLMService.js.map +1 -0
- package/dist/services/llm/LLMService.d.ts +103 -0
- package/dist/services/llm/LLMService.d.ts.map +1 -0
- package/dist/services/llm/LLMService.js +212 -0
- package/dist/services/llm/LLMService.js.map +1 -0
- package/dist/services/quality/HardRuleChecker.d.ts +143 -0
- package/dist/services/quality/HardRuleChecker.d.ts.map +1 -0
- package/dist/services/quality/HardRuleChecker.js +353 -0
- package/dist/services/quality/HardRuleChecker.js.map +1 -0
- package/dist/services/quality/LLMEvaluator.d.ts +105 -0
- package/dist/services/quality/LLMEvaluator.d.ts.map +1 -0
- package/dist/services/quality/LLMEvaluator.js +312 -0
- package/dist/services/quality/LLMEvaluator.js.map +1 -0
- package/dist/services/quality/QualityCheckService.d.ts +112 -0
- package/dist/services/quality/QualityCheckService.d.ts.map +1 -0
- package/dist/services/quality/QualityCheckService.js +342 -0
- package/dist/services/quality/QualityCheckService.js.map +1 -0
- package/dist/services/quality/QualityService.d.ts +75 -0
- package/dist/services/quality/QualityService.d.ts.map +1 -0
- package/dist/services/quality/QualityService.js +360 -0
- package/dist/services/quality/QualityService.js.map +1 -0
- package/dist/services/quality/index.d.ts +7 -0
- package/dist/services/quality/index.d.ts.map +1 -0
- package/dist/services/quality/index.js +10 -0
- package/dist/services/quality/index.js.map +1 -0
- package/dist/services/search/SearchService.d.ts +79 -0
- package/dist/services/search/SearchService.d.ts.map +1 -0
- package/dist/services/search/SearchService.js +193 -0
- package/dist/services/search/SearchService.js.map +1 -0
- package/dist/workers/TaskWorker.d.ts +61 -0
- package/dist/workers/TaskWorker.d.ts.map +1 -0
- package/dist/workers/TaskWorker.js +256 -0
- package/dist/workers/TaskWorker.js.map +1 -0
- package/dist/workers/index.d.ts +5 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +5 -0
- package/dist/workers/index.js.map +1 -0
- package/docs/DOCUMENTATION-ANALYSIS.md +190 -0
- package/docs/README.md +145 -0
- package/docs/SOURCE-CODE-ANALYSIS.md +1107 -0
- package/docs/architecture-complete.md +5524 -0
- package/docs/archive/implementation/implementation-analysis/README.md +244 -0
- package/docs/archive/implementation/implementation-analysis/implementation-analysis-context.md +483 -0
- package/docs/archive/implementation/implementation-analysis/implementation-analysis-plan.md +1242 -0
- package/docs/archive/implementation/implementation-analysis/implementation-analysis-tasks.md +777 -0
- package/docs/archive/phases/phase-1/phase-1-completion-summary.md +284 -0
- package/docs/archive/phases/phase-1/phase-1-implementation-guide.md +1380 -0
- package/docs/archive/phases/phase-2/phase-2a/phase-2a-completion-summary.md +443 -0
- package/docs/archive/phases/phase-2/phase-2b/phase-2b-completion-report.md +430 -0
- package/docs/archive/phases/phase-2/phase-2b/phase-2b-completion-summary.md +592 -0
- package/docs/archive/phases/phase-2/phase-2b/phase-2b-final-summary.md +371 -0
- package/docs/archive/phases/phase-2/phase-2b/phase-2b-preparation-complete.md +343 -0
- package/docs/archive/phases/phase-2/phase-2b/phase-2b-preparation.md +945 -0
- package/docs/archive/phases/phase-2/phase-2b/phase-2b-progress-update.md +366 -0
- package/docs/archive/phases/phase-3/phase-3-completion-summary.md +354 -0
- package/docs/archive/phases/phase-3/phase-3-development-plan.md +878 -0
- package/docs/archive/phases/phase-3/phase-3-quick-start.md +324 -0
- package/docs/archive/phases/phase-4/phase-4-completion-summary.md +708 -0
- package/docs/archive/phases/phase-4/phase-4-development-plan.md +740 -0
- package/docs/archive/phases/phase-4/phase-4-quick-start.md +632 -0
- package/docs/archive/phases/phase-4/phase-4-session-3-security-testing.md +484 -0
- package/docs/archive/phases/phase-4/phase-4-session-4-unit-tests.md +550 -0
- package/docs/archive/phases/phase-4/phase-4-session-5-security-tests.md +564 -0
- package/docs/archive/phases/phase-4/phase-4-session-6-cache-integration.md +456 -0
- package/docs/archive/phases/phase-4/phase-4-session-7-test-fixes.md +348 -0
- package/docs/archive/phases/phase-4/phase-4-session-8-taskqueue-fixes.md +323 -0
- package/docs/archive/phases/phase-4/phase-4-session-summary-continued.md +373 -0
- package/docs/archive/phases/phase-4/phase-4-session-summary.md +595 -0
- package/docs/archive/reports/progress-reports/PHASE_0_PROGRESS.md +242 -0
- package/docs/archive/reports/progress-reports/PHASE_0_SUMMARY.md +262 -0
- package/docs/archive/reports/progress-reports/PHASE_1_2_ISSUES.md +399 -0
- package/docs/archive/reports/progress-reports/PHASE_1_PROGRESS.md +388 -0
- package/docs/archive/reports/progress-reports/PHASE_3_PREPARATION.md +574 -0
- package/docs/archive/reports/progress-reports/current-progress-update.md +294 -0
- package/docs/archive/reports/progress-reports/final-summary.md +215 -0
- package/docs/archive/reports/progress-reports/implementation-summary.md +287 -0
- package/docs/archive/reports/progress-reports/project-progress-report.md +440 -0
- package/docs/archive/reports/progress-reports/project-progress.md +386 -0
- package/docs/archive/reports/test-reports/TEST-COVERAGE-REPORT.md +441 -0
- package/docs/archive/reports/test-reports/e2e-test-report.md +293 -0
- package/docs/archive/reports/test-reports/final-test-report.md +367 -0
- package/docs/archive/reports/test-reports/real-env-test-report.md +391 -0
- package/docs/archive/reports/test-reports/test-completion-summary.md +356 -0
- package/docs/archive/reports/test-reports/test-report.md +371 -0
- package/docs/archive/sessions/session-2-summary.md +429 -0
- package/docs/archive/sessions/session-3-summary.md +395 -0
- package/docs/archive/sessions/session-summary.md +370 -0
- package/docs/config-system-update.md +239 -0
- package/docs/database-refactoring-PLAN.md +199 -0
- package/docs/database-refactoring-SUMMARY.md +384 -0
- package/docs/quality-check-architecture.md +1030 -0
- package/docs/quick-start.md +388 -0
- package/docs/references/bullmq-quick-reference.md +525 -0
- package/docs/references/monitoring-optimization-guide.md +871 -0
- package/docs/references/performance-optimization-guide.md +933 -0
- package/docs/storage-guide.md +612 -0
- package/docs/test-implementation-PLAN.md +223 -0
- package/docs/test-implementation-SUMMARY.md +194 -0
- package/docs/user-guide.md +719 -0
- package/docs/workflow-architecture.md +549 -0
- package/package.json +126 -0
- package/src/application/workflow/SyncExecutor.ts +444 -0
- package/src/application/workflow/types.ts +57 -0
- package/src/config/index.ts +352 -0
- package/src/domain/entities/QualityCheck.ts +202 -0
- package/src/domain/entities/Result.ts +130 -0
- package/src/domain/entities/Task.ts +178 -0
- package/src/domain/entities/TaskStep.ts +188 -0
- package/src/domain/entities/TokenUsage.ts +119 -0
- package/src/domain/entities/index.ts +20 -0
- package/src/domain/repositories/QualityCheckRepository.ts +52 -0
- package/src/domain/repositories/ResultRepository.ts +47 -0
- package/src/domain/repositories/TaskRepository.ts +271 -0
- package/src/domain/workflow/CheckpointManager.ts +283 -0
- package/src/domain/workflow/ContentCreatorGraph.ts +446 -0
- package/src/domain/workflow/State.ts +321 -0
- package/src/domain/workflow/index.ts +18 -0
- package/src/domain/workflow/nodes/BaseNode.ts +325 -0
- package/src/domain/workflow/nodes/CheckImageNode.ts +325 -0
- package/src/domain/workflow/nodes/CheckTextNode.ts +709 -0
- package/src/domain/workflow/nodes/GenerateImageNode.ts +342 -0
- package/src/domain/workflow/nodes/OrganizeNode.ts +304 -0
- package/src/domain/workflow/nodes/SearchNode.ts +192 -0
- package/src/domain/workflow/nodes/WriteNode.ts +505 -0
- package/src/domain/workflow/nodes/index.ts +13 -0
- package/src/index.ts +43 -0
- package/src/infrastructure/cache/CacheService.ts +483 -0
- package/src/infrastructure/cache/index.ts +6 -0
- package/src/infrastructure/database/BaseRepository.ts +214 -0
- package/src/infrastructure/database/MemoryTaskRepository.ts +377 -0
- package/src/infrastructure/database/PostgresQualityCheckRepository.ts +115 -0
- package/src/infrastructure/database/PostgresTaskRepository.ts +424 -0
- package/src/infrastructure/database/ResultRepository.ts +113 -0
- package/src/infrastructure/database/SQLiteTaskRepository.ts +651 -0
- package/src/infrastructure/database/index.ts +83 -0
- package/src/infrastructure/logging/logger.ts +231 -0
- package/src/infrastructure/monitoring/LoggingService.ts +292 -0
- package/src/infrastructure/monitoring/MetricsService.ts +468 -0
- package/src/infrastructure/monitoring/SentryService.ts +345 -0
- package/src/infrastructure/monitoring/index.ts +12 -0
- package/src/infrastructure/queue/TaskQueue.ts +429 -0
- package/src/infrastructure/queue/index.ts +5 -0
- package/src/infrastructure/redis/connection.ts +215 -0
- package/src/infrastructure/redis/index.ts +5 -0
- package/src/infrastructure/security/ApiKeyService.ts +340 -0
- package/src/infrastructure/security/QuotaService.ts +411 -0
- package/src/infrastructure/security/RateLimiter.ts +417 -0
- package/src/infrastructure/security/index.ts +12 -0
- package/src/monitoring/index.ts +5 -0
- package/src/monitoring/server.ts +109 -0
- package/src/presentation/cli/commands/cancel.ts +64 -0
- package/src/presentation/cli/commands/create.ts +400 -0
- package/src/presentation/cli/commands/result.ts +136 -0
- package/src/presentation/cli/commands/status.ts +102 -0
- package/src/presentation/cli/index.ts +39 -0
- package/src/presentation/cli/utils/cleanup.ts +65 -0
- package/src/presentation/cli/utils/formatter.ts +74 -0
- package/src/presentation/cli.ts +8 -0
- package/src/presentation/monitor-cli.ts +52 -0
- package/src/presentation/worker-cli.ts +62 -0
- package/src/schedulers/TaskScheduler.ts +314 -0
- package/src/schedulers/index.ts +11 -0
- package/src/services/image/ImageService.ts +221 -0
- package/src/services/index.ts +15 -0
- package/src/services/llm/EnhancedLLMService.ts +596 -0
- package/src/services/llm/LLMService.ts +310 -0
- package/src/services/quality/HardRuleChecker.ts +509 -0
- package/src/services/quality/LLMEvaluator.ts +400 -0
- package/src/services/quality/QualityCheckService.ts +473 -0
- package/src/services/quality/QualityService.ts +445 -0
- package/src/services/quality/index.ts +12 -0
- package/src/services/search/SearchService.ts +266 -0
- package/src/types/global.d.ts +17 -0
- package/src/workers/TaskWorker.ts +320 -0
- package/src/workers/index.ts +5 -0
|
@@ -0,0 +1,1242 @@
|
|
|
1
|
+
# 写作 Agent 架构实施战略规划
|
|
2
|
+
|
|
3
|
+
**项目名称**: Content Creator (写作 Agent)
|
|
4
|
+
**分析日期**: 2025-01-18
|
|
5
|
+
**规划状态**: 活跃
|
|
6
|
+
**版本**: 2.0(根据技术评审修订)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 📋 修订说明
|
|
11
|
+
|
|
12
|
+
**v2.0 主要变更**:
|
|
13
|
+
- ✅ 总工期从 15-24 天调整为 **30-45 天**(+50-80%)
|
|
14
|
+
- ✅ 阶段 2 拆分为 2a(LangGraph 基础)和 2b(工作流实现)
|
|
15
|
+
- ✅ 补充 MCP Search 集成任务(2 天)
|
|
16
|
+
- ✅ 补充 Prompt 工程任务(2 天)
|
|
17
|
+
- ✅ 新增性能测试任务(1-2 天)
|
|
18
|
+
- ✅ 新增 CI/CD 配置任务(1 天)
|
|
19
|
+
- ✅ 调整风险等级:HIGH → MEDIUM
|
|
20
|
+
- ✅ 简化初期架构(移除数据库分区)
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 📋 执行摘要(修订版)
|
|
25
|
+
|
|
26
|
+
### 项目愿景
|
|
27
|
+
构建一个基于 LangGraph 的企业级智能写作系统,支持选题搜索、内容生成、质量检查和配图生成的完整流程,实现高并发(100 用户)、高可用(99.9%)的自动化内容生产平台。
|
|
28
|
+
|
|
29
|
+
### 核心价值主张
|
|
30
|
+
- **效率提升**: 单篇文章生成时间 < 5 分钟(传统方式需 2-4 小时)
|
|
31
|
+
- **质量保证**: 双层质检机制(硬规则 + LLM 评审)确保输出质量
|
|
32
|
+
- **可扩展性**: 插件化架构,支持多种内容类型扩展
|
|
33
|
+
- **成本可控**: Token 监控和预算告警,~~月度成本 ¥500-900~~ **月度成本 ¥650-1300**(修订后)
|
|
34
|
+
|
|
35
|
+
### 战略目标(修订版)
|
|
36
|
+
| 维度 | 目标 | 指标 | 变更说明 |
|
|
37
|
+
|------|------|------|----------|
|
|
38
|
+
| **功能完整性** | 实现完整写作工作流 | 6 个核心节点全部实现 | 无变化 |
|
|
39
|
+
| **性能** | 支持高并发 | 100 用户同时在线,20 任务并发执行 | 无变化 |
|
|
40
|
+
| **可用性** | 系统稳定 | 99.9% 可用性,自动故障恢复 | 无变化 |
|
|
41
|
+
| **成本效率** | 可控运营成本 | ~~¥500-900~~ **¥650-1300**(3000 任务/天) | ⚠️ 成本上浮 |
|
|
42
|
+
| **开发周期** | 务实的时间线 | ~~15-24 天~~ **30-45 天**(6-7 周) | ✅ 更现实 |
|
|
43
|
+
| **风险控制** | 可控风险等级 | **MEDIUM**(从 HIGH 降低) | ✅ 风险降低 |
|
|
44
|
+
|
|
45
|
+
### 投资回报分析(修订版)
|
|
46
|
+
**初期投资**(开发成本):
|
|
47
|
+
- ~~开发时间:15-24 天(3-4 周)~~
|
|
48
|
+
- **开发时间:30-45 天(6-7 周)**(修订后)
|
|
49
|
+
- 人力成本:1 名全栈工程师
|
|
50
|
+
- **时间增加原因**:LangGraph 学习曲线、MCP Search 集成、Prompt 工程、性能测试
|
|
51
|
+
|
|
52
|
+
**运营成本**(月度,修订后):
|
|
53
|
+
- API 调用:¥480-950(增加 60%,含调试和重试)
|
|
54
|
+
- 基础设施:¥150-300
|
|
55
|
+
- 监控服务:免费额度
|
|
56
|
+
- **总计:¥650-1300/月**(~~¥550-900~~)
|
|
57
|
+
|
|
58
|
+
**收益预估**(无变化):
|
|
59
|
+
- 日生产内容:3000 篇
|
|
60
|
+
- 传统方式成本:¥3000-5000/天(外包)
|
|
61
|
+
- AI 方式成本:¥22-43/天
|
|
62
|
+
- **节省比例:95%+**
|
|
63
|
+
|
|
64
|
+
**收益预估**:
|
|
65
|
+
- 日生产内容:3000 篇
|
|
66
|
+
- 传统方式成本:¥3000-5000/天(外包)
|
|
67
|
+
- AI 方式成本:¥18-30/天
|
|
68
|
+
- **节省比例:95%+**
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 📊 现状分析
|
|
73
|
+
|
|
74
|
+
### 技术架构现状
|
|
75
|
+
|
|
76
|
+
#### ✅ 已完成
|
|
77
|
+
- [x] 完整的架构设计文档(5500+ 行)
|
|
78
|
+
- [x] 详细的领域模型定义(5 个核心实体)
|
|
79
|
+
- [x] 数据库表结构设计(含分区策略)
|
|
80
|
+
- [x] 工作流流程设计(同步/异步模式)
|
|
81
|
+
- [x] 环境配置(PostgreSQL、Redis、API Keys)
|
|
82
|
+
|
|
83
|
+
#### ⚠️ 部分完成
|
|
84
|
+
- [x] 项目目录结构
|
|
85
|
+
- [x] TypeScript 配置
|
|
86
|
+
- [ ] 数据库迁移脚本
|
|
87
|
+
- [ ] 领域模型代码实现
|
|
88
|
+
- [ ] 外部服务封装
|
|
89
|
+
|
|
90
|
+
#### ❌ 未开始
|
|
91
|
+
- [ ] LangGraph 工作流实现
|
|
92
|
+
- [ ] 任务队列系统
|
|
93
|
+
- [ ] Worker 进程管理
|
|
94
|
+
- [ ] 质量检查服务
|
|
95
|
+
- [ ] 监控告警系统
|
|
96
|
+
|
|
97
|
+
### 技术债务识别
|
|
98
|
+
|
|
99
|
+
| 类别 | 问题描述 | 影响 | 优先级 |
|
|
100
|
+
|------|----------|------|--------|
|
|
101
|
+
| **架构** | 缺少 API 层设计 | 无法支持 Web 集成 | P2 |
|
|
102
|
+
| **安全** | API Key 明文存储 | 安全风险 | P0 |
|
|
103
|
+
| **测试** | 无测试框架 | 质量风险 | P1 |
|
|
104
|
+
| **文档** | API 文档缺失 | 集成困难 | P1 |
|
|
105
|
+
| **运维** | 无部署方案 | 无法上线 | P1 |
|
|
106
|
+
|
|
107
|
+
### SWOT 分析
|
|
108
|
+
|
|
109
|
+
#### 优势 (Strengths)
|
|
110
|
+
1. ✅ **完整的设计文档** - 5500+ 行详细设计,涵盖所有技术细节
|
|
111
|
+
2. ✅ **成熟的技术栈** - Node.js + PostgreSQL + Redis,生态成熟
|
|
112
|
+
3. ✅ **清晰的架构分层** - 领域驱动设计,职责分明
|
|
113
|
+
4. ✅ **渐进式实施计划** - 4 个阶段,风险可控
|
|
114
|
+
|
|
115
|
+
#### 劣势 (Weaknesses)
|
|
116
|
+
1. ⚠️ **LangGraph 生态不成熟** - 相对较新,社区资源有限
|
|
117
|
+
2. ⚠️ **多 Worker 复杂度** - 并发控制、状态同步难度较高
|
|
118
|
+
3. ⚠️ **单开发者** - 人力有限,进度依赖个人
|
|
119
|
+
4. ⚠️ **无测试框架** - 质量保证体系缺失
|
|
120
|
+
|
|
121
|
+
#### 机会 (Opportunities)
|
|
122
|
+
1. 🚀 **市场需求旺盛** - AIGC 内容生产需求爆发
|
|
123
|
+
2. 🚀 **技术差异化** - 质量检查机制是竞争优势
|
|
124
|
+
3. 🚀 **扩展性强** - 可扩展到视频脚本、营销文案等
|
|
125
|
+
4. 🚀 **成本优势** - 相比传统方式节省 95%+ 成本
|
|
126
|
+
|
|
127
|
+
#### 威胁 (Threats)
|
|
128
|
+
1. ⚠️ **API 依赖风险** - DeepSeek、Doubao 服务稳定性
|
|
129
|
+
2. ⚠️ **成本超支** - Token 用量失控可能导致成本激增
|
|
130
|
+
3. ⚠️ **合规风险** - 生成内容可能违规(需内容审核)
|
|
131
|
+
4. ⚠️ **竞争加剧** - 类似产品可能快速出现
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 🎯 未来状态规划
|
|
136
|
+
|
|
137
|
+
### 系统架构蓝图
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
┌─────────────────────────────────────────────────────────┐
|
|
141
|
+
│ 表现层 (Presentation) │
|
|
142
|
+
├─────────────────────────────────────────────────────────┤
|
|
143
|
+
│ CLI Interface │ REST API │ WebSocket Server │
|
|
144
|
+
│ (命令行工具) │ (HTTP) │ (实时推送) │
|
|
145
|
+
└─────────────────────────────────────────────────────────┘
|
|
146
|
+
↓
|
|
147
|
+
┌─────────────────────────────────────────────────────────┐
|
|
148
|
+
│ 应用层 (Application) │
|
|
149
|
+
├─────────────────────────────────────────────────────────┤
|
|
150
|
+
│ Sync Executor │ Async Executor │ Query Service │
|
|
151
|
+
│ (同步执行) │ (异步调度) │ (查询服务) │
|
|
152
|
+
└─────────────────────────────────────────────────────────┘
|
|
153
|
+
↓
|
|
154
|
+
┌─────────────────────────────────────────────────────────┐
|
|
155
|
+
│ 领域层 (Domain) │
|
|
156
|
+
├─────────────────────────────────────────────────────────┤
|
|
157
|
+
│ LangGraph Workflow Engine │
|
|
158
|
+
│ ┌────────┐ ┌────────┐ ┌──────┐ ┌────────┐ │
|
|
159
|
+
│ │ Search │→ │Organize│→ │ Write │→ │ Check │ │
|
|
160
|
+
│ └────────┘ └────────┘ └──────┘ └────────┘ │
|
|
161
|
+
│ ↓ │
|
|
162
|
+
│ ┌────────┐ │
|
|
163
|
+
│ │ GenImg │ │
|
|
164
|
+
│ └────────┘ │
|
|
165
|
+
└─────────────────────────────────────────────────────────┘
|
|
166
|
+
↓
|
|
167
|
+
┌─────────────────────────────────────────────────────────┐
|
|
168
|
+
│ 服务层 (Services) │
|
|
169
|
+
├─────────────────────────────────────────────────────────┤
|
|
170
|
+
│ LLM Service │ Search Service │ Image Service │ Quality │
|
|
171
|
+
│ (DeepSeek) │ (MCP Search) │ (Doubao) │ Service │
|
|
172
|
+
└─────────────────────────────────────────────────────────┘
|
|
173
|
+
↓
|
|
174
|
+
┌─────────────────────────────────────────────────────────┐
|
|
175
|
+
│ 数据层 (Data) │
|
|
176
|
+
├─────────────────────────────────────────────────────────┤
|
|
177
|
+
│ PostgreSQL │ Bull Queue │ Redis Cache │ S3/OSS │
|
|
178
|
+
│ (主数据库) │ (任务队列) │ (缓存) │ (存储) │
|
|
179
|
+
└─────────────────────────────────────────────────────────┘
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### 核心工作流
|
|
183
|
+
|
|
184
|
+
```mermaid
|
|
185
|
+
graph LR
|
|
186
|
+
A[用户请求] --> B{执行模式}
|
|
187
|
+
B -->|同步| C[Sync Executor]
|
|
188
|
+
B -->|异步| D[Bull Queue]
|
|
189
|
+
|
|
190
|
+
C --> E[LangGraph Workflow]
|
|
191
|
+
D --> F[Worker Process]
|
|
192
|
+
F --> E
|
|
193
|
+
|
|
194
|
+
E --> G[Search Node]
|
|
195
|
+
G --> H[Organize Node]
|
|
196
|
+
H --> I[Write Node]
|
|
197
|
+
I --> J[Check Text Node]
|
|
198
|
+
|
|
199
|
+
J -->|通过| K[Generate Image Node]
|
|
200
|
+
J -->|失败| I
|
|
201
|
+
|
|
202
|
+
K --> L[Check Image Node]
|
|
203
|
+
L -->|失败| K
|
|
204
|
+
L -->|通过| M[Save Result]
|
|
205
|
+
|
|
206
|
+
M --> N[Notify User]
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### 技术栈选型
|
|
210
|
+
|
|
211
|
+
| 层级 | 技术选型 | 版本 | 理由 |
|
|
212
|
+
|------|---------|------|------|
|
|
213
|
+
| **运行时** | Node.js | 18+ LTS | 生态成熟,异步性能优秀 |
|
|
214
|
+
| **语言** | TypeScript | 5.0+ | 类型安全,开发体验好 |
|
|
215
|
+
| **工作流引擎** | LangGraph | 最新 | 状态管理优秀,可视化强 |
|
|
216
|
+
| **数据库** | PostgreSQL | 14+ | ACID、高并发、分区支持 |
|
|
217
|
+
| **缓存** | Redis | 7+ | 性能优秀,支持队列 |
|
|
218
|
+
| **队列** | Bull | 4.x | 成熟稳定,功能丰富 |
|
|
219
|
+
| **LLM** | DeepSeek | - | 性价比高,中文优秀 |
|
|
220
|
+
| **图片生成** | Doubao | - | 国内可用,质量稳定 |
|
|
221
|
+
| **监控** | Sentry + Prometheus | - | 错误追踪 + 指标监控 |
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## 📅 实施阶段(修订版)
|
|
226
|
+
|
|
227
|
+
### 阶段概览(修订)
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
阶段 0 (1-2天) 阶段 1 (5-7天) 阶段 2a (4天) 阶段 2b (7-11天) 阶段 3 (5-7天) 阶段 4 (5-8天)
|
|
231
|
+
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐ ┌─────────┐ ┌─────────┐
|
|
232
|
+
│环境准备 │─────────>│数据层 │─────────>│LangGraph│─────────>│工作流 │─────────>│异步系统 │─────────>│监控优化 │
|
|
233
|
+
│ │ │ │ │基础设施 │ │实现 │ │ │ │ │
|
|
234
|
+
│- 依赖安装│ │- 领域模型│ │- 学习 │ │- 6节点 │ │- Bull队列│ │- 质检服务│
|
|
235
|
+
│- TS配置 │ │- 数据库 │ │- State │ │- Graph │ │- Worker │ │- 日志 │
|
|
236
|
+
│- 环境验证│ │- Repository│ │- Node基类│ │- 调试 │ │- 监控面板│ │- 告警 │
|
|
237
|
+
└─────────┘ └─────────┘ └─────────┘ └──────────┘ └─────────┘ └─────────┘
|
|
238
|
+
✅ ⏳ ⏳ ⏳ ⏳ ⏳
|
|
239
|
+
|
|
240
|
+
🆕 新增任务:
|
|
241
|
+
- MCP Search 集成 (阶段 2a, 2天)
|
|
242
|
+
- Prompt 工程 (阶段 2a, 2天)
|
|
243
|
+
- 性能测试 (阶段 4, 1-2天)
|
|
244
|
+
- CI/CD 配置 (阶段 3, 1天)
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### 时间线对比(修订)
|
|
248
|
+
|
|
249
|
+
| 阶段 | v1.0 估算 | v2.0 估算 | 变化 | 主要原因 |
|
|
250
|
+
|------|-----------|-----------|------|----------|
|
|
251
|
+
| **阶段 0** | 1-2 天 | 1-2 天 | 无 | 环境准备时间合理 |
|
|
252
|
+
| **阶段 1** | 3-5 天 | **5-7 天** | +40% | Repository 实现和测试 |
|
|
253
|
+
| **阶段 2a** | - | **4 天** | 🆕 | LangGraph 学习 + 基础设施 |
|
|
254
|
+
| **阶段 2b** | 5-7 天 | **7-11 天** | +50-60% | MCP Search + Prompt 工程 |
|
|
255
|
+
| **阶段 3** | 3-5 天 | **5-7 天** | +40% | Worker 复杂度 + CI/CD |
|
|
256
|
+
| **阶段 4** | 3-5 天 | **5-8 天** | +50% | 补充性能测试 |
|
|
257
|
+
| **缓冲** | 0 天 | **3-5 天** | 🆕 | 应对不确定性 |
|
|
258
|
+
| **总计** | **15-24 天** | **30-45 天** | **+50-80%** | **更现实的估算** |
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
### 阶段 0:环境准备与项目初始化(1-2 天,无变化)
|
|
263
|
+
|
|
264
|
+
**目标**: 建立开发环境,验证所有服务连接
|
|
265
|
+
|
|
266
|
+
**关键任务**:
|
|
267
|
+
1. 安装项目依赖(pnpm)
|
|
268
|
+
2. 配置 TypeScript 编译环境
|
|
269
|
+
3. 创建环境验证脚本
|
|
270
|
+
4. 验证 PostgreSQL、Redis、API 连接
|
|
271
|
+
|
|
272
|
+
**验收标准**:
|
|
273
|
+
- ✅ `pnpm run verify-env` 全部通过
|
|
274
|
+
- ✅ TypeScript 编译无错误
|
|
275
|
+
- ✅ 可以成功连接所有外部服务
|
|
276
|
+
|
|
277
|
+
**风险**:
|
|
278
|
+
- ⚠️ 环境变量配置错误
|
|
279
|
+
- ⚠️ API Key 无效或过期
|
|
280
|
+
|
|
281
|
+
**依赖**: 无
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
### 阶段 1:核心数据层与基础架构(5-7 天,修订)
|
|
286
|
+
|
|
287
|
+
**目标**: 实现领域模型和数据访问层
|
|
288
|
+
|
|
289
|
+
**时间调整原因**:
|
|
290
|
+
- Repository 实现更复杂(乐观锁、事务)
|
|
291
|
+
- 测试编写需要更多时间
|
|
292
|
+
- ~~数据库迁移脚本包含分区策略~~ **简化版,不含分区**(修订)
|
|
293
|
+
|
|
294
|
+
**关键任务**:
|
|
295
|
+
1. 定义领域模型(Task、TaskStep、QualityCheck、Result)- 1 天
|
|
296
|
+
2. 创建数据库迁移脚本(**简化版,不含分区**)- 1 天
|
|
297
|
+
3. 实现 Repository 基类和具体实现 - 2 天
|
|
298
|
+
4. **编写数据访问集成测试(增加并发测试)** - 1.5 天
|
|
299
|
+
5. **数据库性能优化(索引、连接池配置)** - 0.5 天
|
|
300
|
+
|
|
301
|
+
**验收标准**:
|
|
302
|
+
- ✅ 可以创建任务记录
|
|
303
|
+
- ✅ 可以查询和更新任务状态
|
|
304
|
+
- ✅ 数据库迁移可重复执行
|
|
305
|
+
- ✅ 测试覆盖率 > 80%
|
|
306
|
+
- ✅ **并发测试通过(乐观锁验证)** 🆕
|
|
307
|
+
|
|
308
|
+
**风险**:
|
|
309
|
+
- ⚠️ 数据库连接池配置不当
|
|
310
|
+
- ⚠️ 并发更新冲突(乐观锁失效)
|
|
311
|
+
|
|
312
|
+
**依赖**: 阶段 0
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
### 🆕 阶段 2a:LangGraph 基础设施(4 天,新增)
|
|
317
|
+
|
|
318
|
+
**目标**: 建立 LangGraph 开发基础
|
|
319
|
+
|
|
320
|
+
**为什么新增**:
|
|
321
|
+
- LangGraph 学习曲线陡峭,需要专门时间
|
|
322
|
+
- LLM Service 封装是核心依赖
|
|
323
|
+
- MCP Search 集成复杂度被低估
|
|
324
|
+
|
|
325
|
+
**关键任务**:
|
|
326
|
+
1. **🆕 LangGraph 学习和示例项目** - 2 天
|
|
327
|
+
- 阅读 LangGraph 官方文档
|
|
328
|
+
- 运行官方示例项目
|
|
329
|
+
- 理解 State、Node、Graph 概念
|
|
330
|
+
- 学习条件路由和循环
|
|
331
|
+
- **锁定 LangGraph 版本**(避免兼容性问题)
|
|
332
|
+
|
|
333
|
+
2. **定义 Workflow State** - 0.5 天
|
|
334
|
+
- 定义 `WorkflowState` 接口
|
|
335
|
+
- 定义所有字段类型
|
|
336
|
+
- 创建初始状态工厂函数
|
|
337
|
+
|
|
338
|
+
3. **实现 Node 基类** - 0.5 天
|
|
339
|
+
- 创建 `BaseNode` 抽象类
|
|
340
|
+
- 实现通用错误处理
|
|
341
|
+
- 实现 Token 记录
|
|
342
|
+
- 实现日志记录
|
|
343
|
+
|
|
344
|
+
4. **LLM Service 封装** - 1 天
|
|
345
|
+
- 封装 DeepSeek API
|
|
346
|
+
- 实现重试机制(最多 3 次)
|
|
347
|
+
- 实现 Token 记录
|
|
348
|
+
- 实现成本估算
|
|
349
|
+
- **单元测试**
|
|
350
|
+
|
|
351
|
+
**验收标准**:
|
|
352
|
+
- ✅ LangGraph 示例项目运行成功
|
|
353
|
+
- ✅ State 定义完整
|
|
354
|
+
- ✅ 可以成功调用 DeepSeek API
|
|
355
|
+
- ✅ Token 使用正确记录
|
|
356
|
+
- ✅ 版本锁定:`@langchain/langgraph@0.0.26`
|
|
357
|
+
|
|
358
|
+
**风险**:
|
|
359
|
+
- ⚠️ LangGraph API 理解不深
|
|
360
|
+
- ⚠️ LLM API 调用超时/失败
|
|
361
|
+
|
|
362
|
+
**依赖**: 阶段 1
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
### 阶段 2b:LangGraph 工作流实现(7-11 天,修订)
|
|
367
|
+
|
|
368
|
+
**原名称**: 阶段 2 (5-7 天)
|
|
369
|
+
**新名称**: 阶段 2b (7-11 天)
|
|
370
|
+
**修订原因**: 补充 MCP Search 和 Prompt 工程
|
|
371
|
+
|
|
372
|
+
**目标**: 实现完整的写作工作流
|
|
373
|
+
|
|
374
|
+
**时间调整原因**:
|
|
375
|
+
- **新增 MCP Search 集成(2 天)**
|
|
376
|
+
- **新增 Prompt 工程(2 天)**
|
|
377
|
+
- 节点实现复杂度被低估
|
|
378
|
+
- 调试和迭代时间不足
|
|
379
|
+
|
|
380
|
+
**关键任务**:
|
|
381
|
+
1. **🆕 MCP Search 集成** - 2 天
|
|
382
|
+
- 研究 MCP 协议和 Tavily API
|
|
383
|
+
- 创建 MCP Client 封装
|
|
384
|
+
- 实现搜索结果解析
|
|
385
|
+
- 实现搜索缓存(Redis)
|
|
386
|
+
- 编写集成测试
|
|
387
|
+
|
|
388
|
+
2. **🆕 Prompt 工程与优化** - 2 天
|
|
389
|
+
- 设计 Write Node Prompt 模板
|
|
390
|
+
- 设计 CheckText Node Prompt 模板
|
|
391
|
+
- 设计 Organize Node Prompt 模板
|
|
392
|
+
- 实现 Prompt 版本管理
|
|
393
|
+
- A/B 测试不同 Prompt 变体
|
|
394
|
+
|
|
395
|
+
3. 实现 Search Node - 1 天
|
|
396
|
+
4. 实现 Organize Node - 1 天
|
|
397
|
+
5. 实现 Write Node - 1.5 天
|
|
398
|
+
6. 实现 CheckText Node - 1.5 天
|
|
399
|
+
7. 实现 GenerateImage Node - 0.5 天
|
|
400
|
+
8. 实现 CheckImage Node - 0.5 天
|
|
401
|
+
9. 构建工作流图 - 1 天
|
|
402
|
+
10. **调试和测试** - 1 天
|
|
403
|
+
|
|
404
|
+
**验收标准**:
|
|
405
|
+
- ✅ MCP Search 可以正常搜索
|
|
406
|
+
- ✅ Prompt 生成高质量内容
|
|
407
|
+
- ✅ 可以端到端生成一篇文章
|
|
408
|
+
- ✅ 质量检查不合格会自动重试
|
|
409
|
+
- ✅ 工作流调试通过
|
|
410
|
+
|
|
411
|
+
**依赖**: 阶段 2a
|
|
412
|
+
- ✅ 可以创建任务记录
|
|
413
|
+
- ✅ 可以查询和更新任务状态
|
|
414
|
+
- ✅ 数据库迁移可重复执行
|
|
415
|
+
- ✅ 测试覆盖率 > 80%
|
|
416
|
+
|
|
417
|
+
**风险**:
|
|
418
|
+
- ⚠️ 数据库连接池配置不当
|
|
419
|
+
- ⚠️ 并发更新冲突(乐观锁失效)
|
|
420
|
+
|
|
421
|
+
**依赖**: 阶段 0
|
|
422
|
+
|
|
423
|
+
**技术细节**:
|
|
424
|
+
```typescript
|
|
425
|
+
// 核心接口设计
|
|
426
|
+
interface TaskRepository {
|
|
427
|
+
create(input: CreateTaskInput): Promise<Task>;
|
|
428
|
+
findById(taskId: string): Promise<Task | null>;
|
|
429
|
+
updateStatus(taskId: string, status: TaskStatus): Promise<void>;
|
|
430
|
+
claimTask(taskId: string, workerId: string): Promise<boolean>;
|
|
431
|
+
}
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
### 阶段 2:LangGraph 工作流与服务集成(5-7 天)
|
|
437
|
+
|
|
438
|
+
**目标**: 实现完整的写作工作流
|
|
439
|
+
|
|
440
|
+
**关键任务**:
|
|
441
|
+
1. 封装 LLM Service(DeepSeek)
|
|
442
|
+
2. 实现 LangGraph State 定义
|
|
443
|
+
3. 实现 6 个核心节点(Search、Organize、Write、CheckText、GenImage、CheckImage)
|
|
444
|
+
4. 构建工作流图(条件路由、循环)
|
|
445
|
+
5. 实现同步执行器
|
|
446
|
+
6. 开发 CLI 接口
|
|
447
|
+
|
|
448
|
+
**验收标准**:
|
|
449
|
+
- ✅ 可以端到端生成一篇文章
|
|
450
|
+
- ✅ 质量检查不合格会自动重试
|
|
451
|
+
- ✅ CLI 可以创建和查询任务
|
|
452
|
+
- ✅ 错误处理和日志完善
|
|
453
|
+
|
|
454
|
+
**风险**:
|
|
455
|
+
- ⚠️ LangGraph API 学习曲线陡峭
|
|
456
|
+
- ⚠️ 状态序列化/反序列化复杂
|
|
457
|
+
- ⚠️ LLM API 调用超时/失败
|
|
458
|
+
|
|
459
|
+
**依赖**: 阶段 1
|
|
460
|
+
|
|
461
|
+
**技术细节**:
|
|
462
|
+
```typescript
|
|
463
|
+
// 工作流状态定义
|
|
464
|
+
interface WorkflowState {
|
|
465
|
+
taskId: string;
|
|
466
|
+
topic: string;
|
|
467
|
+
requirements: string;
|
|
468
|
+
searchResults?: string;
|
|
469
|
+
outline?: string;
|
|
470
|
+
articleContent?: string;
|
|
471
|
+
imageUrl?: string;
|
|
472
|
+
textQualityScore?: number;
|
|
473
|
+
textPassed?: boolean;
|
|
474
|
+
retryCount: number;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
// 节点示例
|
|
478
|
+
class WriteNode extends Node<WorkflowState> {
|
|
479
|
+
async execute(state: WorkflowState): Promise<Partial<WorkflowState>> {
|
|
480
|
+
// LLM 调用逻辑
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
### 阶段 3:异步任务与 Worker 系统(5-7 天,修订)
|
|
488
|
+
|
|
489
|
+
**原时间**: 3-5 天
|
|
490
|
+
**新时间**: 5-7 天
|
|
491
|
+
**修订原因**: Worker 抢占机制复杂 + 新增 CI/CD 配置
|
|
492
|
+
|
|
493
|
+
**目标**: 实现高并发任务处理
|
|
494
|
+
|
|
495
|
+
**关键任务**:
|
|
496
|
+
1. 配置 Bull 队列 - 0.5 天
|
|
497
|
+
2. **🆕 CI/CD 配置** - 1 天
|
|
498
|
+
- 配置 GitHub Actions
|
|
499
|
+
- 自动化测试
|
|
500
|
+
- 自动化部署(Docker)
|
|
501
|
+
- 环境变量管理
|
|
502
|
+
3. 异步执行器 - 1 天
|
|
503
|
+
4. Worker 进程(支持抢占机制) - 2 天
|
|
504
|
+
- 实现 Worker 抢占机制
|
|
505
|
+
- 添加心跳检测
|
|
506
|
+
- 错误处理
|
|
507
|
+
5. 多 Worker 部署(Docker Compose) - 1 天
|
|
508
|
+
6. 队列监控面板(Bull Board) - 0.5 天
|
|
509
|
+
7. **🆕 Worker 并发测试** - 1 天
|
|
510
|
+
|
|
511
|
+
**验收标准**:
|
|
512
|
+
- ✅ CI/CD 自动化运行
|
|
513
|
+
- ✅ 可以提交异步任务到队列
|
|
514
|
+
- ✅ Worker 可以正常处理任务
|
|
515
|
+
- ✅ 5 个 Worker 可同时运行
|
|
516
|
+
- ✅ Worker 崩溃后任务可被接管
|
|
517
|
+
- ✅ 队列监控面板可用
|
|
518
|
+
- ✅ **10 个并发任务测试通过** 🆕
|
|
519
|
+
|
|
520
|
+
**风险**:
|
|
521
|
+
- ⚠️ Worker 抢占逻辑复杂
|
|
522
|
+
- ⚠️ 任务重复执行
|
|
523
|
+
- ⚠️ 队列阻塞或积压
|
|
524
|
+
|
|
525
|
+
**依赖**: 阶段 2b
|
|
526
|
+
|
|
527
|
+
---
|
|
528
|
+
|
|
529
|
+
### 阶段 4:质量检查与监控优化(5-8 天,修订)
|
|
530
|
+
|
|
531
|
+
**原时间**: 3-5 天
|
|
532
|
+
**新时间**: 5-8 天
|
|
533
|
+
**修订原因**: 补充性能测试 + 生产环境准备
|
|
534
|
+
|
|
535
|
+
**目标**: 完善质量保证和可观测性
|
|
536
|
+
|
|
537
|
+
**关键任务**:
|
|
538
|
+
1. 质量检查服务(硬规则 + LLM) - 2 天
|
|
539
|
+
2. 集成 Sentry 错误追踪 - 0.5 天
|
|
540
|
+
3. 配置 Winston 日志系统 - 0.5 天
|
|
541
|
+
4. Token 监控和预算告警 - 1 天
|
|
542
|
+
- **注意:从阶段 2 开始实施,此处完成**
|
|
543
|
+
5. API Key 加密存储(AWS KMS) - 1 天
|
|
544
|
+
6. Prometheus 指标收集 - 0.5 天
|
|
545
|
+
7. **🆕 性能测试** - 1-2 天
|
|
546
|
+
- 并发任务测试(10 并发)
|
|
547
|
+
- 压力测试(100 用户)
|
|
548
|
+
- 数据库性能测试
|
|
549
|
+
- API 响应时间测试
|
|
550
|
+
- 生成性能报告
|
|
551
|
+
8. **🆕 生产环境准备** - 1 天
|
|
552
|
+
- 数据库备份策略
|
|
553
|
+
- Redis 哨兵配置
|
|
554
|
+
- 灾难恢复计划
|
|
555
|
+
- 运维手册
|
|
556
|
+
|
|
557
|
+
**验收标准**:
|
|
558
|
+
- ✅ 质量检查可以识别不合格内容
|
|
559
|
+
- ✅ 错误自动上报到 Sentry
|
|
560
|
+
- ✅ 日志结构化存储
|
|
561
|
+
- ✅ Token 超过 80% 时发送告警
|
|
562
|
+
- ✅ API Key 加密存储
|
|
563
|
+
- ✅ Prometheus 指标正常
|
|
564
|
+
- ✅ **性能测试达到目标** 🆕
|
|
565
|
+
- ✅ **生产环境就绪** 🆕
|
|
566
|
+
|
|
567
|
+
**风险**:
|
|
568
|
+
- ⚠️ 质量检查误判率过高
|
|
569
|
+
- ⚠️ 日志量过大影响性能
|
|
570
|
+
- ⚠️ 告警规则配置不当
|
|
571
|
+
|
|
572
|
+
**依赖**: 阶段 3
|
|
573
|
+
|
|
574
|
+
---
|
|
575
|
+
|
|
576
|
+
## 📝 详细任务分解
|
|
577
|
+
|
|
578
|
+
### 优先级说明
|
|
579
|
+
- **P0**: 阻塞性任务,必须立即完成
|
|
580
|
+
- **P1**: 高优先级,影响核心功能
|
|
581
|
+
- **P2**: 中优先级,优化体验
|
|
582
|
+
- **P3**: 低优先级,可延后
|
|
583
|
+
|
|
584
|
+
### 工作量估算
|
|
585
|
+
- **XS**: < 1 小时
|
|
586
|
+
- **S**: 1-2 小时
|
|
587
|
+
- **M**: 3-5 小时
|
|
588
|
+
- **L**: 1-2 天
|
|
589
|
+
- **XL**: 3-5 天
|
|
590
|
+
|
|
591
|
+
---
|
|
592
|
+
|
|
593
|
+
### 阶段 0 任务
|
|
594
|
+
|
|
595
|
+
#### 任务 0.1:项目依赖安装(XS, P0)
|
|
596
|
+
**描述**: 安装所有必需的 npm 包
|
|
597
|
+
|
|
598
|
+
**步骤**:
|
|
599
|
+
1. 安装 pnpm(如果未安装)
|
|
600
|
+
2. 运行 `pnpm install`
|
|
601
|
+
3. 验证依赖安装成功
|
|
602
|
+
|
|
603
|
+
**验收标准**:
|
|
604
|
+
- [ ] `node_modules` 目录存在
|
|
605
|
+
- [ ] `pnpm list` 显示所有包已安装
|
|
606
|
+
|
|
607
|
+
**依赖**: 无
|
|
608
|
+
|
|
609
|
+
---
|
|
610
|
+
|
|
611
|
+
#### 任务 0.2:TypeScript 配置(S, P0)
|
|
612
|
+
**描述**: 配置 TypeScript 编译选项
|
|
613
|
+
|
|
614
|
+
**步骤**:
|
|
615
|
+
1. 运行 `npx tsc --init`
|
|
616
|
+
2. 修改 `tsconfig.json` 配置
|
|
617
|
+
3. 创建类型声明文件
|
|
618
|
+
|
|
619
|
+
**验收标准**:
|
|
620
|
+
- [ ] `tsc --noEmit` 无错误
|
|
621
|
+
- [ ] 可以正确导入 `.ts` 文件
|
|
622
|
+
|
|
623
|
+
**依赖**: 任务 0.1
|
|
624
|
+
|
|
625
|
+
---
|
|
626
|
+
|
|
627
|
+
#### 任务 0.3:环境验证脚本(M, P0)
|
|
628
|
+
**描述**: 创建环境验证脚本
|
|
629
|
+
|
|
630
|
+
**步骤**:
|
|
631
|
+
1. 创建 `scripts/verify-env.ts`
|
|
632
|
+
2. 实现 PostgreSQL 连接检查
|
|
633
|
+
3. 实现 Redis 连接检查
|
|
634
|
+
4. 实现 DeepSeek API 检查
|
|
635
|
+
5. 添加到 `package.json` scripts
|
|
636
|
+
|
|
637
|
+
**验收标准**:
|
|
638
|
+
- [ ] `pnpm run verify-env` 可运行
|
|
639
|
+
- [ ] 所有检查通过时返回 0
|
|
640
|
+
- [ ] 有明确的错误提示
|
|
641
|
+
|
|
642
|
+
**依赖**: 任务 0.2
|
|
643
|
+
|
|
644
|
+
---
|
|
645
|
+
|
|
646
|
+
### 阶段 1 任务
|
|
647
|
+
|
|
648
|
+
#### 任务 1.1:定义领域模型(L, P0)
|
|
649
|
+
**描述**: 实现所有实体类和枚举
|
|
650
|
+
|
|
651
|
+
**步骤**:
|
|
652
|
+
1. 创建 `src/domain/entities/` 目录
|
|
653
|
+
2. 实现 `Task.ts`
|
|
654
|
+
3. 实现 `TaskStep.ts`
|
|
655
|
+
4. 实现 `QualityCheck.ts`
|
|
656
|
+
5. 实现 `Result.ts`
|
|
657
|
+
6. 实现 `TokenUsage.ts`
|
|
658
|
+
7. 定义所有枚举类型
|
|
659
|
+
|
|
660
|
+
**验收标准**:
|
|
661
|
+
- [ ] 所有实体类有完整的 TypeScript 类型
|
|
662
|
+
- [ ] 实体类有验证逻辑(如使用 Zod)
|
|
663
|
+
- [ ] 导出统一的类型文件
|
|
664
|
+
|
|
665
|
+
**依赖**: 阶段 0
|
|
666
|
+
|
|
667
|
+
---
|
|
668
|
+
|
|
669
|
+
#### 任务 1.2:数据库迁移脚本(L, P0)
|
|
670
|
+
**描述**: 创建数据库表结构
|
|
671
|
+
|
|
672
|
+
**步骤**:
|
|
673
|
+
1. 创建 `migrations/001_create_initial_tables.sql`
|
|
674
|
+
2. 编写 `tasks` 表 SQL
|
|
675
|
+
3. 编写 `task_steps` 表 SQL
|
|
676
|
+
4. 编写 `quality_checks` 表 SQL
|
|
677
|
+
5. 编写 `results` 表 SQL
|
|
678
|
+
6. 编写 `token_usage` 表 SQL
|
|
679
|
+
7. 创建所有索引
|
|
680
|
+
8. 创建更新时间触发器
|
|
681
|
+
|
|
682
|
+
**验收标准**:
|
|
683
|
+
- [ ] SQL 脚本可重复执行(使用 `IF NOT EXISTS`)
|
|
684
|
+
- [ ] 所有表和索引创建成功
|
|
685
|
+
- [ ] 外键约束正确
|
|
686
|
+
|
|
687
|
+
**依赖**: 任务 1.1
|
|
688
|
+
|
|
689
|
+
---
|
|
690
|
+
|
|
691
|
+
#### 任务 1.3:Repository 基类(M, P1)
|
|
692
|
+
**描述**: 实现 Repository 基础设施
|
|
693
|
+
|
|
694
|
+
**步骤**:
|
|
695
|
+
1. 创建 `src/infrastructure/database/BaseRepository.ts`
|
|
696
|
+
2. 实现连接池管理
|
|
697
|
+
3. 实现通用查询方法
|
|
698
|
+
4. 实现事务支持
|
|
699
|
+
|
|
700
|
+
**验收标准**:
|
|
701
|
+
- [ ] 可以获取数据库连接
|
|
702
|
+
- [ ] 查询方法可以返回结果
|
|
703
|
+
- [ ] 连接正确释放(无泄漏)
|
|
704
|
+
|
|
705
|
+
**依赖**: 任务 1.2
|
|
706
|
+
|
|
707
|
+
---
|
|
708
|
+
|
|
709
|
+
#### 任务 1.4:TaskRepository 实现(XL, P0)
|
|
710
|
+
**描述**: 实现任务数据访问层
|
|
711
|
+
|
|
712
|
+
**步骤**:
|
|
713
|
+
1. 创建 `src/domain/repositories/TaskRepository.ts`
|
|
714
|
+
2. 实现 `create()` 方法
|
|
715
|
+
3. 实现 `findById()` 方法
|
|
716
|
+
4. 实现 `updateStatus()` 方法
|
|
717
|
+
5. 实现 `claimTask()` 方法(Worker 抢占)
|
|
718
|
+
6. 实现乐观锁更新逻辑
|
|
719
|
+
|
|
720
|
+
**验收标准**:
|
|
721
|
+
- [ ] 可以成功创建任务
|
|
722
|
+
- [ ] 可以查询任务详情
|
|
723
|
+
- [ ] 并发更新时乐观锁生效
|
|
724
|
+
- [ ] Worker 抢占逻辑正确
|
|
725
|
+
|
|
726
|
+
**依赖**: 任务 1.3
|
|
727
|
+
|
|
728
|
+
---
|
|
729
|
+
|
|
730
|
+
#### 任务 1.5:数据访问测试(L, P1)
|
|
731
|
+
**描述**: 编写 Repository 单元测试
|
|
732
|
+
|
|
733
|
+
**步骤**:
|
|
734
|
+
1. 配置 Vitest 测试环境
|
|
735
|
+
2. 创建测试数据库(或使用事务回滚)
|
|
736
|
+
3. 编写 `create()` 测试
|
|
737
|
+
4. 编写 `findById()` 测试
|
|
738
|
+
5. 编写 `claimTask()` 并发测试
|
|
739
|
+
|
|
740
|
+
**验收标准**:
|
|
741
|
+
- [ ] 测试覆盖率 > 80%
|
|
742
|
+
- [ ] 所有测试通过
|
|
743
|
+
- [ ] 并发测试验证乐观锁
|
|
744
|
+
|
|
745
|
+
**依赖**: 任务 1.4
|
|
746
|
+
|
|
747
|
+
---
|
|
748
|
+
|
|
749
|
+
### 阶段 2 任务
|
|
750
|
+
|
|
751
|
+
#### 任务 2.1:安装 LangGraph(XS, P0)
|
|
752
|
+
**描述**: 安装 LangGraph 依赖
|
|
753
|
+
|
|
754
|
+
**步骤**:
|
|
755
|
+
1. 运行 `pnpm add @langchain/core @langchain/langgraph`
|
|
756
|
+
2. 验证安装成功
|
|
757
|
+
|
|
758
|
+
**验收标准**:
|
|
759
|
+
- [ ] `pnpm list | grep langgraph` 显示版本
|
|
760
|
+
- [ ] 可以导入 LangGraph 模块
|
|
761
|
+
|
|
762
|
+
**依赖**: 阶段 1
|
|
763
|
+
|
|
764
|
+
---
|
|
765
|
+
|
|
766
|
+
#### 任务 2.2:LLM Service 封装(L, P0)
|
|
767
|
+
**描述**: 封装 DeepSeek API
|
|
768
|
+
|
|
769
|
+
**步骤**:
|
|
770
|
+
1. 创建 `src/services/llm/DeepSeekService.ts`
|
|
771
|
+
2. 实现 `chat()` 方法
|
|
772
|
+
3. 实现 `estimateCost()` 方法
|
|
773
|
+
4. 添加错误处理和重试
|
|
774
|
+
5. 添加 Token 记录
|
|
775
|
+
|
|
776
|
+
**验收标准**:
|
|
777
|
+
- [ ] 可以成功调用 DeepSeek API
|
|
778
|
+
- [ ] Token 使用正确记录
|
|
779
|
+
- [ ] 错误时自动重试(最多 3 次)
|
|
780
|
+
|
|
781
|
+
**依赖**: 任务 2.1
|
|
782
|
+
|
|
783
|
+
---
|
|
784
|
+
|
|
785
|
+
#### 任务 2.3:定义 Workflow State(M, P0)
|
|
786
|
+
**描述**: 定义 LangGraph 状态结构
|
|
787
|
+
|
|
788
|
+
**步骤**:
|
|
789
|
+
1. 创建 `src/domain/workflow/State.ts`
|
|
790
|
+
2. 定义 `WorkflowState` 接口
|
|
791
|
+
3. 定义所有字段类型
|
|
792
|
+
|
|
793
|
+
**验收标准**:
|
|
794
|
+
- [ ] 状态接口定义完整
|
|
795
|
+
- [ ] 所有字段有类型标注
|
|
796
|
+
|
|
797
|
+
**依赖**: 任务 2.1
|
|
798
|
+
|
|
799
|
+
---
|
|
800
|
+
|
|
801
|
+
#### 任务 2.4:实现 Write Node(L, P0)
|
|
802
|
+
**描述**: 实现写作节点
|
|
803
|
+
|
|
804
|
+
**步骤**:
|
|
805
|
+
1. 创建 `src/domain/workflow/nodes/WriteNode.ts`
|
|
806
|
+
2. 继承 LangGraph Node 类
|
|
807
|
+
3. 实现 `execute()` 方法
|
|
808
|
+
4. 构建 Prompt 模板
|
|
809
|
+
5. 调用 LLM Service
|
|
810
|
+
6. 解析返回结果
|
|
811
|
+
|
|
812
|
+
**验收标准**:
|
|
813
|
+
- [ ] 可以生成文章内容
|
|
814
|
+
- [ ] 文章内容符合要求
|
|
815
|
+
- [ ] 错误处理正确
|
|
816
|
+
|
|
817
|
+
**依赖**: 任务 2.2, 任务 2.3
|
|
818
|
+
|
|
819
|
+
---
|
|
820
|
+
|
|
821
|
+
#### 任务 2.5:实现 CheckText Node(XL, P0)
|
|
822
|
+
**描述**: 实现文本质检节点
|
|
823
|
+
|
|
824
|
+
**步骤**:
|
|
825
|
+
1. 创建 `src/domain/workflow/nodes/CheckTextNode.ts`
|
|
826
|
+
2. 实现硬规则检查(字数、关键词)
|
|
827
|
+
3. 实现 LLM 评审(相关性、连贯性)
|
|
828
|
+
4. 实现评分逻辑
|
|
829
|
+
5. 实现通过/失败判断
|
|
830
|
+
|
|
831
|
+
**验收标准**:
|
|
832
|
+
- [ ] 可以检测硬规则违规
|
|
833
|
+
- [ ] LLM 评分合理(1-10 分)
|
|
834
|
+
- [ ] 不合格内容返回改进建议
|
|
835
|
+
|
|
836
|
+
**依赖**: 任务 2.2, 任务 2.3
|
|
837
|
+
|
|
838
|
+
---
|
|
839
|
+
|
|
840
|
+
#### 任务 2.6:构建工作流图(L, P0)
|
|
841
|
+
**描述**: 组装完整工作流
|
|
842
|
+
|
|
843
|
+
**步骤**:
|
|
844
|
+
1. 创建 `src/domain/workflow/ContentCreatorGraph.ts`
|
|
845
|
+
2. 创建 StateGraph 实例
|
|
846
|
+
3. 添加所有节点
|
|
847
|
+
4. 配置条件路由
|
|
848
|
+
5. 配置循环(质检失败重试)
|
|
849
|
+
|
|
850
|
+
**验收标准**:
|
|
851
|
+
- [ ] 工作流图编译成功
|
|
852
|
+
- [ ] 可以执行完整流程
|
|
853
|
+
- [ ] 质检失败会重试(最多 3 次)
|
|
854
|
+
|
|
855
|
+
**依赖**: 任务 2.4, 任务 2.5
|
|
856
|
+
|
|
857
|
+
---
|
|
858
|
+
|
|
859
|
+
#### 任务 2.7:同步执行器(L, P0)
|
|
860
|
+
**描述**: 实现同步执行模式
|
|
861
|
+
|
|
862
|
+
**步骤**:
|
|
863
|
+
1. 创建 `src/application/sync-executor.ts`
|
|
864
|
+
2. 实现任务状态管理
|
|
865
|
+
3. 调用工作流图
|
|
866
|
+
4. 保存结果到数据库
|
|
867
|
+
5. 错误处理和回滚
|
|
868
|
+
|
|
869
|
+
**验收标准**:
|
|
870
|
+
- [ ] 可以同步执行任务
|
|
871
|
+
- [ ] 任务状态正确更新
|
|
872
|
+
- [ ] 结果正确保存
|
|
873
|
+
- [ ] 错误时状态回滚
|
|
874
|
+
|
|
875
|
+
**依赖**: 任务 2.6
|
|
876
|
+
|
|
877
|
+
---
|
|
878
|
+
|
|
879
|
+
#### 任务 2.8:CLI 接口(L, P1)
|
|
880
|
+
**描述**: 开发命令行工具
|
|
881
|
+
|
|
882
|
+
**步骤**:
|
|
883
|
+
1. 安装 Commander.js
|
|
884
|
+
2. 创建 `src/presentation/cli.ts`
|
|
885
|
+
3. 实现 `create` 命令
|
|
886
|
+
4. 实现 `status` 命令
|
|
887
|
+
5. 实现 `result` 命令
|
|
888
|
+
|
|
889
|
+
**验收标准**:
|
|
890
|
+
- [ ] 可以通过 CLI 创建任务
|
|
891
|
+
- [ ] 可以查询任务状态
|
|
892
|
+
- [ ] 可以查看任务结果
|
|
893
|
+
- [ ] 帮助文档完整
|
|
894
|
+
|
|
895
|
+
**依赖**: 任务 2.7
|
|
896
|
+
|
|
897
|
+
---
|
|
898
|
+
|
|
899
|
+
### 阶段 3 任务
|
|
900
|
+
|
|
901
|
+
#### 任务 3.1:配置 Bull 队列(M, P0)
|
|
902
|
+
**描述**: 配置任务队列
|
|
903
|
+
|
|
904
|
+
**步骤**:
|
|
905
|
+
1. 创建 `src/infrastructure/queue/taskQueue.ts`
|
|
906
|
+
2. 配置 Redis 连接
|
|
907
|
+
3. 定义任务选项(重试、超时)
|
|
908
|
+
4. 创建队列实例
|
|
909
|
+
|
|
910
|
+
**验收标准**:
|
|
911
|
+
- [ ] 队列实例创建成功
|
|
912
|
+
- [ ] 可以添加任务到队列
|
|
913
|
+
- [ ] Redis 连接正常
|
|
914
|
+
|
|
915
|
+
**依赖**: 阶段 2
|
|
916
|
+
|
|
917
|
+
---
|
|
918
|
+
|
|
919
|
+
#### 任务 3.2:异步执行器(L, P0)
|
|
920
|
+
**描述**: 实现异步任务提交
|
|
921
|
+
|
|
922
|
+
**步骤**:
|
|
923
|
+
1. 创建 `src/application/async-executor.ts`
|
|
924
|
+
2. 实现 `submit()` 方法
|
|
925
|
+
3. 添加任务到队列
|
|
926
|
+
4. 返回任务 ID 给调用者
|
|
927
|
+
|
|
928
|
+
**验收标准**:
|
|
929
|
+
- [ ] 可以提交异步任务
|
|
930
|
+
- [ ] 任务立即返回 ID
|
|
931
|
+
- [ ] 任务在队列中可见
|
|
932
|
+
|
|
933
|
+
**依赖**: 任务 3.1
|
|
934
|
+
|
|
935
|
+
---
|
|
936
|
+
|
|
937
|
+
#### 任务 3.3:Worker 进程(XL, P0)
|
|
938
|
+
**描述**: 实现 Worker 逻辑
|
|
939
|
+
|
|
940
|
+
**步骤**:
|
|
941
|
+
1. 创建 `src/infrastructure/worker/taskWorker.ts`
|
|
942
|
+
2. 配置并发数
|
|
943
|
+
3. 实现任务处理函数
|
|
944
|
+
4. 实现 Worker 抢占机制
|
|
945
|
+
5. 添加心跳检测
|
|
946
|
+
|
|
947
|
+
**验收标准**:
|
|
948
|
+
- [ ] Worker 可以处理队列任务
|
|
949
|
+
- [ ] 抢占机制正确
|
|
950
|
+
- [ ] Worker 崩溃任务可被接管
|
|
951
|
+
- [ ] 心跳正常工作
|
|
952
|
+
|
|
953
|
+
**依赖**: 任务 3.2
|
|
954
|
+
|
|
955
|
+
---
|
|
956
|
+
|
|
957
|
+
#### 任务 3.4:多 Worker 部署(L, P1)
|
|
958
|
+
**描述**: 配置 Docker Compose
|
|
959
|
+
|
|
960
|
+
**步骤**:
|
|
961
|
+
1. 创建 `docker-compose.yml`
|
|
962
|
+
2. 配置 Worker 服务
|
|
963
|
+
3. 配置环境变量
|
|
964
|
+
4. 配置健康检查
|
|
965
|
+
|
|
966
|
+
**验收标准**:
|
|
967
|
+
- [ ] `docker-compose up` 启动 5 个 Worker
|
|
968
|
+
- [ ] 所有 Worker 正常运行
|
|
969
|
+
- [ ] 健康检查通过
|
|
970
|
+
|
|
971
|
+
**依赖**: 任务 3.3
|
|
972
|
+
|
|
973
|
+
---
|
|
974
|
+
|
|
975
|
+
#### 任务 3.5:队列监控(M, P2)
|
|
976
|
+
**描述**: 添加 Bull Board UI
|
|
977
|
+
|
|
978
|
+
**步骤**:
|
|
979
|
+
1. 安装 `bull-board`
|
|
980
|
+
2. 创建 Express 服务器
|
|
981
|
+
3. 挂载 Bull Board
|
|
982
|
+
4. 配置认证(可选)
|
|
983
|
+
|
|
984
|
+
**验收标准**:
|
|
985
|
+
- [ ] 可以访问监控面板
|
|
986
|
+
- [ ] 看到队列状态
|
|
987
|
+
- [ ] 可以查看任务详情
|
|
988
|
+
|
|
989
|
+
**依赖**: 任务 3.1
|
|
990
|
+
|
|
991
|
+
---
|
|
992
|
+
|
|
993
|
+
### 阶段 4 任务
|
|
994
|
+
|
|
995
|
+
#### 任务 4.1:质量检查服务(XL, P0)
|
|
996
|
+
**描述**: 实现质量检查逻辑
|
|
997
|
+
|
|
998
|
+
**步骤**:
|
|
999
|
+
1. 创建 `src/services/quality/QualityCheckService.ts`
|
|
1000
|
+
2. 实现硬规则检查
|
|
1001
|
+
3. 实现 LLM 评审
|
|
1002
|
+
4. 实现评分逻辑
|
|
1003
|
+
5. 保存质检结果
|
|
1004
|
+
|
|
1005
|
+
**验收标准**:
|
|
1006
|
+
- [ ] 硬规则检查准确
|
|
1007
|
+
- [ ] LLM 评分合理
|
|
1008
|
+
- [ ] 质检结果正确保存
|
|
1009
|
+
|
|
1010
|
+
**依赖**: 阶段 3
|
|
1011
|
+
|
|
1012
|
+
---
|
|
1013
|
+
|
|
1014
|
+
#### 任务 4.2:Winston 日志(M, P1)
|
|
1015
|
+
**描述**: 配置日志系统
|
|
1016
|
+
|
|
1017
|
+
**步骤**:
|
|
1018
|
+
1. 安装 Winston
|
|
1019
|
+
2. 创建 `src/infrastructure/logging/logger.ts`
|
|
1020
|
+
3. 配置文件传输
|
|
1021
|
+
4. 配置控制台输出
|
|
1022
|
+
5. 配置日志级别
|
|
1023
|
+
|
|
1024
|
+
**验收标准**:
|
|
1025
|
+
- [ ] 日志写入文件
|
|
1026
|
+
- [ ] 日志格式正确(JSON)
|
|
1027
|
+
- [ ] 日志级别过滤正确
|
|
1028
|
+
|
|
1029
|
+
**依赖**: 阶段 3
|
|
1030
|
+
|
|
1031
|
+
---
|
|
1032
|
+
|
|
1033
|
+
#### 任务 4.3:Sentry 集成(M, P1)
|
|
1034
|
+
**描述**: 集成错误追踪
|
|
1035
|
+
|
|
1036
|
+
**步骤**:
|
|
1037
|
+
1. 安装 Sentry SDK
|
|
1038
|
+
2. 配置 DSN
|
|
1039
|
+
3. 添加全局错误处理
|
|
1040
|
+
4. 添加上下文信息
|
|
1041
|
+
|
|
1042
|
+
**验收标准**:
|
|
1043
|
+
- [ ] 错误上报到 Sentry
|
|
1044
|
+
- [ ] 事件包含完整堆栈
|
|
1045
|
+
- [ ] 可以查看错误详情
|
|
1046
|
+
|
|
1047
|
+
**依赖**: 阶段 3
|
|
1048
|
+
|
|
1049
|
+
---
|
|
1050
|
+
|
|
1051
|
+
#### 任务 4.4:Token 监控(L, P0)
|
|
1052
|
+
**描述**: 实现 Token 监控和告警
|
|
1053
|
+
|
|
1054
|
+
**步骤**:
|
|
1055
|
+
1. 创建 `src/services/token/TokenMonitor.ts`
|
|
1056
|
+
2. 记录每次 Token 使用
|
|
1057
|
+
3. 计算日累计用量
|
|
1058
|
+
4. 实现告警逻辑(80%、100%)
|
|
1059
|
+
5. 发送告警通知(邮件/钉钉)
|
|
1060
|
+
|
|
1061
|
+
**验收标准**:
|
|
1062
|
+
- [ ] Token 使用正确记录
|
|
1063
|
+
- [ ] 超过 80% 发送告警
|
|
1064
|
+
- [ ] 超过 100% 拒绝请求
|
|
1065
|
+
|
|
1066
|
+
**依赖**: 阶段 3
|
|
1067
|
+
|
|
1068
|
+
---
|
|
1069
|
+
|
|
1070
|
+
#### 任务 4.5:API Key 加密(L, P0)
|
|
1071
|
+
**描述**: 加密存储 API Key
|
|
1072
|
+
|
|
1073
|
+
**步骤**:
|
|
1074
|
+
1. 创建 `src/infrastructure/security/apiKeyManager.ts`
|
|
1075
|
+
2. 实现 AES-256-GCM 加密
|
|
1076
|
+
3. 实现解密方法
|
|
1077
|
+
4. 修改 LLM Service 使用加密 Key
|
|
1078
|
+
|
|
1079
|
+
**验收标准**:
|
|
1080
|
+
- [ ] API Key 加密存储
|
|
1081
|
+
- [ ] 运行时正确解密
|
|
1082
|
+
- [ ] 密钥不暴露在日志中
|
|
1083
|
+
|
|
1084
|
+
**依赖**: 阶段 3
|
|
1085
|
+
|
|
1086
|
+
---
|
|
1087
|
+
|
|
1088
|
+
## ⚠️ 风险评估与缓解
|
|
1089
|
+
|
|
1090
|
+
### 技术风险
|
|
1091
|
+
|
|
1092
|
+
| 风险 | 概率 | 影响 | 缓解策略 |
|
|
1093
|
+
|------|------|------|----------|
|
|
1094
|
+
| **LangGraph 学习曲线** | 高 | 中 | 预留额外学习时间,准备备选方案 |
|
|
1095
|
+
| **LLM API 不稳定** | 中 | 高 | 实现重试机制,准备备用 API |
|
|
1096
|
+
| **并发控制复杂** | 高 | 中 | 充分测试,使用乐观锁 |
|
|
1097
|
+
| **Token 成本失控** | 中 | 高 | 实施监控和预算告警 |
|
|
1098
|
+
| **数据库性能瓶颈** | 中 | 中 | 分区策略,索引优化 |
|
|
1099
|
+
|
|
1100
|
+
### 业务风险
|
|
1101
|
+
|
|
1102
|
+
| 风险 | 概率 | 影响 | 缓解策略 |
|
|
1103
|
+
|------|------|------|----------|
|
|
1104
|
+
| **内容合规风险** | 高 | 高 | 集成内容审核服务 |
|
|
1105
|
+
| **API Key 泄露** | 中 | 高 | 加密存储,定期轮换 |
|
|
1106
|
+
| **竞争压力** | 高 | 中 | 快速迭代,差异化功能 |
|
|
1107
|
+
|
|
1108
|
+
### 运营风险
|
|
1109
|
+
|
|
1110
|
+
| 风险 | 概率 | 影响 | 缓解策略 |
|
|
1111
|
+
|------|------|------|----------|
|
|
1112
|
+
| **人员依赖** | 高 | 高 | 完善文档,知识沉淀 |
|
|
1113
|
+
| **扩展性不足** | 中 | 中 | 插件化架构设计 |
|
|
1114
|
+
|
|
1115
|
+
---
|
|
1116
|
+
|
|
1117
|
+
## 📈 成功指标
|
|
1118
|
+
|
|
1119
|
+
### 开发阶段指标
|
|
1120
|
+
|
|
1121
|
+
| 阶段 | 指标 | 目标值 |
|
|
1122
|
+
|------|------|--------|
|
|
1123
|
+
| 阶段 0 | 环境验证通过率 | 100% |
|
|
1124
|
+
| 阶段 1 | 测试覆盖率 | > 80% |
|
|
1125
|
+
| 阶段 2 | 端到端成功率 | > 95% |
|
|
1126
|
+
| 阶段 3 | 并发任务处理 | 10 个 |
|
|
1127
|
+
| 阶段 4 | 错误上报率 | 100% |
|
|
1128
|
+
|
|
1129
|
+
### 生产环境指标
|
|
1130
|
+
|
|
1131
|
+
| 类别 | 指标 | 目标值 |
|
|
1132
|
+
|------|------|--------|
|
|
1133
|
+
| **性能** | 单任务延迟 | < 5 分钟 |
|
|
1134
|
+
| **性能** | 并发用户数 | 100 |
|
|
1135
|
+
| **性能** | 日任务量 | 3000 |
|
|
1136
|
+
| **可用性** | 系统可用性 | 99.9% |
|
|
1137
|
+
| **可用性** | Worker 故障恢复 | < 1 分钟 |
|
|
1138
|
+
| **质量** | 内容合格率 | > 90% |
|
|
1139
|
+
| **成本** | 月度运营成本 | ¥500-900 |
|
|
1140
|
+
|
|
1141
|
+
---
|
|
1142
|
+
|
|
1143
|
+
## 🛠️ 所需资源与依赖
|
|
1144
|
+
|
|
1145
|
+
### 人力资源
|
|
1146
|
+
|
|
1147
|
+
| 角色 | 人数 | 工作量 | 技能要求 |
|
|
1148
|
+
|------|------|--------|----------|
|
|
1149
|
+
| **全栈工程师** | 1 | 15-24 天 | Node.js, TypeScript, PostgreSQL, LangGraph |
|
|
1150
|
+
|
|
1151
|
+
### 基础设施
|
|
1152
|
+
|
|
1153
|
+
| 资源 | 规格 | 成本 |
|
|
1154
|
+
|------|------|------|
|
|
1155
|
+
| **PostgreSQL** | 4 核 8GB | ¥100-200/月 |
|
|
1156
|
+
| **Redis** | 2 核 4GB | ¥50-100/月 |
|
|
1157
|
+
| **对象存储** | 100GB | ¥10-20/月 |
|
|
1158
|
+
| **计算资源** | 5 Worker × 2 核 | ¥200-400/月 |
|
|
1159
|
+
|
|
1160
|
+
### 外部服务
|
|
1161
|
+
|
|
1162
|
+
| 服务 | 用途 | 成本 |
|
|
1163
|
+
|------|------|------|
|
|
1164
|
+
| **DeepSeek API** | LLM | ¥300-500/月 |
|
|
1165
|
+
| **Doubao API** | 图片生成 | ¥50-100/月 |
|
|
1166
|
+
| **内容审核** | 合规检查 | ¥7/月 |
|
|
1167
|
+
| **Sentry** | 错误追踪 | 免费 |
|
|
1168
|
+
|
|
1169
|
+
### 开发工具
|
|
1170
|
+
|
|
1171
|
+
| 工具 | 用途 | 成本 |
|
|
1172
|
+
|------|------|------|
|
|
1173
|
+
| **VS Code** | IDE | 免费 |
|
|
1174
|
+
| **Postman** | API 测试 | 免费 |
|
|
1175
|
+
| **TablePlus** | 数据库客户端 | ¥49(一次性) |
|
|
1176
|
+
|
|
1177
|
+
---
|
|
1178
|
+
|
|
1179
|
+
## ⏱️ 时间线估算
|
|
1180
|
+
|
|
1181
|
+
### 总体时间线
|
|
1182
|
+
|
|
1183
|
+
```
|
|
1184
|
+
Week 1 Week 2 Week 3 Week 4
|
|
1185
|
+
│────│────│────│────│────│────│────│────│────│────│
|
|
1186
|
+
阶段 0 阶段 1 阶段 2 阶段 3,4
|
|
1187
|
+
(1-2天) (3-5天) (5-7天) (6-10天)
|
|
1188
|
+
```
|
|
1189
|
+
|
|
1190
|
+
### 详细甘特图
|
|
1191
|
+
|
|
1192
|
+
```
|
|
1193
|
+
任务 周次
|
|
1194
|
+
1 2 3 4
|
|
1195
|
+
阶段 0 ██
|
|
1196
|
+
阶段 1 █████
|
|
1197
|
+
阶段 2 ███████
|
|
1198
|
+
阶段 3 █████
|
|
1199
|
+
阶段 4 █████
|
|
1200
|
+
|
|
1201
|
+
关键里程碑:
|
|
1202
|
+
M1: 环境准备完成 ✗
|
|
1203
|
+
M2: 数据层完成 □
|
|
1204
|
+
M3: 工作流完成 □
|
|
1205
|
+
M4: 异步系统完成 □
|
|
1206
|
+
M5: 监控优化完成 □
|
|
1207
|
+
```
|
|
1208
|
+
|
|
1209
|
+
---
|
|
1210
|
+
|
|
1211
|
+
## 📚 附录
|
|
1212
|
+
|
|
1213
|
+
### A. 技术决策记录
|
|
1214
|
+
|
|
1215
|
+
| 决策 | 选择 | 理由 | 日期 |
|
|
1216
|
+
|------|------|------|------|
|
|
1217
|
+
| **数据库** | PostgreSQL | 高并发、分布式支持 | 2025-01-18 |
|
|
1218
|
+
| **队列** | Bull | 成熟稳定、功能丰富 | 2025-01-18 |
|
|
1219
|
+
| **LLM** | DeepSeek | 性价比高、中文优秀 | 2025-01-18 |
|
|
1220
|
+
| **工作流引擎** | LangGraph | 状态管理优秀 | 2025-01-18 |
|
|
1221
|
+
|
|
1222
|
+
### B. 术语表
|
|
1223
|
+
|
|
1224
|
+
| 术语 | 定义 |
|
|
1225
|
+
|------|------|
|
|
1226
|
+
| **LangGraph** | LangChain 的状态管理库,用于构建复杂工作流 |
|
|
1227
|
+
| **Bull** | Redis 队列库,支持任务调度和重试 |
|
|
1228
|
+
| **Worker** | 后台工作进程,处理异步任务 |
|
|
1229
|
+
| **Token** | LLM 的计费单位,约等于 0.75 个英文单词 |
|
|
1230
|
+
| **质检** | 质量检查,确保生成内容符合要求 |
|
|
1231
|
+
|
|
1232
|
+
### C. 参考文档
|
|
1233
|
+
|
|
1234
|
+
- [architecture-complete.md](../../docs/architecture-complete.md) - 完整架构设计
|
|
1235
|
+
- [implementation-plan.md](../../docs/implementation-plan.md) - 实施计划
|
|
1236
|
+
- [phase-0-setup-guide.md](../../docs/phase-0-setup-guide.md) - 阶段 0 指南
|
|
1237
|
+
|
|
1238
|
+
---
|
|
1239
|
+
|
|
1240
|
+
**文档版本**: 1.0
|
|
1241
|
+
**最后更新**: 2025-01-18
|
|
1242
|
+
**下次评审**: 阶段 1 完成后
|