core/
service.rs

1//! 基础服务配置(与 go-zero 的 `service.ServiceConf` 对齐的占位实现)。
2
3use serde::{Deserialize, Serialize};
4
5/// 与 go-zero `ServiceConf.Mode` 对齐:`dev|test|rt|pre|pro`,默认 `pro`。
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
7#[serde(rename_all = "lowercase")]
8pub enum Mode {
9    Dev,
10    Test,
11    Rt,
12    Pre,
13    #[default]
14    Pro,
15}
16
17/// 轻量日志配置:先对齐结构入口,字段后续可逐步细化。
18#[derive(Debug, Clone, Default, Serialize, Deserialize)]
19pub struct LogConf {
20    #[serde(default, skip_serializing_if = "Option::is_none")]
21    pub level: Option<String>,
22    #[serde(default, skip_serializing_if = "Option::is_none")]
23    pub encoding: Option<String>,
24    #[serde(default, skip_serializing_if = "Option::is_none")]
25    pub file: Option<String>,
26}
27
28/// Deprecated: please use DevServer(与 go-zero 注释一致)。
29#[derive(Debug, Clone, Default, Serialize, Deserialize)]
30pub struct PrometheusConfig {
31    #[serde(default, skip_serializing_if = "Option::is_none")]
32    pub host: Option<String>,
33    #[serde(default, skip_serializing_if = "Option::is_none")]
34    pub port: Option<u16>,
35    #[serde(default, skip_serializing_if = "Option::is_none")]
36    pub path: Option<String>,
37}
38
39/// 链路追踪/Telemetry 配置(占位对齐)。
40#[derive(Debug, Clone, Default, Serialize, Deserialize)]
41pub struct TraceConfig {
42    #[serde(default, skip_serializing_if = "Option::is_none")]
43    pub name: Option<String>,
44    #[serde(default, skip_serializing_if = "Option::is_none")]
45    pub endpoint: Option<String>,
46    #[serde(default, skip_serializing_if = "Option::is_none")]
47    pub sampler: Option<String>,
48}
49
50/// 开发服务配置(占位对齐)。
51#[derive(Debug, Clone, Default, Serialize, Deserialize)]
52pub struct DevServerConfig {
53    #[serde(default)]
54    pub enabled: bool,
55    #[serde(default, skip_serializing_if = "Option::is_none")]
56    pub host: Option<String>,
57    #[serde(default, skip_serializing_if = "Option::is_none")]
58    pub port: Option<u16>,
59}
60
61/// 优雅关停配置(占位对齐)。
62#[derive(Debug, Clone, Default, Serialize, Deserialize)]
63pub struct ShutdownConf {
64    /// 是否开启优雅关停。
65    #[serde(default)]
66    pub enabled: bool,
67    /// 最大等待毫秒数(占位字段)。
68    #[serde(default, skip_serializing_if = "Option::is_none")]
69    pub timeout_ms: Option<i64>,
70}
71
72/// 与 go-zero `service.ServiceConf` 对齐的基础服务配置(应位于 core/service)。
73#[derive(Debug, Clone, Serialize, Deserialize, Default)]
74pub struct ServiceConf {
75    /// 服务名称(Go 版无默认;这里给 default 以便最小配置也能跑起来)。
76    #[serde(default)]
77    pub name: String,
78    #[serde(default)]
79    pub log: LogConf,
80    /// 运行模式:dev|test|rt|pre|pro(大小写均可,默认 pro)。
81    #[serde(default)]
82    pub mode: Mode,
83    #[serde(default, skip_serializing_if = "Option::is_none")]
84    pub metrics_url: Option<String>,
85    /// Deprecated: please use DevServer
86    #[serde(default, skip_serializing_if = "Option::is_none")]
87    pub prometheus: Option<PrometheusConfig>,
88    #[serde(default, skip_serializing_if = "Option::is_none")]
89    pub telemetry: Option<TraceConfig>,
90    #[serde(default, skip_serializing_if = "Option::is_none")]
91    pub dev_server: Option<DevServerConfig>,
92    #[serde(default, skip_serializing_if = "Option::is_none")]
93    pub shutdown: Option<ShutdownConf>,
94}