Zammad: API๋ฅผ ํ†ตํ•ด ํ‹ฐ์ผ“์„ ์‚ญ์ œํ•  ๋•Œ ๋ณด๊ณ ์„œ์—์„œ ํ‹ฐ์ผ“ ๋ชฉ๋ก ์ƒ์„ฑ ์‹œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•จ

์— ๋งŒ๋“  2019๋…„ 04์›” 16์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: zammad/zammad

์•ˆ๋…•ํ•˜์„ธ์š”. ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ๋‹ค์Œ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐Ÿค“ 11์›” 15์ผ๋ถ€ํ„ฐ ์‹ค์ œ ๋ฒ„๊ทธ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์š”์ฒญ์„ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒŒ์‹œํŒ์—์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์„ค๋ช…: https://community.zammad.org/t/major-change-regarding-github-issues-community-board/21 ๊ฒŒ์‹œ: - ๊ธฐ๋Šฅ ์š”์ฒญ - ๊ฐœ๋ฐœ ์งˆ๋ฌธ - ๊ฒŒ์‹œํŒ์˜ ๊ธฐ์ˆ  ์งˆ๋ฌธ -> https:/ /community.zammad.org ! ๋ฒ„๊ทธ์— ๊ฑธ๋ ธ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๊ณ„์† ์ง„ํ–‰ํ•˜์‹ญ์‹œ์˜ค. - ๊ธฐ์กด ๋ฌธ์ œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ฌธ์ œ์— ๋Œ€ํ•œ CHANGELOG.md - ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ด๋ฏธ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ๊ฐ€๋Šฅํ•˜๋ฉด ์ตœ์‹  ๋ฒ„์ „์˜ Zammad๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. - `log/production.md'๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”. log` ํŒŒ์ผ์„ ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ฃผ์˜: ๊ธฐ๋ฐ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค! - ๋ฌธ์ œ๋ฅผ ์˜์–ด๋กœ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. - ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ฑฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. - ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ถ”๊ฐ€ ์„ค๋ช… ์—†์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. - ๋ฉ”์ผ๋ง๋ฆฌ์ŠคํŠธ์—์„œ Zammad ๊ตฌ์„ฑ ๋ฐ ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์งˆ๋ฌธํ•˜์‹ญ์‹œ์˜ค. ์ฐธ์กฐ: https://zammad.org/participate ์ฐธ๊ณ : ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ์ตœ์„ ์„ ๋‹คํ•ฉ๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ์š”์ฒญ์ด ๋„ˆ๋ฌด ๋งŽ์•„ ํ•œ ๋ฒˆ์— ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์—์Šค์ปฌ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด ์ง€์› ๊ณ„์•ฝ์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(https://zammad.com/pricing#selfhosted ์ฐธ์กฐ). * ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜๋ฉด ์ƒ๋‹จ ํ…์ŠคํŠธ ๋ธ”๋ก์ด ์ž๋™์œผ๋กœ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค *

์ด ๊ฒŒ์‹œ๋ฌผ์€ @MrGeneration ์— ์˜ํ•ด ํŽธ์ง‘๋˜์—ˆ์œผ๋ฉฐ ํ•„์š”ํ•œ ํ˜•์‹์„ ์ถฉ์กฑํ•˜๊ณ  ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ฑ„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ณด:

  • ์ค‘๊ณ  Zammad ๋ฒ„์ „: 3.0
  • ์„ค์น˜ ๋ฐฉ๋ฒ•(์†Œ์Šค, ํŒจํ‚ค์ง€, ..) : ์•„๋ฌด๊ฑฐ๋‚˜
  • ์šด์˜ ์ฒด์ œ: ๋ชจ๋“ 
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค + ๋ฒ„์ „: ๋ชจ๋‘
  • Elasticsearch ๋ฒ„์ „: 5.6(์•„๋งˆ๋„ ๋ชจ๋‘)
  • ๋ธŒ๋ผ์šฐ์ € + ๋ฒ„์ „: ๋ชจ๋‘
  • ํ‹ฐ์ผ“ ID: #1047094 , #1048216

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘:

์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‹ฐ์ผ“์„ ์‚ญ์ œํ•  ๋•Œ(๋˜๋Š” API ๋˜๋Š” ์ฝ˜์†”์„ ํ†ตํ•ด ์ง์ ‘ ์‚ญ์ œ) ์ด๋Š” ๋ณด๊ณ  ๋ชจ๋“ˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ณด๊ณ ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ํ–‰๋™:

์Šค์ผ€์ค„๋Ÿฌ, ์ฝ˜์†” ๋˜๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‹ฐ์ผ“์„ ์‚ญ์ œํ•  ๋•Œ Elasticsearch๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ‹ฐ์ผ“์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”์€ ๋‹ค์Œ์„ ๋˜์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค:
image

๊ทธ๋ž˜ํ”„๋Š” ๋ฌธ์ œ์—†์ด ์ƒ์„ฑ๋˜์ง€๋งŒ ์•„๋ž˜ ํ‹ฐ์ผ“ ๋ชฉ๋ก์€ ์—…๋ฐ์ดํŠธ๋˜๊ฑฐ๋‚˜ ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ถ€๋ถ„์ ์œผ๋กœ #2246์˜ ํšŒ๊ท€์ž…๋‹ˆ๋‹ค(๋ณด๊ณ ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ๋ฌด๋ฆŽ์˜ ์˜ค๋ฅ˜๋ฅผ ์ทจํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ์–ต์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค).

๋™์ž‘์„ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„:

  • ์ผ๋ถ€ ํ‹ฐ์ผ“์„ ์ƒ์„ฑ
  • ๋ธŒ๋ผ์šฐ์ € ์ฝ˜์†”์„ ์—ฝ๋‹ˆ๋‹ค
  • ๋ณด๊ณ ๋ฅผ ์—ด๊ณ  ํ†ต๊ณ„๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋ธŒ๋ผ์šฐ์ € ์ฝ˜์†”์ด "๊นจ๋—ํ•จ").
  • ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ํ‹ฐ์ผ“์„ ์‚ญ์ œ
  • ๋‹ค์‹œ ๋กœ๋“œํ•˜๊ณ  ๋ณด๊ณ  ์—ด๊ธฐ(๋ธŒ๋ผ์šฐ์ € ์ฝ˜์†”์—์„œ ์œ„์˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ)

์ด ๋™์ž‘์— ๋Œ€ํ•œ ์ด์œ :

์ด ๋ฌธ์ œ๋Š” ์˜ค๋ž˜๋œ Elasticsearch ์ธ๋ฑ์Šค(์ด๋Š” ๊ณง ๋‹ค๋ฅธ ๋ฌธ์ œ๋กœ ๋‹ค๋ฃจ์–ด์งˆ ์˜ˆ์ •์ž„)์™€ ๋„ˆ๋ฌด ๊ฐ•๋ ฅํ•˜์ง€ ์•Š์€ ์˜ค๋ฅ˜ ์ด์Šค์ผ€์ดํ”„ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ด๊ฒƒ์€ ๋ฒ„๊ทธ์ด๋ฉฐ ๊ธฐ๋Šฅ ์š”์ฒญ์ด๋‚˜ ์ผ๋ฐ˜์ ์ธ ์งˆ๋ฌธ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์›๋ณธ ๊ฒŒ์‹œ๋ฌผ

์ •๋ณด:

  • ์‚ฌ์šฉ๋œ Zammad ๋ฒ„์ „: docker ์ตœ์‹  2.9.x
  • ์„ค์น˜ ๋ฐฉ๋ฒ•(์†Œ์Šค, ํŒจํ‚ค์ง€, ..): docker

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘:

  • ํ‹ฐ์ผ“ ๋ชฉ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    image

์‹ค์ œ ํ–‰๋™:

  • ํ‹ฐ์ผ“ ํ…Œ์ด๋ธ”์ด ํ‘œ์‹œ๋˜์ง€ ์•Š๊ณ  js ์ฝ˜์†”์— ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
application-a35ba2c058c01543bd0e17e5377c39817d3a79131917e530a74dfaea7a7fe689.js:22 > Uncaught TypeError: Cannot read property 'customer_id' of null
    at Function.n._fillUp (application-a35ba2c058c01543bd0e17e5377c39817d3a79131917e530a74dfaea7a7fe689.js:22)
    at Function.n.fullLocal (application-a35ba2c058c01543bd0e17e5377c39817d3a79131917e530a74dfaea7a7fe689.js:21)
    at Object.success (application-a35ba2c058c01543bd0e17e5377c39817d3a79131917e530a74dfaea7a7fe689.js:42)
    at c (application-a35ba2c058c01543bd0e17e5377c39817d3a79131917e530a74dfaea7a7fe689.js:2)
    at Object.fireWith [as resolveWith] (application->a35ba2c058c01543bd0e17e5377c39817d3a79131917e530a74dfaea7a7fe689.js:2)
    at i (application-a35ba2c058c01543bd0e17e5377c39817d3a79131917e530a74dfaea7a7fe689.js:3)
    at XMLHttpRequest.<anonymous> (application-a35ba2c058c01543bd0e17e5377c39817d3a79131917e530a74dfaea7a7fe689.js:3)

๋™์ž‘์„ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„:

  • ๋‹ค์Œ๊ณผ ๊ฐ™์ด API๋ฅผ ํ†ตํ•ด ์ผ๋ถ€ ํ‹ฐ์ผ“์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
export TOKEN=`cat TOKEN`
TICKETS=``curl -H "Authorization: Token token=$TOKEN" https://YOURDOMAINHERE/api/v1/tickets/search?query=group:_delete_these_tickets_|jq ".tickets[]"`
for i in $TICKETS ; do
        echo $I
        curl -H "Authorization: Token token=$TOKEN" -s https://YOURDOMAINHERE/api/v1/tickets/$i -X > DELETE
done

์ด์ œ ํ‹ฐ์ผ“์€ ' https://YOURDOMAINHERE/api/v1/reports/sets ' AJAX ํ˜ธ์ถœ์— ๊ณ„์† ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

duplicate

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@thorsteneckel์ด ๋งํ•œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๊ณ ์ณ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

๋ชจ๋“  3 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @SummerStorm - ์ €๋Š” ๊ณ ๊ฐ ์ปดํ“จํ„ฐ์—์„œ @MrGeneration ๊ณผ ํ•จ๊ป˜ ์ด๊ฒƒ์„ ๋””๋ฒ„๊น…ํ•˜๊ณ  ์žˆ์—ˆ๊ณ  ๊ทผ๋ณธ ์›์ธ๊ณผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ˆ˜์ • ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ธ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ๊ฐ€ Zammad 3.1์—์„œ ์ด๋ฏธ ์ˆ˜์ •๋œ #2611์˜ ์ฆ์ƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค. Zammad ์„ค์น˜๋ฅผ ์ตœ์‹  ์•ˆ์ • ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๊ฒ€์ƒ‰ ์ƒ‰์ธ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•œ ๋‹ค์Œ( zammad run rake searchindex:rebuild ์‹คํ–‰) ๋‹ค์‹œ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ์ง€๊ธˆ์€ ๋‹ซ๊ฒ ์Šต๋‹ˆ๋‹ค.

@thorsteneckel์ด ๋งํ•œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๊ณ ์ณ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰