Coder Social home page Coder Social logo

tdfin's Introduction

Терминология

  • Экспорт -- выгрузка на сайте или телефоне, содержащая транзакции с неполным набором полей
  • Дамп -- выгрузка через API синхронизации, если указать serverTime=0
  • Дифф -- наше сообщение, отправленное в API синхронизации
  • Дельта -- изменения, полученные через API синхронизации

Подготовка

  • Запчасти

    • Взять транзакции из основной базы, залить в тестовую, собрать грабли
    • Удалить всё с тестового аккаунта (в том числе счета и категории)
    • Скачать дамп с тестового аккаунта, проверить, что всё удалилось
    • Залить на тестовый аккаунт счета и категории
    • Залить на тестовый аккаунт одну транзакцию, созданную вручную
    • Залить на тестовый аккаунт сразу несколько транзакций, созданных собственноручно
    • Удалить категории со слэшом и запятыми
    • Приклеивание id-шника к счёту
    • Приклеивание id-шника к категории
    • Приклеивание id-шника к категории со слешами
    • Получение списка id-шников к категории со слэшами и запятыми (категории могут иметь слеш, а могут не иметь)
  • Скрипт прочистки категорий

    • Применить наработки на основной базе
  • Скрипт заливки транзакций

    • На вход получает экспорт и дамп со счетами и категориями

    • Для каждой строки экспорта генерирует транзакцию для диффа

    • Если что-то идёт не так, делать raise Exception("Beda!!!")

    • Отправляем

    • Сделать D-дамп и применить на основной базе

    • Если что, у нас есть все данные и набор инструментов, чтобы всё восстановить

Заметки

При заливке дампа нужно не плодить дубли

Формулировка задачи от 31.10

  • уметь удалять всё (в принципе "начать всё сначала" на сайте + minus_all работает) (minus_all кажется не справляется из-за объёма)
  • уметь заливать из трёх источников (csv телефон, csv сайт, dump)
    • не создавать дубли, в т.ч. мерчантов, категорий, счетов
    • заливаем только те категории, которые есть в транзакциях этого дампа и их родителей - возможно, этого хватит, если нет - надо разбираться, как при заливке привести в порядок категории со слешами и запятыми.
  • уметь получать дамп

TODO

  • проверить на тестовом аккаунте заливку дампа с него же через tdfin (не будет ли дублей где-либо, нет ли проблем с неизменяемыми сущностями, не меняется ли после этого дамп)
  • доделать нужную склейку дублей из csv
  • сделать единый инструмент заливки
  • залить данные в тестовую базу и разобраться, нужно ли при заливке дампа преобразовывать категории со слэшами

5.12.18

  • Написать заливку csv с сайта, по аналогии с заливкой csv с телефона

  • Реализовать проверку на дубли при заливке дампа

  • При заливке дампа категории заливаются через id. Предположительно, это приведёт к дублированию категорий. Надо этого избежать.

  • Сделать свежий дамп. Залить на сайт csv с сайта от 16.09. Залить на сайт дамп от 27.09.

Что сделали

4.12.18

  • Отладили работу с конфигами.
  • Добавили в plus_dump функционал вычищения категорий и мерчантов, которых нет ни в одной транзакции. Потестировали на тестовой базе. Прогнали на основной (скачали dump, удалили всё, залили) - как результат, удалили кучу категорий, теперь можно нормально ставить теги.

Заметки

  • Перед запуском minus_all на основной базе, в конфиг tdfin_main.yaml надо прописать userid числом, взятым из дампа. Перед запуском plus_dump наоборот, userid = null (чтобы оставить прежних пользователей).

tdfin's People

Contributors

undina avatar

Watchers

Тим avatar  avatar

Forkers

realtim

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.