mirror of
https://gitee.com/pnoker/iot-dc3.git
synced 2026-09-01 15:33:10 +08:00
1fa2d6f0cf
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.
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.