Commit graph

214 commits

Author SHA1 Message Date
Tiago Yamamoto
51ad574d72
Merge pull request #20 from rede5/codex/implement-logistics-and-delivery-module
Add shipping settings, calculation logic and API endpoints
2025-12-20 10:47:56 -03:00
Tiago Yamamoto
fd60888706 Add shipping settings and calculation 2025-12-20 10:47:37 -03:00
Tiago Yamamoto
d9886fae62
Merge pull request #19 from rede5/codex/implement-backend-migrations-and-test
Add SQL migrations runner for backend schema
2025-12-20 10:33:46 -03:00
Tiago Yamamoto
77f414bf02 Add database migrations runner 2025-12-20 10:32:54 -03:00
Tiago Yamamoto
c3006064f7 chore: update backend .env.example 2025-12-20 10:12:02 -03:00
Tiago Yamamoto
25cee3911c chore: refactor backend config, unignore .env, update config loading 2025-12-20 10:10:55 -03:00
Tiago Yamamoto
4bb848788f feat: tenant model, seeder, and product search with distance
Tenant Model:
- Renamed Company→Tenant (Company alias for compatibility)
- Added: lat/lng, city, state, category
- Updated: postgres, handlers, DTOs, schema SQL

Seeder (cmd/seeder):
- Generates 400 pharmacies in Anápolis/GO
- 20-500 products per tenant
- Haversine distance variation ±5km from center

Product Search:
- GET /products/search with advanced filters
- Filters: price (min/max), expiration, distance
- Haversine distance calculation (approx km)
- Anonymous seller (only city/state shown until checkout)
- Ordered by expiration date (nearest first)

New domain types:
- ProductWithDistance, ProductSearchFilter, ProductSearchPage
- HaversineDistance function

Updated tests for Category instead of Role
2025-12-20 09:03:13 -03:00
Tiago Yamamoto
beffeb8268 feat(security): add rate limiting and security headers middleware
Rate Limiting (ratelimit.go):
- Token bucket algorithm per IP
- Default: 100 requests/minute
- X-Forwarded-For support
- Cleanup for stale buckets
- 7 tests (ratelimit_test.go)

Security Headers (security.go):
- X-Content-Type-Options: nosniff
- X-Frame-Options: DENY
- X-XSS-Protection: 1; mode=block
- Content-Security-Policy: default-src 'none'
- Referrer-Policy: strict-origin-when-cross-origin
- Cache-Control: no-store, max-age=0

Middleware coverage: 97.3% -> 95.8% (new code added)
2025-12-20 08:41:36 -03:00
Tiago Yamamoto
45d34f36c8 feat(pagination): add pagination to all list endpoints
Added pagination support to:
- ListCompanies: filter by role, search
- ListProducts: filter by seller, search
- ListOrders: filter by buyer, seller, status
- ListInventory: filter by expiring date, seller

New domain types:
- ProductFilter, ProductPage
- CompanyFilter, CompanyPage
- OrderFilter, OrderPage
- InventoryPage

All endpoints now return paginated responses with:
- items array
- total count
- current page
- page size

Updated MockRepository in both test files to match new signatures
2025-12-20 08:37:59 -03:00
Tiago Yamamoto
b713d8fbed test(middleware): expand coverage 95.9% -> 97.3%
Added tests for:
- Expired token handling
- Wrong signing method rejection (None type attack)
2025-12-20 08:24:03 -03:00
Tiago Yamamoto
16a9ff7ffe test(handler): expand handler test coverage 6.6% -> 44.9%
Added 40+ new handler tests covering:
- Auth: Register, Login (invalid JSON, missing company)
- Company: Get, Update, Delete, Verify, Rating, MyCompany
- Product: Get, Update, Delete (not found, invalid UUID)
- Inventory: List, Adjust (invalid params)
- Order: Create, Get, Update, Delete (validation)
- Payment: Preference, Webhook, Shipment
- Dashboard: Seller, Admin (authorization)
- User: CRUD operations (admin/seller scoping)
- Cart: Add, Get, Delete (context validation)
- Review: Create (validation)

Fixed MockRepository to return errors for not found entities
2025-12-20 08:21:25 -03:00
Tiago Yamamoto
a0720fb4a6 refactor(handler): complete package decomposition - 92% extracted
Final handler package structure (9 files):
- handler.go: 111 lines (Auth: Register, Login)
- dto.go: 220 lines (DTOs, helpers)
- company_handler.go: 228 lines (Companies CRUD)
- product_handler.go: 216 lines (Products + Inventory)
- order_handler.go: 147 lines (Orders CRUD)
- cart_handler.go: 127 lines (Cart + Reviews)
- payment_handler.go: 117 lines (Payments + Shipments)
- dashboard_handler.go: 81 lines (Seller/Admin dashboards)
- user_handler.go: 256 lines (Users CRUD)

Total: 1471 -> 111 lines in handler.go (~92% extracted)
All tests passing
2025-12-20 08:10:56 -03:00
Tiago Yamamoto
a3f00cd8ff refactor(handler): extract order and cart handlers
- Extract 5 order handlers to order_handler.go (147 lines)
  - CreateOrder, ListOrders, GetOrder, UpdateOrderStatus, DeleteOrder
- Extract 4 cart/review handlers to cart_handler.go (127 lines)
  - CreateReview, AddToCart, GetCart, DeleteCartItem
- handler.go reduced from 806 to 548 lines
- Total refactoring: ~63% of original (1471 -> 548)

All tests passing
2025-12-20 08:06:07 -03:00
Tiago Yamamoto
19c636164b refactor(handler): extract product and inventory handlers
- Extract 7 handlers to product_handler.go (216 lines)
  - CreateProduct, ListProducts, GetProduct, UpdateProduct, DeleteProduct
  - ListInventory, AdjustInventory
- handler.go reduced from 1025 to 806 lines
- Total refactoring: ~60% of original (1471 -> 806)

All tests passing
2025-12-20 08:02:02 -03:00
Tiago Yamamoto
e40517aac4 refactor(handler): extract company handlers + update READMEs
Backend:
- Extract 8 company handlers to company_handler.go (228 lines)
- handler.go reduced from 1254 to ~1026 lines
- Total refactoring: ~35% of original handler.go

READMEs updated:
- Backend: new architecture, test coverage table
- Marketplace: new pages (Orders, Inventory, Company, SellerDashboard), Vitest info
2025-12-20 07:58:37 -03:00
Tiago Yamamoto
23df78d9c3 refactor(handler): extract DTOs and helpers to dto.go
- Move 18 request/response structs to dto.go
- Move utility functions (writeJSON, decodeJSON, parseUUID, etc)
- Reduce handler.go from 1471 to 1254 lines (~15% reduction)
- All tests passing
2025-12-20 07:54:35 -03:00
Tiago Yamamoto
b8973739ab feat(backend): add comprehensive test suite for 80% coverage
- Add config_test.go (5 tests for env parsing)
- Add middleware_test.go (16 tests for CORS, Auth, Gzip, Logger)
- Add usecase_test.go (30+ tests for business logic)
- Add payments_test.go (6 tests for MercadoPago gateway)

Coverage: config 100%, middleware 95.9%, payments 100%, usecase 64.7%

feat(marketplace): add test framework and new pages

- Setup Vitest with jsdom environment
- Add cartStore.test.ts (15 tests for Zustand store)
- Add usePersistentFilters.test.ts (5 tests for hook)
- Add apiClient.test.ts (7 tests for axios client)
- Add Orders page with status transitions
- Add Inventory page with stock adjustments
- Add Company page with edit functionality
- Add SellerDashboard page with KPIs

Total marketplace tests: 27 passing
2025-12-20 07:43:56 -03:00
Tiago Yamamoto
c83079e4c9 chore(marketplace): update package-lock.json 2025-12-20 07:27:37 -03:00
Tiago Yamamoto
8ffd35741d fix: resolve swagger duplicates and add backend tests 2025-12-19 20:28:39 -03:00
Tiago Yamamoto
fdf256d436
Merge pull request #18 from rede5/codex/corrigir-erro-contia
Remove duplicate /api/v1/products/{id} path from Swagger docs
2025-12-19 19:32:31 -03:00
Tiago Yamamoto
e5103db905 Fix duplicate product path in swagger docs 2025-12-19 19:32:16 -03:00
Tiago Yamamoto
cee817cd60
Merge pull request #17 from rede5/codex/implementar-rotas-para-sistema-de-auth
Add missing auth endpoints in BFF
2025-12-19 19:22:57 -03:00
Tiago Yamamoto
edf7cb78ac Add missing auth endpoints 2025-12-19 19:22:20 -03:00
Tiago Yamamoto
952e158aae
Merge pull request #16 from rede5/codex/add-swagger-route-/docs
Expose Swagger UI at /docs and update links
2025-12-19 19:01:13 -03:00
Tiago Yamamoto
632b35f6bb Update swagger route to /docs 2025-12-19 19:00:58 -03:00
Tiago Yamamoto
60078dd6aa
Merge pull request #15 from rede5/codex/fix-route-conflict-for-post-/api/v1/companies
Fix duplicate API route registrations
2025-12-19 18:53:02 -03:00
Tiago Yamamoto
65add1fa8e Fix duplicate API route registrations 2025-12-19 18:52:47 -03:00
Tiago Yamamoto
2bca2d4576
Merge pull request #14 from rede5/codex/add-v1-to-all-rptas
Prefix API routes with /api/v1 and update OpenAPI docs
2025-12-19 18:43:26 -03:00
Tiago Yamamoto
69af774d30 Add v1 prefix to API routes 2025-12-19 18:42:38 -03:00
Tiago Yamamoto
21d98da9c1
Merge pull request #13 from rede5/codex/mapear-backend-e-atualizar-rotas-no-swagger
Add v1 API routes and Swagger entries
2025-12-19 18:31:25 -03:00
Tiago Yamamoto
6cc02a7a8c Add v1 routes to API and Swagger 2025-12-19 18:30:27 -03:00
Tiago Yamamoto
1309a120cb
Merge pull request #12 from rede5/codex/implementar-crud-nas-rotas-e-documentar
Add CRUD endpoints for companies, products and orders; update repo/service/handlers and regenerate Swagger
2025-12-19 18:10:27 -03:00
Tiago Yamamoto
aaa4955fd9 Add full CRUD coverage to core API routes 2025-12-19 18:09:25 -03:00
Tiago Yamamoto
8f8d128ee8
Merge pull request #11 from rede5/codex/implementar-autenticacao-e-crud-de-usuarios
Add auth docs, user CRUD endpoints and password peppering
2025-12-19 17:55:38 -03:00
Tiago Yamamoto
4680035e02 Add auth docs, user CRUD, and password pepper 2025-12-19 17:54:16 -03:00
Tiago Yamamoto
916225f19e feat(backend): add configurable CORS and optimize Dockerfile
- Add CORS_ORIGINS env var for multiple domains support
- Update config.go with CORSOrigins field and getEnvStringSlice helper
- Rewrite CORS middleware with CORSWithConfig for dynamic origins
- Update server.go to use configurable CORS
- Update .env.example with all configuration variables
- Optimize Dockerfile: switch to distroless image, update port to 8214
2025-12-19 17:34:30 -03:00
Tiago Yamamoto
851dd4f265 chore: optimize Dockerfiles with multi-stage builds and caching
- Backend (Go): Use scratch image (~5MB), add build cache for modules
- Backoffice (NestJS): Add pnpm cache, alpine image, fix Prisma client copy
- BFF (Python): Add multi-stage with virtualenv, pip cache, optimized env vars
- All: Add non-root users for security
2025-12-18 17:28:52 -03:00
Tiago Yamamoto
a1a65ab831
Merge pull request #10 from rede5/codex/create-b2b-reputation-system
Add rating and dashboard endpoints
2025-12-18 13:19:44 -03:00
Tiago Yamamoto
cd376339b9 Add rating and dashboard endpoints 2025-12-18 13:19:21 -03:00
Tiago Yamamoto
989f465613
Merge pull request #9 from rede5/codex/implement-delivery-management-routes
Add shipment endpoints and payment webhook split handling
2025-12-18 12:58:25 -03:00
Tiago Yamamoto
ce825fd1d5 Add shipment endpoints and payment webhook split handling 2025-12-18 12:58:05 -03:00
Tiago Yamamoto
94c27ec7dc
Merge pull request #8 from rede5/codex/implement-inventory-control-routes
Add inventory and cart endpoints
2025-12-18 12:47:23 -03:00
Tiago Yamamoto
e96ba8a49b Add inventory and cart endpoints 2025-12-18 12:43:51 -03:00
Tiago Yamamoto
a674eb8169
Merge pull request #7 from rede5/codex/implementar-modulo-de-autenticacao-em-go
Add JWT authentication and company verification
2025-12-18 12:31:06 -03:00
Tiago Yamamoto
e57445847b Implement JWT auth and company verification 2025-12-18 12:29:51 -03:00
Tiago Yamamoto
b4fd89f4a8
Merge pull request #6 from rede5/codex/implementar-crud-completo-de-usuarios
Add user CRUD endpoints with seller scoping
2025-12-18 11:42:48 -03:00
Tiago Yamamoto
b461ff5201 Implement user CRUD endpoints 2025-12-18 11:42:23 -03:00
Tiago Yamamoto
ee6a0a5375
Merge pull request #5 from rede5/codex/prepare-database-migration-sql-for-users-and-inventory
Add Gemini prompt guide for migrations and auth
2025-12-18 11:24:53 -03:00
Tiago Yamamoto
6995c17c55 Add Gemini prompt guide for migrations and auth 2025-12-18 11:24:30 -03:00
Tiago Yamamoto
521c7f1377 fix(backend): update default port to 8214 and fix env loading 2025-12-18 10:39:42 -03:00