# ai-store-test **Repository Path**: JHCS12138/ai-store-test ## Basic Information - **Project Name**: ai-store-test - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-13 - **Last Updated**: 2026-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI Story Backend - Java AI Story 故事视频生成平台 Java 后端 - 从 Python/Django 迁移至 Spring Boot。 ## 技术栈 - **框架**: Spring Boot 3.3.5 - **JDK**: Java 17 - **数据库**: PostgreSQL + MyBatis-Plus 3.5.6 - **迁移**: Flyway - **消息队列**: Kafka (替代 Celery) - **缓存/实时**: Redis + SSE - **认证**: Spring Security + JWT - **文档**: SpringDoc OpenAPI ## 项目结构 ``` src/main/java/com/company/ai/ ├── AiStoryApplication.java # 启动类 ├── config/ # 配置类 │ ├── MybatisPlusConfig.java │ ├── RedisConfig.java │ ├── KafkaConfig.java │ └── SecurityConfig.java ├── controller/ # REST API │ ├── AuthController.java │ ├── ProjectController.java │ ├── PromptController.java │ └── ModelController.java ├── sse/ # SSE 实时推送 │ └── SseController.java ├── service/ # 业务逻辑 │ ├── AuthService.java │ ├── ProjectService.java │ └── PromptService.java ├── mapper/ # MyBatis-Plus Mapper ├── entity/ # 实体类 ├── dto/ # 数据传输对象 ├── kafka/ # Kafka 任务 │ ├── TaskProducer.java │ ├── TaskMessage.java │ ├── LLMStageConsumer.java │ ├── Text2ImageConsumer.java │ ├── Image2VideoConsumer.java │ ├── JianyingDraftConsumer.java │ └── FullPipelineConsumer.java ├── redis/ # Redis Pub/Sub │ └── RedisStreamPublisher.java └── security/ # JWT 认证 ├── JwtTokenProvider.java ├── JwtAuthenticationFilter.java └── UserDetailsServiceImpl.java ``` ## 快速开始 ### 1. 环境准备 - JDK 17+ - Maven 3.8+ - PostgreSQL - Redis - Kafka ### 2. 配置 编辑 `application.yml` 或设置环境变量: ```yaml spring: datasource: url: jdbc:postgresql://localhost:5432/aistory username: postgres password: your_password data: redis: host: localhost port: 6379 kafka: bootstrap-servers: localhost:9092 jwt: secret: your-secret-key-change-in-production ``` ### 3. 数据库初始化 ```bash # Flyway 会自动执行 db/migration/V1__init_schema.sql mvn flyway:migrate ``` ### 4. 运行 ```bash mvn spring-boot:run ``` 或 ```bash mvn clean package java -jar target/ai-story-backend-1.0.0.jar ``` ## API 端点 ### 用户认证 - `POST /api/v1/users/register` - 注册 - `POST /api/v1/users/login` - 登录 - `POST /api/v1/users/token/refresh` - 刷新 Token - `POST /api/v1/users/logout` - 登出 ### 项目管理 - `GET /api/v1/projects` - 项目列表 - `POST /api/v1/projects` - 创建项目 - `GET /api/v1/projects/{id}` - 项目详情 - `PUT /api/v1/projects/{id}` - 更新项目 - `DELETE /api/v1/projects/{id}` - 删除项目 - `POST /api/v1/projects/{id}/execute` - 执行阶段 - `POST /api/v1/projects/{id}/pipeline` - 运行完整流程 ### SSE 实时进度 - `GET /api/v1/projects/sse/{projectId}/stages/{stageName}` - 订阅单阶段 - `GET /api/v1/projects/sse/{projectId}` - 订阅全部阶段 ### 提示词管理 - `GET /api/v1/prompts/sets` - 提示词集列表 - `POST /api/v1/prompts/sets` - 创建提示词集 - `GET /api/v1/prompts/templates` - 模板列表 - `POST /api/v1/prompts/templates` - 创建模板 - `GET /api/v1/prompts/variables` - 变量列表 - `POST /api/v1/prompts/variables` - 创建变量 ### 模型管理 - `GET /api/v1/models/providers` - 模型提供商列表 - `POST /api/v1/models/providers` - 添加提供商 - `GET /api/v1/models/usage-logs` - 使用日志 ## Kafka Topics | Topic | 用途 | |-------|------| | llm-stage-topic | LLM 阶段任务(文案改写/分镜/运镜) | | text2image-topic | 文生图任务 | | image2video-topic | 图生视频任务 | | jianying-draft-topic | 剪映草稿生成 | | pipeline-topic | 完整流程任务 | ## Redis Channel 命名 ``` ai_story:project:{project_id}:stage:{stage_name} ai_story:project:{project_id}:jianying_draft ``` ## 消息类型 - `token` - 流式文本片段 - `stage_update` - 阶段状态更新 - `progress` - 批量处理进度 - `item_completed` - 单个项目完成 - `done` - 阶段完成 - `error` - 错误信息 - `pipeline_done` - 完整流程完成 ## Python → Java 迁移对照 | Python | Java | |--------|------| | Django + DRF | Spring Boot + Spring Web | | Django ORM | MyBatis-Plus | | Celery | Kafka | | Redis Pub/Sub | Spring Data Redis | | SSE | SseEmitter | | simplejwt | Spring Security + JWT | | Django Migrations | Flyway | ## 许可证 MIT