File size: 1,540 Bytes
197ac2a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import SecaoHeader from "../components/SecaoHeader.jsx";
import StatGrid from "../components/StatGrid.jsx";
import HighlightsCards from "../components/HighlightsCards.jsx";
import { num } from "../format.js";

export default function Satisfaction({ dia }) {
  const s = dia.metrics?.satisfaction || {};
  if (!s.configured) {
    return (
      <div className="card">
        <div className="empty">⚙️ {s.message || "Satisfação não configurada."}</div>
      </div>
    );
  }
  if (!s.responses) {
    return (
      <div className="card">
        <div className="empty">{s.message || "Sem respostas de satisfação nesse dia."}</div>
      </div>
    );
  }
  const motivos = s.top_negative_reasons || {};
  const chaves = Object.keys(motivos);

  return (
    <>
      <div className="card">
        <SecaoHeader icone="😊" titulo={"Satisfação — " + dia.date} cor="#0d9488" />
        <StatGrid
          itens={[
            ["⭐", "Nota média", num(s.avg_score), "teal"],
            ["🗳️", "Respostas", num(s.responses), "blue"],
            ["😟", "Negativas", num(s.negative_count), "red"],
          ]}
        />
        {chaves.length > 0 && (
          <div style={{ marginTop: 12 }}>
            {chaves.map((k) => (
              <span className="chip" key={k} style={{ marginRight: 6 }}>
                {k} ({motivos[k]})
              </span>
            ))}
          </div>
        )}
      </div>
      <HighlightsCards highlights={dia.highlights} chaves={["satisfacoes_piores"]} />
    </>
  );
}