{"record":{"id":"d2d2ede72a689e6f","repo":"iflytek/astron-agent","slug":"sparkdesk-rag-does-not-support-query-doc-name-operation","errorCode":null,"errorMessage":"SparkDesk-RAG does not support query_doc_name operation.","messagePattern":"SparkDesk-RAG does not support query_doc_name operation\\.","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"core/knowledge/service/impl/sparkdesk_strategy.py","lineNumber":175,"sourceCode":"            NotImplementedError: SparkDesk-RAG does not support document query operation\n        \"\"\"\n        raise NotImplementedError(\"SparkDesk-RAG does not support query_doc operation.\")\n\n    async def query_doc_name(self, docId: str, **kwargs: Any) -> Optional[dict]:\n        \"\"\"\n        Query document name information\n\n        Args:\n            doc_id: Document ID\n            **kwargs: Other parameters\n\n        Returns:\n            File information object\n\n        Raises:\n            NotImplementedError: SparkDesk-RAG does not support document name query operation\n        \"\"\"\n        raise NotImplementedError(\n            \"SparkDesk-RAG does not support query_doc_name operation.\"\n        )\n","sourceCodeStart":157,"sourceCodeEnd":178,"githubUrl":"https://github.com/iflytek/astron-agent/blob/5e758547a83371a5a4b29dadf4ac03e8dd527635/core/knowledge/service/impl/sparkdesk_strategy.py#L157-L178","documentation":"SparkDeskRagStrategy.query_doc_name() is an intentional stub raising NotImplementedError. SparkDesk-RAG exposes no API to fetch document-name metadata by docId, so the adapter leaves the interface method unimplemented.","triggerScenarios":"Calling query_doc_name(docId) on a SparkDesk-RAG strategy to resolve a document's display name.","commonSituations":"UI code resolving file names from docIds via the generic strategy interface; features ported from other RAG backends without backend capability checks.","solutions":["Store the document name locally at upload time and look it up in your own DB","Skip name resolution when the backend is SparkDesk-RAG","Implement query_doc_name if SparkDesk exposes a document-metadata endpoint"],"exampleFix":"// before\ninfo = await strategy.query_doc_name(docId)\n// after\ninfo = await doc_db.get_name(docId) if isinstance(strategy, SparkDeskRagStrategy) else await strategy.query_doc_name(docId)","handlingStrategy":"fallback","validationCode":"def can_resolve_doc_name(strategy) -> bool:\n    return not isinstance(strategy, SparkDeskRagStrategy)","typeGuard":"def is_sparkdesk(strategy) -> bool:\n    return isinstance(strategy, SparkDeskRagStrategy)","tryCatchPattern":"try:\n    info = await strategy.query_doc_name(docId)\nexcept NotImplementedError:\n    info = await doc_db.get_name(docId)  # local fallback","preventionTips":["Store document names locally when uploading to SparkDesk","Never rely solely on backend metadata APIs for display data","Centralize backend capability knowledge in one module"],"tags":["python","rag","not-implemented","sparkdesk"],"backgroundTag":"unsupported-operation","analyzedSha":"5e758547a83371a5a4b29dadf4ac03e8dd527635","analyzedAt":"2026-09-12T08:03:51.356Z","contentChangedAt":"2026-09-12T08:03:51.356Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}