60 lines
2.4 KiB
Markdown
60 lines
2.4 KiB
Markdown
# State Management
|
||
|
||
> How state is managed in this project.
|
||
|
||
---
|
||
|
||
## Overview
|
||
|
||
<!--
|
||
Document your project's state management conventions here.
|
||
|
||
Questions to answer:
|
||
- What state management solution do you use?
|
||
- How is local vs global state decided?
|
||
- How do you handle server state?
|
||
- What are the patterns for derived state?
|
||
-->
|
||
|
||
(To be filled by the team)
|
||
|
||
---
|
||
|
||
## State Categories
|
||
|
||
<!-- Local state, global state, server state, URL state -->
|
||
|
||
(To be filled by the team)
|
||
|
||
---
|
||
|
||
## When to Use Global State
|
||
|
||
<!-- Criteria for promoting state to global -->
|
||
|
||
(To be filled by the team)
|
||
|
||
---
|
||
|
||
## Server State
|
||
|
||
<!-- How server data is cached and synchronized -->
|
||
|
||
- 历史游标表示服务端当前记录中尚未展示的消息数量。正数游标可以分页,与外部原始记录是否可确认恢复分开判断。
|
||
- `historyAvailable=false` 只用于旧历史来源的核实说明,不能阻断已保存消息的正文或用户提问目录请求,也不能据此宣称消息已丢失或无法恢复。
|
||
- 读取完已保存消息后,游标归零应停止请求;确有旧来源待核实时保留准确说明,正常完整历史不显示该说明。
|
||
- `resume_generating`是完整运行态快照,以正文及全部工具权威替换当前流式状态,并复用同一逻辑助手气泡;不盲目拼接不同用户任务。
|
||
- 长气泡折叠只改变显示。完整正文保留在原始消息和DOM中;多次原生回复默认收起较早段,末段可见;单次超长回复可展开完整内容。
|
||
- 折叠状态按会话与稳定消息身份记录;完成、切换和重新渲染不得把被折叠的内容当作已删除内容保存。
|
||
- 复制按钮与定位、分支同排,仅从完整原始正文中复制最后一个原生回复段。按围栏外的 `agent-message-divider`切分,不以最后自然段或DOM的最后一个p元素判断;代码块、列表保留,时间分隔、工具和按钮不进入剪贴板。没有原生分界时复制整条回复。
|
||
- 单测覆盖末段边界、代码围栏伪分界、流式分界尚未传完、文本块、短消息与长消息。隔离浏览器须实际检查展开完整内容、末段复制、刷新与重连,以及手机44px触控范围。
|
||
- 单条长回复收起时,定位按钮先调用折叠开关展开并更新记忆状态,再计算末段坐标;不能定位到高度裁剪区中仍不可见的文本。
|
||
|
||
---
|
||
|
||
## Common Mistakes
|
||
|
||
<!-- State management mistakes your team has made -->
|
||
|
||
(To be filled by the team)
|