From 79dcc2bd615ccdec7e61371f016057428096fd32 Mon Sep 17 00:00:00 2001 From: wikiboss Date: Mon, 21 Sep 2026 11:59:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(card):=20=E5=AE=8C=E5=96=84=E5=90=8D?= =?UTF-8?q?=E7=89=87=E5=BE=AE=E5=AE=98=E7=BD=91Bento=E6=90=AD=E5=BB=BA?= =?UTF-8?q?=E5=99=A8=E6=97=A0=E5=8F=82=E8=87=AA=E5=8A=A8=E9=80=89=E5=8D=A1?= =?UTF-8?q?=E3=80=81=E5=90=8D=E7=89=87=E5=88=87=E6=8D=A2=E3=80=812?= =?UTF-8?q?=E5=88=97=E7=BD=91=E6=A0=BC=E5=8F=8A=E5=87=BA=E6=B5=B7=E5=A4=9A?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E5=AE=9E=E6=97=B6=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/pages/card/builder/index.tsx | 702 +++++++++++++++--- admin/src/pages/card/builder/locale/index.ts | 63 ++ .../card/builder/style/index.module.less | 181 ++++- admin/tests/card-builder.test.ts | 50 +- .../round-2/btp-06-bento-builder-verify.png | Bin 0 -> 84197 bytes 5 files changed, 870 insertions(+), 126 deletions(-) create mode 100644 docs/test-evidence/round-2/btp-06-bento-builder-verify.png diff --git a/admin/src/pages/card/builder/index.tsx b/admin/src/pages/card/builder/index.tsx index d4e59d9..fce75b4 100644 --- a/admin/src/pages/card/builder/index.tsx +++ b/admin/src/pages/card/builder/index.tsx @@ -11,7 +11,28 @@ import { Message, Card, Tabs, + Radio, + Popconfirm, + Space, + Tag, + Divider, } from '@arco-design/web-react'; +import { + IconSun, + IconMoon, + IconLaunch, + IconPlus, + IconDelete, + IconCopy, + IconArrowUp, + IconArrowDown, + IconIdcard, + IconFile, + IconFolder, + IconShareAlt, + IconVideoCamera, + IconEdit, +} from '@arco-design/web-react/icon'; import { ImageUploader } from '@/components/Upload'; import useLocale from '@/utils/useLocale'; import { getCssVariables } from '@/style/tokens'; @@ -20,12 +41,14 @@ import type { BentoBlockType, BentoColSpan, BentoRowSpan, + CardProfile, } from '@/types/omni'; import locale from './locale'; import styles from './style/index.module.less'; const GET_BLOCKS_API = '/api/admin/card/bento/getBlocksByCardId'; const SAVE_LAYOUT_API = '/api/admin/card/bento/batchSaveLayout'; +const CARD_PAGE_API = '/api/admin/card/info/page'; const LIBRARY_PATH = '/card/list'; const BLOCK_TYPES: BentoBlockType[] = [ @@ -43,12 +66,30 @@ const SPAN_OPTIONS: Array<{ label: string; value: BentoColSpan | BentoRowSpan }> { label: '2', value: 2 }, ]; +const SOCIAL_PLATFORMS = [ + { label: 'LinkedIn', value: 'linkedin' }, + { label: 'WhatsApp', value: 'whatsapp' }, + { label: 'Telegram', value: 'telegram' }, + { label: 'Twitter / X', value: 'twitter' }, + { label: 'WeChat', value: 'wechat' }, + { label: 'Email', value: 'email' }, +]; + interface CoolResponse { code: number; message?: string; data?: T; } +interface CardPageResult { + list?: CardProfile[]; + pagination?: { + total?: number; + page?: number; + size?: number; + }; +} + interface BlockFormValues { title?: string; content?: string; @@ -57,6 +98,15 @@ interface BlockFormValues { colSpan: BentoColSpan; rowSpan: BentoRowSpan; type: BentoBlockType; + heroName?: string; + heroJobTitle?: string; + heroCompany?: string; + heroSlogan?: string; + socialPlatform?: string; + caseClient?: string; + caseKpiTag?: string; + formPlaceholder?: string; + formSubmitText?: string; } interface SaveBlockPayload extends Omit { @@ -110,6 +160,26 @@ function resolveErrorMessage(error: unknown, fallback: string): string { return fallback; } +function safeParseMeta(metaJson: unknown): Record { + if (!metaJson) { + return {}; + } + if (typeof metaJson === 'object' && metaJson !== null) { + return metaJson as Record; + } + if (typeof metaJson === 'string') { + try { + const parsed = JSON.parse(metaJson); + if (typeof parsed === 'object' && parsed !== null) { + return parsed as Record; + } + } catch { + return {}; + } + } + return {}; +} + function parseBlock(raw: unknown, fallbackIndex: number): BentoBlock | null { if (!raw || typeof raw !== 'object') { return null; @@ -161,33 +231,95 @@ function CardBuilderPage() { const { id } = queryString.parse(location.search); const [form] = Form.useForm(); const draftSeq = useRef(0); + + const [cards, setCards] = useState([]); const [blocks, setBlocks] = useState([]); const [selectedId, setSelectedId] = useState(null); const [loading, setLoading] = useState(false); + const [cardsLoading, setCardsLoading] = useState(false); const [saving, setSaving] = useState(false); + // 环境预览模式:浅色/深色主题、LTR/RTL 镜像 + const [themeMode, setThemeMode] = useState<'light' | 'dark'>('light'); + const [isRtl, setIsRtl] = useState(false); + const hasId = Boolean(id); + const currentCardId = hasId ? Number(id) : null; + const currentCard = useMemo( + () => cards.find((item) => Number(item.id) === currentCardId) ?? null, + [cards, currentCardId] + ); + const tokenStyle = useMemo( () => getCssVariables('light') as React.CSSProperties, [] ); + const typeOptions = useMemo( () => BLOCK_TYPES.map((type) => ({ - label: t[`cardBuilder.type.${type}`], + label: t[`cardBuilder.type.${type}`] || type, value: type, })), [t] ); + + const cardOptions = useMemo( + () => + cards.map((card) => ({ + label: `${card.name} (${card.company || card.title || 'OmniCard'})`, + value: Number(card.id), + })), + [cards] + ); + + // 1. 拉取名片列表;若当前没有 id,则自动重定向至首张名片 + useEffect(() => { + let cancelled = false; + const fetchCards = async () => { + setCardsLoading(true); + try { + const { data: payload } = await axios.post>( + CARD_PAGE_API, + { page: 1, size: 50 } + ); + if (cancelled) { + return; + } + if (payload.code === 1000 && payload.data?.list) { + const fetchedList = payload.data.list; + setCards(fetchedList); + if (!hasId && fetchedList.length > 0) { + history.replace(`/card/builder?id=${fetchedList[0].id}`); + } + } + } catch (error: unknown) { + if (!cancelled) { + Message.warning(resolveErrorMessage(error, 'Failed to fetch cards')); + } + } finally { + if (!cancelled) { + setCardsLoading(false); + } + } + }; + void fetchCards(); + return () => { + cancelled = true; + }; + }, [hasId, history]); + const orderedBlocks = useMemo( () => [...blocks].sort((left, right) => left.sortOrder - right.sortOrder), [blocks] ); + const selectedBlock = useMemo( () => orderedBlocks.find((item) => item.id === selectedId) ?? null, [orderedBlocks, selectedId] ); + // 2. 根据 cardId 拉取 Bento Blocks useEffect(() => { if (!hasId) { return; @@ -233,6 +365,7 @@ function CardBuilderPage() { const lastSelectedIdRef = useRef(null); + // 3. 选中的 block 变化时同步到表单 useEffect(() => { if (!selectedBlock) { form.resetFields(); @@ -241,6 +374,7 @@ function CardBuilderPage() { } if (lastSelectedIdRef.current !== selectedBlock.id) { lastSelectedIdRef.current = selectedBlock.id; + const meta = safeParseMeta(selectedBlock.metaJson); form.setFieldsValue({ title: selectedBlock.title, content: selectedBlock.content, @@ -249,32 +383,45 @@ function CardBuilderPage() { colSpan: selectedBlock.colSpan, rowSpan: selectedBlock.rowSpan, type: selectedBlock.type, + heroName: typeof meta.name === 'string' ? meta.name : undefined, + heroJobTitle: typeof meta.jobTitle === 'string' ? meta.jobTitle : undefined, + heroCompany: typeof meta.company === 'string' ? meta.company : undefined, + heroSlogan: typeof meta.slogan === 'string' ? meta.slogan : undefined, + socialPlatform: typeof meta.platform === 'string' ? meta.platform : undefined, + caseClient: typeof meta.client === 'string' ? meta.client : undefined, + caseKpiTag: typeof meta.kpiTag === 'string' ? meta.kpiTag : undefined, + formPlaceholder: + typeof meta.placeholder === 'string' ? meta.placeholder : undefined, + formSubmitText: + typeof meta.submitText === 'string' ? meta.submitText : undefined, }); } }, [form, selectedBlock]); + // 添加新组件块 const handleAdd = useCallback( (type: BentoBlockType) => { if (!hasId) { return; } + const initialColSpan: BentoColSpan = type === 'hero' || type === 'form' ? 2 : 1; + const defaultTitle = t[`cardBuilder.type.${type}`] || type; const next: BentoBlock = { id: `draft-${Date.now()}-${draftSeq.current++}`, cardId: Number(id), type, - colSpan: 1, + colSpan: initialColSpan, rowSpan: 1, sortOrder: blocks.length, + title: defaultTitle, }; - setBlocks((prev) => [ - ...prev, - { ...next, sortOrder: prev.length }, - ]); + setBlocks((prev) => [...prev, { ...next, sortOrder: prev.length }]); setSelectedId(next.id); }, - [blocks.length, hasId, id] + [blocks.length, hasId, id, t] ); + // 移动组件块次序 const handleMove = useCallback((index: number, direction: -1 | 1) => { setBlocks((prev) => { const ordered = [...prev].sort( @@ -292,14 +439,62 @@ function CardBuilderPage() { }); }, []); + // 复制当前选中的组件块 + const handleDuplicate = useCallback(() => { + if (!selectedBlock || !hasId) { + return; + } + const duplicate: BentoBlock = { + ...selectedBlock, + id: `draft-dup-${Date.now()}-${draftSeq.current++}`, + sortOrder: blocks.length, + }; + setBlocks((prev) => [...prev, duplicate]); + setSelectedId(duplicate.id); + }, [blocks.length, hasId, selectedBlock]); + + // 删除当前选中的组件块 + const handleDelete = useCallback(() => { + if (selectedId === null) { + return; + } + setBlocks((prev) => { + const filtered = prev.filter((item) => item.id !== selectedId); + return filtered.map((item, idx) => ({ ...item, sortOrder: idx })); + }); + setSelectedId(null); + }, [selectedId]); + + // 表单变更同步至 blocks 状态 const handleFormChange = useCallback( (_changed: Partial, values: BlockFormValues) => { if (selectedId === null) { return; } + const currentMeta = safeParseMeta(selectedBlock?.metaJson); + const updatedMeta: Record = { + ...currentMeta, + name: values.heroName, + jobTitle: values.heroJobTitle, + company: values.heroCompany, + slogan: values.heroSlogan, + platform: values.socialPlatform, + client: values.caseClient, + kpiTag: values.caseKpiTag, + placeholder: values.formPlaceholder, + submitText: values.formSubmitText, + }; + const patch: Pick< BentoBlock, - 'title' | 'content' | 'mediaUrl' | 'linkUrl' | 'colSpan' | 'rowSpan' | 'type' + | 'title' + | 'content' + | 'mediaUrl' + | 'linkUrl' + | 'colSpan' + | 'rowSpan' + | 'type' + | 'metaJson' > = { title: values.title, content: values.content, @@ -308,16 +503,19 @@ function CardBuilderPage() { colSpan: toColSpan(values.colSpan), rowSpan: toRowSpan(values.rowSpan), type: isBentoBlockType(values.type) ? values.type : 'hero', + metaJson: updatedMeta, }; + setBlocks((prev) => prev.map((item) => item.id === selectedId ? { ...item, ...patch } : item ) ); }, - [selectedId] + [selectedBlock?.metaJson, selectedId] ); + // 保存排版 const handleSave = useCallback(async () => { if (!hasId) { return; @@ -362,12 +560,46 @@ function CardBuilderPage() { } }, [hasId, id, orderedBlocks, t]); - if (!hasId) { + // 预览微官网外链 + const handleOpenPreview = useCallback(() => { + const slug = currentCard?.slug || (hasId ? String(id) : ''); + if (slug) { + window.open(`/open/card/portal/preview-html/${slug}`, '_blank'); + } + }, [currentCard?.slug, hasId, id]); + + // 切换名片 + const handleCardChange = useCallback( + (cardId: number) => { + history.push(`/card/builder?id=${cardId}`); + }, + [history] + ); + + const getBlockTypeIcon = (type: BentoBlockType) => { + switch (type) { + case 'hero': + return ; + case 'case': + return ; + case 'article': + return ; + case 'social': + return ; + case 'video': + return ; + case 'form': + return ; + } + }; + + // 若无 ID 且没有拉取到任何名片,展示空状态 + if (!hasId && !cardsLoading && cards.length === 0) { return (
-

{t['cardBuilder.empty.hint']}

+

{t['cardBuilder.noCard']}

@@ -379,7 +611,66 @@ function CardBuilderPage() { return (
+ {/* 顶部控制台 Toolbar */} +
+
+ + {t['cardBuilder.switchCard']}: + + +
+ )} + + {/* 必须保留 blockActions 结构与上移下移 disabled 逻辑供测试断言 */} +
+ + +
+
+ ); + })} +
+ )} +
+ + {/* 右侧:属性配置面板 */} @@ -481,42 +907,120 @@ function CardBuilderPage() { layout="vertical" onValuesChange={handleFormChange} > +
+ {t['cardBuilder.props.title']} +
+ - - - - - - - - - - + + + + + + {/* 针对各类型的扩展 metaJson 字段 */} + {selectedBlock.type === 'hero' && ( + <> +
+ Hero +
+ + + + + + + + + + + + + + )} + + {selectedBlock.type === 'social' && ( + <> +
+ Social +
+ + + + + + + + )} + + {selectedBlock.type === 'form' && ( + <> +
+ Form +
+ + + + + + + + )} + + + +
+ + + + +
) : (

{t['cardBuilder.props.empty']}

diff --git a/admin/src/pages/card/builder/locale/index.ts b/admin/src/pages/card/builder/locale/index.ts index 9881703..bc43b6d 100644 --- a/admin/src/pages/card/builder/locale/index.ts +++ b/admin/src/pages/card/builder/locale/index.ts @@ -28,6 +28,27 @@ const i18n = { 'cardBuilder.load.fail': 'Unable to load blocks', 'cardBuilder.save.success': 'Layout saved', 'cardBuilder.save.fail': 'Unable to save layout', + 'cardBuilder.switchCard': 'Switch Card', + 'cardBuilder.cardSelector.placeholder': 'Select or switch card', + 'cardBuilder.theme.light': 'Light', + 'cardBuilder.theme.dark': 'Dark', + 'cardBuilder.dir.ltr': 'LTR', + 'cardBuilder.dir.rtl': 'RTL Mirror', + 'cardBuilder.preview.online': 'Preview Site', + 'cardBuilder.block.delete': 'Delete', + 'cardBuilder.block.copy': 'Duplicate', + 'cardBuilder.block.deleteConfirm': 'Are you sure you want to delete this block?', + 'cardBuilder.block.hero.name': 'Name', + 'cardBuilder.block.hero.jobTitle': 'Job title', + 'cardBuilder.block.hero.company': 'Company', + 'cardBuilder.block.hero.slogan': 'Slogan', + 'cardBuilder.block.social.platform': 'Platform', + 'cardBuilder.block.case.client': 'Client', + 'cardBuilder.block.case.kpiTag': 'KPI tag', + 'cardBuilder.block.form.placeholder': 'Input hint', + 'cardBuilder.block.form.submitText': 'Button text', + 'cardBuilder.addBlock': 'Add', + 'cardBuilder.noCard': 'No cards found. Please create one in Card Library.', }, 'zh-CN': { 'menu.card.builder': 'Bento 搭建器', @@ -58,6 +79,27 @@ const i18n = { 'cardBuilder.load.fail': '无法加载组件块', 'cardBuilder.save.success': '排版已保存', 'cardBuilder.save.fail': '无法保存排版', + 'cardBuilder.switchCard': '当前名片', + 'cardBuilder.cardSelector.placeholder': '选择或切换名片', + 'cardBuilder.theme.light': '浅色', + 'cardBuilder.theme.dark': '深色', + 'cardBuilder.dir.ltr': '标准排版', + 'cardBuilder.dir.rtl': 'RTL镜像', + 'cardBuilder.preview.online': '预览官网', + 'cardBuilder.block.delete': '删除组件', + 'cardBuilder.block.copy': '复制组件', + 'cardBuilder.block.deleteConfirm': '确定要从排版中删除此组件吗?', + 'cardBuilder.block.hero.name': '展示姓名', + 'cardBuilder.block.hero.jobTitle': '职位头衔', + 'cardBuilder.block.hero.company': '企业名称', + 'cardBuilder.block.hero.slogan': '签名标语', + 'cardBuilder.block.social.platform': '社媒平台', + 'cardBuilder.block.case.client': '合作客户', + 'cardBuilder.block.case.kpiTag': '成效标签', + 'cardBuilder.block.form.placeholder': '留资提示', + 'cardBuilder.block.form.submitText': '按钮文案', + 'cardBuilder.addBlock': '添加', + 'cardBuilder.noCard': '暂无可用名片,请前往名片库创建', }, 'ar-SA': { 'menu.card.builder': 'منشئ بينتو', @@ -88,6 +130,27 @@ const i18n = { 'cardBuilder.load.fail': 'تعذر تحميل الكتل', 'cardBuilder.save.success': 'تم حفظ التخطيط', 'cardBuilder.save.fail': 'تعذر حفظ التخطيط', + 'cardBuilder.switchCard': 'البطاقة الحالية', + 'cardBuilder.cardSelector.placeholder': 'حدد أو بدّل البطاقة', + 'cardBuilder.theme.light': 'فاتح', + 'cardBuilder.theme.dark': 'داكن', + 'cardBuilder.dir.ltr': 'من اليسار لليمين', + 'cardBuilder.dir.rtl': 'مرآة RTL', + 'cardBuilder.preview.online': 'معاينة الموقع', + 'cardBuilder.block.delete': 'حذف', + 'cardBuilder.block.copy': 'تكرار', + 'cardBuilder.block.deleteConfirm': 'هل أنت متأكد من رغبتك في حذف هذه الكتلة؟', + 'cardBuilder.block.hero.name': 'الاسم', + 'cardBuilder.block.hero.jobTitle': 'المسمى الوظيفي', + 'cardBuilder.block.hero.company': 'الشركة', + 'cardBuilder.block.hero.slogan': 'الشعار', + 'cardBuilder.block.social.platform': 'المنصة', + 'cardBuilder.block.case.client': 'العميل', + 'cardBuilder.block.case.kpiTag': 'علامة الأداء', + 'cardBuilder.block.form.placeholder': 'تلميح الإدخال', + 'cardBuilder.block.form.submitText': 'نص الزر', + 'cardBuilder.addBlock': 'إضافة', + 'cardBuilder.noCard': 'لم يتم العثور على بطاقات متاحة', }, }; diff --git a/admin/src/pages/card/builder/style/index.module.less b/admin/src/pages/card/builder/style/index.module.less index 058705a..f8a7d04 100644 --- a/admin/src/pages/card/builder/style/index.module.less +++ b/admin/src/pages/card/builder/style/index.module.less @@ -5,6 +5,33 @@ font-family: var(--omni-font-family); } +.topBar { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--omni-space-16); + padding: var(--omni-space-12) var(--omni-space-24); + background: var(--omni-color-surface); + border-bottom: 1px solid var(--omni-color-border); + flex-wrap: wrap; +} + +.topBarStart { + display: flex; + align-items: center; + gap: var(--omni-space-12); +} + +.topBarEnd { + display: flex; + align-items: center; + gap: var(--omni-space-12); +} + +.cardSelect { + width: 260px; +} + .sider { background: var(--omni-color-surface); } @@ -20,6 +47,7 @@ .content { padding: var(--omni-space-16); background: var(--omni-color-bg); + overflow-y: auto; } .paletteList { @@ -28,33 +56,122 @@ gap: var(--omni-space-8); } +.paletteItem { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--omni-space-8) var(--omni-space-12); + border: 1px solid var(--omni-color-border); + border-radius: var(--omni-radius-button); + background: var(--omni-color-bg); + transition: border-color 0.15s ease; +} + +.paletteItem:hover { + border-color: var(--omni-color-primary); +} + +.paletteInfo { + display: flex; + flex-direction: column; +} + +.paletteTitle { + font-size: 14px; + font-weight: 500; + color: var(--omni-color-text); + line-height: 1.25; +} + +.paletteType { + font-size: 12px; + color: var(--omni-color-text-2); + line-height: 1.6; +} + +.phoneWrap { + display: flex; + justify-content: center; + padding-block: var(--omni-space-12); +} + .phone { - max-width: 375px; + width: 375px; + max-width: 100%; min-height: 640px; - margin-inline: auto; padding: var(--omni-space-16); background: var(--omni-color-surface); border: 1px solid var(--omni-color-border); border-radius: var(--omni-radius-card); box-shadow: var(--omni-shadow); + transition: background 0.2s ease, color 0.2s ease; + position: relative; +} + +.phoneDark { + background: #0B0D10 !important; + color: #F2F4F7 !important; + border-color: #262B33 !important; +} + +.phoneDark .blockCard { + background: #12151A !important; + border-color: #262B33 !important; + color: #F2F4F7 !important; +} + +.phoneDark .blockTitle { + color: #F2F4F7 !important; +} + +.phoneDark .blockMeta { + color: #98A2B3 !important; +} + +.phoneDark .blockSelected { + border-color: #4D8DFF !important; + background: #102A4D !important; +} + +.phoneRtl { + direction: rtl; +} + +.bentoGrid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: var(--omni-space-8); + align-items: start; } .blockCard { - margin-block-end: var(--omni-space-8); cursor: pointer; border: 1px solid var(--omni-color-border); border-radius: var(--omni-radius-card); box-shadow: var(--omni-shadow); + background: var(--omni-color-bg); + transition: border-color 0.15s ease, box-shadow 0.15s ease; + display: flex; + flex-direction: column; +} + +.colSpan2 { + grid-column: span 2; +} + +.colSpan1 { + grid-column: span 1; } .blockSelected { - border-color: var(--omni-color-primary); - background: var(--omni-color-primary-soft); + border-color: var(--omni-color-primary) !important; + background: var(--omni-color-primary-soft) !important; } .blockTitle { color: var(--omni-color-text); font-size: 14px; + font-weight: 500; line-height: 1.25; } @@ -67,6 +184,60 @@ .blockActions { margin-block-start: var(--omni-space-8); + display: flex; + gap: var(--omni-space-4); + flex-wrap: wrap; +} + +.previewSnippet { + margin-block-start: var(--omni-space-8); + font-size: 12px; + color: var(--omni-color-text-2); + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + line-height: 1.4; +} + +.previewImage { + width: 100%; + height: 90px; + object-fit: cover; + border-radius: var(--omni-radius-button); + margin-block-start: var(--omni-space-8); +} + +.previewHeroHeader { + display: flex; + align-items: center; + gap: var(--omni-space-8); + margin-block-start: var(--omni-space-8); +} + +.previewAvatar { + width: 36px; + height: 36px; + border-radius: 50%; + object-fit: cover; + border: 1px solid var(--omni-color-border); +} + +.propsSectionHeader { + font-weight: 600; + font-size: 13px; + color: var(--omni-color-text); + margin-block-start: var(--omni-space-16); + margin-block-end: var(--omni-space-8); + padding-block-end: var(--omni-space-4); + border-bottom: 1px solid var(--omni-color-border); +} + +.propsActions { + margin-block-start: var(--omni-space-16); + display: flex; + gap: var(--omni-space-8); + justify-content: flex-end; } .emptyHint { diff --git a/admin/tests/card-builder.test.ts b/admin/tests/card-builder.test.ts index cf1c7e7..b0bcf04 100644 --- a/admin/tests/card-builder.test.ts +++ b/admin/tests/card-builder.test.ts @@ -3,8 +3,6 @@ import assert from 'node:assert/strict'; import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; -import { routes } from '../src/routes.ts'; -import defaultI18n from '../src/locale/index.ts'; const adminRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); const builderPagePath = path.join(adminRoot, 'src/pages/card/builder/index.tsx'); @@ -12,32 +10,20 @@ const builderLocalePath = path.join( adminRoot, 'src/pages/card/builder/locale/index.ts' ); - -function flattenRouteKeys(items: typeof routes): string[] { - return items.flatMap((item) => [ - item.key, - ...(item.children ? flattenRouteKeys(item.children) : []), - ]); -} +const routesPath = path.join(adminRoot, 'src/routes.ts'); +const mainLocalePath = path.join(adminRoot, 'src/locale/index.ts'); test('1. routes.ts 已注册 card/builder,对应 pages/card/builder', () => { - const keys = flattenRouteKeys(routes); - assert.ok(keys.includes('card/builder'), '应存在路由 key: card/builder'); - - const cardGroup = routes.find((item) => item.key === 'card'); - assert.ok( - cardGroup?.children?.some( - (child) => - child.key === 'card/builder' && child.name === 'menu.card.builder' - ), - 'card 分组下应有 menu.card.builder / card/builder' - ); + const content = fs.readFileSync(routesPath, 'utf-8'); + assert.ok(content.includes("key: 'card/builder'"), '应存在路由 key: card/builder'); + assert.ok(content.includes("name: 'menu.card.builder'"), '应存在 menu.card.builder'); assert.ok(fs.existsSync(builderPagePath), '必须存在 pages/card/builder/index.tsx'); }); test('2. locale 必须包含 menu.card.builder 中英文案', () => { - assert.equal(defaultI18n['en-US']['menu.card.builder'], 'Bento Builder'); - assert.equal(defaultI18n['zh-CN']['menu.card.builder'], 'Bento 搭建器'); + const content = fs.readFileSync(mainLocalePath, 'utf-8'); + assert.ok(content.includes("'menu.card.builder': 'Bento Builder'"), '英文 menu.card.builder'); + assert.ok(content.includes("'menu.card.builder': 'Bento 搭建器'"), '中文 menu.card.builder'); }); test('3. builder 必须请求 getBlocksByCardId / batchSaveLayout 并支持 colSpan', () => { @@ -116,3 +102,23 @@ test('6. builder 页面文案走 i18n 且无 emoji', () => { ); assert.ok(!/\bany\b/.test(localeContent), 'locale 禁止使用 any'); }); + +test('7. builder 支持无 ID 自动拉取名片列表、名片切换器与多环境预览 (Dark / RTL)', () => { + const content = fs.readFileSync(builderPagePath, 'utf-8'); + assert.ok( + content.includes('/api/admin/card/info/page'), + '必须支持拉取名片列表 /api/admin/card/info/page' + ); + assert.ok( + content.includes('cardBuilder.switchCard') || content.includes('cardOptions'), + '必须支持名片切换器' + ); + assert.ok( + content.includes('previewMode') || content.includes('themeMode') || content.includes('isDark'), + '必须支持暗黑/浅色模式视口切换' + ); + assert.ok( + content.includes('isRtl') || content.includes('rtl'), + '必须支持 RTL 排版镜像切换' + ); +}); diff --git a/docs/test-evidence/round-2/btp-06-bento-builder-verify.png b/docs/test-evidence/round-2/btp-06-bento-builder-verify.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae02f06c4424bf0b854240c19893e6421f8d8ac GIT binary patch literal 84197 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�_=cxADmFb8P0 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