@posx/core 5.5.561 → 5.5.564

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CLAUDE.md +23 -23
  2. package/LICENSE +21 -21
  3. package/README.md +85 -85
  4. package/build/index.d.ts +17 -0
  5. package/build/index.js +2 -2
  6. package/dev/.stfolder/syncthing-folder-9a95b7.txt +5 -0
  7. package/dev/98894488.xlsx +0 -0
  8. package/dev/HappyThaiSembawang.csv +336 -0
  9. package/dev/KB/create-new-model.md +34 -0
  10. package/dev/KB/markdown-lint.md +14 -0
  11. package/dev/KB/object-clone-pitfalls.md +52 -0
  12. package/dev/KB/readmefirst.md +7 -0
  13. package/dev/Merchants/HappyThaiSembawang.csv +400 -0
  14. package/dev/Merchants/HappyThaiSembawang.xlsx +0 -0
  15. package/dev/Merchants/charen_thai/category.csv +20 -0
  16. package/dev/Merchants/charen_thai/charen_thai_xpos.csv +1021 -0
  17. package/dev/Merchants/charen_thai/convert.cjs +194 -0
  18. package/dev/Merchants/charen_thai/item.csv +183 -0
  19. package/dev/Merchants/charen_thai/modifier.csv +664 -0
  20. package/dev/Product_Import_Template.xlsx +0 -0
  21. package/dev/XPOS Invoice Module.pdf +232 -0
  22. package/dev/convert_menu.cjs +134 -0
  23. package/dev/convert_menu.py +127 -0
  24. package/dev/data/invoice.json +1 -0
  25. package/dev/escpos/receipt.bin +0 -0
  26. package/dev/escpos/receipt.hex +1 -0
  27. package/dev/escpos/receipt.json +1 -0
  28. package/dev/escpos-cli-usage.md +103 -0
  29. package/dev/export/xpos_menu.csv +1021 -0
  30. package/dev/harbor-harness-deployment.md +78 -0
  31. package/dev/incidents/2026-04-01-reprint-timeout.md +33 -0
  32. package/dev/nginx-harbor-harness.conf +84 -0
  33. package/dev/px-cli.md +97 -0
  34. package/dev/test-logs/2026-02.md +5 -0
  35. package/dev/tmp/xpos_product_import(1).csv +338 -0
  36. package/dev/tmp/xpos_product_import_fixed.csv +338 -0
  37. package/dev//344/272/247/345/223/201/345/257/274/345/205/245/346/250/241/346/235/277.xlsx +0 -0
  38. package/jest.config.cjs +36 -36
  39. package/jest.setup.cjs +91 -91
  40. package/package.json +1 -1
  41. package/package.publish.json +121 -121
  42. package/tsdown.config.ts +21 -21
  43. package/vite.config.ts +86 -86
  44. package/AGENTS.md +0 -24
  45. package/memo/technical-docs/01_ARCHITECTURE.md +0 -147
  46. package/memo/technical-docs/02_CORE_BUSINESS.md +0 -292
  47. package/memo/technical-docs/03_UI_COMPONENTS.md +0 -59
  48. package/memo/technical-docs/04_VIEWS.md +0 -82
  49. package/memo/technical-docs/05_DATA_LAYER.md +0 -375
  50. package/memo/technical-docs/06_CROSS_PLATFORM.md +0 -246
  51. package/memo/technical-docs/07_SIMILARITY_INDEX.md +0 -195
  52. package/memo/technical-docs/CHECKPOINT.md +0 -46
  53. package/memo/technical-docs/PROJECT_OVERVIEW.md +0 -122
  54. package/memo/technical-docs/TECHNICAL_DOCS_PLAN.md +0 -77
package/CLAUDE.md CHANGED
@@ -1,24 +1,24 @@
1
- # Claude AI Development Guidelines
2
-
3
- ## Rules you have to follow strictly
4
-
5
- - You are top-notch programmer who always write simplest code to achieve the ideal result
6
- - you are one liner engineers and we believe "The Great Tao is Simple", so try to keep changes small and focused
7
- - keep the changes as minimal as possible
8
- - if or else has one line of code, then { } are not needed and it should be wrote into same line
9
- - DO NOT write uncessary comment do not make newlines within a function and try to make the code compact
10
- - All crucial code should have proper explanation in English
11
- - Keep the simplifications as small and focused within the function or scope.
12
- - Do not overhaul the whole file or codebase which is irrelevant to the current task.
13
-
14
- ## Best Practices for AI-Assisted Development
15
-
16
- 1. **在开始编码前先充分讨论和规划架构,确保理解用户的真实需求和使用场景,避免过度设计。**
17
-
18
- 2. **不要急于提交代码,应该等待用户明确指示后再进行 commit 和 push 操作。**
19
-
20
- 3. **优先选择简洁的实现方式(如函数导出而非类),并删除冗余的中间层方法以保持代码清晰。**
21
-
22
- ---
23
-
1
+ # Claude AI Development Guidelines
2
+
3
+ ## Rules you have to follow strictly
4
+
5
+ - You are top-notch programmer who always write simplest code to achieve the ideal result
6
+ - you are one liner engineers and we believe "The Great Tao is Simple", so try to keep changes small and focused
7
+ - keep the changes as minimal as possible
8
+ - if or else has one line of code, then { } are not needed and it should be wrote into same line
9
+ - DO NOT write uncessary comment do not make newlines within a function and try to make the code compact
10
+ - All crucial code should have proper explanation in English
11
+ - Keep the simplifications as small and focused within the function or scope.
12
+ - Do not overhaul the whole file or codebase which is irrelevant to the current task.
13
+
14
+ ## Best Practices for AI-Assisted Development
15
+
16
+ 1. **在开始编码前先充分讨论和规划架构,确保理解用户的真实需求和使用场景,避免过度设计。**
17
+
18
+ 2. **不要急于提交代码,应该等待用户明确指示后再进行 commit 和 push 操作。**
19
+
20
+ 3. **优先选择简洁的实现方式(如函数导出而非类),并删除冗余的中间层方法以保持代码清晰。**
21
+
22
+ ---
23
+
24
24
  *This file contains guidelines learned from AI-human collaboration to improve development efficiency and code quality.*
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2019 Francisco Hodge
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Francisco Hodge
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,85 +1,85 @@
1
- # 第一阶段
2
- - 1. 创建,更新,删除都是通过 -> Http API
3
- - 2. 读取是通过本地数据库 -> 本地, (例外:订单从云端读取)
4
-
5
- # 第二阶段 (单机版)
6
- 1. 创建,更新,删除,读取都通过本地数据库,然后进行数据和云端同步(Web Worker)
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
- <div align="center">
19
- <img align="center" width="230" src="https://i.imgur.com/iHgtvmg.png" />
20
- <h2>Typescript Library Boilerplate Basic</h2>
21
- <blockquote>Minimal Library Starter Kit for your Typescript projects</blockquote>
22
-
23
- <a href="https://www.npmjs.com/package/@hodgef/ts-library-boilerplate-basic"><img src="https://badgen.net/npm/v/@hodgef/ts-library-boilerplate-basic?color=blue" alt="npm version"></a> <a href="https://github.com/hodgef/ts-library-boilerplate"><img src="https://img.shields.io/github/last-commit/hodgef/ts-library-boilerplate" alt="latest commit"></a> <a href="https://github.com/hodgef/ts-library-boilerplate-basic/actions"><img alt="Build Status" src="https://github.com/hodgef/ts-library-boilerplate-basic/workflows/Build/badge.svg?color=green" /></a> <a href="https://github.com/hodgef/ts-library-boilerplate-basic/actions"> <img alt="Publish Status" src="https://github.com/hodgef/ts-library-boilerplate-basic/workflows/Publish/badge.svg?color=green" /></a>
24
-
25
- <strong>For a plain Javascript alternative, check out [js-library-boilerplate-basic](https://github.com/hodgef/js-library-boilerplate-basic).</strong>
26
-
27
- </div>
28
-
29
- ## ⭐️ Features
30
-
31
- - Webpack 5
32
- - Babel 7
33
- - Hot reloading (`npm start`)
34
- - Automatic Types file generation (index.d.ts)
35
- - UMD exports, so your library works everywhere.
36
- - Jest unit testing
37
- - Customizable file headers for your build [(Example 1)](https://github.com/hodgef/ts-library-boilerplate-basic/blob/master/build/index.js) [(Example2)](https://github.com/hodgef/ts-library-boilerplate-basic/blob/master/build/css/index.css)
38
- - Daily [dependabot](https://dependabot.com) dependency updates
39
-
40
- ## 📦 Getting Started
41
-
42
- ```
43
- git clone https://github.com/hodgef/ts-library-boilerplate-basic.git myLibrary
44
- npm install
45
- ```
46
-
47
- ## 💎 Customization
48
-
49
- > Before shipping, make sure to:
50
-
51
- 1. Edit `LICENSE` file
52
- 2. Edit `package.json` information (These will be used to generate the headers for your built files)
53
- 3. Edit `library: "MyLibrary"` with your library's export name in `./webpack.config.js`
54
-
55
- ## 🚀 Deployment
56
-
57
- 1. `npm publish`
58
- 2. Your users can include your library as usual
59
-
60
- ### npm
61
-
62
- ```
63
- import MyLibrary from 'my-library';
64
- const libraryInstance = new MyLibrary();
65
- ...
66
- ```
67
-
68
- ### self-host/cdn
69
-
70
- ```
71
- <script src="build/index.js"></script>
72
-
73
- const MyLibrary = window.MyLibrary.default;
74
- const libraryInstance = new MyLibrary();
75
- ...
76
- ```
77
-
78
- ## ✅ Libraries built with this boilerplate
79
-
80
- > Made a library using this starter kit? Share it here by [submitting a pull request](https://github.com/hodgef/ts-library-boilerplate-basic/pulls)!
81
-
82
- - [simple-keyboard](https://github.com/hodgef/simple-keyboard) - Javascript Virtual Keyboard
83
- - [react-simple-keyboard](https://github.com/hodgef/react-simple-keyboard) - React Virtual Keyboard
84
- - [simple-keyboard-layouts](https://github.com/hodgef/simple-keyboard-layouts) - Keyboard layouts for simple-keyboard
85
- - [atlas-monaco](https://github.com/datdao/atlas-monaco) - AtlasHCL for monaco editor
1
+ # 第一阶段
2
+ - 1. 创建,更新,删除都是通过 -> Http API
3
+ - 2. 读取是通过本地数据库 -> 本地, (例外:订单从云端读取)
4
+
5
+ # 第二阶段 (单机版)
6
+ 1. 创建,更新,删除,读取都通过本地数据库,然后进行数据和云端同步(Web Worker)
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+ <div align="center">
19
+ <img align="center" width="230" src="https://i.imgur.com/iHgtvmg.png" />
20
+ <h2>Typescript Library Boilerplate Basic</h2>
21
+ <blockquote>Minimal Library Starter Kit for your Typescript projects</blockquote>
22
+
23
+ <a href="https://www.npmjs.com/package/@hodgef/ts-library-boilerplate-basic"><img src="https://badgen.net/npm/v/@hodgef/ts-library-boilerplate-basic?color=blue" alt="npm version"></a> <a href="https://github.com/hodgef/ts-library-boilerplate"><img src="https://img.shields.io/github/last-commit/hodgef/ts-library-boilerplate" alt="latest commit"></a> <a href="https://github.com/hodgef/ts-library-boilerplate-basic/actions"><img alt="Build Status" src="https://github.com/hodgef/ts-library-boilerplate-basic/workflows/Build/badge.svg?color=green" /></a> <a href="https://github.com/hodgef/ts-library-boilerplate-basic/actions"> <img alt="Publish Status" src="https://github.com/hodgef/ts-library-boilerplate-basic/workflows/Publish/badge.svg?color=green" /></a>
24
+
25
+ <strong>For a plain Javascript alternative, check out [js-library-boilerplate-basic](https://github.com/hodgef/js-library-boilerplate-basic).</strong>
26
+
27
+ </div>
28
+
29
+ ## ⭐️ Features
30
+
31
+ - Webpack 5
32
+ - Babel 7
33
+ - Hot reloading (`npm start`)
34
+ - Automatic Types file generation (index.d.ts)
35
+ - UMD exports, so your library works everywhere.
36
+ - Jest unit testing
37
+ - Customizable file headers for your build [(Example 1)](https://github.com/hodgef/ts-library-boilerplate-basic/blob/master/build/index.js) [(Example2)](https://github.com/hodgef/ts-library-boilerplate-basic/blob/master/build/css/index.css)
38
+ - Daily [dependabot](https://dependabot.com) dependency updates
39
+
40
+ ## 📦 Getting Started
41
+
42
+ ```
43
+ git clone https://github.com/hodgef/ts-library-boilerplate-basic.git myLibrary
44
+ npm install
45
+ ```
46
+
47
+ ## 💎 Customization
48
+
49
+ > Before shipping, make sure to:
50
+
51
+ 1. Edit `LICENSE` file
52
+ 2. Edit `package.json` information (These will be used to generate the headers for your built files)
53
+ 3. Edit `library: "MyLibrary"` with your library's export name in `./webpack.config.js`
54
+
55
+ ## 🚀 Deployment
56
+
57
+ 1. `npm publish`
58
+ 2. Your users can include your library as usual
59
+
60
+ ### npm
61
+
62
+ ```
63
+ import MyLibrary from 'my-library';
64
+ const libraryInstance = new MyLibrary();
65
+ ...
66
+ ```
67
+
68
+ ### self-host/cdn
69
+
70
+ ```
71
+ <script src="build/index.js"></script>
72
+
73
+ const MyLibrary = window.MyLibrary.default;
74
+ const libraryInstance = new MyLibrary();
75
+ ...
76
+ ```
77
+
78
+ ## ✅ Libraries built with this boilerplate
79
+
80
+ > Made a library using this starter kit? Share it here by [submitting a pull request](https://github.com/hodgef/ts-library-boilerplate-basic/pulls)!
81
+
82
+ - [simple-keyboard](https://github.com/hodgef/simple-keyboard) - Javascript Virtual Keyboard
83
+ - [react-simple-keyboard](https://github.com/hodgef/react-simple-keyboard) - React Virtual Keyboard
84
+ - [simple-keyboard-layouts](https://github.com/hodgef/simple-keyboard-layouts) - Keyboard layouts for simple-keyboard
85
+ - [atlas-monaco](https://github.com/datdao/atlas-monaco) - AtlasHCL for monaco editor
package/build/index.d.ts CHANGED
@@ -1904,6 +1904,8 @@ interface ICategory extends ICoreCategory {
1904
1904
  * subcategories of the category
1905
1905
  */
1906
1906
  subcategories: Array<ISubcategory>;
1907
+ /** If true, category and its items are excluded from search results */
1908
+ non_searchable?: boolean;
1907
1909
  }
1908
1910
  declare enum CategoryType {
1909
1911
  Product = "product",
@@ -1936,6 +1938,7 @@ declare class Category extends ProductBase implements ICategory {
1936
1938
  max_order: number;
1937
1939
  min_order: number;
1938
1940
  code?: string;
1941
+ non_searchable?: boolean;
1939
1942
  constructor();
1940
1943
  }
1941
1944
  interface ISubcategory extends IProductBase {
@@ -2184,6 +2187,8 @@ interface IItem extends ICoreItem {
2184
2187
  combo_groups: IComboGroup[];
2185
2188
  /** Auto-attached item UIDs that will be added when this item is added */
2186
2189
  attached_items?: string[];
2190
+ /** If true, item is excluded from search results */
2191
+ non_searchable?: boolean;
2187
2192
  }
2188
2193
  declare class Item extends CoreItem implements IItem {
2189
2194
  codename: string;
@@ -2225,6 +2230,7 @@ declare class Item extends CoreItem implements IItem {
2225
2230
  open_editor_panel: boolean;
2226
2231
  open_price_editor: boolean;
2227
2232
  combo_groups: IComboGroup[];
2233
+ non_searchable?: boolean;
2228
2234
  constructor();
2229
2235
  }
2230
2236
  interface IPrice extends IAppCoreModel {
@@ -2911,6 +2917,8 @@ interface IInvoiceCoreLine {
2911
2917
  sent: number;
2912
2918
  /** KDS completed quantity */
2913
2919
  kds_done: number;
2920
+ /** KDS prepared quantity for multi-station kitchen flow */
2921
+ kds_prepared?: number;
2914
2922
  /** Whether cancel slip is printed */
2915
2923
  is_cancel_printed: boolean;
2916
2924
  /** Whether it is selected */
@@ -3130,6 +3138,7 @@ declare class InvoiceCoreLine implements IInvoiceCoreLine {
3130
3138
  quantity: number;
3131
3139
  sent: number;
3132
3140
  kds_done: number;
3141
+ kds_prepared: number;
3133
3142
  is_cancel_printed: boolean;
3134
3143
  selected: boolean;
3135
3144
  sales_user_uid: string;
@@ -3161,6 +3170,7 @@ declare class InvoiceLine extends AppCoreModel implements IInvoiceLine {
3161
3170
  duplicated_from_uid: string;
3162
3171
  sent: number;
3163
3172
  kds_done: number;
3173
+ kds_prepared: number;
3164
3174
  is_cancel_printed: boolean;
3165
3175
  selected: boolean;
3166
3176
  sales_user_uid: string;
@@ -4875,6 +4885,7 @@ declare class ItemService extends AppRemoteService<IItem> implements IItemServic
4875
4885
  readonly moduleName: string;
4876
4886
  readonly methodName: string;
4877
4887
  constructor(http: AxiosInstance, db: Dexie, options: IServiceOptions, moduleName?: string, methodName?: string);
4888
+ /** Search items by name, codename, or barcode, excluding non_searchable items and items in non_searchable categories */
4878
4889
  search(query: string): Promise<IItem[]>;
4879
4890
  addModifierCategory(item: IItem, category: ICoreCategory): Promise<IItem>;
4880
4891
  updateModifierCategory(item: IItem, category: ICoreCategory): Promise<IItem>;
@@ -6150,6 +6161,12 @@ declare function createCSVExportWithHash(categories: ICategory[], products: IIte
6150
6161
  declare function importFromCSV(file: File): Promise<{
6151
6162
  categories: ICategory[];
6152
6163
  products: IItem[];
6164
+ discardedComboItems: {
6165
+ combo: string;
6166
+ group: string;
6167
+ item: string;
6168
+ uid: string;
6169
+ }[];
6153
6170
  }>;
6154
6171
  //#endregion
6155
6172
  //#region src/libs/electron.socket.d.ts