• Заседание ЗС

    файл agenda.xml
    1 уровнень - тег Agenda, копия из agendalist.xml (поля id, name, status, path). Name - вставляется в заголовок.
    2 уровень

    Тег Question

    Вопросы - идут списком

    Поля

    поле, выделенное красным, может отсутствовать в отдаче
    id - уникальный номер, int
    OrderNum - поле типа int, порядковый номер записи в списке. Как правило, в отдаче уже упорядочены по возрастанию значения, но на всякий случай лучше на клиенте упорядочивать по этому полю
    Num - поле типа int, просто номер, поле может быть пустым “”
    QType - пока обнаружено только значение “Question”, назначение поля выясняется. Возможно, в других отдачах есть тоже тег Question, но с другим значением этого поля
    title - укороченный заголовок
    fullTitle - полный заголовок. В списке на iPad используется это значение
    reading - int
    status - возможны варианты “Утвержден”, “Зарегистрирован”, “Включен в проект”, “Перенесен”. Используется для распределения по sections (Утв. , Все, Доп). В Доп. пока не ясно что, везде 0.
    group - текстовое поле
    ExtId - int
    BDId - int
    date - dd.MM.yyyy h:mm:ss
    shortDesc - text
    passport - int
    Если поле есть, то html контент можно получить аналогичным образом, как в Паспортах закона:
    адрес сервера + /Data/Passports/ + passport + .html.
    !! При этом в html не будет 1 части - заголовок. 2 часть (контент) - такая же.
    passportlink - text
    RegNumber - text; номер законопроекта.
    HeadComm - text
    Subject - text
    dokl – text (докладчик)
    sodokl - text (содокладчик)
    QuestionLink - ссылка на html-файл с контентом. Забирать аутентифицированным http get запросом. Аутентификация базовая (username + password). Есть ошибка в синтаксисе запроса при перечислении параметров: после поля siteUrl стоит ? вместо &.
    3 уровень

    Вложенный тег YouthCommissionDecision

    может отсутствовать, может быть несколько

    Поля

    Title - text
    reading - int
    У теги есть значение в виде части пути /data/docs/12345.pdf?1234 (добавляется к http://client.zsperm.ru:2000/); где используется - пока не ясно

    Текст - fullTitle, номер - Num (Если нет, то пусто)
    Разделение по Утв/Доп : Если у вопроса нет номера, то он Доп

  • Структура xml

    Поля

    (Почти все это есть в первом xml файле):

    • item_id - номер (идентификатор) закона
    • Name - Название
    • Subject - Субъект права
    • Head_Comittee - головной коммитет

    Все даты в xml в формате YYYY-MM-ddThh:mm:ss+hh:mm
    (пример 2014-04-17T00:00:00+06:00)

    Под заголовком “Документы” - разделы документов
    Кнопка “Звезда”-добавление/удаление из избранного. Избранные локальные
    Правая кнопка - переход на экран аннотаций к паспорту

  • Registration

    Папка: законопроект
    Подпапка: Проект закона {номер} от {дата}

    • RegistrationDate - дата регистрации
    • RegistrationNumber - номер регистрации
    • Document_Source - список документов (см. карточку справа)
  • Law_Registrtion

    Папка : Текст закона

    • Law_RegistrtionDate - дата
    • Law_RegistrtionNumber - номер
    • Law_RegistrtionSource - документ (вроде единственный всегда)(см. справа)
    • Law_RegistrtionDoc_ID - принимает значение -1 в случае если статус = законопроект, иначе - закон
  • {Number}_Reading

    Чтения содержат в себе похожие структуры, так что опишу их в общем

    {Number} - одно из списка [First , Second, Third]


    Подразделы начинаются с первой буквы чтения (F, S, T)

  • {upper_case_char}Resolution

    Подпапка : Заключения

    Заключения бывают 6 видов :

    • {upper_case_char}UAZD_Resolution - УАЗД

    • {upper_case_char}KSP_Resolution - КСП

    • {upper_case_char}GPU_Resolution - ГПУ

    • {upper_case_char}AO_Resolution - Губернатор

    • {upper_case_char}EZKpK_Resolution - Коммиссия по вопросам противодействия корупции

    • {upper_case_char}PR_Resolution - Прокуратура

  • {upper_case_char}Committee_Solutions

    Подпапка: Решения

    Поля:

    • {upper_case_char}CommitteeName - название коммисии
    • {upper_case_char}Committee_SolutionsDate - дата
    • {upper_case_char}Committee_SolutionsNumber - номер
    • {upper_case_char}Committee_SolutionsSource - список документов

    Подзаголовок вида: {название коммисии} №{номер} от {дата}

  • {upper_case_char}ZS_Solutions

    Подпапка: Рассмотрения ЗС

    Внутри список {upper_case_char}Decree

    Внутри {upper_case_char}Decree:
    {upper_case_char}DecreeDate - дата
    {upper_case_char}DecreeNumber - номер
    {upper_case_char}DecreeSource - список документов

    Подзаголовок вида: Постановление ЗС №{номер} от {дата}

  • {upper_case_char}AdditionalDecree

    Подпапка: Дополнительное рассмотрение ЗС

    Внутри {upper_case_char}AdditionalDecree:
    {upper_case_char}DecreeSDate - дата
    {upper_case_char}DecreeNumber - номер
    {upper_case_char}DecreeSource - список документов
    Подзаголовок вида: Дополнительное постановление ЗС №{номер} от {дата}

  • AmendmentsTable

    Относится ко второму чтению
    Подпапка: Таблица поправок

    Внутри:
    AmendmentsTableSource. Внутри него часть пути до документа

  • Workgroup_Proceedings

    Относится ко второму чтению
    Подпапка: Заседания рабочих групп

    • Workgroup_ProceedingsDate - дата
    • Workgroup_ProceedingsNumber - номер
    • Workgroup_ProceedingsSource - документы

    Заголовок вида: Протокол РГ №{номер} от {дата}

  • LawCarryLetters && LawReturnLetter && LawRejectLetter ({письмо})

    Все относятся к законопроекту
    Подпапки соответственно: Письмо о переносе законопроекта, Письмо о возврате законопроекта, Письмо об отзыве законопроекта
    Структура почти одинаковая.

    • {письмо}Date - дата
    • {письмо}Number - номер
    • DocumentSource - документы
      Внутри BinderSource
  • Protests

    Папка: Протесты

    Внутри список протестов Protest
    У протеста есть источник ProtestSource
    Внутри ProtestSource:

    • ProtestSourceDate - дата
    • ProtestSourceNumber - номер
    • ProtestSourceSource - документы в BinderSource
  • Signification

    Папка: Обнародование
    Подпака: Подписание

    Внутри список SignificationLetter
    Внутри SignificationLetter:

    • SignificationLetterDate - дата
    • SignificationLetterNumber - номер
    • SignificationLetterSource - документы в BinderSource
  • ControlSet

    Папка будет “Контроль исполнения”

    • ControlSet
      • У него заголовок “Постановление ЗС о постановке на контроль”
      • ControlNumber - номер
      • ControlDate - Дата
      • ControlSource - внутри BinderSource
    • Далее может быть ExecutionControl
      • У него заголовок “Контроль исполнения”
      • ControlNumber - номер
      • ControlDate - дата
      • ECSource - путь к документу.
    • Далее может быть ControlFlow
      • ControlPerenosSroka.
        • PSPostanovlenie
          • ControlNumber - номер
          • ControlDate - дата
          • PSPostanovSource - путь к файлу. Имя файла будет “Постановление ЗС о переносе срока № {номер} от {дата}”
      • Далее может быть CFPostanovlenie
        • CFPostanovNumber - номер
        • CFPostanovDate - дата
        • CFPostanovSource - путь к файлу. Имя будет “Постановление ЗС о завершении № {номер} от {дата}”
  • RejectDecree

    Папка: Текст закона
    Подпапка: Постановление об отклонении №{номер} от {дата}

    Внутри:

    • RejectDecreeDate - дата
    • RejectDecreeNumber - номер
    • RejectDecreeSource - часть пути до документа
  • AdditionalMaterials

    Папка: Доп. материалы
    Заголовок: {title или Документ} №{номер} от {дата}

    Внутри список AdditionalMaterialsDocument
    Внутри AdditionalMaterialsDocument:

    • DocumentDate - дата
    • DocumentNumber - номер
    • DocumentTitle - title
    • DocumentSource - документы в BinderSource
  • LG_Agreements

    Папка: Первое чтение
    Подпапка : Согласование с органами МСУ
    Заголовок : Документ о направлении на согласование {номер} от {дата}

    Структура:

    • LG_Agreements
      • LG_Agreement (может быть много)
        • LG_AgreementDate - дата
        • LG_AgreementNumber - номер
        • LG_AgreementSource - список документов в BindingSource
  • Перекрестные ссылки

    Теги Change_by_Laws и Changed_Laws
    Change_by_Laws - законы, изменяющие данный закон
    Changed_Laws - законы изменяемые данным законом

  • Заседание комитета

    файл AgendaCommittee.xml
    1 уровень
    тег Agenda, копия из AgendaListCommittee.xml
    2 уровень

    Тег Question

    аналогично повесткам комиссий
    3 уровень

    Вложенный тег YouthCommissionDecision

    может отсутствовать, может быть несколько - как и в повестках ЗС

    Поля

    Title - text
    reading - int
    У тега есть значение в виде части пути /data/docs/12345.pdf?1234 (добавляется к http://client.zsperm.ru:2000/); где используется - пока не ясно

    Вложенный тег AttachmentSource

    может отсутствовать, может быть несколько

    Поля

    Title - text
    У тега есть значение в виде части пути /data/docs/12345.pdf?1234 (добавляется к http://client.zsperm.ru:2000/); где используется - пока не ясно

  • Заседание комиссии

    файл AgendaComission.xml
    1 уровень
    тег Agenda, копия из AgendaListCommission.xml
    2 уровень

    Тег Question

    Вопросы - идут списком

    Поля

    поле, выделенное красным, может отсутствовать в отдаче
    id - уникальный номер, int
    OrderNum - поле типа int, порядковый номер записи в списке. Как правило, в отдаче уже упорядочены по возрастанию значения, но на всякий случай лучше на клиенте упорядочивать по этому полю
    Num - поле типа int, просто номер, поле может быть пустым “”
    time - формат yyyy.MM.dd hh:mm
    QType - пока обнаружено только значение “Question”, назначение поля выясняется. Возможно, в других отдачах есть тоже тег Question, но с другим значением этого поля
    title - укороченный заголовок
    fullTitle - полный заголовок. В списке на iPad используется это значение
    reading - int
    status - пока замечен только вариант “Утвержден”.
    group - текстовое поле
    ExtId - int
    Subject - text
    dokl – text (докладчик)
    BDId - int
    HeadComm - text
    shortDesc - text
    passport - int
    passportlink - text - ссылка на html-файл с контентом. Пример: http://srvhnp-cl/Data/Passports/6061677.html . Берем часть пути, начинающуюся с Data, добавляем к адресу сервера.
    Пример результата:
    http://client.zsperm.ru:2000/Data/Passports/6061677.html
    RegNumber - text; номер законопроекта.
    sodokl - text (содокладчик)

  • Заседание комиссии

    аналогично заседанию комиссии

  • Заседание Совета МП

    аналогично заседанию комиссии МП
    + атрибуты в Question
    AgendaStatus - text
    AgendaType - text

  • Заседание комиссий МП

    файл agendayouth.xml
    1 уровнень - тег Agenda, копия из agendalistyouth.xml. Name - вставляется в заголовок.
    2 уровень

    Тег Question

    Поля - как у повесток ЗС +
    StageStart - формат yyyy-MM-ddThh:mm:ss, пример: 2014-02-15T16:09:56
    StageFinish - то же, что StageStart
    uid - text

    Вложенный тег AttachmentSource

    Поля

    Title - text
    У тега есть значение в виде части пути /data/docs/12345.pdf?1234 (добавляется к http://client.zsperm.ru:2000/); где используется - пока не ясно

    Вложенный тег Comment

    Поля

    Name - автор коммента
    В значении - текст

    Вложенный тег ZVote

    Поля

    Pro - int
    Contra - int
    Abstained- int
    DidntVote- int

  • Получение документов

    Для получения указа используется сервис
    http://client.zsperm.ru:2000/api/GovDecree?Id=
    где {id} - идентификатор документа (атрибут docid в html)
    Сервис возвращает путь до файла (добавляется к адресу сервиса)
    Также в header’е ответа возвращается номер версии и другая информацию о документе.
    Номер версии храним. Сравниваем версию скачанного документа с версией в header’e - если в header’e версия старше, то скачиваем документ снова. Т.е. аналогично с документами по повесткам.

  • Получение документов

    Для получения постановления используется сервис
    http://client.zsperm.ru:2000/api/Decree?Id=
    где {id} - идентификатор документа (атрибут docid в html)
    Сервис возвращает путь до файла (добавляется к адресу сервиса)
    Также в header’е ответа возвращается номер версии и другая информацию о документе.
    Номер версии храним. Сравниваем версию скачанного документа с версией в header’e - если в header’e версия старше, то скачиваем документ снова. Т.е. аналогично с документами по повесткам.

  • Получение документов

    Для получения отчета используется сервис
    http://client.zsperm.ru:2000/api/GetReport?Id=
    где {id} - идентификатор документа (атрибут docid в html)
    Сервис возвращает путь до файла (добавляется к адресу сервиса)
    Также в header’е ответа возвращается номер версии и другая информацию о документе.
    Номер версии храним. Сравниваем версию скачанного документа с версией в header’e - если в header’e версия старше, то скачиваем документ снова. Т.е. аналогично с документами по повесткам.

  • Получение документов

    Для получения документа используется сервис
    http://client.zsperm.ru:2000/api/GetIogvCalendar?Id=
    где {id} - идентификатор документа (атрибут docid в html)
    Сервис возвращает путь до файла (добавляется к адресу сервиса)
    Также в header’е ответа возвращается номер версии и другая информацию о документе.
    Номер версии храним. Сравниваем версию скачанного документа с версией в header’e - если в header’e версия старше, то скачиваем документ снова. Т.е. аналогично с документами по повесткам.

  • Новости xml

    1 уровень

    Тег Items
    Поля
    FIO - text
    Id - number

    2 уровень

    Тег Item
    Поля
    Id - номер, по которому далее достается контент (напр. html)
    Title - Заголовок. Обычно тут дата в формате dd.MM.yyyy, иногда + какой то тест
    Date -yyyy-MM-ddThh:mm:ss
    FileType - hmtl/pdf (text)
    Type - пусто или number
    CategoryId - number, используется для категоризации новостей
    Author - текст новости тут
    Count - number

    Категории новостей (поле CategoryId)

    • 1 - “Ежедневный мониторинг СМИ о Законодательном собрании”;
    • 2 - “Обзор информации о законодательном собрании в интернет пространстве”;
    • 10- “Еженедельный аналитической обзор СМИ по Законодательному собранию”;
    • 3 - “СМИ обо мне”;
    • 4 - “Новости Приволжского федерального округа”;
    • 5- “ЕР”;
    • 6 - “ЛДПР”;
    • 7 - “СР”;
    • 8 - “КПРФ”;

    Список новостей

    Каждый Item - это лента новостей
    Лента выдается по ссылке
    http://client.zsperm.ru:2000/Data/News/ID.html.zip
    где ID - поле Id объекта Item

  • Контакты - XML

    Корневой элемент - <AddressBook>
    Внутри - иерархия элементов двух типов -
    d - департамент
    u - человек
    Элемент d может содержать в себе другие d или u
    Элемент u - конечный

    Структура элементов

    Элемент d

    Поля
    dn - text, название департамента
    io - bool, может отсутсвовать; назначение не ясно, везде true или ничего

    Элемент u

    Поля
    некоторые поля могут быть пустыми!
    ui - text, id-шник
    ll - text, email
    ur - int, номер кабинета
    n - text, ФИО
    ut - text, должность
    up - text, телефон(ы), мб несколько через запятую
    ua - text, адрес
    uc - см. название в iPad версии; ~родительский департамент верхнего уровня; в UI наверно не будет
    ma - text, снова email
    im - bool, назначение неясно, везде true или ничего

  • Проверка версии документа

    /api/Document?Id="doc_id"
    В ответе - путь до документа

    Header’ы:

    Name:value
    Version:intvalue
    Path:path
    Title:title

  • Получение документов для повестки

    Получение документов для Повесток такое же как и для паспортов, если есть поле passport.

  • Прикрепленные документы

    К повестке могут быть прикреплены документы. Они будут в лежать в agenda.xml
    Тег AttachmentSource

    Внутри AttachmentSource:

    • Title - имя документа
      Между тегов - часть пути до файла

    Тег YouthCommissionDecision

    Внутри YouthCommissionDecision:

    • Title - имя документа
      Между тегов - часть пути до файла
  • Получение документов

    Для документов из повесток используется сервис
    http://client.zsperm.ru:2000/api/Document?Id={id}
    где {id} - идентификатор документа (атрибут docid в html)
    Сервис возвращает путь до файла (добавляется к адресу сервиса)
    Также в header’е ответа возвращается номер версии и другая информацию о документе, например, для документа с Id=284 возвращается:
    Version=6
    DocumentId=284
    Path=/data/docs/284.pdf
    UID=d846c58d-415b-45ec-9da4-67ceeb1ec309

    Номер версии храним. Сравниваем версию скачанного документа с версией в header’e - если в header’e версия старше, то скачиваем документ снова

        • Структура {upper_case_char}{smtng}_Resolution

          • {upper_case_char}ResolutionDate - дата
          • {upper_case_char}ResolutionNumber - номер
          • {upper_case_char}ResolutionSource - список BinderSource

          Внутри BinderSource

          Свойства BinderSource:

          • Name - название

          Внутри BinderSource - часть пути к документу

          Заголовок вида: УАЗД № {number} от {date}

                      • Change_by_Laws

                        Внутри список ChangingLaw
                        Внутри ChangingLaw:

                        • ChangingLawTitle - имя
                        • ChangingLawSource - ссылка на html с паспортом. Отсюда нужен только номер.
                      • Change_by_Laws

                        Внутри список ChangedLaw
                        Внутри ChangedLaw:

                        • ChangedLawTitle - имя
                        • ChangedLawSource - ссылка на html с паспортом. Отсюда нужен только номер.
                      • HTML

                        Типовая html без блока с заголовком
                        часть 2 (контент) - такая же, как в Повестках ЗС

                      • Получение документов

                        См. Получение документов в Повестках ЗС

                      • Получение документов

                        См. Получение документов в Повестках ЗС и Паспортах

                      • HTML

                        Типовая html без блока с заголовком
                        часть 2 (контент) - такая же, как в Повестках ЗС

                      • Получение документов

                        См. Получение документов в Повестках ЗС

                      • HTML

                        аналогично остальным повесткам

                        Голосование

                        см. в повестках комиссий МП

                      • HTML

                        аналогично остальным повесткам

                        Голосование

                        POST запрос на api/YouthVote?QuestionId=%d
                        QuestionId - ид вопроса
                        id вопроса - это BDId
                        В поле content - строка с результатом голосования “Pro”, “Contra” или “Abstained”

                        В ответ приходит:
                        “ok” - голос успешно отправлен
                        “vote type error” - установлено очное голосование
                        “already voted” - уже голосовали по данному вопросу
                        “user error” - пользователь не может принять участие в голосовании
                        “agenda status error” - “Повестка не в стадии голосования!”

                        Отправка комментария

                        POST на api/YouthComment?QuestionId=[id вопроса]
                        id вопроса - это BDId
                        В заголовке content - текст, аналогично голосованию

                        Ответы - “ok” - ок
                        “user error” - юзер не может комментить
                        “agenda status error” - повестка не в статусе обсуждения
                        “vote type error” - только очное обсуждение
                        “empty text” - если пустой текст

                        Получение комментов - из xml/html

                      • Лента новостей HTML

                        Состоит из повторяющихся блоков table
                        Пример:

                        <table cellspacing="0px" cellpadding="0px" class="NewsLenta newsInternet" xmlns="">
                              <tr>
                                <td>
                                  <div class="imgInternet"></div>
                                </td>
                                <td class="NewsTitle">Москва. Депутаты-коммунисты защищают жилищные права работников издательства «Прогресс»</td>
                              </tr>
                              <tr>
                                <td colspan="2" class="NewsSource">КПРФ.ру - Главные новости</td>
                              </tr>
                              <tr>
                                <td colspan="2" class="NewsBody">
                                  <div class="newsBodyCollapse">
                                    <img src="http://cs1.kprf.ru/images/newsstory_illustrations/rss/1c0ef3_dsc00714.jpg" />
                                    <br />
                                    <br />
                                    <p>Вечером 26 марта депутат Мосгордумы фракции КПРФ Владимир Алексеевич Святошенко встретился с жителями дома 30, корпус 4 по улице Академика Анохина района Тропарево-Никулино. Суть проблемы в следующем. Издательство &amp;laquo;Прогресс&amp;raquo;, чьим правопреемником является ОАО &amp;laquo;Издательская группа ...</p>
                                    <a style="margin-top: 4px; display: block;" href="http://kprf.ru/dep/reg/129746.html" target="_blank">Читать дальше &amp;rarr;</a>
                                  </div>
                                  <div class="detailNewsShort" title="Развернуть" onclick="showNewsAll(this, true)">
                                    Развернуть
                                    <img src="/" alt="" height="50px" width="15px" style="visibility:hidden" /></div>
                                  <div class="detailNews" title="Свернуть" onclick="showNewsAll(this, false)">
                                    Свернуть
                                    <img src="/" alt="" height="50px" width="15px" style="visibility:hidden" /></div>
                                  <a href="http://kprf.ru/dep/reg/129746.html">Подробнее
                                    </a>
                                  <img src="/" alt="" height="50px" width="1px" style="visibility:hidden" />
                                </td>
                              </tr>
                            </table>

                        Комментарии

                        Заголовок новости - текст внутри <td class="NewsTitle">
                        Источник новости - текст внутри <td colspan="2" class="NewsSource">
                        Краткий текст новости - текст внутри <div class="newsBodyCollapse">
                        Может отсутствовать
                        Может быть выделен тегами <p></p>
                        Может присуствовать ссылка на картинку
                        <img src="http://cs1.kprf.ru/images/newsstory_illustrations/rss/1c0ef3_dsc00714.jpg" />
                        (показываем ли в аппе зависит от диза
                        Полный текст новости - это ссылка, достать можно 2-мя способами:

                        1. <a style="margin-top: 4px; display: block;" href="http://kprf.ru/dep/reg/129746.html" target="_blank">Читать дальше &amp;rarr;</a> - идет сразу после краткого текста
                        2. <a href="http://kprf.ru/dep/reg/129746.html"> Подробнее </a>

                        {"cards":[{"_id":"3ee7d3bd3ac8ddca2500000c","treeId":"2849d5f19cd314c5d1000001","seq":6279928,"position":0.125,"parentId":null,"content":"# Сервер\nhttp://client.zsperm.ru:2000/\nhttp://client.zsperm.ru:2001/ - запасной вариант, использовать если не удается подключиться по 2000 порту"},{"_id":"403b9a19c18503e377000047","treeId":"2849d5f19cd314c5d1000001","seq":1520411,"position":0.25,"parentId":null,"content":"## Авторизация\nавторизационные данные (логин, пароль) передаются при каждом обращении к серверу\n\nhttp://client.zsperm.ru:2000/api/Account\nВозвращает фото юзера + в Header записывает DisplayName и другую информацию.\n\nАккаунты для тестов:\nлогины : TestUser01 / TestUser02 / TestUser03 ...\nпароль: testuser"},{"_id":"3ecdc207b88d1407b9000021","treeId":"2849d5f19cd314c5d1000001","seq":8161906,"position":1,"parentId":null,"content":"## Повестки ЗС\n### Список заседаний \nhttp://client.zsperm.ru:2000/Data/Agendas/AgendaList.xml\n#### Поля \nId - int\nName=\"Заседание 20.03.2014\" - название\nDate=\"2014.03.20\" - дата в формате `yyyy.MM.dd`\nStatus=\"Проект\" - статус\nPath=\"/Data/Agendas/171/\" - часть пути до xml с заседанием\nдобавляется к адресу сервера\nв конец - agenda.xml\n*Пример*: http://client.zsperm.ru:2000/Data/Agendas/306/agenda.xml\n\n\n### Новый API\n#### Список повесток\nhttps://client.zsperm.ru:2005/api/agendalist\nВозвращает кусок ссылки вида */api/AgendaZsList/1*\nПо ней возвращается zip файл со списком повесток\n\n#### Список вопросов\nhttps://client.zsperm.ru:2005/api/agendaissueslist?id={id}\nid - id повестки\nВозвращается кусок ссылки вида */api/AgendaIssuesZsList/200052*\nПо ней возвращается zip файл со списком вопросов\n\n** Текст в ячейках - Name **\n![](http://cs618731.vk.me/v618731469/11dc3/W3WL0wnQOzg.jpg)"},{"_id":"3ecdc2d7b88d1407b9000022","treeId":"2849d5f19cd314c5d1000001","seq":426952,"position":1,"parentId":"3ecdc207b88d1407b9000021","content":"## Заседание ЗС\nфайл *agenda.xml*\n**1 уровнень** - тег Agenda, копия из *agendalist.xml* (поля id, name, status, path). Name - вставляется в заголовок.\n**2 уровень**\n### Тег Question\nВопросы - идут списком\n#### Поля\n`поле, выделенное красным, может отсутствовать в отдаче`\n**id** - уникальный номер, int\n**OrderNum** - поле типа int, порядковый номер записи в списке. Как правило, в отдаче уже упорядочены по возрастанию значения, но на всякий случай лучше на клиенте упорядочивать по этому полю\n**Num** - поле типа int, просто номер, поле может быть пустым \"\"\n**QType** - пока обнаружено только значение \"Question\", назначение поля выясняется. Возможно, в других отдачах есть тоже тег Question, но с другим значением этого поля\n**title** - укороченный заголовок\n**fullTitle** - полный заголовок. В списке на iPad используется это значение\n**reading** - int\n**status** - возможны варианты \"Утвержден\", \"Зарегистрирован\", \"Включен в проект\", \"Перенесен\". Используется для распределения по sections (Утв. , Все, Доп). В Доп. пока не ясно что, везде 0.\n**group** - текстовое поле\n**ExtId** - int\n`BDId` - int\n`date` - *dd.MM.yyyy h:mm:ss*\n`shortDesc` - text\n `passport` - int\nЕсли поле есть, то html контент можно получить аналогичным образом, как в Паспортах закона: \n*адрес сервера + /Data/Passports/ + **passport** + .html. *\n**!!** При этом в html не будет 1 части - заголовок. 2 часть (контент) - такая же.\n `passportlink ` - text\n`RegNumber` - text; номер законопроекта. \n`HeadComm` - text\n`Subject` - text\n`dokl` – text (докладчик)\n`sodokl` - text (содокладчик)\n**QuestionLink** - ссылка на html-файл с контентом. Забирать аутентифицированным http get запросом. Аутентификация базовая (username + password). Есть ошибка в синтаксисе запроса при перечислении параметров: после поля siteUrl стоит ? вместо &. \n**3 уровень**\n### Вложенный тег YouthCommissionDecision\n`может отсутствовать, может быть несколько`\n#### Поля\n**Title** - text\n**reading** - int\nУ теги есть значение в виде части пути */data/docs/12345.pdf?1234* (добавляется к http://client.zsperm.ru:2000/); где используется - пока не ясно\n\n** Текст - fullTitle, номер - Num (Если нет, то пусто)**\nРазделение по Утв/Доп : Если у вопроса нет номера, то он Доп\n![](http://cs618731.vk.me/v618731469/11dba/gxlUf7h2zoU.jpg)"},{"_id":"46844ff55319073a81000050","treeId":"2849d5f19cd314c5d1000001","seq":359953,"position":0.5,"parentId":"3ecdc2d7b88d1407b9000022","content":"##Получение документов для повестки\n**Получение документов для Повесток такое же как и для паспортов, если есть поле passport.**\n"},{"_id":"4684547d5319073a81000051","treeId":"2849d5f19cd314c5d1000001","seq":426957,"position":0.75,"parentId":"3ecdc2d7b88d1407b9000022","content":"##Прикрепленные документы\n\nК повестке могут быть прикреплены документы. Они будут в лежать в agenda.xml\n**Тег AttachmentSource**\n\nВнутри AttachmentSource:\n * Title - имя документа\nМежду тегов - часть пути до файла\n\n**Тег YouthCommissionDecision** \n\nВнутри YouthCommissionDecision:\n * Title - имя документа\nМежду тегов - часть пути до файла"},{"_id":"3f4180ad6ae831133500001e","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":3,"parentId":"3ecdc2d7b88d1407b9000022","content":"## Получение документов\nДля документов из повесток используется сервис\n** http://client.zsperm.ru:2000/api/Document?Id={id}**\nгде *{id}* - идентификатор документа (атрибут *docid* в html)\nСервис возвращает путь до файла (добавляется к адресу сервиса)\nТакже в header'е ответа возвращается номер версии и другая информацию о документе, например, для документа с *Id=284* возвращается:\n*Version=6\nDocumentId=284\nPath=/data/docs/284.pdf\nUID=d846c58d-415b-45ec-9da4-67ceeb1ec309*\n\nНомер версии храним. Сравниваем версию скачанного документа с версией в header'e - если в header'e версия старше, то скачиваем документ снова"},{"_id":"3ecdc50bb88d1407b9000023","treeId":"2849d5f19cd314c5d1000001","seq":8482054,"position":1.375,"parentId":null,"content":"## Паспорт закона\n### Список паспортов \nhttp://client.zsperm.ru:2000/Data/PassportsList.xml\n\n#### Поля\nRegDate - дата в формате `yyyy.MM.dd`\nRegNumber - text\nType - text\nName - text - название закона\nSubject - text\n**Id** - int\n\n*Прямой переход на xml-страницу с контентом:*\nадрес сервера + /Data/Passports/+ **Id** + .xml\n\n*Пример:*\nhttp://client.zsperm.ru:2000/Data/Passports/6206170.xml\n\n** Тескт ячеек таблицы - название закона ** \n![](http://cs618731.vk.me/v618731469/11de7/LewewBqcGRs.jpg)\n\nНовый способ:\nhttps://client.zsperm.ru:2005/api/passport/6206170"},{"_id":"3f294191629e46acd400001b","treeId":"2849d5f19cd314c5d1000001","seq":693839,"position":1,"parentId":"3ecdc50bb88d1407b9000023","content":"# Структура xml\n## Поля\n(Почти все это есть в первом xml файле):\n\n* item_id - номер (идентификатор) закона\n* Name - Название\n* Subject - Субъект права\n* Head_Comittee - головной коммитет\n\n** Все даты в xml в формате YYYY-MM-ddThh:mm:ss+hh:mm**\n(пример 2014-04-17T00:00:00+06:00)\n\n** Под заголовком \"Документы\" - разделы документов\nКнопка \"Звезда\"-добавление/удаление из избранного. Избранные локальные\nПравая кнопка - переход на экран аннотаций к паспорту\n**\n![](http://cs618731.vk.me/v618731469/11dde/3dMaBMhw2qk.jpg)"},{"_id":"46788f125319073a8100004e","treeId":"2849d5f19cd314c5d1000001","seq":521571,"position":3,"parentId":"3f294191629e46acd400001b","content":"###BinderSource\nВнутри BinderSource\n\nСвойства BinderSource:\n* Name - название\n\nВнутри BinderSource - часть пути к документу\n\n** В этой части пути к документу число это id документа**"},{"_id":"472f3943e2f800a5aa00004d","treeId":"2849d5f19cd314c5d1000001","seq":1371563,"position":4,"parentId":"3f294191629e46acd400001b","content":"## Аннотации\n\n### GET\nПример: http://client.zsperm.ru:2000/Data/Personal/PermKrai/Passports/6238627/CustomDocList6238627.xml\n\nСсылка для получения списка аннотаций к паспорту имеет вид:\nhttp://client.zsperm.ru:2000/Data/Personal/{login}/Passports/{passId}/CustomDocList{passId}.xml\n\nВнутри xml:\n* PassportExtraDocs - заголовочный тег. Внутри passId паспорта\n* * Head - блок. Внутри blockId блока в html\n* * * Doc - документ. Внутри docId и имя файла\n\nПолучение текста аннотации:\nhttp://client.zsperm.ru:2000/Data/Personal/*username*/Passports/*passid*/*annotationid*.txt\n\n### POST\nhttp://client.zsperm.ru:2000/api/PersonalPassportDocument?passportId=6238627&blockId=1&fileName=text.txt&docToUpdate= 551\n\nPOST запрос имеет вид:\nhttp://client.zsperm.ru:2000/api/PersonalPassportDocument?passportId={passId}&blockId={blockId}&fileName={fileName}&docToUpdate={docId}\n** Файл должен лежать в теле запроса **\n\n** Если нужно создать файл, то нужно отправить запрос без docToUpdate. Создастся новый файл с уникальным id **\n\nЗапрос на удаление файла: \nhttp://client.zsperm.ru:2000/api/PersonalPassportDocumentDelete?id={docId}\n\nПохоже что индексация сквозная. Поэтому для удаления нужен только docId\n"},{"_id":"465f585f5319073a81000032","treeId":"2849d5f19cd314c5d1000001","seq":693636,"position":2,"parentId":"3ecdc50bb88d1407b9000023","content":"## Registration\n\n**Папка: законопроект\nПодпапка: Проект закона {номер} от {дата}**\n\n* RegistrationDate - дата регистрации\n* RegistrationNumber - номер регистрации\n* Document_Source - список документов (см. карточку справа)\n"},{"_id":"4667c82e5319073a81000035","treeId":"2849d5f19cd314c5d1000001","seq":693639,"position":3,"parentId":"3ecdc50bb88d1407b9000023","content":"## Law_Registrtion\nПапка : **Текст закона**\n\n* Law_RegistrtionDate - дата\n* Law_RegistrtionNumber - номер\n* Law_RegistrtionSource - документ (вроде единственный всегда)(см. справа)\n* Law_RegistrtionDoc_ID - принимает значение **-1** в случае если статус = законопроект, иначе - закон"},{"_id":"466889805319073a81000037","treeId":"2849d5f19cd314c5d1000001","seq":693841,"position":4,"parentId":"3ecdc50bb88d1407b9000023","content":"## {Number}_Reading\nЧтения содержат в себе похожие структуры, так что опишу их в общем\n\n{Number} - одно из списка [First , Second, Third]\n\n\n![](http://cs613422.vk.me/v613422469/1eb99/Ubc6ftYCqYM.jpg)\n**Подразделы начинаются с первой буквы чтения (F, S, T)**\n"},{"_id":"466892cd5319073a81000039","treeId":"2849d5f19cd314c5d1000001","seq":693642,"position":5,"parentId":"3ecdc50bb88d1407b9000023","content":"### {upper_case_char}Resolution\nПодпапка : Заключения\n\nЗаключения бывают 6 видов :\n* {upper_case_char}UAZD_Resolution - УАЗД\n\n* {upper_case_char}KSP_Resolution - КСП\n\n* {upper_case_char}GPU_Resolution - ГПУ\n* {upper_case_char}AO_Resolution - Губернатор\n\n* {upper_case_char}EZKpK_Resolution - Коммиссия по вопросам противодействия корупции\n\n* {upper_case_char}PR_Resolution - Прокуратура"},{"_id":"4668a53c5319073a8100003b","treeId":"2849d5f19cd314c5d1000001","seq":425913,"position":2,"parentId":"466892cd5319073a81000039","content":"####Структура {upper_case_char}{smtng}_Resolution\n* {upper_case_char}ResolutionDate - дата\n* {upper_case_char}ResolutionNumber - номер\n* {upper_case_char}ResolutionSource - список BinderSource\n\nВнутри BinderSource\n\nСвойства BinderSource:\n* Name - название\n\nВнутри BinderSource - часть пути к документу\n\n**Заголовок вида: УАЗД № {number} от {date}**"},{"_id":"46754ad85319073a8100003c","treeId":"2849d5f19cd314c5d1000001","seq":693643,"position":6,"parentId":"3ecdc50bb88d1407b9000023","content":"### {upper_case_char}Committee_Solutions\nПодпапка: Решения\n\nПоля:\n* {upper_case_char}CommitteeName - название коммисии\n* {upper_case_char}Committee_SolutionsDate - дата\n* {upper_case_char}Committee_SolutionsNumber - номер\n* {upper_case_char}Committee_SolutionsSource - список документов\n\n**Подзаголовок вида: {название коммисии} №{номер} от {дата}**"},{"_id":"4675e57c5319073a8100003f","treeId":"2849d5f19cd314c5d1000001","seq":693646,"position":6.5,"parentId":"3ecdc50bb88d1407b9000023","content":"### {upper_case_char}ZS_Solutions\nПодпапка: Рассмотрения ЗС\n\nВнутри список {upper_case_char}Decree\n\nВнутри {upper_case_char}Decree:\n{upper_case_char}DecreeDate - дата\n{upper_case_char}DecreeNumber - номер\n{upper_case_char}DecreeSource - список документов\n\nПодзаголовок вида: Постановление ЗС №{номер} от {дата}\n"},{"_id":"48fc7a507b9b2fa884000053","treeId":"2849d5f19cd314c5d1000001","seq":693648,"position":6.875,"parentId":"3ecdc50bb88d1407b9000023","content":"### {upper_case_char}AdditionalDecree\n Подпапка: Дополнительное рассмотрение ЗС\n\nВнутри {upper_case_char}AdditionalDecree:\n{upper_case_char}DecreeSDate - дата\n{upper_case_char}DecreeNumber - номер\n{upper_case_char}DecreeSource - список документов\nПодзаголовок вида: Дополнительное постановление ЗС №{номер} от {дата}"},{"_id":"46774ef35319073a81000043","treeId":"2849d5f19cd314c5d1000001","seq":693649,"position":7.25,"parentId":"3ecdc50bb88d1407b9000023","content":"##AmendmentsTable\n**Относится ко второму чтению**\nПодпапка: Таблица поправок\n\nВнутри:\nAmendmentsTableSource. Внутри него часть пути до документа"},{"_id":"46760ffd5319073a81000041","treeId":"2849d5f19cd314c5d1000001","seq":693650,"position":8,"parentId":"3ecdc50bb88d1407b9000023","content":"##Workgroup_Proceedings\n**Относится ко второму чтению**\nПодпапка: Заседания рабочих групп\n\n* Workgroup_ProceedingsDate - дата\n* Workgroup_ProceedingsNumber - номер\n* Workgroup_ProceedingsSource - документы\n\nЗаголовок вида: Протокол РГ №{номер} от {дата}"},{"_id":"4677565c5319073a81000044","treeId":"2849d5f19cd314c5d1000001","seq":693654,"position":8.5,"parentId":"3ecdc50bb88d1407b9000023","content":"##LawCarryLetters && LawReturnLetter && LawRejectLetter ({письмо}) \nВсе относятся к законопроекту\nПодпапки соответственно: **Письмо о переносе законопроекта, Письмо о возврате законопроекта, Письмо об отзыве законопроекта**\nСтруктура почти одинаковая. \n\n* {письмо}Date - дата\n* {письмо}Number - номер\n* DocumentSource - документы\nВнутри BinderSource"},{"_id":"4678680a5319073a81000047","treeId":"2849d5f19cd314c5d1000001","seq":693656,"position":9.25,"parentId":"3ecdc50bb88d1407b9000023","content":"##Protests\nПапка: Протесты\n\nВнутри список протестов Protest\nУ протеста есть источник ProtestSource\nВнутри ProtestSource:\n* ProtestSourceDate - дата\n* ProtestSourceNumber - номер\n* ProtestSourceSource - документы в BinderSource"},{"_id":"46786f835319073a81000049","treeId":"2849d5f19cd314c5d1000001","seq":693658,"position":11,"parentId":"3ecdc50bb88d1407b9000023","content":"## Signification\nПапка: Обнародование\nПодпака: Подписание \n\nВнутри список SignificationLetter\nВнутри SignificationLetter:\n* SignificationLetterDate - дата\n* SignificationLetterNumber - номер\n* SignificationLetterSource - документы в BinderSource"},{"_id":"48fcefa47b9b2fa884000054","treeId":"2849d5f19cd314c5d1000001","seq":830018,"position":11.5,"parentId":"3ecdc50bb88d1407b9000023","content":"##ControlSet \nПапка будет \"Контроль исполнения\"\n\n* ControlSet\n* * У него заголовок \"Постановление ЗС о постановке на контроль\"\n* * ControlNumber - номер\n* * ControlDate - Дата\n* * ControlSource - внутри BinderSource\n* Далее может быть ExecutionControl\n* * У него заголовок \"Контроль исполнения\"\n* * ControlNumber - номер\n* * ControlDate - дата\n* * ECSource - путь к документу. \n* Далее может быть ControlFlow\n* * ControlPerenosSroka. \n* * * PSPostanovlenie\n* * * * ControlNumber - номер\n* * * * ControlDate - дата\n* * * * PSPostanovSource - путь к файлу. Имя файла будет \"Постановление ЗС о переносе срока № {номер} от {дата}\"\n* * Далее может быть CFPostanovlenie\n* * * CFPostanovNumber - номер\n* * * CFPostanovDate - дата\n* * * CFPostanovSource - путь к файлу. Имя будет \"Постановление ЗС о завершении № {номер} от {дата}\""},{"_id":"46787c695319073a8100004b","treeId":"2849d5f19cd314c5d1000001","seq":693663,"position":12,"parentId":"3ecdc50bb88d1407b9000023","content":"##RejectDecree\nПапка: Текст закона\nПодпапка: Постановление об отклонении №{номер} от {дата}\n\nВнутри: \n* RejectDecreeDate - дата\n* RejectDecreeNumber - номер\n* RejectDecreeSource - часть пути до документа"},{"_id":"467885365319073a8100004c","treeId":"2849d5f19cd314c5d1000001","seq":693665,"position":13,"parentId":"3ecdc50bb88d1407b9000023","content":"##AdditionalMaterials\nПапка: Доп. материалы\nЗаголовок: {title или Документ} №{номер} от {дата}\n\nВнутри список AdditionalMaterialsDocument\nВнутри AdditionalMaterialsDocument:\n* DocumentDate - дата\n* DocumentNumber - номер\n* DocumentTitle - title\n* DocumentSource - документы в BinderSource"},{"_id":"4940c2964910d271d6000056","treeId":"2849d5f19cd314c5d1000001","seq":693667,"position":13.5,"parentId":"3ecdc50bb88d1407b9000023","content":"## LG_Agreements\nПапка: Первое чтение\nПодпапка : Согласование с органами МСУ\nЗаголовок : Документ о направлении на согласование {номер} от {дата}\n\nСтруктура: \n* LG_Agreements\n* * LG_Agreement (может быть много)\n* * * LG_AgreementDate - дата\n* * * LG_AgreementNumber - номер\n* * * LG_AgreementSource - список документов в BindingSource"},{"_id":"47a52e9af286a2ee3400004e","treeId":"2849d5f19cd314c5d1000001","seq":659146,"position":14,"parentId":"3ecdc50bb88d1407b9000023","content":"## Перекрестные ссылки\nТеги Change_by_Laws и Changed_Laws \nChange_by_Laws - законы, изменяющие данный закон\nChanged_Laws - законы изменяемые данным законом\n"},{"_id":"47a55af6f286a2ee3400004f","treeId":"2849d5f19cd314c5d1000001","seq":487413,"position":1,"parentId":"47a52e9af286a2ee3400004e","content":"### Change_by_Laws\nВнутри список ChangingLaw\nВнутри ChangingLaw:\n* ChangingLawTitle - имя\n* ChangingLawSource - ссылка на html с паспортом. Отсюда нужен только номер."},{"_id":"47a55bedf286a2ee34000050","treeId":"2849d5f19cd314c5d1000001","seq":487414,"position":2,"parentId":"47a52e9af286a2ee3400004e","content":"###Change_by_Laws\nВнутри список ChangedLaw\nВнутри ChangedLaw:\n* ChangedLawTitle - имя\n* ChangedLawSource - ссылка на html с паспортом. Отсюда нужен только номер."},{"_id":"3f2808a5629e46acd4000011","treeId":"2849d5f19cd314c5d1000001","seq":1699963,"position":1.75,"parentId":null,"content":"## Повестки комитетов\n### Список заседаний\nhttp://client.zsperm.ru:2000/Data/AgendasCommittee/AgendaListCommittee.xml\n\n#### Поля\nаналогично с повестками комиссий\n\nПример ссылки для перехода на xml с вопросами\nhttp://client.zsperm.ru:2000/Data/AgendasCommittee/161/AgendaCommittee.xml\n\n**В коммитетах, комиссиях, фракциях, комиссиях МП и совете МП идентичные xml**\n\n** Все также как и в обычных повестках, но сначала нужно делать группировку по значению AgendaSubType **\n![](http://cs618731.vk.me/v618731469/11db1/GRd9CFUa1FY.jpg)\n"},{"_id":"3f297695629e46acd400001d","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":1,"parentId":"3f2808a5629e46acd4000011","content":"## Заседание комитета\nфайл *AgendaCommittee.xml*\n**1 уровень ** \nтег Agenda, копия из *AgendaListCommittee.xml*\n**2 уровень ** \n### Тег Question \nаналогично повесткам комиссий\n**3 уровень**\n### Вложенный тег YouthCommissionDecision\n`может отсутствовать, может быть несколько` - как и в повестках ЗС\n#### Поля\n**Title** - text\n**reading** - int\nУ тега есть значение в виде части пути */data/docs/12345.pdf?1234* (добавляется к http://client.zsperm.ru:2000/); где используется - пока не ясно\n### Вложенный тег AttachmentSource\n`может отсутствовать, может быть несколько`\n#### Поля\n**Title** - text\nУ тега есть значение в виде части пути */data/docs/12345.pdf?1234* (добавляется к http://client.zsperm.ru:2000/); где используется - пока не ясно"},{"_id":"3f298211629e46acd400001e","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":1,"parentId":"3f297695629e46acd400001d","content":"### HTML\nТиповая html без блока с заголовком\nчасть 2 (контент) - такая же, как в Повестках ЗС"},{"_id":"3f418e076ae8311335000021","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":2,"parentId":"3f297695629e46acd400001d","content":"## Получение документов\nСм. Получение документов в Повестках ЗС"},{"_id":"3f28067e629e46acd4000010","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":2.5,"parentId":null,"content":"## Повестки комиссий\n### Список заседаний\nhttp://client.zsperm.ru:2000/Data/AgendasCommission/AgendaListCommission.xml\n\n#### Поля \nId - int\nName - text (название)\nDate - дата в формате `dd.MM.yyyy`\nStatus - text - статус\nAgendaSubType - text - Название комиссии\n*Надо просмотреть все AgendaSubType и составить список комиссий (пока их 2). Внутри - заседания конкретной комиссии*\nPath=”/Data/AgendasCommission/62/“ - часть пути до xml добавляется к адресу сервера\nв конец - AgendaCommission.xml\n*Пример*: http://client.zsperm.ru:2000/Data/AgendasCommission/62/AgendaCommission.xml"},{"_id":"3f28cb5b629e46acd4000018","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":1,"parentId":"3f28067e629e46acd4000010","content":"## Заседание комиссии\nфайл *AgendaComission.xml*\n**1 уровень ** \nтег Agenda, копия из *AgendaListCommission.xml*\n**2 уровень ** \n### Тег Question\nВопросы - идут списком\n#### Поля\n`поле, выделенное красным, может отсутствовать в отдаче`\n**id** - уникальный номер, int\n**OrderNum** - поле типа int, порядковый номер записи в списке. Как правило, в отдаче уже упорядочены по возрастанию значения, но на всякий случай лучше на клиенте упорядочивать по этому полю\n**Num** - поле типа int, просто номер, поле может быть пустым \"\"\n**time** - формат `yyyy.MM.dd hh:mm`\n**QType** - пока обнаружено только значение \"Question\", назначение поля выясняется. Возможно, в других отдачах есть тоже тег Question, но с другим значением этого поля\n**title** - укороченный заголовок\n**fullTitle** - полный заголовок. В списке на iPad используется это значение\n**reading** - int\n**status** - пока замечен только вариант \"Утвержден\".\n`group` - текстовое поле\n`ExtId` - int\n`Subject` - text\n`dokl` – text (докладчик)\n`BDId` - int\n`HeadComm` - text\n`shortDesc` - text\n `passport` - int\n `passportlink ` - text - ссылка на html-файл с контентом. *Пример: http://srvhnp-cl/Data/Passports/6061677.html* . Берем часть пути, начинающуюся с *Data*, добавляем к адресу сервера. \n*Пример результата:*\nhttp://client.zsperm.ru:2000/Data/Passports/6061677.html\n`RegNumber` - text; номер законопроекта. \n`sodokl` - text (содокладчик)"},{"_id":"3f418dd86ae8311335000020","treeId":"2849d5f19cd314c5d1000001","seq":378154,"position":3,"parentId":"3f28cb5b629e46acd4000018","content":"## Получение документов\nСм. Получение документов в Повестках ЗС и Паспортах\n"},{"_id":"3f280952629e46acd4000012","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":2.875,"parentId":null,"content":"## Повестки фракций\n### Список заседаний\nhttp://client.zsperm.ru:2000/Data/AgendasFraction/AgendaListFraction.xml\n\n#### Поля\nаналогично с повестками комиссий\n\nПример ссылки для перехода на xml с повестками\nhttp://client.zsperm.ru:2000/Data/AgendasFraction/168/AgendaFraction.xml"},{"_id":"3f2989f2629e46acd400001f","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":1,"parentId":"3f280952629e46acd4000012","content":"## Заседание комиссии\nаналогично заседанию комиссии"},{"_id":"3f29931b629e46acd4000020","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":1,"parentId":"3f2989f2629e46acd400001f","content":"### HTML\nТиповая html без блока с заголовком\nчасть 2 (контент) - такая же, как в Повестках ЗС"},{"_id":"3f418e496ae8311335000022","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":2,"parentId":"3f2989f2629e46acd400001f","content":"## Получение документов\nСм. Получение документов в Повестках ЗС"},{"_id":"3f280df9629e46acd4000014","treeId":"2849d5f19cd314c5d1000001","seq":802271,"position":2.90625,"parentId":null,"content":"## Повестки Совета Молодежного Парламента\n### Список повесток\nhttp://client.zsperm.ru:2000/Data/AgendasYouthCouncil/AgendaListYouthCouncil.xml\n\nПример ссылки для перехода на xml с повестками\nhttp://client.zsperm.ru:2000/Data/AgendasYouthCouncil/109/agendayouthcouncil.xml"},{"_id":"3f4ce937d94b544cdb000029","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":1,"parentId":"3f280df9629e46acd4000014","content":"## Заседание Совета МП\nаналогично заседанию комиссии МП\n\\+ атрибуты в Question\n**AgendaStatus** - text\n**AgendaType** - text"},{"_id":"40b081cec18503e37700004b","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":1,"parentId":"3f4ce937d94b544cdb000029","content":"###HTML\nаналогично остальным повесткам\n\n###Голосование\nсм. в повестках комиссий МП"},{"_id":"3f280c39629e46acd4000013","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":2.9375,"parentId":null,"content":"## Повестки комиссий Молодежного Парламента\n### Список повесток\nhttp://client.zsperm.ru:2000/Data/AgendasYouth/AgendaListYouth.xml\n\nПример ссылки для перехода на xml с повестками\nhttp://client.zsperm.ru:2000/Data/AgendasYouth/163/agendayouth.xml"},{"_id":"3f4cd69dd94b544cdb000028","treeId":"2849d5f19cd314c5d1000001","seq":425612,"position":1,"parentId":"3f280c39629e46acd4000013","content":"## Заседание комиссий МП\nфайл *agendayouth.xml*\n**1 уровнень** - тег Agenda, копия из *agendalistyouth.xml*. Name - вставляется в заголовок.\n**2 уровень**\n### Тег Question\nПоля - как у повесток ЗС +\n**StageStart** - формат `yyyy-MM-ddThh:mm:ss`, пример: *2014-02-15T16:09:56*\n**StageFinish** - то же, что *StageStart*\n**uid** - text\n### Вложенный тег AttachmentSource\n#### Поля\n**Title** - text\nУ тега есть значение в виде части пути */data/docs/12345.pdf?1234* (добавляется к http://client.zsperm.ru:2000/); где используется - пока не ясно\n### Вложенный тег Comment\n#### Поля\n**Name** - автор коммента\nВ значении - текст\n![](http://cs618731.vk.me/v618731469/11d2c/zcsWj95Lj7w.jpg)\n\n### Вложенный тег ZVote\n#### Поля\n**Pro** - int\n**Contra** - int\n**Abstained**- int\n**DidntVote**- int\n![](http://cs618731.vk.me/v618731469/11d23/PlL9WIibvjA.jpg)"},{"_id":"40b080bec18503e37700004a","treeId":"2849d5f19cd314c5d1000001","seq":2011534,"position":1,"parentId":"3f4cd69dd94b544cdb000028","content":"###HTML\nаналогично остальным повесткам\n\n###Голосование\nPOST запрос на api/YouthVote?QuestionId=%d\nQuestionId - ид вопроса\n**id вопроса - это BDId**\nВ поле content - строка с результатом голосования \"Pro\", \"Contra\" или \"Abstained\"\n\nВ ответ приходит:\n\"ok\" - голос успешно отправлен\n\"vote type error\" - установлено очное голосование\n\"already voted\" - уже голосовали по данному вопросу\n\"user error\" - пользователь не может принять участие в голосовании\n\"agenda status error\" - \"Повестка не в стадии голосования!\"\n\n###Отправка комментария\nPOST на api/YouthComment?QuestionId=[id вопроса]\n**id вопроса - это BDId**\nВ заголовке content - текст, аналогично голосованию\n\nОтветы - \"ok\" - ок\n\"user error\" - юзер не может комментить\n\"agenda status error\" - повестка не в статусе обсуждения\n\"vote type error\" - только очное обсуждение\n\"empty text\" - если пустой текст\n\nПолучение комментов - из xml/html"},{"_id":"3f27ee1c629e46acd400000c","treeId":"2849d5f19cd314c5d1000001","seq":427085,"position":3,"parentId":null,"content":"## Указы губернатора\n### Список указов\nhttp://client.zsperm.ru:2000/Data/GovDecrees/govdecreelist.xml\n![](http://cs618731.vk.me/v618731469/11d62/-dfyx_PwXio.jpg)"},{"_id":"3f418f7b6ae8311335000024","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":2,"parentId":"3f27ee1c629e46acd400000c","content":"## Получение документов\nДля получения указа используется сервис\n** http://client.zsperm.ru:2000/api/GovDecree?Id=**\nгде *{id}* - идентификатор документа (атрибут *docid* в html)\nСервис возвращает путь до файла (добавляется к адресу сервиса)\nТакже в header'е ответа возвращается номер версии и другая информацию о документе.\nНомер версии храним. Сравниваем версию скачанного документа с версией в header'e - если в header'e версия старше, то скачиваем документ снова. Т.е. аналогично с документами по повесткам."},{"_id":"3f27f085629e46acd400000d","treeId":"2849d5f19cd314c5d1000001","seq":425616,"position":4,"parentId":null,"content":"## Постановления правительства\n### Список постановлений\nhttp://client.zsperm.ru:2000/Data/Decrees/decreelist.xml\n![](http://cs618731.vk.me/v618731469/11d59/Oe5QOyIzvp0.jpg)"},{"_id":"3f4192a06ae8311335000025","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":1,"parentId":"3f27f085629e46acd400000d","content":"## Получение документов\nДля получения постановления используется сервис\n** http://client.zsperm.ru:2000/api/Decree?Id=**\nгде *{id}* - идентификатор документа (атрибут *docid* в html)\nСервис возвращает путь до файла (добавляется к адресу сервиса)\nТакже в header'е ответа возвращается номер версии и другая информацию о документе.\nНомер версии храним. Сравниваем версию скачанного документа с версией в header'e - если в header'e версия старше, то скачиваем документ снова. Т.е. аналогично с документами по повесткам."},{"_id":"3f28104f629e46acd4000015","treeId":"2849d5f19cd314c5d1000001","seq":425618,"position":4.25,"parentId":null,"content":"## Аналитические отчеты\nhttp://client.zsperm.ru:2000/Data/Reports/reportlist.xml\n![](http://cs618731.vk.me/v618731469/11d35/iPRQEJQTQu8.jpg)"},{"_id":"3f4193a76ae8311335000026","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":1,"parentId":"3f28104f629e46acd4000015","content":"## Получение документов\nДля получения отчета используется сервис\n** http://client.zsperm.ru:2000/api/GetReport?Id=**\nгде *{id}* - идентификатор документа (атрибут *docid* в html)\nСервис возвращает путь до файла (добавляется к адресу сервиса)\nТакже в header'е ответа возвращается номер версии и другая информацию о документе.\nНомер версии храним. Сравниваем версию скачанного документа с версией в header'e - если в header'e версия старше, то скачиваем документ снова. Т.е. аналогично с документами по повесткам."},{"_id":"3f27f242629e46acd400000e","treeId":"2849d5f19cd314c5d1000001","seq":7466667,"position":4.375,"parentId":null,"content":"## План мероприятий\nhttp://client.zsperm.ru:2000/Data/IOGVCal/iogvcal.xml\n![](http://cs618731.vk.me/v618731469/11d74/arMLntIWHus.jpg)"},{"_id":"3f4194516ae8311335000027","treeId":"2849d5f19cd314c5d1000001","seq":1,"position":1,"parentId":"3f27f242629e46acd400000e","content":"## Получение документов\nДля получения документа используется сервис\n** http://client.zsperm.ru:2000/api/GetIogvCalendar?Id=**\nгде *{id}* - идентификатор документа (атрибут *docid* в html)\nСервис возвращает путь до файла (добавляется к адресу сервиса)\nТакже в header'е ответа возвращается номер версии и другая информацию о документе.\nНомер версии храним. Сравниваем версию скачанного документа с версией в header'e - если в header'e версия старше, то скачиваем документ снова. Т.е. аналогично с документами по повесткам."},{"_id":"3f41b3ae6ae8311335000028","treeId":"2849d5f19cd314c5d1000001","seq":425624,"position":4.4375,"parentId":null,"content":"## Исполнение бюджета\n### Получение документа\nhttp://client.zsperm.ru:2000/api/BudJet \nВозвращает путь и версию в header'e\n![](http://cs618731.vk.me/v618731469/11d6b/rCMCNI8DuMM.jpg)"},{"_id":"3f27f3aa629e46acd400000f","treeId":"2849d5f19cd314c5d1000001","seq":425629,"position":4.5,"parentId":null,"content":"## Новости\n\nСсылка на xml - по запросу\n*http://client.zsperm.ru:2000/api/newslist*\nВ ответе - путь, пример:\n*/Data/News/0.xml*\nНо искать нужно, добавив *.zip* в конец:\n*http://client.zsperm.ru:2000/Data/News/0.xml.zip*\n"},{"_id":"3fe28b2cc39044ad3700002a","treeId":"2849d5f19cd314c5d1000001","seq":2521344,"position":1,"parentId":"3f27f3aa629e46acd400000f","content":"## Новости xml\n### 1 уровень\nТег **Items**\nПоля \n**FIO** - text\n**Id** - number\n### 2 уровень\nТег **Item**\nПоля\n**Id** - номер, по которому далее достается контент (напр. html)\n**Title** - Заголовок. Обычно тут дата в формате `dd.MM.yyyy`, иногда + какой то тест\n**Date** -` yyyy-MM-ddThh:mm:ss`\n**FileType** - hmtl/pdf (text)\n**Type** - пусто или number\n**CategoryId** - number, используется для категоризации новостей\n**Author** - текст новости тут\n**Count** - number\n\n####Категории новостей (поле **CategoryId**)\n- 1 - \"Ежедневный мониторинг СМИ о Законодательном собрании\";\n- 2 - \"Обзор информации о законодательном собрании в интернет пространстве\";\n- 10- \"Еженедельный аналитической обзор СМИ по Законодательному собранию\";\n- 3 - \"СМИ обо мне\";\n- 4 - \"Новости Приволжского федерального округа\";\n- 5- \"ЕР\";\n- 6 - \"ЛДПР\";\n- 7 - \"СР\";\n- 8 - \"КПРФ\";\n\n![](http://cs618731.vk.me/v618731469/11d50/S_z55Q3DZrw.jpg)\n\n![](http://cs618731.vk.me/v618731469/11d47/--V1jVVOavw.jpg)\n\n#### Список новостей\nКаждый **Item** - это лента новостей\nЛента выдается по ссылке\n*http://client.zsperm.ru:2000/Data/News/ID.html.zip*\nгде **ID** - поле **Id** объекта **Item**"},{"_id":"403a6cbdc18503e377000046","treeId":"2849d5f19cd314c5d1000001","seq":645621,"position":1,"parentId":"3fe28b2cc39044ad3700002a","content":"## Лента новостей HTML\nСостоит из повторяющихся блоков **table**\n*Пример*:\n```\n<table cellspacing=\"0px\" cellpadding=\"0px\" class=\"NewsLenta newsInternet\" xmlns=\"\">\n <tr>\n <td>\n <div class=\"imgInternet\"></div>\n </td>\n <td class=\"NewsTitle\">Москва. Депутаты-коммунисты защищают жилищные права работников издательства «Прогресс»</td>\n </tr>\n <tr>\n <td colspan=\"2\" class=\"NewsSource\">КПРФ.ру - Главные новости</td>\n </tr>\n <tr>\n <td colspan=\"2\" class=\"NewsBody\">\n <div class=\"newsBodyCollapse\">\n <img src=\"http://cs1.kprf.ru/images/newsstory_illustrations/rss/1c0ef3_dsc00714.jpg\" />\n <br />\n <br />\n <p>Вечером 26 марта депутат Мосгордумы фракции КПРФ Владимир Алексеевич Святошенко встретился с жителями дома 30, корпус 4 по улице Академика Анохина района Тропарево-Никулино. Суть проблемы в следующем. Издательство &amp;laquo;Прогресс&amp;raquo;, чьим правопреемником является ОАО &amp;laquo;Издательская группа ...</p>\n <a style=\"margin-top: 4px; display: block;\" href=\"http://kprf.ru/dep/reg/129746.html\" target=\"_blank\">Читать дальше &amp;rarr;</a>\n </div>\n <div class=\"detailNewsShort\" title=\"Развернуть\" onclick=\"showNewsAll(this, true)\">\n Развернуть\n <img src=\"/\" alt=\"\" height=\"50px\" width=\"15px\" style=\"visibility:hidden\" /></div>\n <div class=\"detailNews\" title=\"Свернуть\" onclick=\"showNewsAll(this, false)\">\n Свернуть\n <img src=\"/\" alt=\"\" height=\"50px\" width=\"15px\" style=\"visibility:hidden\" /></div>\n <a href=\"http://kprf.ru/dep/reg/129746.html\">Подробнее\n </a>\n <img src=\"/\" alt=\"\" height=\"50px\" width=\"1px\" style=\"visibility:hidden\" />\n </td>\n </tr>\n </table>\n```\n#### Комментарии\n**Заголовок новости** - текст внутри `<td class=\"NewsTitle\">`\n**Источник новости** - текст внутри `<td colspan=\"2\" class=\"NewsSource\">`\n**Краткий текст новости** - текст внутри `<div class=\"newsBodyCollapse\">`\nМожет отсутствовать\nМожет быть выделен тегами `<p></p>`\nМожет присуствовать ссылка на картинку \n`<img src=\"http://cs1.kprf.ru/images/newsstory_illustrations/rss/1c0ef3_dsc00714.jpg\" />`\n(показываем ли в аппе зависит от диза\n**Полный текст новости** - это ссылка, достать можно 2-мя способами:\n1. `<a style=\"margin-top: 4px; display: block;\" href=\"http://kprf.ru/dep/reg/129746.html\" target=\"_blank\">Читать дальше &amp;rarr;</a>` - идет сразу после краткого текста\n2. `<a href=\"http://kprf.ru/dep/reg/129746.html\">\nПодробнее\n</a>`\n\n![](http://cs618731.vk.me/v618731469/11d3e/gRY0g4_w2b0.jpg)"},{"_id":"3f2811bc629e46acd4000016","treeId":"2849d5f19cd314c5d1000001","seq":425639,"position":4.609375,"parentId":null,"content":"## Контакты ИОГВ\nhttp://client.zsperm.ru:2000/Data/SyncContacts/ogv.xml\n\n![](http://cs618731.vk.me/v618731469/11d9f/-xFp4QfJBL0.jpg)"},{"_id":"40b083b9c18503e37700004c","treeId":"2849d5f19cd314c5d1000001","seq":425640,"position":1,"parentId":"3f2811bc629e46acd4000016","content":"##Контакты - XML\nКорневой элемент - `<AddressBook>`\nВнутри - иерархия элементов двух типов -\n**d** - департамент\n**u** - человек\nЭлемент **d** может содержать в себе другие **d** или **u**\nЭлемент **u** - конечный\n###Структура элементов\n####Элемент d\nПоля\n**dn** - text, название департамента\n**io** - bool, может отсутсвовать; назначение не ясно, везде true или ничего\n![](http://cs618731.vk.me/v618731469/11d8f/A3nLrH0GEPc.jpg)\n####Элемент u\nПоля\n*некоторые поля могут быть пустыми!*\n**ui** - text, id-шник\n**ll** - text, email\n**ur** - int, номер кабинета\n**n** - text, ФИО\n**ut** - text, должность\n**up** - text, телефон(ы), мб несколько через запятую\n**ua** - text, адрес\n**uc** - см. название в iPad версии; ~родительский департамент верхнего уровня; в UI наверно не будет\n**ma** - text, снова email\n**im** - bool, назначение неясно, везде true или ничего\n![](http://cs618731.vk.me/v618731469/11d86/exRRHqLRfnc.jpg)\n![](http://cs618731.vk.me/v618731469/11d7d/Jm-clVp9tDw.jpg)\n"},{"_id":"4174f86ea79d41e1a8000031","treeId":"2849d5f19cd314c5d1000001","seq":1569192,"position":6,"parentId":null,"content":"##Документы\n\n**Xml паспорта** лежит по адресу http://client.zsperm.ru:2000/Data/Passports/{id}.xml. {id} - поле passport у вопроса в agenda.xml. Ссылки на документы располагаются в тегах заканчивающихся на Source.\n### Аннотации к паспортам = личные версии документов\n(см. также карточку **Аннотации** в ветке паспортов, там то же самое\n* Получается сервисом http://client.zsperm.ru:2000/api/personalpassportdocumentlist?id={id}.\n*api/personaldocument?id=%d* - Возвращает документ, где id - идентификатор версии из списка, полученного выше\n* Отправляется POST-запросом в сервис:\nhttp://client.zsperm.ru:2000/api/PersonalPassportDocument?passportId={passportId}&blockId={blockId}&fileName={fileName}&docToUpdate={docId}\npassportId – Id паспорта, к которому прикрепляется документ\nblockId – Id вкладки на паспорте\nfileName – имя файла\nЕсли параметр docToUpdate не указан, то будет добавлен новый файл, если указан, то будет перезаписан файл с идентификатором, указанным в данном параметре.\nТело документа вкладывается бинарником в контент запроса\n* Удаляется\nhttp://client.zsperm.ru:2000/api/PersonalPassportDocumentDelete?id={docId}\n\n### Аннотации к документам\n\nhttp://client.zsperm.ru:2000/api/personaldocumentlist?id=%d Возвращает список(XML) версий для документа с идентификатором id, соответственно если там есть документы с минорными версиями - то это личные версии.\n\nhttp://client.zsperm.ru:2000/api/personaldocument?id=%d Возвращает документ, где id - идентификатор версии из списка, полученного выше"},{"_id":"48fbd41cb3c458d140000053","treeId":"2849d5f19cd314c5d1000001","seq":659448,"position":1,"parentId":"4174f86ea79d41e1a8000031","content":"### Проверка версии документа\n`/api/Document?Id=\"doc_id\"`\nВ ответе - путь до документа\n##Header'ы:\n**Name:value**\nVersion:*intvalue*\nPath:*path*\nTitle:*title*"},{"_id":"479816caa5aa52718300004f","treeId":"2849d5f19cd314c5d1000001","seq":478398,"position":7,"parentId":null,"content":"##Внешние ресурсы\nЗапрос http://client.zsperm.ru:2000/Data/extresources.xml.zip\nВ xml поля\n**Title** -название\n**Url** - ссылка на ресурс"},{"_id":"4d5162ac1fd4df6d65000058","treeId":"2849d5f19cd314c5d1000001","seq":4930518,"position":8,"parentId":null,"content":"##Новые сервисы\n###Материалы КС:\n\nПолучение дерева материалов: \n- `/Data/KSM/ksmaterials.xml`\n\n- \"api/ksmaterialstree?version=%d\" [параметр version-опционален, передается при условии, что на устройстве уже присутствует версия данного файла]\n\nВ случае присутствия более новой версии возвращается относительный URL на xml файл. Пример файла в приложении.\n\nКаждый элемент данного файла включает следующие атрибуты:\n\n**Id**-идентификатор элемента(используется опционально)\n\n**Title**-отображаемое название.\n\n**ShowDisclosure**-отображения индикатора раздела (стрелка)\n\n**DocId**-ид документа, который необходимо отобразить \n\nОпционально атрибут **DocUrl**, при его наличии вместо отображения документа необходимо отобразить содержимое URLадреса.\n\nЧтобы получить документ, заданный параметром DocId \n\n- `/Data/KSM/<id>.pdf`\n\n- необходимо обратиться к сервису, передав ему параметром id документа: \"api/ksmaterialsdocument?id=%d&version=%d\" [параметр version-опционален, передается при условии, что на устройстве уже присутствует версия данного файла]\n\n\n###Материалы КСП:\n\"api/kspreportdocument?id=%d&version=%d\"\n\"api/kspreporttree?version=%d\"\n\n`Data/KSP/ksp.xml`\n`/Data/KSP/<id>.pdf`\n\n###Государственные программ ПК:\n\"api/govprogdocument?id=%d&version=%d\"\n\"api/govprogtree?version=%d\"\n\n`/Data/GPR/gpr.xml`\n`/Data/GPR/<id>.pdf`\n\n###Отчёты ИК:\n\"api/ikreportdocument?id=%d&version=%d\"\n\"api/ikreporttree?version=%d\"\n\n`/Data/IKR/ikreport.xml`\n`/Data/IKR/<id>.pdf`\n\n###Отчёты УППЧ:\n\"api/uppcreportdocument?id=%d&version=%d\"\n\"api/uppcreporttree?version=%d\"\n\n`/Data/UPPC/uppcreport.xml`\n`/Data/UPPC/<id>.pdf`\n\n###Исполнение бюджета:\n\"/api/budgetdocumentlist[?version=%d]\"\n\"/api/budgetdocument?id=%d[&version=%d]\"\n\n`/Data/Budgets/budgets.xml`\n`/Data/Budgets/<id>.pdf`\n"},{"_id":"4dba2cd8fd6faf9a32000059","treeId":"2849d5f19cd314c5d1000001","seq":1563225,"position":9,"parentId":null,"content":"##Календарь ЗС\n\nhttps://mail.zsperm.ru/owa/calendar/3dde0031ddc94ac7ab8a3cb38468778e@zsperm.ru/0875b18a90224d81bea6716ca8beafc25203880817408794212/calendar.ics\n"}],"tree":{"_id":"2849d5f19cd314c5d1000001","name":"Вирт кабинет","publicUrl":"virtcab-backend"}}