feat(core): add with your docs label to ai answer (#10124)

Fix issue [BS-2425](https://linear.app/affine-design/issue/BS-2425).

![截屏2025-02-12 16.34.20.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/89576eac-e176-4890-8d58-7c39d0ae1d9b.png)
This commit is contained in:
akumatus
2025-02-13 03:28:27 +00:00
parent 26de7a56fd
commit d17f5651f1
2 changed files with 16 additions and 1 deletions
@@ -71,6 +71,12 @@ export class ChatPanelMessages extends WithDisposable(ShadowlessElement) {
user-select: none;
}
.message-info {
color: var(--affine-placeholder-color);
font-size: 12px;
font-weight: 400;
}
.avatar-container {
width: 24px;
height: 24px;
@@ -370,6 +376,12 @@ export class ChatPanelMessages extends WithDisposable(ShadowlessElement) {
renderAvatar(item: ChatItem) {
const isUser = 'role' in item && item.role === 'user';
const isAssistant = 'role' in item && item.role === 'assistant';
const isWithDocs =
isAssistant &&
item.content &&
item.content.includes('[^') &&
/\[\^\d+\]:{"type":"doc","docId":"[^"]+"}/.test(item.content);
return html`<div class="user-info">
${isUser
@@ -380,6 +392,9 @@ export class ChatPanelMessages extends WithDisposable(ShadowlessElement) {
</div>`
: AffineAvatarIcon}
${isUser ? 'You' : 'AFFiNE AI'}
${isWithDocs
? html`<span class="message-info">with your docs</span>`
: nothing}
</div>`;
}
@@ -865,7 +865,7 @@ test.describe('chat with doc', () => {
name: 'You',
content: 'What is AFFiNE AI?',
});
expect(history[1].name).toBe('AFFiNE AI');
expect(history[1].name).toBe(`AFFiNE AI\nwith your docs`);
expect(
await page.locator('chat-panel affine-footnote-node').count()
).toBeGreaterThan(0);