Timetracker ل Youtrack: DIY

هناك تطبيق T-REC الرائع الذي يسمح لك بتتبع الوقت الذي تقضيه في المهام في Youtrack ، ويكتبه إلى المهمة. لكن المؤلف تخلى عنها قبل أكثر من عامين ، بالإضافة إلى التبعيات القديمة ، والتحميل المستمر لنواة واحدة (يبدو أن الإلكترون هو المسؤول) ، وأدى وقوع أعطال دورية إلى حقيقة أنه أصبح "غير مريح" لاستخدامه. قررت أن أكتب عني ، بنفس الوظيفة ، فقط على المحترفين ، لذلك ظهر هونسو ...



الوثائق الحالية حول العمل مع Youtrack هنا .

كيف يعمل:

للوصول إلى Youtrack من تطبيق تابع لجهة خارجية ، تحتاج إلى رمز مميز للعمل.

  1. تسجيل الدخول إلى YouTrack في المستعرض
  2. انتقل إلى الملف الشخصي " example.youtrack.com/users/me "
  3. ابحث عن العنصر "تحديث المعلومات الشخصية وإدارة تسجيلات الدخول"
  4. افتح علامة التبويب "المصادقة"
  5. انقر فوق الزر "New token ..."
  6. املأ حقل العميل "YoutrackTimerec"
  7. اختيار الأنظمة الفرعية التي نحتاج إلى الوصول إليها - "YouTrack" أولاً
  8. انقر فوق الزر إنشاء رمز
  9. نقوم بنسخ الرمز المميز ، لأنه يظهر مرة واحدة فقط.

الأمثلة على شكل طلبات cURL ، ولكن من السهل التحول إلى النموذج المطلوب.

تحتاج أولاً إلى التحقق من صحة العنوان الذي تم إدخاله ومن وجود REST API على جانب الخادم. إذا كانت الخدمة متاحة وكان المفتاح صحيحًا ، فسيتم إرجاع json مع بيانات المحاسبة

curl -X GET "https://example.myjetbrains.com/api/admin/users/me?fields=id,login,name,email"
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"




{"login":"s.user",
"email":"s.user@example.team",
"name":"S User",
"id":"1-325",
"$type":"Me"}



ما رشيقة بدون مهام؟ المبسطة ، عادة ما تعيش المهام في العدو السريع ، والعدو السريع في اللوحات. إنها فقط اللوحات النشطة التي تحتاج إلى الحصول عليها لتحديد المهام لاحقًا لتتبع الوقت. تحتوي الإجابة على قائمة باللوحات المتوفرة لمستخدم معين:

curl -X GET "https://example.myjetbrains.com/api/agiles?fields=name,id,projects(id,shortName,name),columnSettings(columns(presentation))&$top=100"
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"




[
   {
      "projects":[{ "shortName":"OPS", "name":"Operations",
                     "id":"04", "$type":"Project" }],
      "columnSettings":{
         "columns":[
            { "presentation":"Open", "$type":"AgileColumn"},
            { "presentation":"In Progress, Paused","$type":"AgileColumn" },
            { "presentation":"Postponed", "$type":"AgileColumn" },
            { "presentation":"Closed, Resolved", "$type":"AgileColumn" },
            { "presentation":"Feedback, On Review", "$type":"AgileColumn" }
         ],
         "$type":"ColumnSettings"
      },
      "name":"Web",
      "id":"15",
      "$type":"Agile"
   }
]



الخطوة التالية هي الحصول على المهام من

اللوحة : - `Board Some Name:` ​​الاسم بعد الإشارة إلى المسافة ، ينتهي بـ `:`
- `{Current sprint}`
يتم أخذ المهام فقط من العدو الحالي - `# لم يتم حلها` فقط المهام التي تم إغلاقها ستأتي المهام مع مجموعة من الكائنات ، هناك عدد غير قليل من الخصائص ، ولكن من أجل حساب الوقت ، ستكون هناك حاجة إلى حقول المعرّف ، الملخص - العنوان ، الوقت المستغرق - الوقت المستغرق في دقائق ، والعدو - معرف العدو ، إذا كنت بحاجة إلى العمل معه.

curl -X GET "https://example.myjetbrains.com/rest/issue?filter=for:me%20Board%20Some%20Name:%7BCurrent%20sprint%7D%20%23Unresolved%20"
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"




{
   "issue":[
      {
         "id":"38-1234", 
         "entityId":"2-12345",
         "jiraId":null,
         "field":[
            { "name":"projectShortName", "value":"38"  },
            { "name":"summary", "value":"[system] [tech] Huge hard task" },
            { "name":"created", "value":"1582624816973" },
            { "name":"Spent time", "value":[ "399" ],  "valueId":["6h 39m"],"color":null },
            { "name":"sprint", "value":[  { "value":"Value", "id":"ID" } ] }
         ],
      }]
}



البيانات التي تم الحصول عليها كافية للتعيينات والتنقل عبر قائمة المهام. الفكرة الرئيسية للتطبيق هي النظر في الوقت الذي يقضيه في العمل على مهمة محددة. للقيام بذلك ، أرسل للخادم عدد الدقائق (WorkItem) ، مع الاستعلام التالي لماذا XML؟ لسبب ما ، لا يقبل خادم الاختبار WorkItem ككائن json. محفوظات المهام اليومية: يمكنك طلب المهام التي يمكن للحقل Spent Time> 0 ، بعد معالجة WorkItem ، تجميع محفوظات العمل. طلب جميع المهام في العدو الحالي. بعد ذلك ، نعالج مجموعة المهام الواردة ، ونقدم طلبات للذين قاموا بشطب الوقت. بعد معالجة البيانات المستلمة ، يمكنك عرضها في شكل مناسب أين يعيش Honsu: github.com/dalerank/nanogui/tree/master/honsu

curl -i -X POST "https://example.myjetbrains.com/rest/issue/38-1234/timetracking/workitem" 
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/xml"
-d <?xml version=\"1.0\" encoding=\"UTF-8\"?> <workItem> <date>UnixEpocTime*1000</date> <duration>10</duration> <description>added by Honsu</description> <worktype> <name>Development</name> </worktype> </workItem>











curl -X GET "https://example.myjetbrains.com/rest/issue?filter=for:me%20Board%20Some%20Name:%7BCurrent%20sprint%7D"
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"




curl -X GET "https://example.myjetbrains.com/rest/issue/38-1234/timetracking/workitem"
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"







يتم تجميعها مع أمثلة أخرى

أو هنا في شكل exe (Windows): github.com/dalerank/nanogui/releases

لماذا يتم ذلك:

+ تتبع الوقت الذي تقضيه في المهام
+ انظر كيف يعمل الباقي في مسارك
+ إذا أمكن ، قم بعمل monoapp ، بدون تبعيات
+ مثيرة للاهتمام :)

ما يمكن القيام به:

+ التقاط المهام من مسارك
+ إظهار اللوحات النشطة
+ تحديد الوقت الذي تم جمعه كعنصر عمل في المهمة
+ قطع وقت التوقف
+ تذكير بغياب مهمة عند اكتشاف نشاط
+ إظهار سجل تتبع الوقت بالأيام
+ لا يخزن البيانات محليًا ، باستثناء المفتاح والخادم

ما الذي لا يعرف كيف:

+ استخدام حسابات متعددة
+ تخزين الوقت المتصدع إذا لم يكن هناك إنترنت
+ إنشاء مهام جديدة inapp
+ عرض لون المهام
+ بناء المخططات الزمنية +
التحديث من إصدارات الحفلة

ماذا تقول:

+ CMake + C ++ 11 + OpenGL (أو فجوة أخرى)
+ OpenSSL
+ cpp-htplib
+ نسخة مدعومة بنشاط لنظام Windows ، على منصات أخرى (Ubuntu \ MacOS) بنيت وحتى تعمل

All Articles