---
name: vault_file
lang: go
domain: infra
version: "1.0.0"
algebraic: product
definition: |
  type VaultFile struct {
      VaultID   string `json:"vault_id"`
      VaultName string `json:"vault_name"`
      RelPath   string `json:"rel_path"`
      Size      int64  `json:"size"`
      Mtime     int64  `json:"mtime"`
      Sha256    string `json:"sha256"`
      Mime      string `json:"mime"`
      Ext       string `json:"ext"`
      Bucket    string `json:"bucket"`
      SubBucket string `json:"sub_bucket"`
  }
description: "Describe un fichero individual dentro de un vault: identidad (vault + ruta relativa), metadatos de contenido (tamano, mtime, sha256, mime) y clasificacion estructural (bucket, sub-bucket)."
tags: [vault, file, metadata, infra, storage]
uses_types: []
file_path: "functions/infra/vault_file.go"
---

## Ejemplo

```go
vf := VaultFile{
    VaultID:   "turismo_spain_app_turismo",
    VaultName: "turismo_spain",
    RelPath:   "data/raw/hoteles_2024.csv",
    Size:      142340,
    Mtime:     1715000000,
    Sha256:    "e3b0c44298fc1c149afb...",
    Mime:      "text/csv",
    Ext:       ".csv",
    Bucket:    "data",
    SubBucket: "raw",
}
```

## Notas

`Bucket` acepta exactamente "data" o "knowledge". `SubBucket` puede ser vacio si el fichero
esta directamente en la raiz del bucket. Los valores conocidos de SubBucket son:
- data: raw, processed, exports
- knowledge: decisions, domains, models, benchmarks, test_documents

`Mtime` en unix seconds UTC. `Sha256` hex lowercase sin prefijo. `Size` en bytes.
JSON tags en snake_case para serializar directamente a la tabla `vault_files` de operations.db.
