module.exports = { env: process.env.NODE_ENV || "development", // 运行环境 development | production port: process.env.PORT || 4000, // 服务端口 db: { url: process.env.DB, // 数据库连接地址 opts: {}, // sequelize options }, xunruan: { host: process.env.XUNRUAN_HOST // 迅软解密服务地址 }, qiniu: { // 七牛云配置 dmn: process.env.FS_QINIU_DOMAIN, bkt: process.env.FS_QINIU_BUCKET, ak: process.env.FS_QINIU_ACCESSKEY, sk: process.env.FS_QINIU_SECRETKEY, }, imageAssets: { databaseUrl: process.env.IMAGE_ASSETS_DATABASE_URL, dashscopeApiKey: process.env.DASHSCOPE_API_KEY, dashscopeBaseUrl: process.env.DASHSCOPE_BASE_URL || "https://dashscope.aliyuncs.com/compatible-mode/v1", embeddingModel: process.env.IMAGE_ASSET_EMBEDDING_MODEL || "qwen3.7-text-embedding", embeddingDimensions: Number(process.env.IMAGE_ASSET_EMBEDDING_DIMENSIONS || 1024), requestTimeout: Number(process.env.IMAGE_ASSET_REQUEST_TIMEOUT || 30000), }, pssaRequest: [ { // 数据请求方法封装 由核心包提供使用 name: "xiaReq", // 请求方法名 .eg app.fs.xiaReq root: "http://www.xiapazi.site/api", // 请求根地址 option: { // superagent 的默认参数 query: { template: "@peace/node_server", env: process.env.NODE_ENV || "development", }, body: {}, params: {}, header: { "Content-Type": "application/json" }, timeout: 5000, timekeep: true, // 是否记录请求时间差 interceptor: (res, err) => { // 拦截器 if (err) return err; return res.body ?? {}; }, }, }, { name: "emisReq", root: process.env.EMIS_API || "http://localhost:4000", option: { query: { template: "@peace/node_server", env: process.env.NODE_ENV || "development", }, body: {}, params: {}, header: { "Content-Type": "application/json" }, timeout: 10000, timekeep: true, interceptor: (res, err) => { if (err) return err; return res.body ?? {}; }, }, }, { name: "centerRequest", root: process.env.AI_CENTER_URL || "http://localhost:4001", option: { query: {}, body: {}, params: {}, header: { "Content-Type": "application/json" }, timeout: 10000, timekeep: true, interceptor: (res, err) => { if (err) return err; return res.body ?? {}; }, }, }, ], sms: { // 短信配置 ali: { // 阿里云短信配置 使用前需要安装 @alicloud/pop-core 包 accessKey: process.env.SMS_ALI_ACCESSKEYID || "123456", accessSecret: process.env.SMS_ALI_ACCESSKEYSECRET || "123456", }, }, tenderUser: { emis: { code: process.env.TENDER_USER_EMIS_CODE || "ai-center", }, aiCenter: { passwordLoginPath: "/login", loginByCodePath: "/login-by-phone", registerByCodePath: "/register-by-phone", sendCodePath: "/send-code", profilePath: "/profile", logoutPath: "/logout", verifyTokenPath: "/verify-token", }, sms: { signName: process.env.TENDER_USER_SMS_SIGN_NAME || "知投", templateCode: process.env.TENDER_USER_SMS_TEMPLATE_CODE || "SMS_123456789", // 例如:SMS_123456789 templateParamKey: process.env.TENDER_USER_SMS_TEMPLATE_PARAM_KEY || "code", // 模板变量名 }, }, aideduct: { // 飞尚扣费接口基础地址(拼接具体接口 path) baseUrl: process.env.AIDEDUCT_BASE_URL || "http://www.free-sun.com.cn/fspace/index.php/api/Aideduct", aesKey: process.env.AIDEDUCT_AES_KEY || "Feishang2025AesK", aesIv: process.env.AIDEDUCT_AES_IV || "Feishang2025AesI", timeout: Number(process.env.AIDEDUCT_TIMEOUT || 10000), }, billing: { tokenPerYuan: Number(process.env.TOKEN_PER_YUAN || 10000), }, // email: { // 邮件配置 使用前需要安装 nodemailer 包 // host: 'smtp.exmail.qq.com', // port: 465, // name: '', // address: '@free-sun.com.cn', // password: '' // }, // fsAttachment: { // 自研包 @fs/attachment 配置 // qiniu: { // 不指定则使用默认的本地存储 // domain: process.env.FS_QINIU_DOMAIN, // bucket: process.env.FS_QINIU_BUCKET, // accessKey: process.env.FS_QINIU_ACCESSKEY, // secretKey: process.env.FS_QINIU_SECRETKEY // }, // maxSize: 104857600, // 100M // types: ['*'], // }, clickHouse: { // clickHouse 数据库配置 使用前需要安装 @clickhouse/client 包 url: process.env.CLICKHOUST_URL, user: process.env.CLICKHOUST_USER, password: process.env.CLICKHOUST_PASSWORD, db: [ { name: "anxinyun", // 通过 app.fs.clickhouse.anxinyun 进行访问 db: process.env.CLICKHOUST_ANXINCLOUD, // 数据库名 }, { name: "alarm", db: process.env.CLICKHOUST_ALARM, }, { name: "poms", db: process.env.CLICKHOUST_POMS, }, { name: "test_sensor_data", db: process.env.CLICKHOUST_TEST_SENSOR_DATA, }, { name: "fs_data_analysis", db: process.env.CLICKHOUST_FS_DATA_ANALYSIS, }, ], }, // es: [{ // elasticsearch 配置 使用前需要安装 elasticsearch 包 // name: 'strucOnline', // root: process.env.ANXINCLOUD_ES_NODES_REST.split(','), // index: `anxincloud_online`, // type: '_doc' // }], redis: process.env.REDIS, // redis 配置 使用前需要安装 ioredis 包 // kafka: { // kafka 配置 使用前需要安装 kafka-node 包 //todo : 待完善 // root: process.env.ANXINCLOUD_KAFKA_BROKERS // }, bodyParser: { // Koa body parser options formLimit: "80mb", jsonLimit: "80mb", textLimit: "80mb", }, moment: { // moment 配置 locale: "zh-cn", timezone: "Asia/Shanghai", }, fastGpt: { // fastGpt配置 apiUrl: process.env.FASTGPT_URL, username: process.env.FASTGPT_USERNAME, password: process.env.FASTGPT_PASSWORD, imageDatasetId: process.env.FASTGPT_IMAGE_DATASET_ID, appKey: process.env.FASTGPT_XIAOSHANG_APP_KEY, tenderAppId: process.env.FASTGPT_TENDER_APP_ID, tenderAppKey: process.env.FASTGPT_TENDER_APP_KEY, externalXiaoshangAppKey: process.env.FASTGPT_XIAOSHANG_EXTERNAL_APP_KEY, ImageUnderstandingAppKey: process.env.FASTGPT_IMAGEUNDERSTANDING_APP_KEY, schemeAppKey: process.env.FASTGPT_SCHEME_APP_KEY, industrySolutionAppKey: process.env.FASTGPT_INDUSTRYSOLUTION_APP_KEY, v2TenderAppKey: process.env.FASTGPT_TENDER_V2_APP_KEY, v2TenderImageAppKey: process.env.FASTGPT_TENDER_V2_IMAGE_APP_KEY, regionAppKey: process.env.FASTGPT_REGION_APP_KEY, solutionAppKey: process.env.FASTGPT_SOLUTION_APP_KEY, knowledgeAppKey: process.env.FASTGPT_KNOWLEDGE_APP_KEY, bookWriterAppKey: process.env.FASTGPT_BOOK_WRITER_APP_KEY, polishAppKey: process.env.FASTGPT_POLISH_APP_KEY, planListAppKey: process.env.FASTGPT_PLANLIST_APP_KEY, reportAppKey: process.env.FASTGPT_REPORT_APP_KEY, patentAppKey: process.env.FASTGPT_PATENT_APP_KEY, voiceAppKey: process.env.FASTGPT_VOICE_APP_KEY, ocrAppKey: process.env.FASTGPT_OCR_APP_KEY, deDuplicationAppKey: process.env.FASTGPT_DE_DUPLICATION_APP_KEY, }, ocrApiUrl: process.env.OCR_API_URL, schemeListGenerator: { apiUrl: process.env.SCHEME_LIST_API || "http://localhost:8001", }, ali: { appKey: process.env.ALI_APP_KEY, }, pep: { emisApi: process.env.EMIS_API, username: process.env.PEP_USERNAME, password: process.env.PEP_PASSWORD, knowledgeUrl: process.env.FS_KNOWLEDGE_URL, }, aiCenterUrl: { knowledgeUrl: process.env.AI_CENTER_URL + "/knowledge", }, apihz: { apiUrl: process.env.APIHZ_URL, id: process.env.APIHZ_ID, key: process.env.APIHZ_KEY, }, cnipa: { loginName: process.env.CNIPA_LOGIN_NAME, password: process.env.CNIPA_PASSWORD, encryptedPassword: process.env.CNIPA_ENCRYPTED_PASSWORD, browserHeadless: process.env.CNIPA_BROWSER_HEADLESS === "true", browserUserDataDir: process.env.CNIPA_BROWSER_USER_DATA_DIR, }, dataease: { apiUrl: process.env.DATAEASE_API_URL, username: process.env.DATAEASE_USERNAME, password: process.env.DATAEASE_PASSWORD, }, fsAiClient: { "pep-feixiaoshang": { key: "pep-feixiaoshang", name: "飞小尚AI助手", appId: process.env.FASTGPT_XIAOSHANG_APP_ID, appKey: process.env.FASTGPT_XIAOSHANG_APP_KEY, newAppId: process.env.FASTGPT_XIAOSHANG_NEW_APP_ID, newAppKey: process.env.FASTGPT_XIAOSHANG_NEW_APP_KEY, apps: { industrySolution: { appId: process.env.FASTGPT_INDUSTRYSOLUTION_APP_ID, appKey: process.env.FASTGPT_INDUSTRYSOLUTION_APP_KEY, }, dataAnalysis: { appId: process.env.FASTGPT_DATAANALYSIS_APP_ID, appKey: process.env.FASTGPT_DATAANALYSIS_APP_KEY, }, dangersIdentification: { appId: process.env.FASTGPT_DANGERSIDENTIFICATION_APP_ID, appKey: process.env.FASTGPT_DANGERSIDENTIFICATION_APP_KEY, }, workingHoursEstimate: { appId: process.env.FASTGPT_WORKINGHOURSESTIMATE_APP_ID, appKey: process.env.FASTGPT_WORKINGHOURSESTIMATE_APP_KEY, }, parameterComparison: { appId: process.env.FASTGPT_PARAMETER_COMPARISON_APP_ID, appKey: process.env.FASTGPT_PARAMETER_COMPARISON_APP_KEY, }, }, features: ["aiAgent"], examples: [ { title: "制度问答", content: "请事假需要走什么流程?", }, { title: "行业规范", content: "公路交通安全设施设计规范是什么?", }, { title: "销售话术", content: "客户拜访基本话术有哪些?", }, { title: "产品介绍", content: "公司有哪些振弦采集硬件产品?", }, ], }, "external-feixiaoshang": { key: "external-feixiaoshang", name: "飞小尚AI助手", identity: "你是飞尚科技的AI小助手,名叫飞小尚,隶属于江西飞尚科技有限公司.除提示内容外,也要根据互联网内容进行详细解答;请严格使用提示、知识库引用段落,不得随意组合,提供严谨的内容回复;", homeTips: "行业专业模型,提供数据分析、规范解读、方案定制等服务,助力精准监测.", appId: process.env.FASTGPT_XIAOSHANG_EXTERNAL_APP_ID, appKey: process.env.FASTGPT_XIAOSHANG_EXTERNAL_APP_KEY, features: ["verticalModel"], examples: [ { title: "行业规范", content: "《公路桥涵养护规范》主要内容有哪些?", }, { title: "行业规范", content: "基坑工程现场监测的对象包括哪些?", }, { title: "技术问答", content: "气体传感器的稳定性如何评估?", }, { title: "技术问答", content: "传感器布置方法评价准则有哪些?", }, ], }, "nanchangguidao-zay": { key: "nanchangguidao-zay", name: "质安云AI问答", identity: "你是质安云的AI助手,由江西飞尚科技有限公司(简称飞尚科技)提供技术支持.回答不必限定知识领域​,除提示内容外,也要根据互联网内容进行详细解答.", homeTips: "", appId: process.env.FASTGPT_NCGDZAY_APP_ID, appKey: process.env.FASTGPT_NCGDZAY_APP_KEY, features: [], examples: [], }, "nuclear-feixiaoshang": { key: "nuclear-feixiaoshang", name: "飞小尚AI助手", identity: "你是飞尚科技的AI小助手,名叫飞小尚,隶属于江西飞尚科技有限公司.除提示内容外,也要根据互联网内容进行详细解答;请严格使用提示、知识库引用段落,不得随意组合,提供严谨的内容回复;", homeTips: "行业专业模型,提供数据分析、规范解读、方案定制等服务,助力精准监测", appId: process.env.FASTGPT_XIAOSHANG_EXTERNAL_APP_ID, appKey: process.env.FASTGPT_XIAOSHANG_EXTERNAL_APP_KEY, apps: { industrySolution: { appId: process.env.FASTGPT_INDUSTRYSOLUTION_APP_ID, appKey: process.env.FASTGPT_INDUSTRYSOLUTION_APP_KEY, }, }, features: ["aiAgent"], examples: [ { title: "行业规范", content: "《核电厂岩土工程勘察规范》主要内容有哪些?", }, { title: "行业规范", content: "核电厂变形监测的等级划分及精度要求是什么?", }, { title: "技术问答", content: "核电冷却塔的结构有哪些典型特征?", }, { title: "技术问答", content: "什么是筏基变形测量?", }, ], }, "tianchi-ai": { key: "tianchi-ai", name: "天驰AI问答", identity: "你是天驰公司的AI助手,由江西飞尚科技有限公司(简称飞尚科技)提供技术支持.回答不必限定知识领域​,除提示内容外,也要根据互联网内容进行详细解答.", homeTips: "", appId: process.env.FASTGPT_TIANCHI_APP_ID, appKey: process.env.FASTGPT_TIANCHI_APP_KEY, features: [], examples: [], }, }, // 诺瓦开放平台配置 novaCloud: { baseUrl: process.env.NOVA_CLOUD_BASE_URL || "https://open-cn.vnnox.com", appKey: process.env.NOVA_CLOUD_APP_KEY || "f58213e02acc400a91a3bb8a5f21d8cd", appSecret: process.env.NOVA_CLOUD_APP_SECRET || "b8de018bf7074b328c6abbc88ca74293", }, xfyunSpeech: { appId: process.env.XFYUN_SPEECH_APP_ID || "10fa4447", apiKey: process.env.XFYUN_SPEECH_API_KEY || "941b124de8a53429cd832131e1a82322", apiSecret: process.env.XFYUN_SPEECH_API_SECRET || "MTVlZGY1ZGVmM2M4ZTA1NWExMGUyOWVk", hostUrl: process.env.XFYUN_SPEECH_HOST_URL || "wss://iat-api.xfyun.cn/v2/iat", }, superAgent: { baseUrl: process.env.FS_SUPER_AGENT_API || "http://localhost:8080", }, analytics: { centerUrl: process.env.AI_CENTER_URL || "http://localhost:4001", keyId: process.env.ANALYTICS_HMAC_KEY_ID || "", secret: process.env.ANALYTICS_HMAC_SECRET || "", fastgptKeyIds: process.env.ANALYTICS_FASTGPT_KEY_IDS || "{}", }, }; const fs = require("fs"); const localPath = __dirname + "/local.js"; if (fs.existsSync(localPath)) { Object.assign(module.exports, require(localPath)); }