From 043ba8df7713f8ee9762dcd6da4f533fe993b3d1 Mon Sep 17 00:00:00 2001
From: czl231 <3286836406@qq.com>
Date: Sun, 16 Aug 2026 19:07:27 +0800
Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E5=95=86=E5=93=81=E5=88=86?=
=?UTF-8?q?=E7=B1=BB=E6=A0=87=E8=AF=86=E4=B8=8E=E8=AF=84=E4=BB=B7=E5=85=B3?=
=?UTF-8?q?=E8=81=94=E5=B1=95=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...—¥å¿—_商å“åˆ†ç±»ç³»ç»Ÿå”¯ä¸€æ ‡è¯†å±•ç¤ºç»Ÿä¸€_20260816.md | 43 +++++++++++++++++++
.../æ“作日志_商å“评价关è”å称展示_20260816.md | 43 +++++++++++++++++++
.../æ“作日志_商城订å•列表展示修å¤_20260816.md | 1 +
docs/项目文档_å¹³å°èµ„æºä¸æ–‡å±•示统一_v1.0.md | 2 +
.../check-resource-display-contracts.mjs | 38 +++++++++++++++-
frontend/platform_admin/src/api/resources.ts | 14 +++++-
.../src/views/shared/TreePage.vue | 15 ++++++-
7 files changed, 150 insertions(+), 6 deletions(-)
create mode 100644 docs/æ“作日志_商å“åˆ†ç±»ç³»ç»Ÿå”¯ä¸€æ ‡è¯†å±•ç¤ºç»Ÿä¸€_20260816.md
create mode 100644 docs/æ“作日志_商å“评价关è”å称展示_20260816.md
diff --git a/docs/æ“作日志_商å“åˆ†ç±»ç³»ç»Ÿå”¯ä¸€æ ‡è¯†å±•ç¤ºç»Ÿä¸€_20260816.md b/docs/æ“作日志_商å“åˆ†ç±»ç³»ç»Ÿå”¯ä¸€æ ‡è¯†å±•ç¤ºç»Ÿä¸€_20260816.md
new file mode 100644
index 0000000..0c3069b
--- /dev/null
+++ b/docs/æ“作日志_商å“åˆ†ç±»ç³»ç»Ÿå”¯ä¸€æ ‡è¯†å±•ç¤ºç»Ÿä¸€_20260816.md
@@ -0,0 +1,43 @@
+# 商å“åˆ†ç±»ç³»ç»Ÿå”¯ä¸€æ ‡è¯†å±•ç¤ºç»Ÿä¸€æ“作日志
+
+æ“作时间:2026-08-16
+
+æ“作类型:修改
+
+影哿¨¡å—ï¼šå¹³å°æ€»åŽå°ç”µå•†å¹³å°ç®¡ç†ã€å•†å“åˆ†ç±»æ ‘å½¢è¡¨æ ¼
+
+## æ“作å‰çжæ€
+
+- 商å“åˆ†ç±»ä½¿ç”¨â€œç³»ç»Ÿæ ‡è¯†â€åˆ—å,å•å…ƒæ ¼å›ºå®šæ˜¾ç¤ºâ€œå¤åˆ¶æ ‡è¯†â€ã€‚
+- 商城订å•ã€å•†å“è¯„ä»·ç‰æ ‡å‡†åˆ—è¡¨ä½¿ç”¨â€œç³»ç»Ÿå”¯ä¸€æ ‡è¯†â€åˆ—åå¹¶æ˜¾ç¤ºæˆªæ–æ ‡è¯†ï¼Œç”µå•†æ¨¡å—内部ä¸ä¸€è‡´ã€‚
+
+## 具体æ“作
+
+1. 商å“åˆ†ç±»åˆ—åæ”¹ä¸ºâ€œç³»ç»Ÿå”¯ä¸€æ ‡è¯†â€ã€‚
+2. 商å“分类å•å…ƒæ ¼æ˜¾ç¤ºæˆªæ–ç³»ç»Ÿå”¯ä¸€æ ‡è¯†ï¼Œå¹¶ç»§ç»æ”¯æŒå®Œæ•´ UUID 悬浮查看和å¤åˆ¶ã€‚
+3. 商å“åˆ†ç±»æ ‡è¯†åˆ—å®½ç”± `120px` è°ƒæ•´ä¸ºä¸Žæ ‡å‡†åˆ—è¡¨ä¸€è‡´çš„ `170px`。
+4. å…±äº«æ ‘é¡µä¸çš„å¹³å°èœå•ç»´æŒâ€œç³»ç»Ÿæ ‡è¯† / å¤åˆ¶æ ‡è¯†â€ï¼Œé¿å…扩大改动范围。
+5. æ›´æ–°é™æ€å±•示契约检查,分别约æŸå•†å“åˆ†ç±»å’Œå…¶ä»–æ ‘å½¢èµ„æºã€‚
+
+## 行为å˜åŒ–
+
+- 修改å‰ï¼šå•†å“åˆ†ç±»æ˜¾ç¤ºâ€œç³»ç»Ÿæ ‡è¯† / å¤åˆ¶æ ‡è¯†â€ã€‚
+- 修改åŽï¼šå•†å“åˆ†ç±»æ˜¾ç¤ºâ€œç³»ç»Ÿå”¯ä¸€æ ‡è¯† / æˆªæ–æ ‡è¯†â€ï¼Œäº¤äº’与其他电商列表一致。
+- 分类新增ã€ç¼–辑ã€å¯åœã€å½’æ¡£åŠå±‚çº§å…³ç³»å‡æœªæ”¹å˜ã€‚
+
+## 代ç å˜æ›´
+
+- `frontend/platform_admin/src/views/shared/TreePage.vue`ï¼šå¢žåŠ å•†å“åˆ†ç±»ä¸“å±žæ ‡è¯†åˆ—å±•ç¤ºã€‚
+- `frontend/platform_admin/scripts/check-resource-display-contracts.mjs`ï¼šæ›´æ–°æ ‘å½¢èµ„æºå±•示æ–言。
+- `docs/项目文档_å¹³å°èµ„æºä¸æ–‡å±•示统一_v1.0.md`:记录 v1.6 å˜æ›´ã€‚
+
+## 验è¯ç»“æžœ
+
+- `pnpm resource-display-contracts:check`:通过。
+- `pnpm type:check`:通过。
+- `pnpm build`:通过,Vite æˆåŠŸå®Œæˆ 2621 个模å—的生产构建。
+
+## 风险评估
+
+- æœ¬æ¬¡åªæ”¹å˜å•†å“åˆ†ç±»çš„æŠ€æœ¯æ ‡è¯†å±•ç¤ºï¼Œä¸ä¿®æ”¹ UUIDã€æŽ¥å£æˆ–业务数æ®ã€‚
+- å¹³å°èœå•ç»§ç»ä¿æŒåŽŸå±•ç¤ºæ–¹å¼ã€‚
diff --git a/docs/æ“作日志_商å“评价关è”å称展示_20260816.md b/docs/æ“作日志_商å“评价关è”å称展示_20260816.md
new file mode 100644
index 0000000..21aa182
--- /dev/null
+++ b/docs/æ“作日志_商å“评价关è”å称展示_20260816.md
@@ -0,0 +1,43 @@
+# 商å“评价关è”å称展示æ“作日志
+
+æ“作时间:2026-08-16
+
+æ“作类型:修改
+
+影哿¨¡å—ï¼šå¹³å°æ€»åŽå°ç”µå•†å¹³å°ç®¡ç†ã€å•†å“评价åªè¯»åˆ—表与详情
+
+## æ“作å‰çжæ€
+
+- 商å“评价列表直接显示商城订å•ã€å•†å“和用户 UUID。
+- 管ç†å‘˜æ— 法从列表直接识别评价对应的订å•å·ã€å•†å“å称和用户å称。
+
+## 具体æ“作
+
+1. 商城订å•关系统一展示订å•å·ã€‚
+2. 商å“关系统一展示商å“å称。
+3. 用户关系统一展示用户å称。
+4. 三类关系继ç»ä¿ç•™ UUID å¤åˆ¶å…¥å£åŠå·²æœ‰è¯¦æƒ…跳转能力。
+5. å¢žåŠ é™æ€å±•示契约检查,防æ¢å…³ç³»å—段退回裸 UUID。
+
+## 行为å˜åŒ–
+
+- 修改å‰ï¼šä¸‰ä¸ªå…³ç³»å—æ®µä»¥â€œå”¯ä¸€æ ‡è¯†â€ä¸ºåˆ—å并直接显示 UUID。
+- 修改åŽï¼šåˆ—表以“商城订å•â€â€œå•†å“â€â€œç”¨æˆ·â€ä¸ºåˆ—å并显示å¯è¯»å称,UUID é™çº§ä¸ºå¤åˆ¶å’ŒæŽ’障信æ¯ã€‚
+- 商å“评价ä»ä¸ºåªè¯»èµ„æºï¼ŒæŽ¥å£ã€æƒé™ã€è¯„åˆ†å’Œè¯„ä»·å†…å®¹å‡æœªæ”¹å˜ã€‚
+
+## 代ç å˜æ›´
+
+- `frontend/platform_admin/src/api/resources.ts`ï¼šè¡¥é½ `ec_review` 三类关系的å称展示é…置。
+- `frontend/platform_admin/scripts/check-resource-display-contracts.mjs`ï¼šå¢žåŠ å•†å“评价关系展示回归检查。
+- `docs/项目文档_å¹³å°èµ„æºä¸æ–‡å±•示统一_v1.0.md`:记录 v1.5 å˜æ›´ã€‚
+
+## 验è¯ç»“æžœ
+
+- `pnpm resource-display-contracts:check`:通过。
+- `pnpm type:check`:通过。
+- `pnpm build`:通过,Vite æˆåŠŸå®Œæˆ 2621 个模å—的生产构建。
+
+## 风险评估
+
+- å…³è”åŠ è½½å¤±è´¥æ—¶æ˜¾ç¤ºâ€œåç§°åŠ è½½å¤±è´¥â€ï¼ŒUUID ä»å¯ç”¨äºŽæŽ’障。
+- æœ¬æ¬¡ä»…ä¿®æ”¹å±•ç¤ºå¥‘çº¦ï¼Œä¸æ”¹å˜ä¸šåŠ¡æ•°æ®ã€‚
diff --git a/docs/æ“作日志_商城订å•列表展示修å¤_20260816.md b/docs/æ“作日志_商城订å•列表展示修å¤_20260816.md
index e9bd471..528f227 100644
--- a/docs/æ“作日志_商城订å•列表展示修å¤_20260816.md
+++ b/docs/æ“作日志_商城订å•列表展示修å¤_20260816.md
@@ -24,6 +24,7 @@
8. å¾…å‘è´§ã€æœªæ”¶è´§åŠæ— å¤‡æ³¨å—æ®µä½¿ç”¨æ˜Žç¡®ä¸šåŠ¡æ–‡æ¡ˆï¼Œä¸å†ç»Ÿä¸€æ˜¾ç¤ºçŸæ¨ªçº¿ã€‚
9. å¢žåŠ ç‹¬ç«‹å¹‚ç‰ä¿®å¤å‘½ä»¤ï¼Œåªæ›´æ–°å›ºå®šåæ¡å•†åŸŽ Mock 订å•åŠå…¶ç”¨æˆ·ã€åœ°å€å¿«ç…§æ¥æºã€‚
10. å¢žåŠ å‰ç«¯å±•示契约与åŽç«¯ç§å测试,防æ¢è·¨é¢†åŸŸçжæ€å†æ¬¡æ··å…¥å•†åŸŽè®¢å•。
+11. è¡¥é½å•†å“评价列表的商城订å•ã€å•†å“和用户关系å称展示,é¿å…相邻电商页é¢ç»§ç»ç›´æŽ¥æ˜¾ç¤º UUID。
## 行为å˜åŒ–
diff --git a/docs/项目文档_å¹³å°èµ„æºä¸æ–‡å±•示统一_v1.0.md b/docs/项目文档_å¹³å°èµ„æºä¸æ–‡å±•示统一_v1.0.md
index dfb2db3..a34b8a7 100644
--- a/docs/项目文档_å¹³å°èµ„æºä¸æ–‡å±•示统一_v1.0.md
+++ b/docs/项目文档_å¹³å°èµ„æºä¸æ–‡å±•示统一_v1.0.md
@@ -66,3 +66,5 @@ frontend/platform_admin/
- v1.2.1ï¼šè¡¥é½ Arco è¡¨æ ¼ `columns` æ’æ§½ï¼Œä¿®å¤æ ‘å½¢è¡¨æ ¼å®¹å™¨å˜åœ¨ä½†åˆ—和数æ®ä¸æ¸²æŸ“的问题。
- v1.3:è´ç‰©è½¦åˆ—表的用户与商å“关系列统一展示å¯è¯»å称,UUID é™çº§ä¸ºå¤åˆ¶å’ŒæŽ’障信æ¯ã€‚
- v1.4:商城订å•统一展示用户åç§°åŠç©ºå€¼ä¸šåŠ¡æ–‡æ¡ˆï¼›Mock è®¢å•æ”¹ç”¨å•†åŸŽç‹¬ç«‹äº¤æ˜“状æ€ï¼Œå¹¶è¡¥é½é‡‘é¢ã€æ”¯ä»˜æ—¶é—´å’Œä¸‹å•快照。
+- v1.5:商å“评价列表的商城订å•ã€å•†å“和用户关系统一展示å¯è¯»ä¸šåŠ¡å称,UUID é™çº§ä¸ºå¤åˆ¶ä¿¡æ¯ã€‚
+- v1.6:商å“åˆ†ç±»çš„æŠ€æœ¯æ ‡è¯†åˆ—ä¸Žå…¶ä»–ç”µå•†åˆ—è¡¨ç»Ÿä¸€ä¸ºâ€œç³»ç»Ÿå”¯ä¸€æ ‡è¯†â€ï¼Œæ˜¾ç¤ºæˆªæ–值并ä¿ç•™å¤åˆ¶èƒ½åŠ›ã€‚
diff --git a/frontend/platform_admin/scripts/check-resource-display-contracts.mjs b/frontend/platform_admin/scripts/check-resource-display-contracts.mjs
index 1e908c2..1c25359 100644
--- a/frontend/platform_admin/scripts/check-resource-display-contracts.mjs
+++ b/frontend/platform_admin/scripts/check-resource-display-contracts.mjs
@@ -151,6 +151,30 @@ for (const displayContract of [
}
}
+// 商å“评价的订å•ã€å•†å“和用户关系必须以å¯è¯»ä¸šåŠ¡å称展示。
+const reviewDefinition = resources.match(
+ /define\('ec_review',[\s\S]*?\n\s*\]\),/,
+)?.[0];
+if (!reviewDefinition) throw new Error('æ— æ³•è¯»å–商å“评价资æºå®šä¹‰');
+for (const [key, label] of [
+ ['ec_order_identity', '商城订å•'],
+ ['ec_product_identity', '商å“'],
+ ['user_account_identity', '用户'],
+]) {
+ const field = reviewDefinition.match(
+ new RegExp(`relation\\('${key}'[\\s\\S]*?\\}\\)`),
+ )?.[0];
+ if (
+ !field ||
+ !field.includes(`listLabel: '${label}'`) ||
+ !field.includes('listRelationNameOnly: true') ||
+ !field.includes('displayRelationLabel: true') ||
+ !field.includes('showIdentityCopy: true')
+ ) {
+ throw new Error(`商å“评价的${label}列必须展示业务åç§°å¹¶ä¿ç•™å”¯ä¸€æ ‡è¯†å¤åˆ¶å…¥å£`);
+ }
+}
+
if (/title="ID"|data-index="id"/.test(listPage)) {
throw new Error('æ ‡å‡†èµ„æºåˆ—表ä¸å¾—把数æ®åº“ID作为业务列展示');
}
@@ -165,9 +189,19 @@ assertIncludes(
'',
'Arco æ ‘å½¢è¡¨æ ¼åˆ—å¿…é¡»æ”¾å…¥ columns æ’æ§½ï¼Œé¿å…è¿è¡Œæ—¶æ¸²æŸ“为空白',
);
-for (const columnTitle of ['分类åç§°', '排åº', '状æ€', 'ç³»ç»Ÿæ ‡è¯†', 'æ“作']) {
+for (const columnTitle of ['分类åç§°', '排åº', '状æ€', 'æ“作']) {
assertIncludes(treePage, columnTitle, `æ ‘å½¢è¡¨æ ¼ç¼ºå°‘å¿…è¦åˆ—:${columnTitle}`);
}
+assertIncludes(
+ treePage,
+ "definition.name === 'ec_category' ? 'ç³»ç»Ÿå”¯ä¸€æ ‡è¯†' : 'ç³»ç»Ÿæ ‡è¯†'",
+ '商å“åˆ†ç±»å¿…é¡»ä½¿ç”¨ä¸Žæ ‡å‡†åˆ—è¡¨ä¸€è‡´çš„ç³»ç»Ÿå”¯ä¸€æ ‡è¯†åˆ—å',
+);
+assertIncludes(
+ treePage,
+ 'v-if="definition.name === \'ec_category\'"',
+ '商å“分类必须显示截æ–ç³»ç»Ÿå”¯ä¸€æ ‡è¯†è€Œä¸æ˜¯é€šç”¨å¤åˆ¶æ–‡æ¡ˆ',
+);
assertIncludes(
treePage,
'{{ record.name }}',
@@ -176,7 +210,7 @@ assertIncludes(
assertIncludes(
treePage,
'display-text="å¤åˆ¶æ ‡è¯†"',
- 'æ ‘å½¢è¡¨æ ¼ä¸å¾—把截æ–å”¯ä¸€æ ‡è¯†ä½œä¸ºé«˜ä¼˜å…ˆçº§æ£æ–‡',
+ 'éžå•†å“åˆ†ç±»æ ‘å½¢èµ„æºä»åº”ä¿ç•™ä½Žä¼˜å…ˆçº§å¤åˆ¶æ–‡æ¡ˆ',
);
assertIncludes(
identityText,
diff --git a/frontend/platform_admin/src/api/resources.ts b/frontend/platform_admin/src/api/resources.ts
index 4076f76..5875b30 100644
--- a/frontend/platform_admin/src/api/resources.ts
+++ b/frontend/platform_admin/src/api/resources.ts
@@ -728,8 +728,18 @@ export const resources: ResourceUiDefinition[] = [
f('product_snapshot'), f('quantity'), f('sale_amount'),
]),
define('ec_review', '商å“评价', 'readonly', [
- relation('ec_order_identity', '/ec_order'), relation('ec_product_identity', '/ec_product'),
- relation('user_account_identity', '/user_account'), f('score'), f('content'),
+ relation('ec_order_identity', '/ec_order', false, {
+ label: '商城订å•', listLabel: '商城订å•', listRelationNameOnly: true,
+ displayRelationLabel: true, showIdentityCopy: true,
+ }),
+ relation('ec_product_identity', '/ec_product', false, {
+ label: '商å“', listLabel: '商å“', listRelationNameOnly: true,
+ displayRelationLabel: true, showIdentityCopy: true,
+ }),
+ relation('user_account_identity', '/user_account', false, {
+ label: '用户', listLabel: '用户', listRelationNameOnly: true,
+ displayRelationLabel: true, showIdentityCopy: true,
+ }), f('score'), f('content'),
]),
define('wallet_basic', '钱包', 'readonly', [f('owner_type'), f('owner_identity', {
diff --git a/frontend/platform_admin/src/views/shared/TreePage.vue b/frontend/platform_admin/src/views/shared/TreePage.vue
index 47a4ad9..773fc7e 100644
--- a/frontend/platform_admin/src/views/shared/TreePage.vue
+++ b/frontend/platform_admin/src/views/shared/TreePage.vue
@@ -37,9 +37,20 @@
-
+
-
+
+