From 8c3790bead91cffeb98831563da7f98e12ce1414 Mon Sep 17 00:00:00 2001 From: Sorawit Bholsithi Date: Sun, 8 Oct 2023 18:29:28 +0700 Subject: [PATCH] fix some bug and update document --- README.md | 31 ++++++++++++++++++------------- app.ts | 2 ++ compose.yaml | 2 ++ libs/create-swagger-spec.ts | 17 ++++++----------- libs/swagger-specs.json | 11 +++++++---- libs/xlsx-template-lib.ts | 6 +++--- package-lock.json | 31 +++++++++++++++++++++++++++++++ package.json | 7 +++++-- templates/xlsx/hello.xlsx | Bin 45034 -> 81737 bytes 9 files changed, 74 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 9e60fe7..797d749 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,38 @@ # report-server-ts -เป็น Web API ออกแบบมาเพื่อสร้างเอกสาร สามารถใช้ frontend โดยตรง เพื่อจะได้ไม่ต้องเขียนโปรแกรมทำเอกสารเฉพาะแต่ละตัวออกมา ปรับปรุงของเดิมจาก +เป็น Web API ออกแบบมาเพื่อสร้างเอกสารจาก templste สามารถใช้ frontend โดยตรง เพื่อจะได้ไม่ต้องทำ backend เพื่อสร้างเอกสารเฉพาะตัวออกมา ## Feature & Change - แก้ไขจากเดิมตัวเดิมเป็น JavaScript เป็น TypeScript ตัด pandoc ออก - ใช้ docx xlsx เป็น template เพื่อสร้างเอกสารคล้าย Mail Merge ลูกค้าออกแบบเองได้ -- รายงานเป็นไฟล์แบบเดียวกับ template หรือแปลงเป็น pdf หรือฟอร์แม็ตอื่นๆได้ -- แปลงไฟล์จาก MS Office เป็น PDF -- โค้ดมีการ obfuscator -- API document ด้วย swagger -- มีโปรแกรมช่วยทดสอบ template แบบง่ายๆให้ +- รายงานที่ได้เป็นไฟล์แบบเดียวกับ template หรือแปลงเป็น pdf หรือฟอร์แม็ตของ LibreOffice ได้ +- แปลงไฟล์จาก MS Office เป็น PDF รองรับการตัดคำไทย +- โค้ดมีการ obfuscator เพื่อลดขนาดและกันลูกค้าเอาโค้ดไปใช้ +- มี Swagger ไว้ทดสอบ API มี libs/swagger-specs.json เพื่อนำเข้า Postman หรือเครื่องมื่อื่นๆได้ +- มีโปรแกรมช่วยทดสอบ template แบบง่ายๆ ให้ทดสอบก่อนเอาเข้าเซิร์ฟเวอร์ - Docker Image จะใช้แบบ Standalone หรือเป็น Microservice ร่วมกับโปรเจ็กอื่นๆได้ ใช้งานทันที +- Docker image เหลือ 1.76GB จากเดิม 3.5GB ## ติดตั้ง -clone project แล้วไปหัวข้อใช้งานได้เลย หัวนี้ไว้เพื่ออ้างอิงเท่านั้น +รันโปรเจ็กบน Linux ,clone project ติดตั้ง Fonts และ LibreOffice ตามวิธีใน Dockerfile แล้วไปหัวข้อการใช้งานได้เลย หัวนี้ไว้เพื่ออ้างอิงเท่านั้น ใช้ node 20.7.0 บน Linux AMD x86-64 ตั้งค่าของ TypeScript [ตามเวปนี้](https://www.geeksforgeeks.org/how-to-use-express-in-typescript/) ให้ใช้ ES module ได้ด้วย ```bash npm i express npm i -D typescript @types/express @types/node ts-node -npm i docx-templates xlsx-template-next swagger-ui-express swagger-jsdoc yaqrcode libreoffice-file-converter -npm i -D @types/swagger-ui-express @types/swagger-jsdoc +npm i docx-templates xlsx-template-next swagger-ui-express swagger-jsdoc yaqrcode cors libreoffice-file-converter +npm i -D @types/swagger-ui-express @types/swagger-jsdoc @types/cors # obfuscate code tools npm i -D javascript-obfuscator # add type support for yaqrcode cd node_modules/yaqrcode wget https://raw.githubusercontent.com/zenozeng/node-yaqrcode/master/index.d.ts + ``` ## การใช้งาน -ดู scripts ใน package.json และ compose.yaml +ดู scripts ใน package.json และ compose.yaml ให้ดูให้เข้าใจ การสร้าง docker อิมเมจ จะต้อง swaggergen,obfuscator ก่อน หลังจากนั้นขึ้น Docker registry +บน production ให้ดู compose.yaml จะต้องนำ template ไปเก็บไว้ที่โฟลเดอร์ templates ด้วย ```bash npm run dev npm run build @@ -38,10 +41,12 @@ npm run obfuscator npm run preview npm run build:docker docker compose up -d +npm run push:docker ``` ## ทดสอบ template -ไปที่โฟลเดอร์ test-run มีโปรแกรมเพื่อทดสอบ template ที่ออกมามาก่อน ไปว่างในเซิร์ฟเวอร์ ใช้ค่า default ได้เลย แปลงไปไฟล์แบบต่างๆที่ Libreoffice รองรับได้ ควรทดสอบรูปแบบข้อมูล(json) ให้เข้ากับ template(docx,xlsx) ถ้าเกิดปัญหา ถ้าค่าไม่ครบ template แบบ docx จะ error log ที่เซิร์ฟเวอร์ ส่วน xlsx ไม่แจ้งปัญหา แค่ไม่แสดงค่านั้นๆ คู่มือการใช้งานที่สมบูรณ์ให้ไปที่เวปของ library ที่ใช้ + +ไปที่โฟลเดอร์ test-run มีโปรแกรมเพื่อทดสอบ template ให้ทดสอบที่นี้ก่อนเอา template ไปวางในเซิร์ฟเวอร์ มีค่า default สำหรับการทดสอบที่ใช้ได้เลย สามารถแปลงไปไฟล์แบบต่างๆที่ Libreoffice รองรับ(จำเป็นต้องติดตั้ง ) ควรทดสอบรูปแบบข้อมูล(json) ให้เข้ากับ template(docx,xlsx) ถ้าเกิดปัญหา ถ้าค่าไม่ครบ template แบบ docx จะ error log ที่เซิร์ฟเวอร์ ส่วน xlsx ไม่แจ้งปัญหา แค่ไม่แสดงค่านั้นๆ คู่มือการใช้งานที่สมบูรณ์ให้ไปที่เวปของ library ที่ใช้ [docx-templates](https://www.npmjs.com/package/docx-templates) และ [xlsx-template-next](https://www.npmjs.com/package/xlsx-template-next) @@ -66,9 +71,9 @@ docker run --name rserver -p 80:3000 docker.frappet.com/demo/report-server # Bun Note เริ่มแรกในการพอร์ตจาก JavaScript ลองใช้ Bun(TypeScript) แทน Node.js ตัว Bun ค่อนข้างน่าประทับใจใช้ TypeScript โดยตรงไม่ต้องตั้งค่า หรือติดตั้งเพิ่ม แต่มีปัญหากับ libreoffice-file-converter ต้องแก้ค่าใน package.json - -docker-template คาดว่าเป็นปัญหาจาก eval ทำให้ ส่วน EXEC กับ custom function ทำงานไม่ได้ เลยกลับมาใช้ node +docker-template ฟังก์ชั่นพื้นฐานใช้งานพอได้ ส่วน EXEC กับ custom function ทำงานไม่ได้ คาดว่าเป็นปัญหาจาก eval เลยกลับมาใช้ node เหมือนเดิม ## Todo - รองรับ Authentication Header เพื่อให้ยูสเซอร์ในระบบใช้งานได้เท่านั้น - หาทางสร้างเอกสารจาก text เช่น Markdown เป็นเอกสาร MS Office +- น่าจะทำ license key เผื่อขายให้ลูกค้าติดตั้งใช้งานต่อ (โค้ดที่ผ่าน obfuscator แล้วย้อนกลับมาได้ง่ายหรือเปล่า ?) \ No newline at end of file diff --git a/app.ts b/app.ts index 31a9958..01a597b 100644 --- a/app.ts +++ b/app.ts @@ -4,6 +4,7 @@ * จะใช้ Node.js เป็น reverse proxy ไปหา pandoc ที่ swan ขึ้นมา * demo frontent อยู่ในโฟลเดอร์ public */ +import cors from "cors" import swaggerspecs from "./libs/swagger-specs.json" import swaggerUi from "swagger-ui-express" import express, { Express, Request, Response } from 'express' @@ -12,6 +13,7 @@ import { xlsxTemplateRoute } from './libs/xlsx-template-lib' import { convertTemplateRoute } from './libs/convert-libs' const app: Express = express() const port: number = Number(process.env.PORT) || 80; +app.use(cors()); app.use(express.json()); //‘application/json’ app.use(express.raw()); //‘application/octet-stream’ app.use(express.urlencoded({ extended: true })); diff --git a/compose.yaml b/compose.yaml index bc27d04..3a2f0c8 100644 --- a/compose.yaml +++ b/compose.yaml @@ -2,6 +2,8 @@ version: "3.2" services: report-server: image: docker.frappet.com/demo/report-server:latest + restart: unless-stopped + mem_limit: 500m ports: - 3000:80 volumes: diff --git a/libs/create-swagger-spec.ts b/libs/create-swagger-spec.ts index 76bae0e..d636621 100644 --- a/libs/create-swagger-spec.ts +++ b/libs/create-swagger-spec.ts @@ -6,24 +6,19 @@ const swaggerOptions = { openapi: "3.1.0", info: { title: "Report Server", - version: "0.1.0", + version: "0.8.0", description: - "Advance Create and convert document API for microservice.", + "Advance create and convert document API for microservice era.", license: { name: "by Frappet", url: "https://frappet.com", }, }, servers: [ - { - url: "https://report-server.frappet.synology.me", - }, - { - url: "http://localhost:3000", - }, - { - url: "http://192.168.2.100:3000", - }, + {url: "https://report-server.frappet.synology.me"}, + {url:"https://bma-ehr.frappet.synology.me/"}, + {url: "http://localhost:3000"}, + {url: "http://192.168.2.100:3000"}, ], }, apis: ["./libs/*.ts"], diff --git a/libs/swagger-specs.json b/libs/swagger-specs.json index 83dcfd0..4d07627 100644 --- a/libs/swagger-specs.json +++ b/libs/swagger-specs.json @@ -2,8 +2,8 @@ "openapi": "3.1.0", "info": { "title": "Report Server", - "version": "0.1.0", - "description": "Advance Create and convert document API for microservice.", + "version": "0.8.0", + "description": "Advance create and convert document API for microservice era.", "license": { "name": "by Frappet", "url": "https://frappet.com" @@ -13,6 +13,9 @@ { "url": "https://report-server.frappet.synology.me" }, + { + "url": "https://bma-ehr.frappet.synology.me/" + }, { "url": "http://localhost:3000" }, @@ -281,7 +284,7 @@ "201": { "description": "เอกสารถูกสร้างขึ้น created.", "content": { - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { "schema": { "type": "string", "format": "binary" @@ -293,7 +296,7 @@ "format": "binary" } }, - "application/vnd.oasis.opendocument.text": { + "application/vnd.oasis.opendocument.spreadsheet": { "schema": { "type": "string", "format": "binary" diff --git a/libs/xlsx-template-lib.ts b/libs/xlsx-template-lib.ts index c115bd8..a22b793 100644 --- a/libs/xlsx-template-lib.ts +++ b/libs/xlsx-template-lib.ts @@ -8,7 +8,7 @@ import { LibreOfficeFileConverter } from 'libreoffice-file-converter'; const TEMPLATE_FOLDER_NAME = "templates/xlsx" /** - * docxTemplate Uses docx-template to convert input data and template to output buffer. + * xlsxTemplate Uses xlsx-template-next to convert input data and template to output buffer. * You have to handle exception throw by function * template keep in folder templates * @param {String} base base path of caller relate to template-docx foler (no trail slash) @@ -92,7 +92,7 @@ xlsxTemplateRoute.get("/", async function (req, res) { * 201: * description: เอกสารถูกสร้างขึ้น created. * content: - * application/vnd.openxmlformats-officedocument.wordprocessingml.document: + * application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: * schema: * type: string * format: binary @@ -100,7 +100,7 @@ xlsxTemplateRoute.get("/", async function (req, res) { * schema: * type: string * format: binary - * application/vnd.oasis.opendocument.text: + * application/vnd.oasis.opendocument.spreadsheet: * schema: * type: string * format: binary diff --git a/package-lock.json b/package-lock.json index b1fba62..22c5d2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "cors": "^2.8.5", "docx-templates": "^4.11.3", "express": "^4.18.2", "libreoffice-file-converter": "^1.2.1", @@ -18,6 +19,7 @@ "yaqrcode": "^0.2.1" }, "devDependencies": { + "@types/cors": "^2.8.14", "@types/express": "^4.17.18", "@types/node": "^20.8.2", "@types/swagger-jsdoc": "^6.0.1", @@ -180,6 +182,15 @@ "@types/node": "*" } }, + "node_modules/@types/cors": { + "version": "2.8.14", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.14.tgz", + "integrity": "sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/express": { "version": "4.17.18", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.18.tgz", @@ -678,6 +689,18 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -1711,6 +1734,14 @@ "node": ">=0.10.0" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", diff --git a/package.json b/package.json index 109d734..a9af52d 100644 --- a/package.json +++ b/package.json @@ -4,17 +4,19 @@ "description": "docx-template มีปัญหากับ bun คาดว่าเป็นปัญหาจาก eval", "scripts": { "dev": "PORT=3000 nodemon app.ts", - "swaggergen":"ts-node libs/create-swagger-spec.ts ", + "swaggergen": "ts-node libs/create-swagger-spec.ts ", "build": "ts-node libs/create-swagger-spec.ts && tsc && cp libs/swagger-specs.json dist/libs", "serve": "PORT=3000 node dist/app.js", "obfuscator": "tsc && javascript-obfuscator ./dist --output ./dist2 && cp libs/swagger-specs.json dist/libs", "preview": "PORT=3000 node dist2/app.js", - "build:docker": "ts-node libs/create-swagger-spec.ts && tsc && javascript-obfuscator ./dist --output ./dist2&& cp libs/swagger-specs.json dist2/libs && docker build -t docker.frappet.com/demo/report-server ." + "build:docker": "ts-node libs/create-swagger-spec.ts && tsc && javascript-obfuscator ./dist --output ./dist2&& cp libs/swagger-specs.json dist2/libs && docker build -t docker.frappet.com/demo/report-server .", + "push:docker": "docker push docker.frappet.com/demo/report-server" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { + "cors": "^2.8.5", "docx-templates": "^4.11.3", "express": "^4.18.2", "libreoffice-file-converter": "^1.2.1", @@ -24,6 +26,7 @@ "yaqrcode": "^0.2.1" }, "devDependencies": { + "@types/cors": "^2.8.14", "@types/express": "^4.17.18", "@types/node": "^20.8.2", "@types/swagger-jsdoc": "^6.0.1", diff --git a/templates/xlsx/hello.xlsx b/templates/xlsx/hello.xlsx index d553f452df743003cab90d4ac9f1b78d86c255ae..ef0e136b1cea15550ffeb23ba0ff2fe92a0c4410 100644 GIT binary patch delta 45364 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 delta 8799 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