feat: 项目初始化及当前全部内容提交

This commit is contained in:
2025-07-15 17:37:50 +08:00
parent ec817067f1
commit e78f192d34
622 changed files with 75174 additions and 383 deletions
@@ -0,0 +1,89 @@
# AI服务 Docker环境配置
server:
port: 9002
spring:
application:
name: emotion-ai
profiles:
active: docker
cloud:
nacos:
discovery:
server-addr: ${NACOS_SERVER_ADDR:nacos:8848}
namespace: public
group: DEFAULT_GROUP
config:
server-addr: ${NACOS_SERVER_ADDR:nacos:8848}
file-extension: yml
namespace: public
group: DEFAULT_GROUP
datasource:
url: jdbc:mysql://${MYSQL_HOST:mysql}:${MYSQL_PORT:3306}/emotion_museum?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
pool-name: EmotionAiHikariCP
minimum-idle: 5
maximum-pool-size: 20
auto-commit: true
idle-timeout: 30000
max-lifetime: 1800000
connection-timeout: 30000
data:
redis:
host: ${REDIS_HOST:redis}
port: ${REDIS_PORT:6379}
password:
database: 1
timeout: 6000ms
lettuce:
pool:
max-active: 8
max-wait: -1ms
max-idle: 8
min-idle: 0
# MyBatis Plus配置
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
jdbc-type-for-null: 'null'
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: assign_uuid
logic-delete-field: isDeleted
logic-delete-value: 1
logic-not-delete-value: 0
banner: false
# Coze API配置
coze:
api:
base-url: https://api.coze.cn
token: ${COZE_API_TOKEN:your-coze-api-token}
bot-id: 7523042446285439016
workflow-id: 7523047462895796287
timeout: 30000
# 日志配置
logging:
level:
com.emotionmuseum: DEBUG
com.emotionmuseum.ai.mapper: DEBUG
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level [%logger{50}] - %msg%n"
# 管理端点
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus
endpoint:
health:
show-details: always
@@ -0,0 +1,89 @@
server:
port: 19002
spring:
application:
name: emotion-ai
# 数据源配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/emotion_museum?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: root
password: 123456
# Redis配置
data:
redis:
host: localhost
port: 6379
password:
database: 1
timeout: 10000ms
lettuce:
pool:
max-active: 8
max-wait: -1ms
max-idle: 8
min-idle: 0
# MyBatis Plus配置
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: isDeleted
logic-delete-value: 1
logic-not-delete-value: 0
# Nacos配置
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
namespace:
group: DEFAULT_GROUP
enabled: true
register-enabled: true
heart-beat-interval: 5000
heart-beat-timeout: 15000
ip-delete-timeout: 30000
config:
server-addr: localhost:8848
namespace:
group: DEFAULT_GROUP
file-extension: yml
enabled: false
# Coze API配置
coze:
api:
base-url: https://api.coze.cn
token: ${COZE_API_TOKEN:your_coze_api_token}
bot-id: 7523042446285439016
workflow-id: 7523047462895796287
timeout: 30000
# 日志配置
logging:
level:
com.emotionmuseum: debug
org.springframework.web: debug
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n"
file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n"
file:
name: logs/emotion-ai-local.log
# 管理端点配置
management:
endpoints:
web:
exposure:
include: health,info,metrics
endpoint:
health:
show-details: always
@@ -0,0 +1,95 @@
server:
port: 9002
spring:
application:
name: emotion-ai
main:
allow-bean-definition-overriding: true
cloud:
nacos:
discovery:
server-addr: ${NACOS_SERVER_ADDR:localhost:8848}
namespace: public
group: DEFAULT_GROUP
enabled: true
ip: ${SERVER_IP:localhost}
metadata:
version: 1.0.0
environment: prod
config:
enabled: false
datasource:
url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:emotion_museum}?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: ${MYSQL_USERNAME:root}
password: ${MYSQL_PASSWORD:123456}
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
pool-name: EmotionAiHikariCP
minimum-idle: 5
maximum-pool-size: 20
auto-commit: true
idle-timeout: 30000
max-lifetime: 1800000
connection-timeout: 30000
data:
redis:
host: ${REDIS_HOST:localhost}
port: ${REDIS_PORT:6379}
database: 0
timeout: 3000ms
lettuce:
pool:
max-active: 20
max-idle: 10
min-idle: 5
max-wait: 3000ms
# MyBatis Plus配置
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: input
logic-delete-field: is_deleted
logic-delete-value: 1
logic-not-delete-value: 0
mapper-locations: classpath*:mapper/*.xml
# Coze平台配置
coze:
base-url: ${COZE_BASE_URL:https://api.coze.cn}
api-key: ${COZE_API_KEY:your-coze-api-key}
bot-id: ${COZE_BOT_ID:7523042446285439016}
workflow-id: ${COZE_WORKFLOW_ID:7523047462895796287}
user-id: ${COZE_USER_ID:emotion-museum-user}
token: pat_GCR4qKzqpf90wMCvKsldMrB18KG3QsLDci65bZthssKsbLxu8X70BKYumleDcabO
timeout: 60
max-retries: 3
stream: false
model:
temperature: 0.7
max-tokens: 1000
top-p: 0.9
frequency-penalty: 0.0
presence-penalty: 0.0
# 日志配置
logging:
level:
com.emotionmuseum: INFO
com.baomidou.mybatisplus: DEBUG
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
# 管理端点
management:
endpoints:
web:
exposure:
include: health,info,metrics
endpoint:
health:
show-details: always
@@ -0,0 +1,112 @@
server:
port: 19002
spring:
application:
name: emotion-ai
profiles:
active: dev
data:
redis:
host: localhost
port: 6379
database: 0
timeout: 3000ms
lettuce:
pool:
max-active: 20
max-idle: 10
min-idle: 5
max-wait: 3000ms
# 本地数据库配置(备用)
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/emotion_museum?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: ${DB_USERNAME:root}
password: ${DB_PASSWORD:123456}
hikari:
minimum-idle: 5
maximum-pool-size: 20
auto-commit: true
idle-timeout: 30000
pool-name: EmotionAiHikariCP
max-lifetime: 1800000
connection-timeout: 30000
connection-test-query: SELECT 1
cloud:
nacos:
discovery:
server-addr: localhost:8848
namespace: emotion-dev
group: DEFAULT_GROUP
enabled: false
config:
enabled: false
# Coze平台配置
coze:
base-url: ${COZE_BASE_URL:https://api.coze.cn}
api-key: ${COZE_API_KEY:your-coze-api-key}
bot-id: ${COZE_BOT_ID:7523042446285439016}
workflow-id: ${COZE_WORKFLOW_ID:7523047462895796287}
user-id: ${COZE_USER_ID:emotion-museum-user}
token: pat_GCR4qKzqpf90wMCvKsldMrB18KG3QsLDci65bZthssKsbLxu8X70BKYumleDcabO
timeout: 60
max-retries: 3
stream: false
model:
temperature: 0.7
max-tokens: 1000
top-p: 0.9
frequency-penalty: 0.0
presence-penalty: 0.0
# 功能开关配置
features:
emotion-analysis:
enabled: ${EMOTION_ANALYSIS_ENABLED:false} # 暂时禁用情绪分析
auto-analyze: false # 禁用自动情绪分析
chat:
enabled: true
stream: false
# MyBatis Plus配置
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
jdbc-type-for-null: 'null'
global-config:
db-config:
id-type: ASSIGN_UUID
logic-delete-field: is_deleted
logic-delete-value: 1
logic-not-delete-value: 0
mapper-locations: classpath*:/mapper/**/*.xml
# 监控配置
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus
endpoint:
health:
show-details: always
metrics:
export:
prometheus:
enabled: true
# 日志配置
logging:
level:
com.emotionmuseum: debug
com.baomidou.mybatisplus: debug
com.emotionmuseum.common.handler.MetaObjectHandler: debug
com.emotionmuseum.common.interceptor.UserContextInterceptor: debug
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level [%logger{50}] - %msg%n"
@@ -0,0 +1,3 @@
artifactId=emotion-ai
groupId=com.emotionmuseum
version=1.0.0
@@ -0,0 +1,47 @@
com/emotionmuseum/ai/dto/CreateConversationResponse.class
com/emotionmuseum/ai/dto/CreateConversationRequest.class
com/emotionmuseum/ai/dto/GuestChatResponse$EmotionAnalysisResult$EmotionAnalysisResultBuilder.class
com/emotionmuseum/ai/service/ConversationDbService.class
com/emotionmuseum/ai/config/FeatureConfig.class
com/emotionmuseum/ai/entity/GuestUser.class
com/emotionmuseum/ai/service/GuestUserService.class
com/emotionmuseum/ai/config/FeatureConfig$Chat.class
com/emotionmuseum/ai/dto/MessageListResponse$MessageListResponseBuilder.class
com/emotionmuseum/ai/service/GuestChatService.class
com/emotionmuseum/ai/controller/GuestChatController.class
com/emotionmuseum/ai/dto/ChatResponse$Usage.class
com/emotionmuseum/ai/dto/GuestChatResponse.class
com/emotionmuseum/ai/config/AiConfig.class
com/emotionmuseum/ai/dto/EmotionAnalysisResponse.class
com/emotionmuseum/ai/entity/Conversation.class
com/emotionmuseum/ai/dto/GuestUserInfo.class
com/emotionmuseum/ai/service/impl/GuestUserServiceImpl.class
com/emotionmuseum/ai/dto/EmotionAnalysisRequest.class
com/emotionmuseum/ai/dto/GuestUserInfo$GuestUserInfoBuilder.class
com/emotionmuseum/ai/dto/ConversationListResponse.class
com/emotionmuseum/ai/dto/GuestChatResponse$TokenUsage$TokenUsageBuilder.class
com/emotionmuseum/ai/service/impl/ConversationDbServiceImpl.class
com/emotionmuseum/ai/service/impl/AiChatServiceImpl.class
com/emotionmuseum/ai/controller/AiChatController.class
com/emotionmuseum/ai/dto/ChatResponse.class
com/emotionmuseum/ai/dto/ChatRequest.class
com/emotionmuseum/ai/config/FeatureConfig$EmotionAnalysis.class
com/emotionmuseum/ai/dto/EmotionAnalysisResponse$EmotionScore.class
com/emotionmuseum/ai/dto/GuestChatResponse$EmotionAnalysisResult.class
com/emotionmuseum/ai/entity/Message.class
com/emotionmuseum/ai/dto/MessageListResponse.class
com/emotionmuseum/ai/entity/CozeApiCall.class
com/emotionmuseum/ai/service/impl/GuestChatServiceImpl.class
com/emotionmuseum/ai/service/impl/AiChatServiceImpl$ChatCompletionResult.class
com/emotionmuseum/ai/service/AiChatService.class
com/emotionmuseum/ai/dto/ConversationListResponse$ConversationListResponseBuilder.class
com/emotionmuseum/ai/mapper/GuestUserMapper.class
com/emotionmuseum/ai/dto/GuestChatResponse$GuestChatResponseBuilder.class
com/emotionmuseum/ai/mapper/CozeApiCallMapper.class
com/emotionmuseum/ai/entity/EmotionAnalysis.class
com/emotionmuseum/ai/mapper/MessageMapper.class
com/emotionmuseum/ai/mapper/ConversationMapper.class
com/emotionmuseum/ai/AiApplication.class
com/emotionmuseum/ai/dto/GuestChatRequest.class
com/emotionmuseum/ai/dto/ChatRequest$ChatMessage.class
com/emotionmuseum/ai/dto/GuestChatResponse$TokenUsage.class
@@ -0,0 +1,33 @@
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/dto/CreateConversationRequest.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/entity/Conversation.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/dto/ChatResponse.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/service/ConversationDbService.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/service/impl/ConversationDbServiceImpl.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/controller/AiChatController.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/service/impl/GuestChatServiceImpl.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/entity/GuestUser.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/entity/Message.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/mapper/GuestUserMapper.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/dto/MessageListResponse.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/service/impl/GuestUserServiceImpl.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/service/GuestUserService.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/dto/ChatRequest.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/dto/EmotionAnalysisRequest.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/dto/GuestChatResponse.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/dto/CreateConversationResponse.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/service/AiChatService.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/mapper/MessageMapper.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/service/impl/AiChatServiceImpl.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/dto/GuestChatRequest.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/mapper/CozeApiCallMapper.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/entity/CozeApiCall.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/AiApplication.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/entity/EmotionAnalysis.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/dto/ConversationListResponse.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/dto/GuestUserInfo.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/dto/EmotionAnalysisResponse.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/mapper/ConversationMapper.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/controller/GuestChatController.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/config/AiConfig.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/service/GuestChatService.java
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/main/java/com/emotionmuseum/ai/config/FeatureConfig.java
@@ -0,0 +1 @@
com/emotionmuseum/ai/service/MessageSplitTest.class
@@ -0,0 +1 @@
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-ai/src/test/java/com/emotionmuseum/ai/service/MessageSplitTest.java