Skip to content
Back to skills

Backup

ASecurity

Правила работы с резервной копией в приложении

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
developmentjavakotlinsql

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add David-Li0406/meta-skill-evloving --skill backup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Backup?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Backup
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/david-li0406-backup/badge)](https://www.skillsdirectory.com/skills/david-li0406-backup)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: backup
description: Правила работы с резервной копией в приложении
---

# When to Use

- Используй этот навык, когда работаешь с экспортом данных приложения в JSON-файл
- Используй этот навык, когда работаешь с импортом данных из JSON-файла
- Используй этот навык, когда тестируешь резервное копирование (BackupItemTest.kt)
- Используй этот навык, когда реализуешь конвертацию типов (цветов, DisplayOption)
- Используй этот навык, когда работаешь с кроссплатформенной совместимостью (iOS/Android)
- Используй этот навык, когда обрабатываешь ошибки при экспорте/импорте данных
- Этот навык полезен, когда нужно понять формат JSON для обмена данными между устройствами

# Резервное копирование

## Формат JSON

Совместим с iOS-приложением:

```json
[
  {
    "title": "Название события",
    "details": "Описание события",
    "timestamp": 1234567890000,
    "colorTag": "#FFFF00",
    "displayOption": "day"
  }
]
```

## Реализация

**Use Cases:**

- `ExportBackupUseCase`: экспорт в JSON через FilePicker
- `ImportBackupUseCase`: импорт из JSON через FilePicker с предотвращением дубликатов
- `BackupItem`: DTO с kotlinx.serialization

**Конвертация типов:**

- **Цвета:** ARGB (Int) ↔ hex-строка (#RRGGBB), альфа-канал всегда 0xFF
- **Display Option:** enum ↔ camelCase строки (`day`, `monthDay`, `yearMonthDay`)

## Правила

**Экспорт:**

- JSON с prettyPrint через kotlinx.serialization
- Обработка ошибок (IOException, SerializationException, BackupException)

**Импорт:**

- Валидация JSON с игнорированием неизвестных полей
- Проверка дубликатов по title/details/timestamp/displayOption (БЕЗ colorTag)
- Обработка ошибок (FileNotFoundException, IOException, SerializationException, SQLException, BackupException)

**Совместимость с iOS:**

- Цвета из iOS (Data) не поддерживаются → null при импорте
- Кроссплатформенный обмен цветами не работает

## Тестирование

Unit-тесты: `app/src/test/java/com/dayscounter/domain/usecase/BackupItemTest.kt`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…