实现增量扫描
All checks were successful
Go CI / test-and-build (push) Successful in 13s
Web CI / lint-test-build (push) Successful in 31s

This commit is contained in:
2026-04-11 14:38:23 +08:00
parent 3f82e29c6c
commit 79d47c81e7
10 changed files with 351 additions and 91 deletions

View File

@@ -13,7 +13,7 @@
{{ scanStatus.report.processed }} / {{ scanStatus.report.total_files || 0 }}
</span>
<span v-else-if="scanStatus.report" class="scan-status-text">
新增 {{ scanStatus.report.added }} · 跳过 {{ scanStatus.report.skipped }} · 失败 {{ scanStatus.report.failed_files?.length || 0 }}
新增 {{ scanStatus.report.added || 0 }} · 变更 {{ scanStatus.report.updated || 0 }} · 删除 {{ scanStatus.report.deleted || 0 }} · 跳过 {{ scanStatus.report.skipped || 0 }} · 失败 {{ scanStatus.report.failed_files?.length || 0 }}
</span>
<span v-else-if="scanStatus.error" class="scan-status-text">{{ scanStatus.error }}</span>
</div>

View File

@@ -60,7 +60,7 @@ describe('LibraryCard.vue', () => {
const wrapper = setup({
scanStatus: {
running: true,
report: { processed: 1, total_files: 2, added: 0, skipped: 0, failed_files: [] },
report: { processed: 1, total_files: 2, added: 0, updated: 0, deleted: 0, skipped: 0, failed_files: [] },
},
})
@@ -82,12 +82,14 @@ describe('LibraryCard.vue', () => {
const wrapper = setup({
scanStatus: {
running: false,
report: { added: 3, skipped: 2, failed_files: ['/bad.mp3'] },
report: { added: 3, updated: 1, deleted: 2, skipped: 2, failed_files: ['/bad.mp3'] },
},
})
expect(wrapper.text()).toContain('最近一次扫描')
expect(wrapper.text()).toContain('新增 3')
expect(wrapper.text()).toContain('变更 1')
expect(wrapper.text()).toContain('删除 2')
expect(wrapper.text()).toContain('跳过 2')
expect(wrapper.text()).toContain('失败 1')
wrapper.unmount()

View File

@@ -59,15 +59,15 @@ describe('butterfliu store', () => {
const responses = [
{
ok: true,
json: () => Promise.resolve({ running: true, library_id: 1, report: { processed: 0, total_files: 2, added: 0, skipped: 0, failed_files: [] } }),
json: () => Promise.resolve({ running: true, library_id: 1, report: { processed: 0, total_files: 2, added: 0, updated: 0, deleted: 0, skipped: 0, failed_files: [] } }),
},
{
ok: true,
json: () => Promise.resolve({ running: true, library_id: 1, report: { processed: 1, total_files: 2, added: 1, skipped: 0, failed_files: [] } }),
json: () => Promise.resolve({ running: true, library_id: 1, report: { processed: 1, total_files: 2, added: 1, updated: 0, deleted: 0, skipped: 0, failed_files: [] } }),
},
{
ok: true,
json: () => Promise.resolve({ running: false, library_id: 1, report: { processed: 2, total_files: 2, added: 1, skipped: 1, failed_files: [] } }),
json: () => Promise.resolve({ running: false, library_id: 1, report: { processed: 2, total_files: 2, added: 1, updated: 1, deleted: 0, skipped: 0, failed_files: [] } }),
},
]
const fetchMock = mockFetch(() => Promise.resolve(responses.shift()))
@@ -79,7 +79,7 @@ describe('butterfliu store', () => {
await vi.advanceTimersByTimeAsync(1000)
const result = await promise
expect(result).toEqual({ running: false, library_id: 1, report: { processed: 2, total_files: 2, added: 1, skipped: 1, failed_files: [] } })
expect(result).toEqual({ running: false, library_id: 1, report: { processed: 2, total_files: 2, added: 1, updated: 1, deleted: 0, skipped: 0, failed_files: [] } })
expect(fetchMock).toHaveBeenNthCalledWith(1, '/api/libraries/1/scan', {
method: 'POST',
})