balibabu commited on
Commit
17c457d
·
1 Parent(s): 01c2a31

feat: Dynamically change the background image on the search homepage every day #2247 (#2338)

Browse files

### What problem does this PR solve?

feat: Dynamically change the background image on the search homepage
every day #2247

### Type of change


- [x] New Feature (non-breaking change which adds functionality)

docker/nginx/ragflow.conf CHANGED
@@ -11,8 +11,12 @@ server {
11
  gzip_disable "MSIE [1-6]\.";
12
 
13
  location /v1 {
14
- proxy_pass http://ragflow:9380;
15
- include proxy.conf;
 
 
 
 
16
  }
17
 
18
  location / {
 
11
  gzip_disable "MSIE [1-6]\.";
12
 
13
  location /v1 {
14
+ proxy_pass http://ragflow:9380;
15
+ include proxy.conf;
16
+ }
17
+
18
+ location /HPImageArchive {
19
+ proxy_pass https://cn.bing.com;
20
  }
21
 
22
  location / {
web/.umirc.ts CHANGED
@@ -30,7 +30,14 @@ export default defineConfig({
30
  copy: ['src/conf.json'],
31
  proxy: {
32
  '/v1': {
33
- target: 'http://localhost:9380/',
 
 
 
 
 
 
 
34
  changeOrigin: true,
35
  ws: true,
36
  logger: console,
 
30
  copy: ['src/conf.json'],
31
  proxy: {
32
  '/v1': {
33
+ target: 'http://123.60.95.134:9380/',
34
+ changeOrigin: true,
35
+ ws: true,
36
+ logger: console,
37
+ // pathRewrite: { '^/v1': '/v1' },
38
+ },
39
+ '/HPImageArchive': {
40
+ target: 'https://cn.bing.com/',
41
  changeOrigin: true,
42
  ws: true,
43
  logger: console,
web/src/pages/search/hooks.ts CHANGED
@@ -3,7 +3,7 @@ import { useTestChunkRetrieval } from '@/hooks/knowledge-hooks';
3
  import { useSendMessageWithSse } from '@/hooks/logic-hooks';
4
  import { IAnswer } from '@/interfaces/database/chat';
5
  import api from '@/utils/api';
6
- import { isEmpty, trim } from 'lodash';
7
  import { ChangeEventHandler, useCallback, useEffect, useState } from 'react';
8
 
9
  export const useSendQuestion = (kbIds: string[]) => {
@@ -99,3 +99,28 @@ export const useSendQuestion = (kbIds: string[]) => {
99
  isFirstRender,
100
  };
101
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  import { useSendMessageWithSse } from '@/hooks/logic-hooks';
4
  import { IAnswer } from '@/interfaces/database/chat';
5
  import api from '@/utils/api';
6
+ import { get, isEmpty, trim } from 'lodash';
7
  import { ChangeEventHandler, useCallback, useEffect, useState } from 'react';
8
 
9
  export const useSendQuestion = (kbIds: string[]) => {
 
99
  isFirstRender,
100
  };
101
  };
102
+
103
+ export const useFetchBackgroundImage = () => {
104
+ const [imgUrl, setImgUrl] = useState<string>('');
105
+
106
+ const fetchImage = useCallback(async () => {
107
+ try {
108
+ const res = await fetch(
109
+ '/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN',
110
+ );
111
+ const ret = await res.json();
112
+ const url = get(ret, 'images.0.url');
113
+ if (url) {
114
+ setImgUrl(url);
115
+ }
116
+ } catch (error) {
117
+ console.log('🚀 ~ fetchImage ~ error:', error);
118
+ }
119
+ }, []);
120
+
121
+ useEffect(() => {
122
+ fetchImage();
123
+ }, [fetchImage]);
124
+
125
+ return `https://cn.bing.com${imgUrl}`;
126
+ };
web/src/pages/search/index.less CHANGED
@@ -51,7 +51,6 @@
51
 
52
  .firstRenderContent {
53
  height: 100%;
54
- background-image: url(https://www.bing.com/th?id=OHR.IguazuRainbow_ZH-CN6524347982_1920x1080.webp&qlt=50);
55
  background-position: center;
56
  background-size: cover;
57
  }
@@ -122,7 +121,7 @@
122
  font-weight: 600;
123
  line-height: 20px;
124
 
125
- background: linear-gradient(to right, #095fab 10%, #25abe8 50%, #57d75b 60%);
126
  background-size: auto auto;
127
  background-clip: border-box;
128
  background-size: 200% auto;
 
51
 
52
  .firstRenderContent {
53
  height: 100%;
 
54
  background-position: center;
55
  background-size: cover;
56
  }
 
121
  font-weight: 600;
122
  line-height: 20px;
123
 
124
+ background: linear-gradient(to right, #095fab 10%, #25abe8 50%, #55c8dd 60%);
125
  background-size: auto auto;
126
  background-clip: border-box;
127
  background-size: 200% auto;
web/src/pages/search/index.tsx CHANGED
@@ -16,13 +16,12 @@ import {
16
  } from 'antd';
17
  import { useState } from 'react';
18
  import MarkdownContent from '../chat/markdown-content';
19
- import { useSendQuestion } from './hooks';
20
  import SearchSidebar from './sidebar';
21
 
22
  import PdfDrawer from '@/components/pdf-drawer';
23
  import { useClickDrawer } from '@/components/pdf-drawer/hooks';
24
  import RetrievalDocuments from '@/components/retrieval-documents';
25
- import { useFetchAppConf } from '@/hooks/logic-hooks';
26
  import { useTranslation } from 'react-i18next';
27
  import styles from './index.less';
28
 
@@ -33,7 +32,7 @@ const SearchPage = () => {
33
  const { t } = useTranslation();
34
  const [checkedList, setCheckedList] = useState<string[]>([]);
35
  const list = useSelectTestingResult();
36
- const appConf = useFetchAppConf();
37
  const {
38
  sendQuestion,
39
  handleClickRelatedQuestion,
@@ -50,6 +49,7 @@ const SearchPage = () => {
50
  } = useSendQuestion(checkedList);
51
  const { visible, hideModal, documentId, selectedChunk, clickDocumentButton } =
52
  useClickDrawer();
 
53
 
54
  const InputSearch = (
55
  <Search
@@ -80,12 +80,13 @@ const SearchPage = () => {
80
  justify="center"
81
  align="center"
82
  className={styles.firstRenderContent}
 
83
  >
84
  <Flex vertical align="center" gap={'large'}>
85
- <Space size={30}>
86
  <img src="/logo.svg" alt="" className={styles.appIcon} />
87
  <span className={styles.appName}>{appConf.appName}</span>
88
- </Space>
89
  {InputSearch}
90
  </Flex>
91
  </Flex>
 
16
  } from 'antd';
17
  import { useState } from 'react';
18
  import MarkdownContent from '../chat/markdown-content';
19
+ import { useFetchBackgroundImage, useSendQuestion } from './hooks';
20
  import SearchSidebar from './sidebar';
21
 
22
  import PdfDrawer from '@/components/pdf-drawer';
23
  import { useClickDrawer } from '@/components/pdf-drawer/hooks';
24
  import RetrievalDocuments from '@/components/retrieval-documents';
 
25
  import { useTranslation } from 'react-i18next';
26
  import styles from './index.less';
27
 
 
32
  const { t } = useTranslation();
33
  const [checkedList, setCheckedList] = useState<string[]>([]);
34
  const list = useSelectTestingResult();
35
+ // const appConf = useFetchAppConf();
36
  const {
37
  sendQuestion,
38
  handleClickRelatedQuestion,
 
49
  } = useSendQuestion(checkedList);
50
  const { visible, hideModal, documentId, selectedChunk, clickDocumentButton } =
51
  useClickDrawer();
52
+ const imgUrl = useFetchBackgroundImage();
53
 
54
  const InputSearch = (
55
  <Search
 
80
  justify="center"
81
  align="center"
82
  className={styles.firstRenderContent}
83
+ style={{ backgroundImage: `url(${imgUrl})` }}
84
  >
85
  <Flex vertical align="center" gap={'large'}>
86
+ {/* <Space size={30}>
87
  <img src="/logo.svg" alt="" className={styles.appIcon} />
88
  <span className={styles.appName}>{appConf.appName}</span>
89
+ </Space> */}
90
  {InputSearch}
91
  </Flex>
92
  </Flex>