- springdoc: declare api-docs/swagger-ui enabled explicitly; the boot
reminder only fires on unset properties, so the intent-declaring
values keep behavior identical and quiet all six services
- netty: add the macos dns native resolver to the gateway so the
resolver does not log an error at boot on mac dev machines (the
no-classifier jar bundles every arch and is inert on linux)
- hibernate-validator HV000271: spring-cloud-gateway 4.3.0 still uses
container-level @Valid on its List properties. logger-level rules
cannot suppress it because spring boot's logging re-init installs a
second loggercontext that resets them, so drop the exact message
with a turbo filter attached to every context loading this config;
the class documents the upstream trigger for removal
live verification: five services plus gateway boot with zero warn and
zero error lines, virtual driver included; salt/login probe 200
reactiveloadbalancer is intentionally absent from the gateway; loading
the no-load-balancer-client autoconfiguration only emits a
typenotpresent introspection warning at boot
- migrate auth, manager, data, and agentic persistence to R2DBC
- hard cut pagination, facade, gateway, web, and CLI contracts
- remove legacy database and TSDB adapters and document validation gates
BREAKING CHANGE: platform persistence now requires PostgreSQL 18 with TimescaleDB and the new reactive API contracts.
A comment-health audit driven by an AST scanner (regex scanners kept
false-positiving on annotation-separated javadoc; the AST pass with
constructor and @Override-implementation exemptions is what produced a
trustworthy worklist) ended with a much smaller true gap than the raw
numbers suggested: class-level javadoc is already at 100% repository-wide.
What actually gets filled here:
- AnalyticsModel: all 30 nested records of the S19 analytics facet get
maintainer-voice javadoc (the @Schema descriptions serve the API side;
these serve code readers).
- The whole entity/ext family (29 files, 47 nested classes): every
Content/Ui/Validation/Security/AppliesTo/Template/Dedup/... schema
class states what it actually holds — read from the fields, not
templated.
- Adapter families: the @Bean methods of all six MQ adapters, all four
TSDB adapters and the three DB dialect adapters get one-line
maintainer docs (what binds to what, what is overridable).
- Nested support types across data/agentic/constant/public/facade:
NotifyBindKey, CacheTuning, Credential, dashboard VOs' Item/BucketVO,
ExpireListener (plus its null-doc placeholder javadoc replaced with a
real contract), agentic chat/stream VOs' choice/delta/usage shapes,
tool-context records, RequestHeader envelopes, FleetSummary,
visualization Type/Scale codes.
- PointValueSampleConverter's boundary methods now state the port-side
contract (quality default injection point, batch order preservation).
Comment drift fixed: the class javadoc of the can/mqtt/opc-da driver
skeletons claimed "see TODO markers in method bodies" — those markers
do not exist; the claims are corrected to plain work-in-progress notes.
The genuine TODOs (zigbee API verification, lwm2m lookup, ethernet-ip
CIP framing, CAN JNI) stay: they mark real unimplemented behavior.
Vendored-code boundary: the opc-da module carries a ported
org.openscada library (46 files, package org.openscada.*). Its trivial
accessors stay bare on purpose — filler comments on get/set pairs are
exactly the kind of noise this pass exists to remove — but the
non-obvious JIStruct wire-decoder methods (getStruct/fromStruct
FILETIME + three DO wrappers) now document the COM bridge shape.
Gates: full-repo compile green; data/model/constant/agentic/public
test suites green.
Prose rewrapping and table reflow from a project-wide markdown pass;
no content changes. Also reverts two formatter mistakes: restores
MD5(password) in dc3-web/AGENTS.md and drops spurious spaces after
CJK punctuation in README.zh.md / README.ja.md.
Covers root guides (AGENTS/CONTRIBUTING/SECURITY/README.*), module
READMEs across dc3-api/center/common/driver/e2e/gateway, the nginx
guide, dc3/doc/{README,TITLE}.md, and dc3-web docs.
Remove configuration duplicated verbatim by the auto-activated shared profile bases: the dc3-center-manager gRPC channel in several drivers, the management.* block in center/gateway services, the gateway swagger-ui.path, duplicate logging sub-packages, and dead dc3.driver.mqtt config in dc3-center-data (no dc3-common-mqtt dependency). spring.env/spring.group are kept (consumed by RabbitmqEnvironmentConfig/WebFluxSecurityConfig/HmacAuthConfig). Effective configuration unchanged; validated via YAML parse + Maven process-resources.
Co-Authored-By: Claude <noreply@anthropic.com>
Replace the non-existent ekuiper route with agentic, add the OAuth2/MCP
routes, and describe static addressing (no Nacos) and the actual profile
configuration.
Make the REST API documentation actually reachable end-to-end:
- Upgrade springdoc to 3.0.3 (Spring Boot 4 / Spring Framework 7 compatible)
and pin swagger-core 2.2.47 to resolve the Spring AI conflict.
- Register SpringDocConfig and WebFluxSecurityConfig as @AutoConfiguration so
they load (they sit in io.github.pnoker.common.config, which centers do not
component-scan); add the global OpenAPI info + X-Auth security schemes.
- Add per-module GroupedOpenApi beans (auth/manager/data/agentic) and gateway
aggregation routes + swagger-ui.urls for a single federated Swagger UI.
- Fix the security chain: guard WebFluxSecurityConfig off the gateway, supply a
permissive default PermissionProvider, register the @perm bean, and correct
the token-path whitelist (base-path is stripped before the chain).
- Whitelist doc paths; disable docs in the production profile.
- Register swagger-ui webjar resources (default static mappings are disabled).
Refresh module READMEs, AGENTS.md, CONTRIBUTING.md, and dc3/doc/
guides to reflect the unified Dockerfile, consolidated compose stacks,
and updated build instructions.
Replace 14 individual Dockerfiles with a single unified Dockerfile at
the repo root using multi-stage BuildKit targets. Maven build runs
inside the builder stage so no host JDK is required.
Update @since from 2022.1.0 to 2016.10.1 and @version from 2026.5.5
to 2026.5.17 across all Java source files to reflect the actual
project start date.
Replace shared SERVER_PORT/GRPC_SERVER_PORT with per-service
DC3_GATEWAY_PORT, DC3_AUTH_PORT, DC3_AUTH_GRPC_PORT, etc. in
application.yml and Dockerfiles. Prevents port conflicts when
loading the same env file for multiple local services.
- Remove eKuiper route from application-gateway.yml (no dc3-center-ekuiper module exists)
- Remove Nacos service discovery config from all pro/pre profiles across
gateway, auth, data, manager, and single modules (no Nacos dependency in pom)
- Remove Nacos logger entries from logback.xml
- Remove spring-cloud-starter-loadbalancer dependency from dc3-common-gateway pom
(only needed for lb:// URIs which are no longer used)
- Move all route definitions and gRPC channel config into application-gateway.yml
(loaded via the gateway profile) to eliminate duplication across environments
- Route URIs use ${GATEWAY_ROUTE_*_URI} env variables with http:// defaults
- dev/test profiles: only contain environment-specific logging settings
- pro/pre profiles: only contain Nacos service discovery configuration
- Reduces 4 profile files from ~55 lines each to ~15 lines, net -132 lines
- Add ApiController for API CRUD operations
- Add API_URL_PREFIX constant to AuthConstant
- Enhance ApiServiceImpl.fuzzyQuery with apiCode, serviceName, apiTypeFlag,
enableFlag and null-safe tenantId conditions
- Add enableFlag field to UserQuery and UserServiceImpl.fuzzyQuery
- Add /api/v3/auth/api/** route to all gateway environment configs
FilterService previously exposed raw gRPC DTOs (GrpcRTenantDTO,
GrpcRUserLoginDTO) on its interface, leaking protocol into the gateway
filter. This commit:
- Reshapes FilterService signatures to return facade BOs (FacadeTenantBO,
FacadeUserLoginBO) and renames methods for consistency
(getTenantDTO -> getTenant, getLoginDTO -> getUserLogin, getUserDTO -> getUser)
- Rewrites FilterServiceImpl to inject Tenant/User/UserLogin/TokenFacade
instead of four @GrpcClient stubs; TokenFacade returns a plain boolean
- Updates AuthenticGatewayFilter to use the new types
- Drops dc3-api-auth and grpc-client-spring-boot-starter from
dc3-common-gateway (no longer directly referenced); facade-grpc brings
them in transitively when gateway app runs in grpc mode
- dc3-gateway declares facade-grpc and pins dc3.facade.mode=grpc
- Bump all module versions from 2025.11.1 to 2026.4.18.3
- Remove orphaned dc3-common-influx dependency and property from root pom.xml
- Standardize dependency comment style in dc3-common/pom.xml
- Merge gRPC dependency groups into single section in dc3-common-api
- Restructure Spring Integration MQTT and Eclipse Paho groups in dc3-common-mqtt
- Fix incorrect comment 'DC3 Common Exception' to 'DC3 Common Related' in dc3-common-postgres
- Add missing blank line before </dependencies> in dc3-common-driver
- Remove stray blank line in root pom.xml dependencyManagement