61e5f9bf39refactor: simplify model selection and attribute handling - fix ShortAttrInfo.GetAttrValue receiver naming - replace conditional branches with switch statements - log test task parameters during validation
refactor/optimize-parameter-measurement-value-api
douxu2026-07-14 17:07:06 +0800
72e2143cb3feat: merge hotfix/measurement-recommend-fuzzy-offset into develop
develop
douxu2026-07-14 10:12:51 +0800
8195200ceafix(recommend): handle trailing dots on complete measurements - normalize redundant trailing dots for supported measurement formats - validate exact measurement matches against component-specific Redis sets - prevent terminal measurement matches from returning dot continuations - add regression tests for offsets and exact completions
hotfix/measurement-recommend-fuzzy-offset
douxu2026-07-13 15:16:30 +0800
78f68b9c4ffix: fallback to current recommend group after hash filtering - Return current config group recommendations when matched config candidates fail hash validation - Return current measurement group recommendations when matched tag candidates fail hash validationdouxu2026-07-10 17:31:56 +0800
a5e8c2ba4efix: improve redis recommendation fuzzy fallback handling - Preserve level continuation marker when trimming recommendation terms - Add group fallback for config and measurement typo inputs - Validate fuzzy exact continuation with redis set membership - Use local nspath set for local fuzzy member checks - Avoid returning continuation marker for exact measurement tag matches - Add tests for fuzzy continuation and mismatch fallback behaviordouxu2026-07-10 16:03:16 +0800
578f805b57fix: correct measurement recommendation fuzzy matching and hierarchy fallback - Fix component tag suggestion writes where full paths were overwritten by local paths - Add exact token checks for trailing-dot inputs to avoid trimming valid hierarchy levels - Improve config/meas fallback by trimming the input prefix before filtering candidates, avoiding full-level fallback output - Use hash-based validation for config and measurement recommendation ownership instead of long-prefix autocomplete exact queriesdouxu2026-07-10 11:02:56 +0800
6f78d8e341fix: improve measurement recommend validation and offset handling - use unified response codes for measurement recommend handler - reject recommend inputs with continuous dots as invalid params - fix exact and continuation match offsets for recommend results - preserve correct offsets for fallback recommend scenarios - use hash-based confirmation for measurement token7 recommendations - write component and bay token7 hash indexes for HEXISTS validation - add tests for input validation, hash keys, and recommend offset casesdouxu2026-07-09 16:31:19 +0800
180b0f7843test: cover initial recommend fallback inputs - add coverage for leading-dot recommendation inputs - verify normal recommendation inputs do not fallback to initial suggestionsdouxu2026-07-08 17:19:07 +0800
9c9e652765feat: merge refactor/topology-node-optimize into developdouxu2026-07-08 17:02:15 +0800
d8668afa46refactor: simplify redis recommendation concurrency - replace fan-in channel recommendation searches with errgroup-based execution - return SearchResult directly from Redis recommendation helper functions - fallback leading-dot recommendation input to initial token suggestions - remove unused recommendLenType parameter from fuzzy member set validation - clean up small model selection and naming issuesdouxu2026-07-08 14:41:13 +0800
f9824e2b24fix: propagate request context through handlersdouxu2026-07-08 10:37:06 +0800
b53746efcdfix: improve redis recommendation fuzzy matching - add bounded errgroup handling for attribute group suggestion initialization - add config-level suggestions and propagate Redis/RediSearch write errors - constrain fuzzy recommendation candidates by hierarchy-specific Redis sets - avoid broad fallback results when concrete matches exist - preserve full matched prefix when calculating fuzzy recommendation offset - add tests for fuzzy recommendation offset calculationdouxu2026-07-07 17:11:25 +0800
b05219ef4crefactor: replace topology tree with graph cache - replace globalTree startup loading with globalTopologyGraph - add topologyGraph adjacency cache with in/out edges, start nodes, and end nodes - remove multiBranchTreeNode and legacy tree-building helpers - make topology queries independent of the all-zero UUID virtual root - keep TOPOLOGY_ANALYSIS on per-task DB querying while clarifying point-to-point reachability results - add coverage for multi-parent topology reachability
refactor/topology-node-optimize
douxu2026-07-07 10:01:14 +0800
305bdd4dcffix: suppress fallback recommendations when concrete hits exist - detect concrete recommend hits before normalizing results - drop fallback results when any syntax path returns real candidates - keep fallback candidates only when every path has no concrete hitdouxu2026-07-03 15:59:53 +0800
33eb2d9be8feat: support nspath measurement shorthand recommendations - add nspath-to-measurement recommend set keys and cleanup pattern - collect nspath measurement tags when component nspath matches bay tag - store token4.token7 autocomplete terms during measurement recommend init - add token4.token7 recommendations alongside existing two-token pathsdouxu2026-07-02 13:49:47 +0800
491c10e8c5feat: add component column recommendations for config tokens - add component as a token6 config recommendation constant - read component table column names during startup - bind component config recommendations to component table columns - add full and local autocomplete terms for component column pathsdouxu2026-07-01 14:37:13 +0800
66870c7008fix: improve measurement recommend fallback and rune offsets - fallback to all current-level candidates when fuzzy search has no result - track fallback results and calculate fallback offsets from max rune length - use rune-based prefix offsets and trimming for non-ASCII tokens - reuse local nspath filtering for component nspath recommendationsdouxu2026-06-30 13:55:42 +0800
367de31247fix: flatten measurement recommend response and normalize offsets - return a single measurement recommend payload instead of grouped payloads - remove recommended_type from response schema and regenerated swagger docs - normalize Redis recommend results in model layer with stable type ordering - deduplicate trimmed recommend terms and preserve the maximum response offsetdouxu2026-06-29 14:13:58 +0800
64f9423b68chore: remove runtime config bootstrap and update local deploy docs - stop copying config.example.yaml to config.yaml during app initialization - document the local config.yaml example directly in deploy.md - update Docker smoke test docs to mount configs/config.yaml - bump the K8s Postgres image from 13.16 to 17.5
refactor/wire-injection
douxu2026-06-26 16:01:32 +0800
35ff2f055arefactor: move ModelRT startup assembly into Wire app package - add app package with Wire providers, injector declaration, and generated InitializeApp implementation - move config loading, logger/tracer setup, database, redis, pool, RabbitMQ, task worker, router, and HTTP server construction out of main.go - preserve startup warmup, background publishers, task worker launch, and graceful shutdown behavior behind App methods - add github.com/google/wire dependency for generated dependency injectiondouxu2026-06-24 15:18:27 +0800
8faba682b3feat: merge chore/modelrt-dockerfile-smoke-test into developdouxu2026-06-23 11:33:13 +0800
2650771cdbdocs: regenerate swagger and drop stale TODO comment - regenerate AsyncTask swagger responses, keeping only the documented case - remove obsolete 200/400/404/500 response entries from docs/swagger - delete commented-out termsOfService TODO from main.go API annotations
chore/modelrt-dockerfile-smoke-test
douxu2026-06-23 11:27:42 +0800
98a28b62ebfeat: add Grafana Alloy log collection manifests for K8s - add alloy-daemonset to run Alloy on every node via DaemonSet - add alloy-configmap to scrape Pod logs through the K8s API and parse zap JSON fields (level, traceID, pod, namespace) into Loki labels - add alloy-rbac granting pods/log read access for log collection - forward parsed logs to loki-service for Grafana queryingdouxu2026-06-22 16:06:09 +0800
ca68cf6c18refactor: extend TypedMap and migrate MeasComputeState onto it - add LoadOrStore, Len, and All (range-over-func) to util.TypedMap - embed util.TypedMap in MeasComputeState, dropping its hand-written sync.Map wrappers and per-call-site type assertions - iterate graphOverview via All() instead of Range in PrintGrapMap - remove unused Set/Comparer/OrderedSet/HashSet code from redis_zset.go - update deploy.md to replace Promtail with Grafana Alloy in the observability stackdouxu2026-06-18 16:06:06 +0800
c82ad773a3refactor: lowercase channel name suffixes and rename PS to PF - change all ChannelSuffix values from uppercase to lowercase - rename ChannelSuffixPS ("PS") to ChannelSuffixPF ("pf") - align channel suffix naming with downstream measurement keysdouxu2026-06-17 10:47:35 +0800
82622d0d85refactor: add generic helpers and type-safe TypedMap wrapper - add util.TypedMap, a generic wrapper over sync.Map to drop call-site type assertions - add generic util.MapSlice and reuse it in ConvertZSetMembersToFloat64 - make GetKeysFromSet/SliceToSet/RemoveTargetsFromSliceSimple/DeduplicateAndReportDuplicates generic - migrate graphOverview to util.TypedMap[int64, *Graph] - build redis suggestions via util.MapSlice in measurement group recommenddouxu2026-06-16 16:15:28 +0800
908c713565chore: add rabbitmq cert secret script and plugins configmap - add rabbitmq-certs-secret.sh helper to create the server cert secret - add rabbitmq-plugins-config.yaml ConfigMap enabling ssl auth, management, prometheus, and web dispatch plugins - rename rabbitmq Deployment from `eventrt-rabbitmq` to `rabbitmq` - document the secret-creation script in deploy.mddouxu2026-06-12 11:20:58 +0800
64b6562784docs: overhaul deploy.md cleanup and pg verification sections - add pg connection verification commands (pg_isready, psql queries) - renumber pg subsections (4.4.2→4.4.5) to accommodate new section - remove MongoDB deploy section (section 4.5) from modelRT deploy guide - remove MongoDB SSH tunnel port-forward entries (27017/30017) - rewrite section 8 cleanup guide: split into local Docker, local run, and K8s(Minikube) categories with scale-down and full-delete options - add one-liner kubectl delete -f deploy/k8s/ for full teardowndouxu2026-06-10 16:42:29 +0800
05c64dda14chore: add imagePullPolicy and migrate WaitGroup to wg.Go - add imagePullPolicy: IfNotPresent to all k8s Deployments, DaemonSet (grafana, jaeger, loki, rabbitmq, redis, promtail) - migrate wg.Add(1)/go/defer wg.Done() pattern to wg.Go() (Go 1.25+) in logger/loki_syncer.go and task/worker.go - simplify redundant map existence check before delete in diagram/graph.go - update deploy.md to reflect pg PVC size (6Gi) and resource limitsdouxu2026-06-10 16:40:50 +0800
c4e892f1c7fix: correct typo in Jaeger K8s service name - rename `jaeger-serivce` to `jaeger-service` in jaeger-service.yamldouxu2026-06-08 17:05:21 +0800
195150d9b1fix: fix K8s service names, deployment command, and GORM logger - rename all K8s services to xxx-service convention and update all configmap references (postgres, mongodb, loki, jaeger) - add explicit command: ["/app/modelrt"] to deployment to prevent args from being treated as the executable (no ENTRYPOINT in Dockerfile) - set deploy_env to development to bypass Redis empty-password guard in non-production Minikube environment - fix GormLogger Info/Warn/Error to use fmt.Sprintf(msg, data...) so GORM printf-style messages are formatted correctly and avoid json: unsupported type: func() time.Time serialization panic - expand pg PVC storage from 2Gi to 6Gi - rename loop variable msg to task in PushTaskToRabbitMQ for clarity - align comment indentation in queue_producer.godouxu2026-06-03 17:11:54 +0800
3309e53653docs: document Dockerfile smoke tests and load workflow for Minikube - add 3-stage build table (builder/certs/scratch) with image size note - add build-arg USER_ID override example in section 5.1 - add section 5.1.1 with smoke-test commands (size check, inspect, dry run, full start) - add workflow for loading pre-built local images into Minikube directly - bump builder base image from golang:1.25-alpine to golang:1.26-alpine - normalize inline Dockerfile comments to lowercase - remove example config COPY from final scratch stagedouxu2026-06-02 16:35:13 +0800
c6545e29bastyle: normalize log messages to lowercase across task package - lowercase first letter of all logger.Info/Warn/Error message strings in task/worker.go, task/retry_queue.go, task/handler_factory.go, task/metrics_logger.go, task/retry_manager.go, task/queue_producer.go, task/initializer.go, task/test_task.go, and main.go - fix inline comments in main.go that mixed Chinese and uppercase English - align Dockerfile comment casing with project conventiondouxu2026-06-01 15:50:11 +0800
c17ddb80b9feat: merge bay-realtime-data-calc into developdouxu2026-06-01 14:10:10 +0800
57d1111a83refactor: modernize Go idioms and add MongoDB K8s manifests - replace interface{} with any across ~30 files for Go 1.18+ style - adopt for-range-over-int loops in place of explicit index loops - use maps.Copy from stdlib to replace manual map copy loops - use min() builtin for exponential backoff delay cap in retry_manager - add MongoDB 7.0 K8s manifests (StatefulSet, Service, PVC, Secret) - document PostgreSQL and MongoDB deploy steps in deploy.md with SSH tunnel port mappings
feature/bay-realtime-data-calc
douxu2026-05-29 14:28:58 +0800
bacd43617echore: bind sensitive config to env vars and bump Go image to 1.25 - bind postgres.password to POSTGRES_PASSWORD env var via viper BindEnv - bind service.secret_key to SERVICE_SECRET_KEY env var via viper BindEnv - upgrade builder base image from golang:1.24-alpine to golang:1.25-alpinedouxu2026-05-29 10:56:17 +0800
9c4dcd29e4chore: bump Go to 1.26.3 - upgrade go directive in go.mod from 1.25.0 to 1.26.3douxu2026-05-28 16:36:51 +0800
57371fbf1fdocs: add Minikube PostgreSQL manifests and clean deploy markdown - add split PostgreSQL K8s manifests for ConfigMap, Service, PVC, and StatefulSet - expose PostgreSQL through NodePort for local Minikube access - replace deploy.md LaTeX text syntax with Markdown inline code formatting - keep deployment documentation rendering stable in Wiki.js and Markdown viewersdouxu2026-05-27 16:51:00 +0800
4a2666aa3bfix: correct caller frames in GORM logger and DB arg in main - add *Skip variants (logSkip, makeLogFieldsSkip, getLoggerCallerInfoSkip) so wrapper functions report the true call site, not logger internals - switch GormLogger.Trace to use ErrorSkip/WarnSkip/InfoSkip with extraSkip=1 so SQL log lines point to GORM caller rather than the logger facade - pass postgresDBClient instead of tx to GetFullMeasurementSet in maindouxu2026-05-19 17:38:22 +0800
d051c161b7perf: parallelize GetFullMeasurementSet with errgroup - run 5 independent DB queries concurrently via errgroup.WithContext - add ctx parameter and bind db with WithContext for cancellation support - replace silent error swallowing (if err == nil) with wrapped error returns - promote golang.org/x/sync to direct dependency in go.moddouxu2026-05-18 16:49:46 +0800
42956d1793feat: add dedicated message-exchange for task lifecycle notifications - add constants/message.go with MessageTask* categories and message-exchange / message-queue / dead-letter routing constants - add mq/publish_message.go with PushMessageToRabbitMQ (confirm mode, dead-letter queue) separate from the existing event-exchange publisher - add mq/emit.go with TryEmitMessage for non-blocking, OTel-traced dispatch - add mq/event/task_event_gen.go with NewTaskSubmitted/Running/Completed/ Failed/CancelledMessage constructors - wire TryEmitMessage into task worker and create/cancel handlers so all 5 lifecycle transitions are published (previously task.* routed to event-exchange with no matching binding, causing silent drops) - harden Dockerfile: scratch final image, pinned alpine:3.21 certs stage, apk upgrade in builder, add -trimpath -mod=readonly go build flags - add full K8s manifests under deploy/k8s/ for Redis, RabbitMQ (mTLS), ModelRT (Downward API, scratch image, readOnlyRootFilesystem), Jaeger, Loki, Promtail, Grafana - expand deploy.md with async_task SQL schema, TLS cert generation steps, K8s deployment procedures, and SSH tunnel configurationdouxu2026-05-13 16:58:36 +0800
cccd4becdcfeat: add Loki logging, fix MQ shutdown order, improve realtime tracing - add LokiConfig and batching lokiSyncer for dev-mode direct log push - refactor zap logger to support mode-aware encoding and K8s pod fields - fix RabbitMQ shutdown race: move CloseRabbitProxy to defer so channel closes before connection (prevents 504 error on Ctrl+C) - wrap MsgChan with EventMessage to carry per-cycle trace carrier - create new root OTel span per computation cycle linked to startup span, giving each cycle an independent traceID with startup as referencedouxu2026-05-11 17:34:27 +0800
1dd8491440refactor: replace EventStatusPersisted with IsPersisted field on EventRecord - add IsPersisted bool to EventRecord for explicit persistence tracking by eventRT consumer - remove EventStatusPersisted constant, decoupling DB persistence from event lifecycle status - update event status comments for accuracy and CIM-agnostic languagedouxu2026-05-08 16:19:12 +0800
1ee722dd58refactor: migrate trace propagation from B3 to W3C TraceContext - switch OTel propagator from b3.New() to propagation.TraceContext{} - rename B3 header constants to generic internal context keys - remove go.opentelemetry.io/contrib/propagators/b3 dependency - add amqpHeaderCarrier to inject W3C traceparent into AMQP message headersdouxu2026-05-07 16:43:34 +0800
9661278935refactor: rename TaskParams to Params and remove debug prints - rename TaskParams interface to Params in task/base_task.go for brevity - remove debug fmt.Println/Printf statements from graph.go and handler_factory.go - fix is_local flag from false to true for existing test components in deploy.md - add 6 new test component records (ns4-ns8) to deploy seed datadouxu2026-04-28 17:41:28 +0800
33f7d758e5refactor: overhaul async task handler routing and fix data consistencydouxu2026-04-27 17:55:38 +0800
03bd058558feat: implement end-to-end distributed tracing for HTTP and async tasks - introduce typed traceCtxKey to prevent context key collisions (staticcheck fix) - inject B3 trace values into c.Request.Context() in StartTrace middleware so handlers using c.Request.Context() carry trace info - create startup trace context in main.go, replacing context.TODO() - propagate HTTP traceID/spanID through TaskQueueMessage into RabbitMQ worker, linking HTTP request → publish → execution on the same traceID - fix GORM logger null traceID by binding ctx to AutoMigrate and queries via db.WithContext(ctx) - thread ctx through handler factory to fix null traceID in startup logs - replace per-request RabbitMQ producer with channel-based PushTaskToRabbitMQ goroutine; restrict Swagger to non-productiondouxu2026-04-23 16:48:32 +0800
809e1cd87dRefactor: extract task constants to dedicated constants packagedouxu2026-04-22 17:20:26 +0800
4a3f7a65bcRefactor async task handlers into specialized handlersdouxu2026-04-17 14:09:02 +0800
4d5fcbc376Refactor async task system with unified task interfaces and add test task typedouxu2026-04-14 17:00:30 +0800
f8c0951a13Extend async task system with database integration and retry managementdouxu2026-04-03 10:07:43 +0800
e1886bc347optimize code of judge wether success or failed return contentdouxu2026-01-19 16:39:35 +0800
ba5e5b3d1coptimzie code of constants packagedouxu2026-01-16 17:08:28 +0800
d3b1f0afbeadd code of send all target removed system signal in real time data pull api and fix bug of component attribute query apidouxu2026-01-14 17:32:01 +0800
cf880279e4optimize real time data query apidouxu2026-01-13 17:23:47 +0800
34684bd5f1fix: eliminate server error code definition conflictsdouxu2026-01-13 11:45:03 +0800
d75b9a624coptimize handler of compoent attribute query apidouxu2026-01-13 11:39:00 +0800
cceffa8219add handler of compoent attribute query apidouxu2026-01-12 17:21:04 +0800
d1495b7ab8optimize code of component attribute update apidouxu2026-01-09 17:26:45 +0800
60eab0675eoptimize code of component attrbute update apidouxu2026-01-08 17:34:44 +0800
f47e278f85fix bug of first subscription different interval measurement datadouxu2026-01-07 17:28:09 +0800
a31bd6f395add component attribute group update api and optimzie diagram hash set paramsdouxu2026-01-05 17:20:41 +0800
29d0e06c94add new structure field of measurement table and add new test data of component table and station tabledouxu2026-01-04 17:12:00 +0800
fcf4ef3f7dfix bug of token4-token7 type attribute recommend apidouxu2025-12-31 16:52:40 +0800
e74bedd47ffix bug of token4-token7 type recommend apidouxu2025-12-31 16:24:27 +0800
36e196beddadd nspath filter of recommend apidouxu2025-12-30 16:35:29 +0800
941d521328fix bug of token6 all search result return casedouxu2025-12-29 15:58:59 +0800
7969861746optimize func of cleanup recommend redis cachedouxu2025-12-26 17:10:22 +0800
8e4bdfd0e9add fullpath completion of component attribute group recommenddouxu2025-12-26 12:00:00 +0800
42751c1020optimize the logic for loading the cache of measurement nodes for traversing componentsdouxu2025-12-25 17:17:20 +0800
51f65500f3add func of init component measurement recommenddouxu2025-12-24 16:55:55 +0800
7ea38615b4unified caching system collection key namesdouxu2025-12-24 09:34:03 +0800
6e16a9a39afix bug of measurement recommend injection funcdouxu2025-12-24 09:06:42 +0800