sync: 同步 v1.0.4 并脱敏配置与镜像

This commit is contained in:
MiFaZhan
2026-10-29 14:36:49 +08:00
parent 743e8e6e6e
commit 2206a393f7
516 changed files with 18119 additions and 2253 deletions
@@ -0,0 +1,82 @@
package simcardquery
import (
"strconv"
"testing"
"time"
"github.com/xuri/excelize/v2"
)
// buildRows 造 n 行「卡基础信息」级别的数据:22 列、字段长短接近真实。
func buildRows(n int) [][]interface{} {
rows := make([][]interface{}, n)
for i := 0; i < n; i++ {
id := strconv.Itoa(8986000000000000000 + i)
rows[i] = []interface{}{
id,
"186" + strconv.Itoa(10000000+i),
"46000" + strconv.Itoa(100000000+i),
"86000000000000" + strconv.Itoa(i%100),
float64(i % 5000),
float64(5000 - i%5000),
10240.0,
2,
4,
"中国移动",
"2026-01-01 00:00:00",
"2025-12-01 00:00:00",
"2027-12-31 23:59:59",
"OUT20260101",
"IN20251201",
"标准套餐A",
"示例企业",
"备注内容示例",
"",
"成功",
"",
"",
}
}
return rows
}
// TestExportWriteCost 量不同行数下「写 Excel + 生成文件」的真实耗时与体积。
// 用来判断 20000 这个上限是否偏离实际能力,而不是拍脑袋。
func TestExportWriteCost(t *testing.T) {
for _, n := range []int{20000, 50000, 100000} {
rows := buildRows(n)
start := time.Now()
f := excelize.NewFile()
sheet := f.GetSheetName(0)
stream, err := f.NewStreamWriter(sheet)
if err != nil {
t.Fatalf("new stream writer: %v", err)
}
header := make([]interface{}, 22)
for i := range header {
header[i] = "列" + strconv.Itoa(i)
}
if err = stream.SetRow("A1", header); err != nil {
t.Fatalf("write header: %v", err)
}
for i, row := range rows {
cell, _ := excelize.CoordinatesToCellName(1, i+2)
if err = stream.SetRow(cell, row); err != nil {
t.Fatalf("write row %d: %v", i, err)
}
}
if err = stream.Flush(); err != nil {
t.Fatalf("flush: %v", err)
}
buf, err := f.WriteToBuffer()
if err != nil {
t.Fatalf("write to buffer: %v", err)
}
_ = f.Close()
elapsed := time.Since(start)
t.Logf("rows=%6d write=%8.2fs size=%6.1fMB", n, elapsed.Seconds(), float64(buf.Len())/(1<<20))
}
}