feat: big-suite terraform example + provider nodejs zip fix
- examples/big-suite: E-Commerce 10 functions, 6 layers, real depends_on - provider: nodejs packages now wrapped in ESM zip (buildJSDeployZip) - provider: loadPackageLiteral reads raw file, nodejs zip via source_dir - all 10 functions verified working: python/node/ruby/go runtimes
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Симулирует агрегацию данных за день (в реальности — запрос к БД)
|
||||
|
||||
type DailyStat struct {
|
||||
Date string `json:"date"`
|
||||
Orders int `json:"orders"`
|
||||
Revenue float64 `json:"revenue"`
|
||||
AvgOrder float64 `json:"avg_order_value"`
|
||||
NewUsers int `json:"new_users"`
|
||||
TopCategory string `json:"top_category"`
|
||||
}
|
||||
|
||||
func generateDailyStats(days int) []DailyStat {
|
||||
stats := make([]DailyStat, days)
|
||||
base := time.Now().UTC()
|
||||
revenues := []float64{4821.50, 3920.00, 6100.75, 5200.10, 7330.40, 4100.00, 8950.30}
|
||||
orders := []int{38, 31, 49, 42, 58, 33, 72}
|
||||
categories := []string{"electronics", "furniture", "electronics", "stationery", "electronics", "furniture", "electronics"}
|
||||
|
||||
for i := 0; i < days; i++ {
|
||||
day := base.AddDate(0, 0, -(days - 1 - i))
|
||||
rev := revenues[i%len(revenues)]
|
||||
ord := orders[i%len(orders)]
|
||||
stats[i] = DailyStat{
|
||||
Date: day.Format("2006-01-02"),
|
||||
Orders: ord,
|
||||
Revenue: rev,
|
||||
AvgOrder: float64(int(rev/float64(ord)*100)) / 100,
|
||||
NewUsers: 5 + i*2,
|
||||
TopCategory: categories[i%len(categories)],
|
||||
}
|
||||
}
|
||||
return stats
|
||||
}
|
||||
|
||||
func Handler(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
|
||||
days := 7
|
||||
stats := generateDailyStats(days)
|
||||
|
||||
totalRevenue := 0.0
|
||||
totalOrders := 0
|
||||
for _, s := range stats {
|
||||
totalRevenue += s.Revenue
|
||||
totalOrders += s.Orders
|
||||
}
|
||||
|
||||
report := map[string]interface{}{
|
||||
"status": "ok",
|
||||
"generated_at": time.Now().UTC().Format(time.RFC3339),
|
||||
"period_days": days,
|
||||
"total_revenue": fmt.Sprintf("%.2f", totalRevenue),
|
||||
"total_orders": totalOrders,
|
||||
"avg_daily_rev": fmt.Sprintf("%.2f", totalRevenue/float64(days)),
|
||||
"daily_breakdown": stats,
|
||||
}
|
||||
|
||||
json.NewEncoder(w).Encode(report)
|
||||
}
|
||||
Reference in New Issue
Block a user