๐ fate ยท ๅคฉๅฝไนๅ
ๅบไบๅ
ซๅญไบ่ก ยท ไธๆไบๆ ผ ยท ๅจๆๅฆ่ฑก ยท ่ฏ่ฏๅบๅค็ๆบ่ฝ่ตทๅๅผๆ
FATE โ Celestial Naming Engine
English | ไธญๆ
ๅๆฑๅ
ซๅญ็ฒพๅฏๆจ็ฎ๏ผๅนด/ๆ/ๆฅ/ๆถ๏ผ
ไบ่กๅผบๅผฑๅๆ + ่ฐๅ็จ็ฅ
ๅ็ฎๆณๅ็จ็ฅ ๏ผๅนณ่กก็จ็ฅๆณ & ๆ ผๅฑ็จ็ฅๆณ๏ผ10็งๆ ผๅฑ๏ผ
็่ๅ
ณ็ณปใ็บณ้ณไบ่ก
ไบ็ปด่ฏๅไฝ็ณป ๏ผๆๅๅฐ่ฑก ยท ไบ่กๅ
ซๅญ ยท ็่ ยท ไบๆ ผๆฐ็ ยท ้ณ้ต
ไธๆ้
็ฝฎๅๅถๅๆ
81ๆฐๅคง่ก O(1) ๆฅๆพ
64ๅฆๅจๆๅฆ่ฑก่งฃ่ฏป
็ฐไปฃ React + Tailwind CSS ๅๅบๅผ UI
ๅฎๆถๆตๅผ็ๆ + ่ฝฎ่ฏข่ฟๅบฆ
ๅ้ๅๅ๏ผ่กจๆ ผ/ๅก็ๅ่งๅพ๏ผ
ๆข็ดขๆจกๅผ๏ผ้ๆบๆฝๆ ท + ๆกไปถ่ฟๆปค
Ent ORM + SQLite ้ซๆๆฐๆฎๅฑ
ExcellentTable ๆตๅผ Top-N ๆฐๆฎ็ปๆ
ๅผๆญฅๅนถๅ็ๆ๏ผsession ๆจกๅผ๏ผ
ๅตๅ
ฅๅผ Web ๅ็ซฏ๏ผๅไบ่ฟๅถๅๅ๏ผ
๐ก ๆ็คบ ๏ผWeb ็้ข่ฟ่กๅจ http://localhost:18080๏ผๅฏๅจๆๅกๅจๅๅณๅฏ่ฎฟ้ฎใ
้ฆ้กต
ๅฝๅ็ปๆ
ๅ้ๅๅ๏ผ่กจๆ ผ๏ผ
ๅ้ๅๅ๏ผๅก็๏ผ
Go 1.22+
Bun ๏ผๅ็ซฏๅผๅ้่ฆ๏ผ็ไบง้จ็ฝฒๆ ้๏ผ
# ๅ
้้กน็ฎ
git clone https://github.com/babyname/fate.git
cd fate
# ไธ่ฝฝไพ่ต
go mod download
# ๅๅงๅๆฐๆฎๅบ๏ผๅฟ
้๏ผ
go run ./cmd/dbinit
# ๅฏๅจ Web ๆๅก
go run ./cmd/server
# ่ฎฟ้ฎ http://localhost:18080
# ็ผ่ฏ
go build -o fate ./cmd/console
# ็ๆๅๅญ
./fate name -s ๅผ -b " 2024/06/15 10:30" -g boy
๐ CLI ่พๅบ็คบไพ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Top 10 ๆจ่ๅๅญ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
#1 ๅผ ้ๆก ่ฏๅ:90.1 ็ญ็บง:ไธไธ ไบ่ก:็ซ็ซ
ๅคฉๆ ผ:ๅถ ไบบๆ ผ:ๅ ๅฐๆ ผ:ๅๅ ๆปๆ ผ:ๅ
ไธๆ:ๆจๆฐดๆฐด(ๅคงๅ)
#2 ๅผ ็ฒฎๅฑ ่ฏๅ:90.1 ็ญ็บง:ไธไธ ไบ่ก:็ซ็ซ
#3 ๅผ ้ๆถ ่ฏๅ:90.1 ็ญ็บง:ไธไธ ไบ่ก:็ซ็ซ
...
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๅ
จ้จๅ้ๅๅญๅ
ฑ 10000 ไธช
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
่ฏฆ็ปๅๆ ๏ผname detail๏ผ๏ผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๅผ ้ๆก ่ฏๅ: 90.1 ็ญ็บง: ไธไธ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ใไบๆ ผๅๆใ
ๅคฉๆ ผ:12(ๅถ) ไบบๆ ผ:29(ๅ) ๅฐๆ ผ:30(ๅๅ)
ๅคๆ ผ:13(ๅ) ๆปๆ ผ:41(ๅ)
ไธๆ: ๆจๆฐดๆฐด(ๅคงๅ)
ใๅ
ซๅญๅๆใ
ๅๆฑ: ็ฒ่พฐ ๅบๅ ๅบๆ ไน้
ๅ็ฅ: ็ซ ๅฟ็ฅ: ้
ใๅจๆๅฆ่ฑกใ
ๆฌๅฆ: ๆฐดๅฑฑ่น ๅๅฆ: ๅฐๅฑฑ่ฐฆ
ใ่ฏๅๆ็ปใ
ๆๅ:86 ไบ่ก:94 ็่:94 ไบๆ ผ:89 ้ณ้ต:89
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๅๆฐ
็ฎๅ
่ฏดๆ
็คบไพ
--surname
-s
ๅงๆฐ
-s ๅผ
--born
-b
ๅบ็ๆฅๆไธๆถๅป
-b "2024/06/15 10:30"
--gender
-g
ๆงๅซ
-g boy / -g girl
--xiyong
ๅ็จ็ฅ็ฎๆณ
balance๏ผๅนณ่กกๆณ๏ผ/ geju๏ผๆ ผๅฑๆณ๏ผ
--strictness
ไบๆ ผไธฅๆ ผๅบฆ
loose / moderate / strict
--filter
-f
่ฟๆปคๆฑๅญ
-f ็
ๆญป็ฉท
--output
-o
่พๅบๅฐๆไปถ
-o result.txt
ๅฏๅจๆๅกๅจๅๅฏ็จ๏ผ
Method
Endpoint
่ฏดๆ
GET
/health
ๅฅๅบทๆฃๆฅ
POST
/api/generate
ๅผๆญฅ็ๆๅๅญ๏ผ่ฟๅ task_id๏ผ
GET
/api/task/:id
ๆฅ่ฏขไปปๅก็ถๆ
GET
/api/names/:taskId
ๅ้กต่ทๅๅๅญๅ่กจ
GET
/api/name-detail
ๅๅญ่ฏฆ็ปๅๆ
GET
/api/explore/:taskId
้ๆบๆข็ดขๅๅญ
curl -X POST http://localhost:18080/api/generate \
-H " Content-Type: application/json" \
-d ' {
"surname": "ๅผ ",
"born": "2024/06/15 10:30",
"sex": "boy",
"poetry_mode": 2,
"avoid_chars": ["็
", "ๆญป"]
}'
go get github.com/babyname/fate/v4
package main
import (
"fmt"
"time"
"github.com/babyname/fate/v4"
"github.com/babyname/fate/v4/config"
)
func main () {
cfg := config .DefaultConfig ()
f , _ := fate .New (cfg )
filter := fate .NewFilter (fate.FilterOption {
CharacterFilter : true ,
CharacterFilterType : fate .CharacterFilterTypeDefault ,
MinStroke : 3 ,
MaxStroke : 18 ,
RegularFilter : true ,
DaYanFilter : true ,
WuXingFilter : true ,
AvoidCharacters : []string {"็
" , "ๆญป" , "็ฉท" },
})
s := f .NewSessionWithFilter (filter )
born , _ := time .Parse ("2006/01/02 15:04" , "2024/06/15 10:30" )
input := & fate.Input {
Last : [2 ]string {"ๅผ " , "" },
Born : born ,
Sex : fate .SexBoy ,
}
s .Start (input )
s .Wait ()
// ่ทๅ็ปๆ
output := input .Output ()
for _ , nr := range output .TopNames () {
fmt .Printf ("%s - %.1f (%s)\n " , nr .FullName , nr .Score , nr .Grade )
}
// ExcellentTable: ๆตๅผ Top-N ่ฎฟ้ฎ
table := output .GetExcellentTable ()
entries := table .TopN (10 )
for _ , e := range entries {
fmt .Printf ("%s%s - %.1f has_poetry=%v\n " , e .Char1 , e .Char2 , e .Score , e .HasPoetry )
}
// Explore: ้ๆบ้ๆ ท + ๆกไปถ่ฟๆปค
explored := table .Explore (10 , func (e fate.ExcellentEntry ) bool {
return e .HasPoetry
})
for _ , e := range explored {
fmt .Printf ("%s%s - %.1f\n " , e .Char1 , e .Char2 , e .Score )
}
}
็ฑปๅ
่ฏดๆ
fate.New(cfg)
ๅๅปบๅผๆๅฎไพ
fate.NewSessionWithFilter(filter)
ๅๅปบๅธฆ็ญ้ๅจ็ไผ่ฏ
fate.NewFilter(option)
ๅๅปบ็ญ้ๅจ
fate.FilterOption
็ญ้้้กน๏ผ็ฌ็ป/ไบ่ก/ๅคง่ก/ๆงๅซ/้ฟ็จๅญ็ญ๏ผ
fate.Input
่พๅ
ฅ๏ผๅงๆฐ/็ๆฅ/ๆงๅซ๏ผ
fate.Output
่พๅบ๏ผTopNames/ExcellentTable/CharMap๏ผ
fate.ExcellentTable
ๆตๅผ Top-N ็ปๆ๏ผTryPush/Finalize/TopN/Explore๏ผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ fate CLI / Server โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ cmd/console โ cmd/server โ
โ (CLI ๅทฅๅ
ท) โ (HTTP API + ๅตๅ
ฅๅผๅ็ซฏ) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ internal/http โ
โ (API ่ทฏ็ฑ & ไธญ้ดไปถ) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ fate ๆ ธๅฟๅผๆ โ
โ โโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโ โ
โ โ Session โ Filter โ ExcellentTable โ โ
โ โ ๅผๆญฅ็ๆ โ ๅค็บง็ญ้ โ ๆตๅผTop-N โ โ
โ โโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโค โ
โ โ Bazi โ Wuge โ Zhouyi โ โ
โ โ ๅ
ซๅญๆจ็ฎ โ ไบๆ ผๆฐ็ โ ๅจๆๅฆ่ฑก โ โ
โ โโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ chronos/v2 (ๅ
ซๅญๅผๆ) โ
โ yi (ๅจๆๅผๆ) โ
โ Ent ORM (ๆฐๆฎๅฑ) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ SQLite3 (ๆฐๆฎๅญๅจ) โ
โ character.json (ๆฑๅญๆฐๆฎๅบ) โ
โ chinese-poetry (่ฏ่ฏๅบ) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
fate/
โโโ cmd/ # ๅฝไปค่กๅ
ฅๅฃ
โ โโโ console/ # ไธป CLI๏ผname / dbinit / dictctl๏ผ
โ โโโ server/ # Web ๆๅก
โ โโโ dbinit/ # ๆฐๆฎๅบๅๅงๅ
โ โโโ character/ # ๆฑๅญๆฐๆฎๅทฅๅ
ท
โ โโโ dictctl/ # ๅญๅ
ธ็ฎก็ๅทฅๅ
ท
โ โโโ tools/ # ๅผๅ่ฐ่ฏๅทฅๅ
ท
โโโ config/ # ้
็ฝฎๅฎไน
โโโ data/ # ็งๅญๆฐๆฎ
โ โโโ chinese-poetry/ # ่ฏ่ฏๅบ
โ โโโ seed/ # ๅบ็กๆฐๆฎ
โโโ docs/ # ๆๆกฃ & ๆชๅพ
โโโ ent/ # Ent Schema & ็ๆไปฃ็
โโโ internal/ # ๅ
้จๅ
โ โโโ chronosfate/ # chronos ้้
ๅฑ
โ โโโ http/ # HTTP API
โ โโโ ...
โโโ model/ # ๆฐๆฎๆจกๅ
โโโ resources/ # ๅตๅ
ฅๅผ่ตๆบ
โ โโโ character.json # ๆฑๅญๅ
ๆฐๆฎๅบ
โ โโโ static/ # Web ๅ็ซฏๆๅปบไบง็ฉ
โโโ scripts/ # ๆๅปบ่ๆฌ
โโโ web/ # React ๅ็ซฏๆบ็
โโโ src/
โโโ components/ # UI ็ปไปถ
โโโ pages/ # ้กต้ข
โโโ lib/ # API ๅฎขๆท็ซฏ & ๅทฅๅ
ท
โโโ store/ # ็ถๆ็ฎก็ (Zustand)
็ปดๅบฆ
ๆ้
่ฏๅไพๆฎ
๐จ ๆๅๅฐ่ฑก
20%
ๅธธ็จๅบฆใๆญฃไฝๅญใๅญไนไธฐๅฏๅบฆใๆๅๅ
ณ่
๐ฅ ไบ่กๅ
ซๅญ
25%
ๅๅญไบ่กไธๆฅไธปๅ็จ็ฅๅน้
ๅบฆ
๐ ็่
10%
็่ไบ่กไธๅๅญไบ่ก็็ๅ
ๅ
ณ็ณป
๐ ไบๆ ผๆฐ็
25%
ๅคฉๆ ผ/ไบบๆ ผ/ๅฐๆ ผ/ๅคๆ ผ/ๆปๆ ผ 81 ๆฐๅๅถ
๐ต ้ณ้ต
20%
ๅงๅๅฃฐ้ต่ฐๅ่ฐๅบฆใๅนณไป็ปๅ
ๅบไบๆฅไธปๅผบๅผฑ๏ผ้่ฟๅๅ
/ๅผๅ
ๅ้ๅฏนๆฏๅ็จ็ฅ๏ผ
ๆฅไธป
็จ็ฅ
ๅ็ฅ
ๅฟ็ฅ
ๅผบ
ๅ
ๆ๏ผๅฎๆ๏ผ
ๆๅ
+ ็ๆ
ๅๆ๏ผๆฏๅซ๏ผ
ๅผฑ
็ๆ๏ผๅฐๆ๏ผ
ๅๆ๏ผๆฏๅซ๏ผ
ๅ
ๆ + ๆ็
ๅ
ๅฎๆ ผๅฑ๏ผๆญฃๅฎ/ไธๆ/้ฃ็ฅ/ไผคๅฎ/ๆญฃ่ดข/ๅ่ดข/ๅปบ็ฆ/้ณๅ็ญ 10 ็ง๏ผ๏ผๅๆๆ ผๅฑๅ็จ็ฅใ
ๅๆฏ
็จ้
go.mod module
main
v4.x ๅผๅไธป็บฟ
github.com/babyname/fate/v4
v3
v3.x Bugfix ็ปดๆค
github.com/babyname/fate
โ ๏ธ ๅๅฒๅๅ ๏ผv3 ๅๆฏ็ๆจกๅ่ทฏๅพไธๅซ /v3๏ผๆฉๆ Go module ่ง่ๆชๅผบๅถ่ฆๆฑ๏ผใ
ไป v4 ๅผๅงๅผๅ
ฅ /v4 ๅ็ผ๏ผๆชๆฅ v5 ไนๅฐ็ปไธไฝฟ็จ /v5ใ
็ณปๅ
ๆๆฐ
ๆ ็ญพ
v4.x
v4.2.0
v4.0.0
v3.x
v3.6.0
v3.0.0 ~ v3.6.0๏ผๅ
ฑ 14 ไธชๅๅธ๏ผ
v2.x
v2.0.2
v2.0.0 ~ v2.0.2
ๅฑ
ๆๆฏ
่ฏดๆ
่ฏญ่จ
Go 1.22+
ๆ ธๅฟๅผๆ & ๆๅก
ๅ็ซฏ
React 19 + Tailwind CSS 3 + Rsbuild
Web ็้ข
็ถๆ
Zustand
ๅ็ซฏ็ถๆ็ฎก็
UI
Radix UI + Lucide Icons
ๆ ้็ข็ปไปถๅบ
ORM
Ent
็ฑปๅๅฎๅ
จ็ Go ORM
ๅญๅจ
SQLite3 (modernc)
ๅตๅ
ฅๅผๆฐๆฎๅบ๏ผ้ถไพ่ต
ๅ
ซๅญ
chronos/v2
ๅ
ซๅญๆจ็ฎๅผๆ
ๅฆ่ฑก
yi
ๅจๆๅ
ญๅๅๅฆ
# ๅ็ซฏๅผๅ๏ผ็ญๆดๆฐ๏ผ
cd web && bun install && bun run dev
# ๅ็ซฏๅผๅ
go run ./cmd/server
# ๆๅปบ็ไบง็ๆฌ
cd web && bun run build # ๅ็ซฏๆๅปบ โ resources/static/
go build -o fate ./cmd/console # CLI ๅทฅๅ
ท
go build -o fate-server ./cmd/server # ๆๅกๅจ๏ผๅซๅตๅ
ฅๅผๅ็ซฏ๏ผ
# ่ฟ่กๆต่ฏ
go test ./...
# ไปฃ็ ๆฃๆฅ
golangci-lint run
MIT ยฉ babyname