feat: Add Jimeng image generation service and related functionality

- Implemented JimengService for image generation with API integration.
- Created OSSService for handling image uploads to S3.
- Developed PBService for managing PocketBase interactions.
- Added task management for image creation and downloading using BullMQ.
- Introduced routes for creating image generation tasks.
- Implemented logging and error handling for image processing.
- Added configuration management for Redis and other services.
- Created scripts for testing image generation and PocketBase integration.
- Updated package dependencies and added new scripts for worker management.
This commit is contained in:
2026-01-09 02:55:04 +08:00
parent 7cca41b457
commit 9da3d14752
31 changed files with 3193 additions and 5 deletions

35
prompts/src/app.ts Normal file
View File

@@ -0,0 +1,35 @@
import { JimengService } from './services/jimeng.service.ts';
import { OSSService } from './services/oss.service.ts';
import { PBService } from './services/pb.service.ts';
import { useConfig } from '@kevisual/use-config';
import { App } from '@kevisual/router'
import { useContextKey } from '@kevisual/context';
import { getRedisConnection } from './module/redis.ts';
import { Kevisual } from '@kevisual/ai';
export const config = useConfig();
export const redis = useContextKey('redis', () => getRedisConnection());
export const jimengService = useContextKey('jimeng', new JimengService({
apiKey: config.JIMENG_API_KEY,
baseUrl: config.JIMENG_API_URL,
timeout: parseInt(config.JIMENG_TIMEOUT || '300000'),
}));
export const ossService = useContextKey('oss', new OSSService({
accessKeyId: config.S3_ACCESS_KEY_ID,
accessKeySecret: config.S3_ACCESS_KEY_SECRET,
bucketName: config.S3_BUCKET_NAME,
region: config.S3_REGION,
endpoint: config.S3_ENDPOINT,
prefix: 'projects/horse/',
}));
export const pbService = useContextKey('pb', new PBService({
url: config.POCKETBASE_URL,
token: config.POCKETBASE_TOKEN,
}));
export const app = useContextKey('app', new App());
export const ai = useContextKey('ai', new Kevisual({
apiKey: config.KEVISUAL_NEW_API_KEY,
}));