feat(frontend): 任务工作区/目的树脱敏 — 业务名→业务码 + 数据值过 desensitize
- 种子脱敏表新增 任务分析→rwfx / 三情分析→3qfx / 行动分析→xdfx(整词在前,优先于「任务」「行动」匹配) - TaskFxWorkspace:左上业务名 + 底部快捷跳转按钮标签过 desensitize - TaskPurposePanel:目的树表头/单元格正文/理由过 desensitize - 硬编码 UI 文案与 admin 按钮管理页保持原文(与菜单管理一致) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
f762a76ecf
commit
29cc004b69
3 files changed
+11
-6
No files matched your search
@@ -11,6 +11,10 @@
|
||||
* {@link DESENSITIZE_MAP}。
|
||||
*/
|
||||
export const SEED_DESENSITIZE_MAP: Readonly<Record<string, string>> = Object.freeze({
|
||||
// 任务工作区业务名 → 业务码(脱敏展示)。整词在前,优先于下面更短的「任务」「行动」匹配。
|
||||
任务分析: "rwfx",
|
||||
三情分析: "3qfx",
|
||||
行动分析: "xdfx",
|
||||
方案: "FA",
|
||||
设计: "SJ",
|
||||
任务: "RW",
|
||||
|
||||
@@ -148,9 +148,9 @@ function TaskJumpBar({ business, taskId }: { business: TaskBusiness; taskId: str
|
||||
key={btn.id}
|
||||
className="h-11 gap-2 border-transparent bg-[var(--color-main)] px-6 text-base text-white shadow-sm hover:bg-[var(--brand-950)]"
|
||||
onClick={() => handleRun(btn)}
|
||||
title={btn.label}
|
||||
title={desensitize(btn.label)}
|
||||
>
|
||||
<span className="truncate">{btn.label}</span>
|
||||
<span className="truncate">{desensitize(btn.label)}</span>
|
||||
{btn.linkType === "url" ? (
|
||||
<ExternalLink className="h-5 w-5 shrink-0" />
|
||||
) : btn.linkType === "purpose" ? (
|
||||
@@ -191,7 +191,7 @@ function TaskConversationsList({
|
||||
const navigate = useNavigate();
|
||||
const { threads, isLoading } = useTaskThreads(taskId, agentId);
|
||||
const currentThreadId = useMemo(() => parseThreadId(pathname, chatsBase), [pathname, chatsBase]);
|
||||
const businessName = TASK_BUSINESSES.find((b) => b.code === business)?.name ?? "";
|
||||
const businessName = desensitize(TASK_BUSINESSES.find((b) => b.code === business)?.name ?? "");
|
||||
|
||||
return (
|
||||
<div className="bg-background/85 border-border/70 flex w-64 shrink-0 flex-col border-r shadow-[12px_0_30px_-30px_rgba(15,23,42,0.45)] backdrop-blur-xl dark:border-[#1b477e]/70 dark:bg-[#061b35]/82">
|
||||
|
||||
+4
-3
@@ -31,6 +31,7 @@ import {
|
||||
type TaskPurposeResult,
|
||||
} from "@/core/auth/task-purpose";
|
||||
import { fetchTaskIdFromAction } from "@/core/auth/task-deeplink";
|
||||
import { desensitize } from "@/lib/desensitize";
|
||||
import { cn } from "@/lib/utils";
|
||||
|
||||
/** 目的树表格:拍平成行,列数随数据自适应;层级缺失补空、字段变动不崩。 */
|
||||
@@ -58,7 +59,7 @@ export function PurposeTable({ tree, className }: { tree: PurposeTreeNode[]; cla
|
||||
key={i}
|
||||
className="bg-muted/60 border-border/60 sticky top-0 border px-3 py-1.5 text-left font-medium whitespace-nowrap"
|
||||
>
|
||||
{h}
|
||||
{desensitize(h)}
|
||||
</th>
|
||||
))}
|
||||
</tr>
|
||||
@@ -72,9 +73,9 @@ export function PurposeTable({ tree, className }: { tree: PurposeTreeNode[]; cla
|
||||
<td key={ci} className="border-border/60 border px-3 py-1.5">
|
||||
{cell ? (
|
||||
<>
|
||||
<span>{cell.text || "(空)"}</span>
|
||||
<span>{cell.text ? desensitize(cell.text) : "(空)"}</span>
|
||||
{cell.reason ? (
|
||||
<span className="text-muted-foreground block text-xs">理由:{cell.reason}</span>
|
||||
<span className="text-muted-foreground block text-xs">理由:{desensitize(cell.reason)}</span>
|
||||
) : null}
|
||||
</>
|
||||
) : (
|
||||
|
||||
Reference in new issue
Block a user