8 Commits
Author SHA1 Message Date
pnokerandClaude Code 77b32e30db build(dependabot): target main for update PRs
develop is no longer the integration target (main is the only active
line). Route all four ecosystems to main so updates are proposed against
the active branch; the develop branch is kept as an archive.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-03 12:56:00 +08:00
Henry Zhang d06abff597 chore(docs): move docs site to standalone pnoker/iot-dc3-docs repo (#177)
* chore(docs): move docs site to standalone pnoker/iot-dc3-docs repo

The VitePress docs site now lives in pnoker/iot-dc3-docs and serves docs.dc3.site from there. Remove the in-repo docs/ and all docs-only build/deploy wiring so nothing dangles.

- delete docs/ (source moved to pnoker/iot-dc3-docs)

- delete .github/workflows/docs.yml (deploy owned by iot-dc3-docs)

- drop npm /docs dependabot block; clean codeql/.gitignore docs paths

- remove Makefile docs-* targets

- relocate AI testing policy into dc3-web/tests/ so the required Web guardrail test is self-contained (was reading ../docs/...)

- rewire README image refs (7 READMEs) and in-repo doc links (README.ai.md, AGENTS.md, dc3/doc/README.md) to https://docs.dc3.site / the new repo

dc3/doc/{TITLE,CHANGE,USAGE}.md STAY - release tooling (make changelog, docker-ci) regenerates them; the docs repo snapshots them.

* fix(docs): repair pre-existing broken doc links found during migration

- 8 READMEs: /en|zh/introduction/technology-stack -> /en|zh/development/technology-stack (page lives under development/, not introduction/)

- dc3-web/tests/README.md: ../docs/test-debugging.md (missing) -> https://docs.dc3.site/en/frontend/test-debugging
2026-08-06 14:54:17 +08:00
Henry Zhang 8a333a2791 chore(ci): route dependabot PRs to develop (#151)
dependabot.yml had no target-branch, so updates targeted the default
branch (main). main is the release branch and was red — compiler fixes
lived only on develop — which left every open dependabot PR BLOCKED.
Set target-branch: develop on all five ecosystems so upgrades land on
the integration branch first, get validated, then promote to main.
2026-08-03 11:52:54 +08:00
pnokerandClaude Fable 5 8d08826e2a ci: optimize GitHub Actions and dependabot coverage
- codeql: add javascript-typescript scanning for dc3-web/docs frontend
- dependabot: fix docker directories (14 stale paths with no Dockerfile
  -> 4 real ones: /, /dc3-web, /dc3/dependencies/{rabbitmq,postgres})
- remove orphan codeql-config.yml (never referenced by codeql.yml)
- merge docker-ci-web.yml into docker-ci.yml as build-web job with its
  own gha cache scope; release now needs both backend and web builds

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:04:37 +08:00
pnokerandClaude 2198d7fffe chore: merge iot-dc3-web frontend into monorepo
Merge the standalone iot-dc3-web repository into iot-dc3 as dc3-web/,
creating a single monorepo with unified versioning, CI/CD, and release
process.

- subtree-add iot-dc3-web under dc3-web/ with full commit history
- relocate nginx configs and SSL certs to dc3/dependencies/
- merge CI workflows (ci-backend.yml, ci-web.yml, docker-ci-web.yml)
- merge Issue/PR templates and dependabot config
- host frontend docs under docs/zh/frontend/
- share .husky/ hooks via root-level package.json (pnpm)
- unify versioning: single dc3/bin/tag.sh (vYYYY.M.P) for the whole repo
- update Dockerfile, docker-compose.yml, Makefile for new paths
- remove redundant directories from dc3-web/ (.claude, .github, dc3, docs, bin)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-28 14:43:22 +08:00
pnoker 0f0eac8c29 ci: manage docs npm deps via dependabot; scope codeql security-events:write to job level 2026-06-24 19:19:48 +08:00
Vickey 27bcf1383b fix: address code review — security, thread safety, performance, and null safety
Security (CRITICAL):
- KeyUtil: read JWT signing key from DC3_SECURITY_KEY env/property
- UserPasswordServiceImpl: read default password from DC3_SECURITY_DEFAULT_PASSWORD env
- KeyLoader: read OPC-UA keystore password from OPCUA_KEYSTORE_PASSWORD env
- WebFilterConfig: return 401 on malformed X-Auth-User header
- AlgorithmConstant: document deprecated hardcoded constants

Thread safety (HIGH):
- Fix TOCTOU races in 4 driver connectors (computeIfAbsent)
- Fix PlcS7 lock leak, OpcUa connect timeout (5s)
- CoapClientManager: synchronize setURI to prevent URI race
- PointValueJob, MqttScheduleJob: add @DisallowConcurrentExecution
- SystemHealthServiceImpl: preserve interrupt flag
- WindowSampleBuffer: local AtomicInteger → int

Performance (MEDIUM):
- EntityStateExpiryScanner: batch alarm saves (saveBatch)
- ImportDeviceServiceImpl: batch config saves
- ResourceRegistrySyncServiceImpl: batch-load nodes, eliminate N+1 COUNTs
- DriverSenderServiceImpl: debug-gate hot-path logging
- PointServiceImpl: stream().count() → size()

Null safety (LOW):
- RegexUtil: null guards on isName/isPhone/isMail/isPassword/isHost
- HostUtil: null-check getNetworkInterfaces() return
- TimeUtil: log parse failures instead of silent null

Infrastructure:
- Add spring-boot-starter-cache + @EnableCaching CacheConfig
- Replace embedded modbus4j/plc-s7 jars with external Maven dependencies
- Add dc3-driver-modbus-rtu module
2026-05-26 08:40:25 +08:00
pnoker 7d68495f3a ci: add security quality checks 2026-05-09 20:00:40 +08:00