> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intrena.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Plantillas CSV

> Los encabezados exactos de cada archivo de importación.

Todos los archivos de importación son **CSV en UTF-8**, con una fila de
encabezados y una fila por registro.

## Usuarios

Ver la guía completa en [Importar usuarios](/personas/importar-usuarios).

```csv theme={null}
username,email,first_name,last_name,identification_number,mobile,password,role,area_code,position_code,location,manager_username,avatar,extended_field1,extended_field2,extended_field3,extended_field4,extended_field5,extended_field6,extended_field7
ana.perez@empresa.com,ana.perez@empresa.com,Ana,Pérez,1020304050,+573001234567,,user,VEN,ASE,Bogotá,jefe@empresa.com,,Centro Norte,Turno 1,,,,,
luis.gomez@empresa.com,luis.gomez@empresa.com,Luis,Gómez,1020304051,+573001234568,,admin,OPE,JEF,Medellín,,,Centro Sur,Turno 2,,,,,
```

| Columna                 | Obligatoria | Notas                                                     |
| ----------------------- | :---------: | --------------------------------------------------------- |
| `username`              |      ✅      | Normalmente igual al correo.                              |
| `email`                 |      ✅      | Único; no puede repetirse dentro del archivo.             |
| `first_name`            |      ✅      |                                                           |
| `last_name`             |             |                                                           |
| `identification_number` |             |                                                           |
| `mobile`                |             | Formato internacional: `+573001234567`.                   |
| `password`              |             | Mínimo 6 caracteres. Vacío = primera parte del correo.    |
| `role`                  |             | `admin`, `reader` o `user`.                               |
| `area_code`             |             | **Código** del área, no el nombre.                        |
| `position_code`         |             | **Código** del cargo, no el nombre.                       |
| `location`              |             |                                                           |
| `manager_username`      |             | `username` del jefe, que debe existir.                    |
| `avatar`                |             | URL con `http://` o `https://`.                           |
| `extended_field1`–`7`   |             | [Campos personalizados](/personas/campos-personalizados). |

## Áreas

```csv theme={null}
code,name
VEN,Ventas
OPE,Operaciones
RRHH,Recursos Humanos
```

Un `code` existente **actualiza** el nombre en lugar de crear un área nueva.

## Cargos

```csv theme={null}
code,name
ASE,Asesor comercial
JEF,Jefe de planta
ANA,Analista de calidad
```

Mismo comportamiento: `code` existente actualiza.

## Reglas comunes

<AccordionGroup>
  <Accordion title="Codificación UTF-8" icon="font">
    En Excel: *Guardar como → CSV UTF-8 (delimitado por comas)*. En otra
    codificación, las tildes y eñes llegan corruptas.
  </Accordion>

  <Accordion title="El signo + de los celulares" icon="phone">
    Excel se lo come. Formatea la columna como **texto** antes de escribir los
    números, o antepón un apóstrofo (`'+573001234567`).
  </Accordion>

  <Accordion title="Una columna vacía borra el valor" icon="eraser">
    Si incluyes una columna sin valor, se borra el dato existente. Para
    actualizaciones parciales, incluye solo las columnas que quieres cambiar.
  </Accordion>

  <Accordion title="Códigos, no nombres" icon="hashtag">
    `area_code` y `position_code` esperan el **código** que definiste en Áreas y
    Cargos. Un nombre no coincide con nada y deja el campo vacío.
  </Accordion>

  <Accordion title="Prueba con pocas filas" icon="flask">
    Importa diez registros, verifica cómo quedaron en el panel, y solo entonces
    sube el archivo completo.
  </Accordion>
</AccordionGroup>
