Files
iot-dc3/dc3-tsdb
pnoker 1fa2d6f0cf docs(comments): fill the real comment gaps across the repository
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.
2026-08-24 21:23:39 +08:00
..

DC3 TSDB

dc3-tsdb is the pluggable time-series storage layer of IoT DC3. It defines a store-neutral port — the TsdbStore SPI with a sample model and capability set — plus one adapter per supported time-series database. The Data Center writes point values through the port and never through store-specific classes.

Modules

Module Role
dc3-tsdb-core store-neutral port: TsdbStore SPI, TsdbModel sample model, capabilities; zero store dependencies
dc3-tsdb-timescale TimescaleDB adapter (default; embedded or standalone PostgreSQL)
dc3-tsdb-tdengine TDengine adapter — supertable + per-series subtables over the REST/WS JDBC driver
dc3-tsdb-influxdb InfluxDB 3 adapter — tags/fields over the documented v3 HTTP SQL and line-protocol APIs
dc3-tsdb-iotdb Apache IoTDB adapter — tree paths root.dc3.* over the session API
dc3-tsdb-tck store-neutral contract suite: an adapter that passes these tests is compliant

Selection

The active store is chosen by the dc3.tsdb.type property (default timescale). Only the selected adapter's auto-configuration is active.

dc3:
  tsdb:
    type: timescale

Store-specific settings use the dc3.tsdb..* prefix (e.g. dc3.tsdb.timescale.rollup.minute-keep-days).

Build and verify

mvn -s .mvn/settings.xml -q -f dc3-tsdb/pom.xml -DskipTests compile
mvn -s .mvn/settings.xml -f dc3-tsdb/pom.xml test

Store selection guides and trade-offs live in docs/tsdb-stores.md.