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>
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
enginesinpackage.json. - Corepack enabled.
- The pnpm version declared by
packageManagerinpackage.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 theAPP_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 typebecauseverbatimModuleSyntaxis enabled. - API wrapper names mirror backend cardinality:
getXxxfor one result andlistXxxfor collections/pages/maps. - Every router-guard branch must settle navigation.
Repository-wide architecture, commit, and verification rules are in ../AGENTS.md.