| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- syntax = "proto3";
- option java_multiple_files = true;
- option java_package = "school_index";
- // 定义包名,影响生成的 Python/Kotlin/Swift 模块名
- package school_index;
- // --- 1. 适配器类别枚举 ---
- // 使用枚举保证类型安全和编译期检查
- enum AdapterCategory {
- // 必须从 0 开始
- ADAPTER_CATEGORY_UNKNOWN = 0;
-
- // 明确定义所有类别,编号不可更改!
- GENERAL_TOOL = 1; // 通用工具
- BACHELOR_AND_ASSOCIATE = 2; // 本科/专科教务系统
- POSTGRADUATE = 3; // 研究生教务系统
- }
- // --- 2. 顶层消息:整个索引文件 ---
- message SchoolIndex {
- // 字段编号 1:显式协议版本号,用于客户端发现不兼容的大改动
- int32 protocol_version = 1;
- // 字段编号 2:数据文件的版本ID (CI/CD自动生成的时间戳)
- string version_id = 2;
- // 字段编号 3:所有学校和通用工具的列表
- repeated School schools = 3;
- }
- // --- 3. 消息:单个学校或通用工具集 ---
- message School {
- // 字段编号 1:主键 (例如 CUST, YNUFE, GLOBAL_TOOLS)
- string id = 1;
- // 字段编号 2:用于显示的名称
- string name = 2;
- // 字段编号 3:拼音首字母,用于搜索和排序
- string initial = 3;
- // 字段编号 4:资源文件夹名称 (与 id 相同,但保持独立字段以增加灵活性)
- string resource_folder = 4;
-
- // 字段编号 5:该学校下的所有适配器列表
- repeated Adapter adapters = 5;
- }
- // --- 4. 消息:单个适配器的结构 ---
- message Adapter {
- // 字段编号 1:适配器唯一 ID (例如 CUST_01, SHZQ_01)
- string adapter_id = 1;
- // 字段编号 2:适配器名称
- string adapter_name = 2;
- // 字段编号 3:适配器类别,使用强类型枚举
- AdapterCategory category = 3;
- // 字段编号 4:JS 文件的相对路径 (例如 cust.js)
- string asset_js_path = 4;
- // 字段编号 5:可选的外部导入 URL
- optional string import_url = 5;
-
- // 字段编号 6:适配器的详细描述(新增)
- string description = 6;
-
- // 字段编号 7:维护者信息(新增)
- string maintainer = 7;
- }
|