stat2025 commited on
Commit
12ff5ba
ยท
verified ยท
1 Parent(s): a01d38f

Update app.js

Browse files
Files changed (1) hide show
  1. app.js +27 -10
app.js CHANGED
@@ -1,3 +1,4 @@
 
1
  /* v10.4: Smarter splitting using all labels + multi-line "ู†ูˆุน ุงู„ู…ุดูƒู„ุฉ" block */
2
 
3
  const EXPORT_COLUMNS = [
@@ -138,24 +139,41 @@ function findBlockAfterLabel(text, labels, allLabels = START_LABELS){
138
  function splitTickets(raw){
139
  const text = normalizeText(raw);
140
  if(!text) return [];
 
141
  if(TICKET_SEP.test(text)){
142
  return text.split(TICKET_SEP).map(p=>p.trim()).filter(Boolean);
143
  }
144
- const starts = findStartsByLabels(text, START_LABELS)
145
- .sort((a,b)=>a-b)
146
- .filter((pos,i,arr)=> i===0 || (pos - arr[i-1]) >= MIN_SPLIT_SPAN);
147
- if(starts.length >= 2){
 
 
148
  const parts=[];
149
- for(let i=0;i<starts.length;i++){
150
- const s = starts[i];
151
- const e = i+1<starts.length ? starts[i+1] : text.length;
152
  const slice = text.slice(s,e).trim();
153
  if(slice) parts.push(slice);
154
  }
155
- return parts;
156
  }
 
157
  const blocks = text.split(/\n\s*\n+/).map(p=>p.trim()).filter(Boolean);
158
- if(blocks.length>1) return blocks;
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  return [text];
160
  }
161
 
@@ -166,7 +184,6 @@ function extractFields(ticketText){
166
  "ุฑู‚ู… ุงู„ู‡ูˆูŠุฉ":"", "ุฑู‚ู… ุงู„ุฌู‡ุงุฒ":"", "ุฑู‚ู… ุงู„ุฌูˆุงู„":"", "ุงู„ู…ุณุญ":"", "ุงู„ู…ู†ุทู‚ุฉ":""
167
  };
168
 
169
- // ู†ูˆุน ุงู„ู…ุดูƒู„ุฉ: ุงู„ุชู‚ุท ุจู„ูˆูƒ ู…ุชุนุฏุฏ ุงู„ุฃุณุทุฑ ุญุชู‰ ุฃู‚ุฑุจ ู„ูŠุจู„ ุชุงู„ู
170
  let v = findBlockAfterLabel(text, FIELD_ALIASES["ู†ูˆุน ุงู„ู…ุดูƒู„ุฉ"], START_LABELS);
171
  if(v) out["ู†ูˆุน ุงู„ู…ุดูƒู„ุฉ"] = normalizeText(v);
172
 
 
1
+ // app.js
2
  /* v10.4: Smarter splitting using all labels + multi-line "ู†ูˆุน ุงู„ู…ุดูƒู„ุฉ" block */
3
 
4
  const EXPORT_COLUMNS = [
 
139
  function splitTickets(raw){
140
  const text = normalizeText(raw);
141
  if(!text) return [];
142
+
143
  if(TICKET_SEP.test(text)){
144
  return text.split(TICKET_SEP).map(p=>p.trim()).filter(Boolean);
145
  }
146
+
147
+ const startsAll = findStartsByLabels(text, START_LABELS).sort((a,b)=>a-b);
148
+ const filtered = startsAll.filter((pos,i,arr)=> i===0 || (pos - arr[i-1]) >= MIN_SPLIT_SPAN);
149
+ const useThese = (filtered.length >= 2) ? filtered : (startsAll.length >= 2 ? startsAll : []);
150
+
151
+ if(useThese.length >= 2){
152
  const parts=[];
153
+ for(let i=0;i<useThese.length;i++){
154
+ const s = useThese[i];
155
+ const e = i+1<useThese.length ? useThese[i+1] : text.length;
156
  const slice = text.slice(s,e).trim();
157
  if(slice) parts.push(slice);
158
  }
159
+ if(parts.length) return parts;
160
  }
161
+
162
  const blocks = text.split(/\n\s*\n+/).map(p=>p.trim()).filter(Boolean);
163
+ if(blocks.length > 1) return blocks;
164
+
165
+ const niu = findStartsByLabels(text, ["ู†ูˆุน ุงู„ู…ุดูƒู„ุฉ","ู†ูˆุน ุงู„ู…ุดูƒู„ู‡"]).sort((a,b)=>a-b);
166
+ if(niu.length >= 2){
167
+ const parts=[];
168
+ for(let i=0;i<niu.length;i++){
169
+ const s = niu[i];
170
+ const e = i+1<niu.length ? niu[i+1] : text.length;
171
+ const slice = text.slice(s,e).trim();
172
+ if(slice) parts.push(slice);
173
+ }
174
+ if(parts.length) return parts;
175
+ }
176
+
177
  return [text];
178
  }
179
 
 
184
  "ุฑู‚ู… ุงู„ู‡ูˆูŠุฉ":"", "ุฑู‚ู… ุงู„ุฌู‡ุงุฒ":"", "ุฑู‚ู… ุงู„ุฌูˆุงู„":"", "ุงู„ู…ุณุญ":"", "ุงู„ู…ู†ุทู‚ุฉ":""
185
  };
186
 
 
187
  let v = findBlockAfterLabel(text, FIELD_ALIASES["ู†ูˆุน ุงู„ู…ุดูƒู„ุฉ"], START_LABELS);
188
  if(v) out["ู†ูˆุน ุงู„ู…ุดูƒู„ุฉ"] = normalizeText(v);
189