Rogee and rogee
4455f8938d
HH-574: enforce stale job claim limit ( #168 )
...
* fix(HH-574): enforce stale job claim limit
* fix(HH-574): guard exhausted retry claims
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-24 16:46:35 +08:00
Rogee and rogee
391fe98ad6
HH-565: complete assignment parity regressions ( #142 )
...
* fix(HH-565): complete assignment parity regressions
* fix(HH-565): scope capacity exclusions per agent
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-24 00:16:03 +08:00
Rogee and rogee
f36606a4f2
HH-564: harden durable realtime publish boundaries ( #139 )
...
* fix(HH-564): harden durable realtime enqueue
* fix(HH-564): wire production SSE stream
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-23 23:38:00 +08:00
Rogee and rogee
17244bcc9d
HH-554: connect auto-assignment runtime policy ( #135 )
...
* fix(HH-554): connect auto-assignment runtime policy
* fix(HH-554): bound and coalesce assignment jobs
* fix(HH-554): drain assignment backlog safely
* fix(HH-554): hold assignment claim through retries
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-23 22:28:43 +08:00
Rogee and rogee
798ea43c2f
HH-442: isolate runtime processes and harden shutdown ( #90 )
...
* HH-442: isolate runtime processes and harden shutdown
* HH-442: harden worker shutdown races
* HH-442: gate dependency shutdown on active handlers
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-22 02:38:15 +08:00
Rogee and rogee
2b182f9956
H-300: wire Captain Skills into Web runtime ( #48 )
...
* H-300: wire Captain Skills into Web runtime
* H-300: enforce effective model and conservative skill budget
* H-300: fix CI gosec step
* ci: extend golangci-lint timeout
* fix lint findings across backend
* fix(push): resolve delivery protocol blockers
* test(repository): close SQLite test databases
* test(repository): reuse SQLite schema per package
* H-307: restore backend Go cache in CI
* H-307: prefetch modules before cold lint
* H-307: resolve govulncheck security gate
* H-307: build lint with patched Go toolchain
* H-307: clear remaining security scan findings
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-19 07:08:14 +08:00
Rogee and rogee
384cc56d97
H-142: eliminate worker race detector conflicts ( #25 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-14 22:58:22 +08:00
Rogee and rogee
13e948d4ab
H-141: harden worker shutdown persistence ( #24 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-14 22:43:01 +08:00
Rogee
4611c0201f
test: improve backend unit coverage
2026-08-04 12:26:25 +08:00
rogee
897b4e018f
feat(channels): add Shangwutong connector
2026-08-03 10:13:40 +08:00
rogee
690796a7de
fix: resolve 4 bugs from QA round 6 (BUG-F/G/H/I)
...
BUG-F (P1): Fake webhook lookupInbox used JSONB @> operator on a TEXT
column, causing all fake webhooks to return "ignored". Cast
channel_config::jsonb before the @> operator.
BUG-G (P3): Vue Router history.state warning on Activity page. Four
call sites replaced history.state with null/{}, destroying Vue Router's
internal navigation state. Now all replaceState calls preserve
window.history.state.
BUG-H (P3): Inbox list showed stale data because cache_keys endpoint
returned hardcoded "0000000000" for inbox/label/team, so the frontend
IndexedDB cache never invalidated. Cache keys are now derived from
actual DB state (row count + MAX(updated_at)), with defensive fallback
for missing tables.
BUG-I (P3): All worker goroutines shared the same Redis consumer name,
so XINFO CONSUMERS showed 1 consumer instead of N. Each goroutine now
generates a unique consumer ID (workerID-index).
2026-07-10 16:59:26 +08:00
rogee
762de6aa3b
feat: migrate worker job dispatch from DB polling to Redis Streams
...
- worker.go: add Redis fields, XADD on Enqueue, XREADGROUP BLOCK consumer
loop, sweep compensation for delayed/failed jobs, DB-polling fallback
when rdb is nil, XGroupCreateMkStream for idempotent consumer groups
- config.go: extend WorkerConfig with stream_prefix, consumer_group,
block_timeout_s, sweep_interval_s + defaults, env bindings, reloadable
- validator.go: validate new worker Redis fields
- bootstrap.go: fix concurrency bug (NewWorkerPoolWithOptions with Redis
+ cfg.Worker.Concurrency), reorder rdb init before worker pool
- config.dev.yaml/config.prod.yaml: add worker Redis params
- worker_test.go: 6 new miniredis tests (end-to-end, fallback, sweep,
multi-consumer competition, group creation, Redis failure recovery)
- config_test.go/reloader_test.go: adapt fixtures for new fields
2026-07-10 12:56:32 +08:00
rogee
aeddedf2a3
Reorganize repo: backend/, deploy/, docs/ layout + AGENTS.md
...
Restructure the monorepo into clear top-level directories:
- backend/: Go module root (cmd, internal, pkg, configs, migrations,
docs/swagger, scripts, tests, go.mod, Makefile, .air.toml)
- deploy/: Docker (Dockerfile, docker-compose*), quickstart, fluentd
- docs/: project documentation + reports/ (moved from repo root)
- AGENTS.md: new AI coding-agent guide at repo root
Update all references to the new layout:
- Dockerfile: COPY backend/go.mod, COPY backend/ (context = repo root)
- docker-compose files: context ../.., dockerfile deploy/docker/Dockerfile,
env_file ../../.env, volume mounts ../../backend:/app
- deploy/quickstart/compose.yaml: dockerfile deploy/docker/Dockerfile
- CI: working-directory: backend for go commands, file deploy/docker/Dockerfile,
coverage path backend/coverage.out, health_check backend/scripts/
- backend/Makefile: docker target uses -f ../deploy/docker/Dockerfile ../
- README: architecture tree, quickstart, config paths updated
Move root stray scripts (rename_models.*, run_m11_tests.sh, verify_build.sh,
gorm_bool_main.go) to backend/scripts/legacy/. All moves via git mv to
preserve history. Build, vet, SQLite tests, and docker compose config verified.
2026-07-07 14:44:12 +08:00