Files
goodgo-platform/docs/audits/AUDIT_INDEX.md
Ho Ngoc Hai 08b96f9c2d docs: consolidate exploration & audit reports under docs/ (TEC-3094)
- Move 8 stray .md (+5 .txt) from ~/Desktop into docs/explorations/from-desktop/
- Reorganize 27 .md/.txt at workspace root:
  - audit reports -> docs/audits/
  - exploration reports -> docs/explorations/
  - design system -> docs/design-system/
- Keep only README/CHANGELOG/CONTRIBUTING/CLAUDE at repo root
- Refresh docs/README.md as canonical index with links to all groups
- Note: pre-existing docs/audits/AUDIT_INDEX.md and AUDIT_SUMMARY.md were
  overwritten by the newer root-level versions during the move

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-21 16:29:24 +07:00

283 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Backend API Audit: Trading Exchange UI Refactor — Index
## 📋 Audit Documents
This audit analyzed the goodgo-platform-ai backend API to identify gaps for the frontend refactor into a "trading exchange" (sàn giao dịch) style UI.
### Documents Generated
1. **BACKEND_API_AUDIT_EXCHANGE_UI.md** (261 lines)
- Full detailed audit with endpoint inventory
- Per-module breakdown (listings, analytics, search, agents, admin, reviews)
- All 10 critical + medium priority gaps documented
- Phased implementation roadmap (Phase 13)
- **Use this for**: In-depth planning, requirement discussions with backend team
2. **BACKEND_API_AUDIT_QUICK_REFERENCE.txt** (130 lines)
- One-page quick reference with visual formatting
- Highlights only the 10 gaps that need attention
- Sprint-by-sprint roadmap
- **Use this for**: Daily standup reference, priority discussions, quick reviews
---
## 🎯 Key Findings
### Summary Statistics
- **Total Endpoints Audited:** 70+
- **Ready for FE:** 58 ✅
- **Critical Gaps:** 5 🔴
- **Medium Priority Gaps:** 5 🟡
- **Estimated Dev Effort:** 23 sprints
- **Quick Wins:** 2 (sortBy, metadata)
### The 10 Gaps at a Glance
| # | Gap | Priority | Module | Effort |
|---|-----|----------|--------|--------|
| 1 | Recent listings ticker | 🔴 CRITICAL | listings | Low |
| 2 | Market snapshot endpoint | 🔴 CRITICAL | analytics | Medium |
| 3 | Trending areas | 🔴 CRITICAL | analytics | Medium |
| 4 | Similar listings | 🔴 CRITICAL | listings | Medium |
| 5 | Listing detail enrichment | 🔴 CRITICAL | listings | Medium |
| 6 | Price movers (gainers/losers) | 🟡 Medium | analytics | Low |
| 7 | Market history (12m trends) | 🟡 Medium | analytics | Medium |
| 8 | Ward-level heatmap | 🟡 Medium | analytics | Low |
| 9 | Real-time listing updates | 🟡 Medium | listings | High |
| 10 | Cache metadata in responses | 🟡 Medium | analytics | Low |
---
## 📊 Detailed Breakdown by UI Screen
### 1. Home Dashboard (Market Overview)
**Status:** 40% ready
**Currently Available:**
- Market report (district-level stats) ✅
- Heatmap (by district) ✅
- Price trends ✅
**Missing:**
- Market snapshot (live tiles with totalActive, avgPrice, change%) ❌ Gap #2
- Recent listings ticker ❌ Gap #1
- Trending areas (hot markets by inquiry volume) ❌ Gap #3
**Effort to Complete:** ~1 week (gaps #13)
---
### 2. Listings Board (Search + Filter)
**Status:** 80% ready
**Currently Available:**
- Full search with faceted filters ✅
- Pagination, sorting (but not by publishedAt) ✅
- Real-time updates endpoint exists but needs `sortBy=publishedAt` ⚠️
**Missing:**
- Sort by "newest first" (publishedAt) ❌ Gap #1
- "Just posted" / "price dropped" badges (needs real-time) ❌ Gap #9
- Similar listings comparables ❌ Gap #4
**Effort to Complete:** ~23 days (gaps #1, #4)
---
### 3. Listing Detail
**Status:** 70% ready
**Currently Available:**
- Full property data (description, media, location) ✅
- Seller & agent info ✅
- Price history ✅
- Media gallery ✅
- AVM endpoint exists (separate call) ✅
**Missing:**
- Valuation estimate in detail response ❌ Gap #5
- Inquiry count exposed ❌ Gap #5
- Agent quality score denormalized ❌ Gap #5
- Similar listings carousel ❌ Gap #4
**Effort to Complete:** ~34 days (gaps #4, #5)
---
### 4. Agent Profile Card
**Status:** 85% ready
**Currently Available:**
- Public agent profile ✅
- Quality score ✅
- Agency info ✅
**Missing:**
- Review stats (avg, count) — have separate endpoint but not denormalized ⚠️
- Active listings count ❌ (search + filter workaround: count by agent)
- Response time metrics ❌ (not tracked)
**Effort to Complete:** ~23 days (no new endpoints needed, just denormalization)
---
### 5. Admin Panel
**Status:** 95% ready
**Currently Available:**
- Moderation queue ✅
- KYC queue ✅
- User management ✅
- Audit logs ✅
- Revenue analytics ✅
**Missing:**
- None for core features; only nice-to-haves like queue statistics
**Effort to Complete:** Complete, ready for FE
---
### 6. Market Analytics Page
**Status:** 60% ready
**Currently Available:**
- Market report (current snapshot) ✅
- Price trends ✅
- Heatmap (by district) ✅
- Neighborhood scores ✅
**Missing:**
- Market history (12-month data for trend charts) ❌ Gap #7
- Ward-level heatmap drill-down ❌ Gap #8
- Price movers (top gainers/losers) ❌ Gap #6
- Cache metadata (data age indicators) ❌ Gap #10
**Effort to Complete:** ~1 week (gaps #68, #10)
---
## 🚀 Recommended Implementation Order
### Sprint 1 (Days 14)
- **Gap #1:** Add `sortBy=publishedAt` to `/listings` search
- File: `apps/api/src/modules/listings/presentation/dto/search-listings.dto.ts`
- Effort: 1 day
- **Gap #4:** Add `GET /listings/:id/similar` endpoint
- File: New query: `apps/api/src/modules/listings/application/queries/get-similar-listings/`
- Effort: 1.5 days
### Sprint 2 (Days 58)
- **Gap #2:** Add `GET /analytics/market-snapshot` endpoint
- File: New query in analytics module
- Effort: 2 days
- **Gap #3:** Add `GET /analytics/trending-areas` endpoint
- Effort: 1.5 days
### Sprint 3 (Days 912)
- **Gap #5:** Enrich `GET /listings/:id` with `valuationEstimate`, `inquiryCount`, `agentScore`
- Effort: 1.5 days
- **Gap #10:** Add `cachedAt`, `nextRefreshAt` to all `/analytics/*` responses
- Effort: 1 day
### Sprint 4 (Days 1317) — Medium Priority
- **Gap #6:** `GET /analytics/price-movers`
- Effort: 1.5 days
- **Gap #7:** `GET /analytics/market-history?period=12m`
- Effort: 2 days
### Sprint 5+ (Optional)
- **Gap #8:** Ward-level heatmap enhancement
- **Gap #9:** Real-time updates (WebSocket/SSE)
---
## 📁 File Structure Reference
All controllers follow this pattern:
```
apps/api/src/modules/{MODULE}/
├── presentation/
│ ├── controllers/
│ │ └── {name}.controller.ts
│ └── dto/
│ └── *.dto.ts
├── application/
│ ├── commands/
│ └── queries/
│ └── {query-name}/
│ ├── {query-name}.query.ts
│ └── {query-name}.handler.ts
├── domain/
│ └── repositories/
└── infrastructure/
```
Key files to modify:
- **Listings module:** `apps/api/src/modules/listings/presentation/controllers/listings.controller.ts`
- **Analytics module:** `apps/api/src/modules/analytics/presentation/controllers/analytics.controller.ts`
- **Search module:** `apps/api/src/modules/search/presentation/controllers/search.controller.ts`
---
## ✅ Audit Checklist
- [x] All 70+ endpoints enumerated by module
- [x] Route prefixes, methods, query params documented
- [x] Auth/guard requirements identified
- [x] Gaps mapped to UI screen requirements
- [x] Implementation roadmap created
- [x] Sprint-by-sprint effort estimates provided
- [x] No mock data recommended—all real backend data
- [x] File paths provided for easy navigation
---
## 🎓 How to Use This Audit
### For Backend TechLead:
1. Read **BACKEND_API_AUDIT_EXCHANGE_UI.md** for full context
2. Prioritize gaps 15 (critical) in Sprint 12
3. Reference "Implementation Roadmap" section for sequencing
4. Use "Recommendations" section for effort estimates
### For Frontend Lead:
1. Read **BACKEND_API_AUDIT_QUICK_REFERENCE.txt** for quick summary
2. For each screen needing data:
- Check "Available Endpoints" section
- If gaps exist, reference "Critical Gaps" section
- Communicate blocker status to backend
### For Product Manager:
1. Review "Detailed Breakdown by UI Screen" section above
2. Readiness % shows which screens are ready for FE work
3. Effort estimates help with release planning
---
## 📞 Questions / Follow-ups
**Q: Can we use mock data on FE while waiting for gaps?**
**A:** No — requirement is for real backend data only. Gaps must be closed before FE integration.
**Q: Which gap is easiest to complete first?**
**A:** Gap #1 (sortBy=publishedAt) — adds 1 parameter to existing search endpoint, ~1 day.
**Q: Which gap has the most impact?**
**A:** Gap #2 (market-snapshot) — powers entire home dashboard, enables real-time trading feel.
**Q: Can gaps #8 and #9 be skipped?**
**A:** Yes — Gap #8 (ward-level heatmap) is nice-to-have; Gap #9 (real-time) is polish. Gaps #17 are blocking.
---
**Audit Date:** 2026-04-21
**Repository:** goodgo-platform-ai
**Scope:** 70+ endpoints across 12 modules
**Status:** Ready for planning | No mock data allowed
**Next Step:** TechLead prioritization of gaps 17 for sprint planning