Skip to content

Commit d1b5b05

Browse files
committed
feat: chat
1 parent a4e6cad commit d1b5b05

File tree

15 files changed

+277
-45
lines changed

15 files changed

+277
-45
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
"""029_modify_chat
2+
3+
Revision ID: 77d4c39ec22f
4+
Revises: e96b16d3daab
5+
Create Date: 2025-07-17 17:05:13.392973
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
import sqlmodel.sql.sqltypes
11+
from sqlalchemy.dialects import postgresql
12+
13+
# revision identifiers, used by Alembic.
14+
revision = '77d4c39ec22f'
15+
down_revision = 'e96b16d3daab'
16+
branch_labels = None
17+
depends_on = None
18+
19+
20+
def upgrade():
21+
# ### commands auto generated by Alembic - please adjust! ###
22+
op.add_column('chat', sa.Column('oid', sa.BigInteger(), nullable=True))
23+
op.execute('update chat set oid = 1')
24+
op.alter_column('chat', 'create_time',
25+
existing_type=postgresql.TIMESTAMP(timezone=True),
26+
type_=sa.DateTime(),
27+
existing_nullable=True)
28+
op.alter_column('chat_record', 'create_time',
29+
existing_type=postgresql.TIMESTAMP(timezone=True),
30+
type_=sa.DateTime(),
31+
existing_nullable=True)
32+
op.alter_column('chat_record', 'finish_time',
33+
existing_type=postgresql.TIMESTAMP(timezone=True),
34+
type_=sa.DateTime(),
35+
existing_nullable=True)
36+
# ### end Alembic commands ###
37+
38+
39+
def downgrade():
40+
# ### commands auto generated by Alembic - please adjust! ###
41+
op.alter_column('chat_record', 'finish_time',
42+
existing_type=sa.DateTime(),
43+
type_=postgresql.TIMESTAMP(timezone=True),
44+
existing_nullable=True)
45+
op.alter_column('chat_record', 'create_time',
46+
existing_type=sa.DateTime(),
47+
type_=postgresql.TIMESTAMP(timezone=True),
48+
existing_nullable=True)
49+
op.alter_column('chat', 'create_time',
50+
existing_type=sa.DateTime(),
51+
type_=postgresql.TIMESTAMP(timezone=True),
52+
existing_nullable=True)
53+
op.drop_column('chat', 'oid')
54+
# ### end Alembic commands ###

backend/apps/chat/models/chat_model.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
class Chat(SQLModel, table=True):
1818
__tablename__ = "chat"
1919
id: Optional[int] = Field(sa_column=Column(BigInteger, Identity(always=True), primary_key=True))
20-
create_time: datetime = Field(sa_column=Column(DateTime(timezone=True), nullable=True))
20+
oid: Optional[int] = Field(sa_column=Column(BigInteger, nullable=True, default=1))
21+
create_time: datetime = Field(sa_column=Column(DateTime(timezone=False), nullable=True))
2122
create_by: int = Field(sa_column=Column(BigInteger, nullable=True))
2223
brief: str = Field(max_length=64, nullable=True)
2324
chat_type: str = Field(max_length=20, default="chat") # chat, datasource
@@ -31,8 +32,8 @@ class ChatRecord(SQLModel, table=True):
3132
chat_id: int = Field(sa_column=Column(BigInteger, nullable=False))
3233
ai_modal_id: Optional[int] = Field(sa_column=Column(BigInteger))
3334
first_chat: bool = Field(sa_column=Column(Boolean, nullable=True, default=False))
34-
create_time: datetime = Field(sa_column=Column(DateTime(timezone=True), nullable=True))
35-
finish_time: datetime = Field(sa_column=Column(DateTime(timezone=True), nullable=True))
35+
create_time: datetime = Field(sa_column=Column(DateTime(timezone=False), nullable=True))
36+
finish_time: datetime = Field(sa_column=Column(DateTime(timezone=False), nullable=True))
3637
create_by: int = Field(sa_column=Column(BigInteger, nullable=True))
3738
datasource: int = Field(sa_column=Column(BigInteger, nullable=True))
3839
engine_type: str = Field(max_length=64)
@@ -66,6 +67,7 @@ class ChatRecord(SQLModel, table=True):
6667
analysis_record_id: int = Field(sa_column=Column(BigInteger, nullable=True))
6768
predict_record_id: int = Field(sa_column=Column(BigInteger, nullable=True))
6869

70+
6971
class CreateChat(BaseModel):
7072
id: int = None
7173
question: str = None

backend/template.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,8 @@ template:
132132
你是一个数据分析师,你的任务是根据给定的数据进行数据预测,我将以json格式给你一组数据,你帮我预测之后的数据(一段可以展示趋势的数据,至少2个周期),用json格式返回。
133133
```json
134134
135-
无法预测或者不支持预测的数据请直接返回:"抱歉,该数据无法进行预测。(有原因则返回无法预测的原因)"
136-
不需要返回原有数据,直接返回预测的部份
135+
无法预测或者不支持预测的数据请直接返回(不需要返回JSON格式):"抱歉,该数据无法进行预测。(有原因则返回无法预测的原因)"
136+
如果可以预测,则不需要返回原有数据,直接返回预测的部份
137137
138138
user: |
139139
### 请使用 i18n: {lang} 对应的语言输出你的结果

frontend/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"element-plus": "^2.10.1",
2727
"element-plus-secondary": "^1.0.0",
2828
"element-resize-detector": "^1.2.4",
29+
"github-markdown-css": "^5.8.1",
2930
"highlight.js": "^11.11.1",
3031
"html2canvas": "^1.4.1",
3132
"lodash": "^4.17.21",
Lines changed: 4 additions & 0 deletions
Loading
Lines changed: 5 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading

frontend/src/i18n/zh-CN.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@
8484
"data_predict": "数据分析",
8585
"chat_search": "搜索",
8686
"thinking": "思考中",
87-
"thinking_step": "思考过程"
87+
"thinking_step": "思考过程",
88+
"ask_again": "重新生成"
8889
},
8990
"ds": {
9091
"title": "数据源",

frontend/src/utils/markdown.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,23 @@ import MarkdownIt from 'markdown-it'
22
import hljs from 'highlight.js'
33

44
const md = new MarkdownIt({
5-
html: true,
6-
linkify: true,
5+
html: false,
6+
linkify: false,
7+
breaks: true,
8+
typographer: true,
9+
quotes: '“”‘’',
710
highlight: (str: any, lang: any): string => {
811
if (lang && hljs.getLanguage(lang)) {
912
try {
10-
return `
11-
<pre>
12-
<code class="hljs">
13-
${hljs.highlight(str, { language: lang, ignoreIllegals: true }).value}
14-
</code>
15-
</pre>
16-
`
13+
return `<pre class="hljs">
14+
<code>${hljs.highlight(str, { language: lang, ignoreIllegals: true }).value}</code>
15+
</pre>`
1716
} catch (e) {
1817
console.error(e)
19-
return str
2018
}
2119
}
2220

23-
return '<pre><code class="hljs">' + md.utils.escapeHtml(str) + '</code></pre>'
21+
return '<pre class="hljs"><code>' + md.utils.escapeHtml(str) + '</code></pre>'
2422
},
2523
})
2624

frontend/src/views/chat/RecommendQuestion.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ function clickQuestion(question: string): void {
5353

5454
<style scoped lang="less">
5555
.recommend-questions {
56-
padding: 8px;
5756
font-size: 14px;
5857
font-weight: 500;
5958
line-height: 22px;

0 commit comments

Comments
 (0)