2026-03-06 19:16:48 +08:00
# 🛠️ Technical Debt & Engineering Backlog
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
> **Vision**: Moving from a research script to a production SaaS.
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
---
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
## 🏛️ System Health: 75%
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
```mermaid
pie title System Health & Tech Debt
"Stable Engine" : 75
"Centralized Logic Debt" : 10
"Subscription DB Debt" : 10
"Testing/Replay Debt" : 5
```
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
The core engine is stable, but several infrastructure "shortcut" decisions remain.
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
### Current Stable Modules
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
- [x] Multi-source Weather Aggregation
- [x] DEB Blending Algorithm
- [x] Proactive Telegram Alert Engine
- [x] Vercel Dashboard Infrastructure
2026-03-09 04:41:24 +08:00
- [x] Legacy dashboard running behind Next.js/Vercel
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
---
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
## 🔴 High Priority: Immediate Focus
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
| Debt Item | Impact | Suggested Fix |
| :--------------------- | :-------------------------------------------------- | :--------------------------------------------------------------- |
| **Monolithic Bot** | `bot_listener.py` is hard to test and evolve. | Isolate UI interaction from business logic into `src/analysis` . |
| **Subscription Store** | No persistent record of who has paid. | Migrate from in-memory user checks to **Supabase/PostgreSQL** . |
| **Alert Transparency** | Operators cannot easily audit "why" an alert fired. | Add an `Evidence` metadata block to all internal alert payloads. |
2026-03-09 04:41:24 +08:00
| **Encoding Drift** | Legacy frontend files have suffered mixed encodings.| Normalize all legacy static files to UTF-8 and stop editing them with incompatible encodings. |
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
---
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
## 🟡 Medium Priority: Quality of Life
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
| Debt Item | Impact | Suggested Fix |
| :------------------------ | :-------------------------------------------------- | :--------------------------------------------------------------------------- |
| **Hard-coded Thresholds** | Modification requires code changes (e.g., 5s CD). | Extract all business constants into a structured `config.yaml` . |
| **Simulation Harness** | No way to "replay" a rainy day to test alert logic. | Build a `ReplayEngine` using `data/daily_records.json` . |
| **Backend Naming** | Artifacts of "market price" logic remain in naming. | Systematic refactor of variable names to reflect weather-intelligence focus. |
2026-03-09 04:41:24 +08:00
| **Legacy Frontend Debt** | Large `public/static/app.js` mixes data, UI, charts, and modal logic. | Gradually extract panel, chart, and modal logic into typed modules without changing the current layout contract. |
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
---
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
## 🟢 Low Priority: Optimization
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
| Debt Item | Impact | Suggested Fix |
| :------------------------- | :---------------------------------------------- | :------------------------------------------------------------- |
| **Serverless Cold Starts** | Initial Vercel API calls can be slow. | Implement edge-cache or warming cron for major city endpoints. |
| **Local SQLite Files** | Not compatible with Vercel's ephemeral storage. | Full transition to a remote DB (Supabase/Redis). |
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
---
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
## 🗓️ Next Milestones
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
1. **DB Integration** : Connect Supabase to `src/database/db_manager.py` .
2. **Alert Transparency** : Append logic metrics (slope, lead delta) to push messages.
3. **Authentication** : Secure `/api/city` on Vercel with subscription keys.
2026-03-09 04:41:24 +08:00
4. **UTF-8 Cleanup** : Remove remaining mojibake from legacy static files and comments.
2026-03-04 02:35:35 +08:00
2026-03-06 19:16:48 +08:00
---
2026-03-04 02:35:35 +08:00
2026-03-09 04:41:24 +08:00
** 📅 Last Updated**: 2026-03-09