9 improvements across 3 tracks: Onboarding: /linkedin:onboarding wizard, README Quick Start rewrite Content Quality: voice drift scoring, industry angle variants, /linkedin:carousel, /linkedin:react multi-URL comparison Analytics: automated week-rollover, day-of-week heatmap, month-over-month reports 25→27 commands. All Q2 ROADMAP items completed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
// Pure function for week-rollover logic.
|
|
// Exported separately for testability.
|
|
|
|
/**
|
|
* Apply week rollover to state file content.
|
|
* Returns updated content string if rollover was applied, null otherwise.
|
|
*
|
|
* @param {string} stateContent - Full state file content (with YAML frontmatter)
|
|
* @param {string} currentWeek - Week value from state file (e.g. "2026-W14")
|
|
* @param {string} actualWeek - Computed current ISO week (e.g. "2026-W15")
|
|
* @returns {{ content: string, message: string } | null}
|
|
*/
|
|
export function applyWeekRollover(stateContent, currentWeek, actualWeek) {
|
|
if (!actualWeek) return null;
|
|
|
|
// Case 1: current_week is empty — initialize without resetting posts
|
|
if (!currentWeek) {
|
|
const updated = stateContent.replace(
|
|
/^current_week: .*/m,
|
|
`current_week: "${actualWeek}"`
|
|
);
|
|
if (updated === stateContent) return null;
|
|
return {
|
|
content: updated,
|
|
message: `Initialized current_week to ${actualWeek}.`
|
|
};
|
|
}
|
|
|
|
// Case 2: week matches — no action needed
|
|
if (currentWeek === actualWeek) return null;
|
|
|
|
// Case 3: week changed — reset posts_this_week and update current_week
|
|
let updated = stateContent;
|
|
updated = updated.replace(
|
|
/^posts_this_week: .*/m,
|
|
'posts_this_week: 0'
|
|
);
|
|
updated = updated.replace(
|
|
/^current_week: .*/m,
|
|
`current_week: "${actualWeek}"`
|
|
);
|
|
|
|
if (updated === stateContent) return null;
|
|
|
|
return {
|
|
content: updated,
|
|
message: `Auto-reset: posts_this_week → 0 for new week ${actualWeek} (was ${currentWeek}).`
|
|
};
|
|
}
|