syntax = "proto3"; package topfans.castlove; option go_package = "github.com/topfans/backend/pkg/proto/castlove;castlove"; import "proto/common.proto"; // ==================== 铸爱工艺配置 ==================== // 工艺卡片(精简版,只包含前端展示所需字段) message CastloveCraftProto { int64 id = 1; // 卡片ID string name = 2; // 卡片名("镭射卡" / "光栅卡" / "开发中" / ...) string image_url = 3; // 完整 https URL(OSS 域名开头) string route_path = 4; // uni-app 页面路径(以 / 开头);空串表示"未配置路由" string route_params = 5; // JSON 字符串(对象);空串表示无参数 int32 sort_order = 6; // 同一分类内的相对顺序 } // 工艺分类(含其下卡片列表) message CastloveCategoryProto { int64 id = 1; // 分类ID string name = 2; // 分类名("星卡" / "吧唧" / "海报") string type_key = 3; // 外部 deep-link key;空串表示无 int32 sort_order = 4; // 分类相对顺序 repeated CastloveCraftProto crafts = 5; // 该分类下的卡片 } // 获取铸爱工艺配置请求(无入参,纯 GET) message GetCastloveConfigRequest { } // 获取铸爱工艺配置响应 message GetCastloveConfigResponse { topfans.common.BaseResponse base = 1; repeated CastloveCategoryProto categories = 2; // 分类(含嵌套卡片) string version = 3; // 所有相关记录 updated_at 最大值(ISO 8601) } // ==================== 铸爱工艺配置服务 ==================== // 部署在 assetService(端口 20003),由 gateway 通过 Dubbo Triple 转发 // 前端路径:GET /api/v1/castlove/config service CastloveConfigService { // 获取铸爱工艺配置(全量分类+卡片) rpc GetCastloveConfig(GetCastloveConfigRequest) returns (GetCastloveConfigResponse); }