feat: mentioned user email can directly open app

This commit is contained in:
hjlarry 2026-04-10 11:11:53 +08:00
parent 4e660a128a
commit 3e0640a3aa
6 changed files with 12 additions and 5 deletions

View File

@ -5,6 +5,7 @@ from sqlalchemy import desc, select
from sqlalchemy.orm import Session, selectinload
from werkzeug.exceptions import Forbidden, NotFound
from configs import dify_config
from extensions.ext_database import db
from libs.datetime_utils import naive_utc_now
from libs.helper import uuid_value
@ -61,7 +62,7 @@ class WorkflowCommentService:
mentioned_user_ids: Sequence[str],
content: str,
) -> list[dict[str, str]]:
"""Prepare email payloads for mentioned users."""
"""Prepare email payloads for mentioned users, including workflow app link."""
if not mentioned_user_ids:
return []
@ -78,6 +79,8 @@ class WorkflowCommentService:
else "Dify user"
)
comment_excerpt = WorkflowCommentService._format_comment_excerpt(content)
base_url = dify_config.CONSOLE_WEB_URL.rstrip("/")
app_url = f"{base_url}/app/{app_id}/workflow"
accounts = session.scalars(
select(Account)
@ -104,6 +107,7 @@ class WorkflowCommentService:
"commenter_name": commenter_name,
"app_name": app_name,
"comment_content": comment_excerpt,
"app_url": app_url,
}
)
return payloads

View File

@ -18,6 +18,7 @@ def send_workflow_comment_mention_email_task(
commenter_name: str,
app_name: str,
comment_content: str,
app_url: str,
):
"""
Send workflow comment mention email with internationalization support.
@ -29,6 +30,7 @@ def send_workflow_comment_mention_email_task(
commenter_name: Name of the comment author
app_name: Name of the app where the comment was made
comment_content: Comment content excerpt
app_url: Link to the app workflow page
"""
if not mail.is_inited():
return
@ -48,6 +50,7 @@ def send_workflow_comment_mention_email_task(
"commenter_name": commenter_name,
"app_name": app_name,
"comment_content": comment_content,
"app_url": app_url,
},
)

View File

@ -112,7 +112,7 @@
<div class="comment-box">
<p class="comment-text">{{ comment_content }}</p>
</div>
<p class="tips">Open {{ application_title }} to reply to the comment.</p>
<p class="tips"><a href="{{ app_url }}" style="color: #155AEF; text-decoration: none;">Open {{ application_title }}</a> to reply to the comment.</p>
</div>
</body>

View File

@ -112,7 +112,7 @@
<div class="comment-box">
<p class="comment-text">{{ comment_content }}</p>
</div>
<p class="tips">请在 {{ application_title }} 中查看并回复此评论。</p>
<p class="tips">请在 <a href="{{ app_url }}" style="color: #155AEF; text-decoration: none;">{{ application_title }}</a> 中查看并回复此评论。</p>
</div>
</body>

View File

@ -112,7 +112,7 @@
<div class="comment-box">
<p class="comment-text">{{ comment_content }}</p>
</div>
<p class="tips">Open {{ application_title }} to reply to the comment.</p>
<p class="tips"><a href="{{ app_url }}" style="color: #155AEF; text-decoration: none;">Open {{ application_title }}</a> to reply to the comment.</p>
</div>
</body>

View File

@ -112,7 +112,7 @@
<div class="comment-box">
<p class="comment-text">{{ comment_content }}</p>
</div>
<p class="tips">请在 {{ application_title }} 中查看并回复此评论。</p>
<p class="tips">请在 <a href="{{ app_url }}" style="color: #155AEF; text-decoration: none;">{{ application_title }}</a> 中查看并回复此评论。</p>
</div>
</body>