Files
pnoker df35851f3b feat(auth): page mcp tool catalog and audit queries
Replace limit-truncated listing with real server-side paging
(LIMIT/OFFSET plus a shared count query) behind Page envelopes:
tool/list accepts a nested Pages block and audit/list takes
current/size params, both keeping the legacy limit as a compatibility
page size. The frontend configs forward pager state and consume
{records, total} instead of faking a single page; the assignment
drawer keeps its full-catalog semantics with one 500-row page (the
service cap). Adds a mapper XML grammar gate and audit page/count
symmetry tests.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-28 00:25:10 +08:00
..

DC3 Web

dc3-web is the Vue and TypeScript management frontend for IoT DC3. It communicates with the backend exclusively through dc3-gateway.

Prerequisites

  • Node.js 22 or newer, as declared by engines in package.json.
  • Corepack enabled.
  • The pnpm version declared by packageManager in package.json.
corepack enable
pnpm install

Use pnpm only. Do not generate npm or Yarn lockfiles. When changing the package-manager version, keep package.json and the Dockerfile toolchain pin aligned.

Develop

pnpm dev

The development server uses the port and API proxy configured by vite.config.ts and src/config/env/. Its defaults are http://localhost:8080 for the UI and http://localhost:8000 for the gateway. The UI can start without the backend, but login and data requests require a running gateway and center services.

Build and verify

pnpm check
pnpm lint:check
pnpm test:guard
pnpm test:ci
pnpm build

Run focused suites with pnpm test:unit, pnpm test:api, pnpm test:component, or pnpm test:views. Browser workflows use pnpm test:e2e; see tests/README.md for the test layers and fixture policy.

Project conventions

  • Vite environment files live under src/config/env/ and use the APP_ prefix.
  • Java 64-bit IDs are represented as strings. The backend emits identifiers as JSON strings on the HTTP contract, so standard JSON parsing is sufficient.
  • Type-only imports must use import type because verbatimModuleSyntax is enabled.
  • API wrapper names mirror backend cardinality: getXxx for one result and listXxx for collections/pages/maps.
  • Every router-guard branch must settle navigation.

Repository-wide architecture, commit, and verification rules are in ../AGENTS.md.