Skip to content

Commit

Permalink
deploy: f337605
Browse files Browse the repository at this point in the history
  • Loading branch information
Guo-Zhang committed Dec 25, 2024
1 parent 7a0546e commit 95cbfcf
Show file tree
Hide file tree
Showing 109 changed files with 4,534 additions and 3,195 deletions.
2 changes: 1 addition & 1 deletion .buildinfo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 2a84f747a5386d8550a290ec8b066c8a
config: abc00e0427c4ffcf4fdbfae48a1750f2
tags: 645f666f9bcd5a90fca523b33c5a78b7
166 changes: 79 additions & 87 deletions README.html

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions _sources/principles/incentive_compatibility.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# 激励相容

管理者和员工的激励要通过合理设计相容,以达成整体目标的最大化。这不仅能够提高员工的工作动力,还能确保公司在复杂的商业环境中稳定增长。

管理者与员工的责任不同,管理者需要承担更大的压力和风险,必须面对公司的各种挑战,并为团队的成功或失败负责。而员工则更多关注自身的发展和成长,他们在公司中能否获得成就感和个人价值的提升,是激励他们努力工作的核心。

为了实现激励相容,管理者应当设法营造一种氛围,使得员工的激励与公司的目标和管理者的激励相一致。如果员工能够感受到自己在公司中如同“主人公”般的存在,他们就更有可能承担更多的责任和义务,从而推动公司走向成功。在这种环境中,员工的个人成长和公司的目标之间形成正向反馈,彼此促进。管理者可以通过赋予员工更多的自主权、让他们参与决策,或提供成长的机会,让员工感受到自己的努力能为自身和公司带来长远的回报。
2 changes: 2 additions & 0 deletions _sources/principles/information_transparency.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# 信息透明

44 changes: 44 additions & 0 deletions _sources/principles/power_equality.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# 权力平等:基于社会契约的视角

虽然管理者和员工的职位权力存在差异,但从社会契约论的角度来看,这种差异并不否定其本质上的平等,要求这种差异具有合法性、服务性和限制性。管理者的权力来源于员工的让渡,其合法性基于契约的双向性。

管理者应认识到权力的本质是服务于团队而非凌驾于其上,管理者与员工在人格和价值上的平等,决定了权力的行使必须围绕团队的共同利益展开。通过授权、透明与合作,管理者可以在团队中构建更健康、更高效的权力关系,从而实现团队目标与成员发展的双赢局面。

## 权力的定义与来源

权力是管理者与员工在团队中进行协调和决策的基础,其来源主要分为两类:

- 员工的固有权利:每位员工都拥有参与工作的权利、劳动保障权利和职业发展权利,这些是权力平等的基础。
- 管理者的授托权力:管理者的权力来自于团队成员基于合作契约让渡的部分权力,用以促进团队的目标达成和资源优化配置。

## 权力平等的本质

权力平等并不意味着职位或功能的完全一致,而是指管理者与员工在人格和价值上的对等。具体体现在以下方面:

- 权力的合法性:管理者的权力来自员工的让渡和信任,其行使需以团队的共同利益为核心。
- 权力的服务性:管理者的角色是服务于团队,通过提供支持、资源和指导来实现团队目标。
- 权力的限制性:员工让渡的权力是有限的,管理者需尊重团队成员未让渡的基本权利。

## 权力差异的必要性与风险

在团队管理中,适度的权力差异有助于高效运作,但管理者需警惕其中的潜在风险。

必要性:

- 职责分工:明确的权力差异有助于管理者快速决策、协调资源,确保团队的高效运作。
- 领导作用:管理者需要通过权力差异来引领团队实现共同目标。

风险:

- 权力滥用:如果管理者缺乏透明性或忽视团队利益,可能导致成员的不满和信任缺失。
- 团队失衡:过度强化权力差异可能破坏团队合作,影响整体绩效。

## 管理者的行动指引原则

为了实现权力平等的高效管理,管理者应注重以下几个关键原则和行动指引:

**授权与合作**是管理实践的核心。管理者应邀请团队成员参与重大决策过程,从而增强他们的责任感和归属感。同时,管理者需提供必要的资源、培训和授权,帮助员工在其职责范围内发挥自主性,提升整体工作效率。为了确保团队内的权力分配符合平等原则,管理者应定期检视权力结构,调整决策和资源分配,确保其始终与团队的需求相契合。

**透明与信任**是建立高效管理的基础。管理者在做决策时,应该公开决策的依据和目标,增强决策的正当性,避免出现不必要的误解。此外,管理者的权力应与其责任相匹配,确保信任关系的稳定。管理者应通过定期会议和开放沟通渠道等方式,强化团队成员的参与感,让他们感受到自己在团队中的重要性,从而提高工作积极性和团队凝聚力。

**强化合作关系**也是实现平等管理的关键。管理者需要关注与团队成员之间的信任与尊重,建立稳固的心理契约,并通过促进扁平化的沟通减少层级阻碍,鼓励开放对话和信息共享,从而提高团队的协作效果。
104 changes: 89 additions & 15 deletions _sphinx_design_static/design-tabs.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,101 @@
var sd_labels_by_text = {};
// @ts-check

// Extra JS capability for selected tabs to be synced
// The selection is stored in local storage so that it persists across page loads.

/**
* @type {Record<string, HTMLElement[]>}
*/
let sd_id_to_elements = {};
const storageKeyPrefix = "sphinx-design-tab-id-";

/**
* Create a key for a tab element.
* @param {HTMLElement} el - The tab element.
* @returns {[string, string, string] | null} - The key.
*
*/
function create_key(el) {
let syncId = el.getAttribute("data-sync-id");
let syncGroup = el.getAttribute("data-sync-group");
if (!syncId || !syncGroup) return null;
return [syncGroup, syncId, syncGroup + "--" + syncId];
}

/**
* Initialize the tab selection.
*
*/
function ready() {
const li = document.getElementsByClassName("sd-tab-label");
for (const label of li) {
syncId = label.getAttribute("data-sync-id");
if (syncId) {
label.onclick = onLabelClick;
if (!sd_labels_by_text[syncId]) {
sd_labels_by_text[syncId] = [];
// Find all tabs with sync data

/** @type {string[]} */
let groups = [];

document.querySelectorAll(".sd-tab-label").forEach((label) => {
if (label instanceof HTMLElement) {
let data = create_key(label);
if (data) {
let [group, id, key] = data;

// add click event listener
// @ts-ignore
label.onclick = onSDLabelClick;

// store map of key to elements
if (!sd_id_to_elements[key]) {
sd_id_to_elements[key] = [];
}
sd_id_to_elements[key].push(label);

if (groups.indexOf(group) === -1) {
groups.push(group);
// Check if a specific tab has been selected via URL parameter
const tabParam = new URLSearchParams(window.location.search).get(
group
);
if (tabParam) {
console.log(
"sphinx-design: Selecting tab id for group '" +
group +
"' from URL parameter: " +
tabParam
);
window.sessionStorage.setItem(storageKeyPrefix + group, tabParam);
}
}

// Check is a specific tab has been selected previously
let previousId = window.sessionStorage.getItem(
storageKeyPrefix + group
);
if (previousId === id) {
// console.log(
// "sphinx-design: Selecting tab from session storage: " + id
// );
// @ts-ignore
label.previousElementSibling.checked = true;
}
}
sd_labels_by_text[syncId].push(label);
}
}
});
}

function onLabelClick() {
// Activate other inputs with the same sync id.
syncId = this.getAttribute("data-sync-id");
for (label of sd_labels_by_text[syncId]) {
/**
* Activate other tabs with the same sync id.
*
* @this {HTMLElement} - The element that was clicked.
*/
function onSDLabelClick() {
let data = create_key(this);
if (!data) return;
let [group, id, key] = data;
for (const label of sd_id_to_elements[key]) {
if (label === this) continue;
// @ts-ignore
label.previousElementSibling.checked = true;
}
window.localStorage.setItem("sphinx-design-last-tab", syncId);
window.sessionStorage.setItem(storageKeyPrefix + group, id);
}

document.addEventListener("DOMContentLoaded", ready, false);

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion _static/basic.css
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ div.sphinxsidebarwrapper {

div.sphinxsidebar {
float: left;
width: 270px;
width: 230px;
margin-left: -100%;
font-size: 90%;
word-wrap: break-word;
Expand Down
104 changes: 89 additions & 15 deletions _static/design-tabs.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,101 @@
var sd_labels_by_text = {};
// @ts-check

// Extra JS capability for selected tabs to be synced
// The selection is stored in local storage so that it persists across page loads.

/**
* @type {Record<string, HTMLElement[]>}
*/
let sd_id_to_elements = {};
const storageKeyPrefix = "sphinx-design-tab-id-";

/**
* Create a key for a tab element.
* @param {HTMLElement} el - The tab element.
* @returns {[string, string, string] | null} - The key.
*
*/
function create_key(el) {
let syncId = el.getAttribute("data-sync-id");
let syncGroup = el.getAttribute("data-sync-group");
if (!syncId || !syncGroup) return null;
return [syncGroup, syncId, syncGroup + "--" + syncId];
}

/**
* Initialize the tab selection.
*
*/
function ready() {
const li = document.getElementsByClassName("sd-tab-label");
for (const label of li) {
syncId = label.getAttribute("data-sync-id");
if (syncId) {
label.onclick = onLabelClick;
if (!sd_labels_by_text[syncId]) {
sd_labels_by_text[syncId] = [];
// Find all tabs with sync data

/** @type {string[]} */
let groups = [];

document.querySelectorAll(".sd-tab-label").forEach((label) => {
if (label instanceof HTMLElement) {
let data = create_key(label);
if (data) {
let [group, id, key] = data;

// add click event listener
// @ts-ignore
label.onclick = onSDLabelClick;

// store map of key to elements
if (!sd_id_to_elements[key]) {
sd_id_to_elements[key] = [];
}
sd_id_to_elements[key].push(label);

if (groups.indexOf(group) === -1) {
groups.push(group);
// Check if a specific tab has been selected via URL parameter
const tabParam = new URLSearchParams(window.location.search).get(
group
);
if (tabParam) {
console.log(
"sphinx-design: Selecting tab id for group '" +
group +
"' from URL parameter: " +
tabParam
);
window.sessionStorage.setItem(storageKeyPrefix + group, tabParam);
}
}

// Check is a specific tab has been selected previously
let previousId = window.sessionStorage.getItem(
storageKeyPrefix + group
);
if (previousId === id) {
// console.log(
// "sphinx-design: Selecting tab from session storage: " + id
// );
// @ts-ignore
label.previousElementSibling.checked = true;
}
}
sd_labels_by_text[syncId].push(label);
}
}
});
}

function onLabelClick() {
// Activate other inputs with the same sync id.
syncId = this.getAttribute("data-sync-id");
for (label of sd_labels_by_text[syncId]) {
/**
* Activate other tabs with the same sync id.
*
* @this {HTMLElement} - The element that was clicked.
*/
function onSDLabelClick() {
let data = create_key(this);
if (!data) return;
let [group, id, key] = data;
for (const label of sd_id_to_elements[key]) {
if (label === this) continue;
// @ts-ignore
label.previousElementSibling.checked = true;
}
window.localStorage.setItem("sphinx-design-last-tab", syncId);
window.sessionStorage.setItem(storageKeyPrefix + group, id);
}

document.addEventListener("DOMContentLoaded", ready, false);
Loading

0 comments on commit 95cbfcf

Please sign in to comment.