diff --git a/apps/web/src/features/gov-activity/internal/panel.tsx b/apps/web/src/features/gov-activity/internal/panel.tsx index 3f2373d..8a00cac 100644 --- a/apps/web/src/features/gov-activity/internal/panel.tsx +++ b/apps/web/src/features/gov-activity/internal/panel.tsx @@ -5,7 +5,8 @@ * DOM 结构、类名(`g-*` + 色调 `t-*`)与文案原样保留,mock 常量换成服务端投影(README 平移规则 1/2/4)。 * 区首页只负责导航,治理动作一律落在下钻详情页的**就地确认带**(影响预览三必答)。 */ -import { Card, Chip, Clear, Entry, NList, NRow, Note, PageHead, QueryGate, St } from '@web-shared/gov/primitives.tsx'; +import { Ico } from '@web-shared/Ico.tsx'; +import { Card, Chip, Clear, Entry, Note, PageHead, QueryGate, St } from '@web-shared/gov/primitives.tsx'; import { PARA } from '@web-shared/gov/tone.ts'; import type { Nav } from '@web-shared/gov/gov-route.ts'; import { @@ -20,37 +21,56 @@ export function LibraryHome({ nav }: HomeProps) { const activities = q.data?.activities ?? []; return ( - <> - - 活动是任务的定义:编排引用一个活动,运行时就长出一个任务。业务分类 × 活动类型两维平级; - 每活动两条版本序列——包版本走安装两审,资产版本走进化管线。 - - - {activities.map((a) => { - const effective = a.assetVersions.filter((v) => v.effective); - return ( - {a.packageVersions.map((p) => p.version).join(', ')} }, - { k: '资产生效版', v: {effective.length} }, - ]} - right={ - - {a.enabled ? '已启用' : '已停用'} - - } - onClick={() => nav.push({ k: 'act', id: a.activityId })} - /> - ); - })} - - + <> + + 活动是任务的定义:编排引用一个活动,运行时就长出一个任务。业务分类 × 活动类型两维平级; + 每活动两条版本序列——包版本走安装两审,资产版本走进化管线。 + 审批点与网关不在这里:它们是流程层的系统内置要素,零开发、不入库。 + + {activities.length === 0 ? ( + 货架是空的 —— 装一个活动进来,编排里才引用得到它。 + ) : ( +
+ {activities.map((a) => { + const para = PARA[a.paradigm]; + const latest = a.packageVersions[a.packageVersions.length - 1]; + const effective = a.assetVersions.filter((v) => v.effective).length; + return ( + + ); + })} +
+ )} +
); }