feat: restructure mdtodo project page

This commit is contained in:
lyon
2026-06-25 22:12:13 +08:00
parent cc7c5c2ecb
commit 315cfb280f
5 changed files with 401 additions and 110 deletions
@@ -15,10 +15,31 @@ test.describe("project management pages", () => {
await page.getByTestId("open-mdtodo-page").click();
await expect(page).toHaveURL(/\/projects\/mdtodo/u);
await expect(page.getByTestId("project-management-mdtodo")).toBeVisible();
await expect(page.getByTestId("mdtodo-source-list")).toContainText("HWLAB MDTODO");
await expect(page.getByTestId("mdtodo-file-list")).toContainText("项目管理任务");
await expect(page.getByTestId("mdtodo-toolbar")).toBeVisible();
await expect(page.getByTestId("mdtodo-source-select")).toHaveValue("hwlab-v03-mdtodo");
await expect(page.getByTestId("mdtodo-file-select")).toHaveValue("file_plan");
await expect(page.locator(".mdtodo-summary-grid .metric-card")).toHaveCount(0);
await expect(page.locator(".mdtodo-source-panel")).toHaveCount(0);
await expect(page.locator(".mdtodo-file-panel")).toHaveCount(0);
await expect(page.getByTestId("mdtodo-task-tree")).toContainText("实现项目根导航");
await expect(page.getByTestId("mdtodo-task-detail")).toContainText("mdtodo:hwlab-v03-mdtodo:file_plan:t1");
await expect(page.locator('[data-task-id="R1"]')).toBeVisible();
await expect(page.locator('[data-task-id="R1.1"]')).toBeVisible();
await expect(page.locator('[data-task-id="R1.1.1"]')).toBeVisible();
await expect(page.getByTestId("mdtodo-task-detail")).toContainText("mdtodo:hwlab-v03-mdtodo:file_plan:R1");
await page.getByTestId("mdtodo-info-open").click();
await expect(page.getByTestId("mdtodo-info-popover")).toContainText("Source");
await expect(page.getByTestId("mdtodo-info-popover")).toContainText("Files");
await expect(page.getByTestId("mdtodo-info-popover")).toContainText("Tasks");
await page.getByLabel("关闭摘要").click();
await page.getByTestId("mdtodo-source-config-open").click();
await expect(page.getByTestId("mdtodo-source-config-dialog")).toBeVisible();
await expect(page.getByTestId("mdtodo-source-form-hwpod")).toHaveValue("d601-f103-v2");
await expect(page.getByTestId("mdtodo-source-form-root")).toHaveValue("docs/MDTODO/");
await page.getByTestId("mdtodo-source-probe").click();
await expect(page.getByTestId("mdtodo-source-message")).toContainText("Probe ok");
await page.getByTestId("mdtodo-source-reindex-dialog").click();
await expect(page.getByTestId("mdtodo-source-message")).toContainText("Reindex 2 files / 4 tasks");
await page.getByLabel("关闭配置").click();
await expect(page.getByTestId("mdtodo-workbench-link-summary")).toContainText("ses_project_seed");
await expect(page.getByTestId("mdtodo-workbench-launch")).toBeEnabled();
await expect(page.locator("iframe")).toHaveCount(0);
@@ -34,9 +55,9 @@ test.describe("project management pages", () => {
expect(sessionDetail.ok()).toBeTruthy();
const sessionPayload = await sessionDetail.json();
expect(sessionPayload.session?.launchContext?.projectId ?? sessionPayload.session?.metadata?.launchContext?.projectId).toBe("project_hwlab_v03");
expect(sessionPayload.session?.launchContext?.taskRef ?? sessionPayload.session?.metadata?.launchContext?.taskRef).toBe("mdtodo:hwlab-v03-mdtodo:file_plan:t1");
expect(sessionPayload.session?.launchContext?.taskRef ?? sessionPayload.session?.metadata?.launchContext?.taskRef).toBe("mdtodo:hwlab-v03-mdtodo:file_plan:R1");
const links = await page.request.get("/v1/project-management/workbench-links?taskRef=mdtodo:hwlab-v03-mdtodo:file_plan:t1");
const links = await page.request.get("/v1/project-management/workbench-links?taskRef=mdtodo:hwlab-v03-mdtodo:file_plan:R1");
expect(links.ok()).toBeTruthy();
const linksPayload = await links.json();
expect(linksPayload.links.some((link: { sessionId?: string }) => link.sessionId === sessionId)).toBeTruthy();