@@ -40,6 +40,8 @@ export const useDatabaseStore = defineStore('database', () => {
4040 } ) ;
4141
4242 let refreshInterval = null ;
43+ let autoRefreshSource = null ; // Tracks whether auto-refresh was user-triggered or automatic
44+ let autoRefreshManualOverride = false ; // Indicates user explicitly disabled auto-refresh
4345
4446 // Actions
4547 async function getDatabaseInfo ( id ) {
@@ -51,6 +53,7 @@ export const useDatabaseStore = defineStore('database', () => {
5153 try {
5254 const data = await databaseApi . getDatabaseInfo ( db_id ) ;
5355 database . value = data ;
56+ ensureAutoRefreshForProcessing ( data ?. files ) ;
5457 await loadQueryParams ( db_id ) ;
5558 } catch ( error ) {
5659 console . error ( error ) ;
@@ -180,6 +183,40 @@ export const useDatabaseStore = defineStore('database', () => {
180183 } ) ;
181184 }
182185
186+ const processingStatuses = new Set ( [ 'processing' , 'waiting' ] ) ;
187+
188+ function enableAutoRefresh ( source = 'auto' ) {
189+ if ( autoRefreshManualOverride && source === 'auto' ) {
190+ return ;
191+ }
192+
193+ if ( ! state . autoRefresh ) {
194+ state . autoRefresh = true ;
195+ autoRefreshSource = source ;
196+ autoRefreshManualOverride = false ;
197+ startAutoRefresh ( ) ;
198+ return ;
199+ }
200+
201+ if ( source === 'auto' && autoRefreshSource !== 'manual' ) {
202+ autoRefreshSource = 'auto' ;
203+ }
204+ }
205+
206+ function ensureAutoRefreshForProcessing ( filesMap ) {
207+ const files = Object . values ( filesMap || { } ) ;
208+ const hasPending = files . some ( ( file ) => file && processingStatuses . has ( file . status ) ) ;
209+ if ( hasPending ) {
210+ enableAutoRefresh ( 'auto' ) ;
211+ } else if ( autoRefreshSource === 'auto' && state . autoRefresh ) {
212+ state . autoRefresh = false ;
213+ autoRefreshSource = null ;
214+ autoRefreshManualOverride = false ;
215+ stopAutoRefresh ( ) ;
216+ }
217+ return hasPending ;
218+ }
219+
183220 async function addFiles ( { items, contentType, params } ) {
184221 if ( items . length === 0 ) {
185222 message . error ( contentType === 'file' ? '请先上传文件' : '请输入有效的网页链接' ) ;
@@ -191,6 +228,7 @@ export const useDatabaseStore = defineStore('database', () => {
191228 const data = await documentApi . addDocuments ( databaseId . value , items , { ...params , content_type : contentType } ) ;
192229 if ( data . status === 'success' || data . status === 'queued' ) {
193230 const itemType = contentType === 'file' ? '文件' : 'URL' ;
231+ enableAutoRefresh ( 'auto' ) ;
194232 message . success ( data . message || `${ itemType } 已提交处理,请在任务中心查看进度` ) ;
195233 if ( data . task_id ) {
196234 taskerStore . registerQueuedTask ( {
@@ -299,10 +337,15 @@ export const useDatabaseStore = defineStore('database', () => {
299337 }
300338
301339 function toggleAutoRefresh ( ) {
302- state . autoRefresh = ! state . autoRefresh ;
303- if ( state . autoRefresh ) {
340+ const nextState = ! state . autoRefresh ;
341+ state . autoRefresh = nextState ;
342+ if ( nextState ) {
343+ autoRefreshSource = 'manual' ;
344+ autoRefreshManualOverride = false ;
304345 startAutoRefresh ( ) ;
305346 } else {
347+ autoRefreshManualOverride = true ;
348+ autoRefreshSource = null ;
306349 stopAutoRefresh ( ) ;
307350 }
308351 }
0 commit comments