# 端口 server: port: 38927 # 多环境配置 spring: profiles: active: dev # active: prod application: name: server # 连接池配置 datasource: druid: initial-size: 5 min-idle: 5 max-active: 20 max-wait: 30000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 test-while-idle: true test-on-borrow: true test-on-return: false remove-abandoned: true remove-abandoned-timeout: 1800 #pool-prepared-statements: false #max-pool-prepared-statement-per-connection-size: 20 filters: stat, wall validation-query: SELECT 'x' aop-patterns: com.gxwebsoft.*.*.service.* stat-view-servlet: url-pattern: /druid/* reset-enable: true login-username: admin login-password: admin # json时间格式设置 jackson: time-zone: Asia/Shanghai date-format: yyyy-MM-dd HH:mm:ss # 设置上传文件大小 servlet: multipart: max-file-size: 100MB max-request-size: 100MB mvc: async: request-timeout: 600000 # 邮件服务器配置 mail: host: smtp.qq.com username: 517289602@qq.com password: fhvgbekxmxrxcaec default-encoding: UTF-8 properties: mail: smtp: auth: true socketFactory: class: javax.net.ssl.SSLSocketFactory port: 465 # Mybatis-plus配置 mybatis-plus: mapper-locations: classpath*:com/gxwebsoft/**/*Mapper.xml configuration: map-underscore-to-camel-case: true cache-enabled: true global-config: :banner: false db-config: id-type: auto logic-delete-value: 1 logic-not-delete-value: 0 # 框架配置 config: open-office-home: C:/OpenOffice4/ swagger-base-package: com.gxwebsoft swagger-title: 网宿软件 API文档 swagger-version: 1.0 token-key: WLgNsWJ8rPjRtnjzX/Gx2RGS80Kwnm/ZeLbvIL+NrBs= server-url: https://server.gxwebsoft.com/api file-server: http://localhost:38927 upload-path: /Users/liangxin/Project/JAVA/tower-java/ local-upload-path: /Users/gxwebsoft/Documents/uploads/ wx: miniapp: configs: - appid: wxf7ee9cd5801bf7a6 secret: b418211f69a64c9cecd1e5efc2a5765c msgDataFormat: JSON wxpay: api-v3-key: g4ny70843ynmcoxwfej0v2yuv9n28nut pub-key-id: PUB_KEY_ID_0117329300312025112800181693000807 app-id: wxf7ee9cd5801bf7a6 mch-id: 1732930031 mch-serial-no: 7EE24C695B278DB2C4F0C1CB42069065ECCBE3FD # Dify 平台对接 # # 唯一的实例:内网 http://10.100.158.15/v1(见《Dify API 文档》)。 # # 2026-10-12 完成迁移:此前代码连的是公网实例 http://82.156.98.71/v1, # 因开发机连不上内网而一直保留双份配置;VPN 打通后已全部并入内网。 # # 两套实例的应用 Key、知识库 ID、密钥完全不通用(实测互打一律 401), # 因此公网那套配置已整体移除,遗留一份只会造成误用。若确需回退, # 到 git 历史取本段即可,不要再在配置里维护两套。 dify: base-url: http://10.100.158.15/v1 timeout-ms: 600000 apps: # 医科大团委智能知识库问答系统 chat: app-ZLUUbLkAX3FVzDubY06puxAo # 活动策划大纲生成(advanced-chat,走 /chat-messages) activity-outline: app-4oBWB3HrdNlANdPFG8ZvVTkY # AI 内容创作与宣传助手 manuscript: app-fhhz4fXMkEdVivAEiuWpycn6 # AI 创意助手 creative-assistant: app-lAbpxMggNbIrByiDRDfckSSl # 项目书质量初审 project-quality-review: app-J6h5I6Bo4oeBif2EofBGVrGs # 竞赛文件预处理 competition-history-preprocess: app-UzVLKnGwg69uAUdbgFx6XNmc # 医科大智能文档处理系统 document-process: ${DIFY_KEY_DOCUMENT_PROCESS:app-ohdIhk0lVfUwoy10xXRebmjD} # 申报书生成 declaration: ${DIFY_KEY_DECLARATION:app-k20aDmiQYh3LxqZSLuX8wjkU} dataset: # 知识库列表等不区分知识库的接口所用密钥。 # 实测该密钥对实例内全部知识库均可用,keys 里逐库登记仅为将来分权留口子。 api-key: ${DIFY_DATASET_API_KEY:dataset-jaqtnAQvYcQTEjECzxhQfNCv} # 知识库 ID -> 独立密钥 keys: 181d58e3-78c2-4b7d-939c-57e780a8f7d6: ${DIFY_DATASET_KEY_COMPETITION:dataset-jaqtnAQvYcQTEjECzxhQfNCv} 3e0ac108-3a0d-41e2-8447-aa1c1044d3ac: ${DIFY_DATASET_KEY_GXMU:dataset-f2a0Hjxix7lBcPNZtNMyKDTQ} # 业务代号 -> 知识库 ID ids: # 竞赛案例(145 篇)。admin 端「竞赛历史」文档列表接口按此代号取库。 competition-cases: 181d58e3-78c2-4b7d-939c-57e780a8f7d6 # GXMU 团章(10 篇) gxmu-constitution: 3e0ac108-3a0d-41e2-8447-aa1c1044d3ac # 工作流变量名映射。 # 左边是入参实体的业务字段(中划线),右边是 Dify 工作流开始节点的真实变量名。 # # 以下取自 2026-10-12 在内网实例上重跑 probe-dify.sh 的实际输出。 # 该实例的变量名会随工作流编排调整而漂移,所以每次动工作流都要以探针输出为准, # 不要凭直觉推断。 # # 映射为空串 = 丢弃该字段(见 DifyProperties.VariableMapping 的约定), # 下面的失效变量即用此法显式剔除:它们已不在开始节点上, # 留着只会让人误以为仍在生效。注意不要直接删掉整行 —— 那会退回"按原名透传", # 反而把 pdfUrl / parseValue 这种驼峰名发给 Dify。 workflows: # 内网实测仅 pdf_file(文件类)。query/pdf_url 已从开始节点移除,故丢弃; # 实体里仍保留这两个字段,是为了不破坏 /documentProcess/upload 的入参契约 # (前端仍可传,只是不再转发给 Dify)。 document-process: fields: query: "" pdf-url: "" pdf-file: pdf_file # 内网实测 core_idea,tech_route,team_intro,upload_file(文件类)。 # parse_value 已从开始节点移除,故丢弃。 declaration: fields: core-idea: core_idea tech-route: tech_route team-intro: team_intro upload-file: upload_file parse-value: "" # 医科大开放平台对接 gxmu: openplat: base-url: http://210.36.49.10:15031/api/bd-api app-id: d50666e1621f493688a2 app-secret: c12ba36360a82ae7a59a4f0a056ec39d kfzzh: twxt2026 # 开发者密码, 建议用环境变量 OPENPLAT_KFZMM 覆盖 kfzmm: ${OPENPLAT_KFZMM:twxt2026} timeout-ms: 30000 max-retries: 2 page-size: 10000 # 学校统一身份认证(微服务认证平台 API v2.3),小程序的「学号 + 统一身份认证密码」登录走这里。 # # appid/appsecret 由学校认证管理员在认证后台 - 应用管理 - 应用列表 中签发。 # 2026-09-18 拿到后只在本地验证过(见 .scratch/student-sso/README.md 第 5.1 节), # 但这段配置当时漏了提交,代码上线后 /api/sso/login 一直报 # 「学校统一身份认证未配置,请联系管理员」——见本文件所在提交的说明。 # 与 openplat 凭证同样处理:默认值写在这里,同时保留环境变量覆盖。 auth: enabled: true base-url: https://cas.gxmu.edu.cn/lyuapServer app-id: ${GXMU_AUTH_APPID:7D8F6695611309E0} app-secret: ${GXMU_AUTH_APPSECRET:24f9dab5-3319-42cc-908d-2748417b7f92} timeout-ms: 10000 # 名册外的账号默认拒绝登录,见 ADR-0001:学生须先同步进名册 allow-unknown-user: false # 模块注册表(spec #58 / ADR 0006):启动期校验注册表 table_name 与 module 一致、 # 且注册表引用的业务表在库里存在,不一致直接启动失败(用户故事 21)。 # strict 默认 true;本地无库启动可临时设为 false 跳过校验。 module-registry: strict: true openplat-sync: enabled: true # 每天 03:30 cron: 0 30 3 * * ? # 教师同步时派生登录账号(手机号即用户名,后六位即密码),见 docs/adr/0008。 # 默认关闭:首次全量会建出上万账号,需要有意打开。 # 打开后重跑一次教师同步,即可给已有账号补授 teacher 角色。 teacher-account: enabled: true