tercul-backend/TASKS.md
google-labs-jules[bot] 85d036330c fix: handle fatal worker startup error gracefully
Replaces a raw `panic` in the `asynq` server startup with a call to `log.Fatalf`.

If the job server fails to start, it is an unrecoverable, fatal error. Using `log.Fatalf` ensures the application exits with a clear error message and a non-zero status code, which is a more conventional and robust way to handle fatal startup errors than panicking.
2025-10-05 11:11:40 +00:00

58 lines
4.0 KiB
Markdown

# Consolidated Tasks for Tercul
This document is the single source of truth for all outstanding development tasks, aligned with the architectural vision in `refactor.md`.
---
## High Priority
### Architecture & Refactoring (see `refactor.md`)
- [ ] **Implement Full Observability:**
- [ ] **Centralized Logging:** Ensure all services use the structured `zerolog` logger from `internal/platform/log`. Add request/user/span IDs to the logging context in the HTTP middleware.
- [ ] **Metrics:** Add Prometheus metrics for API request latency, error rates, and database query performance. Expose them on the `/metrics` endpoint.
- [ ] **Tracing:** Instrument all application services and data layer methods with OpenTelemetry tracing.
- [ ] **Establish CI/CD Pipeline:**
- [ ] **CI:** Create a `Makefile` target `lint-test` that runs `golangci-lint` and `go test ./...`. Configure the CI pipeline to run this on every push.
- [ ] **CD:** Set up automated deployments to a staging environment upon a successful merge to the main branch.
- [ ] **Refactor Testing Utilities:**
- [ ] **Decouple from DB:** Remove all database connection logic from `internal/testutil/testutil.go`. Tests should use mock repositories and services, not a live database. This is a key step towards faster, more reliable unit tests.
### Features
- [ ] **Implement Analytics Features:**
- **Context:** This is required for user engagement insights. The following counts need to be implemented and stored, likely on the `Work` and `Translation` models.
- [x] Implement view counting.
- [ ] Implement like counting.
- [ ] Implement comment counting.
- [ ] Implement bookmark counting.
- [x] Implement translation counting.
- [ ] Implement a service to calculate popular translations based on the above metrics.
- *Note: This is referenced in the old `TODO.md` and a TODO comment in `internal/jobs/linguistics/work_analysis_service.go`.*
- [ ] **Complete Unfinished Implementations:**
- [ ] `internal/app/work/commands.go`: Implement the `MergeWork` command. This should handle merging duplicate work entries.
- [ ] `internal/app/search/service.go`: The search service needs to fetch content from the translation service to enrich its search index.
- [ ] `cmd/tools/enrich/main.go`: This command-line tool is broken. It needs to be investigated, fixed, and documented.
---
## Medium Priority
### Performance
- [ ] **Batch Weaviate Operations:** Refactor the Weaviate client in `internal/platform/search` to support batching of create/update operations to improve indexing performance.
- [ ] **Add Performance Benchmarks:** Using Go's built-in benchmarking tools, add benchmarks for critical API queries and commands to detect performance regressions.
### Code Quality & Architecture
- [ ] **Expand Weaviate Client:** The client in `internal/platform/search` should be extended to support indexing all relevant domain models (e.g., Authors, Tags).
- [ ] **Add Documentation:** Add GoDoc comments to all public functions and types in the `internal/app` and `internal/domain` packages.
- [ ] **Refactor Caching:** As per `refactor.md`, replace the current bespoke cached repositories with a decorator pattern in `internal/data/cache`. This will simplify cache invalidation logic.
- [ ] **Improve Configuration Handling:** Replace the global config object with struct-based configuration loaded from environment variables (e.g., using `koanf` or `envconfig`), as outlined in `refactor.md`.
### Monitoring & Logging
- [ ] **Add Job Monitoring:** Add specific monitoring and alerting for background jobs in `internal/jobs` to track success, failure, and duration.
- [ ] **Add Linguistics Metrics:** Add Prometheus metrics for the linguistics pipeline, including analysis duration, cache hit/miss rates, and third-party API usage.
---
## Low Priority
- [ ] **Refactor Transactional Runner:** Refactor the `RunTransactional` helper in `internal/testutil/testutil.go` to be more friendly to mock-based testing, likely by allowing a mock DB transaction to be passed in.