Skip to content

Latest commit

ย 

History

986 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Go Version Version License Module v4

๐ŸŒŒ fate ยท ๅคฉๅ‘ฝไน‹ๅ

ๅŸบไบŽๅ…ซๅญ—ไบ”่กŒ ยท ไธ‰ๆ‰ไบ”ๆ ผ ยท ๅ‘จๆ˜“ๅฆ่ฑก ยท ่ฏ—่ฏๅ‡บๅค„็š„ๆ™บ่ƒฝ่ตทๅๅผ•ๆ“Ž
FATE โ€” Celestial Naming Engine

English | ไธญๆ–‡


โœจ ๅŠŸ่ƒฝไบฎ็‚น

๐ŸŽฏ ๅ…ซๅญ—ๆŽจๅ‘ฝ

  • ๅ››ๆŸฑๅ…ซๅญ—็ฒพๅฏ†ๆŽจ็ฎ—๏ผˆๅนด/ๆœˆ/ๆ—ฅ/ๆ—ถ๏ผ‰
  • ไบ”่กŒๅผบๅผฑๅˆ†ๆž + ่ฐƒๅ€™็”จ็ฅž
  • ๅŒ็ฎ—ๆณ•ๅ–œ็”จ็ฅž๏ผšๅนณ่กก็”จ็ฅžๆณ• & ๆ ผๅฑ€็”จ็ฅžๆณ•๏ผˆ10็งๆ ผๅฑ€๏ผ‰
  • ็”Ÿ่‚–ๅ…ณ็ณปใ€็บณ้Ÿณไบ”่กŒ

๐Ÿ“Š ๅคš็ปด่ฏ„ๅˆ†

  • ไบ”็ปด่ฏ„ๅˆ†ไฝ“็ณป๏ผšๆ–‡ๅŒ–ๅฐ่ฑก ยท ไบ”่กŒๅ…ซๅญ— ยท ็”Ÿ่‚– ยท ไบ”ๆ ผๆ•ฐ็† ยท ้Ÿณ้Ÿต
  • ไธ‰ๆ‰้…็ฝฎๅ‰ๅ‡ถๅˆ†ๆž
  • 81ๆ•ฐๅคง่ก O(1) ๆŸฅๆ‰พ
  • 64ๅฆๅ‘จๆ˜“ๅฆ่ฑก่งฃ่ฏป

๐ŸŒ Web ็•Œ้ข

  • ็Žฐไปฃ 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

CLI ๅ‘ฝไปค่กŒ

# ็ผ–่ฏ‘
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
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

CLI ๅ‚ๆ•ฐ

ๅ‚ๆ•ฐ ็ฎ€ๅ†™ ่ฏดๆ˜Ž ็คบไพ‹
--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

๐Ÿ”Œ Web API

ๅฏๅŠจๆœๅŠกๅ™จๅŽๅฏ็”จ๏ผš

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)
    }
}

ๆ ธๅฟƒ API

็ฑปๅž‹ ่ฏดๆ˜Ž
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

๐Ÿ“„ License

MIT ยฉ babyname

About

Fate is a modern science chinese name create tool.

Topics

Resources

Stars

2.4k stars

Watchers

61 watching

Forks

Releases

Packages

Used by

Contributors

Languages