• דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private
    • הרשמה
    • התחברות

    סטטיסטיקות במערכת, איך?

    מתוזמן נעוץ נעול הועבר עזרה הדדית למשתמשים מתקדמים
    8 פוסטים 5 כותבים 190 צפיות 2 עוקבים
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • A מנותק
      anti malware
      נערך לאחרונה על ידי

      איך אני יכול לדעת לאיזה שלוחה האזינו הכי הרבה וכמה לכל שלוחה וכו?

      ק א 2 תגובות תגובה אחרונה תגובה ציטוט 0
      • ק מנותק
        קו המוסיקה @anti malware
        נערך לאחרונה על ידי

        @anti-malware הלוואי ויכלת כי אז גם אני יכלתי...😂

        B תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • B מנותק
          BEN ZION @קו המוסיקה
          נערך לאחרונה על ידי

          @קו-המוסיקה @anti-malware אתה יכול למשוך את הנתונים מלוג כניסות ויציאות ולחשב כמה זמן היו בכל שלוחה ליצור קוד שיחשב לך

          ק תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • ק מנותק
            קו המוסיקה @BEN ZION
            נערך לאחרונה על ידי

            @BEN-ZION תכלס אתה צודק,
            אבל שיש לך מאות שלוחות אני לא הולך לעשות את זה כל יום...

            B תגובה 1 תגובה אחרונה תגובה ציטוט 0
            • B מנותק
              BEN ZION @קו המוסיקה
              נערך לאחרונה על ידי

              @קו-המוסיקה למה כל יום אם יש לך קוד HTML שקורא את הקובץ ומחשב זה יקח כמה שניות כל יום

              מ תגובה 1 תגובה אחרונה תגובה ציטוט 1
              • מ מנותק
                מתעמק @BEN ZION
                נערך לאחרונה על ידי

                @BEN-ZION תוכל להסביר יותר למה אתה מתכוון

                B תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • א מנותק
                  אופיר @anti malware
                  נערך לאחרונה על ידי

                  @anti-malware מצרף כאן קובץ אקסל שמסכם דקות לפי חודשים/שלוחות למערכת
                  יש להזין מפתח API למערכת המתאימה שלך (בינתיים זה משתמש במפתח API של מערכת שלי שלא כ"כ בשימוש)
                  סטטיסטקות.xlsm

                  תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • B מנותק
                    BEN ZION @מתעמק
                    נערך לאחרונה על ידי

                    @מתעמק @קו-המוסיקה מצורף קוד HTML בסיסי לחישוב

                    <!DOCTYPE html>
                    <html lang="he" dir="rtl">
                    <head>
                      <meta charset="UTF-8" />
                      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
                      <title>מערכת סיכום דקות - ימות המשיח</title>
                      <style>
                        body { font-family: Arial, sans-serif; background: #f0f2f5; margin: 0; padding: 20px; color: #333; }
                        .container { max-width: 1200px; margin: auto; background: #fff; padding: 25px; border-radius: 15px; box-shadow: 0 8px 30px rgba(0,0,0,0.1); }
                        h1 { margin-top: 0; color: #1a4388; text-align: center; border-bottom: 2px solid #eee; padding-bottom: 15px; }
                        
                        .setup-panel { background: #f8fafc; padding: 20px; border-radius: 12px; border: 1px solid #e2e8f0; margin-bottom: 20px; display: flex; flex-wrap: wrap; gap: 15px; align-items: flex-end; }
                        .input-group { display: flex; flex-direction: column; gap: 5px; }
                        label { font-weight: bold; font-size: 14px; }
                        input, select { padding: 10px; border: 1px solid #cbd5e1; border-radius: 8px; font-size: 14px; }
                        
                        .filter-panel { margin-bottom: 15px; display: flex; gap: 10px; }
                        #filterInput { flex: 1; padding: 12px; border: 2px solid #1a4388; border-radius: 8px; font-size: 16px; }
                    
                        button { border: none; background: #1a4388; color: #fff; padding: 10px 20px; border-radius: 8px; cursor: pointer; font-weight: bold; transition: background 0.2s; }
                        button:hover { background: #133266; }
                        button.secondary { background: #10b981; }
                        button.secondary:hover { background: #059669; }
                    
                        .summary-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin-bottom: 20px; }
                        .card { background: #fff; padding: 15px; border-radius: 10px; border: 1px solid #e2e8f0; box-shadow: 0 2px 4px rgba(0,0,0,0.02); text-align: center; }
                        .card .val { font-size: 20px; font-weight: bold; color: #1a4388; display: block; }
                        .card .lbl { font-size: 13px; color: #64748b; }
                    
                        .table-container { overflow-x: auto; max-height: 500px; border: 1px solid #e2e8f0; border-radius: 10px; }
                        table { width: 100%; border-collapse: collapse; background: white; }
                        th { position: sticky; top: 0; background: #1a4388; color: white; padding: 12px; text-align: right; }
                        td { padding: 12px; border-bottom: 1px solid #f1f5f9; }
                        tr:hover { background: #f8fafc; }
                    
                        .error { color: #991b1b; background: #fef2f2; padding: 12px; border-radius: 8px; border: 1px solid #fee2e2; margin: 10px 0; }
                        .success { color: #065f46; background: #ecfdf5; padding: 12px; border-radius: 8px; border: 1px solid #d1fae5; margin: 10px 0; }
                        #textSummary { display: none; margin-top: 20px; padding: 15px; background: #1e293b; color: #f8fafc; border-radius: 10px; font-family: monospace; font-size: 12px; white-space: pre-wrap; }
                      </style>
                    </head>
                    <body>
                    
                    <div class="container">
                      <h1>ניהול נתוני שיחות - ימות המשיח</h1>
                    
                      <div class="setup-panel">
                        <div class="input-group">
                          <label>טוקן API:</label>
                          <input type="password" id="token" placeholder="הכנס טוקן..." />
                        </div>
                        <div class="input-group">
                          <label>שנה:</label>
                          <input type="number" id="year" value="2025" style="width: 100px;" />
                        </div>
                        <div class="input-group">
                          <label>חודש:</label>
                          <select id="month">
                            <option value="01">ינואר (01)</option><option value="02">פברואר (02)</option>
                            <option value="03">מרץ (03)</option><option value="04">אפריל (04)</option>
                            <option value="05">מאי (05)</option><option value="06">יוני (06)</option>
                            <option value="07">יולי (07)</option><option value="08">אוגוסט (08)</option>
                            <option value="09">ספטמבר (09)</option><option value="10">אוקטובר (10)</option>
                            <option value="11" selected>נובמבר (11)</option><option value="12">דצמבר (12)</option>
                          </select>
                        </div>
                        <button onclick="fetchData()">משוך נתונים</button>
                        <button class="secondary" onclick="copyToClipboard()">העתק סיכום</button>
                      </div>
                    
                      <div id="statusMessage"></div>
                    
                      <div id="summaryCards" class="summary-cards" style="display:none;">
                        <div class="card"><span class="val" id="totalExt">0</span><span class="lbl">שלוחות</span></div>
                        <div class="card"><span class="val" id="totalCalls">0</span><span class="lbl">סה"כ שיחות</span></div>
                        <div class="card"><span class="val" id="totalTime">0:00</span><span class="lbl">זמן מצטבר</span></div>
                        <div class="card"><span class="val" id="totalMin">0</span><span class="lbl">דקות סה"כ</span></div>
                      </div>
                    
                      <div class="filter-panel">
                        <input type="text" id="filterInput" placeholder="חיפוש מהיר לפי מספר שלוחה או שם..." onkeyup="applyFilter()">
                      </div>
                    
                      <div class="table-container">
                        <table id="resultsTable">
                          <thead>
                            <tr>
                              <th>שלוחה</th>
                              <th>כותרת/שם</th>
                              <th>כמות שיחות</th>
                              <th>זמן כולל</th>
                              <th>דקות</th>
                            </tr>
                          </thead>
                          <tbody id="tableBody">
                            <tr><td colspan="5" style="text-align:center;">הזן טוקן ולחץ על משוך נתונים</td></tr>
                          </tbody>
                        </table>
                      </div>
                    
                      <pre id="textSummary"></pre>
                    </div>
                    
                    <script>
                      let allProcessedData = []; // מחזיק את כל הנתונים המעובדים
                    
                      function showMsg(text, type) {
                        const el = document.getElementById("statusMessage");
                        el.innerHTML = `<div class="${type}">${text}</div>`;
                      }
                    
                      async function fetchData() {
                        const token = document.getElementById("token").value;
                        const year = document.getElementById("year").value;
                        const month = document.getElementById("month").value;
                    
                        if (!token) { showMsg("אנא הזן טוקן תקני", "error"); return; }
                    
                        const path = `ivr2:Log/LogFolderEnterExit-${year}-${month}.ymgr`;
                        // שימוש ב-wath כפי שנדרש ב-API
                        const url = `https://private.call2all.co.il/ym/api/RenderYMGRFile?token=${token}&wath=${path}&convertType=json&notLoadLang=1`;
                    
                        showMsg("מתחבר לשרת ימות המשיח...", "success");
                    
                        try {
                          const response = await fetch(url);
                          const result = await response.json();
                    
                          if (result.responseStatus !== "OK") {
                            showMsg("שגיאה מהשרת: " + (result.message || "קובץ לא נמצא"), "error");
                            return;
                          }
                    
                          processData(result.data);
                        } catch (err) {
                          showMsg("שגיאת תקשורת: וודא שאין חסימת CORS (נסה להריץ כתוסף או משרת תואם)", "error");
                        }
                      }
                    
                      function processData(rawData) {
                        if (!rawData || rawData.length === 0) {
                          showMsg("הקובץ ריק מנתונים", "error");
                          return;
                        }
                    
                        const grouped = {};
                        let gCalls = 0;
                        let gSeconds = 0;
                    
                        rawData.forEach(row => {
                          const ext = row["Folder"];
                          const seconds = parseFloat(row["TimeTotal"]) || 0;
                          const title = row["PathTitle"] || row["ValName"] || "";
                    
                          if (!ext) return;
                    
                          if (!grouped[ext]) {
                            grouped[ext] = { extension: ext, title: title, calls: 0, seconds: 0 };
                          }
                    
                          grouped[ext].calls++;
                          grouped[ext].seconds += seconds;
                          gCalls++;
                          gSeconds += seconds;
                        });
                    
                        allProcessedData = Object.values(grouped).sort((a, b) => b.seconds - a.seconds);
                        
                        // עדכון כרטיסים
                        document.getElementById("summaryCards").style.display = "grid";
                        document.getElementById("totalExt").innerText = allProcessedData.length;
                        document.getElementById("totalCalls").innerText = gCalls;
                        document.getElementById("totalTime").innerText = formatHMS(gSeconds);
                        document.getElementById("totalMin").innerText = (gSeconds / 60).toFixed(1);
                    
                        renderTable(allProcessedData);
                        showMsg("הנתונים עובדו בהצלחה!", "success");
                      }
                    
                      function renderTable(data) {
                        const tbody = document.getElementById("tableBody");
                        const textSummary = document.getElementById("textSummary");
                        tbody.innerHTML = "";
                        
                        let textPlain = "שלוחה | שם | שיחות | זמן\n---------------------------\n";
                    
                        data.forEach(item => {
                          const hms = formatHMS(item.seconds);
                          const mins = (item.seconds / 60).toFixed(2);
                          
                          const row = `<tr>
                            <td><strong>${item.extension}</strong></td>
                            <td>${item.title}</td>
                            <td>${item.calls}</td>
                            <td>${hms}</td>
                            <td>${mins}</td>
                          </tr>`;
                          tbody.innerHTML += row;
                          textPlain += `${item.extension} | ${item.title} | ${item.calls} | ${hms}\n`;
                        });
                    
                        textSummary.textContent = textPlain;
                      }
                    
                      function applyFilter() {
                        const query = document.getElementById("filterInput").value.toLowerCase();
                        const filtered = allProcessedData.filter(item => 
                          item.extension.toLowerCase().includes(query) || 
                          item.title.toLowerCase().includes(query)
                        );
                        renderTable(filtered);
                      }
                    
                      function formatHMS(s) {
                        const h = Math.floor(s / 3600);
                        const m = Math.floor((s % 3600) / 60);
                        const sec = Math.floor(s % 60);
                        return h > 0 ? `${h}:${String(m).padStart(2,'0')}:${String(sec).padStart(2,'0')}` : `${m}:${String(sec).padStart(2,'0')}`;
                      }
                    
                      function copyToClipboard() {
                        const text = document.getElementById("textSummary").textContent;
                        navigator.clipboard.writeText(text).then(() => alert("הסיכום הועתק!"));
                      }
                    </script>
                    
                    </body>
                    </html>
                    
                    תגובה 1 תגובה אחרונה תגובה ציטוט 1
                    • B BEN ZION התייחס לנושא זה

                    שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

                    נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                    בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                    הרשמה התחברות
                    • פוסט ראשון
                      פוסט אחרון