{"repo": "8086k-a/health", "files": {"health-ai/src/main/java/com/health/ai/config/AiModelConfig.java": {"2554ce0779afd69e66a04b85cb02546e9a2d521f": {"t": 1785746135.0637114, "n": 2583, "h": "a935ebe2823f81c2", "c": "package com.health.ai.config;\n\nimport java.time.Duration;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\n\n@Configuration\npublic class AiModelConfig\n{\n private static final Logger log = LoggerFactory.getLogger(AiModelConfig.class);\n\n private static final String DASHSCOPE_BASE_URL = \"https://dashscope.aliyuncs.com/compatible-mode/v1\";\n private static final String DEEPSEEK_BASE_URL = \"https://api.deepseek.com/v1\";\n\n @Autowired\n private AiModelProperties props;\n\n @Bean\n public StreamingChatLanguageModel streamingChatLanguageModel()\n {\n String provider = props.getProvider();\n log.info(\">>> 初始化 AI 模型, provider={}, model={}\", provider, props.getModelName());\n\n switch (provider.toLowerCase()) {\n case \"dashscope\":\n return OpenAiStreamingChatModel.builder()\n .baseUrl(DASHSCOPE_BASE_URL)\n .apiKey(props.getApiKey())\n .modelName(props.getModelName())\n .maxTokens(props.getMaxTokens())\n .temperature(props.getTemperature())\n .timeout(Duration.ofSeconds(120))\n .build();\n case \"openai\":\n return OpenAiStreamingChatModel.builder()\n .apiKey(props.getApiKey())\n .modelName(props.getModelName())\n .maxTokens(props.getMaxTokens())\n .temperature(props.getTemperature())\n .timeout(Duration.ofSeconds(120))\n .build();\n case \"deepseek\":\n return OpenAiStreamingChatModel.builder()\n .baseUrl(DEEPSEEK_BASE_URL)\n .apiKey(props.getApiKey())\n .modelName(props.getModelName())\n .maxTokens(props.getMaxTokens())\n .temperature(props.getTemperature())\n .timeout(Duration.ofSeconds(120))\n .build();\n default:\n throw new IllegalArgumentException(\n \"不支持的 AI provider: \" + provider\n + \",可选值: dashscope / openai / deepseek\");\n }\n }\n}\n"}}, "health-admin/src/main/resources/application.yml": {"2554ce0779afd69e66a04b85cb02546e9a2d521f": {"t": 1785746950.0313144, "n": 3094, "h": "ebc594b561578dc0", "c": "# 项目相关配置\nruoyi:\n # 名称\n name: RuoYi\n # 版本\n version: 3.9.2\n # 版权年份\n copyrightYear: 2026\n # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)\n profile: D:/ruoyi/uploadPath\n # 获取ip地址开关\n addressEnabled: false\n # 验证码类型 math 数字计算 char 字符验证\n captchaType: math\n\n# 开发环境配置\nserver:\n # 服务器的HTTP端口,默认为8080\n port: 8080\n servlet:\n # 应用的访问路径\n context-path: /\n tomcat:\n # tomcat的URI编码\n uri-encoding: UTF-8\n # 连接数满后的排队数,默认为100\n accept-count: 1000\n threads:\n # tomcat最大线程数,默认为200\n max: 800\n # Tomcat启动初始化的线程数,默认值10\n min-spare: 100\n\n# 日志配置\nlogging:\n level:\n com.health: debug\n org.springframework: warn\n\n# 用户配置\nuser:\n password:\n # 密码最大错误次数\n maxRetryCount: 5\n # 密码锁定时间(默认10分钟)\n lockTime: 10\n\n# Spring配置\nspring:\n # 资源信息\n messages:\n # 国际化资源文件路径\n basename: i18n/messages\n profiles:\n active: druid\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 10MB\n # 设置总上传的文件大小\n max-request-size: 20MB\n # 服务模块\n devtools:\n restart:\n # 热部署开关\n enabled: true\n data:\n # redis 配置\n redis:\n # 地址\n host: localhost\n # 端口,默认为6379\n port: 6379\n # 数据库索引\n database: 0\n # 密码\n password:\n # 连接超时时间\n timeout: 10s\n lettuce:\n pool:\n # 连接池中的最小空闲连接\n min-idle: 0\n # 连接池中的最大空闲连接\n max-idle: 8\n # 连接池的最大数据库连接数\n max-active: 8\n # #连接池最大阻塞等待时间(使用负值表示没有限制)\n max-wait: -1ms\n\n# token配置\ntoken:\n # 令牌自定义标识\n header: Authorization\n # 令牌密钥\n secret: abcdefghijklmnopqrstuvwxyz\n # 令牌有效期(默认30分钟)\n expireTime: 30\n\n# MyBatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.health.**.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath*:mapper/**/*Mapper.xml\n # 加载全局的配置文件\n configLocation: classpath:mybatis/mybatis-config.xml\n\n# PageHelper分页插件\npagehelper:\n helperDialect: mysql\n supportMethodsArguments: true\n params: count=countSql\n\n# Springdoc配置\nspringdoc:\n api-docs:\n path: /v3/api-docs\n swagger-ui:\n enabled: true\n path: /swagger-ui.html\n tags-sorter: alpha\n group-configs:\n - group: 'default'\n display-name: '测试模块'\n paths-to-match: '/**'\n packages-to-scan: com.health.web.controller.tool\n\n# 阿里云OSS相关配置\naliyun:\n oss:\n endpoint: https://oss-cn-beijing.aliyuncs.com\n bucketName: itheima-web-health\n accessKeyId: YOUR_ACCESS_KEY_ID\n accessKeySecret: YOUR_ACCESS_KEY_SECRET\n\n# AI 模型配置\nai:\n model:\n # dashscope | openai | deepseek\n provider: dashscope\n api-key: sk-ws-H.EMYHPRY.9Pxy.MEUCIQDEotop8ZknEIH45n0NyZj6vk99snYemHkhphJSdlV7iQIgeXW_A5FFM-TX750I_MC85nQPzBUDhgUXI79I2mBNoDk\n model-name: deepseek-v4-flash\n\n max-tokens: 2048\n temperature: 0.7\n max-history-messages: 20\n system-prompt: \"你是一个专业、友好的 AI 助手,请用中文回答问题。\"\n\n# 防盗链配置\nreferer:\n # 防盗链开关\n enabled: false\n # 允许的域名列表\n allowed-domains: localhost,127.0.0.1,ruoyi.vip,www.ruoyi.vip\n\n# 防止XSS攻击\nxss:\n # 过滤开关\n enabled: true\n # 排除链接(多个用逗号分隔)\n excludes: /system/notice\n # 匹配链接\n urlPatterns: /system/*,/monitor/*,/tool/*\n"}, "b53fa498587d831c5430ebf98f958a046103034c": {"t": 1785760092.19205, "n": 2726, "h": "7bfbcb8423792c79", "c": "# 项目相关配置\nruoyi:\n # 名称\n name: RuoYi\n # 版本\n version: 3.9.2\n # 版权年份\n copyrightYear: 2026\n # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)\n profile: D:/ruoyi/uploadPath\n # 获取ip地址开关\n addressEnabled: false\n # 验证码类型 math 数字计算 char 字符验证\n captchaType: math\n\n# 开发环境配置\nserver:\n # 服务器的HTTP端口,默认为8080\n port: 8080\n servlet:\n # 应用的访问路径\n context-path: /\n tomcat:\n # tomcat的URI编码\n uri-encoding: UTF-8\n # 连接数满后的排队数,默认为100\n accept-count: 1000\n threads:\n # tomcat最大线程数,默认为200\n max: 800\n # Tomcat启动初始化的线程数,默认值10\n min-spare: 100\n\n# 日志配置\nlogging:\n level:\n com.health: debug\n org.springframework: warn\n\n# 用户配置\nuser:\n password:\n # 密码最大错误次数\n maxRetryCount: 5\n # 密码锁定时间(默认10分钟)\n lockTime: 10\n\n# Spring配置\nspring:\n # 资源信息\n messages:\n # 国际化资源文件路径\n basename: i18n/messages\n profiles:\n active: druid\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 10MB\n # 设置总上传的文件大小\n max-request-size: 20MB\n # 服务模块\n devtools:\n restart:\n # 热部署开关\n enabled: true\n data:\n # redis 配置\n redis:\n # 地址\n host: localhost\n # 端口,默认为6379\n port: 6379\n # 数据库索引\n database: 0\n # 密码\n password:\n # 连接超时时间\n timeout: 10s\n lettuce:\n pool:\n # 连接池中的最小空闲连接\n min-idle: 0\n # 连接池中的最大空闲连接\n max-idle: 8\n # 连接池的最大数据库连接数\n max-active: 8\n # #连接池最大阻塞等待时间(使用负值表示没有限制)\n max-wait: -1ms\n\n# token配置\ntoken:\n # 令牌自定义标识\n header: Authorization\n # 令牌密钥\n secret: abcdefghijklmnopqrstuvwxyz\n # 令牌有效期(默认30分钟)\n expireTime: 30\n\n# MyBatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.health.**.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath*:mapper/**/*Mapper.xml\n # 加载全局的配置文件\n configLocation: classpath:mybatis/mybatis-config.xml\n\n# PageHelper分页插件\npagehelper:\n helperDialect: mysql\n supportMethodsArguments: true\n params: count=countSql\n\n# Springdoc配置\nspringdoc:\n api-docs:\n path: /v3/api-docs\n swagger-ui:\n enabled: true\n path: /swagger-ui.html\n tags-sorter: alpha\n group-configs:\n - group: 'default'\n display-name: '测试模块'\n paths-to-match: '/**'\n packages-to-scan: com.health.web.controller.tool\n\n# 阿里云OSS相关配置\naliyun:\n oss:\n endpoint: https://oss-cn-beijing.aliyuncs.com\n bucketName: itheima-web-health\n accessKeyId: YOUR_ACCESS_KEY_ID\n accessKeySecret: YOUR_ACCESS_KEY_SECRET\n\n# 防盗链配置\nreferer:\n # 防盗链开关\n enabled: false\n # 允许的域名列表\n allowed-domains: localhost,127.0.0.1,ruoyi.vip,www.ruoyi.vip\n\n# 防止XSS攻击\nxss:\n # 过滤开关\n enabled: true\n # 排除链接(多个用逗号分隔)\n excludes: /system/notice\n # 匹配链接\n urlPatterns: /system/*,/monitor/*,/tool/*\n"}}}}