feat: 新增商业化新账统计与出海财务运营驾驶舱,支持运营官(COO)与财务官(CFO)双重视角穿透

这个提交包含在:
wikiboss
2026-09-21 01:52:02 +08:00
父节点 83ca2add7b
当前提交 9f8e309a4a
共有 28 个文件被更改,包括 2445 次插入 和 83 次删除

查看文件

@@ -85,12 +85,26 @@ type LoadOverviewInput = {
cardId?: string | number;
};
type OverviewState = {
leads: LeadEntity[];
tracks: RadarTrack[];
summary: OverviewSummary;
loading: boolean;
empty: boolean;
errorMessage: string;
};
type UseOverviewModule = {
summarize: (leads: LeadEntity[], tracks: RadarTrack[]) => OverviewSummary;
loadOverview: (
input?: LoadOverviewInput,
api?: LoadOverviewApi
) => Promise<LoadOverviewResult>;
createOverviewState: () => OverviewState;
refreshOverview: (
state: OverviewState,
api?: LoadOverviewApi
) => Promise<LoadOverviewResult>;
};
const EMOJI_RE = /[\u2600-\u27BF\uFE0F]|[\uD83C-\uDBFF][\uDC00-\uDFFF]/;
@@ -321,6 +335,24 @@ describe('OmniCard AI 展会团队战报 (useOverview.uts)', () => {
expect(result.errorMessage).toBe('lead page unavailable');
});
});
describe('3. refreshOverview 触觉震动与状态刷新', () => {
it('3.1 刷新成功时触发 uni.vibrateShort 触觉震动反馈', async () => {
const { refreshOverview, createOverviewState } = loadUseOverview();
const state = createOverviewState();
const fetchOwnerLeadPage = jest.fn(async () => buildPage([buildLead()]));
const fetchOwnerRadarPage = jest.fn(async () => buildPage([buildTrack()]));
const vibrateMock = jest.fn();
(global as any).uni.vibrateShort = vibrateMock;
await refreshOverview(state, { fetchOwnerLeadPage, fetchOwnerRadarPage });
expect(vibrateMock).toHaveBeenCalledTimes(1);
expect(state.loading).toBe(false);
expect(state.leads.length).toBe(1);
});
});
});
describe('OmniCard AI 展会团队战报页契约 (overview.uvue)', () => {