Files
FastGPT/deploy/init.mjs
Finley Ge 470eeca060 V4.14.6 (#6263)
* feat: wecom integration (#6234)

* wip: wecom

* feat: template filter by user tag

* feat: wecom pay

* fix: some bug

* fix: zod error

* feat: bill

* fix: bill toast

* feat: forbidden downgrade plan button

* chore(fe): wecom zone

* chore: use queue to delete team instead of a session

* chore: adjust

* feat: wecom bill logic refactor

* perf: plan

* perf: plan

* fix: i18n

* chore: adjust

* feat: adjust

* feat: add wecom config

* perf: wecom app template recommendation & system tool preinstall

* perf: some variable and tip

* update create bill api schema

* update create bill api schema

* update create bill api schema

* feat: wecom

* chore: adjust

* fix: ts

* perf: condition order

* perf: condition order

---------

Co-authored-by: archer <545436317@qq.com>

* feat: system tool config tags (#6257)

* fix: system secret (#6259)

* fix: system secret

* chore: update docs

* chore: merge main (#6264)

* feat: wecom integration (#6234)

* wip: wecom

* feat: template filter by user tag

* feat: wecom pay

* fix: some bug

* fix: zod error

* feat: bill

* fix: bill toast

* feat: forbidden downgrade plan button

* chore(fe): wecom zone

* chore: use queue to delete team instead of a session

* chore: adjust

* feat: wecom bill logic refactor

* perf: plan

* perf: plan

* fix: i18n

* chore: adjust

* feat: adjust

* feat: add wecom config

* perf: wecom app template recommendation & system tool preinstall

* perf: some variable and tip

* update create bill api schema

* update create bill api schema

* update create bill api schema

* feat: wecom

* chore: adjust

* fix: ts

* perf: condition order

* perf: condition order

---------

Co-authored-by: archer <545436317@qq.com>

* feat: system tool config tags (#6257)

* fix: system secret (#6259)

* fix: system secret

* chore: update docs

---------

Co-authored-by: archer <545436317@qq.com>

* chore: update version number (#6266)

* fix: price status (#6279)

* fix: back button (#6281)

* team plan max file size & count (#6258)

* team plan max file size & count

* fix

* fix

* fix

* perf: presign url

* remove empty check

* remove empty check

* fix: ts

* fix: doc

* fix presign file

* perf: code

* perf: i18n

* fix: remove maxSize attribute

---------

Co-authored-by: archer <545436317@qq.com>
Co-authored-by: Finley Ge <finleyge@fastgpt.io>

* feat: marketplace batch update (#6299)

* feat: wecom integration (#6234)

* wip: wecom

* feat: template filter by user tag

* feat: wecom pay

* fix: some bug

* fix: zod error

* feat: bill

* fix: bill toast

* feat: forbidden downgrade plan button

* chore(fe): wecom zone

* chore: use queue to delete team instead of a session

* chore: adjust

* feat: wecom bill logic refactor

* perf: plan

* perf: plan

* fix: i18n

* chore: adjust

* feat: adjust

* feat: add wecom config

* perf: wecom app template recommendation & system tool preinstall

* perf: some variable and tip

* update create bill api schema

* update create bill api schema

* update create bill api schema

* feat: wecom

* chore: adjust

* fix: ts

* perf: condition order

* perf: condition order

---------

Co-authored-by: archer <545436317@qq.com>

* feat: system tool config tags (#6257)

* fix: system secret (#6259)

* fix: system secret

* chore: update docs

* chore: merge main (#6264)

* feat: wecom integration (#6234)

* wip: wecom

* feat: template filter by user tag

* feat: wecom pay

* fix: some bug

* fix: zod error

* feat: bill

* fix: bill toast

* feat: forbidden downgrade plan button

* chore(fe): wecom zone

* chore: use queue to delete team instead of a session

* chore: adjust

* feat: wecom bill logic refactor

* perf: plan

* perf: plan

* fix: i18n

* chore: adjust

* feat: adjust

* feat: add wecom config

* perf: wecom app template recommendation & system tool preinstall

* perf: some variable and tip

* update create bill api schema

* update create bill api schema

* update create bill api schema

* feat: wecom

* chore: adjust

* fix: ts

* perf: condition order

* perf: condition order

---------

Co-authored-by: archer <545436317@qq.com>

* feat: system tool config tags (#6257)

* fix: system secret (#6259)

* fix: system secret

* chore: update docs

---------

Co-authored-by: archer <545436317@qq.com>

* fix: custom domain limitation (#6265)

* chore: update version number (#6266)

* fix: price status (#6279)

* fix: back button (#6281)

* chore/rebase main (#6295)

* chore(deps): bump undici from 7.16.0 to 7.18.2 (#6272)

Bumps [undici](https://github.com/nodejs/undici) from 7.16.0 to 7.18.2.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.16.0...v7.18.2)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.18.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump undici in /plugins/webcrawler/SPIDER (#6273)

Bumps [undici](https://github.com/nodejs/undici) from 6.21.3 to 6.23.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v6.21.3...v6.23.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 6.23.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump tar from 7.4.3 to 7.5.3 in /document (#6282)

Bumps [tar](https://github.com/isaacs/node-tar) from 7.4.3 to 7.5.3.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.4.3...v7.5.3)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* perf: remove request invalid field (#6283)

* V4.14.5.1 dev (#6290)

* chore: cherry pick some commits from v4.14.6-dev (#6287)

* fix: custom domain limitation (#6265)

* fix: system secret (#6259)

* fix: system secret

* chore: update docs

* chore: docs

* fix password variable & datetime picker (#6276)

* fix password variable & datetime picker

* doc

* chore: cherry pick some commits from v4.14.6-dev (#6287)

* fix: custom domain limitation (#6265)

* fix: system secret (#6259)

* fix: system secret

* chore: update docs

* chore: docs

* doc

* chore: docs

---------

Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com>
Co-authored-by: Finley Ge <finleyge@fastgpt.io>

* perf: extname computed (#6285)

* perf: extname computed

* chore: handle hash or query flags

---------

Co-authored-by: Finley Ge <finleyge@fastgpt.io>

* chore: docs (#6291)

---------

Co-authored-by: heheer <heheer@sealos.io>
Co-authored-by: Archer <545436317@qq.com>

* chore: deploy scripts (#6293)

* docs: 41451 upgrade doc (#6294)

* feat: wecom integration (#6234)

* wip: wecom

* feat: template filter by user tag

* feat: wecom pay

* fix: some bug

* fix: zod error

* feat: bill

* fix: bill toast

* feat: forbidden downgrade plan button

* chore(fe): wecom zone

* chore: use queue to delete team instead of a session

* chore: adjust

* feat: wecom bill logic refactor

* perf: plan

* perf: plan

* fix: i18n

* chore: adjust

* feat: adjust

* feat: add wecom config

* perf: wecom app template recommendation & system tool preinstall

* perf: some variable and tip

* update create bill api schema

* update create bill api schema

* update create bill api schema

* feat: wecom

* chore: adjust

* fix: ts

* perf: condition order

* perf: condition order

---------

Co-authored-by: archer <545436317@qq.com>

* feat: system tool config tags (#6257)

* fix: price status (#6279)

* fix: back button (#6281)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Archer <545436317@qq.com>
Co-authored-by: heheer <heheer@sealos.io>

* feat: marketplace batch update

* chore: components reuse

* fix: test case

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: archer <545436317@qq.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: heheer <heheer@sealos.io>

* fix: upload file size limit && batch update plugin ui (#6308)

* fix: batch update drawer ui && custom plan logic

* fix: max upload file size

* chore: remove comment

* fix: plan-status (#6311)

* fix: price page (#6313)

* fix: plan ui

* fix: custom standard plan (#6317)

* fix: system tool route & batch update drawer ui (#6318)

* fix: system tool route

* chore: upgrade docs

* chore: batch update ui

* fix: marketplace tool detail readme height (#6324)

* fix: marketplace tool detail readme height

* chore: use useRequest2

* chore: adapt new plugin sdk (#6334)

* chore: adapt new plugin sdk

* chore: bump @fastgpt-sdk/plugin to 0.3.6; fix type error

---------

Co-authored-by: Finley Ge <finleyge@fastgpt.io>
Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com>

* fix: marketplace batch update drawer button background (#6340)

* chore: useRequest2 -> useRequest

* #6193 feat(SeekDB): 集成支持 SeekDB 向量数据库 (#6338)

* #6193 feat(SeekDB): 集成支持 SeekDB 向量数据库

- 添加 SEEKDB_ADDRESS 环境变量支持
- 在 vectorDB 控制器中优先返回 SeekVectorCtrl 实例
- 新增 SeekDB 向量库控制器,复用 OceanBase 控制器实现
- 更新部署文档,新增 SeekDB 相关描述和配置说明
- 新增 SeekDB 的 Docker Compose 配置,支持国内和全球镜像
- 在开发文档中添加 SeekDB 的环境要求及特性介绍
- 修改部署脚本支持 SeekDB 版本快速部署

* fix(vectorDB): add type annotation to getVectorObj to resolve TypeScript compilation error

- Add return type annotation (: VectorControllerType) to getVectorObj function
- Fixes Docker build failure: Property 'insertIds' does not exist on type 'unknown'
- The Vector object now has correct type inference for retryFn

Related: Docker build fails at TypeScript type checking stage

* #6193 refactor(vectorDB): 调整 SeekDB 控制器导入方式

- 将 ObClient 和 ObVectorCtrl 分开导入,提升代码清晰度
- 将导出语句拆分为两行,便于后续维护
- 保持 OceanBase 控制器复用逻辑不变
- 优化代码格式,增强可读性

* doc

---------

Co-authored-by: archer <545436317@qq.com>

* fix date time picker disabled status (#6352)

* fix date time picker disabled status

* fix build

* fix: copilot review

* perf: claude review

* fix: ts

* chore: docs, type (#6350)

* fix: mock (#6354)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: archer <545436317@qq.com>
Co-authored-by: heheer <heheer@sealos.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: roy <whoeverimf5@gmail.com>
Co-authored-by: flying~dragon <58673960+flying-dragon-ai@users.noreply.github.com>
2026-01-30 18:47:43 +08:00

227 lines
5.7 KiB
JavaScript

#!/usr/bin/env node
import fs from 'fs';
import path from 'path';
/**
* @enum {String} RegionEnum
*/
const RegionEnum = {
cn: 'cn',
global: 'global'
};
/**
* @enum {String} VectorEnum
*/
const VectorEnum = {
pg: 'pg',
milvus: 'milvus',
zilliz: 'zilliz',
ob: 'ob',
seekdb: 'seekdb'
};
// make sure the cwd
const basePath = process.cwd();
if (!basePath.endsWith('deploy')) {
process.chdir('deploy');
}
/**
* @typedef {{ tag: String, image: {cn: String, global: String} }} ArgItemType
*/
/** format the args
* @type {Record<Services, ArgItemType>}
*/
const args = (() => {
/**
* @type {{tags: Record<Services, string>, images: Record<Services, Record<string, string>>}}
*/
const obj = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'args.json')));
const args = {};
for (const key of Object.keys(obj.tags)) {
args[key] = {
tag: obj.tags[key],
image: {
cn: obj.images.cn[key],
global: obj.images.global[key]
}
};
}
return args;
})();
const vector = {
pg: {
db: '',
config: `\
PG_URL: postgresql://username:password@pg:5432/postgres`,
extra: ''
},
milvus: {
db: '',
config: `\
MILVUS_ADDRESS: http://milvusStandalone:19530
MILVUS_TOKEN: none
`,
extra: ''
},
zilliz: {
db: '',
config: `\
MILVUS_ADDRESS: zilliz_cloud_address
MILVUS_TOKEN: zilliz_cloud_token`,
extra: ''
},
ob: {
db: '',
config: `\
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@ob:2881/test
`,
extra: `\
configs:
init_sql:
name: init_sql
content: |
ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;
`
},
seekdb: {
db: '',
config: `\
SEEKDB_URL: mysql://root%40tenantname:tenantpassword@seekdb:3306/fastgpt
`,
extra: ``
},
};
/**
* replace all ${{}}
* @param {string} source
* @param {RegionEnum} region
* @param {VectorEnum} vec
* @returns {string}
*/
const replace = (source, region, vec) => {
// Match ${{expr}}, capture "expr" inside {{}}
return source.replace(/\$\{\{([^}]*)\}\}/g, (_, expr) => {
// expr: a.b
/**
* @type {String}
*/
const [a, b] = expr.split('.');
if (a === 'vec') {
if (b === 'db') {
return replace(vector[vec].db, region, vec);
} else {
return vector[vec][b];
}
}
if (b === 'tag') {
return args[a].tag;
} else if (b === 'image') {
return args[a].image[region];
}
});
};
{
// read in Vectors
const pg = fs.readFileSync(path.join(process.cwd(), 'templates', 'vector', 'pg.txt'));
vector.pg.db = String(pg);
const milvus = fs.readFileSync(path.join(process.cwd(), 'templates', 'vector', 'milvus.txt'));
vector.milvus.db = String(milvus);
const ob = fs.readFileSync(path.join(process.cwd(), 'templates', 'vector', 'ob.txt'));
vector.ob.db = String(ob);
const seekdb = fs.readFileSync(path.join(process.cwd(), 'templates', 'vector', 'seekdb.txt'));
vector.seekdb.db = String(seekdb);
}
const generateDevFile = async () => {
console.log('generating dev/docker-compose.yml');
// 1. read template
const template = await fs.promises.readFile(
path.join(process.cwd(), 'templates', 'docker-compose.dev.yml'),
'utf8'
);
await Promise.all([
fs.promises.writeFile(
path.join(process.cwd(), 'dev', 'docker-compose.cn.yml'),
replace(template, 'cn')
),
fs.promises.writeFile(
path.join(process.cwd(), 'dev', 'docker-compose.yml'),
replace(template, 'global')
)
]);
console.log('success geenrate dev files');
};
const generateProdFile = async () => {
console.log('generating prod/docker-compose.yml');
const template = await fs.promises.readFile(
path.join(process.cwd(), 'templates', 'docker-compose.prod.yml'),
'utf8'
);
await Promise.all([
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.pg.yml'),
replace(template, 'cn', VectorEnum.pg)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.pg.yml'),
replace(template, 'global', VectorEnum.pg)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.milvus.yml'),
replace(template, 'cn', VectorEnum.milvus)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.milvus.yml'),
replace(template, 'global', VectorEnum.milvus)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.zilliz.yml'),
replace(template, 'cn', VectorEnum.zilliz)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.ziliiz.yml'),
replace(template, 'global', VectorEnum.zilliz)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.oceanbase.yml'),
replace(template, 'cn', VectorEnum.ob)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.oceanbase.yml'),
replace(template, 'global', VectorEnum.ob)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'cn', 'docker-compose.seekdb.yml'),
replace(template, 'cn', VectorEnum.seekdb)
),
fs.promises.writeFile(
path.join(process.cwd(), 'docker', 'global', 'docker-compose.seekdb.yml'),
replace(template, 'global', VectorEnum.seekdb)
)
]);
console.log('success geenrate prod files');
};
await Promise.all([generateDevFile(), generateProdFile()]);
console.log('copy the docker dir to ../document/public');
await fs.promises.cp(
path.join(process.cwd(), 'docker'),
path.join(process.cwd(), '..', 'document', 'public', 'deploy', 'docker'),
{ recursive: true }
);