21 (Обробка вхідних смс про витрати) -

Опис (останнім змінив Administrator)

В онлайн версії розроблений движок, що дозволяє автоматизувати введення витрат на основі вхідних СМС від банків.

В iOS немає легального способу отримати доступ до СМС-кам. Тому треба придумати найбільш автоматизований сценарій обробки СМС, що мінімізує дії користувача. Наприклад, такий:

Вкладення (4)

Download all attachments as: .zip

Історія змін (66)

comment: 1 Changed 19 місяців ago by Administrator

comment: 2 Changed 18 місяців ago by Administrator

comment: 3 Changed 18 місяців ago by Administrator

comment: 4 Changed 16 місяців ago by Administrator

встановлено в Костянтин

comment: 5 Changed 15 місяців ago by Administrator

comment: 6 Changed 8 місяців ago by Administrator

comment: 7 Changed 8 місяців ago by Andrey Yangabishev

Поділитися.

Поділитися текстом з Дребеденьгамі

Повідомлення з текстом SMS

Якщо така ще не оброблена sms вже є

Якщо користувач не залогінені

comment: 8 наступний: 9 Changed 8 місяців ago by Administrator

А чи є це "Поділитися" в стандартному мессенджере, куди приходять СМС? Наскільки це стандартна річ і з якої версії iOS?

comment: 9 у відповідь на: 8 Changed 8 місяців ago by Andrey Yangabishev

А чи є це "Поділитися" в стандартному мессенджере, куди приходять СМС? Наскільки це стандартна річ і з якої версії iOS?

Не знаю, немає айфона під рукою, але зараз прочитав що начебто немає, є "скопіювати" і "share", але там інший сенс: переслати sms іншого контакту. Доведеться все ж clipboard використовувати. Можливо я додаю ще одну кнопку в widget: поруч з "відкрити дребеденьгі" буде "зберегти sms". У цьому випадку користувач копіює текст sms, відкриває widget, тисне на другу кнопку, текст зберігається всередині віджета, а при відкриттів додатки всі ці збережених sms підхоплюються з віджета.

comment: 10 наступні: 11, 12 Changed 8 місяців ago by Administrator

Не треба віджета, він тут зайвий, занадто багато рухів тіла. Повинно бути по мінімуму:

  1. скопіювали СМС
  2. відкрили додаток
  3. Все саме задзижчало (відкрився розділ "Обробка СМС", користувач побачив, що СМС з'явилося зі статусом "В черзі", запустилася синхронізація, якщо все ок - то статус змінився на "Опрацьовано", а користувач побачив суму операції - як в Андроїд).

comment: 11 у відповідь на: 10 Changed 8 місяців ago by Andrey Yangabishev

відкрився розділ "Обробка СМС"

Спробував закоммітіть зміни в svn, лається

З приводу def значень - сервер їх не знає, вони зберігаються на клієнті і використовуються ним (клієнтом), якщо сервер поверну помилку розпізнавання.

comment: 23 у відповідь на: 21 Changed 8 місяців ago by Administrator

  • редагування смс, точніше відкриття record з смс (тут складно, потрібно зуміти прив'язати histItem до recordId, при тому що recordId змінюються в процесі синхронізації)

Там повинен бути клієнтський і серверний id записи (серверний називається здається moId). Клієнтський id не повинен змінюватися ніколи.

comment: 24 у відповідь на: 22; наступний: 26 Changed 8 місяців ago by Andrey Yangabishev

З приводу def значень - сервер їх не знає, вони зберігаються на клієнті і використовуються ним (клієнтом), якщо сервер поверну помилку розпізнавання.

А де це в коді андроїда?
Тому що я бачу це в SyncService? :

comment: 25 у відповідь на: 22 Changed 8 місяців ago by Andrey Yangabishev

comment: 26 у відповідь на: 24 Changed 8 місяців ago by Administrator

А де це в коді андроїда?
Тому що я бачу це в SyncService? :

З приводу значить полів за замовчуванням, в минулому повідомленні не зовсім точна інформація. Клієнт передає значення за замовчуванням в soap метод parseTextData, який їх використовує на випадок якщо не знайдуться правила.

comment: 27 Changed 8 місяців ago by Administrator

Передбачалося, що все господарство для СМС буде жити в одному вікні, ви розділили настройку і історію обробки. Напевно це і краще, але потрібно тоді перекомпонувати:

comment: 28 Changed 8 місяців ago by Administrator

Подивився потикав, ще трошки пунктів, на додачу до того, що ви перерахували:

21 (Обробка вхідних смс про витрати) -

В іншому начебто все працює здорово.

comment: 37 у відповідь на: 36 Changed 7 місяців ago by Andrey Yangabishev

залишилося зробити інформаційне вікно при старті

comment: 38 Changed 7 місяців ago by Administrator

Добре, переводите завдання в testing по завершенні.

Changed 7 місяців ago by Administrator

comment: 39 Changed 7 місяців ago by Administrator

Ще трохи про відступи. Зверху від тексту СМС трохи зменшити, знизу до риси збільшити і зробити щоб вони були однакові (як в Андроїд).

21 (Обробка вхідних смс про витрати) -

comment: 40 Changed 7 місяців ago by Andrey Yangabishev

comment: 41 наступний: 42 Changed 7 місяців ago by Administrator

Додайте плз ще посилання з тексту на сторінці налаштувань "будуть виставлені якщо не знайдуться правила", Таку ж як в підказці, при включенні галочки.

comment: 42 у відповідь на: 41 Changed 7 місяців ago by Andrey Yangabishev

Додайте плз ще посилання з тексту на сторінці налаштувань "будуть виставлені якщо не знайдуться правила", Таку ж як в підказці, при включенні галочки.

comment: 43 Changed 7 місяців ago by Administrator

comment: 44 Changed 7 місяців ago by Andrey Yangabishev

Я не дуже люблю грати в "Угадайку", це завжди виглядає непрофесійно і забирає чужий час. Це до пункту 4. Що _конкретно_ сталося і що _должно_ бути? У вимогах це описано? У Андроїд це реалізовано?

comment: 45 наступний: 47 Changed 7 місяців ago by Andrey Yangabishev

І ще було б непогано щоб ви прикріпили до тікету зразки тестів, тому мені не вдалося домогтися автоматичного парсинга. Сервер або своє підставляє (коли розбір за правилом), або тупо пише «не розпізнано", а не "авто".

Changed 7 місяців ago by Administrator

comment: 46 Changed 7 місяців ago by Administrator

З приводу що має бути - питання хороший, потрібно подумати як краще. Давай виставляти інше значення "за замовчуванням", тобто перше по списку, як у нас робиться при включенні галочки "Включити обробку СМС".

21 (Обробка вхідних смс про витрати) -

В який момент це краще робити - в момент синхронізації. Де-небудь перед відправкою на сервер потрібно перевірити, якщо поля category_id / source_id / place_id (у операцій всіх типів) раптом виявилися null, і при цьому в настроювальної СМС таблиці сидять не існуючі значення (або null?) - здійснюємо правку даних (в настройках СМС і в синхронізованої операції).

comment: 47 у відповідь на: 45 Changed 7 місяців ago by Administrator

Потрібно відправляти СМС, для якої немає правил, щоб спрацьовували поля за замовчуванням (якесь із яких має бути попередньо видалено в веб-версії).
Наприклад, як на скрині вище: Pokupka. 23.45 RUB, bla bla bla.

comment: 48 наступний: 49 Changed 7 місяців ago by Andrey Yangabishev

comment: 49 у відповідь на: 48; наступний: 50 Changed 7 місяців ago by Administrator

Як же тоді з'явилася операція на скріншоті?

А її (записи) ще немає на сервері, см. Скріншот знову ж. Сервер такий запис ніколи не збереже.

У нас це називається конфлікт. Креш бути не повинно, але у вікні синхронізації буде попередження і пропозиція викачати все заново.

comment: 50 у відповідь на: 49; наступний: 51 Changed 7 місяців ago by Andrey Yangabishev

  1. Поясніть на пальцях фізичний зміст оцієї заміни?

Є stageCompareRevisions, де смикається stageLocalChangesDictionaries якщо змін немає, або застосовується зміни, які закінчуються в stageEndServerChanges, де знову ж таки смикається stageLocalChangesDictionaries в кінці. Раніше sms sync я робив після getAccessStatus і до stageWayToContinue і не бачив змін на сервері. Зараз якщо ревізії рівні, то я роблю врізку: sms sync запускається і смикає після себе stageLocalChangesDictionaries. Якщо ревізії не рівні, значить є зміни, я роблю врізку в stageEndServerChanges, де обновляю sms settings і запускаю sms sync. stageEndServerChanges раніше також закінчувався stageLocalChangesDictionaries, ось я і відновлюю цей шлях.

У нас це називається конфлікт. Креш бути не повинно, але у вікні синхронізації буде попередження і пропозиція викачати все заново.

Так, в старій версії цього немає. З'ясувалося що це пов'язано з заміною dispatch_sync на async. Виявляється sync там стояв свідомо. Воно падало в будь-якому місці, просто коли робило select, зміни в одному контексті не встигали через async потрапити в потрібний контекст і при вибірці воно десь там всередині падало. Можливо чол не знав як обійти якусь проблему і пішов цим шляхом. Зазвичай apple рекомендує "If you need to synchronize parts of your code, use a serial dispatch queue instead of a lock". sync повернув, краш зник.

comment: 51 у відповідь на: 50; наступний: 52 Changed 7 місяців ago by Administrator