create-bubbles 0.1.26 → 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/template-vp-monorepo-react-nestjs/.agents/rules//345/205/261/344/272/253/344/273/243/347/240/201.md +2 -2
- package/template-vp-monorepo-react-nestjs/.agents/rules//351/234/200/346/261/202/344/270/216/350/256/276/350/256/241/346/226/207/346/241/243.md +50 -0
- package/template-vp-monorepo-react-nestjs/.codegraph/.gitignore +5 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/PRD.md +121 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/cleanup-empty-preview.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/company-created.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/login-desktop.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/member-role-assigned.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/permission-revoked.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/platform-menu-recovery.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/project-created.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/project-member-home.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/replacement-administrator.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/workspace-empty.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//345/206/263/347/255/226/350/256/260/345/275/225.md +29 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//345/211/215/347/253/257/344/272/244/346/216/245.md +74 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//345/220/216/347/253/257/346/265/213/350/257/225/346/212/245/345/221/212.md +115 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/212/200/346/234/257/345/245/221/347/272/246.md +578 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/265/213/350/257/225/346/212/245/345/221/212.md +137 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/265/213/350/257/225/350/257/201/346/215/256/browser.json +84 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/265/213/350/257/225/350/257/201/346/215/256/http.json +108 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/265/213/350/257/225/350/257/201/346/215/256/legacy-http.json +18 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/265/213/350/257/225/350/257/201/346/215/256/legacy.json +24 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//350/201/224/350/260/203/350/256/260/345/275/225.md +76 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//350/277/220/350/241/214/350/257/264/346/230/216.md +117 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//351/234/200/346/261/202/346/226/207/346/241/243.md +275 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//345/206/263/347/255/226/350/256/260/345/275/225.md +35 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//346/212/200/346/234/257/345/245/221/347/272/246.md +744 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//346/265/213/350/257/225/346/212/245/345/221/212.md +174 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//350/201/224/350/260/203/350/256/260/345/275/225.md +137 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//350/256/276/350/256/241/346/226/271/346/241/210.md +215 -0
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//351/234/200/346/261/202/346/226/207/346/241/243.md +421 -0
- package/template-vp-monorepo-react-nestjs/.spaces/{server/05./344/270/212/344/274/240/346/224/271/351/200/240/346/226/271/346/241/210/README.md → 02./344/270/212/344/274/240/344/270/216/346/226/207/344/273/266//344/270/212/344/274/240/346/224/271/351/200/240//350/256/276/350/256/241/346/226/271/346/241/210.md} +13 -20
- package/template-vp-monorepo-react-nestjs/.spaces/{server/06./345/205/254/345/205/261/351/230/237/345/210/227/346/216/245/345/205/245/346/226/271/346/241/210//344/270/212/344/274/240/346/270/205/347/220/206.md → 02./344/270/212/344/274/240/344/270/216/346/226/207/344/273/266//344/270/212/344/274/240/346/270/205/347/220/206//350/256/276/350/256/241/346/226/271/346/241/210.md} +13 -8
- package/template-vp-monorepo-react-nestjs/.spaces/{server/04.upload.md → 02./344/270/212/344/274/240/344/270/216/346/226/207/344/273/266//345/210/206/347/211/207/344/270/212/344/274/240//345/256/236/346/226/275/346/225/231/347/250/213.md} +21 -18
- package/template-vp-monorepo-react-nestjs/.spaces/{server/06./345/205/254/345/205/261/351/230/237/345/210/227/346/216/245/345/205/245/346/226/271/346/241/210/README.md → 03./344/273/273/345/212/241/351/230/237/345/210/227//345/205/254/345/205/261/351/230/237/345/210/227//350/256/276/350/256/241/346/226/271/346/241/210.md} +13 -6
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/accounts-mobile-320.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/accounts-mobile-360.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/accounts-mobile-390.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/companies-desktop-data.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/companies-desktop-empty.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/companies-mobile-320.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/companies-mobile-360.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/companies-mobile-390.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/company-create-dialog.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/company-projects-1440.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/company-projects-390.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/login-1440.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/login-390.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/project-home-1440.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/project-home-390.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/register-1440.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/register-390.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/workspaces-1440.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/workspaces-390.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/workspaces-empty.png +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273//345/267/245/345/205/267/fixtures.mjs +132 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273//345/267/245/345/205/267/visual-check.mjs +274 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273//346/265/213/350/257/225/350/257/201/346/215/256/visual-report.json +104 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273//351/252/214/350/257/201/350/257/264/346/230/216.md +25 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//345/233/275/351/231/205/345/214/226//344/272/244/344/273/230/350/256/260/345/275/225.md +12 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//345/233/275/351/231/205/345/214/226//346/265/213/350/257/225/346/212/245/345/221/212.md +19 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//345/233/275/351/231/205/345/214/226//350/256/276/350/256/241/346/226/271/346/241/210.md +18 -0
- package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//345/233/275/351/231/205/345/214/226//351/234/200/346/261/202/346/226/207/346/241/243.md +24 -0
- package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//345/271/263/345/217/260/346/223/215/344/275/234/346/211/213/345/206/214.md +397 -0
- package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273//345/244/207/344/273/275/backup.dump +0 -0
- package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273//345/244/207/344/273/275/export-dump.ps1 +34 -0
- package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273//345/244/207/344/273/275/restore-dump.ps1 +73 -0
- package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273//346/223/215/344/275/234/346/214/207/345/215/227.md +227 -0
- package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273//351/234/200/346/261/202/346/226/207/346/241/243.md +31 -0
- package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/274/232/350/257/235/347/256/241/347/220/206//346/212/200/346/234/257/345/245/221/347/272/246.md +93 -0
- package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/274/232/350/257/235/347/256/241/347/220/206//351/234/200/346/261/202/346/226/207/346/241/243.md +87 -0
- package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201/PRD.md +55 -0
- package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201//346/212/200/346/234/257/345/245/221/347/272/246.md +92 -0
- package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201//346/265/213/350/257/225/346/212/245/345/221/212.md +38 -0
- package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201//350/201/224/350/260/203/350/256/260/345/275/225.md +26 -0
- package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201//350/256/276/350/256/241/346/226/271/346/241/210.md +53 -0
- package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201//351/234/200/346/261/202/346/226/207/346/241/243.md +63 -0
- package/template-vp-monorepo-react-nestjs/.spaces/07.API/344/270/216/351/224/231/350/257/257//346/212/200/346/234/257/345/245/221/347/272/246.md +95 -0
- package/template-vp-monorepo-react-nestjs/.spaces/README.md +85 -0
- package/template-vp-monorepo-react-nestjs/.spaces//346/226/207/346/241/243/350/247/204/350/214/203.md +97 -0
- package/template-vp-monorepo-react-nestjs/AGENTS.md +12 -0
- package/template-vp-monorepo-react-nestjs/README.md +3 -27
- package/template-vp-monorepo-react-nestjs/apps/server/drizzle/0002_enterprise_access.sql +182 -0
- package/template-vp-monorepo-react-nestjs/apps/server/drizzle/0003_cute_killmonger.sql +357 -0
- package/template-vp-monorepo-react-nestjs/apps/server/drizzle/0004_company-member-invitations.sql +25 -0
- package/template-vp-monorepo-react-nestjs/apps/server/drizzle/0005_menu_svg_icons.sql +54 -0
- package/template-vp-monorepo-react-nestjs/apps/server/drizzle/meta/0002_snapshot.json +1801 -0
- package/template-vp-monorepo-react-nestjs/apps/server/drizzle/meta/0003_snapshot.json +3511 -0
- package/template-vp-monorepo-react-nestjs/apps/server/drizzle/meta/0004_snapshot.json +3713 -0
- package/template-vp-monorepo-react-nestjs/apps/server/drizzle/meta/_journal.json +29 -1
- package/template-vp-monorepo-react-nestjs/apps/server/drizzle/rollback/0003_organization_backfill.sql +32 -0
- package/template-vp-monorepo-react-nestjs/apps/server/package.json +6 -4
- package/template-vp-monorepo-react-nestjs/apps/server/src/access-init.ts +45 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/app.controller.ts +3 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/app.module.ts +28 -5
- package/template-vp-monorepo-react-nestjs/apps/server/src/app.service.ts +3 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/adapters/fastify.adapter.ts +11 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/constants/session.constants.ts +9 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/access-policy.decorator.ts +18 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/current-auth.decorator.ts +4 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/public.decorator.ts +3 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/exceptions/app.exception.ts +9 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/filters/global-exception.filter.ts +38 -5
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/security/password-security-event.ts +98 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/config/app.config.ts +3 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/config/database.config.ts +3 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/config/llm.config.ts +3 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/config/queue.config.ts +14 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/config/redis.config.ts +3 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/config/session.config.ts +7 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/config/storage.config.ts +9 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/database/access.schema.ts +394 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/database/db.module.ts +3 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/database/organization.schema.ts +453 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/database/schema.ts +6 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/main.ts +4 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access-http.ts +29 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.errors.ts +130 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.guard.ts +63 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.module.ts +27 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.service.ts +441 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.store.ts +68 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.validation.ts +44 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/maintenance/permissions-cleanup.controller.ts +27 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/maintenance/permissions-cleanup.service.ts +260 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/maintenance/permissions-cleanup.validation.ts +7 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/roles/roles.controller.ts +80 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/roles/roles.service.ts +249 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/roles/roles.validation.ts +24 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/seed/access-seed.service.ts +183 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/workspaces/workspaces.controller.ts +28 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/workspaces/workspaces.service.ts +94 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/workspaces/workspaces.validation.ts +5 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/audit/audit.controller.ts +26 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/audit/audit.module.ts +11 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/audit/audit.service.ts +74 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/audit/audit.validation.ts +11 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.controller.ts +25 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.errors.ts +10 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.module.ts +1 -1
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.repository.ts +60 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.service.ts +69 -11
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/dto/register.dto.ts +1 -1
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/guards/session-auth.guard.ts +8 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/password/change-password.dto.ts +17 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/password.service.ts +6 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session-store.service.ts +46 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session-token.service.ts +12 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session.script.ts +7 -1
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/companies/companies.controller.ts +105 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/companies/companies.module.ts +12 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/companies/companies.service.ts +523 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/accounts/accounts.controller.ts +72 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/accounts/accounts.service.ts +154 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/accounts/accounts.validation.ts +8 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/accounts/password-reset/password-reset.service.ts +81 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/accounts/password-reset/reset-password.validation.ts +13 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/administrators/administrators.service.ts +116 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/administrators/administrators.validation.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/invitations/company-member-invitations.controller.ts +69 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/invitations/member-invitation-acceptance.controller.ts +23 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/invitations/member-invitations.service.ts +344 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/invitations/member-invitations.validation.ts +23 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/members.controller.ts +88 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/members.module.ts +31 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/members.service.ts +573 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/members.validation.ts +19 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/menus/menus.controller.ts +56 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/menus/menus.module.ts +11 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/menus/menus.service.ts +230 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/menus/menus.validation.ts +30 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/candidates/global-account/global-account-candidates.controller.ts +35 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/candidates/global-account/global-account-candidates.service.ts +109 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/candidates/member-candidates.controller.ts +60 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/candidates/member-candidates.service.ts +939 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/initialization/project-organization-initialization.service.ts +189 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/organization.module.ts +34 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/organization.store.ts +150 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/organization.validation.ts +23 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/positions/positions.controller.ts +160 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/positions/positions.service.ts +636 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/templates/organization-templates.controller.ts +77 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/templates/organization-templates.service.ts +501 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/templates/organization-templates.store.ts +163 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/units/organization-units.controller.ts +187 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/units/organization-units.service.ts +947 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/projects/projects.controller.ts +94 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/projects/projects.module.ts +13 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/projects/projects.service.ts +369 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/task-queue/queue-worker.bootstrap.ts +3 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/task-queue/task-queue.contracts.ts +4 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/task-queue/task-queue.module.ts +5 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/task-queue/task-queue.processor.ts +13 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/task-queue/task-queue.service.ts +9 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/db/db.controller.ts +9 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/db/db.service.ts +9 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/redis/redis.controller.ts +9 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/redis/redis.service.ts +18 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/dto/upload-params.dto.ts +1 -1
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/storage/exact-size.transform.ts +14 -3
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/storage/minio-storage.adapter.ts +37 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/storage/storage.port.ts +21 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/upload.constants.ts +9 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/upload.controller.ts +25 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/upload.reponsitory.ts +27 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/upload.service.ts +78 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/utils/object-key.ts +4 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/utils/server-address.ts +6 -0
- package/template-vp-monorepo-react-nestjs/apps/server/test/access/access-policy.spec.ts +95 -0
- package/template-vp-monorepo-react-nestjs/apps/server/test/access/access.integration.spec.ts +2250 -0
- package/template-vp-monorepo-react-nestjs/apps/server/test/access/member-onboarding.validation.spec.ts +78 -0
- package/template-vp-monorepo-react-nestjs/apps/server/test/auth/password-operations.spec.ts +433 -0
- package/template-vp-monorepo-react-nestjs/apps/server/test/auth/password.integration.spec.ts +300 -0
- package/template-vp-monorepo-react-nestjs/apps/server/test/error-catalog.spec.ts +6 -1
- package/template-vp-monorepo-react-nestjs/apps/server/test/menus.validation.spec.ts +28 -0
- package/template-vp-monorepo-react-nestjs/apps/server/test/organization/organization-domain.spec.ts +260 -0
- package/template-vp-monorepo-react-nestjs/apps/server/tsconfig.scripts.json +5 -0
- package/template-vp-monorepo-react-nestjs/apps/web/.agents/rules//347/273/204/344/273/266/345/244/215/347/224/250.md +7 -0
- package/template-vp-monorepo-react-nestjs/apps/web/.agents/rules//350/241/250/345/215/225/345/233/236/345/241/253.md +4 -0
- package/template-vp-monorepo-react-nestjs/apps/web/AGENTS.md +17 -8
- package/template-vp-monorepo-react-nestjs/apps/web/README.MD +36 -8
- package/template-vp-monorepo-react-nestjs/apps/web/index.html +2 -2
- package/template-vp-monorepo-react-nestjs/apps/web/package.json +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/App.tsx +19 -8
- package/template-vp-monorepo-react-nestjs/apps/web/src/api/auth.ts +14 -1
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/accounts.svg +4 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/audit-log.svg +4 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/companies.svg +5 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/dashboard.svg +6 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/home.svg +4 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/members.svg +4 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/menu-item.svg +4 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/menus.svg +6 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/organization-template.svg +4 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/organization.svg +6 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/positions.svg +4 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/profile.svg +5 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/projects.svg +4 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/roles.svg +4 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Brand/Brand.module.css +125 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Brand/Brand.tsx +56 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/DraftProTable/DraftProTable.tsx +11 -5
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Icon/SvgAsset/IconSelector.tsx +38 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Icon/SvgAsset/SvgAssetIcon.tsx +14 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Icon/SvgAsset/SvgAssetRegistry.ts +32 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Icon/SvgAsset/index.ts +10 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Icon/svg-icon/SvgIcon.tsx +0 -2
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Loading/PageLoading.tsx +5 -1
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/LocaleSwitch/LocaleSwitch.tsx +52 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/PasswordActions/ChangePasswordDialog.tsx +90 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/PasswordActions/PasswordFields.module.css +12 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/PasswordActions/PasswordFields.tsx +54 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/PasswordActions/ResetAccountPasswordDialog.tsx +100 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/PasswordActions/change-password-session.ts +13 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/RouteTransition/RouteTransition.css +60 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/RouteTransition/RouteTransition.tsx +44 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/BasicTableSelector/BasicTableSelector.tsx +218 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/BasicTableSelector/BasicTableSelectorSelection.ts +91 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/BasicTableSelector/BasicTableSelectorTypes.ts +60 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/BasicTableSelector/README.md +110 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/BasicTableSelector/index.ts +7 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/GlobalAccountSelect/GlobalAccountSelect.tsx +211 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/GlobalAccountSelect/GlobalAccountSelectTypes.ts +75 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/GlobalAccountSelect/README.md +35 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/GlobalAccountSelect/index.ts +9 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/OrganizationMemberBrowser.tsx +146 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/OrganizationMemberCandidateColumns.tsx +137 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/OrganizationMemberFilterPanel.tsx +209 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/OrganizationMemberSelector.tsx +196 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/OrganizationMemberSelectorTypes.ts +103 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/README.md +8 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/index.ts +13 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/README.md +13 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/index.ts +30 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/config/theme.ts +41 -9
- package/template-vp-monorepo-react-nestjs/apps/web/src/hooks/useLatestDialogRequest.ts +71 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/i18n/config.ts +40 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/i18n/index.ts +10 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/i18n/instance.ts +36 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/i18n/ui-locale.ts +30 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/{BasicLayout.tsx → BasicLayout/index.tsx} +42 -35
- package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/WorkspaceLayout/components/WorkspaceNavigationBoundary.tsx +50 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/WorkspaceLayout/index.tsx +196 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/WorkspaceLayout/workspace-landing.css +119 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/WorkspaceLayout/workspace-surfaces.css +110 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/WorkspaceLayout/workspace.css +223 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/locales/en_US.json +639 -1
- package/template-vp-monorepo-react-nestjs/apps/web/src/locales/zh_CN.json +621 -1
- package/template-vp-monorepo-react-nestjs/apps/web/src/main.tsx +8 -2
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/api.ts +226 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/audit.tsx +169 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/AdministratorDialog.tsx +128 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/CleanupDialog.tsx +140 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/CompanyHierarchyDialog.tsx +244 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/EntityFormDialog.tsx +285 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/EntitySelectors/index.ts +6 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/EntitySelectors/selector-requests.ts +59 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberAffiliations/MemberOrganizationsDialog.tsx +188 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberAffiliations/MemberPositionsDialog.tsx +116 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberAffiliations/affiliation-loaders.ts +18 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberAffiliations/index.ts +5 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/AddProjectMemberDialog.tsx +75 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/CompanyMemberInvitation/CompanyMemberInvitationDialog.tsx +246 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/CompanyMemberInvitation/InvitationRecordsTable.tsx +152 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/CompanyMemberInvitation/invitation-link.ts +9 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/MemberOnboardingActions.tsx +79 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/RegisterCompanyMember/RegisterCompanyMemberDialog.module.css +12 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/RegisterCompanyMember/RegisterCompanyMemberDialog.tsx +122 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberRolesDialog.tsx +80 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberTable/MemberTableColumns.tsx +234 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberTable/index.ts +2 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberTable/member-candidate-cache.ts +12 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MenuFormDialog.tsx +251 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/RoleFormDialog.tsx +73 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/RolePermissionsDialog.tsx +185 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/entities.tsx +268 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/home.tsx +67 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/members.tsx +310 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/menus/api.ts +74 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/menus/index.tsx +325 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/profile.tsx +160 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/roles.tsx +173 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/use-access.ts +35 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/error/404.tsx +20 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/error/error.tsx +42 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/i18n/index.tsx +20 -38
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/components/ProjectFormDialog.tsx +46 -41
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/config/columns.tsx +20 -15
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/config/index.ts +32 -22
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/draft/components/DraftProjectFormDialog.tsx +41 -34
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/draft/config/columns.tsx +27 -20
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/draft/config/projects.ts +21 -13
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/draft/index.tsx +47 -27
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/index.tsx +51 -36
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/home/index.tsx +9 -6
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/login/api.ts +3 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/login/index.tsx +62 -82
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/login/login-form.css +199 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/login/login.css +146 -124
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/member-invitations/accept.css +47 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/member-invitations/accept.tsx +143 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/member-invitations/api.ts +20 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/api.ts +91 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/MoveOrganizationUnitDialog.tsx +82 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/OrganizationMemberColumns.tsx +87 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/OrganizationMemberHeader.tsx +102 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/OrganizationTreeModel.tsx +59 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/OrganizationTreePanel.tsx +88 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/index.ts +11 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/organization-loaders.ts +47 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/organization-member-filter-loaders.ts +187 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationMembersDialog.tsx +207 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationUnitDialog.tsx +110 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/index.tsx +258 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization-templates/api.ts +53 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization-templates/components/OrganizationTemplateDialog/TemplateDefinitionTabs.tsx +189 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization-templates/components/OrganizationTemplateDialog/index.tsx +135 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization-templates/components/OrganizationTemplateDialog/types.ts +25 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization-templates/index.tsx +201 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/positions/api.ts +81 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/positions/components/PositionFormDialog.tsx +86 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/positions/components/PositionMembersDialog.tsx +102 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/positions/index.tsx +198 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/positions/loaders.ts +35 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/register/api.ts +14 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/register/index.tsx +157 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/workspaces/api.ts +32 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/workspaces/index.tsx +146 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/pages/workspaces/state.ts +24 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/AGENTS.MD +6 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/index.tsx +2 -46
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/lazy-load/index.tsx +26 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/README.md +23 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/auth.ts +6 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/index.ts +4 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/workspace/access.ts +23 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/workspace/data.ts +55 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/workspace/entry.ts +52 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/access/page.tsx +20 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/auth.tsx +17 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/company.tsx +30 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/entry.tsx +20 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/examples.tsx +23 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/fallback.tsx +13 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/index.tsx +32 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/platform.tsx +27 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/project.tsx +28 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/page-registry.tsx +94 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/styles/dream.css +34 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/styles/index.css +6 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/types/auto-imports.d.ts +26 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/utils/organization-assignment.ts +66 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/utils/request/core/index.ts +48 -13
- package/template-vp-monorepo-react-nestjs/apps/web/src/utils/request/core/utils.ts +5 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/utils/request/index.ts +7 -2
- package/template-vp-monorepo-react-nestjs/apps/web/src/utils/request/workspace.ts +82 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/utils/safe-next.ts +36 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/utils/storage/cookie.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web/src/utils/storage/session.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/i18n-locale.spec.ts +22 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/icon-selector.spec.tsx +23 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/latest-dialog-request.spec.ts +89 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/member-invitation-navigation.spec.ts +34 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/organization-assignment.spec.ts +137 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/password-actions.spec.ts +40 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/password-reset-action.spec.ts +64 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/request.spec.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/router/access.spec.ts +136 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/router/config.ts +140 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/router/entry.spec.ts +179 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/router/workspace-data.spec.ts +112 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/selector/global-account-select.spec.ts +311 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/selector/organization-member-selector.spec.ts +454 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/selector/selector-selection.spec.ts +132 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/storage.spec.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/tsconfig.json +2 -2
- package/template-vp-monorepo-react-nestjs/apps/web/test/workspace-navigation-boundary.spec.tsx +169 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/workspace-navigation.spec.ts +105 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/workspace-requests.spec.ts +174 -0
- package/template-vp-monorepo-react-nestjs/apps/web/test/workspaces-password-entry.spec.tsx +71 -0
- package/template-vp-monorepo-react-nestjs/apps/web/vite.config.ts +84 -35
- package/template-vp-monorepo-react-nestjs/apps/web-vue/package.json +2 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/api/index.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/hooks/chart/useEcharts.ts +13 -1
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/layout/default/header/index.vue +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/layout/default/index.vue +6 -2
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/guard/index.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/guard/permissionGuard.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/index.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/store/index.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/store/modules/user.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/types/auto-import.d.ts +2 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/core/index.ts +30 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/core/utils.ts +5 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/index.ts +2 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/views/example/echart/config.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/tsconfig.tsbuildinfo +1 -1
- package/template-vp-monorepo-react-nestjs/package.json +1 -8
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/command.ts +22 -2
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/config.ts +1 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/files.ts +1 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/load-config.ts +8 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/report.ts +2 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/scanner.ts +11 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/sync.ts +12 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/command.test.ts +1 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/temporary-directory.ts +5 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/core/src/format.ts +1 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/core/src/i18n.ts +14 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/core/src/storage.ts +8 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/core/src/store.ts +9 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/react/src/index.tsx +5 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/react/src/use-store.ts +3 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/vue/src/index.ts +6 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/vue/src/use-store.ts +3 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/package.json +5 -1
- package/template-vp-monorepo-react-nestjs/packages/shared/src/index.ts +2 -13
- package/template-vp-monorepo-react-nestjs/packages/shared/src/types/access-maintenance.ts +68 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/types/access-menus.ts +94 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/types/access-resources.ts +168 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/types/access.ts +71 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/types/auth.ts +23 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/types/index.ts +9 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/types/organization/models.ts +361 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/access-catalog.ts +304 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/access-scope.ts +97 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/account.ts +1 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/index.ts +65 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/organization/contracts.ts +237 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/record.ts +10 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/session-terminal.ts +1 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/test/access.spec.ts +194 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/test/organization.spec.ts +168 -0
- package/template-vp-monorepo-react-nestjs/pnpm-workspace.yaml +103 -69
- package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/browser.mjs +696 -0
- package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/http-support.mjs +105 -0
- package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/http.mjs +1091 -0
- package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/legacy-http.mjs +140 -0
- package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/legacy.mjs +196 -0
- package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/runtime.mjs +110 -0
- package/template-vp-monorepo-react-nestjs/scripts/with-enterprise-test-env.mjs +80 -0
- package/template-vp-monorepo-react-nestjs/src/types/auto-imports.d.ts +60 -0
- package/template-vp-react/.vscode/settings.json +8 -1
- package/template-vp-react/package.json +10 -10
- package/template-vp-react/src/types/auto-imports.d.ts +2 -0
- package/template-vp-vue-eslint-vapor/package.json +20 -20
- package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//351/234/200/346/261/202/346/226/207/346/241/243.md +0 -177
- package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/BasicLayout.module.css +0 -17
- package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/.gitkeep +0 -0
- package/template-vp-react/.agents/rules/SVG/344/275/277/347/224/250.md +0 -8
- package/template-vp-react/AGENTS.md +0 -11
- /package/template-vp-monorepo-react-nestjs/apps/web/src/assets/{hero.png → image/hero.png} +0 -0
- /package/template-vp-monorepo-react-nestjs/apps/web/src/assets/{react.svg → svg/react.svg} +0 -0
- /package/template-vp-monorepo-react-nestjs/apps/web/src/assets/{vite.svg → svg/vite.svg} +0 -0
|
@@ -1,4 +1,642 @@
|
|
|
1
1
|
{
|
|
2
2
|
"保存": "Save",
|
|
3
|
-
"
|
|
3
|
+
"ProTable 示例": "ProTable Examples",
|
|
4
|
+
"一个账号,访问你加入的企业和项目。": "Use one account to access the companies and projects you have joined.",
|
|
5
|
+
"万物": "Wanwu",
|
|
6
|
+
"万物 · 工作空间": "Wanwu · Workspaces",
|
|
7
|
+
"万物工作空间": "Wanwu Workspaces",
|
|
8
|
+
"万物首页": "Wanwu Home",
|
|
9
|
+
"业务模块": "Business Modules",
|
|
10
|
+
"两次输入的密码不一致": "The passwords do not match",
|
|
11
|
+
"企业": "Company",
|
|
12
|
+
"企业与项目工作空间": "Company and Project Workspaces",
|
|
13
|
+
"企业协作工作空间": "Company Collaboration Workspace",
|
|
14
|
+
"企业空间": "Company Workspace",
|
|
15
|
+
"你好,{name}": "Hello, {name}",
|
|
16
|
+
"你好,{name}。进入企业或项目,继续你的工作。": "Hello, {name}. Open a company or project to continue your work.",
|
|
17
|
+
"你的业务工作空间。": "Your business workspace.",
|
|
18
|
+
"使用 ProTable 管理项目,体验搜索筛选、分页、新增编辑和批量操作。": "Manage projects with ProTable, including search, filters, pagination, editing, and bulk actions.",
|
|
19
|
+
"切换到 {locale}": "Switch to {locale}",
|
|
20
|
+
"切换空间": "Switch Workspace",
|
|
21
|
+
"切换语言": "Switch Language",
|
|
22
|
+
"创建账号": "Create Account",
|
|
23
|
+
"刷新工作空间": "Refresh Workspaces",
|
|
24
|
+
"加入万物": "Join Wanwu",
|
|
25
|
+
"国际化示例": "Internationalization Example",
|
|
26
|
+
"基础": "Basics",
|
|
27
|
+
"姓名": "Name",
|
|
28
|
+
"密码": "Password",
|
|
29
|
+
"密码不能超过 128 位": "Password cannot exceed 128 characters",
|
|
30
|
+
"密码长度为 8–16 位": "Password must be 8–16 characters",
|
|
31
|
+
"工作台": "Dashboard",
|
|
32
|
+
"工作空间 - 万物": "Workspaces - Wanwu",
|
|
33
|
+
"已有账号?": "Already have an account?",
|
|
34
|
+
"平台": "Platform",
|
|
35
|
+
"平台空间": "Platform Workspace",
|
|
36
|
+
"应用级语言": "Application Language",
|
|
37
|
+
"当前语言:{locale}": "Current language: {locale}",
|
|
38
|
+
"成员": "Member",
|
|
39
|
+
"打开 ProTable 示例": "Open ProTable Examples",
|
|
40
|
+
"搜索企业或项目": "Search companies or projects",
|
|
41
|
+
"搜索工作空间": "Search workspaces",
|
|
42
|
+
"暂无访问权限": "Access Denied",
|
|
43
|
+
"暂时无法加载": "Unable to Load",
|
|
44
|
+
"欢迎回到万物": "Welcome Back to Wanwu",
|
|
45
|
+
"没有匹配的工作空间,请调整搜索条件。": "No matching workspaces. Adjust your search.",
|
|
46
|
+
"注册 - 万物": "Register - Wanwu",
|
|
47
|
+
"注册失败,请稍后重试": "Registration failed. Try again later.",
|
|
48
|
+
"注册账号": "Register Account",
|
|
49
|
+
"登录": "Sign In",
|
|
50
|
+
"登录 - 万物": "Sign In - Wanwu",
|
|
51
|
+
"登录后,选择你的工作空间。": "Sign in and choose your workspace.",
|
|
52
|
+
"登录失败,请稍后重试": "Sign-in failed. Try again later.",
|
|
53
|
+
"登录账号,进入你的工作空间。": "Sign in to access your workspace.",
|
|
54
|
+
"确认密码": "Confirm Password",
|
|
55
|
+
"管理企业、账号与平台功能": "Manage companies, accounts, and platform features",
|
|
56
|
+
"管理员": "Administrator",
|
|
57
|
+
"翻译结果": "Translation Result",
|
|
58
|
+
"草稿": "Draft",
|
|
59
|
+
"语言偏好会持久化,并同步 Ant Design、日期和整个前端界面。": "Your language preference is saved and applied to Ant Design, dates, and the entire frontend.",
|
|
60
|
+
"请再次输入密码": "Enter the password again",
|
|
61
|
+
"请检查地址,或返回工作空间重新选择。": "Check the address, or return to Workspaces and choose again.",
|
|
62
|
+
"请输入 2–100 字姓名": "Enter a name of 2–100 characters",
|
|
63
|
+
"请输入 4–32 位字母、数字或下划线": "Enter 4–32 letters, numbers, or underscores",
|
|
64
|
+
"请输入密码": "Enter your password",
|
|
65
|
+
"请输入账号": "Enter your account",
|
|
66
|
+
"请重试;如果问题持续,请联系管理员。": "Try again. If the problem persists, contact an administrator.",
|
|
67
|
+
"账号": "Account",
|
|
68
|
+
"账号仅支持字母、数字和下划线": "The account may contain only letters, numbers, and underscores",
|
|
69
|
+
"账号登录": "Account Sign-in",
|
|
70
|
+
"账号长度为 4–32 位": "The account must be 4–32 characters",
|
|
71
|
+
"账号:{account}": "Account: {account}",
|
|
72
|
+
"返回工作空间": "Back to Workspaces",
|
|
73
|
+
"返回登录": "Back to Sign In",
|
|
74
|
+
"还没有账号?": "Don't have an account?",
|
|
75
|
+
"进入空间": "Open Workspace",
|
|
76
|
+
"退出": "Sign Out",
|
|
77
|
+
"退出失败,请重试": "Sign-out failed. Try again.",
|
|
78
|
+
"退出登录": "Sign Out",
|
|
79
|
+
"选择工作空间": "Choose a Workspace",
|
|
80
|
+
"重新加载": "Reload",
|
|
81
|
+
"页面不存在": "Page Not Found",
|
|
82
|
+
"页面或资源不存在": "The page or resource does not exist",
|
|
83
|
+
"项目": "Project",
|
|
84
|
+
"项目空间": "Project Workspace",
|
|
85
|
+
"项目管理": "Project Management",
|
|
86
|
+
" · 当前无效": " · Currently invalid",
|
|
87
|
+
" 请刷新数据后检查最新内容再保存。": " Refresh the data, review the latest content, and save again.",
|
|
88
|
+
"2–32 位字母、数字、下划线或短横线。": "Use 2–32 letters, numbers, underscores, or hyphens.",
|
|
89
|
+
"{action}{type}?": "{action} {type}?",
|
|
90
|
+
"{action}权限 · {name}": "{action} Permissions · {name}",
|
|
91
|
+
"{count} 个菜单": "{count} menus",
|
|
92
|
+
"{count} 个角色": "{count} roles",
|
|
93
|
+
"{type}名称": "{type} Name",
|
|
94
|
+
"{type}工作台": "{type} Dashboard",
|
|
95
|
+
"{type}编码": "{type} Code",
|
|
96
|
+
"{type}说明": "{type} Description",
|
|
97
|
+
"。": ".",
|
|
98
|
+
"。已有节点不能更换绑定功能。": ". The bound feature cannot be changed for an existing node.",
|
|
99
|
+
"不选择被替换者表示补充管理员。更换时仅撤销旧管理员身份,保留其成员关系及其他角色;此操作不会启用已停用的工作空间。": "Leave the administrator to replace empty to add another administrator. Replacing one only revokes the previous administrator role and preserves their membership and other roles. This action does not enable a disabled workspace.",
|
|
100
|
+
"不选择,放在根目录": "Leave empty to place at the root",
|
|
101
|
+
"不选择,补充管理员": "Leave empty to add an administrator",
|
|
102
|
+
"中": "Medium",
|
|
103
|
+
"仅处理功能目录明确标记为废弃的权限。执行时会重新检查当前引用和所有在用服务版本的发布条件。": "Only permissions explicitly marked as deprecated in the feature catalog are processed. Current references and release requirements for all active service versions are rechecked before execution.",
|
|
104
|
+
"今天": "Today",
|
|
105
|
+
"仍有子节点或角色授权引用时不能删除。": "A node cannot be deleted while it has child nodes or role permission references.",
|
|
106
|
+
"企业名称": "Company Name",
|
|
107
|
+
"企业工作台": "Company Dashboard",
|
|
108
|
+
"企业成员": "Company Members",
|
|
109
|
+
"企业操作日志": "Company Audit Log",
|
|
110
|
+
"企业管理": "Company Management",
|
|
111
|
+
"企业管理员": "Company Administrator",
|
|
112
|
+
"企业菜单": "Company Menu",
|
|
113
|
+
"企业角色": "Company Roles",
|
|
114
|
+
"企业资料": "Company Profile",
|
|
115
|
+
"优先级": "Priority",
|
|
116
|
+
"低": "Low",
|
|
117
|
+
"你没有访问此页面的权限,请联系管理员授权。": "You do not have permission to access this page. Contact an administrator for access.",
|
|
118
|
+
"例如:客户服务工作台": "For example: Customer Service Dashboard",
|
|
119
|
+
"保存失败,请检查浏览器存储空间后重试。": "Save failed. Check available browser storage and try again.",
|
|
120
|
+
"保存权限": "Save Permissions",
|
|
121
|
+
"保存管理员": "Save Administrator",
|
|
122
|
+
"保存草稿": "Save Draft",
|
|
123
|
+
"保存菜单": "Save Menu",
|
|
124
|
+
"保存角色": "Save Role",
|
|
125
|
+
"保存资料": "Save Profile",
|
|
126
|
+
"保存项目": "Save Project",
|
|
127
|
+
"保护": "Protected",
|
|
128
|
+
"信息未填完也可以保存草稿,提交时需补齐必填项。": "You can save an incomplete draft, but all required fields must be completed before submission.",
|
|
129
|
+
"修改企业资料": "Update Company Profile",
|
|
130
|
+
"修改字段": "Changed Fields",
|
|
131
|
+
"修改菜单": "Update Menu",
|
|
132
|
+
"修改角色": "Update Role",
|
|
133
|
+
"修改角色权限": "Update Role Permissions",
|
|
134
|
+
"修改项目资料": "Update Project Profile",
|
|
135
|
+
"停用": "Disable",
|
|
136
|
+
"停用{type}?": "Disable {type}?",
|
|
137
|
+
"停用会阻断节点及下级功能,管理员也受此限制。": "Disabling blocks this node and its child features. Administrators are also subject to this restriction.",
|
|
138
|
+
"停用保留成员关系和角色,阻断此身份提供的访问。": "Disabling preserves membership and roles but blocks access provided by this identity.",
|
|
139
|
+
"停用后阻断访问,保留成员和角色。": "Disabling blocks access while preserving members and roles.",
|
|
140
|
+
"先选择所属页面": "Choose the parent page first",
|
|
141
|
+
"全局账号": "Global Accounts",
|
|
142
|
+
"全选可授予权限": "Select All Grantable Permissions",
|
|
143
|
+
"全部状态": "All Statuses",
|
|
144
|
+
"全部负责人": "All Owners",
|
|
145
|
+
"共 {count} 个项目": "{count} projects",
|
|
146
|
+
"共 {count} 条": "{count} items",
|
|
147
|
+
"关闭": "Close",
|
|
148
|
+
"内置角色": "Built-in Role",
|
|
149
|
+
"内置角色由系统维护,不能人工编辑。": "Built-in roles are maintained by the system and cannot be edited manually.",
|
|
150
|
+
"分配平台角色": "Assign Platform Roles",
|
|
151
|
+
"分配成员角色": "Assign Member Roles",
|
|
152
|
+
"分配角色": "Assign Roles",
|
|
153
|
+
"分配角色 · {name}": "Assign Roles · {name}",
|
|
154
|
+
"创建后,通过“配置权限”选择此角色可以使用的功能。": "After creating the role, use Configure Permissions to choose the features it can access.",
|
|
155
|
+
"创建时间": "Created At",
|
|
156
|
+
"创建自定义角色": "Create Custom Role",
|
|
157
|
+
"创建角色": "Create Role",
|
|
158
|
+
"创建项目": "Create Project",
|
|
159
|
+
"删除": "Delete",
|
|
160
|
+
"删除后将从当前演示列表中移除。": "The item will be removed from the current demo list.",
|
|
161
|
+
"删除草稿": "Delete Draft",
|
|
162
|
+
"删除菜单": "Delete Menu",
|
|
163
|
+
"删除菜单节点?": "Delete menu node?",
|
|
164
|
+
"删除角色": "Delete Role",
|
|
165
|
+
"删除角色?": "Delete role?",
|
|
166
|
+
"删除选中的 {count} 个{type}?": "Delete the selected {count} {type} items?",
|
|
167
|
+
"删除选中的 {count} 个项目?": "Delete the selected {count} projects?",
|
|
168
|
+
"删除项目": "Delete Project",
|
|
169
|
+
"刷新": "Refresh",
|
|
170
|
+
"功能状态": "Feature Status",
|
|
171
|
+
"加入时间": "Joined At",
|
|
172
|
+
"加载选择数据失败,请刷新重试": "Failed to load selection data. Refresh and try again.",
|
|
173
|
+
"原状态": "Previous Status",
|
|
174
|
+
"取消": "Cancel",
|
|
175
|
+
"变更企业状态": "Change Company Status",
|
|
176
|
+
"变更成员状态": "Change Member Status",
|
|
177
|
+
"变更摘要": "Change Summary",
|
|
178
|
+
"变更账号状态": "Change Account Status",
|
|
179
|
+
"变更项目状态": "Change Project Status",
|
|
180
|
+
"另有 {count} 项历史权限引用将保留,须经平台维护流程清理。": "{count} historical permission references will be retained and must be removed through the platform maintenance process.",
|
|
181
|
+
"只能删除未分配给任何成员的自定义角色。": "Only custom roles that are not assigned to any member can be deleted.",
|
|
182
|
+
"只能新增你有权授予的权限。目录支持全选和半选;创建项目等管理员专属能力不在自定义角色树中。": "You can add only permissions you are allowed to grant. Directories support fully and partially selected states. Administrator-only capabilities, such as creating projects, are not included in the custom role tree.",
|
|
183
|
+
"可用功能": "Available Features",
|
|
184
|
+
"同时清理该成员的企业角色及下属项目关系和角色。重新加入不会恢复旧授权。": "This also removes the member's company roles and memberships and roles in child projects. Rejoining does not restore previous permissions.",
|
|
185
|
+
"名称": "Name",
|
|
186
|
+
"名称或功能标识": "Name or Feature Key",
|
|
187
|
+
"启用": "Enable",
|
|
188
|
+
"启用{type}?": "Enable {type}?",
|
|
189
|
+
"图标": "Icon",
|
|
190
|
+
"搜索并选择图标": "Search and choose an icon",
|
|
191
|
+
"多个角色的权限合并生效": "Permissions from multiple roles are combined",
|
|
192
|
+
"完成进度": "Progress",
|
|
193
|
+
"完成进度(%)": "Progress (%)",
|
|
194
|
+
"完整账号": "Full Account",
|
|
195
|
+
"对象": "Target",
|
|
196
|
+
"导航": "Navigation",
|
|
197
|
+
"工作空间": "Workspace",
|
|
198
|
+
"已保存": "Saved",
|
|
199
|
+
"已分配人数": "Assigned Members",
|
|
200
|
+
"已删除 {count} 个{type}": "Deleted {count} {type} items",
|
|
201
|
+
"已删除 {count} 个项目": "Deleted {count} projects",
|
|
202
|
+
"已完成": "Completed",
|
|
203
|
+
"已暂停": "Paused",
|
|
204
|
+
"已核对权限、菜单和角色授权引用的清理范围": "I have reviewed the cleanup scope for permissions, menus, and role permission references",
|
|
205
|
+
"已绑定:": "Bound: ",
|
|
206
|
+
"已选择 {count} 项": "{count} selected",
|
|
207
|
+
"平台工作台": "Platform Dashboard",
|
|
208
|
+
"平台操作日志": "Platform Audit Log",
|
|
209
|
+
"平台管理员": "Platform Administrator",
|
|
210
|
+
"平台菜单": "Platform Menu",
|
|
211
|
+
"平台角色": "Platform Roles",
|
|
212
|
+
"废弃权限清理预览": "Deprecated Permission Cleanup Preview",
|
|
213
|
+
"开通企业": "Create Company",
|
|
214
|
+
"当前条件不满足,暂不能执行清理。": "The current conditions are not met, so cleanup cannot be run yet.",
|
|
215
|
+
"当前没有可用的菜单,请联系管理员授权。": "No menus are currently available. Contact an administrator for access.",
|
|
216
|
+
"当前没有需要清理的废弃权限。": "There are currently no deprecated permissions to clean up.",
|
|
217
|
+
"当前状态": "Current Status",
|
|
218
|
+
"当前用户": "Current User",
|
|
219
|
+
"当前身份": "Current Identity",
|
|
220
|
+
"待启动": "Planning",
|
|
221
|
+
"待启动项目保存为 0%,已完成项目保存为 100%。": "Planning projects are saved at 0%, and completed projects at 100%.",
|
|
222
|
+
"恢复时检查有效管理员,保留子级原有状态。": "Enabling checks for an active administrator and preserves the existing status of child entities.",
|
|
223
|
+
"成员状态": "Member Status",
|
|
224
|
+
"截止日期": "Due Date",
|
|
225
|
+
"执行后将清理这些权限及对应引用,请核对影响范围。": "Running cleanup removes these permissions and their references. Review the impact first.",
|
|
226
|
+
"批量删除": "Bulk Delete",
|
|
227
|
+
"按钮 / 操作": "Button / Action",
|
|
228
|
+
"按钮授权自动包含页面访问权限;取消页面访问将同步取消页面下的操作。": "Granting a button permission automatically includes page access. Removing page access also removes actions under that page.",
|
|
229
|
+
"排序": "Order",
|
|
230
|
+
"提交": "Submit",
|
|
231
|
+
"提交成功,已进入项目列表": "Submitted successfully and added to the project list",
|
|
232
|
+
"搜索": "Search",
|
|
233
|
+
"搜索{type}名称或编码": "Search {type} name or code",
|
|
234
|
+
"搜索姓名或账号": "Search name or account",
|
|
235
|
+
"搜索角色名称": "Search role name",
|
|
236
|
+
"搜索项目名称或编号": "Search project name or ID",
|
|
237
|
+
"操作": "Actions",
|
|
238
|
+
"操作、对象类型或对象编号": "Action, target type, or target ID",
|
|
239
|
+
"操作失败,请重试": "Operation failed. Try again.",
|
|
240
|
+
"操作必须属于一个页面": "An action must belong to a page",
|
|
241
|
+
"操作日志": "Audit Log",
|
|
242
|
+
"操作时间": "Operation Time",
|
|
243
|
+
"操作者": "Operator",
|
|
244
|
+
"支持搜索筛选、排序、分页、列设置和批量删除。": "Supports search, filters, sorting, pagination, column settings, and bulk deletion.",
|
|
245
|
+
"新增功能自动授予对应内置管理员,仍受功能启停状态约束。": "New features are automatically granted to the corresponding built-in administrator, while still respecting feature availability.",
|
|
246
|
+
"新增节点": "Add Node",
|
|
247
|
+
"新增菜单": "Add Menu",
|
|
248
|
+
"新增菜单节点": "Add Menu Node",
|
|
249
|
+
"新增项目": "Add Project",
|
|
250
|
+
"新状态": "New Status",
|
|
251
|
+
"无法加载权限": "Unable to load permissions",
|
|
252
|
+
"无法加载管理员,请重试": "Unable to load administrators. Try again.",
|
|
253
|
+
"无法加载菜单": "Unable to load menus",
|
|
254
|
+
"无法加载角色": "Unable to load roles",
|
|
255
|
+
"无法加载资料": "Unable to load profile",
|
|
256
|
+
"无法加载预览": "Unable to load preview",
|
|
257
|
+
"无法连接服务,请检查网络后重试": "Unable to connect to the service. Check your network and try again.",
|
|
258
|
+
"时间范围": "Time Range",
|
|
259
|
+
"昨天": "Yesterday",
|
|
260
|
+
"显示": "Visible",
|
|
261
|
+
"显示名称": "Display Name",
|
|
262
|
+
"普通成员": "Member",
|
|
263
|
+
"暂不能清理": "Cleanup Unavailable",
|
|
264
|
+
"暂无{type}": "No {type}",
|
|
265
|
+
"暂无匹配草稿,请调整筛选条件。": "No matching drafts. Adjust your filters.",
|
|
266
|
+
"暂无匹配项目,请调整筛选条件或新增项目。": "No matching projects. Adjust your filters or add a project.",
|
|
267
|
+
"暂无草稿,可以新增项目并保存为草稿。": "No drafts yet. Add a project and save it as a draft.",
|
|
268
|
+
"最后保存时间": "Last Saved",
|
|
269
|
+
"未命名项目": "Untitled Project",
|
|
270
|
+
"未填写": "Not Set",
|
|
271
|
+
"权限": "Permissions",
|
|
272
|
+
"权限数量": "Permission Count",
|
|
273
|
+
"查看": "View",
|
|
274
|
+
"查看当前身份,选择你需要的管理功能。": "Review your current identity and choose the management feature you need.",
|
|
275
|
+
"查看权限": "View Permissions",
|
|
276
|
+
"根目录": "Root",
|
|
277
|
+
"此节点属于受保护的管理入口,不能隐藏、停用或移到不可用位置。": "This node is a protected management entry and cannot be hidden, disabled, or moved to an unavailable location.",
|
|
278
|
+
"添加成员": "Add Member",
|
|
279
|
+
"添加项目成员": "Add Project Member",
|
|
280
|
+
"清理废弃权限": "Clean Up Deprecated Permissions",
|
|
281
|
+
"清理该成员在此项目的关系和角色。": "Remove this member's relationship and roles in the project.",
|
|
282
|
+
"清空可见权限": "Clear Visible Permissions",
|
|
283
|
+
"清空选择": "Clear Selection",
|
|
284
|
+
"父级": "Parent",
|
|
285
|
+
"父级节点": "Parent Node",
|
|
286
|
+
"状态": "Status",
|
|
287
|
+
"登录过期或未登录": "Your session has expired or you are not signed in",
|
|
288
|
+
"目录": "Directory",
|
|
289
|
+
"目标用户": "Target User",
|
|
290
|
+
"确定": "Confirm",
|
|
291
|
+
"确定删除「{name}」吗?": "Delete “{name}”?",
|
|
292
|
+
"确认清理废弃权限": "Confirm Deprecated Permission Cleanup",
|
|
293
|
+
"移除": "Remove",
|
|
294
|
+
"移除成员": "Remove Member",
|
|
295
|
+
"移除成员?": "Remove member?",
|
|
296
|
+
"类型": "Type",
|
|
297
|
+
"绑定功能": "Bound Feature",
|
|
298
|
+
"绑定操作": "Bind Action",
|
|
299
|
+
"绑定页面": "Bind Page",
|
|
300
|
+
"继续编辑": "Continue Editing",
|
|
301
|
+
"继续编辑草稿": "Continue Editing Draft",
|
|
302
|
+
"维护当前工作空间的名称、编码与说明。": "Maintain the current workspace name, code, and description.",
|
|
303
|
+
"编码": "Code",
|
|
304
|
+
"编辑": "Edit",
|
|
305
|
+
"编辑自定义角色": "Edit Custom Role",
|
|
306
|
+
"编辑菜单节点": "Edit Menu Node",
|
|
307
|
+
"编辑项目": "Edit Project",
|
|
308
|
+
"自定义角色": "Custom Role",
|
|
309
|
+
"节点类型": "Node Type",
|
|
310
|
+
"草稿已保存": "Draft saved",
|
|
311
|
+
"草稿提交后进入列表": "Submitted drafts appear in the project list",
|
|
312
|
+
"草稿箱": "Drafts",
|
|
313
|
+
"草稿箱,{count} 条草稿": "Drafts, {count} items",
|
|
314
|
+
"菜单与操作": "Menus and Actions",
|
|
315
|
+
"菜单管理": "Menu Management",
|
|
316
|
+
"菜单节点": "Menu Node",
|
|
317
|
+
"补充或更换管理员": "Add or Replace Administrator",
|
|
318
|
+
"补充项目目标或备注(选填)": "Add project goals or notes (optional)",
|
|
319
|
+
"被替换用户": "Replaced User",
|
|
320
|
+
"被替换的管理员(可选)": "Administrator to Replace (optional)",
|
|
321
|
+
"角色": "Role",
|
|
322
|
+
"角色名称": "Role Name",
|
|
323
|
+
"角色授权引用": "Role Permission References",
|
|
324
|
+
"角色管理": "Role Management",
|
|
325
|
+
"角色说明": "Role Description",
|
|
326
|
+
"设置{type}管理员 · {name}": "Set {type} Administrator · {name}",
|
|
327
|
+
"设置企业管理员": "Set Company Administrator",
|
|
328
|
+
"设置管理员": "Set Administrator",
|
|
329
|
+
"设置项目管理员": "Set Project Administrator",
|
|
330
|
+
"访问页面": "Page Access",
|
|
331
|
+
"试试调整搜索条件": "Try adjusting your search",
|
|
332
|
+
"说明": "Description",
|
|
333
|
+
"请求编号": "Request ID",
|
|
334
|
+
"请输入 2–100 字{type}名称": "Enter a {type} name of 2–100 characters",
|
|
335
|
+
"请输入 2–100 字名称": "Enter a name of 2–100 characters",
|
|
336
|
+
"请输入 2–100 字角色名称": "Enter a role name of 2–100 characters",
|
|
337
|
+
"请输入 2–32 位字母、数字、下划线或短横线": "Enter 2–32 letters, numbers, underscores, or hyphens",
|
|
338
|
+
"请输入完成进度": "Enter project progress",
|
|
339
|
+
"请输入显示名称": "Enter a display name",
|
|
340
|
+
"请输入有效编码": "Enter a valid code",
|
|
341
|
+
"请输入项目名称": "Enter a project name",
|
|
342
|
+
"请选择优先级": "Choose a priority",
|
|
343
|
+
"请选择截止日期": "Choose a due date",
|
|
344
|
+
"请选择操作": "Choose an action",
|
|
345
|
+
"请选择负责人": "Choose an owner",
|
|
346
|
+
"请选择页面": "Choose a page",
|
|
347
|
+
"请选择项目状态": "Choose a project status",
|
|
348
|
+
"负责人": "Owner",
|
|
349
|
+
"账号停用后所有工作空间均不可访问;重新启用后须重新登录。": "Disabling an account blocks access to all workspaces. The user must sign in again after it is enabled.",
|
|
350
|
+
"账号状态": "Account Status",
|
|
351
|
+
"这里只修改当前工作空间的角色。撤销管理员身份受委派资格和最后有效管理员保护。": "This changes roles only in the current workspace. Revoking administrator access is subject to delegation eligibility and last-active-administrator protection.",
|
|
352
|
+
"进入项目": "Open Project",
|
|
353
|
+
"进行中": "In Progress",
|
|
354
|
+
"选择已发布的页面": "Choose a published page",
|
|
355
|
+
"选择所属页面": "Choose the parent page",
|
|
356
|
+
"选择角色;留空表示撤销当前范围全部角色": "Choose roles. Leave empty to revoke all roles in the current scope.",
|
|
357
|
+
"配置": "Configure",
|
|
358
|
+
"配置权限": "Configure Permissions",
|
|
359
|
+
"重试": "Retry",
|
|
360
|
+
"锁定": "Locked",
|
|
361
|
+
"隐藏": "Hidden",
|
|
362
|
+
"隐藏只影响菜单展示,已授权用户仍可直接访问。": "Hiding affects only menu visibility. Authorized users can still access the page directly.",
|
|
363
|
+
"隐藏导航": "Hide Navigation",
|
|
364
|
+
"页面": "Page",
|
|
365
|
+
"页面加载中": "Loading page",
|
|
366
|
+
"项目列表": "Project List",
|
|
367
|
+
"项目名称": "Project Name",
|
|
368
|
+
"项目工作台": "Project Dashboard",
|
|
369
|
+
"项目已保存": "Project saved",
|
|
370
|
+
"项目已新增": "Project added",
|
|
371
|
+
"项目成员": "Project Members",
|
|
372
|
+
"项目操作日志": "Project Audit Log",
|
|
373
|
+
"项目状态": "Project Status",
|
|
374
|
+
"项目管理员": "Project Administrator",
|
|
375
|
+
"项目菜单": "Project Menu",
|
|
376
|
+
"项目角色": "Project Roles",
|
|
377
|
+
"项目说明": "Project Description",
|
|
378
|
+
"项目资料": "Project Profile",
|
|
379
|
+
"高": "High",
|
|
380
|
+
"(内置)": "(Built-in)",
|
|
381
|
+
"(已废弃)": "(Deprecated)",
|
|
382
|
+
",或{action}": ", or {action}",
|
|
383
|
+
"操作成功": "Operation successful",
|
|
384
|
+
"服务异常": "Service error",
|
|
385
|
+
"请求失败,请稍后重试": "Request failed. Try again later.",
|
|
386
|
+
"直接注册企业成员": "Directly Register Company Member",
|
|
387
|
+
"注册并加入企业": "Register and Add to Company",
|
|
388
|
+
"账号创建后会立即加入当前企业": "The account will join the current company immediately after creation",
|
|
389
|
+
"请将初始账号和密码安全地交给成员,并提醒其首次登录后妥善保管。": "Share the initial account and password securely, and remind the member to keep them safe after the first sign-in.",
|
|
390
|
+
"4–32 位字母、数字或下划线;账号已存在时请改用邀请流程。": "Use 4–32 letters, numbers, or underscores. If the account already exists, use the invitation flow.",
|
|
391
|
+
"初始密码": "Initial Password",
|
|
392
|
+
"直接注册": "Direct Registration",
|
|
393
|
+
"邀请成员": "Invite Member",
|
|
394
|
+
"邀请企业成员": "Invite Company Member",
|
|
395
|
+
"请选择企业成员": "Please select a company member",
|
|
396
|
+
"只能选择所属企业中有效且尚未加入本项目的成员。": "Only active members of the parent company who have not joined this project can be selected.",
|
|
397
|
+
"所属企业": "Parent Company",
|
|
398
|
+
"选择企业成员": "Select Company Member",
|
|
399
|
+
" · 默认": " · Default",
|
|
400
|
+
"4–32 位字母、数字或下划线。": "Use 4–32 letters, numbers, or underscores.",
|
|
401
|
+
"一名成员可以任多个岗位": "A member can hold multiple positions",
|
|
402
|
+
"一次性企业成员邀请": "One-time Company Member Invitation",
|
|
403
|
+
"上级企业 / 集团": "Parent Company / Group",
|
|
404
|
+
"不会删除后代状态和成员关系。": "Descendant statuses and member relationships will not be deleted.",
|
|
405
|
+
"不可选": "Not Selectable",
|
|
406
|
+
"不选择表示根级企业": "Leave blank for a root-level company",
|
|
407
|
+
"之后修改模板不会同步到已有项目;模板岗位独立于模板组织单元。": "Future template changes will not sync to existing projects. Template positions are independent of template organization units.",
|
|
408
|
+
"从左侧选择一个企业进行编辑": "Select a company on the left to edit",
|
|
409
|
+
"任职人数": "Assignee Count",
|
|
410
|
+
"任职成员": "Assigned Members",
|
|
411
|
+
"企业 / 项目": "Company / Project",
|
|
412
|
+
"企业层级": "Company Hierarchy",
|
|
413
|
+
"企业层级只影响导航和选择范围": "Company hierarchy affects only navigation and selection scope",
|
|
414
|
+
"企业岗位": "Company Positions",
|
|
415
|
+
"企业成员邀请": "Company Member Invitations",
|
|
416
|
+
"企业现有默认模板会自动取消默认。": "The company's current default template will no longer be the default.",
|
|
417
|
+
"企业级": "Company Scope",
|
|
418
|
+
"企业组织架构": "Company Organization",
|
|
419
|
+
"作为默认模板": "Set as Default Template",
|
|
420
|
+
"作用范围": "Scope",
|
|
421
|
+
"使用企业模板": "Use Company Template",
|
|
422
|
+
"保存任职成员": "Save Assigned Members",
|
|
423
|
+
"保存只会替换此岗位的任职成员,不会修改成员所在组织或角色。": "Saving only replaces the members assigned to this position. It does not change their organization units or roles.",
|
|
424
|
+
"保存只替换岗位任职,不会修改组织归属或角色。": "Saving only replaces position assignments. It does not change organization memberships or roles.",
|
|
425
|
+
"保存层级": "Save Hierarchy",
|
|
426
|
+
"保存岗位": "Save Position",
|
|
427
|
+
"保存模板": "Save Template",
|
|
428
|
+
"保存组织单元": "Save Organization Unit",
|
|
429
|
+
"候选人必须是当前企业的有效成员。": "Candidates must be active members of the current company.",
|
|
430
|
+
"停用岗位?": "Deactivate Position?",
|
|
431
|
+
"停用模板不能用于新项目,历史项目不受影响。": "Deactivated templates cannot be used for new projects. Existing projects are unaffected.",
|
|
432
|
+
"停用模板?": "Deactivate Template?",
|
|
433
|
+
"停用组织单元?": "Deactivate Organization Unit?",
|
|
434
|
+
"全部成员": "All Members",
|
|
435
|
+
"出于安全考虑,关闭弹窗后无法再次查看此链接;需要时请重发生成新链接。": "For security, this link cannot be viewed again after you close the dialog. Resend the invitation to generate a new link if needed.",
|
|
436
|
+
"分配岗位成员 · {name}": "Assign Position Members · {name}",
|
|
437
|
+
"分配成员": "Assign Members",
|
|
438
|
+
"创建子级": "Create Child Unit",
|
|
439
|
+
"创建岗位": "Create Position",
|
|
440
|
+
"创建模板": "Create Template",
|
|
441
|
+
"创建组织单元": "Create Organization Unit",
|
|
442
|
+
"创建邀请失败,请重试": "Failed to create invitation. Try again.",
|
|
443
|
+
"创建邀请链接": "Create Invitation Link",
|
|
444
|
+
"创建顶级组织": "Create Top-level Organization",
|
|
445
|
+
"创建项目组织模板": "Create Project Organization Template",
|
|
446
|
+
"初始状态": "Initial Status",
|
|
447
|
+
"副负责人": "Deputy Lead",
|
|
448
|
+
"只看未归属组织": "Show Only Members Without an Organization",
|
|
449
|
+
"可从平台全部启用账号中搜索;系统会将其加入企业。": "Search all active accounts on the platform. The selected account will be added to the company.",
|
|
450
|
+
"可从空白开始,也可复制企业维护的当前模板;复制后互不联动。": "Start with a blank structure or copy the company's current template. The copies remain independent.",
|
|
451
|
+
"可选择": "Selectable",
|
|
452
|
+
"同级排序": "Sibling Order",
|
|
453
|
+
"复制失败,请手动选择链接复制": "Copy failed. Select and copy the link manually.",
|
|
454
|
+
"复制链接": "Copy Link",
|
|
455
|
+
"失效时间": "Expiration Time",
|
|
456
|
+
"实体类型": "Entity Type",
|
|
457
|
+
"将在当前选中的组织单元下创建子级": "A child will be created under the selected organization unit",
|
|
458
|
+
"岗位": "Position",
|
|
459
|
+
"岗位 {index}": "Position {index}",
|
|
460
|
+
"岗位与组织归属相互独立": "Positions and organization memberships are independent",
|
|
461
|
+
"岗位名称": "Position Name",
|
|
462
|
+
"岗位管理": "Position Management",
|
|
463
|
+
"岗位编码": "Position Code",
|
|
464
|
+
"岗位说明": "Position Description",
|
|
465
|
+
"岗位({count})": "Positions ({count})",
|
|
466
|
+
"已加入企业": "Joined Company",
|
|
467
|
+
"已接受": "Accepted",
|
|
468
|
+
"已撤销": "Revoked",
|
|
469
|
+
"已过期": "Expired",
|
|
470
|
+
"当前企业": "Current Company",
|
|
471
|
+
"当前作用域不支持岗位关系": "Position relationships are not supported in the current scope",
|
|
472
|
+
"当前作用域不支持组织关系": "Organization relationships are not supported in the current scope",
|
|
473
|
+
"当前无效": "Currently Invalid",
|
|
474
|
+
"当前项目": "Current Project",
|
|
475
|
+
"待接受": "Pending Acceptance",
|
|
476
|
+
"恢复": "Restore",
|
|
477
|
+
"恢复岗位?": "Restore Position?",
|
|
478
|
+
"恢复模板?": "Restore Template?",
|
|
479
|
+
"恢复组织单元?": "Restore Organization Unit?",
|
|
480
|
+
"成员可以加入多个组织单元,不存在主归属;保存不会改变岗位或角色。": "Members can join multiple organization units; there is no primary unit. Saving does not change positions or roles.",
|
|
481
|
+
"成员可以同时属于多个组织单元": "Members can belong to multiple organization units",
|
|
482
|
+
"成员当前不可见": "Member is currently not visible",
|
|
483
|
+
"所有组织归属同等有效": "All organization memberships are equally valid",
|
|
484
|
+
"按姓名、账号、组织或岗位选择": "Select by name, account, organization, or position",
|
|
485
|
+
"按组织定位人员": "Locate People by Organization",
|
|
486
|
+
"接受企业邀请 - 万物": "Accept Company Invitation - Wanwu",
|
|
487
|
+
"接受邀请失败,请稍后重试": "Failed to accept the invitation. Try again later.",
|
|
488
|
+
"接受邀请并加入企业": "Accept Invitation and Join Company",
|
|
489
|
+
"提交时会同时校验模板当前版本。": "The current template version will also be validated on submission.",
|
|
490
|
+
"搜索姓名或完整账号": "Search by name or full account",
|
|
491
|
+
"搜索岗位名称或编码": "Search by position name or code",
|
|
492
|
+
"搜索模板名称": "Search by template name",
|
|
493
|
+
"撤销": "Revoke",
|
|
494
|
+
"撤销后该链接将无法再被接受。": "After revocation, this link can no longer be accepted.",
|
|
495
|
+
"撤销这条邀请?": "Revoke This Invitation?",
|
|
496
|
+
"新排序": "New Order",
|
|
497
|
+
"新父级": "New Parent",
|
|
498
|
+
"新的邀请链接已生成": "A new invitation link has been generated",
|
|
499
|
+
"新管理员": "New Administrator",
|
|
500
|
+
"新管理员须为有效企业成员。": "The new administrator must be an active company member.",
|
|
501
|
+
"新管理员须为有效全局账号。": "The new administrator must have an active global account.",
|
|
502
|
+
"无法加载下级组织": "Failed to load child organizations",
|
|
503
|
+
"无法加载企业层级": "Failed to load company hierarchy",
|
|
504
|
+
"无法加载可选父级": "Failed to load available parents",
|
|
505
|
+
"无法加载可选项": "Failed to load available options",
|
|
506
|
+
"无法加载岗位任职": "Failed to load position assignments",
|
|
507
|
+
"无法加载岗位成员": "Failed to load position members",
|
|
508
|
+
"无法加载模板详情": "Failed to load template details",
|
|
509
|
+
"无法加载组织归属": "Failed to load organization memberships",
|
|
510
|
+
"无法加载组织成员": "Failed to load organization members",
|
|
511
|
+
"无法加载组织架构": "Failed to load organization structure",
|
|
512
|
+
"无法加载邀请记录": "Failed to load invitation records",
|
|
513
|
+
"旧链接会立即失效,请只发送新链接。": "The old link will expire immediately. Send only the new link.",
|
|
514
|
+
"暂无可用模板,请选择空白组织或先创建模板。": "No templates are available. Choose a blank organization or create a template first.",
|
|
515
|
+
"暂无可见企业": "No companies visible",
|
|
516
|
+
"暂无可见岗位": "No positions visible",
|
|
517
|
+
"暂无可见组织": "No organizations visible",
|
|
518
|
+
"暂无可见角色": "No roles visible",
|
|
519
|
+
"暂无可见项目": "No projects visible",
|
|
520
|
+
"暂无组织单元": "No organization units",
|
|
521
|
+
"暂无邀请记录": "No invitation records",
|
|
522
|
+
"暂未加入企业,请联系管理员获取邀请链接": "You have not joined a company. Contact an administrator for an invitation link.",
|
|
523
|
+
"暂未选择成员": "No members selected",
|
|
524
|
+
"暂未选择组织单元": "No organization units selected",
|
|
525
|
+
"更新时间": "Updated At",
|
|
526
|
+
"最多允许 10 层;循环和无效目标会由服务端拒绝。": "Up to 10 levels are allowed. Cycles and invalid targets will be rejected by the server.",
|
|
527
|
+
"有效": "Active",
|
|
528
|
+
"未归属组织": "No Organization",
|
|
529
|
+
"未归属组织成员": "Members Without an Organization",
|
|
530
|
+
"本次只替换当前组织单元的成员;一个单元最多一名负责人,可以有多名副负责人。": "This replaces members of the current organization unit only. Each unit can have one lead and multiple deputy leads.",
|
|
531
|
+
"权限角色": "Permission Roles",
|
|
532
|
+
"根级": "Root Level",
|
|
533
|
+
"模板只在创建项目时复制一次": "Templates are copied only once when creating a project",
|
|
534
|
+
"模板名称": "Template Name",
|
|
535
|
+
"模板说明": "Template Description",
|
|
536
|
+
"注册后登录,即可接受邀请或进入已加入的工作空间。": "Sign in after registering to accept invitations or access workspaces you have joined.",
|
|
537
|
+
"浏览范围": "Browse Scope",
|
|
538
|
+
"添加岗位": "Add Position",
|
|
539
|
+
"添加或移除组织成员": "Add or Remove Organization Members",
|
|
540
|
+
"添加组织单元": "Add Organization Unit",
|
|
541
|
+
"清除筛选": "Clear Filters",
|
|
542
|
+
"版本": "Version",
|
|
543
|
+
"状态变化不会删除既有任职关系。": "Status changes do not delete existing position assignments.",
|
|
544
|
+
"登录后再确认加入": "Sign In Before Joining",
|
|
545
|
+
"登录后确认加入企业;加入后,刷新此页即可进入。": "Sign in to confirm joining the company. Refresh this page after joining to enter.",
|
|
546
|
+
"登录并继续": "Sign In and Continue",
|
|
547
|
+
"登录或注册完成后会返回此页面,邀请不会被自动接受。": "You will return to this page after signing in or registering. The invitation will not be accepted automatically.",
|
|
548
|
+
"确认使用当前账号加入企业": "Confirm Joining the Company with the Current Account",
|
|
549
|
+
"确认加入企业": "Confirm Joining Company",
|
|
550
|
+
"确认后该邀请立即失效,无法转交给其他账号使用。": "Once confirmed, this invitation expires immediately and cannot be transferred to another account.",
|
|
551
|
+
"确认移动": "Confirm Move",
|
|
552
|
+
"移动": "Move",
|
|
553
|
+
"移动会改变本节点及全部后代的完整路径": "Moving changes the full path of this node and all its descendants",
|
|
554
|
+
"移动组织单元 · {name}": "Move Organization Unit · {name}",
|
|
555
|
+
"空白组织": "Blank Organization",
|
|
556
|
+
"系统只会在你点击确认后,将当前登录账号加入发出邀请的企业。": "The system adds the signed-in account to the inviting company only after you confirm.",
|
|
557
|
+
"组织": "Organization",
|
|
558
|
+
"组织初始化": "Organization Setup",
|
|
559
|
+
"组织单元": "Organization Unit",
|
|
560
|
+
"组织单元 {index}": "Organization Unit {index}",
|
|
561
|
+
"组织单元名称": "Organization Unit Name",
|
|
562
|
+
"组织单元最多 10 层;保存时服务端会校验父子引用、循环、名称和编码唯一性。": "Organization units can be nested up to 10 levels. The server validates parent-child references, cycles, names, and code uniqueness when saving.",
|
|
563
|
+
"组织单元编码": "Organization Unit Code",
|
|
564
|
+
"组织单元({count})": "Organization Units ({count})",
|
|
565
|
+
"组织归属": "Organization Memberships",
|
|
566
|
+
"组织成员 · {name}": "Organization Members · {name}",
|
|
567
|
+
"组织架构": "Organization Structure",
|
|
568
|
+
"组织根节点": "Organization Root",
|
|
569
|
+
"组织模板": "Organization Template",
|
|
570
|
+
"编码在当前组织树中唯一,保存时转为小写。": "Codes must be unique in the current organization tree and are converted to lowercase when saved.",
|
|
571
|
+
"编辑定义": "Edit Definition",
|
|
572
|
+
"编辑岗位": "Edit Position",
|
|
573
|
+
"编辑岗位任职 · {name}": "Edit Position Assignments · {name}",
|
|
574
|
+
"编辑组织": "Edit Organization",
|
|
575
|
+
"编辑组织单元": "Edit Organization Unit",
|
|
576
|
+
"编辑组织归属 · {name}": "Edit Organization Memberships · {name}",
|
|
577
|
+
"编辑项目组织模板": "Edit Project Organization Template",
|
|
578
|
+
"职责": "Responsibilities",
|
|
579
|
+
"获得链接的人可在登录后主动确认加入企业;每条链接只可成功使用一次。": "Anyone with the link can sign in and confirm joining the company. Each link can be used successfully only once.",
|
|
580
|
+
"设为默认": "Set as Default",
|
|
581
|
+
"设为默认模板?": "Set as Default Template?",
|
|
582
|
+
"该成员当前不可新增,既有选择仍可移除": "This member cannot be newly selected, but an existing selection can still be removed",
|
|
583
|
+
"请立即复制本次生成的链接": "Copy the newly generated link now",
|
|
584
|
+
"请输入 2–100 字岗位名称": "Enter a position name with 2–100 characters",
|
|
585
|
+
"请输入 2–100 字组织单元名称": "Enter an organization unit name with 2–100 characters",
|
|
586
|
+
"请输入排序整数": "Enter an integer for the order",
|
|
587
|
+
"请选择成员": "Select Members",
|
|
588
|
+
"请选择新父级": "Select New Parent",
|
|
589
|
+
"请选择新管理员": "Select New Administrator",
|
|
590
|
+
"请选择组织模板": "Select Organization Template",
|
|
591
|
+
"请选择首位企业管理员": "Select the Initial Company Administrator",
|
|
592
|
+
"请选择首位项目管理员": "Select the Initial Project Administrator",
|
|
593
|
+
"调整父企业不会迁移成员、项目、角色或业务数据。循环和越权目标由服务端拒绝。": "Changing the parent company does not migrate members, projects, roles, or business data. Cycles and unauthorized targets will be rejected by the server.",
|
|
594
|
+
"账号信息不可用": "Account information unavailable",
|
|
595
|
+
"账号已创建,请登录后继续。": "Account created. Sign in to continue.",
|
|
596
|
+
"选择一个或多个成员": "Select One or More Members",
|
|
597
|
+
"选择可见项目": "Select Visible Projects",
|
|
598
|
+
"选择岗位": "Select Position",
|
|
599
|
+
"选择成员": "Select Members",
|
|
600
|
+
"选择组织单元": "Select Organization Unit",
|
|
601
|
+
"邀请": "Invite",
|
|
602
|
+
"邀请已撤销": "Invitation Revoked",
|
|
603
|
+
"邀请操作失败,请重试": "Invitation action failed. Try again.",
|
|
604
|
+
"邀请记录": "Invitation Records",
|
|
605
|
+
"邀请链接不绑定账号": "Invitation links are not tied to an account",
|
|
606
|
+
"邀请链接已创建": "Invitation Link Created",
|
|
607
|
+
"邀请链接已复制": "Invitation Link Copied",
|
|
608
|
+
"邀请链接无效": "Invalid Invitation Link",
|
|
609
|
+
"重发": "Resend",
|
|
610
|
+
"重发并生成新链接?": "Resend and Generate a New Link?",
|
|
611
|
+
"链接中缺少邀请凭证,请向企业管理员重新获取邀请链接。": "The link is missing an invitation token. Request a new invitation link from the company administrator.",
|
|
612
|
+
"链接只可成功使用一次,请勿转发给无关人员。": "This link can only be used successfully once. Do not forward it to anyone else.",
|
|
613
|
+
"集团": "Group",
|
|
614
|
+
"顶级组织": "Top-level Organization",
|
|
615
|
+
"项目岗位": "Project Positions",
|
|
616
|
+
"项目拥有独立组织和岗位": "Projects have their own organizations and positions",
|
|
617
|
+
"项目级": "Project Scope",
|
|
618
|
+
"项目组织架构": "Project Organization",
|
|
619
|
+
"项目组织模板": "Project Organization Template",
|
|
620
|
+
"首位企业管理员": "Initial Company Administrator",
|
|
621
|
+
"首位项目管理员": "Initial Project Administrator",
|
|
622
|
+
"默认": "Default",
|
|
623
|
+
"默认模板": "Default Template",
|
|
624
|
+
"修改密码": "Change Password",
|
|
625
|
+
"修改密码失败,请重试": "Failed to change password. Try again.",
|
|
626
|
+
"密码已修改,请使用新密码重新登录。": "Password changed. Sign in again with your new password.",
|
|
627
|
+
"修改成功后,所有终端都需要使用新密码重新登录。": "After the change, you must sign in again with your new password on every device.",
|
|
628
|
+
"旧密码": "Current Password",
|
|
629
|
+
"请输入旧密码": "Enter your current password",
|
|
630
|
+
"新密码": "New Password",
|
|
631
|
+
"请输入新密码": "Enter a new password",
|
|
632
|
+
"新密码不能与旧密码相同": "The new password must differ from the current password",
|
|
633
|
+
"请再次输入新密码": "Enter the new password again",
|
|
634
|
+
"确认修改": "Change Password",
|
|
635
|
+
"重置密码": "Reset Password",
|
|
636
|
+
"重置密码 · {name}": "Reset Password · {name}",
|
|
637
|
+
"重置密码失败,请重试": "Failed to reset password. Try again.",
|
|
638
|
+
"目标账号:{account}": "Target Account: {account}",
|
|
639
|
+
"重置成功后,目标账号的所有终端会话失效。请通过现有线下渠道告知用户。": "After the reset, the account is signed out on every device. Share the new password through your existing offline channel.",
|
|
640
|
+
"密码已重置,请通过现有线下渠道告知用户。": "Password reset. Share the new password through your existing offline channel.",
|
|
641
|
+
"确认重置": "Reset Password"
|
|
4
642
|
}
|