@@ -233,11 +233,16 @@ async function handleAutofill(msg) {
233233 throw new Error ( "缺少目标标签页" ) ;
234234 }
235235 const sensitive = msg . sensitive ? 1 : 0 ;
236+ const setProgress = ( text ) =>
237+ chrome . storage . local
238+ . set ( { aoProgress : { text, ts : Date . now ( ) } } )
239+ . catch ( ( ) => { } ) ;
236240 await aoLog ( "info" , "fill.start" , {
237241 url : msg . url || "" ,
238242 profile : msg . profileId ,
239243 sensitive,
240244 } ) ;
245+ await setProgress ( "拉取档案…" ) ;
241246 const flat = await fetchJson (
242247 `${ base } /api/v1/profiles/${ encodeURIComponent ( msg . profileId ) } /flat?sensitive=${ sensitive } `
243248 ) ;
@@ -247,6 +252,7 @@ async function handleAutofill(msg) {
247252 } ) ;
248253
249254 // 第一段:本地规则直填(零 LLM)
255+ await setProgress ( "规则直填…" ) ;
250256 let report = await runFillPass ( tabId , flat , { } ) ;
251257 await aoLog ( "info" , "fill.pass1" , {
252258 filled : report . counts ? report . counts . filled : 0 ,
@@ -260,6 +266,7 @@ async function handleAutofill(msg) {
260266 const unmatched = report . unmatched || [ ] ;
261267 const mapping = { } ;
262268 if ( unmatched . length > 0 && msg . aiMapping !== false ) {
269+ await setProgress ( `AI 映射 ${ unmatched . length } 个字段…` ) ;
263270 const mappingResp = await fetchJson (
264271 `${ base } /api/v1/mapping` ,
265272 {
@@ -314,6 +321,7 @@ async function handleAutofill(msg) {
314321 if ( picks . length === 0 ) {
315322 break ;
316323 }
324+ await setProgress ( `AI 选选项(第 ${ round + 1 } 轮,${ picks . length } 项)…` ) ;
317325 let overrides = { } ;
318326 try {
319327 const choiceResp = await fetchJson (
@@ -350,6 +358,7 @@ async function handleAutofill(msg) {
350358 }
351359
352360 const { aoHistory = [ ] } = await chrome . storage . local . get ( "aoHistory" ) ;
361+ await setProgress ( "" ) ;
353362 aoHistory . unshift ( {
354363 ts : Date . now ( ) ,
355364 url : msg . url || "" ,
0 commit comments