From 8a20a14123897ec685ceb9b51b1161243d8b49ff Mon Sep 17 00:00:00 2001 From: chakcy <947105045@qq.com> Date: Wed, 22 Jul 2026 17:15:16 +0800 Subject: [PATCH] add first commit --- README.md | 23 +++++++++++++++++++++++ workers/auth/config.toml | 10 ++++++++++ workers/auth/login.toml | 13 +++++++++++++ workers/config.toml | 33 +++++++++++++++++++++++++++++++++ workers/doubao/analyze.toml | 8 ++++++++ workers/doubao/config.toml | 10 ++++++++++ workers/example/add.toml | 25 +++++++++++++++++++++++++ workers/example/config.toml | 10 ++++++++++ workers/example/count.toml | 6 ++++++ workers/example/divide.toml | 12 ++++++++++++ workers/example/multiply.toml | 11 +++++++++++ workers/example/subtract.toml | 11 +++++++++++ zenoh_config.json5 | 16 ++++++++++++++++ 13 files changed, 188 insertions(+) create mode 100644 README.md create mode 100644 workers/auth/config.toml create mode 100644 workers/auth/login.toml create mode 100644 workers/config.toml create mode 100644 workers/doubao/analyze.toml create mode 100644 workers/doubao/config.toml create mode 100644 workers/example/add.toml create mode 100644 workers/example/config.toml create mode 100644 workers/example/count.toml create mode 100644 workers/example/divide.toml create mode 100644 workers/example/multiply.toml create mode 100644 workers/example/subtract.toml create mode 100644 zenoh_config.json5 diff --git a/README.md b/README.md new file mode 100644 index 0000000..7f509d7 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# 配置文件说明 + +本目录存放应用所有 TOML 配置文件。 + +## 主要文件 + +- `config.toml`:应用主配置(环境、服务器、日志、安全、缓存等) +- `zenoh_config.json5`:Zenoh 会话配置(JSON5 格式) +- `workers/config.toml`:Worker 插件加载列表(指定模块、工厂函数、副本数) +- `workers//*.toml`:每个 Worker 的路由定义(如 `add.toml`, `divide.toml`) + +## Worker 路由配置格式 + +每个接口文件(如 `add.toml`)包含 HTTP 方法节(`[GET]`, `[POST]` 等): + +```toml +[GET] +summary = "Add two numbers" +params = ["a: float", "b: float"] +response_model = { result = { type = "float", required = true }, operation = { type = "str", default = "add" } } +``` + +执行 `uv run gen_models config/workers/example src/plugins/example` 可自动生成对应的 Pydantic 模型。 diff --git a/workers/auth/config.toml b/workers/auth/config.toml new file mode 100644 index 0000000..f747e31 --- /dev/null +++ b/workers/auth/config.toml @@ -0,0 +1,10 @@ +[worker] +name = "auth" +version = "0.1.0" +description = "鉴权管理" +config_version = "1.0" +defaults = { method = "GET", ttl = 30, timeout = 2.0, auth_required = true, cacheable = false } + +[worker.registration] +router_prefix = "/auth" +tags = ["auth"] \ No newline at end of file diff --git a/workers/auth/login.toml b/workers/auth/login.toml new file mode 100644 index 0000000..27dd0ce --- /dev/null +++ b/workers/auth/login.toml @@ -0,0 +1,13 @@ +[POST] +cacheable = false +auth_required = false +summary = "登录" +docstring = "根据用户名和密码进行登录,登录成功返回token,获取请求需带式token进行请求" +params = ["username: str", "password: str"] + +[POST.response_model] +result = {type = "str", required = true} +token = {type = "str", required = true} +message = {type = "str", required = true} +timestamp = {type = "float", required = false} + diff --git a/workers/config.toml b/workers/config.toml new file mode 100644 index 0000000..4bdd542 --- /dev/null +++ b/workers/config.toml @@ -0,0 +1,33 @@ +[[workers]] +type = "example" +module = "plugins.example" +factory = "create_workers" +cleanup = "cleanup" +count = 3 + +[workers.config] +type = "example" +data_dir = "./data" + +[[workers]] +type = "doubao" +module = "plugins.doubao" +factory = "create_workers" +cleanup = "cleanup" +count = 3 + +[workers.config] +type = "doubao" +api_key = " ark-b149df84-a057-4ca0-b1a0-82a22c4e3c70-33cde" # 或通过环境变量 VOLC_ACCESSKEY 提供 +base_url = "https://ark.cn-beijing.volces.com/api/v3" +model = "doubao-seed-evolving" + +[[workers]] +type = "auth" +module = "plugins.auth" +factory = "create_workers" +cleanup = "cleanup" +count = 3 + +[workers.config] +type = "auth" diff --git a/workers/doubao/analyze.toml b/workers/doubao/analyze.toml new file mode 100644 index 0000000..ae341a8 --- /dev/null +++ b/workers/doubao/analyze.toml @@ -0,0 +1,8 @@ +[POST] +summary = "分析图片内容" +docstring = "发送图片(base64或路径)到豆包视觉模型,返回描述" +params = [ + "image_base64: str", + "prompt: str" +] +response_model = { result = { type = "str", required = true }, error = { type = "str", required = false, default = "" } } \ No newline at end of file diff --git a/workers/doubao/config.toml b/workers/doubao/config.toml new file mode 100644 index 0000000..f8827d0 --- /dev/null +++ b/workers/doubao/config.toml @@ -0,0 +1,10 @@ +[worker] +name = "doubao" +version = "0.1.0" +description = "火山引擎豆包视觉理解 worker" +config_version = "1.0" +defaults = { method = "POST", timeout = 30.0, auth_required = false } + +[worker.registration] +router_prefix = "/doubao" +tags = ["vision", "ai"] diff --git a/workers/example/add.toml b/workers/example/add.toml new file mode 100644 index 0000000..f79a508 --- /dev/null +++ b/workers/example/add.toml @@ -0,0 +1,25 @@ +# add 接口 — 按请求类型分节 +# subject 会带上方法后缀: example.add.GET / example.add.POST + +[GET] +cacheable = true +summary = "Add two numbers" +docstring = "Add two numbers via GET query params" +params = ["a: float", "b: float"] +auth_required = false + +[GET.response_model] +result = { type = "float", required = true } +operation = { type = "str", default = "add" } +timestamp = { type = "float", required = false, default = 0.0 } + +[POST] +cacheable = true +summary = "Add two numbers (POST)" +docstring = "Add two numbers via POST JSON body" +params = ["a: float", "b: float"] + +[POST.response_model] +result = { type = "float", required = true } +operation = { type = "str", default = "add" } +timestamp = { type = "float", required = false, default = 0.0 } diff --git a/workers/example/config.toml b/workers/example/config.toml new file mode 100644 index 0000000..0dd934d --- /dev/null +++ b/workers/example/config.toml @@ -0,0 +1,10 @@ +[worker] +name = "example" +version = "0.1.0" +description = "chongming worker example — demonstrates new config features" +config_version = "1.0" +defaults = { method = "GET", ttl = 30, timeout = 2.0, auth_required = true, cacheable = false } + +[worker.registration] +router_prefix = "/calc" +tags = ["example"] diff --git a/workers/example/count.toml b/workers/example/count.toml new file mode 100644 index 0000000..ab2d370 --- /dev/null +++ b/workers/example/count.toml @@ -0,0 +1,6 @@ +# count.toml +[GET] +summary = "Get visit count and increment" +docstring = "Increments a counter and returns current value" +params = [] # 无参数 +response_model = { name = { type = "str", required = true }, value = { type = "int", required = true } } \ No newline at end of file diff --git a/workers/example/divide.toml b/workers/example/divide.toml new file mode 100644 index 0000000..a6ead12 --- /dev/null +++ b/workers/example/divide.toml @@ -0,0 +1,12 @@ +# divide 接口 + +[GET] +summary = "Divide two numbers" +docstring = "Divide two numbers via GET query params (a / b). Returns error if b == 0." +params = ["a: float", "b: float"] + +[GET.response_model] +result = { type = "float", required = false, default = 0.0 } +operation = { type = "str", default = "divide" } +timestamp = { type = "float", required = false, default = 0.0 } +error = { type = "str", required = false, default = "" } diff --git a/workers/example/multiply.toml b/workers/example/multiply.toml new file mode 100644 index 0000000..f338c89 --- /dev/null +++ b/workers/example/multiply.toml @@ -0,0 +1,11 @@ +# multiply 接口 + +[GET] +summary = "Multiply two numbers" +docstring = "Multiply two numbers via GET query params (a * b)" +params = ["a: float", "b: float"] + +[GET.response_model] +result = { type = "float", required = true } +operation = { type = "str", default = "multiply" } +timestamp = { type = "float", required = false, default = 0.0 } diff --git a/workers/example/subtract.toml b/workers/example/subtract.toml new file mode 100644 index 0000000..bb8c5aa --- /dev/null +++ b/workers/example/subtract.toml @@ -0,0 +1,11 @@ +# subtract 接口 + +[GET] +summary = "Subtract two numbers" +docstring = "Subtract two numbers via GET query params (a - b)" +params = ["a: float", "b: float"] + +[GET.response_model] +result = { type = "float", required = true } +operation = { type = "str", default = "subtract" } +timestamp = { type = "float", required = false, default = 0.0 } diff --git a/zenoh_config.json5 b/zenoh_config.json5 new file mode 100644 index 0000000..a8bf057 --- /dev/null +++ b/zenoh_config.json5 @@ -0,0 +1,16 @@ +{ + mode: "peer", + connect: { + endpoints: ["tcp/127.0.0.1:7447"], + }, + scouting: { + multicast: { + enabled: false, + }, + }, + transport: { + shared_memory: { + enabled: true, + }, + }, +}