feat(电子发票): 补齐发票结构化提取
build.yaml / build (push) Successful in 50s

This commit is contained in:
xiaoqidun committed 2026-10-16 10:26:33 +08:00
1 parent 2cf96a872a
commit d3a713f504
4 files changed
+1534 -2

No files matched your search

+18 -2
View File
@@ -674,17 +674,27 @@ func (r *Reader) CustomDatas() ([]CustomData, error) {
// 返回的文件路径可直接传入ResData读取
// 返回: []Extension 扩展项列表, error 错误信息
func (r *Reader) Extensions() ([]Extension, error) {
doc, err := r.docStructure()
return r.ExtensionsContext(context.Background())
}
// ExtensionsContext 读取当前文档及版本的扩展项,取消或失败时不缓存未完成清单
// 入参: ctx 取消上下文
// 返回: []Extension 扩展项列表, error 读取、解析或取消错误
func (r *Reader) ExtensionsContext(ctx context.Context) ([]Extension, error) {
doc, err := r.docStructureContext(ctx)
if err != nil {
return nil, err
}
if strings.TrimSpace(doc.Extensions.Path) != "" && doc.Extensions.Extension == nil {
var extensions Extensions
partPath, err := r.readDocumentPart(doc.Extensions.Path, &extensions)
partPath, err := r.readDocumentPartContext(ctx, doc.Extensions.Path, &extensions)
if err != nil {
return nil, err
}
for i := range extensions.Extension {
if err := ctx.Err(); err != nil {
return nil, err
}
extension := &extensions.Extension[i]
for j := range extension.ExtendData {
extension.ExtendData[j] = r.resourceLocation(partPath, "", extension.ExtendData[j])
@@ -693,8 +703,14 @@ func (r *Reader) Extensions() ([]Extension, error) {
if extensions.Extension == nil {
extensions.Extension = []Extension{}
}
if err := ctx.Err(); err != nil {
return nil, err
}
doc.Extensions.Extension = extensions.Extension
}
if err := ctx.Err(); err != nil {
return nil, err
}
return doc.Extensions.Extension, nil
}