feat(rdp): 新增 RDP 远程桌面/SMB/账单同步能力 + 清理编译产物
主要变更: - RDP 远程桌面:新增 backend/pkg/rdp(RDP 引擎 + credssp/display/rle/trace)、 backend/controller/rdp*(连接/凭证/文件/会话/实时)、frontend RDP 组件与 API - Windows SMB 文件传输:backend/pkg/winsmb - 云账单同步:backend/pkg/billingsync + billing_sync/aliyun_billing,前端账单详情 - Agent CLI Kubernetes 工具:kubernetes_action/get、pod_execute/logs - 服务器导入助手:server_import_helpers、ImportCredentialSettings - 国际化与组件重构(cloud/deploy/monitor/server/system 等多模块) - 清理编译产物二进制:移除 backend/server、backend/agent/bin/aiops-agent-* - .gitignore:新增 backend/agent/ 与 .cache/(避免 334MB go-build 缓存误入库) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
1 parent
777d9e4e71
commit
76ec9387f0
202 files changed
+16555
-2543
No files matched your search
@@ -15,6 +15,7 @@ import { approvalWorkflowApi, userApi } from '@/api';
|
||||
import { useConfirm } from '@/components/ui/confirm-dialog';
|
||||
import { PageShell } from '@/components/layout/PageShell';
|
||||
import { PageEmpty } from '@/components/layout/PageEmpty';
|
||||
import type { JsonData } from '@/types/common';
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/* Types */
|
||||
@@ -482,9 +483,9 @@ export default function ApprovalWorkflowPage() {
|
||||
try {
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
const res: any = await approvalWorkflowApi.list();
|
||||
const data = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : []);
|
||||
const normalized = data.map((w: any) => ({ ...w, steps: w.steps || [] }));
|
||||
const res: JsonData | JsonData[] = await approvalWorkflowApi.list();
|
||||
const data = Array.isArray(res) ? res : (Array.isArray(res.list) ? res.list : []);
|
||||
const normalized = data.map((w) => ({ ...w, steps: w.steps || [] }));
|
||||
setItems(normalized);
|
||||
} catch {
|
||||
setError(t('approval.msg.fetchFailed'));
|
||||
@@ -495,10 +496,10 @@ export default function ApprovalWorkflowPage() {
|
||||
|
||||
const fetchUsers = useCallback(async () => {
|
||||
try {
|
||||
const res: any = await userApi.getUsers();
|
||||
const data = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : []);
|
||||
const res: JsonData | JsonData[] = await userApi.getUsers();
|
||||
const data = Array.isArray(res) ? res : (Array.isArray(res.list) ? res.list : []);
|
||||
// Normalize: extract role code from roles array
|
||||
const normalized = data.map((u: any) => {
|
||||
const normalized = data.map((u) => {
|
||||
let role = u.role ?? '';
|
||||
if (!role && Array.isArray(u.roles) && u.roles.length > 0) {
|
||||
const first = u.roles[0];
|
||||
|
||||
Reference in new issue
Block a user