@objectstack/platform-objects 9.10.0 → 10.0.0

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.
package/dist/index.js CHANGED
@@ -380,6 +380,19 @@ var SysUser = data.ObjectSchema.create({
380
380
  required: false,
381
381
  group: "Profile"
382
382
  }),
383
+ // ── Organization ─────────────────────────────────────────────
384
+ manager_id: data.Field.lookup("sys_user", {
385
+ label: "Manager",
386
+ required: false,
387
+ group: "Organization",
388
+ description: "This user's direct manager. Forms the reporting chain the `own_and_reports` hierarchy scope walks (ADR-0057 / @objectstack/security-enterprise)."
389
+ }),
390
+ primary_business_unit_id: data.Field.lookup("sys_business_unit", {
391
+ label: "Primary Business Unit",
392
+ required: false,
393
+ group: "Organization",
394
+ description: "The user's primary business unit \u2014 a denormalised projection of sys_business_unit_member.is_primary, maintained by plugin-sharing (ADR-0057 addendum D12). Lets a user-lookup filter candidates by business unit without traversing the membership junction. Do not edit directly; set it via business-unit membership."
395
+ }),
383
396
  // ── System (auto-managed, hidden from create/edit forms) ─────
384
397
  id: data.Field.text({
385
398
  label: "User ID",
@@ -1160,7 +1173,10 @@ var SysMember = data.ObjectSchema.create({
1160
1173
  }),
1161
1174
  organization_id: data.Field.lookup("sys_organization", {
1162
1175
  label: "Organization",
1163
- required: true
1176
+ // Optional: single-tenant has no sys_organization row and no auto-stamp
1177
+ // (org-scoping is multi-tenant-only). Multi-tenant: OrgScopingPlugin stamps it
1178
+ // and tenant-isolation RLS hides null-org rows (fail-closed). ADR-0057 addendum.
1179
+ required: false
1164
1180
  }),
1165
1181
  user_id: data.Field.lookup("sys_user", {
1166
1182
  label: "User",
@@ -1347,7 +1363,10 @@ var SysInvitation = data.ObjectSchema.create({
1347
1363
  }),
1348
1364
  organization_id: data.Field.lookup("sys_organization", {
1349
1365
  label: "Organization",
1350
- required: true
1366
+ // Optional: single-tenant has no sys_organization row and no auto-stamp
1367
+ // (org-scoping is multi-tenant-only). Multi-tenant: OrgScopingPlugin stamps it
1368
+ // and tenant-isolation RLS hides null-org rows (fail-closed). ADR-0057 addendum.
1369
+ required: false
1351
1370
  }),
1352
1371
  email: data.Field.email({
1353
1372
  label: "Email",
@@ -1507,8 +1526,13 @@ var SysTeam = data.ObjectSchema.create({
1507
1526
  }),
1508
1527
  organization_id: data.Field.lookup("sys_organization", {
1509
1528
  label: "Organization",
1510
- required: true,
1511
- description: "Parent organization for this team",
1529
+ // Optional: single-tenant deployments have no organization row (org-scoping
1530
+ // is multi-tenant-only, nothing auto-stamps one) — requiring it would make
1531
+ // the object uncreatable single-tenant. In multi-tenant, OrgScopingPlugin
1532
+ // auto-stamps this from the active tenant and tenant-isolation RLS hides any
1533
+ // null-org row (fail-closed). ADR-0057 addendum.
1534
+ required: false,
1535
+ description: "Parent organization for this team. Null in single-tenant; auto-stamped in multi-tenant.",
1512
1536
  group: "Identity"
1513
1537
  }),
1514
1538
  // ── System ───────────────────────────────────────────────────
@@ -1637,24 +1661,42 @@ var SysTeamMember = data.ObjectSchema.create({
1637
1661
  mru: false
1638
1662
  }
1639
1663
  });
1640
- var SysDepartment = data.ObjectSchema.create({
1641
- name: "sys_department",
1642
- label: "Department",
1643
- pluralLabel: "Departments",
1664
+ var SysBusinessUnit = data.ObjectSchema.create({
1665
+ name: "sys_business_unit",
1666
+ label: "Business Unit",
1667
+ pluralLabel: "Business Units",
1644
1668
  icon: "building",
1645
1669
  isSystem: true,
1646
1670
  managedBy: "platform",
1647
- description: "Hierarchical org-skeleton node (department / division / business unit / office).",
1671
+ description: "Canonical Business Unit tree \u2014 hierarchical org/data-partition node (company / division / department / region / office). ADR-0057 D2.",
1648
1672
  displayNameField: "name",
1649
1673
  titleFormat: "{name}",
1650
- compactLayout: ["name", "kind", "parent_department_id", "manager_user_id"],
1674
+ compactLayout: ["name", "kind", "parent_business_unit_id", "manager_user_id"],
1651
1675
  listViews: {
1676
+ // Org chart — the hierarchy view. Surfaces the self-referencing
1677
+ // `parent_business_unit_id` tree (ADR-0057 D2) as an indented, expand/
1678
+ // collapse tree-grid. Listed first so it's the default tab; the grids
1679
+ // below stay for search / filter / bulk edit.
1680
+ org_chart: {
1681
+ type: "tree",
1682
+ name: "org_chart",
1683
+ label: "Org Chart",
1684
+ data: { provider: "object", object: "sys_business_unit" },
1685
+ columns: ["name", "kind", "manager_user_id", "active"],
1686
+ tree: {
1687
+ parentField: "parent_business_unit_id",
1688
+ labelField: "name",
1689
+ fields: ["kind", "manager_user_id", "active"],
1690
+ defaultExpandedDepth: 1
1691
+ },
1692
+ sort: [{ field: "name", order: "asc" }]
1693
+ },
1652
1694
  active: {
1653
1695
  type: "grid",
1654
1696
  name: "active",
1655
1697
  label: "Active",
1656
- data: { provider: "object", object: "sys_department" },
1657
- columns: ["name", "code", "kind", "parent_department_id", "manager_user_id", "effective_from"],
1698
+ data: { provider: "object", object: "sys_business_unit" },
1699
+ columns: ["name", "code", "kind", "parent_business_unit_id", "manager_user_id", "effective_from"],
1658
1700
  filter: [{ field: "active", operator: "equals", value: true }],
1659
1701
  sort: [{ field: "name", order: "asc" }],
1660
1702
  pagination: { pageSize: 100 }
@@ -1663,7 +1705,7 @@ var SysDepartment = data.ObjectSchema.create({
1663
1705
  type: "grid",
1664
1706
  name: "inactive",
1665
1707
  label: "Inactive",
1666
- data: { provider: "object", object: "sys_department" },
1708
+ data: { provider: "object", object: "sys_business_unit" },
1667
1709
  columns: ["name", "code", "kind", "effective_to"],
1668
1710
  filter: [{ field: "active", operator: "equals", value: false }],
1669
1711
  sort: [{ field: "effective_to", order: "desc" }],
@@ -1673,8 +1715,8 @@ var SysDepartment = data.ObjectSchema.create({
1673
1715
  type: "grid",
1674
1716
  name: "by_kind",
1675
1717
  label: "By Kind",
1676
- data: { provider: "object", object: "sys_department" },
1677
- columns: ["kind", "name", "code", "parent_department_id", "manager_user_id", "active"],
1718
+ data: { provider: "object", object: "sys_business_unit" },
1719
+ columns: ["kind", "name", "code", "parent_business_unit_id", "manager_user_id", "active"],
1678
1720
  sort: [{ field: "kind", order: "asc" }, { field: "name", order: "asc" }],
1679
1721
  grouping: { fields: [{ field: "kind", order: "asc", collapsed: false }] },
1680
1722
  pagination: { pageSize: 100 }
@@ -1683,8 +1725,8 @@ var SysDepartment = data.ObjectSchema.create({
1683
1725
  type: "grid",
1684
1726
  name: "all_departments",
1685
1727
  label: "All",
1686
- data: { provider: "object", object: "sys_department" },
1687
- columns: ["name", "code", "kind", "parent_department_id", "manager_user_id", "active"],
1728
+ data: { provider: "object", object: "sys_business_unit" },
1729
+ columns: ["name", "code", "kind", "parent_business_unit_id", "manager_user_id", "active"],
1688
1730
  sort: [{ field: "name", order: "asc" }],
1689
1731
  pagination: { pageSize: 100 }
1690
1732
  }
@@ -1707,7 +1749,7 @@ var SysDepartment = data.ObjectSchema.create({
1707
1749
  group: "Identity"
1708
1750
  }),
1709
1751
  kind: data.Field.select(
1710
- ["company", "division", "department", "team", "office", "cost_center"],
1752
+ ["company", "division", "department", "office", "cost_center"],
1711
1753
  {
1712
1754
  label: "Kind",
1713
1755
  required: true,
@@ -1717,23 +1759,28 @@ var SysDepartment = data.ObjectSchema.create({
1717
1759
  }
1718
1760
  ),
1719
1761
  // ── Hierarchy ────────────────────────────────────────────────
1720
- parent_department_id: data.Field.lookup("sys_department", {
1721
- label: "Parent Department",
1762
+ parent_business_unit_id: data.Field.lookup("sys_business_unit", {
1763
+ label: "Parent Business Unit",
1722
1764
  required: false,
1723
1765
  description: "Self-reference for the org tree. Null = root of tenant.",
1724
1766
  group: "Hierarchy"
1725
1767
  }),
1726
1768
  organization_id: data.Field.lookup("sys_organization", {
1727
1769
  label: "Organization",
1728
- required: true,
1729
- description: "Tenant scope.",
1770
+ // Optional: single-tenant deployments have no organization row (org-scoping
1771
+ // is multi-tenant-only, nothing auto-stamps one) — requiring it would make
1772
+ // the object uncreatable single-tenant. In multi-tenant, OrgScopingPlugin
1773
+ // auto-stamps this from the active tenant and tenant-isolation RLS hides any
1774
+ // null-org row (fail-closed). ADR-0057 addendum.
1775
+ required: false,
1776
+ description: "Tenant scope. Null in single-tenant; auto-stamped in multi-tenant.",
1730
1777
  group: "Hierarchy"
1731
1778
  }),
1732
1779
  // ── Leadership ───────────────────────────────────────────────
1733
1780
  manager_user_id: data.Field.lookup("sys_user", {
1734
- label: "Department Head",
1781
+ label: "Business Unit Head",
1735
1782
  required: false,
1736
- description: "User responsible for this org unit (department head / lead).",
1783
+ description: "User responsible for this org unit (business unit head / lead).",
1737
1784
  group: "Leadership"
1738
1785
  }),
1739
1786
  // ── Lifecycle ────────────────────────────────────────────────
@@ -1747,13 +1794,13 @@ var SysDepartment = data.ObjectSchema.create({
1747
1794
  effective_from: data.Field.datetime({
1748
1795
  label: "Effective From",
1749
1796
  required: false,
1750
- description: "When this department came into existence (HRIS sync).",
1797
+ description: "When this business unit came into existence (HRIS sync).",
1751
1798
  group: "Lifecycle"
1752
1799
  }),
1753
1800
  effective_to: data.Field.datetime({
1754
1801
  label: "Effective To",
1755
1802
  required: false,
1756
- description: "When this department was retired (HRIS sync).",
1803
+ description: "When this business unit was retired (HRIS sync).",
1757
1804
  group: "Lifecycle"
1758
1805
  }),
1759
1806
  external_ref: data.Field.text({
@@ -1765,7 +1812,7 @@ var SysDepartment = data.ObjectSchema.create({
1765
1812
  }),
1766
1813
  // ── System ───────────────────────────────────────────────────
1767
1814
  id: data.Field.text({
1768
- label: "Department ID",
1815
+ label: "Business Unit ID",
1769
1816
  required: true,
1770
1817
  readonly: true,
1771
1818
  group: "System"
@@ -1785,7 +1832,7 @@ var SysDepartment = data.ObjectSchema.create({
1785
1832
  },
1786
1833
  indexes: [
1787
1834
  { fields: ["organization_id"] },
1788
- { fields: ["parent_department_id"] },
1835
+ { fields: ["parent_business_unit_id"] },
1789
1836
  { fields: ["code", "organization_id"], unique: true },
1790
1837
  { fields: ["active"] }
1791
1838
  ],
@@ -1798,16 +1845,16 @@ var SysDepartment = data.ObjectSchema.create({
1798
1845
  mru: false
1799
1846
  }
1800
1847
  });
1801
- var SysDepartmentMember = data.ObjectSchema.create({
1802
- name: "sys_department_member",
1803
- label: "Department Member",
1804
- pluralLabel: "Department Members",
1848
+ var SysBusinessUnitMember = data.ObjectSchema.create({
1849
+ name: "sys_business_unit_member",
1850
+ label: "Business Unit Member",
1851
+ pluralLabel: "Business Unit Members",
1805
1852
  icon: "user-cog",
1806
1853
  isSystem: true,
1807
1854
  managedBy: "platform",
1808
- description: "User assignment to a department (matrix-org friendly, effective-dated).",
1809
- titleFormat: "{user_id} in {department_id}",
1810
- compactLayout: ["user_id", "department_id", "role_in_department", "is_primary"],
1855
+ description: "User assignment to a business unit (matrix-org friendly, effective-dated).",
1856
+ titleFormat: "{user_id} in {business_unit_id}",
1857
+ compactLayout: ["user_id", "business_unit_id", "role_in_business_unit", "is_primary"],
1811
1858
  fields: {
1812
1859
  id: data.Field.text({
1813
1860
  label: "Member ID",
@@ -1815,8 +1862,8 @@ var SysDepartmentMember = data.ObjectSchema.create({
1815
1862
  readonly: true,
1816
1863
  group: "System"
1817
1864
  }),
1818
- department_id: data.Field.lookup("sys_department", {
1819
- label: "Department",
1865
+ business_unit_id: data.Field.lookup("sys_business_unit", {
1866
+ label: "Business Unit",
1820
1867
  required: true,
1821
1868
  group: "Assignment"
1822
1869
  }),
@@ -1825,10 +1872,10 @@ var SysDepartmentMember = data.ObjectSchema.create({
1825
1872
  required: true,
1826
1873
  group: "Assignment"
1827
1874
  }),
1828
- role_in_department: data.Field.select(
1875
+ role_in_business_unit: data.Field.select(
1829
1876
  ["member", "lead", "deputy"],
1830
1877
  {
1831
- label: "Role in Department",
1878
+ label: "Role in Business Unit",
1832
1879
  required: false,
1833
1880
  defaultValue: "member",
1834
1881
  description: "`lead` is the day-to-day head; `deputy` may stand in for the lead in approval routing.",
@@ -1839,7 +1886,7 @@ var SysDepartmentMember = data.ObjectSchema.create({
1839
1886
  label: "Primary Assignment",
1840
1887
  required: false,
1841
1888
  defaultValue: true,
1842
- description: "When the user is in multiple departments, this marks the canonical one for reporting.",
1889
+ description: "When the user is in multiple business units, this marks the canonical one for reporting.",
1843
1890
  group: "Assignment"
1844
1891
  }),
1845
1892
  effective_from: data.Field.datetime({
@@ -1866,7 +1913,7 @@ var SysDepartmentMember = data.ObjectSchema.create({
1866
1913
  })
1867
1914
  },
1868
1915
  indexes: [
1869
- { fields: ["department_id", "user_id"], unique: true },
1916
+ { fields: ["business_unit_id", "user_id"], unique: true },
1870
1917
  { fields: ["user_id"] },
1871
1918
  { fields: ["is_primary"] }
1872
1919
  ],
@@ -4565,10 +4612,10 @@ var SETUP_NAV_CONTRIBUTIONS = [
4565
4612
  priority: BASE_PRIORITY,
4566
4613
  items: [
4567
4614
  { id: "nav_users", type: "object", label: "Users", objectName: "sys_user", icon: "user" },
4568
- { id: "nav_departments", type: "object", label: "Departments", objectName: "sys_department", icon: "building", requiresObject: "sys_department" },
4615
+ { id: "nav_business_units", type: "object", label: "Business Units", objectName: "sys_business_unit", icon: "building", requiresObject: "sys_business_unit" },
4569
4616
  { id: "nav_teams", type: "object", label: "Teams", objectName: "sys_team", icon: "users-round" },
4570
- { id: "nav_organizations", type: "object", label: "Organizations", objectName: "sys_organization", icon: "building-2" },
4571
- { id: "nav_invitations", type: "object", label: "Invitations", objectName: "sys_invitation", icon: "mail" }
4617
+ { id: "nav_organizations", type: "object", label: "Organizations", objectName: "sys_organization", icon: "building-2", requiresService: "org-scoping" },
4618
+ { id: "nav_invitations", type: "object", label: "Invitations", objectName: "sys_invitation", icon: "mail", requiresService: "org-scoping" }
4572
4619
  ]
4573
4620
  },
4574
4621
  {
@@ -5302,6 +5349,12 @@ var enObjects = {
5302
5349
  image: {
5303
5350
  label: "Profile Image"
5304
5351
  },
5352
+ manager_id: {
5353
+ label: "Manager"
5354
+ },
5355
+ primary_business_unit_id: {
5356
+ label: "Primary Business Unit"
5357
+ },
5305
5358
  id: {
5306
5359
  label: "User ID"
5307
5360
  },
@@ -5834,9 +5887,9 @@ var enObjects = {
5834
5887
  }
5835
5888
  }
5836
5889
  },
5837
- sys_department: {
5838
- label: "Department",
5839
- pluralLabel: "Departments",
5890
+ sys_business_unit: {
5891
+ label: "Business Unit",
5892
+ pluralLabel: "Business Units",
5840
5893
  description: "Hierarchical org-skeleton node (department / division / business unit / office).",
5841
5894
  fields: {
5842
5895
  name: {
@@ -5853,13 +5906,12 @@ var enObjects = {
5853
5906
  company: "company",
5854
5907
  division: "division",
5855
5908
  department: "department",
5856
- team: "team",
5857
5909
  office: "office",
5858
5910
  cost_center: "cost_center"
5859
5911
  }
5860
5912
  },
5861
- parent_department_id: {
5862
- label: "Parent Department",
5913
+ parent_business_unit_id: {
5914
+ label: "Parent Business Unit",
5863
5915
  help: "Self-reference for the org tree. Null = root of tenant."
5864
5916
  },
5865
5917
  organization_id: {
@@ -5867,8 +5919,8 @@ var enObjects = {
5867
5919
  help: "Tenant scope."
5868
5920
  },
5869
5921
  manager_user_id: {
5870
- label: "Department Head",
5871
- help: "User responsible for this org unit (department head / lead)."
5922
+ label: "Business Unit Head",
5923
+ help: "User responsible for this org unit (business unit head / lead)."
5872
5924
  },
5873
5925
  active: {
5874
5926
  label: "Active",
@@ -5876,18 +5928,18 @@ var enObjects = {
5876
5928
  },
5877
5929
  effective_from: {
5878
5930
  label: "Effective From",
5879
- help: "When this department came into existence (HRIS sync)."
5931
+ help: "When this business unit came into existence (HRIS sync)."
5880
5932
  },
5881
5933
  effective_to: {
5882
5934
  label: "Effective To",
5883
- help: "When this department was retired (HRIS sync)."
5935
+ help: "When this business unit was retired (HRIS sync)."
5884
5936
  },
5885
5937
  external_ref: {
5886
5938
  label: "External Reference",
5887
5939
  help: "ID in upstream HRIS (Workday / SAP HR / \u5317\u68EE)."
5888
5940
  },
5889
5941
  id: {
5890
- label: "Department ID"
5942
+ label: "Business Unit ID"
5891
5943
  },
5892
5944
  created_at: {
5893
5945
  label: "Created At"
@@ -5911,22 +5963,22 @@ var enObjects = {
5911
5963
  }
5912
5964
  }
5913
5965
  },
5914
- sys_department_member: {
5915
- label: "Department Member",
5916
- pluralLabel: "Department Members",
5917
- description: "User assignment to a department (matrix-org friendly, effective-dated).",
5966
+ sys_business_unit_member: {
5967
+ label: "Business Unit Member",
5968
+ pluralLabel: "Business Unit Members",
5969
+ description: "User assignment to a business unit (matrix-org friendly, effective-dated).",
5918
5970
  fields: {
5919
5971
  id: {
5920
5972
  label: "Member ID"
5921
5973
  },
5922
- department_id: {
5923
- label: "Department"
5974
+ business_unit_id: {
5975
+ label: "Business Unit"
5924
5976
  },
5925
5977
  user_id: {
5926
5978
  label: "User"
5927
5979
  },
5928
- role_in_department: {
5929
- label: "Role in Department",
5980
+ role_in_business_unit: {
5981
+ label: "Role in Business Unit",
5930
5982
  help: "`lead` is the day-to-day head; `deputy` may stand in for the lead in approval routing.",
5931
5983
  options: {
5932
5984
  member: "member",
@@ -7878,7 +7930,7 @@ var en = {
7878
7930
  nav_marketplace_installed: { label: "Installed Apps" },
7879
7931
  // People & Organization
7880
7932
  nav_users: { label: "Users" },
7881
- nav_departments: { label: "Departments" },
7933
+ nav_business_units: { label: "Business Units" },
7882
7934
  nav_teams: { label: "Teams" },
7883
7935
  nav_organizations: { label: "Organizations" },
7884
7936
  nav_invitations: { label: "Invitations" },
@@ -8043,6 +8095,12 @@ var zhCNObjects = {
8043
8095
  image: {
8044
8096
  label: "\u5934\u50CF"
8045
8097
  },
8098
+ manager_id: {
8099
+ label: "\u7ECF\u7406"
8100
+ },
8101
+ primary_business_unit_id: {
8102
+ label: "\u4E3B\u5C5E\u4E1A\u52A1\u5355\u5143"
8103
+ },
8046
8104
  id: {
8047
8105
  label: "\u7528\u6237 ID"
8048
8106
  },
@@ -8575,9 +8633,9 @@ var zhCNObjects = {
8575
8633
  }
8576
8634
  }
8577
8635
  },
8578
- sys_department: {
8579
- label: "\u90E8\u95E8",
8580
- pluralLabel: "\u90E8\u95E8",
8636
+ sys_business_unit: {
8637
+ label: "\u4E1A\u52A1\u5355\u5143",
8638
+ pluralLabel: "\u4E1A\u52A1\u5355\u5143",
8581
8639
  description: "\u5C42\u7EA7\u5316\u7EC4\u7EC7\u9AA8\u67B6\u8282\u70B9\uFF08\u90E8\u95E8 / \u4E8B\u4E1A\u90E8 / \u4E1A\u52A1\u5355\u5143 / \u529E\u516C\u5730\u70B9\uFF09\u3002",
8582
8640
  fields: {
8583
8641
  name: {
@@ -8594,13 +8652,12 @@ var zhCNObjects = {
8594
8652
  company: "\u516C\u53F8",
8595
8653
  division: "\u4E8B\u4E1A\u90E8",
8596
8654
  department: "\u90E8\u95E8",
8597
- team: "\u56E2\u961F",
8598
8655
  office: "\u529E\u516C\u5730\u70B9",
8599
8656
  cost_center: "\u6210\u672C\u4E2D\u5FC3"
8600
8657
  }
8601
8658
  },
8602
- parent_department_id: {
8603
- label: "\u4E0A\u7EA7\u90E8\u95E8",
8659
+ parent_business_unit_id: {
8660
+ label: "\u4E0A\u7EA7\u4E1A\u52A1\u5355\u5143",
8604
8661
  help: "\u7EC4\u7EC7\u6811\u7684\u81EA\u5173\u8054\u5B57\u6BB5\u3002Null \u8868\u793A\u79DF\u6237\u6839\u8282\u70B9\u3002"
8605
8662
  },
8606
8663
  organization_id: {
@@ -8608,27 +8665,27 @@ var zhCNObjects = {
8608
8665
  help: "\u79DF\u6237\u8303\u56F4\u3002"
8609
8666
  },
8610
8667
  manager_user_id: {
8611
- label: "\u90E8\u95E8\u8D1F\u8D23\u4EBA",
8612
- help: "\u8D1F\u8D23\u8BE5\u7EC4\u7EC7\u5355\u5143\u7684\u7528\u6237\uFF08\u90E8\u95E8\u8D1F\u8D23\u4EBA / lead\uFF09\u3002"
8668
+ label: "\u4E1A\u52A1\u5355\u5143\u8D1F\u8D23\u4EBA",
8669
+ help: "\u8D1F\u8D23\u8BE5\u7EC4\u7EC7\u5355\u5143\u7684\u7528\u6237\uFF08\u4E1A\u52A1\u5355\u5143\u8D1F\u8D23\u4EBA / lead\uFF09\u3002"
8613
8670
  },
8614
8671
  active: {
8615
8672
  label: "\u542F\u7528",
8616
- help: "\u4E3A false \u65F6\uFF0C\u56FE\u8C31\u67E5\u8BE2\u4E0D\u4F1A\u5C55\u5F00\u8BE5\u90E8\u95E8\u6210\u5458\u3002"
8673
+ help: "\u4E3A false \u65F6\uFF0C\u56FE\u8C31\u67E5\u8BE2\u4E0D\u4F1A\u5C55\u5F00\u8BE5\u4E1A\u52A1\u5355\u5143\u6210\u5458\u3002"
8617
8674
  },
8618
8675
  effective_from: {
8619
8676
  label: "\u751F\u6548\u65F6\u95F4",
8620
- help: "\u8BE5\u90E8\u95E8\u751F\u6548\u7684\u65F6\u95F4\uFF08HRIS \u540C\u6B65\uFF09\u3002"
8677
+ help: "\u8BE5\u4E1A\u52A1\u5355\u5143\u751F\u6548\u7684\u65F6\u95F4\uFF08HRIS \u540C\u6B65\uFF09\u3002"
8621
8678
  },
8622
8679
  effective_to: {
8623
8680
  label: "\u5931\u6548\u65F6\u95F4",
8624
- help: "\u8BE5\u90E8\u95E8\u505C\u7528\u7684\u65F6\u95F4\uFF08HRIS \u540C\u6B65\uFF09\u3002"
8681
+ help: "\u8BE5\u4E1A\u52A1\u5355\u5143\u505C\u7528\u7684\u65F6\u95F4\uFF08HRIS \u540C\u6B65\uFF09\u3002"
8625
8682
  },
8626
8683
  external_ref: {
8627
8684
  label: "\u5916\u90E8\u5F15\u7528",
8628
8685
  help: "\u4E0A\u6E38 HRIS \u4E2D\u7684 ID\uFF08Workday / SAP HR / \u5317\u68EE\uFF09\u3002"
8629
8686
  },
8630
8687
  id: {
8631
- label: "\u90E8\u95E8 ID"
8688
+ label: "\u4E1A\u52A1\u5355\u5143 ID"
8632
8689
  },
8633
8690
  created_at: {
8634
8691
  label: "\u521B\u5EFA\u65F6\u95F4"
@@ -8652,22 +8709,22 @@ var zhCNObjects = {
8652
8709
  }
8653
8710
  }
8654
8711
  },
8655
- sys_department_member: {
8656
- label: "\u90E8\u95E8\u6210\u5458",
8657
- pluralLabel: "\u90E8\u95E8\u6210\u5458",
8658
- description: "\u7528\u6237\u5230\u90E8\u95E8\u7684\u4EFB\u804C\u5173\u7CFB\uFF08\u9002\u914D\u77E9\u9635\u7EC4\u7EC7\u5E76\u652F\u6301\u751F\u6548\u65F6\u95F4\uFF09\u3002",
8712
+ sys_business_unit_member: {
8713
+ label: "\u4E1A\u52A1\u5355\u5143\u6210\u5458",
8714
+ pluralLabel: "\u4E1A\u52A1\u5355\u5143\u6210\u5458",
8715
+ description: "\u7528\u6237\u5230\u4E1A\u52A1\u5355\u5143\u7684\u4EFB\u804C\u5173\u7CFB\uFF08\u9002\u914D\u77E9\u9635\u7EC4\u7EC7\u5E76\u652F\u6301\u751F\u6548\u65F6\u95F4\uFF09\u3002",
8659
8716
  fields: {
8660
8717
  id: {
8661
8718
  label: "\u6210\u5458 ID"
8662
8719
  },
8663
- department_id: {
8664
- label: "\u90E8\u95E8"
8720
+ business_unit_id: {
8721
+ label: "\u4E1A\u52A1\u5355\u5143"
8665
8722
  },
8666
8723
  user_id: {
8667
8724
  label: "\u7528\u6237"
8668
8725
  },
8669
- role_in_department: {
8670
- label: "\u90E8\u95E8\u5185\u89D2\u8272",
8726
+ role_in_business_unit: {
8727
+ label: "\u4E1A\u52A1\u5355\u5143\u5185\u89D2\u8272",
8671
8728
  help: "`lead` \u8868\u793A\u65E5\u5E38\u8D1F\u8D23\u4EBA\uFF1B`deputy` \u53EF\u5728\u5BA1\u6279\u8DEF\u7531\u4E2D\u4EE3\u66FF\u8D1F\u8D23\u4EBA\u3002",
8672
8729
  options: {
8673
8730
  member: "\u6210\u5458",
@@ -8677,7 +8734,7 @@ var zhCNObjects = {
8677
8734
  },
8678
8735
  is_primary: {
8679
8736
  label: "\u4E3B\u4EFB\u804C",
8680
- help: "\u5F53\u7528\u6237\u5C5E\u4E8E\u591A\u4E2A\u90E8\u95E8\u65F6\uFF0C\u7528\u4E8E\u6807\u8BB0\u62A5\u8868\u4E0A\u7684\u4E3B\u90E8\u95E8\u3002"
8737
+ help: "\u5F53\u7528\u6237\u5C5E\u4E8E\u591A\u4E2A\u4E1A\u52A1\u5355\u5143\u65F6\uFF0C\u7528\u4E8E\u6807\u8BB0\u62A5\u8868\u4E0A\u7684\u4E3B\u4E1A\u52A1\u5355\u5143\u3002"
8681
8738
  },
8682
8739
  effective_from: {
8683
8740
  label: "\u751F\u6548\u65F6\u95F4"
@@ -10615,7 +10672,7 @@ var zhCN = {
10615
10672
  group_advanced: { label: "\u9AD8\u7EA7" },
10616
10673
  nav_system_overview: { label: "\u7CFB\u7EDF\u6982\u89C8" },
10617
10674
  nav_users: { label: "\u7528\u6237" },
10618
- nav_departments: { label: "\u90E8\u95E8" },
10675
+ nav_business_units: { label: "\u4E1A\u52A1\u5355\u5143" },
10619
10676
  nav_teams: { label: "\u56E2\u961F" },
10620
10677
  nav_organizations: { label: "\u7EC4\u7EC7" },
10621
10678
  nav_invitations: { label: "\u9080\u8BF7" },
@@ -10744,6 +10801,12 @@ var jaJPObjects = {
10744
10801
  image: {
10745
10802
  label: "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u753B\u50CF"
10746
10803
  },
10804
+ manager_id: {
10805
+ label: "\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC"
10806
+ },
10807
+ primary_business_unit_id: {
10808
+ label: "\u4E3B\u6240\u5C5E\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8"
10809
+ },
10747
10810
  id: {
10748
10811
  label: "\u30E6\u30FC\u30B6\u30FC ID"
10749
10812
  },
@@ -11276,9 +11339,9 @@ var jaJPObjects = {
11276
11339
  }
11277
11340
  }
11278
11341
  },
11279
- sys_department: {
11280
- label: "\u90E8\u9580",
11281
- pluralLabel: "\u90E8\u9580",
11342
+ sys_business_unit: {
11343
+ label: "\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8",
11344
+ pluralLabel: "\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8",
11282
11345
  description: "\u968E\u5C64\u7684\u306A\u7D44\u7E54\u30C4\u30EA\u30FC\u30CE\u30FC\u30C9\uFF08\u90E8\u9580 / \u4E8B\u696D\u90E8 / \u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8 / \u30AA\u30D5\u30A3\u30B9\uFF09\u3002",
11283
11346
  fields: {
11284
11347
  name: {
@@ -11295,13 +11358,12 @@ var jaJPObjects = {
11295
11358
  company: "\u4F1A\u793E",
11296
11359
  division: "\u4E8B\u696D\u90E8",
11297
11360
  department: "\u90E8\u9580",
11298
- team: "\u30C1\u30FC\u30E0",
11299
11361
  office: "\u30AA\u30D5\u30A3\u30B9",
11300
11362
  cost_center: "\u30B3\u30B9\u30C8\u30BB\u30F3\u30BF\u30FC"
11301
11363
  }
11302
11364
  },
11303
- parent_department_id: {
11304
- label: "\u89AA\u90E8\u9580",
11365
+ parent_business_unit_id: {
11366
+ label: "\u89AA\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8",
11305
11367
  help: "\u7D44\u7E54\u30C4\u30EA\u30FC\u306E\u81EA\u5DF1\u53C2\u7167\u3002null = \u30C6\u30CA\u30F3\u30C8\u306E\u30EB\u30FC\u30C8\u3002"
11306
11368
  },
11307
11369
  organization_id: {
@@ -11309,8 +11371,8 @@ var jaJPObjects = {
11309
11371
  help: "\u30C6\u30CA\u30F3\u30C8\u30B9\u30B3\u30FC\u30D7\u3002"
11310
11372
  },
11311
11373
  manager_user_id: {
11312
- label: "\u90E8\u9580\u9577",
11313
- help: "\u3053\u306E\u7D44\u7E54\u5358\u4F4D\u306E\u8CAC\u4EFB\u8005\uFF08\u90E8\u9580\u9577 / \u30EA\u30FC\u30C9\uFF09\u3002"
11374
+ label: "\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u9577",
11375
+ help: "\u3053\u306E\u7D44\u7E54\u5358\u4F4D\u306E\u8CAC\u4EFB\u8005\uFF08\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u9577 / \u30EA\u30FC\u30C9\uFF09\u3002"
11314
11376
  },
11315
11377
  active: {
11316
11378
  label: "\u6709\u52B9",
@@ -11318,18 +11380,18 @@ var jaJPObjects = {
11318
11380
  },
11319
11381
  effective_from: {
11320
11382
  label: "\u6709\u52B9\u958B\u59CB\u65E5",
11321
- help: "\u3053\u306E\u90E8\u9580\u304C\u8A2D\u7ACB\u3055\u308C\u305F\u65E5\u6642\uFF08HRIS \u540C\u671F\uFF09\u3002"
11383
+ help: "\u3053\u306E\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u304C\u8A2D\u7ACB\u3055\u308C\u305F\u65E5\u6642\uFF08HRIS \u540C\u671F\uFF09\u3002"
11322
11384
  },
11323
11385
  effective_to: {
11324
11386
  label: "\u6709\u52B9\u7D42\u4E86\u65E5",
11325
- help: "\u3053\u306E\u90E8\u9580\u304C\u5EC3\u6B62\u3055\u308C\u305F\u65E5\u6642\uFF08HRIS \u540C\u671F\uFF09\u3002"
11387
+ help: "\u3053\u306E\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u304C\u5EC3\u6B62\u3055\u308C\u305F\u65E5\u6642\uFF08HRIS \u540C\u671F\uFF09\u3002"
11326
11388
  },
11327
11389
  external_ref: {
11328
11390
  label: "\u5916\u90E8\u53C2\u7167",
11329
11391
  help: "\u4E0A\u6D41 HRIS\uFF08Workday / SAP HR / \u5317\u68EE\uFF09\u306E ID\u3002"
11330
11392
  },
11331
11393
  id: {
11332
- label: "\u90E8\u9580 ID"
11394
+ label: "\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8 ID"
11333
11395
  },
11334
11396
  created_at: {
11335
11397
  label: "\u4F5C\u6210\u65E5\u6642"
@@ -11353,22 +11415,22 @@ var jaJPObjects = {
11353
11415
  }
11354
11416
  }
11355
11417
  },
11356
- sys_department_member: {
11357
- label: "\u90E8\u9580\u30E1\u30F3\u30D0\u30FC",
11358
- pluralLabel: "\u90E8\u9580\u30E1\u30F3\u30D0\u30FC",
11359
- description: "\u90E8\u9580\u3078\u306E\u30E6\u30FC\u30B6\u30FC\u5272\u308A\u5F53\u3066\uFF08\u30DE\u30C8\u30EA\u30AF\u30B9\u7D44\u7E54\u5BFE\u5FDC\u3001\u6709\u52B9\u671F\u9650\u4ED8\u304D\uFF09\u3002",
11418
+ sys_business_unit_member: {
11419
+ label: "\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u30E1\u30F3\u30D0\u30FC",
11420
+ pluralLabel: "\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u30E1\u30F3\u30D0\u30FC",
11421
+ description: "\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u3078\u306E\u30E6\u30FC\u30B6\u30FC\u5272\u308A\u5F53\u3066\uFF08\u30DE\u30C8\u30EA\u30AF\u30B9\u7D44\u7E54\u5BFE\u5FDC\u3001\u6709\u52B9\u671F\u9650\u4ED8\u304D\uFF09\u3002",
11360
11422
  fields: {
11361
11423
  id: {
11362
11424
  label: "\u30E1\u30F3\u30D0\u30FC ID"
11363
11425
  },
11364
- department_id: {
11365
- label: "\u90E8\u9580"
11426
+ business_unit_id: {
11427
+ label: "\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8"
11366
11428
  },
11367
11429
  user_id: {
11368
11430
  label: "\u30E6\u30FC\u30B6\u30FC"
11369
11431
  },
11370
- role_in_department: {
11371
- label: "\u90E8\u9580\u5185\u30ED\u30FC\u30EB",
11432
+ role_in_business_unit: {
11433
+ label: "\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u5185\u30ED\u30FC\u30EB",
11372
11434
  help: "`lead` \u306F\u65E5\u5E38\u306E\u8CAC\u4EFB\u8005\u3001`deputy` \u306F\u627F\u8A8D\u30EB\u30FC\u30C6\u30A3\u30F3\u30B0\u3067\u30EA\u30FC\u30C9\u306E\u4EE3\u7406\u3092\u52D9\u3081\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002",
11373
11435
  options: {
11374
11436
  member: "\u30E1\u30F3\u30D0\u30FC",
@@ -11378,7 +11440,7 @@ var jaJPObjects = {
11378
11440
  },
11379
11441
  is_primary: {
11380
11442
  label: "\u4E3B\u8981\u5272\u308A\u5F53\u3066",
11381
- help: "\u30E6\u30FC\u30B6\u30FC\u304C\u8907\u6570\u306E\u90E8\u9580\u306B\u6240\u5C5E\u3059\u308B\u5834\u5408\u3001\u30EC\u30DD\u30FC\u30C6\u30A3\u30F3\u30B0\u306E\u6B63\u898F\u90E8\u9580\u3092\u30DE\u30FC\u30AF\u3057\u307E\u3059\u3002"
11443
+ help: "\u30E6\u30FC\u30B6\u30FC\u304C\u8907\u6570\u306E\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u306B\u6240\u5C5E\u3059\u308B\u5834\u5408\u3001\u30EC\u30DD\u30FC\u30C6\u30A3\u30F3\u30B0\u306E\u6B63\u898F\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u3092\u30DE\u30FC\u30AF\u3057\u307E\u3059\u3002"
11382
11444
  },
11383
11445
  effective_from: {
11384
11446
  label: "\u6709\u52B9\u958B\u59CB\u65E5"
@@ -13316,7 +13378,7 @@ var jaJP = {
13316
13378
  group_advanced: { label: "\u8A73\u7D30" },
13317
13379
  nav_system_overview: { label: "\u30B7\u30B9\u30C6\u30E0\u6982\u8981" },
13318
13380
  nav_users: { label: "\u30E6\u30FC\u30B6\u30FC" },
13319
- nav_departments: { label: "\u90E8\u7F72" },
13381
+ nav_business_units: { label: "\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8" },
13320
13382
  nav_teams: { label: "\u30C1\u30FC\u30E0" },
13321
13383
  nav_organizations: { label: "\u7D44\u7E54" },
13322
13384
  nav_invitations: { label: "\u62DB\u5F85" },
@@ -13445,6 +13507,12 @@ var esESObjects = {
13445
13507
  image: {
13446
13508
  label: "Imagen de perfil"
13447
13509
  },
13510
+ manager_id: {
13511
+ label: "Gerente"
13512
+ },
13513
+ primary_business_unit_id: {
13514
+ label: "Unidad de negocio principal"
13515
+ },
13448
13516
  id: {
13449
13517
  label: "ID de usuario"
13450
13518
  },
@@ -13977,9 +14045,9 @@ var esESObjects = {
13977
14045
  }
13978
14046
  }
13979
14047
  },
13980
- sys_department: {
13981
- label: "Departamento",
13982
- pluralLabel: "Departamentos",
14048
+ sys_business_unit: {
14049
+ label: "Unidad de negocio",
14050
+ pluralLabel: "Unidades de negocio",
13983
14051
  description: "Nodo jer\xE1rquico de la estructura organizativa (departamento / divisi\xF3n / unidad de negocio / oficina).",
13984
14052
  fields: {
13985
14053
  name: {
@@ -13996,13 +14064,12 @@ var esESObjects = {
13996
14064
  company: "Empresa",
13997
14065
  division: "Divisi\xF3n",
13998
14066
  department: "Departamento",
13999
- team: "Equipo",
14000
14067
  office: "Oficina",
14001
14068
  cost_center: "Centro de coste"
14002
14069
  }
14003
14070
  },
14004
- parent_department_id: {
14005
- label: "Departamento principal",
14071
+ parent_business_unit_id: {
14072
+ label: "Unidad de negocio principal",
14006
14073
  help: "Autorreferencia para el \xE1rbol organizativo. Null = ra\xEDz del tenant."
14007
14074
  },
14008
14075
  organization_id: {
@@ -14054,21 +14121,21 @@ var esESObjects = {
14054
14121
  }
14055
14122
  }
14056
14123
  },
14057
- sys_department_member: {
14058
- label: "Miembro del departamento",
14059
- pluralLabel: "Miembros del departamento",
14124
+ sys_business_unit_member: {
14125
+ label: "Miembro de unidad de negocio",
14126
+ pluralLabel: "Miembros de unidad de negocio",
14060
14127
  description: "Asignaci\xF3n de usuario a un departamento (compatible con organizaciones matriciales y con vigencia temporal).",
14061
14128
  fields: {
14062
14129
  id: {
14063
14130
  label: "ID de miembro"
14064
14131
  },
14065
- department_id: {
14066
- label: "Departamento"
14132
+ business_unit_id: {
14133
+ label: "Unidad de negocio"
14067
14134
  },
14068
14135
  user_id: {
14069
14136
  label: "Usuario"
14070
14137
  },
14071
- role_in_department: {
14138
+ role_in_business_unit: {
14072
14139
  label: "Rol en el departamento",
14073
14140
  help: "`lead` es el responsable del d\xEDa a d\xEDa; `deputy` puede sustituir al responsable en el enrutamiento de aprobaciones.",
14074
14141
  options: {
@@ -16017,7 +16084,7 @@ var esES = {
16017
16084
  group_advanced: { label: "Avanzado" },
16018
16085
  nav_system_overview: { label: "Resumen del Sistema" },
16019
16086
  nav_users: { label: "Usuarios" },
16020
- nav_departments: { label: "Departamentos" },
16087
+ nav_business_units: { label: "Unidades de negocio" },
16021
16088
  nav_teams: { label: "Equipos" },
16022
16089
  nav_organizations: { label: "Organizaciones" },
16023
16090
  nav_invitations: { label: "Invitaciones" },
@@ -23120,8 +23187,8 @@ exports.SetupAppTranslations = SetupAppTranslations;
23120
23187
  exports.SysAccount = SysAccount;
23121
23188
  exports.SysApiKey = SysApiKey;
23122
23189
  exports.SysAttachment = SysAttachment;
23123
- exports.SysDepartment = SysDepartment;
23124
- exports.SysDepartmentMember = SysDepartmentMember;
23190
+ exports.SysBusinessUnit = SysBusinessUnit;
23191
+ exports.SysBusinessUnitMember = SysBusinessUnitMember;
23125
23192
  exports.SysDeviceCode = SysDeviceCode;
23126
23193
  exports.SysEmail = SysEmail;
23127
23194
  exports.SysEmailTemplate = SysEmailTemplate;