[PR #32113] fix(web): resolve metadata IDs by name in batch metadata edit #33555

Closed
opened 2026-02-21 20:53:29 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/langgenius/dify/pull/32113

State: closed
Merged: No


Summary

Fixes #31964.

When some document metadata entries in the batch edit modal have an empty id, the payload sent to backend can contain unresolved metadata IDs. This causes backend update failures to be effectively skipped.

Changes

  • Added dataset metadata lookup in useBatchEditDocumentMetadata and built a name -> id map.
  • Added resolveMetadataId fallback logic:
    • Use existing non-built-in id when present.
    • Otherwise resolve by metadata name from dataset metadata definitions.
  • Normalized payload serialization to skip entries whose metadata id still cannot be resolved.
  • Updated removal/update matching logic to compare resolved metadata IDs.
  • Added regression tests for:
    • Missing id resolved by metadata name.
    • Missing/unresolvable id safely skipped.

Testing

Executed locally in web/:

  • corepack pnpm lint app/components/datasets/metadata/hooks/use-batch-edit-document-metadata.ts app/components/datasets/metadata/hooks/use-batch-edit-document-metadata.spec.ts
  • corepack pnpm test app/components/datasets/metadata/hooks/use-batch-edit-document-metadata.spec.ts
  • corepack pnpm test:coverage app/components/datasets/metadata/hooks/use-batch-edit-document-metadata.spec.ts
  • corepack pnpm run type-check

Coverage for touched hook and related files in this test run:

  • statements: 100%
  • branches: 100%
  • functions: 100%
  • lines: 100%
**Original Pull Request:** https://github.com/langgenius/dify/pull/32113 **State:** closed **Merged:** No --- ## Summary Fixes #31964. When some document metadata entries in the batch edit modal have an empty `id`, the payload sent to backend can contain unresolved metadata IDs. This causes backend update failures to be effectively skipped. ## Changes - Added dataset metadata lookup in `useBatchEditDocumentMetadata` and built a `name -> id` map. - Added `resolveMetadataId` fallback logic: - Use existing non-built-in id when present. - Otherwise resolve by metadata name from dataset metadata definitions. - Normalized payload serialization to skip entries whose metadata id still cannot be resolved. - Updated removal/update matching logic to compare resolved metadata IDs. - Added regression tests for: - Missing id resolved by metadata name. - Missing/unresolvable id safely skipped. ## Testing Executed locally in `web/`: - `corepack pnpm lint app/components/datasets/metadata/hooks/use-batch-edit-document-metadata.ts app/components/datasets/metadata/hooks/use-batch-edit-document-metadata.spec.ts` - `corepack pnpm test app/components/datasets/metadata/hooks/use-batch-edit-document-metadata.spec.ts` - `corepack pnpm test:coverage app/components/datasets/metadata/hooks/use-batch-edit-document-metadata.spec.ts` - `corepack pnpm run type-check` Coverage for touched hook and related files in this test run: - statements: 100% - branches: 100% - functions: 100% - lines: 100%
yindo added the pull-request label 2026-02-21 20:53:29 -05:00
yindo closed this issue 2026-02-21 20:53:29 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#33555