perf: logger (#186)

* feat: finish response

* perf: logger

* docs

* perf: log

* docs
This commit is contained in:
Archer
2023-08-17 23:19:19 +08:00
committed by GitHub
parent 324e4a0e75
commit 40168c56ea
26 changed files with 500 additions and 93 deletions

View File

@@ -17,10 +17,5 @@ OPENAI_BASE_URL=https://api.openai.com/v1
# 此处逻辑:优先走 ONEAPI_URL如果填写了 ONEAPI_URLkey 也需要是 ONEAPI 的 key # 此处逻辑:优先走 ONEAPI_URL如果填写了 ONEAPI_URLkey 也需要是 ONEAPI 的 key
CHAT_API_KEY=sk-xxxx CHAT_API_KEY=sk-xxxx
# db # db
MONGODB_URI=mongodb://username:password@0.0.0.0:27017/?authSource=admin MONGODB_URI=mongodb://username:password@0.0.0.0:27017/fastgpt
MONGODB_NAME=fastgpt PG_URL=postgresql://username:password@host:port/postgres
PG_HOST=0.0.0.0
PG_PORT=8100
PG_USER=root
PG_PASSWORD=psw
PG_DB_NAME=dbname

View File

@@ -58,6 +58,8 @@
"request-ip": "^3.3.0", "request-ip": "^3.3.0",
"sass": "^1.58.3", "sass": "^1.58.3",
"tunnel": "^0.0.6", "tunnel": "^0.0.6",
"winston": "^3.10.0",
"winston-mongodb": "^5.1.1",
"zustand": "^4.3.5" "zustand": "^4.3.5"
}, },
"devDependencies": { "devDependencies": {

285
client/pnpm-lock.yaml generated
View File

@@ -152,6 +152,12 @@ dependencies:
tunnel: tunnel:
specifier: ^0.0.6 specifier: ^0.0.6
version: registry.npmmirror.com/tunnel@0.0.6 version: registry.npmmirror.com/tunnel@0.0.6
winston:
specifier: ^3.10.0
version: registry.npmmirror.com/winston@3.10.0
winston-mongodb:
specifier: ^5.1.1
version: registry.npmmirror.com/winston-mongodb@5.1.1(winston@3.10.0)
zustand: zustand:
specifier: ^4.3.5 specifier: ^4.3.5
version: registry.npmmirror.com/zustand@4.3.5(immer@9.0.19)(react@18.2.0) version: registry.npmmirror.com/zustand@4.3.5(immer@9.0.19)(react@18.2.0)
@@ -4155,6 +4161,23 @@ packages:
react: registry.npmmirror.com/react@18.2.0 react: registry.npmmirror.com/react@18.2.0
dev: false dev: false
registry.npmmirror.com/@colors/colors@1.5.0:
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@colors/colors/-/colors-1.5.0.tgz}
name: '@colors/colors'
version: 1.5.0
engines: {node: '>=0.1.90'}
dev: false
registry.npmmirror.com/@dabh/diagnostics@2.0.3:
resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz}
name: '@dabh/diagnostics'
version: 2.0.3
dependencies:
colorspace: registry.npmmirror.com/colorspace@1.1.4
enabled: registry.npmmirror.com/enabled@2.0.0
kuler: registry.npmmirror.com/kuler@2.0.0
dev: false
registry.npmmirror.com/@dqbd/tiktoken@1.0.7: registry.npmmirror.com/@dqbd/tiktoken@1.0.7:
resolution: {integrity: sha512-bhR5k5W+8GLzysjk8zTMVygQZsgvf7W1F0IlL4ZQ5ugjo5rCyiwGM5d8DYriXspytfu98tv59niang3/T+FoDw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@dqbd/tiktoken/-/tiktoken-1.0.7.tgz} resolution: {integrity: sha512-bhR5k5W+8GLzysjk8zTMVygQZsgvf7W1F0IlL4ZQ5ugjo5rCyiwGM5d8DYriXspytfu98tv59niang3/T+FoDw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@dqbd/tiktoken/-/tiktoken-1.0.7.tgz}
name: '@dqbd/tiktoken' name: '@dqbd/tiktoken'
@@ -5484,6 +5507,12 @@ packages:
name: '@types/scheduler' name: '@types/scheduler'
version: 0.16.3 version: 0.16.3
registry.npmmirror.com/@types/triple-beam@1.3.2:
resolution: {integrity: sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/triple-beam/-/triple-beam-1.3.2.tgz}
name: '@types/triple-beam'
version: 1.3.2
dev: false
registry.npmmirror.com/@types/tunnel@0.0.3: registry.npmmirror.com/@types/tunnel@0.0.3:
resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/tunnel/-/tunnel-0.0.3.tgz} resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/tunnel/-/tunnel-0.0.3.tgz}
name: '@types/tunnel' name: '@types/tunnel'
@@ -5771,6 +5800,12 @@ packages:
version: 0.0.7 version: 0.0.7
dev: true dev: true
registry.npmmirror.com/async@3.2.4:
resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/async/-/async-3.2.4.tgz}
name: async
version: 3.2.4
dev: false
registry.npmmirror.com/asynckit@0.4.0: registry.npmmirror.com/asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz} resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz}
name: asynckit name: asynckit
@@ -5909,6 +5944,15 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: false dev: false
registry.npmmirror.com/bl@2.2.1:
resolution: {integrity: sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bl/-/bl-2.2.1.tgz}
name: bl
version: 2.2.1
dependencies:
readable-stream: registry.npmmirror.com/readable-stream@2.3.8
safe-buffer: registry.npmmirror.com/safe-buffer@5.2.1
dev: false
registry.npmmirror.com/bluebird@3.4.7: registry.npmmirror.com/bluebird@3.4.7:
resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz} resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz}
name: bluebird name: bluebird
@@ -5966,6 +6010,13 @@ packages:
node-releases: registry.npmmirror.com/node-releases@2.0.12 node-releases: registry.npmmirror.com/node-releases@2.0.12
update-browserslist-db: registry.npmmirror.com/update-browserslist-db@1.0.11(browserslist@4.21.7) update-browserslist-db: registry.npmmirror.com/update-browserslist-db@1.0.11(browserslist@4.21.7)
registry.npmmirror.com/bson@1.1.6:
resolution: {integrity: sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bson/-/bson-1.1.6.tgz}
name: bson
version: 1.1.6
engines: {node: '>=0.6.19'}
dev: false
registry.npmmirror.com/bson@4.7.2: registry.npmmirror.com/bson@4.7.2:
resolution: {integrity: sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bson/-/bson-4.7.2.tgz} resolution: {integrity: sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bson/-/bson-4.7.2.tgz}
name: bson name: bson
@@ -6136,7 +6187,15 @@ packages:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz} resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz}
name: color-name name: color-name
version: 1.1.4 version: 1.1.4
dev: true
registry.npmmirror.com/color-string@1.9.1:
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz}
name: color-string
version: 1.9.1
dependencies:
color-name: registry.npmmirror.com/color-name@1.1.4
simple-swizzle: registry.npmmirror.com/simple-swizzle@0.2.2
dev: false
registry.npmmirror.com/color2k@2.0.2: registry.npmmirror.com/color2k@2.0.2:
resolution: {integrity: sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/color2k/-/color2k-2.0.2.tgz} resolution: {integrity: sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/color2k/-/color2k-2.0.2.tgz}
@@ -6144,6 +6203,24 @@ packages:
version: 2.0.2 version: 2.0.2
dev: false dev: false
registry.npmmirror.com/color@3.2.1:
resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/color/-/color-3.2.1.tgz}
name: color
version: 3.2.1
dependencies:
color-convert: registry.npmmirror.com/color-convert@1.9.3
color-string: registry.npmmirror.com/color-string@1.9.1
dev: false
registry.npmmirror.com/colorspace@1.1.4:
resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/colorspace/-/colorspace-1.1.4.tgz}
name: colorspace
version: 1.1.4
dependencies:
color: registry.npmmirror.com/color@3.2.1
text-hex: registry.npmmirror.com/text-hex@1.0.0
dev: false
registry.npmmirror.com/combined-stream@1.0.8: registry.npmmirror.com/combined-stream@1.0.8:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz} resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz}
name: combined-stream name: combined-stream
@@ -6839,6 +6916,13 @@ packages:
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
dev: false dev: false
registry.npmmirror.com/denque@1.5.1:
resolution: {integrity: sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/denque/-/denque-1.5.1.tgz}
name: denque
version: 1.5.1
engines: {node: '>=0.10'}
dev: false
registry.npmmirror.com/dequal@2.0.3: registry.npmmirror.com/dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz} resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz}
name: dequal name: dequal
@@ -6984,6 +7068,12 @@ packages:
version: 9.2.2 version: 9.2.2
dev: true dev: true
registry.npmmirror.com/enabled@2.0.0:
resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/enabled/-/enabled-2.0.0.tgz}
name: enabled
version: 2.0.0
dev: false
registry.npmmirror.com/enhanced-resolve@5.14.1: registry.npmmirror.com/enhanced-resolve@5.14.1:
resolution: {integrity: sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz} resolution: {integrity: sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz}
name: enhanced-resolve name: enhanced-resolve
@@ -7557,6 +7647,12 @@ packages:
format: registry.npmmirror.com/format@0.2.2 format: registry.npmmirror.com/format@0.2.2
dev: false dev: false
registry.npmmirror.com/fecha@4.2.3:
resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz}
name: fecha
version: 4.2.3
dev: false
registry.npmmirror.com/file-entry-cache@6.0.1: registry.npmmirror.com/file-entry-cache@6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz} resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz}
name: file-entry-cache name: file-entry-cache
@@ -7606,6 +7702,12 @@ packages:
version: 3.2.7 version: 3.2.7
dev: true dev: true
registry.npmmirror.com/fn.name@1.1.0:
resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fn.name/-/fn.name-1.1.0.tgz}
name: fn.name
version: 1.1.0
dev: false
registry.npmmirror.com/focus-lock@0.11.6: registry.npmmirror.com/focus-lock@0.11.6:
resolution: {integrity: sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/focus-lock/-/focus-lock-0.11.6.tgz} resolution: {integrity: sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/focus-lock/-/focus-lock-0.11.6.tgz}
name: focus-lock name: focus-lock
@@ -8249,6 +8351,12 @@ packages:
name: is-arrayish name: is-arrayish
version: 0.2.1 version: 0.2.1
registry.npmmirror.com/is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz}
name: is-arrayish
version: 0.3.2
dev: false
registry.npmmirror.com/is-bigint@1.0.4: registry.npmmirror.com/is-bigint@1.0.4:
resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz} resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz}
name: is-bigint name: is-bigint
@@ -8429,7 +8537,6 @@ packages:
name: is-stream name: is-stream
version: 2.0.1 version: 2.0.1
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true
registry.npmmirror.com/is-stream@3.0.0: registry.npmmirror.com/is-stream@3.0.0:
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz} resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz}
@@ -8683,6 +8790,12 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: false dev: false
registry.npmmirror.com/kuler@2.0.0:
resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/kuler/-/kuler-2.0.0.tgz}
name: kuler
version: 2.0.0
dev: false
registry.npmmirror.com/language-subtag-registry@0.3.22: registry.npmmirror.com/language-subtag-registry@0.3.22:
resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz} resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz}
name: language-subtag-registry name: language-subtag-registry
@@ -8771,6 +8884,19 @@ packages:
version: 4.17.21 version: 4.17.21
dev: false dev: false
registry.npmmirror.com/logform@2.5.1:
resolution: {integrity: sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/logform/-/logform-2.5.1.tgz}
name: logform
version: 2.5.1
dependencies:
'@colors/colors': registry.npmmirror.com/@colors/colors@1.5.0
'@types/triple-beam': registry.npmmirror.com/@types/triple-beam@1.3.2
fecha: registry.npmmirror.com/fecha@4.2.3
ms: registry.npmmirror.com/ms@2.1.3
safe-stable-stringify: registry.npmmirror.com/safe-stable-stringify@2.4.3
triple-beam: registry.npmmirror.com/triple-beam@1.4.1
dev: false
registry.npmmirror.com/longest-streak@3.1.0: registry.npmmirror.com/longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/longest-streak/-/longest-streak-3.1.0.tgz} resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/longest-streak/-/longest-streak-3.1.0.tgz}
name: longest-streak name: longest-streak
@@ -9450,6 +9576,41 @@ packages:
whatwg-url: registry.npmmirror.com/whatwg-url@11.0.0 whatwg-url: registry.npmmirror.com/whatwg-url@11.0.0
dev: false dev: false
registry.npmmirror.com/mongodb@3.7.4:
resolution: {integrity: sha512-K5q8aBqEXMwWdVNh94UQTwZ6BejVbFhh1uB6c5FKtPE9eUMZPUO3sRZdgIEcHSrAWmxzpG/FeODDKL388sqRmw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mongodb/-/mongodb-3.7.4.tgz}
name: mongodb
version: 3.7.4
engines: {node: '>=4'}
peerDependencies:
aws4: '*'
bson-ext: '*'
kerberos: '*'
mongodb-client-encryption: '*'
mongodb-extjson: '*'
snappy: '*'
peerDependenciesMeta:
aws4:
optional: true
bson-ext:
optional: true
kerberos:
optional: true
mongodb-client-encryption:
optional: true
mongodb-extjson:
optional: true
snappy:
optional: true
dependencies:
bl: registry.npmmirror.com/bl@2.2.1
bson: registry.npmmirror.com/bson@1.1.6
denque: registry.npmmirror.com/denque@1.5.1
optional-require: registry.npmmirror.com/optional-require@1.1.8
safe-buffer: registry.npmmirror.com/safe-buffer@5.2.1
optionalDependencies:
saslprep: registry.npmmirror.com/saslprep@1.0.3
dev: false
registry.npmmirror.com/mongodb@4.14.0: registry.npmmirror.com/mongodb@4.14.0:
resolution: {integrity: sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mongodb/-/mongodb-4.14.0.tgz} resolution: {integrity: sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mongodb/-/mongodb-4.14.0.tgz}
name: mongodb name: mongodb
@@ -9763,6 +9924,14 @@ packages:
dependencies: dependencies:
wrappy: registry.npmmirror.com/wrappy@1.0.2 wrappy: registry.npmmirror.com/wrappy@1.0.2
registry.npmmirror.com/one-time@1.0.0:
resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/one-time/-/one-time-1.0.0.tgz}
name: one-time
version: 1.0.0
dependencies:
fn.name: registry.npmmirror.com/fn.name@1.1.0
dev: false
registry.npmmirror.com/onetime@5.1.2: registry.npmmirror.com/onetime@5.1.2:
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz} resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz}
name: onetime name: onetime
@@ -9810,6 +9979,15 @@ packages:
version: 0.2.4 version: 0.2.4
dev: false dev: false
registry.npmmirror.com/optional-require@1.1.8:
resolution: {integrity: sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/optional-require/-/optional-require-1.1.8.tgz}
name: optional-require
version: 1.1.8
engines: {node: '>=4'}
dependencies:
require-at: registry.npmmirror.com/require-at@1.0.6
dev: false
registry.npmmirror.com/optionator@0.9.1: registry.npmmirror.com/optionator@0.9.1:
resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz} resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz}
name: optionator name: optionator
@@ -10392,6 +10570,17 @@ packages:
util-deprecate: registry.npmmirror.com/util-deprecate@1.0.2 util-deprecate: registry.npmmirror.com/util-deprecate@1.0.2
dev: false dev: false
registry.npmmirror.com/readable-stream@3.6.2:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz}
name: readable-stream
version: 3.6.2
engines: {node: '>= 6'}
dependencies:
inherits: registry.npmmirror.com/inherits@2.0.4
string_decoder: registry.npmmirror.com/string_decoder@1.1.1
util-deprecate: registry.npmmirror.com/util-deprecate@1.0.2
dev: false
registry.npmmirror.com/readdirp@3.6.0: registry.npmmirror.com/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz} resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz}
name: readdirp name: readdirp
@@ -10569,6 +10758,13 @@ packages:
version: 3.3.0 version: 3.3.0
dev: false dev: false
registry.npmmirror.com/require-at@1.0.6:
resolution: {integrity: sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/require-at/-/require-at-1.0.6.tgz}
name: require-at
version: 1.0.6
engines: {node: '>=4'}
dev: false
registry.npmmirror.com/resolve-from@4.0.0: registry.npmmirror.com/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz} resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz}
name: resolve-from name: resolve-from
@@ -10678,6 +10874,13 @@ packages:
is-regex: registry.npmmirror.com/is-regex@1.1.4 is-regex: registry.npmmirror.com/is-regex@1.1.4
dev: true dev: true
registry.npmmirror.com/safe-stable-stringify@2.4.3:
resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz}
name: safe-stable-stringify
version: 2.4.3
engines: {node: '>=10'}
dev: false
registry.npmmirror.com/safer-buffer@2.1.2: registry.npmmirror.com/safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz} resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz}
name: safer-buffer name: safer-buffer
@@ -10779,6 +10982,14 @@ packages:
version: 3.0.7 version: 3.0.7
dev: true dev: true
registry.npmmirror.com/simple-swizzle@0.2.2:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz}
name: simple-swizzle
version: 0.2.2
dependencies:
is-arrayish: registry.npmmirror.com/is-arrayish@0.3.2
dev: false
registry.npmmirror.com/slash@3.0.0: registry.npmmirror.com/slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz} resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz}
name: slash name: slash
@@ -10873,6 +11084,12 @@ packages:
deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
dev: true dev: true
registry.npmmirror.com/stack-trace@0.0.10:
resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stack-trace/-/stack-trace-0.0.10.tgz}
name: stack-trace
version: 0.0.10
dev: false
registry.npmmirror.com/stop-iteration-iterator@1.0.0: registry.npmmirror.com/stop-iteration-iterator@1.0.0:
resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz} resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz}
name: stop-iteration-iterator name: stop-iteration-iterator
@@ -11077,6 +11294,12 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: true dev: true
registry.npmmirror.com/text-hex@1.0.0:
resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/text-hex/-/text-hex-1.0.0.tgz}
name: text-hex
version: 1.0.0
dev: false
registry.npmmirror.com/text-table@0.2.0: registry.npmmirror.com/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz} resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz}
name: text-table name: text-table
@@ -11131,6 +11354,13 @@ packages:
version: 3.0.1 version: 3.0.1
dev: false dev: false
registry.npmmirror.com/triple-beam@1.4.1:
resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/triple-beam/-/triple-beam-1.4.1.tgz}
name: triple-beam
version: 1.4.1
engines: {node: '>= 14.0.0'}
dev: false
registry.npmmirror.com/trough@2.1.0: registry.npmmirror.com/trough@2.1.0:
resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/trough/-/trough-2.1.0.tgz} resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/trough/-/trough-2.1.0.tgz}
name: trough name: trough
@@ -11589,6 +11819,57 @@ packages:
isexe: registry.npmmirror.com/isexe@2.0.0 isexe: registry.npmmirror.com/isexe@2.0.0
dev: true dev: true
registry.npmmirror.com/winston-mongodb@5.1.1(winston@3.10.0):
resolution: {integrity: sha512-tlDksYDCsSka6vLzB/cg19B+kRbVH/y9JQdXVXc5r4TSLEgX1Ivj/vHyedYlYzNMAZkSSfexwI/dSDn3f9/Qkg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/winston-mongodb/-/winston-mongodb-5.1.1.tgz}
id: registry.npmmirror.com/winston-mongodb/5.1.1
name: winston-mongodb
version: 5.1.1
engines: {node: '>=6.8.1'}
peerDependencies:
winston: ^3.0.0
dependencies:
mongodb: registry.npmmirror.com/mongodb@3.7.4
winston: registry.npmmirror.com/winston@3.10.0
winston-transport: registry.npmmirror.com/winston-transport@4.5.0
transitivePeerDependencies:
- aws4
- bson-ext
- kerberos
- mongodb-client-encryption
- mongodb-extjson
- snappy
dev: false
registry.npmmirror.com/winston-transport@4.5.0:
resolution: {integrity: sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/winston-transport/-/winston-transport-4.5.0.tgz}
name: winston-transport
version: 4.5.0
engines: {node: '>= 6.4.0'}
dependencies:
logform: registry.npmmirror.com/logform@2.5.1
readable-stream: registry.npmmirror.com/readable-stream@3.6.2
triple-beam: registry.npmmirror.com/triple-beam@1.4.1
dev: false
registry.npmmirror.com/winston@3.10.0:
resolution: {integrity: sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/winston/-/winston-3.10.0.tgz}
name: winston
version: 3.10.0
engines: {node: '>= 12.0.0'}
dependencies:
'@colors/colors': registry.npmmirror.com/@colors/colors@1.5.0
'@dabh/diagnostics': registry.npmmirror.com/@dabh/diagnostics@2.0.3
async: registry.npmmirror.com/async@3.2.4
is-stream: registry.npmmirror.com/is-stream@2.0.1
logform: registry.npmmirror.com/logform@2.5.1
one-time: registry.npmmirror.com/one-time@1.0.0
readable-stream: registry.npmmirror.com/readable-stream@3.6.2
safe-stable-stringify: registry.npmmirror.com/safe-stable-stringify@2.4.3
stack-trace: registry.npmmirror.com/stack-trace@0.0.10
triple-beam: registry.npmmirror.com/triple-beam@1.4.1
winston-transport: registry.npmmirror.com/winston-transport@4.5.0
dev: false
registry.npmmirror.com/word-wrap@1.2.3: registry.npmmirror.com/word-wrap@1.2.3:
resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz} resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz}
name: word-wrap name: word-wrap

View File

@@ -182,8 +182,9 @@ export const ChatModule: FlowModuleTemplateType = {
{ {
key: TaskResponseKeyEnum.answerText, key: TaskResponseKeyEnum.answerText,
label: '模型回复', label: '模型回复',
description: '直接响应,无需配置', description: '如果外接了内容,会在回复结束时自动添加\n\n',
type: FlowOutputItemTypeEnum.hidden, valueType: FlowValueTypeEnum.string,
type: FlowOutputItemTypeEnum.source,
targets: [] targets: []
}, },
{ {
@@ -285,7 +286,16 @@ export const AnswerModule: FlowModuleTemplateType = {
'可以使用 \\n 来实现换行。也可以通过外部模块输入实现回复,外部模块输入时会覆盖当前填写的内容' '可以使用 \\n 来实现换行。也可以通过外部模块输入实现回复,外部模块输入时会覆盖当前填写的内容'
} }
], ],
outputs: [] outputs: [
{
key: 'finish',
label: '回复结束',
description: '回复完成后触发',
valueType: FlowValueTypeEnum.boolean,
type: FlowOutputItemTypeEnum.source,
targets: []
}
]
}; };
export const TFSwitchModule: FlowModuleTemplateType = { export const TFSwitchModule: FlowModuleTemplateType = {
logo: '', logo: '',

View File

@@ -2,7 +2,7 @@ import type { NextApiRequest, NextApiResponse } from 'next';
import { connectToDatabase } from '@/service/mongo'; import { connectToDatabase } from '@/service/mongo';
import { authUser, authApp, authShareChat, AuthUserTypeEnum } from '@/service/utils/auth'; import { authUser, authApp, authShareChat, AuthUserTypeEnum } from '@/service/utils/auth';
import { sseErrRes, jsonRes } from '@/service/response'; import { sseErrRes, jsonRes } from '@/service/response';
import { withNextCors } from '@/service/utils/tools'; import { addLog, withNextCors } from '@/service/utils/tools';
import { ChatRoleEnum, ChatSourceEnum, sseResponseEventEnum } from '@/constants/chat'; import { ChatRoleEnum, ChatSourceEnum, sseResponseEventEnum } from '@/constants/chat';
import { import {
dispatchHistory, dispatchHistory,
@@ -181,7 +181,7 @@ export default withNextCors(async function handler(req: NextApiRequest, res: Nex
}); });
} }
console.log(`finish time: ${(Date.now() - startTime) / 1000}s`); addLog.info(`completions running time: ${(Date.now() - startTime) / 1000}s`);
if (stream) { if (stream) {
sseResponse({ sseResponse({
@@ -351,6 +351,7 @@ export async function dispatchModules({
res, res,
stream, stream,
detail, detail,
outputs: module.outputs,
userOpenaiAccount: user?.openaiAccount, userOpenaiAccount: user?.openaiAccount,
...params ...params
}; };

View File

@@ -4,6 +4,7 @@ import NodeCard from '../modules/NodeCard';
import { FlowModuleItemType } from '@/types/flow'; import { FlowModuleItemType } from '@/types/flow';
import Container from '../modules/Container'; import Container from '../modules/Container';
import RenderInput from '../render/RenderInput'; import RenderInput from '../render/RenderInput';
import RenderOutput from '../render/RenderOutput';
const NodeAnswer = ({ data }: NodeProps<FlowModuleItemType>) => { const NodeAnswer = ({ data }: NodeProps<FlowModuleItemType>) => {
const { moduleId, inputs, outputs, onChangeNode } = data; const { moduleId, inputs, outputs, onChangeNode } = data;
@@ -11,6 +12,7 @@ const NodeAnswer = ({ data }: NodeProps<FlowModuleItemType>) => {
<NodeCard minW={'400px'} {...data}> <NodeCard minW={'400px'} {...data}>
<Container borderTop={'2px solid'} borderTopColor={'myGray.200'}> <Container borderTop={'2px solid'} borderTopColor={'myGray.200'}>
<RenderInput moduleId={moduleId} onChangeNode={onChangeNode} flowInputList={inputs} /> <RenderInput moduleId={moduleId} onChangeNode={onChangeNode} flowInputList={inputs} />
<RenderOutput onChangeNode={onChangeNode} moduleId={moduleId} flowOutputList={outputs} />
</Container> </Container>
</NodeCard> </NodeCard>
); );

View File

@@ -43,7 +43,7 @@ export async function generateQA(): Promise<any> {
// task preemption // task preemption
if (!data) { if (!data) {
reduceQueue(); reduceQueue();
global.qaQueueLen <= 0 && console.log(`没有需要【QA】的数据, ${global.qaQueueLen}`); global.qaQueueLen <= 0 && console.log(`【QA】任务完成`);
return; return;
} }

View File

@@ -44,7 +44,7 @@ export async function generateVector(): Promise<any> {
// task preemption // task preemption
if (!data) { if (!data) {
reduceQueue(); reduceQueue();
global.vectorQueueLen <= 0 && console.log(`没有需要【索引】的数据, ${global.vectorQueueLen}`); global.vectorQueueLen <= 0 && console.log(`【索引】任务完成`);
return; return;
} }

View File

@@ -3,6 +3,7 @@ import { BillSourceEnum } from '@/constants/user';
import { getModel } from '../utils/data'; import { getModel } from '../utils/data';
import { ChatHistoryItemResType } from '@/types/chat'; import { ChatHistoryItemResType } from '@/types/chat';
import { formatPrice } from '@/utils/user'; import { formatPrice } from '@/utils/user';
import { addLog } from '../utils/tools';
export const pushTaskBill = async ({ export const pushTaskBill = async ({
appName, appName,
@@ -48,7 +49,11 @@ export const pushTaskBill = async ({
: []) : [])
]); ]);
console.log('finish bill:', formatPrice(total)); addLog.info(`finish completions`, {
source,
userId,
price: formatPrice(total)
});
}; };
export const updateShareChatBill = async ({ export const updateShareChatBill = async ({
@@ -66,8 +71,8 @@ export const updateShareChatBill = async ({
lastTime: new Date() lastTime: new Date()
} }
); );
} catch (error) { } catch (err) {
console.log('update shareChat error', error); addLog.error('update shareChat error', { err });
} }
}; };
@@ -82,7 +87,7 @@ export const pushSplitDataBill = async ({
totalTokens: number; totalTokens: number;
appName: string; appName: string;
}) => { }) => {
console.log(`splitData generate success. token len: ${totalTokens}.`); addLog.info('splitData generate success', { totalTokens });
let billId; let billId;
@@ -107,8 +112,8 @@ export const pushSplitDataBill = async ({
await User.findByIdAndUpdate(userId, { await User.findByIdAndUpdate(userId, {
$inc: { balance: -total } $inc: { balance: -total }
}); });
} catch (error) { } catch (err) {
console.log('创建账单失败:', error); addLog.error('Create completions bill error', { err });
billId && Bill.findByIdAndDelete(billId); billId && Bill.findByIdAndDelete(billId);
} }
}; };
@@ -156,8 +161,8 @@ export const pushGenerateVectorBill = async ({
await User.findByIdAndUpdate(userId, { await User.findByIdAndUpdate(userId, {
$inc: { balance: -total } $inc: { balance: -total }
}); });
} catch (error) { } catch (err) {
console.log('创建账单失败:', error); addLog.error('Create generateVector bill error', { err });
billId && Bill.findByIdAndDelete(billId); billId && Bill.findByIdAndDelete(billId);
} }
} catch (error) { } catch (error) {

View File

@@ -17,6 +17,7 @@ import { ChatModelItemType } from '@/types/model';
import { UserModelSchema } from '@/types/mongoSchema'; import { UserModelSchema } from '@/types/mongoSchema';
import { textCensor } from '@/service/api/plugins'; import { textCensor } from '@/service/api/plugins';
import { ChatCompletionRequestMessageRoleEnum } from 'openai'; import { ChatCompletionRequestMessageRoleEnum } from 'openai';
import { AppModuleItemType } from '@/types/app';
export type ChatProps = { export type ChatProps = {
res: NextApiResponse; res: NextApiResponse;
@@ -31,6 +32,7 @@ export type ChatProps = {
systemPrompt?: string; systemPrompt?: string;
limitPrompt?: string; limitPrompt?: string;
userOpenaiAccount: UserModelSchema['openaiAccount']; userOpenaiAccount: UserModelSchema['openaiAccount'];
outputs: AppModuleItemType['outputs'];
}; };
export type ChatResponse = { export type ChatResponse = {
[TaskResponseKeyEnum.answerText]: string; [TaskResponseKeyEnum.answerText]: string;
@@ -52,8 +54,12 @@ export const dispatchChatCompletion = async (props: Record<string, any>): Promis
userChatInput, userChatInput,
systemPrompt = '', systemPrompt = '',
limitPrompt = '', limitPrompt = '',
userOpenaiAccount userOpenaiAccount,
outputs
} = props as ChatProps; } = props as ChatProps;
if (!userChatInput) {
return Promise.reject('Question is empty');
}
// temperature adapt // temperature adapt
const modelConstantsData = getChatModel(model); const modelConstantsData = getChatModel(model);
@@ -142,6 +148,8 @@ export const dispatchChatCompletion = async (props: Record<string, any>): Promis
messages: completeMessages messages: completeMessages
}); });
targetResponse({ res, detail, outputs });
return { return {
answerText: answer, answerText: answer,
totalTokens, totalTokens,
@@ -304,6 +312,28 @@ function getMaxTokens({
}; };
} }
function targetResponse({
res,
outputs,
detail
}: {
res: NextApiResponse;
outputs: AppModuleItemType['outputs'];
detail: boolean;
}) {
const targets =
outputs.find((output) => output.key === TaskResponseKeyEnum.answerText)?.targets || [];
if (targets.length === 0) return;
sseResponse({
res,
event: detail ? sseResponseEventEnum.answer : undefined,
data: textAdaptGptResponse({
text: '\n'
})
});
}
async function streamResponse({ async function streamResponse({
res, res,
detail, detail,

View File

@@ -11,6 +11,7 @@ export type AnswerProps = {
}; };
export type AnswerResponse = { export type AnswerResponse = {
[TaskResponseKeyEnum.answerText]: string; [TaskResponseKeyEnum.answerText]: string;
finish: boolean;
}; };
export const dispatchAnswer = (props: Record<string, any>): AnswerResponse => { export const dispatchAnswer = (props: Record<string, any>): AnswerResponse => {
@@ -27,6 +28,7 @@ export const dispatchAnswer = (props: Record<string, any>): AnswerResponse => {
} }
return { return {
[TaskResponseKeyEnum.answerText]: text [TaskResponseKeyEnum.answerText]: text,
finish: true
}; };
}; };

View File

@@ -7,6 +7,8 @@ import { PRICE_SCALE } from '@/constants/common';
import { connectPg, PgClient } from './pg'; import { connectPg, PgClient } from './pg';
import { createHashPassword } from '@/utils/tools'; import { createHashPassword } from '@/utils/tools';
import { PgTrainingTableName } from '@/constants/plugin'; import { PgTrainingTableName } from '@/constants/plugin';
import { createLogger, format, transports } from 'winston';
import 'winston-mongodb';
/** /**
* connect MongoDB and init data * connect MongoDB and init data
@@ -32,6 +34,9 @@ export async function connectToDatabase(): Promise<void> {
}); });
} }
// logger
initLogger();
// init function // init function
getInitConfig(); getInitConfig();
@@ -39,7 +44,6 @@ export async function connectToDatabase(): Promise<void> {
mongoose.set('strictQuery', true); mongoose.set('strictQuery', true);
global.mongodb = await mongoose.connect(process.env.MONGODB_URI as string, { global.mongodb = await mongoose.connect(process.env.MONGODB_URI as string, {
bufferCommands: true, bufferCommands: true,
dbName: process.env.MONGODB_NAME,
maxConnecting: Number(process.env.DB_MAX_LINK || 5), maxConnecting: Number(process.env.DB_MAX_LINK || 5),
maxPoolSize: Number(process.env.DB_MAX_LINK || 5), maxPoolSize: Number(process.env.DB_MAX_LINK || 5),
minPoolSize: 2 minPoolSize: 2
@@ -57,6 +61,37 @@ export async function connectToDatabase(): Promise<void> {
startQueue(); startQueue();
} }
function initLogger() {
global.logger = createLogger({
transports: [
new transports.MongoDB({
db: process.env.MONGODB_URI as string,
collection: 'server_logs',
options: {
useUnifiedTopology: true
},
cappedSize: 500000000,
tryReconnect: true,
metaKey: 'meta',
format: format.combine(format.timestamp(), format.json())
}),
new transports.Console({
format: format.combine(
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.printf((info) => {
if (info.level === 'error') {
console.log(info.meta);
return `${info.level}: ${[info.timestamp]}: ${info.message}`;
}
return `${info.level}: ${[info.timestamp]}: ${info.message}${
info.meta ? `: ${JSON.stringify(info.meta)}` : ''
}`;
})
)
})
]
});
}
async function initRootUser() { async function initRootUser() {
try { try {
const rootUser = await User.findOne({ const rootUser = await User.findOne({

View File

@@ -8,13 +8,9 @@ export const connectPg = async () => {
} }
global.pgClient = new Pool({ global.pgClient = new Pool({
host: process.env.PG_HOST, connectionString: process.env.PG_URL,
port: process.env.PG_PORT ? +process.env.PG_PORT : 5432,
user: process.env.PG_USER,
password: process.env.PG_PASSWORD,
database: process.env.PG_DB_NAME,
max: Number(process.env.DB_MAX_LINK || 5), max: Number(process.env.DB_MAX_LINK || 5),
idleTimeoutMillis: 30000, keepAlive: true,
connectionTimeoutMillis: 5000 connectionTimeoutMillis: 5000
}); });

View File

@@ -7,7 +7,7 @@ import {
ERROR_RESPONSE, ERROR_RESPONSE,
ERROR_ENUM ERROR_ENUM
} from './errorCode'; } from './errorCode';
import { clearCookie, sseResponse } from './utils/tools'; import { clearCookie, sseResponse, addLog } from './utils/tools';
export interface ResponseType<T = any> { export interface ResponseType<T = any> {
code: number; code: number;
@@ -52,7 +52,24 @@ export const jsonRes = <T = any>(
} else if (openaiError[error?.response?.statusText]) { } else if (openaiError[error?.response?.statusText]) {
msg = openaiError[error.response.statusText]; msg = openaiError[error.response.statusText];
} }
console.log(error);
addLog.error(msg, {
message: error.message,
stack: error.stack,
...(error.config && {
config: {
headers: error.config.headers,
url: error.config.url,
data: error.config.data
}
}),
...(error.response && {
response: {
status: error.response.status,
statusText: error.response.statusText
}
})
});
} }
res.status(code).json({ res.status(code).json({
@@ -92,7 +109,24 @@ export const sseErrRes = (res: NextApiResponse, error: any) => {
} else if (openaiError[error?.response?.statusText]) { } else if (openaiError[error?.response?.statusText]) {
msg = openaiError[error.response.statusText]; msg = openaiError[error.response.statusText];
} }
console.log('sse error => ', error);
addLog.error(`sse error: ${msg}`, {
message: error.message,
stack: error.stack,
...(error.config && {
config: {
headers: error.config.headers,
url: error.config.url,
data: error.config.data
}
}),
...(error.response && {
response: {
status: error.response.status,
statusText: error.response.statusText
}
})
});
sseResponse({ sseResponse({
res, res,

View File

@@ -65,6 +65,7 @@ export function withNextCors(handler: NextApiHandler): NextApiHandler {
}; };
} }
/* start task */
export const startQueue = () => { export const startQueue = () => {
for (let i = 0; i < global.systemEnv.qaMaxProcess; i++) { for (let i = 0; i < global.systemEnv.qaMaxProcess; i++) {
generateQA(); generateQA();
@@ -87,3 +88,13 @@ export const sseResponse = ({
event && res.write(`event: ${event}\n`); event && res.write(`event: ${event}\n`);
res.write(`data: ${data}\n\n`); res.write(`data: ${data}\n\n`);
}; };
/* add logger */
export const addLog = {
info: (msg: string, obj?: Record<string, any>) => {
global.logger.info(msg, { meta: obj });
},
error: (msg: string, obj?: Record<string, any>) => {
global.logger.error(msg, { meta: obj });
}
};

View File

@@ -2,6 +2,7 @@ import type { Mongoose } from 'mongoose';
import type { Agent } from 'http'; import type { Agent } from 'http';
import type { Pool } from 'pg'; import type { Pool } from 'pg';
import type { Tiktoken } from '@dqbd/tiktoken'; import type { Tiktoken } from '@dqbd/tiktoken';
import type { Logger } from 'winston';
import { ChatModelItemType, QAModelItemType, VectorModelItemType } from './model'; import { ChatModelItemType, QAModelItemType, VectorModelItemType } from './model';
export type PagingData<T> = { export type PagingData<T> = {
@@ -55,6 +56,9 @@ declare global {
var qaQueueLen: number; var qaQueueLen: number;
var vectorQueueLen: number; var vectorQueueLen: number;
var OpenAiEncMap: Tiktoken; var OpenAiEncMap: Tiktoken;
var logger: Logger;
var sendInformQueue: (() => Promise<void>)[]; var sendInformQueue: (() => Promise<void>)[];
var sendInformQueueLen: number; var sendInformQueueLen: number;

View File

@@ -89,15 +89,9 @@ services:
- TOKEN_KEY=any - TOKEN_KEY=any
- ROOT_KEY=root_key - ROOT_KEY=root_key
# mongo 配置,不需要改 # mongo 配置,不需要改
- MONGODB_URI=mongodb://username:password@mongo:27017 - MONGODB_URI=mongodb://username:password@mongo:27017/fastgpt
# - MONGODB_URI=mongodb://username:password@mongo:27017/?authSource=admin # pg配置. 不需要改
- MONGODB_NAME=fastgpt - PG_URL=postgresql://username:password@pg:5432/postgres
# pg配置.
- PG_HOST=pg
- PG_PORT=5432
- PG_USER=username
- PG_PASSWORD=password
- PG_DB_NAME=postgres
networks: networks:
fastgpt: fastgpt:
``` ```
@@ -149,15 +143,9 @@ services:
# root key, 最高权限,可以内部接口互相调用 # root key, 最高权限,可以内部接口互相调用
- ROOT_KEY=root_key - ROOT_KEY=root_key
# mongo 配置,不需要改 # mongo 配置,不需要改
- MONGODB_URI=mongodb://username:password@0.0.0.0:27017 - MONGODB_URI=mongodb://username:password@0.0.0.0:27017/fastgpt
# - MONGODB_URI=mongodb://username:password@0.0.0.0:27017/?authSource=admin # pg配置. 不需要改
- MONGODB_NAME=fastgpt - PG_URL=postgresql://username:password@0.0.0.0:5432/postgres
# pg 配置
- PG_HOST=0.0.0.0
- PG_PORT=5432
- PG_USER=username
- PG_PASSWORD=password
- PG_DB_NAME=postgres
``` ```
## 四、运行 docker-compose ## 四、运行 docker-compose

View File

@@ -1,4 +1,4 @@
# V4 版本初始化 # V4.0 版本初始化
新版 mongo 表进行了不少的变更,需要执行一些初始化脚本。 新版 mongo 表进行了不少的变更,需要执行一些初始化脚本。

View File

@@ -2,6 +2,15 @@
新版重新设置了对话存储结构,需要初始化原来的存储内容 新版重新设置了对话存储结构,需要初始化原来的存储内容
## 更新环境变量
优化了 PG 和 Mongo 的连接变量,只需要 1 个 url 即可。
```
MONGODB_URI=mongodb://username:password@0.0.0.0:27017/fastgpt
PG_URL=postgresql://username:password@0.0.0.0:5432/postgres
```
## 执行初始化 API ## 执行初始化 API
部署新版项目,并发起 3 个 HTTP 请求(记得携带 headers.rootkey这个值是环境变量里的 部署新版项目,并发起 3 个 HTTP 请求(记得携带 headers.rootkey这个值是环境变量里的

View File

@@ -28,8 +28,7 @@ const config = {
({ ({
docs: { docs: {
sidebarPath: require.resolve('./sidebars.js'), sidebarPath: require.resolve('./sidebars.js'),
editUrl: editUrl: 'https://github.com/labring/FastGPT/blob/main/docSite/'
'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/'
}, },
theme: { theme: {
customCss: require.resolve('./src/css/custom.css') customCss: require.resolve('./src/css/custom.css')

View File

@@ -14,6 +14,9 @@
"sidebar.docSidebar.category.Deploy": { "sidebar.docSidebar.category.Deploy": {
"message": "部署" "message": "部署"
}, },
"sidebar.docSidebar.category.Version Updating": {
"message": "版本更新"
},
"sidebar.docSidebar.category.Datasets": { "sidebar.docSidebar.category.Datasets": {
"message": "知识库实践" "message": "知识库实践"
}, },

View File

@@ -89,15 +89,9 @@ services:
- TOKEN_KEY=any - TOKEN_KEY=any
- ROOT_KEY=root_key - ROOT_KEY=root_key
# mongo 配置,不需要改 # mongo 配置,不需要改
- MONGODB_URI=mongodb://username:password@mongo:27017 # 如果这个连不上,尝试下面的 - MONGODB_URI=mongodb://username:password@mongo:27017/fastgpt
# - MONGODB_URI=mongodb://username:password@mongo:27017/?authSource=admin # pg配置. 不需要改
- MONGODB_NAME=fastgpt - PG_URL=postgresql://username:password@pg:5432/postgres
# pg配置.
- PG_HOST=pg
- PG_PORT=5432
- PG_USER=username
- PG_PASSWORD=password
- PG_DB_NAME=postgres
networks: networks:
fastgpt: fastgpt:
``` ```
@@ -153,15 +147,9 @@ environment:
# root key, 最高权限,可以内部接口互相调用 # root key, 最高权限,可以内部接口互相调用
- ROOT_KEY=root_key - ROOT_KEY=root_key
# mongo 配置,不需要改 # mongo 配置,不需要改
- MONGODB_URI=mongodb://username:password@0.0.0.0:27017 - MONGODB_URI=mongodb://username:password@0.0.0.0:27017/fastgpt
# - MONGODB_URI=mongodb://username:password@0.0.0.0:27017/?authSource=admin # pg配置. 不需要改
- MONGODB_NAME=fastgpt - PG_URL=postgresql://username:password@0.0.0.0:5432/postgres
# pg 配置
- PG_HOST=0.0.0.0
- PG_PORT=5432
- PG_USER=username
- PG_PASSWORD=password
- PG_DB_NAME=postgres
``` ```
## 四、运行 docker-compose ## 四、运行 docker-compose

View File

@@ -1,4 +1,4 @@
# V4 版本初始化 # V4.0 版本初始化
新版 mongo 表进行了不少的变更,需要执行一些初始化脚本。 新版 mongo 表进行了不少的变更,需要执行一些初始化脚本。

View File

@@ -2,6 +2,15 @@
新版重新设置了对话存储结构,需要初始化原来的存储内容 新版重新设置了对话存储结构,需要初始化原来的存储内容
## 更新环境变量
优化了 PG 和 Mongo 的连接变量,只需要 1 个 url 即可。
```
MONGODB_URI=mongodb://username:password@0.0.0.0:27017/fastgpt
PG_URL=postgresql://username:password@0.0.0.0:5432/postgres
```
## 执行初始化 API ## 执行初始化 API
部署新版项目,并发起 3 个 HTTP 请求(记得携带 headers.rootkey这个值是环境变量里的 部署新版项目,并发起 3 个 HTTP 请求(记得携带 headers.rootkey这个值是环境变量里的

View File

@@ -53,7 +53,20 @@ const sidebars = {
} }
] ]
}, },
'develop/oneapi' 'develop/oneapi',
{
type: 'category',
label: 'Version Updating',
link: {
type: 'generated-index'
},
items: [
{
type: 'autogenerated',
dirName: 'develop/update'
}
]
}
] ]
}, },
{ {

View File

@@ -54,14 +54,9 @@ services:
- TOKEN_KEY=any - TOKEN_KEY=any
- ROOT_KEY=root_key - ROOT_KEY=root_key
# mongo 配置,不需要改 # mongo 配置,不需要改
- MONGODB_URI=mongodb://username:password@mongo:27017/?authSource=admin - MONGODB_URI=mongodb://username:password@mongo:27017/fastgpt
- MONGODB_NAME=fastgpt # pg配置. 不需要改
# pg配置. - PG_URL=postgresql://username:password@pg:5432/postgres
- PG_HOST=pg
- PG_PORT=5432
- PG_USER=username
- PG_PASSWORD=password
- PG_DB_NAME=postgres
volumes: volumes:
- ./config.json:/app/data/config.json - ./config.json:/app/data/config.json
networks: networks:
@@ -116,11 +111,6 @@ networks:
# # root key, 最高权限,可以内部接口互相调用 # # root key, 最高权限,可以内部接口互相调用
# - ROOT_KEY=root_key # - ROOT_KEY=root_key
# # mongo 配置,不需要改 # # mongo 配置,不需要改
# - MONGODB_URI=mongodb://username:password@0.0.0.0:27017/?authSource=admin # - MONGODB_URI=mongodb://username:password@0.0.0.0:27017/fastgpt
# - MONGODB_NAME=fastgpt # # pg配置. 不需要改
# # pg 配置 # - PG_URL=postgresql://username:password@0.0.0.0:5432/postgres
# - PG_HOST=0.0.0.0
# - PG_PORT=5432
# - PG_USER=username
# - PG_PASSWORD=password
# - PG_DB_NAME=postgres