Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
2250ed4
Add blueprint.
walterlv Sep 10, 2024
4fd95f3
Add SSH.NET
walterlv Sep 10, 2024
3435c75
Add basic UI layout.
walterlv Sep 26, 2024
bafe205
加上光影
walterlv Nov 14, 2024
baff636
添加连接和文件标签
walterlv Dec 2, 2024
d4c9178
添加并不好看的样式
walterlv Dec 15, 2024
e03d9d5
添加配置文件
walterlv Dec 15, 2024
65c7b6c
添加链接配置文件读取
walterlv Jan 3, 2025
d888e7b
修改样式
walterlv Jan 3, 2025
df8f473
修改命名空间为 DotNetCampus
walterlv Jan 3, 2025
c5d6573
让界面看上去像个样子
walterlv Feb 22, 2025
0b28f59
赶紧加 Shell 页
walterlv Feb 22, 2025
832b51a
拿点儿容器来用
walterlv Jul 4, 2025
454f158
改变计划
walterlv Jul 4, 2025
15523e7
删除 Avalonia 计划完全使用控制台
walterlv Jul 4, 2025
420db05
开启新的 UI
walterlv Jul 4, 2025
0ae75b2
整理项目
walterlv Jul 4, 2025
1c01c91
增加 AI 团队
walterlv Jul 4, 2025
1dd0538
AI 协作学习 Terminal.Gui 的使用经验
walterlv Jul 4, 2025
67eef95
添加 AI 任务说明
walterlv Jul 7, 2025
5174ec5
移动结构
walterlv Jul 7, 2025
ddcdf19
添加极简的 SSH 连接配置
walterlv Jul 7, 2025
85c09a9
接入列表
walterlv Jul 7, 2025
5f7df62
使用 Consolonia 替代 Terminal.Gui,因为其界面允许更复杂一些,交互也更现代化一些
walterlv Jul 7, 2025
f4024b1
调整一下界面
walterlv Jul 7, 2025
7df9046
可以在控制台和窗口之间切换
walterlv Jul 8, 2025
8641c7c
美化设备列表
walterlv Jul 8, 2025
49e9b2c
关联设备页
walterlv Jul 8, 2025
0d54cfe
收藏
walterlv Jul 8, 2025
53c6511
添加连接性测试
walterlv Jul 8, 2025
44114be
测试连接状态
walterlv Jul 8, 2025
e3254b1
连接状态样式
walterlv Jul 8, 2025
9cfec9b
使用 AI 整理文档
walterlv Jul 8, 2025
a1d6fa7
AI 学习 Cosolonia 库
walterlv Jul 8, 2025
1a264d3
AI 学习 Consolonia 官方文档
walterlv Jul 8, 2025
ba33b70
AI 设计
walterlv Jul 8, 2025
7bcef81
添加文档项目
walterlv Jul 8, 2025
9cfe91c
AI + 人类共同编写设备信息页
walterlv Jul 8, 2025
90562a9
AI + 人类共同完成设备信息页和文件夹同步页
walterlv Jul 8, 2025
8d08725
AI 学习 Toml
walterlv Jul 8, 2025
5adb213
AI 实现 Toml 配置文件的解析
walterlv Jul 8, 2025
5ec3a1a
删除 Debug 源
walterlv Jul 8, 2025
208ae46
AI 编写文件同步功能
walterlv Jul 8, 2025
6292495
使用日志库记录日志
walterlv Jul 8, 2025
e0c39a7
简化指令文档
walterlv Jul 8, 2025
8f8c657
调一下 UI
walterlv Jul 8, 2025
66f4a66
大幅美化一下界面布局
walterlv Jul 9, 2025
46d0c53
显示同步时间和同步消息
walterlv Jul 9, 2025
21a8c1d
加上两个方向的同步
walterlv Jul 9, 2025
ac466bb
AI 重构 FileSyncService
walterlv Jul 9, 2025
b06dc34
重构文件同步,使得能附带更多异常信息
walterlv Jul 9, 2025
41e540c
AI 优化提示双冒号问题
walterlv Jul 9, 2025
9734e4e
没有启用的同步组时,也提示
walterlv Jul 9, 2025
02d0a02
提示“正在同步”
walterlv Jul 9, 2025
106ec5e
实现 Shell 打开
walterlv Jul 9, 2025
dfd1813
AI 完成保存配置功能
walterlv Jul 9, 2025
3e9956b
AI 重构拆分 SshDeviceCommandsViewModel
walterlv Jul 9, 2025
fbbf6f8
AI 简化属性名
walterlv Jul 9, 2025
88afec8
AI 实现 LocalId/RemoteId 功能
walterlv Jul 9, 2025
4666aa2
保存配置时,列表自动刷新
walterlv Jul 9, 2025
b31b25f
UI 上可以追踪有未保存的修改
walterlv Jul 9, 2025
6121f9a
AI 实现删除和弹窗
walterlv Jul 9, 2025
812410b
AI 学习人类的交互式命令设计
walterlv Jul 9, 2025
2716d74
删除远程设备时,更新列表。
walterlv Jul 9, 2025
5eef628
优化 UI 细节
walterlv Jul 9, 2025
ad2eb2a
AI 拆分 SshRemoteDeviceInfoView
walterlv Jul 9, 2025
30c86d4
AI 提前预研 SSH 密钥认证
walterlv Jul 9, 2025
cd8c862
AI 做公私钥升级安全性分析
walterlv Jul 9, 2025
c45b65c
不过,我们产品有自己的算盘
walterlv Jul 9, 2025
ae879d5
AI 反思
walterlv Jul 9, 2025
4b84ef7
AI 编写基本的一键部署公私钥对的界面
walterlv Jul 9, 2025
e705799
AI 整理文档
walterlv Jul 9, 2025
56bf00e
AI 整理文档,第二波
walterlv Jul 9, 2025
0f46883
AI 实现部署公私钥对
walterlv Jul 9, 2025
3a901d4
AI 优化异步
walterlv Jul 9, 2025
49c0c77
AI 整理状态栏
walterlv Jul 9, 2025
0135427
AI 设计全局状态栏
walterlv Jul 9, 2025
1f2d083
AI 优化全局状态提示栏布局
walterlv Jul 9, 2025
1b3f738
AI 美化状态栏
walterlv Jul 9, 2025
0631a5f
状态栏按钮更加紧凑
walterlv Jul 10, 2025
7746fd3
删除之前 AI 临时用的脚本
walterlv Jul 10, 2025
bb1c039
修复 AOT 编译
walterlv Jul 10, 2025
aaced88
AI 修改配置文件位置
walterlv Jul 10, 2025
7e6ca9e
AI 进行配置文件脱敏
walterlv Jul 10, 2025
44c7586
AI 制作 CI/CD
walterlv Jul 10, 2025
1ad9343
AI 编写版本号注释
walterlv Jul 10, 2025
24fafa9
AI 添加 MIT 协议
walterlv Jul 10, 2025
792846e
fix: 简化GitHub Actions触发条件,支持所有tag格式
walterlv Jul 10, 2025
a27cad4
AI 修复打包
walterlv Jul 10, 2025
3dbcb81
AI 更新经验
walterlv Jul 10, 2025
b388260
AI 优化打出的包
walterlv Jul 10, 2025
129f2c4
fix: 修复跨平台打包中文件夹结构丢失问题
walterlv Jul 10, 2025
6b492ea
修改配置文件路径,加 s
walterlv Jul 10, 2025
1954705
AI 因为 AOT 限制,计划弃用 Toml
walterlv Jul 10, 2025
88091ca
AI 整理文档
walterlv Jul 10, 2025
842c3cd
AI 实现 toml 到 json 配置格式的迁移
walterlv Jul 10, 2025
96238ee
AI 删除 Toml 的解析
walterlv Jul 10, 2025
1e94d69
AI 整理配置文件格式
walterlv Jul 10, 2025
abf57c4
AI 整理所有的配置文件迁移记录
walterlv Jul 10, 2025
3b9e02e
整理整个解决方案,重新命名同步组为目录同步模型
walterlv Jul 11, 2025
a598e22
AI 整理重命名后续的文档修改
walterlv Jul 11, 2025
7e59bd8
AI 整理 toml 迁移任务
walterlv Jul 11, 2025
9149b55
AI 迁移 toml 1/3
walterlv Jul 11, 2025
c3672d9
AI 迁移 toml 2/3
walterlv Jul 11, 2025
e1cd9f1
AI 迁移 toml 3/3
walterlv Jul 11, 2025
c236dc9
AI 迁移 toml (AI 自己验收)
walterlv Jul 15, 2025
5718152
按照林德熙的建议,从 TUI 改成 GUI
walterlv Jul 15, 2025
9404f77
重新使用 GUI
walterlv Jul 16, 2025
e168298
AI 同步文件的修改时间
walterlv Jul 16, 2025
8c87659
AI 撰写终端模拟器文档
walterlv Jul 17, 2025
9ef95d0
AI 撰写集成终端的文档
walterlv Jul 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 128 additions & 0 deletions .github/AI任务分工.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# AI 任务分工

DotNetCampus Terminal 是一个基于 .NET 9.0 和 Consolonia 的远程设备连接管理工具。

## 协作规则

1. 🔥 **开始任务前必读**: 先阅读对应角色的经验总结文档 (见下方各角色链接)
2. 完成任务时更新进度状态 ✅
3. 重要技术经验记录到 `.github/knowledge/` 知识库
4. 大任务拆分成小任务,便于其他 AI 协助
5. 详细技术文档查看 `.github/knowledge/` 目录

## AI 角色分工

### 配置管理专家 (Configuration AI)
**📖 必读文档**: `.github/knowledge/AI协作经验/角色经验总结/配置管理专家-核心经验总结.md`
- ✅ JSON配置系统实现(替代TOML)
- ✅ 配置解析和数据模型
- ✅ 个人设备配置存储(JSON源保存功能)
- ✅ UI保存按钮绑定和命令实现
- ✅ 设备唯一标识符优化(避免改名导致重复保存)
- ✅ AOT兼容性配置系统(JSON+源生成器)
- ✅ JSON配置系统用户体验优化(注释支持、减少Attribute、重命名改进、移除无用属性)
- ✅ TOML配置系统清理完成
- [ ] 配置迁移工具实现
- [ ] 团队配置同步
- [ ] 配置加密存储

### 文件同步工程师 (File Sync AI)
**📖 必读文档**: `.github/knowledge/AI协作经验/角色经验总结/文件同步工程师-核心经验总结.md`
- ✅ 基于SFTP的文件同步
- ✅ 同步状态监控和UI集成
- ✅ 远程到本地同步
- ✅ 增量同步优化
- ✅ 错误处理优化和诊断信息改进
- ✅ 错误消息格式优化(解决双冒号问题)
- ✅ "没有启用的目录同步"UI错误提示优化

### UI界面设计师 (UI Designer AI)
**📖 必读文档**: `.github/knowledge/AI协作经验/角色经验总结/UI界面设计师-核心经验总结.md`
- ✅ 主界面布局和SSH设备编辑界面
- ✅ 数据绑定和MVVM模式
- ✅ 同步状态显示和全局进度条
- ✅ 最近同步时间显示和错误消息绑定
- ✅ 新Shell标签页打开功能(解决TUI应用中的Shell冲突问题)
- ✅ SshRemoteDeviceInfoViewModel重构(拆分为同步和命令子ViewModels)
- ✅ 建立ViewModels和Views的文件夹重构规范
- ✅ 删除设备功能(使用交互式命令模式实现)
- ✅ SshRemoteDeviceInfoView.axaml重构(从208行拆分为31行主View + 3个子TabViews)
- ✅ 一键部署SSH密钥对功能的界面和ViewModel实现
- [ ] 路径省略功能
- [ ] 交互优化

### SSH连接专家 (SSH Connection Expert AI)
**📖 必读文档**: `.github/knowledge/AI协作经验/角色经验总结/SSH连接专家-核心经验总结.md`
- ✅ SSH密钥认证配置指南
- ✅ 多设备连接安全性分析
- ✅ SSH.NET封装和连接管理
- ✅ 一键部署SSH密钥对功能(与UI设计师协作完成)
- [ ] SSH连接池优化
- [ ] 断线重连机制
- [ ] SSH隧道和端口转发支持

### 文档维护员 (Documentation AI)
**📖 必读文档**: `.github/knowledge/AI协作经验/角色经验总结/文档维护员-核心经验总结.md`
- ✅ 简化协作文档,提升AI协作效率
- ✅ 知识库分类重组(`.github/knowledge/` 目录结构优化)
- ✅ 项目文档维护和技术标准制定
- ✅ AI角色权限和职责优化
- ✅ Copilot指令文档完善
- ✅ SyncGroup术语重命名(同步组→目录同步,SyncGroupConfiguration→DirectorySyncingModel)
- 🔄 **TOML文档清理项目** (2025年7月11日)
- ⚠️ **重要说明**: 迁移历史只保留一篇 (`TOML到JSON配置系统迁移记录.md`),其他文档**完全清理**所有TOML字眼
- ✅ **任务1-技术设计文档清理** (分配给: 文档维护员同事A) ✅
- `技术设计文档/配置管理/02-配置保存功能实现.md` - **完全清理**TOML引用 ✅
- `技术设计文档/配置管理/03-配置数据源迁移方案.md` - **完全清理**TOML引用 ✅
- `技术设计文档/配置管理/04-设备唯一标识符设计.md` - **完全清理**TOML示例 ✅
- `技术设计文档/配置管理/01-JSON配置系统架构设计.md` - **完全清理**TOML历史部分 ✅
- ✅ **任务2-AI协作经验清理** (分配给: 文档维护员同事B) ✅
- `AI协作经验/角色经验总结/配置管理专家-核心经验总结.md` - **完全清理**TOML代码示例 ✅
- `AI协作经验/角色经验总结/DevOps自动化专家-核心经验总结.md` - **完全清理**TOML文件路径引用 ✅
- `AI协作经验/实现经验总结/设备唯一ID实现技术总结.md` - **完全清理**TOML示例 ✅
- ✅ **任务3-依赖库和问题文档清理** (分配给: 文档维护员同事C) ✅
- `依赖库文档/System.Text.Json/01-JSON配置系统使用指南.md` - **完全清理**TOML迁移代码示例 ✅
- `问题排查/开发问题快速解答手册.md` - **完全清理**TOML历史问题说明 ✅
- ⚠️ **发现遗漏任务** (2025年7月15日验收发现)
- `技术设计文档/SSH连接管理/01-SSH密钥认证配置方案.md` - **完全清理**TOML配置示例 ✅
- `技术设计文档/SSH连接管理/02-多设备连接安全分析.md` - **完全清理**所有TOML代码块 ✅
- ✅ **终端模拟器技术文档** (2025年7月17日)
- `技术设计文档/终端模拟器/01-终端模拟器核心实现要点.md` - 详细分析终端模拟器实现的所有技术要点 ✅
- `技术设计文档/终端模拟器/02-DotNetCampus Terminal终端集成方案.md` - 针对项目具体需求的实现方案 ✅
- `技术设计文档/终端模拟器/03-集成现有终端功能的实现方案.md` - 分析集成现有终端功能的四种方案,大幅降低开发成本 ✅
- [ ] 自动化文档生成工具
- [ ] 多语言文档支持
- [ ] API文档自动更新

### DevOps 自动化专家 (DevOps Automation Expert AI)
**📖 必读文档**: `.github/knowledge/AI协作经验/角色经验总结/DevOps自动化专家-核心经验总结.md`
- ✅ GitHub Actions CI/CD 流水线设计和实现
- ✅ 跨平台应用程序自动化构建(Windows/Linux/macOS)
- ✅ 自动化发布和版本管理
- ✅ 构建产物自动化打包和分发
- ✅ GitHub Releases 自动化发布
- ✅ 代码质量检查和自动化测试集成
- ✅ 依赖项安全扫描和更新
- [ ] 性能基准测试自动化
- [ ] 部署环境配置和基础设施即代码

### 其他模块
- 进程管理专家:Shell启动和进程管理
- Windows连接专家:Windows远程连接
- 测试工程师:测试框架和自动化
- 知识学习者:技术文档和最佳实践

## 协作流程

1. **开始任务前必读** 📖 对应角色的经验总结文档(见各角色的必读文档链接)
2. **技术文档查阅** `.github/knowledge/` 相关技术文档
3. **接口设计** 优先,确保模块间依赖清晰
4. **及时测试** 每个模块完成后立即编译验证
5. **知识共享** 将技术问题和解决方案更新到知识库和经验总结
6. **进度同步** 接口变更时通知相关AI

## 重要提醒

- 详细的编码规范、Consolonia使用指南等技术文档已整理到 `.github/knowledge/` 目录
- 遇到技术问题先查阅知识库,避免重复踩坑
- 复杂问题及时寻求人类帮助,避免AI陷入错误循环
150 changes: 150 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
# GitHub Copilot 指导文档

DotNetCampus Terminal 项目的 AI 协作开发指南。

## 项目概述

基于 .NET 9.0 和 Consolonia 的远程设备连接管理工具,采用多AI协同开发模式。

**🤖 AI角色自动认领机制**:如果用户在提示词中指定了AI的角色(如"你是文档维护员"、"你是UI界面设计师"等),AI应该:
1. 立即查看 `.github/AI任务分工.md` 文件认领对应职位
2. 阅读该角色的必读文档(角色经验总结文档)
3. 按照职位要求和经验总结执行后续行动
4. 遵循该角色的技术规范和工作流程

**技术栈**:.NET 9.0, Consolonia, SSH.NET, System.Text.Json, DotNetCampus.Logger

## 核心编码规范

### 命名约定
- 类名/方法名/属性名:PascalCase
- 私有字段:camelCase + 下划线前缀 `_fieldName`
- 接口:以I开头

### 代码风格
- 启用 nullable 引用类型
- 异步方法以 Async 结尾
- 使用依赖注入
- 添加 XML 文档注释

### 常见错误提醒 ⚠️
**以下是AI同事经常犯的错误,必须避免**:
1. **日志命名空间**:使用 `DotNetCampus.Logging` 而不是 `DotNetCampus.Logger`(前者是命名空间,后者是库名称)
2. **日志方法名**:使用 `Log.Warn` 而不是 `Log.Warning`
3. **编译文件占用**:`dotnet build` 提示文件被占用时,这是正常现象(VS Code的bug),不要报错
4. **SSH.NET引用**:确保添加 `using Renci.SshNet;`

### 兼容性原则
**重要:本项目不需要考虑兼容性问题**
- 不使用 `[Obsolete]` 标记
- 不保留旧方法或接口
- 不添加"兼容旧版本"等注释说明
- 直接重构和替换,无需向后兼容
- 项目处于开发阶段,API可以自由变更

### 代码重构原则
- **400行规则**:代码超过400行时,需要酌情考虑重构
- **600行硬限制**:代码超过600行时,必须考虑重构
- **例外情况**:超过600行但非常单一易懂的代码(如大型枚举)可以保留
- 重构方式:拆分类、提取方法、分离职责

## Consolonia 关键要点

### 核心概念
- **像素 = 字符**:每个像素对应一个控制台字符
- **文件扩展名**:使用 `.axaml` 而不是 `.xaml`
- **命名空间**:`xmlns:console="https://github.com/jinek/consolonia"`
- **主题**:推荐使用 `TurboVisionDarkTheme`

### 重要差异
- 使用 `AvaloniaList<T>` 替代 `ObservableCollection<T>`
- 使用 `console:LineBrush` 配置边框样式
- 按钮禁用阴影:`console:ButtonExtensions.Shadow="False"`
- 异步UI更新:`Dispatcher.UIThread.InvokeAsync`

### 性能优化
- 使用 `VirtualizingStackPanel` 处理大数据集
- 选择合适的绑定模式(OneTime/OneWay/TwoWay)
- 使用 `x:DataType` 实现强类型绑定

## 日志规范

使用 **DotNetCampus.Logger**:
- 使用静态 `Log` 类,无需依赖注入
- 日志格式:`Log.Info("[标签] 消息内容")`
- 标签约定:`[FileSync]` `[SSH]` `[UI]` `[Config]` `[Network]` `[System]`
- **常用方法**:`Log.Info()`, `Log.Warn()`, `Log.Error()`

## 协作要点

### 开发流程
1. 🔥 **首要步骤**:查看 `.github/AI任务分工.md` 确定自己的角色
2. 📖 **必读文档**:阅读对应角色的经验总结文档(详见下方技术文档索引)
3. 📚 **技术查阅**:查看 `.github/knowledge/` 相关技术文档
4. 接口设计优先,确保模块依赖清晰
5. 及时测试,避免积累错误
6. 知识更新到知识库和经验总结,便于复用

### 求助时机
以下情况建议寻求人类帮助:
- 多个命名空间冲突
- API版本兼容性问题
- 复杂的泛型推断失败
- 平台特定显示问题
- **反复犯错**:如果发现自己在重复犯同样的错误

**注意**:`dotnet build` 文件占用问题是VS Code的已知bug,属于正常现象,无需求助。

## 技术文档索引

详细的技术资料已整理到 `.github/knowledge/` 目录:

### 角色经验总结(首要阅读)
- `UI界面设计师-核心经验总结.md` - UI设计师核心经验
- `文件同步工程师-核心经验总结.md` - 文件同步工程师核心经验
- `配置管理专家-核心经验总结.md` - 配置管理专家核心经验
- `SSH连接专家-核心经验总结.md` - SSH连接专家核心经验
- `文档维护员-核心经验总结.md` - 文档维护员核心经验

### 技术参考文档
详细的技术资料已按照以下结构组织,AI可根据具体技术需求选择相应文档:

#### 依赖库使用指南
- `依赖库文档/Consolonia/01-快速参考指南.md` - Consolonia快速参考
- `依赖库文档/Consolonia/02-架构核心要点.md` - 架构设计要点
- `依赖库文档/Consolonia/03-UI框架使用.md` - UI框架详细使用
- `依赖库文档/Consolonia/04-UI设计模式最佳实践.md` - UI设计模式
- `依赖库文档/DotNetCampus.Logger/01-日志框架使用指南.md` - 日志使用指南
- `依赖库文档/SSH.NET/01-基础使用指南.md` - SSH.NET基础使用
- `依赖库文档/SSH.NET/02-文件同步实现.md` - 文件同步指南
- `依赖库文档/System.Text.Json/01-JSON配置系统使用指南.md` - JSON配置系统使用
- `依赖库文档/DotNet9/01-新特性在项目中的应用.md` - .NET 9新特性

#### 技术设计文档
- `技术设计文档/界面设计/01-Terminal界面开发指南.md` - Terminal界面开发
- `技术设计文档/界面设计/02-SSH设备信息视图设计.md` - SSH设备视图设计
- `技术设计文档/界面设计/03-进度显示和数据绑定.md` - 进度显示设计
- `技术设计文档/界面设计/04-ViewModel重构最佳实践.md` - ViewModel重构
- `技术设计文档/界面设计/05-TUI与Shell集成解决方案.md` - Shell集成方案
- `技术设计文档/界面设计/06-交互式命令模式设计.md` - 交互式命令设计
- `技术设计文档/配置管理/01-JSON配置系统架构设计.md` - 配置架构设计
- `技术设计文档/配置管理/02-配置保存功能实现.md` - 配置保存实现
- `技术设计文档/配置管理/03-配置数据源迁移方案.md` - 配置迁移方案
- `技术设计文档/配置管理/04-设备唯一标识符设计.md` - 设备ID设计
- `技术设计文档/文件同步/01-远程到本地同步架构.md` - 同步架构设计
- `技术设计文档/文件同步/02-增量同步性能优化.md` - 同步性能优化
- `技术设计文档/文件同步/03-同步错误处理机制.md` - 错误处理机制
- `技术设计文档/SSH连接管理/01-SSH密钥认证配置方案.md` - SSH密钥配置
- `技术设计文档/SSH连接管理/02-多设备连接安全分析.md` - 连接安全分析

#### 问题排查指南
- `问题排查/开发问题快速解答手册.md` - 问题解决方案

#### AI协作经验
- `AI协作经验/实现经验总结/设备唯一ID实现技术总结.md` - 设备ID实现经验
- `AI协作经验/AI多角色协作开发经验.md` - 多角色协作经验

**重要提醒**:
1. 🔥 开始任务前,必须先阅读对应角色的经验总结文档
2. 📚 遇到技术问题先查阅知识库,避免重复踩坑
3. 💡 将新的踩坑经验及时更新到经验总结文档中
Loading
Loading