feat(worker): implement AI vision services and complete image processing pipeline
- Add real OpenAI GPT-4 Vision integration with rate limiting - Add real Google Cloud Vision API integration - Create vision service orchestrator with fallback strategy - Implement complete image processing pipeline with BullMQ - Add batch processing with progress tracking - Create virus scanning processor with ClamAV integration - Add SEO filename generation with multiple strategies - Include comprehensive error handling and retry logic - Add production-ready configuration and validation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
d53cbb6757
commit
1329e874a4
17 changed files with 3352 additions and 0 deletions
101
packages/worker/package.json
Normal file
101
packages/worker/package.json
Normal file
|
@ -0,0 +1,101 @@
|
|||
{
|
||||
"name": "@seo-image-renamer/worker",
|
||||
"version": "1.0.0",
|
||||
"description": "Worker service for AI-powered image processing and SEO filename generation",
|
||||
"main": "dist/main.js",
|
||||
"scripts": {
|
||||
"build": "nest build",
|
||||
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
||||
"start": "nest start",
|
||||
"start:dev": "nest start --watch",
|
||||
"start:debug": "nest start --debug --watch",
|
||||
"start:prod": "node dist/main",
|
||||
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
|
||||
"test": "jest",
|
||||
"test:watch": "jest --watch",
|
||||
"test:cov": "jest --coverage",
|
||||
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
|
||||
"test:e2e": "jest --config ./test/jest-e2e.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nestjs/common": "^10.0.0",
|
||||
"@nestjs/core": "^10.0.0",
|
||||
"@nestjs/platform-express": "^10.0.0",
|
||||
"@nestjs/config": "^3.1.1",
|
||||
"@nestjs/bullmq": "^10.0.1",
|
||||
"@nestjs/terminus": "^10.2.0",
|
||||
"@nestjs/throttler": "^5.0.1",
|
||||
"@prisma/client": "^5.6.0",
|
||||
"bullmq": "^4.15.0",
|
||||
"redis": "^4.6.10",
|
||||
"ioredis": "^5.3.2",
|
||||
"sharp": "^0.32.6",
|
||||
"exifr": "^7.1.3",
|
||||
"piexifjs": "^1.0.6",
|
||||
"archiver": "^6.0.1",
|
||||
"minio": "^7.1.3",
|
||||
"aws-sdk": "^2.1489.0",
|
||||
"openai": "^4.20.1",
|
||||
"@google-cloud/vision": "^4.0.2",
|
||||
"node-clamav": "^0.8.5",
|
||||
"axios": "^1.6.0",
|
||||
"class-validator": "^0.14.0",
|
||||
"class-transformer": "^0.5.1",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rxjs": "^7.8.1",
|
||||
"uuid": "^9.0.1",
|
||||
"lodash": "^4.17.21",
|
||||
"mime-types": "^2.1.35",
|
||||
"file-type": "^18.7.0",
|
||||
"sanitize-filename": "^1.6.3",
|
||||
"winston": "^3.11.0",
|
||||
"winston-daily-rotate-file": "^4.7.1",
|
||||
"@nestjs/websockets": "^10.2.7",
|
||||
"@nestjs/platform-socket.io": "^10.2.7",
|
||||
"socket.io": "^4.7.4",
|
||||
"prom-client": "^15.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nestjs/cli": "^10.0.0",
|
||||
"@nestjs/schematics": "^10.0.0",
|
||||
"@nestjs/testing": "^10.0.0",
|
||||
"@types/express": "^4.17.17",
|
||||
"@types/jest": "^29.5.2",
|
||||
"@types/node": "^20.3.1",
|
||||
"@types/uuid": "^9.0.7",
|
||||
"@types/lodash": "^4.14.202",
|
||||
"@types/mime-types": "^2.1.4",
|
||||
"@types/archiver": "^6.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
||||
"@typescript-eslint/parser": "^6.0.0",
|
||||
"eslint": "^8.42.0",
|
||||
"eslint-config-prettier": "^9.0.0",
|
||||
"eslint-plugin-prettier": "^5.0.0",
|
||||
"jest": "^29.5.0",
|
||||
"prettier": "^3.0.0",
|
||||
"source-map-support": "^0.5.21",
|
||||
"supertest": "^6.3.3",
|
||||
"ts-jest": "^29.1.0",
|
||||
"ts-loader": "^9.4.3",
|
||||
"ts-node": "^10.9.1",
|
||||
"tsconfig-paths": "^4.2.1",
|
||||
"typescript": "^5.1.3"
|
||||
},
|
||||
"jest": {
|
||||
"moduleFileExtensions": [
|
||||
"js",
|
||||
"json",
|
||||
"ts"
|
||||
],
|
||||
"rootDir": "src",
|
||||
"testRegex": ".*\\.spec\\.ts$",
|
||||
"transform": {
|
||||
"^.+\\.(t|j)s$": "ts-jest"
|
||||
},
|
||||
"collectCoverageFrom": [
|
||||
"**/*.(t|j)s"
|
||||
],
|
||||
"coverageDirectory": "../coverage",
|
||||
"testEnvironment": "node"
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue