Create or refresh Daily Notes from existing reading-report records.
(
*,
user_id: str,
reports: Iterable[Dict[str, Any]],
)
| 2200 | |
| 2201 | |
| 2202 | def sync_daily_notes_from_reports( |
| 2203 | *, |
| 2204 | user_id: str, |
| 2205 | reports: Iterable[Dict[str, Any]], |
| 2206 | ) -> Dict[str, Any]: |
| 2207 | """Create or refresh Daily Notes from existing reading-report records.""" |
| 2208 | scanned = 0 |
| 2209 | synced = 0 |
| 2210 | daily_notes: List[str] = [] |
| 2211 | report_paths: List[str] = [] |
| 2212 | errors: List[str] = [] |
| 2213 | |
| 2214 | for report in reports or []: |
| 2215 | scanned += 1 |
| 2216 | metadata = dict(report.get("metadata") or {}) |
| 2217 | report_user = _clean_text(metadata.get("user_id") or report.get("user_id")) |
| 2218 | if user_id and report_user and report_user != user_id: |
| 2219 | continue |
| 2220 | report_content = str(report.get("markdown") or "") |
| 2221 | if not report_content.strip(): |
| 2222 | continue |
| 2223 | paper = _report_paper_from_metadata(metadata, report) |
| 2224 | payload = _report_payload_from_metadata(metadata, report_content, report) |
| 2225 | try: |
| 2226 | saved_path = _save_reading_report_markdown( |
| 2227 | user_id=user_id or report_user, |
| 2228 | paper=paper, |
| 2229 | report_content=report_content, |
| 2230 | report_payload=payload, |
| 2231 | doc_url=metadata.get("doc_url") or report.get("doc_url"), |
| 2232 | doc_token=metadata.get("doc_token") or report.get("doc_token"), |
| 2233 | ) |
| 2234 | synced += 1 |
| 2235 | report_paths.append(saved_path) |
| 2236 | daily_note = _obsidian_daily_note_path(Path(saved_path), paper) |
| 2237 | if daily_note is not None: |
| 2238 | daily_notes.append(str(daily_note)) |
| 2239 | except Exception as exc: |
| 2240 | errors.append(f"{paper.get('title') or report.get('report_path')}: {exc}") |
| 2241 | |
| 2242 | return { |
| 2243 | "scanned": scanned, |
| 2244 | "synced": synced, |
| 2245 | "daily_notes": sorted(set(daily_notes)), |
| 2246 | "report_paths": sorted(set(report_paths)), |
| 2247 | "errors": errors[:8], |
| 2248 | } |
| 2249 | |
| 2250 | |
| 2251 | def refresh_daily_note_files( |
nothing calls this directly
no test coverage detected