You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
423 lines
16 KiB
423 lines
16 KiB
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));
|
|
}
|
|
|