# 反馈

> 账户页面的反馈那一行和标题栏的反馈按钮：以工作站的 Ganter 账户名义或者不带账户、附上屏幕截图报告缺陷、提出改进建议或者申请新驱动，发送了什么，以及什么时候发不出去。

**反馈**那一行，在账户页面索引的**技术支持**分组下面，是一份短表单，把一条反馈发给 Ganter。同一份表单也可以用标题栏里帮助旁边、提示文字称作**反馈**的那个按钮在任何页面上方打开，在那里它从你当时所看画面的屏幕截图开始（见[反馈按钮](#the-report-button)）。两个地方是同一份表单：在对话框里写了一半、没发就关掉的反馈，就是这一行显示的那条反馈，截图也在。它有三种类型、一行必填、一段可选文字和那张屏幕截图。登录了 Ganter 账户的工作站以这个账户的名义发送，Ganter 可以回复到它的电子邮件；没有登录的工作站也能发送，不带账户，这时 Ganter 没有可以回复的地址（见[不带账户](#without-an-account)）。谁能发送由角色的权限**向 Ganter 发送反馈**决定，在管理员关掉它之前，所有角色都开着它（见[权限](users-permissions)）。

## 什么时候发不出去 {#when-it-cannot-be-sent}

| 情形 | 这一行用什么顶替表单 | 反馈按钮 |
| --- | --- | --- |
| 这个屏幕上的身份所属的角色没有向 Ganter 发送反馈 | “你的角色不能向 Ganter 发送反馈。管理员可以在“用户”页面为它开启“向 Ganter 发送反馈”。” | 不画出来。 |
| 页面是在浏览器里打开的，而不是在工作站的窗口里（同一台计算机上的浏览器也算在内） | “反馈从工作站发出，并附带工作站屏幕的截图，因此要在工作站自己的屏幕上填写。请在那里打开“账户”，再报告缺陷、提出改进建议或申请新驱动。” | 变灰，带着“反馈要在工作站自己的屏幕上发送，也就是截图里的那个屏幕。” |
| 那份隔离出来的演示配置（登录与否都一样），或者登录了 Ganter 账户、却没有可用来发送的凭据的工作站 | “这个会话无法向 Ganter 发送反馈。演示配置不发送反馈；在其他任何工作站上，请从上面的卡片重新登录。” | 变灰，带着“这个会话无法向 Ganter 发送反馈。演示配置不发送反馈；在其他任何工作站上，请在“账户”页面重新登录。” |

永远不能发送的角色根本看不到这个按钮，因为按多少次也换不来权限；会过去的情形则让按钮留在原处、变灰，在提示文字里按钮名字的下面说明原因。公开演示不画反馈按钮，就像它不画账户页面一样。没有登录 Ganter 账户的工作站不属于这些情形：表单照样显示，也能发送（见[不带账户](#without-an-account)）。登录着的工作站不论在线还是离线，要么以它的账户名义发送，要么不发送：离线时按发送，会先试着给账户的令牌续期；续不上时这次发送被拒绝，写着“无法为这份反馈确认工作站的 Ganter 账户。请在“账户”页面重新登录，然后再发送一次。”，而不会不带账户发出去。

## 不带账户 {#without-an-account}

没有登录 Ganter 账户的工作站照样发送反馈，字段一样，截图也一样。表单在字段上方写着“本工作站尚未登录 Ganter 账户，因此这份反馈不带电子邮件地址发送，Ganter 无法回复。要收到回复，请在“账户”页面登录工作站的 Ganter 账户。”表单不会另外要地址。写反馈的过程中登录，这一行就会消失，反馈随后以这个账户的名义发出。

## 反馈按钮 {#the-report-button}

反馈按钮在每个页面的标题栏里，挨着帮助：只有一个图标，和帮助键一样大。它的提示文字写着名字**反馈**，下面一行写它做什么，或者为什么变灰；屏幕阅读器把它读作**反馈**。按一下会按这个顺序做两件事：

1. 用和代理的 `ui_screenshot` 工具同一种截取方式，把窗口在那一刻的样子截下来。截取期间，按钮变灰并带着“正在截取屏幕截图。”
2. 然后才在页面上方的对话框**向 Ganter 反馈**里打开表单，把截图显示在已勾选的**发送屏幕截图**下面。

图像是在对话框打开之前截的，所以表单永远不会出现在它自己的截图里。对话框里装的就是这一行的表单，**发送**旁边多一个**关闭**；按 Esc 或在对话框外面点一下也会关掉它。关掉它什么都不发、什么都不丢：下一次按，或者这一行，会照原样显示这条反馈，重新按一次只换掉截图。服务器收下的反馈会关掉对话框。

## 代理起草的反馈 {#a-report-drafted-by-an-agent}

通过[代理访问](agent)连接到工作站的 AI 代理，可以用它的 `report_draft` 工具替你写一条反馈（见[反馈：起草](agent-tools#reports--draft)）：Ganter Lab 没有的驱动（附上它试过的厂家、型号和协议）、程序的缺陷，或者你要求的改进。它打开这份表单的方式和反馈按钮一样：先截取窗口，再在页面上方打开对话框，类型、摘要和详细说明都已填好，截图也已勾选。字段上方，表单写着“这条反馈是连接到本工作站的代理写的。按下“发送”之前请先读一遍，需要的地方请改正；在你按下之前，什么都不会发给 Ganter。”截图下面写着“代理打开这条反馈时的画面，画面上的一切都在里面。只想发送文字时，请取消勾选。”

代理从不按**发送**。你读它写的内容，其中可能提到工厂里的设备、地址和数值，然后改正、取消勾选截图、关闭它或者发送它；结果和每一条反馈一样出现在操作记录条上。事件页面的控制台在 Agent 区域下记下这份草稿，你发送之后，还会记下一行，说明代理起草的那条反馈已经发出。

| 情况 | 代理得到的答复，以及这里发生的事 |
| --- | --- |
| [什么时候发不出去](#when-it-cannot-be-sent)里的某种情况，或者角色没有“向 Ganter 发送反馈” | 原因。什么都不打开。 |
| 工作站只把页面提供给浏览器，所以没有自己的窗口 | 没有可以打开表单的窗口。什么都不打开。 |
| 表单开着，或者某条反馈正在截取或发送 | 表单正忙。什么都不变。 |
| 表单里有你正在写的反馈，在对话框里或者在这一行上 | 有一条反馈正在写。你的文字永远不会被替换；代理先前那份你没改过的草稿会被新的替换。 |

## 这份表单 {#the-form}

| 字段 | 它是什么 | 取值 / 默认 | 效果 |
| --- | --- | --- | --- |
| 类型 | 反馈的种类。 | **报告缺陷**（默认）、**提出改进建议**、**申请新驱动**。 | 改变摘要下面那句提示，也改变发出去的那个种类。 |
| 摘要 | 描述这条反馈的一行字。 | 最多 120 个字符；必填。 | 里面除了空格还有别的东西之前，**发送**一直变灰。 |
| 详细说明（可选） | 更长的那段描述。 | 可以好几行；这个字段没有设上限。 | 两端去空格后发出；为空时就不带上。 |
| 发送屏幕截图 | 截图是否随反馈一起发出。只在表单持有截图时画出来。 | 每次截下截图时都是勾选的。 | 取消勾选后，图像变淡留在表单上，反馈只带文字发出。 |

摘要下面那句提示跟着类型走：

| 类型 | 提示 |
| --- | --- |
| 报告缺陷 | 请描述问题以及重现它的步骤。 |
| 提出改进建议 | 请描述你希望有的功能或改进。 |
| 申请新驱动 | 请告诉我们你需要哪一种设备驱动。 |

复选框下面，表单写着“按下“反馈”时的画面，画面上的一切都在里面。只想发送文字时，请取消勾选。”，并显示图像本身，也就是原样发出去的那个文件。表单关于截图还可能说的话：

| 那一行 | 什么时候 |
| --- | --- |
| “已缩小到 1920 × 1080 像素，以符合服务器接受的大小。” | 截图比服务器接受的大，被缩小了（见下文）；数字是缩小后的尺寸。 |
| “未能截取屏幕，这份反馈将只发送文字。” | 窗口没有产出任何图像。表单照样打开。 |
| “无法把屏幕截图缩小到服务器接受的大小，这份反馈将只发送文字。” | 即使缩小，截图也放不下而又保持可读。 |
| “要随反馈附上屏幕截图，请在想展示的画面上按下标题栏中“帮助”旁边的反馈按钮。” | 在这一行上、表单没有截图的时候：账户页面的截图说明不了问题。 |

### 大截图怎样缩到放得下 {#how-a-large-capture-is-made-to-fit}

服务器保存的截图最多 4 MiB（4,194,304 字节）的 PNG，图像最多 4000 万像素。表单显示截图之前，工作站会把两者都查一遍。超过任何一项的截图会被缩小：宽和高各减半，每个二乘二的像素块取平均合成一个像素，再重新编码，直到放得下为止。全高清的窗口原样就放得下；显示着满满一页的 4K 屏幕可能会减半一次。要放得下就必须窄于 320 像素的截图会被直接去掉，因为没人能看清它。

| 命令 | 作用 | 什么时候变灰（情形） | 什么时候不画出来（角色） |
| --- | --- | --- | --- |
| 发送 | 把反馈发出去，并在操作记录条上报出结果。 | 摘要为空或者只有空格时；提示文字读作“请先写好摘要，才能发送反馈。”反馈已经发出、服务器还没有答复时，再按一次也不会把同一条反馈发两遍；提示文字读作“正在发送反馈。” | 从不；工作站发不出去的时候，整份表单被上面那条通知顶替。 |
| 关闭 | 只在对话框里：关掉对话框，留着这条反馈。 | 从不。 | 从不。 |

成功时操作记录条写着“谢谢！你的“{Type}”已发送。”，两个文本字段都清空；如果发送期间改过文字，文字会留下，感谢语仍写发送时的类型。截图不论勾没勾，都随它所属的那条反馈一起清掉。服务器一天只保存少量截图；超过之后，它保存反馈但不带图像，操作记录条会平静地说明：“谢谢！你的“{Type}”已发送，但没有附带屏幕截图：服务器一天内接受的截图数量已经满了。”失败时操作记录条带着原因，文字和截图留在那里等你再试一次：

| 原因 | 什么时候 |
| --- | --- |
| 无法为这份反馈确认工作站的 Ganter 账户。请在“账户”页面重新登录，然后再发送一次。 | 工作站登录着，却拿不到账户令牌，或者服务器拒绝了它。 |
| 由于发送次数过多，服务器拒绝了这份反馈。请稍后再试。 | 撞上了服务器的某个发送上限。答复不说是哪一个，上限也不对外公布。 |
| 屏幕截图超出了服务器接受的大小。请取消勾选后重新发送这份反馈。 | 服务器拒绝了截图的大小。工作站在显示截图之前会先缩小它，所以这很少见。 |
| 这份反馈太长，服务器拒绝了它。请缩短详细说明后重新发送。 | 反馈比服务器接受的长度更长。 |
| 屏幕截图不是 PNG 图片，服务器拒绝了它。请取消勾选后重新发送这份反馈。 | 服务器没能把截图当作图像读出来。 |
| 服务器无法读取这份反馈。请重新发送；如果再次被拒绝，请取消勾选屏幕截图。 | 服务器没能读出发过去的内容。 |
| 服务器拒绝了这份反馈（{code}）。 | 服务器给出的其他任何答复。 |
| 这份反馈未能送达 Ganter 服务器。请检查这台计算机的互联网连接。 | 网络在半路拦住了这份反馈：没有连接、地址无法解析，或者连接断了。 |
| 这条反馈未能发送。 | 一次没有更多细节的失败（比如一次被取消的请求）。原因记在诊断日志里。 |

## 发送了什么 {#what-is-sent}

| 项目 | 值 |
| --- | --- |
| 种类 | Bug、Suggestion 或者 DriverRequest，由类型决定。 |
| 摘要 | 那条摘要，两端去空格。 |
| 详细说明 | 那段详细说明，两端去空格，或者什么都没有。 |
| 应用版本 | “Desktop {version}”，和设置 > 关于显示的是同一个版本。 |
| 来源 | “Desktop/Windows”。 |
| 发生时刻 | 按下发送的那一刻，按 UTC。 |
| 屏幕截图 | 复选框勾选时，表单显示的那张图像，PNG 格式；否则什么都没有。 |
| 身份 | 登录时是工作站的 Ganter 账户令牌，于是这条反馈归到那个账户名下，Ganter 可以回复到它的电子邮件。没有登录时什么都没有：反馈不提任何账户，也不带任何地址。 |

截图里有窗口上的一切，连同装置的名称和数值；所以它发出之前你会先看到它、可以取消勾选，也所以由角色的权限决定谁能发送截图。Ganter 把它和反馈一起保存，并随这条反馈的通知邮件一起发出；它随反馈一起删除；以账户名义发出的反馈，在那个账户关闭时也会删除。别的什么都不附上：没有日志片段、没有配置、没有设备清单、没有本地用户名，也没有支持联系人。你想让 Ganter 知道的东西，写进那段文字里。崩溃是另一种报告，它是自动抓下来的，而且只在你对那一次崩溃点了同意之后才从[崩溃报告](settings-crash-reports)讲的那个窗口发出去；那一种可以带着崩溃细节，也可以匿名发出，而且从不带屏幕截图。如果你需要在一条反馈旁边交出诊断信息，事件控制台可以在[控制台](events-console)标签页上生成一个技术支持包。

## 这一行不做什么 {#what-the-row-does-not-do}

- 它不会把一条反馈排队留到以后。一次失败的发送当场就被拒绝；文字和截图留在表单里，直到你再发一次。
- 它不回话。要是有答复，那也是到这个账户的电子邮件里，不是到应用里；不带账户发出的反馈收不到答复。
- 它不要电子邮件地址。不带账户时，反馈不带任何地址发出。
- 在浏览器里或者在演示配置上，它不发送。
- 它不会自己去截屏。截图来自反馈按钮，是你按下它时所在的那个页面，工作站不留下它的文件。
- 它不附上任何种类的诊断信息，也不发送运行时状态。
- 它不让代理发送。代理可以把它填好再打开（[代理起草的反馈](#a-report-drafted-by-an-agent)），只有你按下“发送”才会发出。
