Commit Graph
2025 Commits
Author SHA1 Message Date
CopilotandClaude Opus 4.7 19189992ef feat(driver): add CoAP driver module scaffold
Register dc3-driver-coap in the driver aggregator POM and add initial
project structure with source and target directories.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
dc3.develop.20260518.00
2026-05-17 22:16:51 +08:00
CopilotandClaude Opus 4.7 97c0db39ee style: fix import ordering, javavadoc alignment and ctor placement
Sort imports alphabetically, align NotifyPolicyEngine javacadoc
whitespace, move AgenticConstant.Visualization private constructor
before inner class declarations.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 22:16:46 +08:00
CopilotandClaude Opus 4.7 64b38e68a8 docs: update documentation for compose and Makefile changes
Align all READMEs, AGENTS.md, CONTRIBUTING.md and dc3/doc/* with the
new Makefile interface (SERVICES/GROUP selectors, REGISTRY=cn, podman
default) and updated Dockerfile structure.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 22:16:37 +08:00
CopilotandClaude Opus 4.7 0df48a604c build: refactor Dockerfile, Makefile and compose files
Parametrize JDK/JRE base images via build args in Dockerfile, replace
hardcoded GC/dump env vars with per-service path variables, fix APM
port. Simplify Makefile registry options to global|cn, add SERVICES
and GROUP selectors for targeted compose operations.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 22:16:30 +08:00
CopilotandClaude Opus 4.7 9882d04228 test: add alarm component unit tests
Add tests for rule evaluator, notification policy engine, message
rendering, channel adapters, and alarm extension contracts.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:19:28 +08:00
CopilotandClaude Opus 4.7 5e14d11165 feat(data): add alarm rule engine and notification pipeline
Add biz/alarm/ with rule evaluation engine, notification policy engine,
channel adapters (Feishu Bot, Email, Webhook), template rendering,
and alarm rule pipeline orchestration.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:19:23 +08:00
CopilotandClaude Opus 4.7 0d58f600cf feat(data): add alarm CRUD entities, DAL, services and controllers
Add full entity scaffolding (BO/VO/DO/Query/Builder), MyBatis mappers,
DAL managers, services, and REST controllers for notify channels, notify
channel bindings, notify records, rule states, messages, and rules.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:19:18 +08:00
CopilotandClaude Opus 4.7 d6f9696991 feat(model): add alarm notification and rule state extensions
Add structured extension models for notify channels, channel bindings,
notify record request/response payloads, and rule state tracking.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:18:58 +08:00
CopilotandClaude Opus 4.7 7fdb255afd feat(constant): add alarm enums and constants
Add AlarmConstant for URL prefixes, AlarmTargetTypeFlagEnum to replace
the deleted AlarmTypeFlagEnum, and new enums for notify channel types,
notify record statuses, and rule states.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:18:53 +08:00
CopilotandClaude Opus 4.7 0cbb73b515 build: refine Dockerfile comments and dockerignore scope
Exclude Docker/compose/CI files from builder stage context to avoid
unnecessary cache invalidation. Update Dockerfile comments for
Podman compatibility. Remove package dependency from build target.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:18:24 +08:00
CopilotandClaude Opus 4.7 b91d379d3a build: add container Maven settings without mirror
Add settings-container.xml for Docker builds that connects directly to
Maven Central, avoiding stale mirrors during CI builds.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:04:37 +08:00
CopilotandClaude Opus 4.7 ac30bdc04e build: update root pom and banner version to 2026.5.17
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:04:31 +08:00
CopilotandClaude Opus 4.7 1ebff591bd build: update Makefile and Maven settings
Update Makefile help text to reflect consolidated optional compose
stack. Remove Aliyun mirror from Maven settings.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:03:33 +08:00
CopilotandClaude Opus 4.7 75b9993a12 docs: update READMEs and project documentation
Refresh module READMEs, AGENTS.md, CONTRIBUTING.md, and dc3/doc/
guides to reflect the unified Dockerfile, consolidated compose stacks,
and updated build instructions.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:03:21 +08:00
CopilotandClaude Opus 4.7 02f6798f8e feat(docker): add web frontend and consolidate compose stacks
Add dc3-web frontend service to docker-compose.yml with nginx reverse
proxy as the sole user-facing entry point. Remove backend port mappings
since web now proxies to gateway.

Merge docker-compose-elasticsearch.yml and docker-compose-grafana.yml
into a single docker-compose-optional.yml that includes EMQX, ELK+APM,
and Prometheus+Grafana stacks.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:02:52 +08:00
CopilotandClaude Opus 4.7 a676a34152 refactor(data): redesign alarm rule/notification/message domain models
Replace placeholder ext content with structured models:
- RuleExt: condition, window, recovery, severity, labels
- NotifyExt: dedup, rate limit, silence, repeat, recovery, escalation
- MessageExt: variables, channel-specific templates

Rename AlarmTypeFlagEnum to AlarmTargetTypeFlagEnum, add TenantOwned
interface to BO classes, normalize query field names (remove alarm-
prefix), and add rule/notify/message URL prefixes to DataConstant.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:02:32 +08:00
CopilotandClaude Opus 4.7 3dd06f6ddb ci: move Maven build into Docker BuildKit builder stage
Remove host-side JDK setup and Maven build step from the CI workflow.
The unified Dockerfile now handles Maven build internally via BuildKit
caching, so the runner only needs Docker.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:02:12 +08:00
CopilotandClaude Opus 4.7 1c812abf75 build: consolidate per-service Dockerfiles into unified multi-target build
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.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:02:03 +08:00
CopilotandClaude Opus 4.7 97f5d18c2f build: bump version to 2026.5.17
Update parent version and dc3.version from 2026.5.5 to 2026.5.17
across all Maven modules.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:01:44 +08:00
CopilotandClaude Opus 4.7 080825e453 chore: correct @since tag to project inception date
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.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:01:28 +08:00
Copilot 010bc6b389 feat(agentic): add structured visualization support 2026-05-17 11:50:07 +08:00
Copilot e2af224bc7 style: code format 2026-05-17 01:13:16 +08:00
Copilot 5eec26a762 fix(agentic): preserve reasoning through tool loop 2026-05-17 00:59:46 +08:00
Copilot aca7939199 fix(agentic): align tool calling runtime behavior 2026-05-16 22:38:42 +08:00
Copilot 49258a6b9f refactor(agentic): centralize runtime conventions 2026-05-16 21:38:38 +08:00
Copilot b2473f445f fix(agentic): persist structured runtime failures 2026-05-16 21:06:08 +08:00
Copilot 94963b8060 refactor(agentic): make tool loop explicit 2026-05-16 20:55:51 +08:00
Copilot 0e1954ffcc refactor(agentic): encapsulate run trace state 2026-05-16 19:43:41 +08:00
Copilot bb953157b7 refactor(agentic): use explicit tool context 2026-05-16 19:39:20 +08:00
Copilot bdf7a3e04b refactor(agentic): centralize tool invocation tracing 2026-05-16 19:28:21 +08:00
Copilot 43f9ecdfd6 fix(agentic): describe point writes as pending actions 2026-05-16 19:14:49 +08:00
Copilot b862119adb refactor(agentic): isolate runtime response mapping 2026-05-16 19:12:48 +08:00
Copilot a1e3b77cf7 refactor(agentic): centralize run event construction 2026-05-16 19:04:40 +08:00
Copilot 48f8efec79 refactor(agentic): unify runtime event model 2026-05-16 18:53:40 +08:00
Copilot 78957cca54 feat(agentic): trace structured tool results 2026-05-16 18:32:58 +08:00
Copilot 0127bf612e refactor(agentic): introduce runtime boundary 2026-05-16 18:17:19 +08:00
Copilot 9df15c838e refactor(agentic): enforce backend tool safety boundaries 2026-05-16 18:11:11 +08:00
Copilot 6808a8ad25 refactor(agentic): remove direct query chat path 2026-05-16 17:38:15 +08:00
Copilot b57dac9fff refactor(agentic): simplify assistant tool orchestration 2026-05-16 17:19:06 +08:00
Copilot fb54434fa0 refactor(agentic): split chat orchestration and structure tool results 2026-05-16 16:23:48 +08:00
Copilot 2f08ff280d fix: improve dashboard and agentic backend APIs 2026-05-16 03:40:27 +08:00
Copilot dc8a901f26 feat: do someting test and code review 2026-05-16 00:56:04 +08:00
Claude 6f9542a22e fix(test): align data module tests with refactored production code
ScheduleForDataServiceImplTest: the initial() method now throws
ServiceException on SchedulerException instead of silently swallowing
it. Update test to expect the exception and verify the cause chain.

DeviceEventReceiverTest: RabbitAckUtil.ack() catches IOException
internally, so a failing basicAck no longer triggers the outer nack
path. Replace the incorrect nack expectation with a test that verifies
ack was attempted and nack was not called.
2026-05-15 23:02:55 +08:00
Copilot e1de59066f feat(agentic): persist session config 2026-05-15 22:04:51 +08:00
Copilot 439ff1f30b refactor(common): improve postgres and repository modules 2026-05-15 19:54:45 +08:00
Copilot 4f3bac256d refactor(public): improve shared auto configuration 2026-05-15 19:24:59 +08:00
Copilot 314ad6f3fb refactor(common): standardize constants and quartz config 2026-05-15 19:12:16 +08:00
Claude 3a6fefffe4 test(driver): align scheduler-init test with current rethrow behaviour
DriverScheduleServiceImpl was changed in commit 31dd3ac9 to wrap a
SchedulerException as ServiceException("Failed to initialize driver
scheduler", e) instead of swallowing it, but the matching test
initialSwallowsSchedulerExceptionFromStatusJob still asserted the
old swallow-it behaviour and started failing as soon as the test
suite ran. Rename the test and switch its assertion to expect the
ServiceException with the matching message.

Note: the wrapping itself is also subtly broken — ServiceException has
no (String, Throwable) constructor, so the cause is silently
discarded by the (String, Object...) varargs overload. Fixing that
is left for a separate change that can audit every call site relying
on this exception class together.
2026-05-15 17:47:20 +08:00
Claude fb78871441 refactor(rabbitmq): tighten config, add high-throughput factory, opt-out profile
Several small but compounding rough edges in dc3-common-rabbitmq picked
up in review:

- application-rabbitmq.yml duplicated listener.simple.acknowledge-mode
  and listener.simple.retry settings that have no effect — Spring Boot
  only feeds those properties into its auto-configured listener
  factory, but the SDK creates its own SimpleRabbitListenerContainerFactory.
  Drop the dead settings and add a comment explaining where the live
  configuration lives.
- RabbitTemplate's confirm/return callbacks logged the entire message
  body, which under a misconfiguration storm could blow up logs;
  truncate the body excerpt to 512 bytes and include exchange / routing
  key / replyCode / replyText so an operator can identify the failing
  publish without rummaging through every other log line.
- Add a sibling highThroughputRabbitListenerContainerFactory bean
  (concurrent=4, max=32, prefetch=100) so the existing point-value /
  mqtt fan-in listeners can opt in via containerFactory= without
  having to re-tune the default factory used for command and metadata
  streams.
- ActiveRabbitProfileConfig now honours dc3.rabbitmq.auto-profile=false,
  matching the matching switch already in ActiveDriverProfileConfig, so
  applications embedding the SDK can keep their own profile model.
  ActiveDriverProfileConfig is updated alongside it to read its
  property name from EnvironmentConstant for symmetry.
- RabbitAckUtil.ack used to surface IOException while reject and nack
  swallowed it — uneven contract that forced every listener to wrap
  its ack call. Make all three behave the same: log and continue, since
  a closed channel cannot accept any further frames anyway.

EnvironmentConstant gains RABBITMQ_AUTO_PROFILE / RABBITMQ_PROFILE
keys to mirror the existing DRIVER_AUTO_PROFILE / DRIVER_PROFILE pair.
2026-05-15 17:46:58 +08:00
Copilot 31dd3ac903 refactor(common): preserve exception causes 2026-05-15 17:27:04 +08:00