mirror of
https://github.com/labring/FastGPT.git
synced 2026-05-08 01:08:43 +08:00
289da0f7b0
* sandbox-sync-agent * refactor: host pro as submodule * chore: checkpoint host pro restructure * refactor workspace test layout and startup init * chore: update next turbopack setup * chore: snapshot current work before actions fix * chore: update pro submodule * chore: point pro submodule url to upstream https * fix: Dockerfile * chore: update pro submodule * ci: support private pro submodule token and skip fork jobs * fix(ci): build sdk workspace deps before code-sandbox bundle * fix(app): exclude vitest configs from production typecheck * fix(app-image): build sdk packages before next build * fix(ci): align dockerfiles with workspace sdk build flow * chore(docker): upgrade node20 docker images to node24 * fix(ci): read admin coverage output path in pro test workflow * fix(app-image): include next-i18next config and locale assets * chore: update pro submodule * chore: do not specify branch for submodule * chore: remove most ts-nocheck sign * chore: update pro submodule * chore: remove sandbox-agent-sync package * chore: do not modify "pushData" file logic * fix: health check * chore: restore dev axios proxy state * fix: test-fastgpt report workflow * fix: use valid vitest coverage action inputs
132 lines
4.0 KiB
Markdown
132 lines
4.0 KiB
Markdown
## Premise
|
||
|
||
Since FastGPT is managed in the same way as monorepo, it is recommended to install ‘make’ first during development.
|
||
|
||
monorepo Project Name:
|
||
|
||
- app: main project
|
||
- admin: pro admin project
|
||
- sso: pro sso service
|
||
-......
|
||
|
||
## Dev
|
||
|
||
```sh
|
||
# Give automatic script code execution permission (on non-Linux systems, you can manually execute the postinstall.sh file content)
|
||
chmod -R +x ./scripts/
|
||
# Executing under the code root directory installs all dependencies within the root package, projects, and packages
|
||
pnpm i
|
||
|
||
# Not make cmd
|
||
cd projects/app
|
||
pnpm dev
|
||
|
||
# Make cmd
|
||
make dev name=app
|
||
make dev name=admin
|
||
make dev name=sso
|
||
```
|
||
|
||
Note: If the Node version is >= 20, you need to pass the `--no-node-snapshot` parameter to Node when running `pnpm i`
|
||
|
||
```sh
|
||
NODE_OPTIONS=--no-node-snapshot pnpm i
|
||
```
|
||
|
||
### Jest
|
||
|
||
https://fael3z0zfze.feishu.cn/docx/ZOI1dABpxoGhS7xzhkXcKPxZnDL
|
||
|
||
## I18N
|
||
|
||
### Install i18n-ally Plugin
|
||
|
||
1. Open the Extensions Marketplace in VSCode, search for and install the `i18n Ally` plugin.
|
||
|
||
### Code Optimization Examples
|
||
|
||
#### Fetch Specific Namespace Translations in `getServerSideProps`
|
||
|
||
```typescript
|
||
// pages/yourPage.tsx
|
||
export async function getServerSideProps(context: any) {
|
||
return {
|
||
props: {
|
||
currentTab: context?.query?.currentTab || TabEnum.info,
|
||
...(await serverSideTranslations(context.locale, ['publish', 'user']))
|
||
}
|
||
};
|
||
}
|
||
```
|
||
|
||
#### Use useTranslation Hook in Page
|
||
|
||
```typescript
|
||
// pages/yourPage.tsx
|
||
import { useTranslation } from 'next-i18next';
|
||
|
||
const YourComponent = () => {
|
||
const { t } = useTranslation();
|
||
|
||
return (
|
||
<Button
|
||
variant="outline"
|
||
size="sm"
|
||
mr={2}
|
||
onClick={() => setShowSelected(false)}
|
||
>
|
||
{t('common:close')}
|
||
</Button>
|
||
);
|
||
};
|
||
|
||
export default YourComponent;
|
||
```
|
||
|
||
#### Handle Static File Translations
|
||
|
||
```typescript
|
||
// utils/i18n.ts
|
||
import { i18nT } from '@fastgpt/web/i18n/utils';
|
||
|
||
const staticContent = {
|
||
id: 'simpleChat',
|
||
avatar: 'core/workflow/template/aiChat',
|
||
name: i18nT('app:template.simple_robot'),
|
||
};
|
||
|
||
export default staticContent;
|
||
```
|
||
|
||
### Standardize Translation Format
|
||
|
||
- Use the t(namespace:key) format to ensure consistent naming.
|
||
- Translation keys should use lowercase letters and underscores, e.g., common.close.
|
||
|
||
## audit
|
||
|
||
Please fill the AuditEventEnum and audit function is added to the ts, and on the corresponding position to fill i18n, at the same time to add the location of the log using addOpearationLog function add function
|
||
|
||
## Build
|
||
|
||
```sh
|
||
# Docker cmd: Build image, not proxy
|
||
docker build -f ./projects/app/Dockerfile -t registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.1 . --build-arg name=app
|
||
# Docker cmd: Build pro admin image, not proxy
|
||
docker build -f ./pro/admin/Dockerfile -t registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-admin:v4.8.1 . --build-arg name=admin
|
||
# Docker cmd: Build pro sso image, not proxy
|
||
docker build -f ./pro/sso/Dockerfile -t registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sso-service:v4.8.1 . --build-arg name=sso
|
||
# Make cmd: Build image, not proxy
|
||
make build name=app image=registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.1
|
||
make build name=admin image=registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-admin:v4.8.1
|
||
make build name=sso image=registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sso-service:v4.8.1
|
||
|
||
# Docker cmd: Build image with proxy
|
||
docker build -f ./projects/app/Dockerfile -t registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.1 . --build-arg name=app --build-arg proxy=taobao
|
||
# Docker cmd: Build pro admin image with proxy
|
||
docker build -f ./pro/admin/Dockerfile -t registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-admin:v4.8.1 . --build-arg name=admin --build-arg proxy=taobao
|
||
# Make cmd: Build image with proxy
|
||
make build name=app image=registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.1 proxy=taobao
|
||
make build name=admin image=registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-admin:v4.8.1 proxy=taobao
|
||
```
|