@feedmepos/mf-hrm-portal 2.3.0-dev.3 → 2.3.0-dev.4

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 (45) hide show
  1. package/dist/{ApprovalCodeList-SjyWZghY.js → ApprovalCodeList-Pbk3MAP_.js} +2 -2
  2. package/dist/{AuditLogList-aTI3QeO0.js → AuditLogList-B4gAQD41.js} +3 -3
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang--JTV7non.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-DPbHx_I8.js} +2 -2
  4. package/dist/{EmployeeList-D2Q_2ZE0.js → EmployeeList-0KpegAhT.js} +4 -4
  5. package/dist/{GrantUserList-6YXLPuHR.js → GrantUserList-BUkzqot_.js} +3 -3
  6. package/dist/{Main-CFIWlIaC.js → Main-CNk6IUSX.js} +2 -2
  7. package/dist/{Main-B-a6F9g8.js → Main-DgmmoN5E.js} +5 -5
  8. package/dist/{Main-dSqOeBRJ.js → Main-Dx_th1rt.js} +9 -9
  9. package/dist/{PermissionSetList-DxkaPCMs.js → PermissionSetList-CzZGiCsv.js} +5 -5
  10. package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DnKckKZ0.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-t_OkpC_R.js} +827 -827
  11. package/dist/{RoleList-DQZ_w5uM.js → RoleList-BE4zTMIf.js} +7 -7
  12. package/dist/{ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Dr6QruG6.js → ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-BPBc1yaM.js} +1 -1
  13. package/dist/{ScheduleGeneralPage-CvskrXcV.js → ScheduleGeneralPage-OvoLCcup.js} +6 -6
  14. package/dist/{ScheduleModal.vue_vue_type_script_setup_true_lang-C4On5sVD.js → ScheduleModal.vue_vue_type_script_setup_true_lang-BOkU6VUe.js} +209 -178
  15. package/dist/SchedulePage-CujQTlC7.js +18257 -0
  16. package/dist/{SchedulePositionPage-BGrZBU3g.js → SchedulePositionPage-DJ7HABNZ.js} +8 -8
  17. package/dist/{TeamMemberList-BiTHVJwE.js → TeamMemberList-DcMBkqKA.js} +6 -6
  18. package/dist/{TimesheetList-CUkYacGW.js → TimesheetList-EFkDNiyH.js} +5 -5
  19. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-B1Y587O-.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-DK7LWwL3.js} +2 -2
  20. package/dist/{app-CAKCDrbJ.js → app-Bljy7Tiw.js} +8 -8
  21. package/dist/app.js +1 -1
  22. package/dist/{dayjs.min-CZ8QYRoc.js → dayjs.min-6PYBuPpr.js} +1 -1
  23. package/dist/{employee-D56eWEFe.js → employee-BabFWzgV.js} +3 -3
  24. package/dist/{iteration-BVJdyLNq.js → iteration-DFJixFmV.js} +1 -1
  25. package/dist/{lodash-BcIRkQPW.js → lodash-CfHZzOs8.js} +1 -1
  26. package/dist/{role-B-eZDaBX.js → role-DzPtXGaE.js} +1 -1
  27. package/dist/{rule-D6AIfx8b.js → rule-DM5JuuR6.js} +2 -2
  28. package/dist/src/api/schedule/index.d.ts +4 -2
  29. package/dist/src/composables/useMessage.d.ts +8 -2
  30. package/dist/src/types/schedule.d.ts +1 -1
  31. package/dist/src/views/scheduling/components/ScheduleAutoScheduleDetailsModal.vue.d.ts +6 -0
  32. package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +33 -0
  33. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +13 -0
  34. package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +10 -0
  35. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +114 -4
  36. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +1 -0
  37. package/dist/src/views/scheduling/schedule-state.d.ts +106 -106
  38. package/dist/src/views/scheduling/schedule-store.d.ts +4 -2
  39. package/dist/src/views/scheduling/types.d.ts +3 -0
  40. package/dist/style.css +1 -1
  41. package/dist/tsconfig.app.tsbuildinfo +1 -1
  42. package/dist/{useReportPermissions-DHA0jrIr.js → useReportPermissions-vTUP3ZOL.js} +3 -3
  43. package/package.json +2 -1
  44. package/dist/SchedulePage-CW-K836l.js +0 -18248
  45. package/dist/src/views/scheduling/composables/scheduleAutoSolver.d.ts +0 -23
@@ -1,10 +1,10 @@
1
1
  import { defineComponent as M, ref as A, onMounted as x, computed as z, createElementBlock as a, openBlock as l, createElementVNode as o, createVNode as i, withCtx as d, unref as s, toDisplayString as c, createTextVNode as r, normalizeClass as h, createCommentVNode as E, withDirectives as S, withKeys as b, vModelText as P, Fragment as C, renderList as V, withModifiers as g } from "vue";
2
2
  import { useRouter as F } from "vue-router";
3
3
  import { useSnackbar as B } from "@feedmepos/ui-library";
4
- import { R as I } from "./app-CAKCDrbJ.js";
5
- import { aj as L, ak as O, a3 as R, ag as u, ah as j } from "./ScheduleModal.vue_vue_type_script_setup_true_lang-C4On5sVD.js";
6
- import { u as K, a as T, _ as U } from "./ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Dr6QruG6.js";
7
- import { _ as W } from "./_plugin-vue_export-helper-CHgC5LLL.js";
4
+ import { R as I } from "./app-Bljy7Tiw.js";
5
+ import { an as L, ao as O, a7 as R, ak as u, al as K } from "./ScheduleModal.vue_vue_type_script_setup_true_lang-BOkU6VUe.js";
6
+ import { u as T, a as U, _ as W } from "./ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-BPBc1yaM.js";
7
+ import { _ as j } from "./_plugin-vue_export-helper-CHgC5LLL.js";
8
8
  const q = { class: "main" }, H = {
9
9
  id: "viewPositions",
10
10
  class: "view"
@@ -25,7 +25,7 @@ const q = { class: "main" }, H = {
25
25
  setup(ve) {
26
26
  const y = A(null);
27
27
  L(y);
28
- const _ = F(), w = B(), k = (f, e = "info") => w.open({ message: f, type: e }), t = K({ notify: k }), v = O(), m = T(void 0, { notify: k });
28
+ const _ = F(), w = B(), k = (f, e = "info") => w.open({ message: f, type: e }), t = T({ notify: k }), v = O(), m = U(void 0, { notify: k });
29
29
  x(async () => {
30
30
  await v.resolve() && await R(/* @__PURE__ */ new Date());
31
31
  });
@@ -77,7 +77,7 @@ const q = { class: "main" }, H = {
77
77
  e[10] || (e[10] = o("div", { class: "sp-sub" }, "What your staff can do — the same catalogue across every outlet.", -1)),
78
78
  o("div", J, [
79
79
  e[8] || (e[8] = o("span", { class: "outlet-bar-lbl" }, "Outlet", -1)),
80
- i(j, {
80
+ i(K, {
81
81
  class: "outlet-sel",
82
82
  "aria-label": "Outlet being configured",
83
83
  searchable: "",
@@ -255,10 +255,10 @@ const q = { class: "main" }, H = {
255
255
  ])
256
256
  ])
257
257
  ]),
258
- i(U, { modal: s(m) }, null, 8, ["modal"])
258
+ i(W, { modal: s(m) }, null, 8, ["modal"])
259
259
  ], 512));
260
260
  }
261
- }), be = /* @__PURE__ */ W(ce, [["__scopeId", "data-v-40bada6a"]]);
261
+ }), be = /* @__PURE__ */ j(ce, [["__scopeId", "data-v-40bada6a"]]);
262
262
  export {
263
263
  be as default
264
264
  };
@@ -3,20 +3,20 @@ import { useI18n as Ve, useCoreStore as Ze } from "@feedmepos/mf-common";
3
3
  import { useSnackbar as Le, useDialog as Qe, useBreakpoints as Ye, components as Oe } from "@feedmepos/ui-library";
4
4
  import { u as ps } from "./useDebounce-B8ZPVS5C.js";
5
5
  import { S as ye } from "./SelectFilter-CG13h83-.js";
6
- import { v as Te, m as vs, O as fs, _ as bs, a as hs } from "./app-CAKCDrbJ.js";
6
+ import { v as Te, m as vs, O as fs, _ as bs, a as hs } from "./app-Bljy7Tiw.js";
7
7
  import { u as ys, _ as gs } from "./useDiscardConfirm-DPhEV6v0.js";
8
8
  import { _ as _s } from "./TableEmptyState.vue_vue_type_script_setup_true_lang-IfAZmWr0.js";
9
9
  import { s as Us, _ as Ss, a as xs, b as Fs, c as Ps } from "./PasscodePinField.vue_vue_type_script_setup_true_lang-CqG0v0Sz.js";
10
10
  import { u as He } from "./useLoading-JFoghhRz.js";
11
11
  import { n as es } from "./string-VNuQNweN.js";
12
- import { l as Pe } from "./lodash-BcIRkQPW.js";
13
- import { c as he } from "./iteration-BVJdyLNq.js";
14
- import { t as _e, u as ss, c as Ae, b as qe, m as $e, d as ts, p as Ge, i as Is, j as Ke, k as ws, l as Vs, n as ks, o as Rs, q as Cs } from "./rule-D6AIfx8b.js";
15
- import { u as as } from "./role-B-eZDaBX.js";
12
+ import { l as Pe } from "./lodash-CfHZzOs8.js";
13
+ import { c as he } from "./iteration-DFJixFmV.js";
14
+ import { t as _e, u as ss, c as Ae, b as qe, m as $e, d as ts, p as Ge, i as Is, j as Ke, k as ws, l as Vs, n as ks, o as Rs, q as Cs } from "./rule-DM5JuuR6.js";
15
+ import { u as as } from "./role-DzPtXGaE.js";
16
16
  import { u as ls, i as $s } from "./PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-fe-Rdwn4.js";
17
17
  import "./useAppStore-d_nHyK5u.js";
18
18
  import { g as ze, b as We, u as os } from "./restaurant-D7PEQjPY.js";
19
- import { _ as Ms } from "./PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DnKckKZ0.js";
19
+ import { _ as Ms } from "./PortalPermissionEditor.vue_vue_type_script_setup_true_lang-t_OkpC_R.js";
20
20
  import { _ as Ns } from "./_plugin-vue_export-helper-CHgC5LLL.js";
21
21
  var Ue = /* @__PURE__ */ ((o) => (o.Update = "Update", o.Remove = "Remove", o))(Ue || {});
22
22
  const Ie = "__unassigned__";
@@ -1,17 +1,17 @@
1
1
  import { ref as d, computed as g, defineComponent as pe, onMounted as fe, watch as Z, resolveComponent as u, createElementBlock as P, openBlock as E, Fragment as ee, createVNode as l, createElementVNode as i, unref as r, withCtx as b, createCommentVNode as ve, toDisplayString as O, createTextVNode as he, isRef as ge, renderList as we, createBlock as te, nextTick as ye } from "vue";
2
- import { d as v } from "./dayjs.min-CZ8QYRoc.js";
2
+ import { d as v } from "./dayjs.min-6PYBuPpr.js";
3
3
  import { useI18n as _e } from "@feedmepos/mf-common";
4
4
  import { useSnackbar as be, components as xe } from "@feedmepos/ui-library";
5
5
  import { S as De } from "./SelectFilter-CG13h83-.js";
6
- import { _ as Se } from "./app-CAKCDrbJ.js";
6
+ import { _ as Se } from "./app-Bljy7Tiw.js";
7
7
  import { _ as Ve } from "./TableEmptyState.vue_vue_type_script_setup_true_lang-IfAZmWr0.js";
8
8
  import { u as ke } from "./useLoading-JFoghhRz.js";
9
- import { g as Ce, s as Fe } from "./iteration-BVJdyLNq.js";
9
+ import { g as Ce, s as Fe } from "./iteration-DFJixFmV.js";
10
10
  import { f as Ye } from "./utils-BZkjJbju.js";
11
11
  import { n as Le } from "./string-VNuQNweN.js";
12
- import { u as Me } from "./employee-D56eWEFe.js";
12
+ import { u as Me } from "./employee-BabFWzgV.js";
13
13
  import { u as Te } from "./restaurant-D7PEQjPY.js";
14
- import { u as Ie } from "./TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-B1Y587O-.js";
14
+ import { u as Ie } from "./TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-DK7LWwL3.js";
15
15
  import { _ as Re } from "./_plugin-vue_export-helper-CHgC5LLL.js";
16
16
  function $e(x, a) {
17
17
  return ["years", "months"].find((S) => {
@@ -1,8 +1,8 @@
1
- import { d as i } from "./dayjs.min-CZ8QYRoc.js";
1
+ import { d as i } from "./dayjs.min-6PYBuPpr.js";
2
2
  import { defineStore as p, storeToRefs as T } from "pinia";
3
3
  import { ref as l } from "vue";
4
4
  import { b as c, g as y } from "./restaurant-D7PEQjPY.js";
5
- import { s as S } from "./iteration-BVJdyLNq.js";
5
+ import { s as S } from "./iteration-DFJixFmV.js";
6
6
  import { i as f, f as g } from "./utils-BZkjJbju.js";
7
7
  const u = {
8
8
  async readTimesheets(t, e) {
@@ -9833,16 +9833,16 @@ const _e = (e) => ({
9833
9833
  }
9834
9834
  ]
9835
9835
  }
9836
- }), jc = ot(pe(() => import("./Main-dSqOeBRJ.js"))), Ec = ot(pe(() => import("./Main-B-a6F9g8.js"))), Pc = ot(
9837
- pe(() => import("./AuditLogList-aTI3QeO0.js"))
9838
- ), Oc = ot(pe(() => import("./Main-CFIWlIaC.js"))), Gc = pe(() => import("./ApprovalCodeList-SjyWZghY.js")), Yc = pe(() => import("./GrantUserList-6YXLPuHR.js")), Vc = pe(() => import("./EmployeeList-D2Q_2ZE0.js")), Fc = pe(() => import("./RoleList-DQZ_w5uM.js")), Sc = pe(() => import("./TimesheetList-CUkYacGW.js")), kc = pe(() => import("./TeamMemberList-BiTHVJwE.js")), Rc = pe(
9839
- () => import("./PermissionSetList-DxkaPCMs.js")
9836
+ }), jc = ot(pe(() => import("./Main-Dx_th1rt.js"))), Ec = ot(pe(() => import("./Main-DgmmoN5E.js"))), Pc = ot(
9837
+ pe(() => import("./AuditLogList-B4gAQD41.js"))
9838
+ ), Oc = ot(pe(() => import("./Main-CNk6IUSX.js"))), Gc = pe(() => import("./ApprovalCodeList-Pbk3MAP_.js")), Yc = pe(() => import("./GrantUserList-BUkzqot_.js")), Vc = pe(() => import("./EmployeeList-0KpegAhT.js")), Fc = pe(() => import("./RoleList-BE4zTMIf.js")), Sc = pe(() => import("./TimesheetList-EFkDNiyH.js")), kc = pe(() => import("./TeamMemberList-DcMBkqKA.js")), Rc = pe(
9839
+ () => import("./PermissionSetList-CzZGiCsv.js")
9840
9840
  ), Hc = Ws(
9841
- ot(pe(() => import("./SchedulePage-CW-K836l.js")))
9841
+ ot(pe(() => import("./SchedulePage-CujQTlC7.js")))
9842
9842
  ), Ic = Ws(
9843
- ot(pe(() => import("./SchedulePositionPage-BGrZBU3g.js")))
9843
+ ot(pe(() => import("./SchedulePositionPage-DJ7HABNZ.js")))
9844
9844
  ), Tc = Ws(
9845
- ot(pe(() => import("./ScheduleGeneralPage-CvskrXcV.js")))
9845
+ ot(pe(() => import("./ScheduleGeneralPage-OvoLCcup.js")))
9846
9846
  ), ou = [
9847
9847
  {
9848
9848
  path: "/",
@@ -10888,7 +10888,7 @@ const iu = /* @__PURE__ */ at({
10888
10888
  };
10889
10889
  }
10890
10890
  });
10891
- var xs = { name: "@feedmepos/mf-hrm-portal", version: "2.3.0-dev.3", mode: "fmmf" };
10891
+ var xs = { name: "@feedmepos/mf-hrm-portal", version: "2.3.0-dev.4", mode: "fmmf" };
10892
10892
  console.log(
10893
10893
  `%c${xs.name}%c v${xs.version} %c${xs.mode}`,
10894
10894
  "background:#1f1f1f;color:#fff;padding:2px 6px;border-radius:3px 0 0 3px",
package/dist/app.js CHANGED
@@ -1,4 +1,4 @@
1
- import { h as e, i as r, r as o } from "./app-CAKCDrbJ.js";
1
+ import { h as e, i as r, r as o } from "./app-Bljy7Tiw.js";
2
2
  export {
3
3
  e as FmApp,
4
4
  r as i18nMessages,
@@ -1,4 +1,4 @@
1
- import { g as Q, f as K } from "./app-CAKCDrbJ.js";
1
+ import { g as Q, f as K } from "./app-Bljy7Tiw.js";
2
2
  var E = { exports: {} };
3
3
  (function(V, X) {
4
4
  (function(W, k) {
@@ -1,10 +1,10 @@
1
- import { d as g } from "./dayjs.min-CZ8QYRoc.js";
1
+ import { d as g } from "./dayjs.min-6PYBuPpr.js";
2
2
  import { defineStore as $, storeToRefs as x } from "pinia";
3
3
  import { ref as m } from "vue";
4
- import { s as E } from "./iteration-BVJdyLNq.js";
4
+ import { s as E } from "./iteration-DFJixFmV.js";
5
5
  import { b as l, g as f, u as I } from "./restaurant-D7PEQjPY.js";
6
6
  import { i as v } from "./utils-BZkjJbju.js";
7
- import { u as P } from "./role-B-eZDaBX.js";
7
+ import { u as P } from "./role-DzPtXGaE.js";
8
8
  const o = {
9
9
  async readEmployees() {
10
10
  return f(await l().get("/pos-users"));
@@ -1,4 +1,4 @@
1
- import { f as B } from "./app-CAKCDrbJ.js";
1
+ import { f as B } from "./app-Bljy7Tiw.js";
2
2
  var ma = {}, Zt = {}, l = {}, ji = {}, Ei = {}, Ii = {}, Dn = {};
3
3
  (function(e) {
4
4
  Object.defineProperty(e, "__esModule", { value: !0 }), e.getParsedType = e.ZodParsedType = e.util = void 0;
@@ -1,4 +1,4 @@
1
- import { f as jt } from "./app-CAKCDrbJ.js";
1
+ import { f as jt } from "./app-Bljy7Tiw.js";
2
2
  var Jr = { exports: {} };
3
3
  /**
4
4
  * @license
@@ -1,7 +1,7 @@
1
1
  import { defineStore as x, storeToRefs as b } from "pinia";
2
2
  import { ref as w } from "vue";
3
3
  import { useCoreStore as B } from "@feedmepos/mf-common";
4
- import { s as v } from "./iteration-BVJdyLNq.js";
4
+ import { s as v } from "./iteration-DFJixFmV.js";
5
5
  import { g as f, b as p, u as I } from "./restaurant-D7PEQjPY.js";
6
6
  const R = {
7
7
  async readRoles() {
@@ -1,5 +1,5 @@
1
- import { s as W, c as q, e as y } from "./iteration-BVJdyLNq.js";
2
- import { e as O, b as V, c as _, v as F, n as h, O as ee, D as M } from "./app-CAKCDrbJ.js";
1
+ import { s as W, c as q, e as y } from "./iteration-DFJixFmV.js";
2
+ import { e as O, b as V, c as _, v as F, n as h, O as ee, D as M } from "./app-Bljy7Tiw.js";
3
3
  import { s as se } from "./utils-BZkjJbju.js";
4
4
  import { g, b as v, q as x, u as te } from "./restaurant-D7PEQjPY.js";
5
5
  import { defineStore as z, storeToRefs as K } from "pinia";
@@ -1,11 +1,13 @@
1
- import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBoard, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleBulkSaveAssignmentsReq, FdtoScheduleBulkSaveAssignmentsResult, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleEmployeeConfig, FdtoScheduleDemand, FdtoScheduleEmployee, FdtoSchedulePosition, FdtoScheduleSaveAssignmentReq, FdtoScheduleSaveDemandReq, FdtoScheduleSaveEmployeeConfigsReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleReplaceDemandReq, FdtoScheduleSettings, FdtoScheduleScheduleDay, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleUpdateTimeOffStatusReq } from '@/types/schedule';
1
+ import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBoard, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleBulkSaveAssignmentsReq, FdtoScheduleBulkSaveAssignmentsResult, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleEmployeeConfig, FdtoScheduleDemand, FdtoScheduleEmployee, FdtoSchedulePosition, FdtoScheduleSaveAssignmentReq, FdtoScheduleSaveDemandReq, FdtoScheduleSaveEmployeeConfigsReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleReplaceDemandReq, FdtoScheduleSettings, FdtoScheduleScheduleDay, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleUpdateTimeOffStatusReq } from '@/types/schedule';
2
2
  declare const ScheduleAPI: {
3
3
  listEmployeeProfiles(employeeIds?: string[]): Promise<FdtoScheduleEmployee[]>;
4
4
  listEmployeeConfigs(restaurantId: string): Promise<FdtoScheduleEmployeeConfig[]>;
5
5
  saveEmployeeConfigs(restaurantId: string, req: FdtoScheduleSaveEmployeeConfigsReq): Promise<FdtoScheduleEmployeeConfig[]>;
6
6
  getSettings(restaurantId: string): Promise<FdtoScheduleSettings>;
7
7
  saveSettings(restaurantId: string, req: FdtoScheduleSaveSettingsReq): Promise<FdtoScheduleSettings>;
8
- generateAutoSchedule(restaurantId: string, req: FdtoScheduleAutoScheduleReq): Promise<FdtoScheduleAutoScheduleResult>;
8
+ generateAutoSchedule(restaurantId: string, req: FdtoScheduleAutoScheduleGenerateReq): Promise<FdtoScheduleAutoScheduleResult>;
9
+ getAutoScheduleCapabilities(restaurantId: string): Promise<FdtoScheduleAutoScheduleCapabilities>;
10
+ applyAutoSchedule(restaurantId: string, req: FdtoScheduleAutoScheduleApplyReq): Promise<FdtoScheduleAutoScheduleApplyResult>;
9
11
  /** One outlet's whole board over `[from, to]` (inclusive, 'YYYY-MM-DD'). */
10
12
  readBoard(restaurantId: string, from: string, to: string): Promise<FdtoScheduleBoard>;
11
13
  createTimeOff(restaurantId: string, req: FdtoScheduleCreateTimeOffReq): Promise<FdtoScheduleTimeOff>;
@@ -1,4 +1,10 @@
1
+ import { SnackbarPosition } from '@feedmepos/ui-library';
2
+ export interface MessageOptions {
3
+ /** Where the snackbar is anchored. Defaults to the library's own default (top-right). */
4
+ position?: SnackbarPosition;
5
+ }
1
6
  export declare function useMessage(): {
2
- success: (message: string) => void;
3
- error: (message: string) => void;
7
+ success: (message: string, options?: MessageOptions) => void;
8
+ error: (message: string, options?: MessageOptions) => void;
4
9
  };
10
+ export { SnackbarPosition };
@@ -5,7 +5,7 @@
5
5
  * only view-model commands that intentionally do not cross HTTP (for example
6
6
  * replacing a period made up of several persisted demand rows).
7
7
  */
8
- export type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleObjective, FdtoScheduleAutoScheduleProposal, FdtoScheduleAutoScheduleReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBoard, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleBulkSaveAssignmentsReq, FdtoScheduleBulkSaveAssignmentsResult, FdtoScheduleBreak, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleEmployeeConfig, FdtoScheduleDayOperatingHours, FdtoScheduleDemand, FdtoScheduleEmployee, FdtoScheduleOptionalDateRange, FdtoSchedulePayRate, FdtoSchedulePosition, FdtoSchedulePositionRef, FdtoSchedulePositionSelectorReq, FdtoScheduleRestaurantProfile, FdtoScheduleSaveAssignmentReq, FdtoScheduleSaveDemandReq, FdtoScheduleReplaceDemandReq, FdtoScheduleSaveEmployeeConfigsReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleScheduleDay, FdtoScheduleSettings, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleTimeOffDayPart, FdtoScheduleTimeOffQuery, FdtoScheduleTimeOffStatus, FdtoScheduleTimeOffType, FdtoScheduleUpdateTimeOffStatusReq, } from '@feedmepos/hrm-schedule-contract';
8
+ export type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleObjective, FdtoScheduleAutoSchedulePlanner, FdtoScheduleAutoScheduleProposal, FdtoScheduleAutoScheduleRejection, FdtoScheduleAutoScheduleResult, FdtoScheduleAutoScheduleTiming, FdtoScheduleAutoScheduleUnfilledNeed, FdtoScheduleBoard, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleBulkSaveAssignmentsReq, FdtoScheduleBulkSaveAssignmentsResult, FdtoScheduleBreak, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleEmployeeConfig, FdtoScheduleDayOperatingHours, FdtoScheduleDemand, FdtoScheduleEmployee, FdtoScheduleOptionalDateRange, FdtoSchedulePayRate, FdtoSchedulePosition, FdtoSchedulePositionRef, FdtoSchedulePositionSelectorReq, FdtoScheduleRestaurantProfile, FdtoScheduleSaveAssignmentReq, FdtoScheduleSaveDemandReq, FdtoScheduleReplaceDemandReq, FdtoScheduleSaveEmployeeConfigsReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleScheduleDay, FdtoScheduleSettings, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleTimeOffDayPart, FdtoScheduleTimeOffQuery, FdtoScheduleTimeOffStatus, FdtoScheduleTimeOffType, FdtoScheduleUpdateTimeOffStatusReq, } from '@feedmepos/hrm-schedule-contract';
9
9
  /** UI-level replacement command. The store expands these periods into flat
10
10
  * ShiftDemand rows before calling the shared HTTP contract. */
11
11
  export interface ScheduleReplaceDemandReq {
@@ -0,0 +1,6 @@
1
+ import type { ScheduleAutoScheduleApi } from '../composables/useScheduleAutoSchedule';
2
+ type __VLS_Props = {
3
+ autoSchedule: ScheduleAutoScheduleApi;
4
+ };
5
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -0,0 +1,33 @@
1
+ import type { FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleObjective, FdtoScheduleAutoSchedulePlanner, FdtoScheduleAutoScheduleProposal, FdtoScheduleAutoScheduleResult } from '@/types/schedule';
2
+ import { ApiError } from '@/api';
3
+ import type { Proposal } from '../types';
4
+ /** ISO date of `dayIdx` in the week starting `weekKey` (YYYY-MM-DD, local arithmetic). */
5
+ export declare function dateOfProposal(weekKey: string, dayIdx: number): string;
6
+ /** Server proposals → board proposals for the week whose Monday is `weekKey`. A proposal whose
7
+ * date is not one of `dateKeyOf(0..RANGE_LEN-1)` or whose employee the board does not hold is
8
+ * dropped. Ids come from `nextId` so they stay unique across weeks. */
9
+ export declare function proposalsFromResult(proposals: FdtoScheduleAutoScheduleProposal[], weekKey: string, dateKeyOf: (dayIdx: number) => string | null, nextId: () => number, holds: (empId: number) => boolean): Proposal[];
10
+ /** The apply body for the accepted proposals, each re-dated from its own week and day. */
11
+ export declare function applyRequestOf(proposals: Proposal[], allowOvertime: boolean): FdtoScheduleAutoScheduleApplyReq;
12
+ export interface ClassifiedExplanation {
13
+ kind: 'reject' | 'ai' | 'plain';
14
+ text: string;
15
+ }
16
+ /** Sorts one `result.explanations` line into what the Details panel renders it as. The matched
17
+ * prefix is stripped from `text` in every case — the panel re-adds its own label/marker for
18
+ * `reject` and `ai`, so the raw wire prefix never doubles up with it. */
19
+ export declare function classifyExplanation(line: string): ClassifiedExplanation;
20
+ /** Whether `error` is a server refusal whose own message is meant for the user: a client error
21
+ * (0 < status < 500). A network failure (0) or a server error (5xx) is not. */
22
+ export declare function isClientRefusal(error: unknown): error is ApiError;
23
+ /** A client-error refusal shows its own message; a network failure or 5xx shows the generic one. */
24
+ export declare function generateErrorMessage(error: unknown): string;
25
+ /** The result shown when "fill gaps" is off: nothing proposed, one explanation. */
26
+ export declare function fillGapsOffResult(week: {
27
+ from: string;
28
+ to: string;
29
+ }, objective: FdtoScheduleAutoScheduleObjective, allowOvertime: boolean): FdtoScheduleAutoScheduleResult;
30
+ /** The snackbar shown once a run finishes, whether it went to the server or (fill gaps off) was
31
+ * answered locally. `wallMs` is measured client-side around the request — it is what the manager
32
+ * actually waited, not just the server's own `timing.totalMs`. */
33
+ export declare function generateDoneMessage(result: FdtoScheduleAutoScheduleResult, requested: FdtoScheduleAutoSchedulePlanner, wallMs: number): string;
@@ -0,0 +1,13 @@
1
+ export type RemyDemandScope = {
2
+ mode: 'day';
3
+ isoDate: string;
4
+ label: string;
5
+ } | {
6
+ mode: 'weekday';
7
+ weekday: string;
8
+ } | {
9
+ mode: 'weekdays';
10
+ };
11
+ /** The sentence prefilled into the host Remy panel. Names the outlet the way a manager knows it;
12
+ * Remy resolves it to an id itself (hrm_find_outlet), so no identifier appears in the text. */
13
+ export declare function remyDemandPrompt(outletName: string, scope: RemyDemandScope): string;
@@ -0,0 +1,10 @@
1
+ import { useAppStore } from '@feedmepos/mf-remy-panel';
2
+ export interface RemyActivateOptions {
3
+ prompt?: string;
4
+ forceNewConversation?: boolean;
5
+ }
6
+ export interface RemyAppStoreApi {
7
+ store: ReturnType<typeof useAppStore>;
8
+ activate: (options: RemyActivateOptions) => Promise<void>;
9
+ }
10
+ export declare function useRemyAppStore(): RemyAppStoreApi;
@@ -1,4 +1,4 @@
1
- import type { FdtoScheduleAutoScheduleObjective } from '@/types/schedule';
1
+ import type { FdtoScheduleAutoScheduleObjective, FdtoScheduleAutoSchedulePlanner } from '@/types/schedule';
2
2
  import type { Proposal } from '../types';
3
3
  import type { ScheduleBoardApi } from './useScheduleBoard';
4
4
  import type { ScheduleDemandApi } from './useScheduleDemand';
@@ -6,6 +6,7 @@ export type ScheduleAutoScheduleStep = 'options' | 'summary';
6
6
  export interface ScheduleAutoScheduleOptions {
7
7
  fillGaps: boolean;
8
8
  objective: FdtoScheduleAutoScheduleObjective;
9
+ planner: FdtoScheduleAutoSchedulePlanner;
9
10
  allowOvertime: boolean;
10
11
  /** Shown as preferences in the dialog but not sent: the generator takes no input for them yet
11
12
  * (availability and time off are always respected; patterns and cost ride on the objective). */
@@ -13,30 +14,54 @@ export interface ScheduleAutoScheduleOptions {
13
14
  followPatterns: boolean;
14
15
  costEfficient: boolean;
15
16
  }
16
- /** Backend-powered draft generation and local proposal review. Generation never writes;
17
- * accepted proposals use the board's existing assignment persistence path. */
17
+ /** Backend-powered draft generation and local proposal review — the engine lives in hr-backend;
18
+ * this composable only maps its result onto the board and lets a manager review it. Generation
19
+ * never writes; accepted proposals use the board's existing assignment persistence path. */
18
20
  export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand: ScheduleDemandApi): {
19
21
  wizardOpen: import("vue").Ref<boolean, boolean>;
20
22
  step: import("vue").Ref<ScheduleAutoScheduleStep, ScheduleAutoScheduleStep>;
21
23
  options: {
22
24
  fillGaps: boolean;
23
25
  objective: FdtoScheduleAutoScheduleObjective;
26
+ planner: FdtoScheduleAutoSchedulePlanner;
24
27
  allowOvertime: boolean;
25
28
  respectAvailability: boolean;
26
29
  followPatterns: boolean;
27
30
  costEfficient: boolean;
28
31
  };
32
+ planners: import("vue").Ref<("GREEDY" | "LLM")[], ("GREEDY" | "LLM")[]>;
33
+ plannerChoice: import("vue").ComputedRef<boolean>;
29
34
  generating: import("vue").Ref<boolean, boolean>;
30
35
  generateError: import("vue").Ref<string | null, string | null>;
31
36
  result: import("vue").Ref<{
37
+ objective: "BALANCED" | "SERVICE" | "LOWER_COST" | "STABLE_HOURS";
38
+ allowOvertime: boolean;
32
39
  proposals: {
33
40
  date: string;
34
41
  startTime: string;
35
42
  endTime: string;
43
+ positionId: string | null;
36
44
  employeeId: string;
45
+ employeeName: string;
37
46
  position: string;
47
+ reason: string;
38
48
  }[];
39
49
  unfilledCount: number;
50
+ unfilledNeeds: {
51
+ date: string;
52
+ startTime: string;
53
+ endTime: string;
54
+ position: string | null;
55
+ short: number;
56
+ excluded: {
57
+ occupied: number;
58
+ notQualified: number;
59
+ weeklyCap: number;
60
+ rest: number;
61
+ dayOff: number;
62
+ dayCap: number;
63
+ };
64
+ }[];
40
65
  metrics: {
41
66
  minimumCoveragePercent: number;
42
67
  recommendedCoveragePercent: number;
@@ -64,15 +89,43 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
64
89
  };
65
90
  explanations: string[];
66
91
  solver: string;
92
+ week: {
93
+ from: string;
94
+ to: string;
95
+ };
96
+ timing: {
97
+ totalMs: number;
98
+ modelMs: number | null;
99
+ };
67
100
  } | null, {
101
+ objective: "BALANCED" | "SERVICE" | "LOWER_COST" | "STABLE_HOURS";
102
+ allowOvertime: boolean;
68
103
  proposals: {
69
104
  date: string;
70
105
  startTime: string;
71
106
  endTime: string;
107
+ positionId: string | null;
72
108
  employeeId: string;
109
+ employeeName: string;
73
110
  position: string;
111
+ reason: string;
74
112
  }[];
75
113
  unfilledCount: number;
114
+ unfilledNeeds: {
115
+ date: string;
116
+ startTime: string;
117
+ endTime: string;
118
+ position: string | null;
119
+ short: number;
120
+ excluded: {
121
+ occupied: number;
122
+ notQualified: number;
123
+ weeklyCap: number;
124
+ rest: number;
125
+ dayOff: number;
126
+ dayCap: number;
127
+ };
128
+ }[];
76
129
  metrics: {
77
130
  minimumCoveragePercent: number;
78
131
  recommendedCoveragePercent: number;
@@ -100,15 +153,43 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
100
153
  };
101
154
  explanations: string[];
102
155
  solver: string;
156
+ week: {
157
+ from: string;
158
+ to: string;
159
+ };
160
+ timing: {
161
+ totalMs: number;
162
+ modelMs: number | null;
163
+ };
103
164
  } | {
165
+ objective: "BALANCED" | "SERVICE" | "LOWER_COST" | "STABLE_HOURS";
166
+ allowOvertime: boolean;
104
167
  proposals: {
105
168
  date: string;
106
169
  startTime: string;
107
170
  endTime: string;
171
+ positionId: string | null;
108
172
  employeeId: string;
173
+ employeeName: string;
109
174
  position: string;
175
+ reason: string;
110
176
  }[];
111
177
  unfilledCount: number;
178
+ unfilledNeeds: {
179
+ date: string;
180
+ startTime: string;
181
+ endTime: string;
182
+ position: string | null;
183
+ short: number;
184
+ excluded: {
185
+ occupied: number;
186
+ notQualified: number;
187
+ weeklyCap: number;
188
+ rest: number;
189
+ dayOff: number;
190
+ dayCap: number;
191
+ };
192
+ }[];
112
193
  metrics: {
113
194
  minimumCoveragePercent: number;
114
195
  recommendedCoveragePercent: number;
@@ -136,6 +217,14 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
136
217
  };
137
218
  explanations: string[];
138
219
  solver: string;
220
+ week: {
221
+ from: string;
222
+ to: string;
223
+ };
224
+ timing: {
225
+ totalMs: number;
226
+ modelMs: number | null;
227
+ };
139
228
  } | null>;
140
229
  gapCount: import("vue").ComputedRef<number>;
141
230
  hasDemand: import("vue").ComputedRef<boolean>;
@@ -154,6 +243,7 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
154
243
  start: string;
155
244
  end: string;
156
245
  role: string;
246
+ positionId?: string | null | undefined;
157
247
  openId?: number | undefined;
158
248
  status: "pending" | "rejected";
159
249
  weekKey?: string | undefined;
@@ -174,6 +264,26 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
174
264
  toggleReject: (id: number) => void;
175
265
  rejectAll: () => void;
176
266
  exitReview: () => void;
177
- apply: () => number;
267
+ apply: () => Promise<number | null>;
268
+ applying: import("vue").Ref<boolean, boolean>;
269
+ applyRejections: import("vue").Ref<{
270
+ employeeName: string;
271
+ day: string;
272
+ time: string;
273
+ message: string;
274
+ }[], {
275
+ employeeName: string;
276
+ day: string;
277
+ time: string;
278
+ message: string;
279
+ }[] | {
280
+ employeeName: string;
281
+ day: string;
282
+ time: string;
283
+ message: string;
284
+ }[]>;
285
+ applyError: import("vue").Ref<string | null, string | null>;
286
+ detailsOpen: import("vue").Ref<boolean, boolean>;
287
+ toggleDetails: () => void;
178
288
  };
179
289
  export type ScheduleAutoScheduleApi = ReturnType<typeof useScheduleAutoSchedule>;
@@ -136,6 +136,7 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
136
136
  word: string;
137
137
  }[]>;
138
138
  suggest: () => void;
139
+ askRemy: () => Promise<void>;
139
140
  acceptSuggestion: () => void;
140
141
  dismissSuggestion: () => void;
141
142
  canCopy: import("vue").ComputedRef<boolean>;